decomp: finish the remainder of untouched gameplay code (#893)

* decomp: finish `sidekick`

* decomp: got a lot of `target` done

* decompiler: Add support for non power of 2 offsets for inline arr access

* decomp: finish `target` mostly

* decomp: finish `water`

* decomp: finished `robotboss-weapon`

* decomp: finish `robotboss-misc`

* decomp: finish the majority of `robotboss`

* blocked: `racer` has an issue around entering a state

* blocked: `target-racer` done mostly, but NYI case in one function

* blocked: `racer-states` mostly finished, but bitfield issue

* blocked: `billy` on state decomping

* blocked: `bully` on state decomping

* waiting: `rolling-lightning-mole` waiting on navigate for 2 funcs

* blocked: `rolling-robber` finished but `s6-1` issue

* blocked: `ogreboss` uint64's for types cant label load em!

* blocked: `mother-spider` state decompilation

* half-done `target-flut`

* blocked: `target-flut` some sort of new bitfield state

* some improvements in `racer-states` with my new-found knowledge

* progress: started on `target-death`

* blocked: `target-death` handle casts

* decomp: finish `collide-reaction-racer`

* blocked: `target-handler` handler forced to return `none`

* decomp: 99% of `target2` finished

* decomp: finish `target2`

* gsrc: update

* update post merge

* address feedback

* scripts: add script to detect decomp issues

* fix wide-spread `collide-shape` method missing arg

* some small things i changed from master

* address feedback

* fix typeconsistency issue
This commit is contained in:
Tyler Wilding
2021-11-24 00:33:10 -05:00
committed by GitHub
parent cc93986a21
commit 111af1ec19
71 changed files with 35634 additions and 1064 deletions
+5 -6
View File
@@ -77,18 +77,17 @@ tasks:
type-test:
cmds:
- ./out/build/Release/bin/goalc-test.exe --gtest_brief=0 --gtest_filter="*MANUAL_TEST_TypeConsistencyWithBuildFirst*"
check-gsrc-file:
cmds:
- python ./scripts/check-gsrc-file.py --files "{{.FILES}}"
update-gsrc:
cmds:
- python ./scripts/next-decomp-file.py --files "{{.FILES}}"
- task: decomp
- task: find-label-types
- python ./scripts/update-goal-src.py --files "{{.FILES}}"
- task: type-test
# TODO - make a script that checks for function/method splits
file-good?:
cmds:
- task: type-test
- task: offline-tests
- task: find-label-types
- task: check-gsrc-file
cast-repl:
cmds:
- cmd: python ./scripts/cast-repl.py
+1 -1
View File
@@ -141,7 +141,7 @@ std::string TextDb::get_info_for(const Object& o, bool* terminate_compiler_error
*/
std::string TextDb::get_info_for(const std::shared_ptr<SourceText>& frag, int offset) const {
int line_idx = frag->get_line_idx(offset);
std::string result = frag->get_description() + ", line: " + std::to_string(line_idx + 1) + "\n";
std::string result = frag->get_description() + ":" + std::to_string(line_idx + 1) + "\n";
result += frag->get_line_containing_offset(offset) + "\n";
int offset_in_line = std::max(offset - frag->get_offset_of_line(line_idx), 1) - 1;
File diff suppressed because it is too large Load Diff
@@ -856,5 +856,39 @@
[0, "(function surface object object int float)"]
],
"target": [
[1, "(function none :behavior target)"],
[5, "(function none :behavior target)"],
[16, "(function target float)"]
],
"water": [
[13, "(function water-vol object)"]
],
"rolling-lightning-mole": [
[38, "(function none :behavior lightning-mole)"]
],
"target-flut": [
[23, "(function nav-enemy none :behavior target)"],
[57, "(function shadow-control :behavior target)"],
[58, "(function float :behavior flutflut)"]
],
"target-death": [
[1, "(function process int :behavior target)"],
[2, "(function none :behavior target)"],
[16, "(function surface surface surface int none :behavior target)"],
[17, "(function surface surface surface int none :behavior target)"],
[19, "(function continue-point target)"],
[20, "(function target)"]
],
"target2": [
[11, "(function vector int float symbol :behavior target)"],
[99, "(function symbol)"]
],
"placeholder-do-not-add-below": []
}
@@ -266,12 +266,10 @@
"ambient-inspect",
// target BUG
"target-falling-anim-trans",
"target-falling-anim-trans", // CFG resolution
// target2 BUG
"(anon-function 33 target2)", // BUG:
"(anon-function 67 target2)", // BUG:
"look-for-points-of-interest",
"look-for-points-of-interest", // Failed to split nested sc - looks like dead code to me
// drawable-tree
"(method 16 drawable-tree)",
@@ -317,7 +315,7 @@
// "(anon-function 10 ice-cube)",
// "(anon-function 15 ice-cube)",
"mistycannon-find-best-solution",
"target-flut-falling-anim-trans",
"target-flut-falling-anim-trans", // CFG failure
"kermit-check-to-hit-player?",
"(anon-function 36 mistycannon)",
"(anon-function 2 target-tube)",
@@ -377,7 +375,9 @@
"command-get-trans",
"command-get-camera",
"(method 14 camera-tracker)",
"(enter billy-playing)"
"(enter billy-playing)",
"(code target-continue)",
"next-level"
],
// If format is used with the wrong number of arguments,
@@ -1446,6 +1446,376 @@
"steam-cap": [
["L51", "attack-info"]
],
"sidekick": [
["L29", "vector"]
],
"target": [
["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", "(pointer float)", 1],
["L735", "(pointer float)", 1],
["L736", "(pointer float)", 1],
["L737", "(pointer float)", 1],
["L738", "(pointer float)", 1],
["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", "(pointer float)", 1],
["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", "(pointer float)", 1],
["L768", "float", true],
["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", "(pointer float)", 1],
["L787", "(pointer float)", 1],
["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", "float", true],
["L802", "float", true],
["L803", "float", true],
["L804", "float", true],
["L805", "float", true],
["L806", "float", true],
["L807", "float", true],
["L808", "float", true],
["L809", "float", true],
["L810", "float", true],
["L811", "float", true],
["L812", "float", true],
["L813", "float", true],
["L814", "(pointer float)", 1],
["L815", "uint64", true]
],
"target-handler": [
["L195", "attack-info"],
["L197", "float", true],
["L198", "float", true],
["L199", "float", true],
["L200", "float", true],
["L201", "float", true],
["L202", "float", true],
["L203", "float", true],
["L204", "(pointer float)", 1],
["L205", "uint64", true],
["L206", "uint64", true],
["L207", "uint64", true],
["L208", "uint64", true],
["L209", "uint64", true]
],
"water": [
["L148", "attack-info"],
["L149", "attack-info"],
["L150", "attack-info"]
],
"racer": [
["L106", "vector"]
],
"target-racer-FIC-LAV-MIS-OGR-ROL": [
["L237", "attack-info"],
["L238", "attack-info"],
["L240", "vector"]
],
"rolling-lightning-mole": [
["L181", "vector"],
["L185", "rgba", true],
["L186", "rgba", true],
["L187", "rgba", true],
["L189", "rgba", true],
["L195", "vector"]
],
"rolling-robber": [
["L127", "vector"],
["L139", "vector"],
["L140", "vector"],
["L145", "vector"]
],
"ogreboss": [
["L525", "uint64", true],
["L526", "uint64", true],
["L527", "uint64", true],
["L528", "uint64", true],
["L529", "uint64", true],
["L530", "uint64", true]
],
"mother-spider": [
["L301", "(inline-array mother-spider-leg-info)", 8],
["L302", "(inline-array mother-spider-thread)", 9]
],
"target-flut": [
["L399", "attack-info"],
["L406", "float", true],
["L407", "float", true],
["L408", "float", true],
["L409", "float", true],
["L410", "float", true],
["L411", "float", true],
["L412", "float", true],
["L413", "float", true],
["L414", "float", true],
["L415", "float", true],
["L416", "float", true],
["L417", "float", true],
["L418", "float", true],
["L419", "float", true],
["L420", "float", true],
["L421", "float", true],
["L422", "float", true],
["L423", "float", true],
["L424", "float", true],
["L425", "float", true],
["L426", "float", true],
["L427", "float", true],
["L428", "float", true],
["L429", "float", true],
["L430", "float", true],
["L431", "float", true],
["L432", "float", true],
["L433", "float", true],
["L434", "float", true],
["L435", "float", true],
["L436", "float", true],
["L437", "float", true],
["L438", "float", true],
["L439", "float", true],
["L440", "float", true],
["L441", "float", true],
["L442", "float", true],
["L443", "float", true],
["L444", "float", true],
["L445", "float", true],
["L446", "float", true],
["L447", "float", true],
["L448", "float", true],
["L449", "float", true],
["L450", "float", true],
["L451", "float", true],
["L452", "float", true],
["L453", "float", true],
["L454", "float", true],
["L455", "float", true],
["L456", "float", true],
["L457", "(pointer float)", 1],
["L458", "uint64", true],
["L459", "uint64", true],
["L460", "uint64", true],
["L461", "uint64", true],
["L462", "uint64", true],
["L463", "uint64", true],
["L464", "uint64", true],
["L465", "uint64", true],
["L483", "uint64", true],
["L484", "uint64", true]
],
"target-death": [
["L308", "vector"],
["L316", "float", true],
["L317", "float", true],
["L318", "float", true],
["L319", "float", true],
["L320", "float", true],
["L321", "float", true],
["L322", "float", true],
["L323", "float", true],
["L324", "float", true],
["L325", "float", true],
["L326", "float", true],
["L327", "float", true],
["L328", "float", true],
["L329", "float", true],
["L330", "float", true],
["L331", "float", true],
["L332", "float", true],
["L333", "float", true],
["L334", "float", true],
["L335", "float", true],
["L336", "float", true],
["L337", "float", true],
["L338", "float", true],
["L339", "float", true],
["L340", "float", true],
["L341", "float", true],
["L342", "float", true],
["L343", "float", true],
["L344", "uint64", true],
["L345", "uint64", true],
["L346", "uint64", true],
["L347", "uint64", true],
["L348", "uint64", true],
["L349", "uint64", true],
["L350", "uint64", true],
["L351", "uint64", true],
["L352", "uint64", true],
["L355", "float", true]
],
"target2": [
["L615", "attack-info"],
["L656", "float", true],
["L657", "float", true],
["L658", "float", true],
["L659", "float", true],
["L660", "float", true],
["L661", "float", true],
["L662", "float", true],
["L663", "float", true],
["L664", "float", true],
["L665", "float", true],
["L666", "float", true],
["L667", "float", true],
["L668", "float", true],
["L669", "float", true],
["L670", "float", true],
["L671", "float", true],
["L672", "float", true],
["L673", "float", true],
["L674", "float", true],
["L675", "float", true],
["L676", "float", true],
["L677", "float", true],
["L678", "float", true],
["L679", "float", true],
["L680", "float", true],
["L681", "float", true],
["L682", "float", true],
["L683", "float", true],
["L684", "float", true],
["L685", "float", true],
["L686", "float", true],
["L687", "float", true],
["L688", "float", true],
["L689", "float", true],
["L690", "float", true],
["L691", "float", true],
["L692", "float", true],
["L693", "float", true],
["L694", "float", true],
["L695", "float", true],
["L696", "float", true],
["L697", "float", true],
["L698", "float", true],
["L699", "float", true],
["L700", "float", true],
["L701", "float", true],
["L702", "float", true],
["L703", "float", true],
["L704", "float", true],
["L705", "float", true],
["L706", "float", true],
["L707", "float", true],
["L708", "float", true],
["L709", "float", true],
["L710", "float", true],
["L711", "float", true],
["L712", "float", true],
["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", "(pointer float)", 1],
["L739", "float", true],
["L740", "float", true],
["L741", "float", true],
["L742", "float", true],
["L743", "float", true],
["L744", "(pointer int32)", 1],
["L745", "uint64", true],
["L746", "uint64", true],
["L757", "uint64", true]
],
"collide-shape": [
["L399", "attack-info"],
@@ -4421,5 +4421,620 @@
"(method 19 collide-shape-prim-sphere)": [[16, "collide-mesh-cache-tri"]],
"(method 37 collide-shape)": [[16, "vector"]],
"starts": [
[16, "event-message-block"]
],
"(trans target-flop)": [
[16, "event-message-block"]
],
"(event target-wheel)": [
[16, "event-message-block"]
],
"(code target-stance)": [
[16, "ground-tween-info"]
],
"init-var-jump": [
[16, "vector"]
],
"(code target-wheel)": [
[16, "vector"]
],
"(code target-wheel-flip)": [
[16, "vector"],
[32, "vector"]
],
"(enter target-flop)": [
[16, "vector"]
],
"(code target-running-attack)": [
[16, "vector"]
],
"(enter target-flop-hit-ground)": [
[16, "vector"]
],
"(enter target-attack-air)": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(enter target-hit-ground)": [
[16, "vector"]
],
"(code target-flop)": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(trans target-running-attack)": [
[16, "vector"],
[32, "vector"]
],
"mod-var-jump": [
[16, "vector"],
[32, "vector"]
],
"target-generic-event-handler": [
[16, "event-message-block"]
],
"target-powerup-effect": [
[16, "vector"]
],
"check-water-level-drop": [
[16, "vector"]
],
"(method 13 water-control)": [
[16, "vector"]
],
"(method 10 water-control)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "event-message-block"],
[144, "vector"],
[160, "vector"],
[176, "vector"],
[192, "vector"],
[208, "vector"]
],
"(method 15 water-control)": [
[16, "event-message-block"]
],
"(anon-function 13 water)": [
[16, "event-message-block"]
],
"(method 26 water-vol)": [
[16, "event-message-block"]
],
"(code wait-for-start racer)": [
[16, "event-message-block"],
[96, "vector"]
],
"(code idle racer)": [
[16, "font-context"],
[112, "event-message-block"]
],
"(event wait-for-return racer)": [
[16, "event-message-block"]
],
"racer-xz": [
[16, "vector"]
],
"racer-cushion": [
[16, "vector"]
],
"target-racing-post": [
[16, "vector"],
[32, "vector"]
],
"racer-effects": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"],
[112, "vector"],
[128, "vector"],
[144, "event-message-block"],
[224, "vector"],
[240, "vector"],
[256, "vector"]
],
"racer-sounds": [
[16, "vector"],
[32, "event-message-block"]
],
"racer-collision": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"racer-find-prop-point": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"racer-integrate": [
[16, "quaternion"]
],
"fleeing-nav-enemy-clip-travel": [
[16, "clip-travel-vector-to-mesh-return-info"],
[176, "vector"],
[192, "vector"],
[208, "vector"]
],
"fleeing-nav-enemy-adjust-travel": [
[16, "matrix"],
[80, "vector"],
[96, "vector"]
],
"fleeing-nav-enemy-chase-post-func": [
[16, "matrix"],
[80, "matrix"]
],
"fleeing-nav-enemy-chase-post": [
[16, "vector"],
[32, "vector"],
[48, "matrix"],
[112, "vector"],
[128, "vector"]
],
"(post lightning-mole-debug-run)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "matrix"]
],
"(code fleeing-nav-enemy-debug)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "matrix"],
[144, "vector"]
],
"(trans nav-enemy-chase lightning-mole)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "event-message-block"]
],
"(trans lightning-mole-debug-blend)": [
[16, "vector"],
[32, "vector"]
],
"(code lightning-mole-dive)": [
[16, "vector"],
[32, "vector"]
],
"(trans lightning-mole-dive)": [
[16, "event-message-block"]
],
"(trans lightning-mole-head-for-hole)": [
[16, "event-message-block"]
],
"(method 43 lightning-mole)": [
[16, "event-message-block"]
],
"(method 44 lightning-mole)": [
[16, "event-message-block"]
],
"check-drop-level-rolling-dirt": [
[16, "vector"]
],
"check-drop-level-rolling-dirt-finish": [
[16, "vector"]
],
"(code fuel-cell-spline-slider)": [
[16, "vector"]
],
"robber-find-ground": [
[16, "vector"],
[32, "collide-mesh-cache-tri"],
[128, "vector"]
],
"robber-rotate": [
[16, "matrix"],
[80, "vector"]
],
"robber-calc-speed": [
[16, "vector"]
],
"(code robber-die)": [
[16, "vector"]
],
"(code robber-initial-notice)": [
[16, "vector"]
],
"(method 11 robber)": [
[16, "matrix"]
],
"(code robber-debug)": [
[16, "vector"],
[32, "vector"]
],
"(code target-flut-running-attack)": [
[16, "vector"]
],
"(enter target-flut-running-attack)": [
[16, "vector"],
[32, "vector"]
],
"(trans target-flut-running-attack)": [
[16, "vector"],
[32, "vector"]
],
"(event target-flut-air-attack)": [
[16, "vector"],
[32, "event-message-block"]
],
"target-flut-standard-event-handler": [
[16, "vector"],
[32, "matrix"]
],
"(code target-flut-start)": [
[16, "event-message-block"]
],
"(exit target-flut-clone-anim)": [
[16, "event-message-block"]
],
"(code target-flut-clone-anim)": [
[16, "event-message-block"]
],
"(enter target-flut-air-attack-hit-ground)": [
[16, "event-message-block"]
],
"(event target-flut-jump)": [
[16, "vector"],
[32, "event-message-block"]
],
"(enter target-flut-air-attack)": [
[16, "vector"]
],
"(post target-flut-get-on)": [
[16, "vector"]
],
"(post target-flut-get-off-jump)": [
[16, "vector"]
],
"(code target-flut-get-on)": [
[16, "vector"],
[32, "vector"],
[48, "event-message-block"]
],
"(code target-flut-get-off-jump)": [
[16, "vector"],
[32, "vector"],
[48, "event-message-block"]
],
"(code target-flut-death)": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(trans target-flut-air-attack)": [
[16, "vector"],
[32, "vector"]
],
"(code target-flut-hit)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "event-message-block"]
],
"target-hit-orient": [
[16, "vector"]
],
"target-hit-move": [
[16, "vector"],
[32, "vector"],
[48, "matrix"]
],
"(anon-function 20 target-death)": [
[16, "event-message-block"]
],
"target-death-anim": [
[16, "event-message-block"],
[96, "vector"]
],
"(code target-death)": [
[16, "event-message-block"],
[96, "vector"]
],
"(code target-continue)": [
[16, "event-message-block"],
[96, "transformq"]
],
"velocity-set-to-target!": [
[16, "vector"]
],
"(exit target-hit)": [
[16, "vector"]
],
"(code target-hit)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "event-message-block"]
],
"target-hit-push": [
[16, "vector"]
],
"(anon-function 2 target-death)": [
[16, "vector"]
],
"racer-collision-reaction": [
[16, "vector"],
[32, "vector"],
[48, ["inline-array", "vector", 2]],
[112, "vector"],
[128, "vector"],
[144, "vector"],
[160, "vector"],
[176, "vector"],
[192, "vector"],
[208, "vector"],
[224, "vector"]
],
"target-send-attack": [
[16, "event-message-block"],
[112, "vector"],
[144, "vector"],
[160, "vector"],
[192, "vector"],
[208, "vector"]
],
"target-apply-tongue": [
[16, "vector"]
],
"target-bonk-event-handler": [
[16, "vector"],
[32, "vector"],
[48, "event-message-block"],
[128, "vector"]
],
"(code target-load-wait)": [
[16, "event-message-block"]
],
"(code target-stance-look-around)": [
[16, "event-message-block"]
],
"(enter target-look-around)": [
[16, "event-message-block"]
],
"(exit target-look-around)": [
[16, "event-message-block"]
],
"(code target-look-around)": [
[16, "event-message-block"]
],
"(enter target-billy-game)": [
[16, "event-message-block"]
],
"(exit target-billy-game)": [
[16, "event-message-block"]
],
"(enter target-pole-cycle)": [
[16, "event-message-block"]
],
"(code target-pole-flip-up-jump)": [
[16, "event-message-block"]
],
"(enter target-edge-grab)": [
[16, "event-message-block"]
],
"(exit target-edge-grab)": [
[16, "event-message-block"]
],
"(trans target-swim-up)": [
[16, "event-message-block"]
],
"(code target-launch)": [
[16, "event-message-block"]
],
"(code target-play-anim)": [
[16, "event-message-block"]
],
"(exit target-play-anim)": [
[16, "event-message-block"]
],
"(trans target-edge-grab)": [
[16, "collide-using-spheres-params"]
],
"(exit target-clone-anim)": [
[16, "event-message-block"],
[96, "vector"]
],
"(enter target-clone-anim)": [
[16, "event-message-block"]
],
"(code target-edge-grab-off)": [
[16, "event-message-block"],
[96, "vector"]
],
"(trans target-look-around)": [
[16, "vector"],
[32, "vector"]
],
"(trans target-pole-cycle)": [
[16, "vector"]
],
"(code target-swim-jump)": [
[16, "vector"]
],
"(anon-function 11 target2)": [
[16, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"]
],
"(enter target-yellow-blast)": [
[16, "vector"]
],
"(code target-periscope)": [
[16, "vector"],
[32, "event-message-block"]
],
"(enter target-yellow-jump-blast)": [
[16, "vector"]
],
"(code target-swim-down)": [
[16, "vector"]
],
"(code target-yellow-jump-blast)": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"target-swim-tilt": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(code target-yellow-blast)": [
[16, "vector"],
[32, "vector"],
[48, "event-message-block"]
],
"(code target-edge-grab-jump)": [
[16, "vector"],
[32, "event-message-block"]
],
"(trans target-billy-game)": [
[16, "vector"],
[32, "vector"]
],
"(code target-wade-walk)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"]
],
"placeholder-do-not-add-below!": []
}
@@ -5868,5 +5868,508 @@
[53, "s0", "(inline-array collide-cache-prim)"]
],
"target-falling-anim": [
[51, "v1", "art-joint-anim"],
[160, "v1", "art-joint-anim"]
],
"target-hit-ground-anim": [
[79, "v1", "art-joint-anim"],
[312, "v1", "art-joint-anim"],
[389, "v1", "art-joint-anim"],
[441, "v1", "art-joint-anim"],
[520, "v1", "art-joint-anim"],
[578, "v1", "art-joint-anim"],
[675, "v1", "art-joint-anim"],
[736, "v1", "art-joint-anim"],
[846, "v1", "art-joint-anim"]
],
"(code target-stance)": [
[48, "v1", "art-joint-anim"],
[117, "v1", "art-joint-anim"],
[170, "v1", "art-joint-anim"],
[234, "v1", "art-joint-anim"],
[298, "v1", "art-joint-anim"],
[389, "v1", "art-joint-anim"],
[503, "v1", "art-joint-anim"]
],
"(code target-walk)": [
[146, "v1", "art-joint-anim"],
[243, "v1", "art-joint-anim"]
],
"(code target-slide-down)": [
[26, "v1", "art-joint-anim"]
],
"(code target-jump-forward)": [
[13, "v1", "art-joint-anim"]
],
"(code target-double-jump)": [
[24, "v1", "art-joint-anim"]
],
"(code target-attack-air)": [
[14, "v1", "art-joint-anim"],
[167, "v1", "art-joint-anim"]
],
"(code target-attack)": [
[14, "v1", "art-joint-anim"]
],
"(code target-flop)": [
[13, "v1", "art-joint-anim"]
],
"(code target-duck-stance)": [
[21, "v1", "art-joint-anim"],
[116, "v1", "art-joint-anim"],
[168, "v1", "art-joint-anim"]
],
"mod-var-jump": [
[77, "f0", "float"],
[80, "f0", "float"],
[159, "v0", "vector"]
],
"(code target-duck-high-jump-jump)": [
[8, "v1", "float"]
],
"(event target-running-attack)": [
[41, "v1", "process-drawable"],
[50, "s5", "collide-shape"]
],
"(enter target-jump)": [
[53, "v1", "vector"]
],
"(enter target-high-jump)": [
[21, "v1", "vector"]
],
"(enter target-double-jump)": [
[15, "v1", "vector"]
],
// TODO - these shouldnt be required, but are here because `go/enter-state` returns none
"(event target-flop)": [
[34, "t9", "(function object :behavior target)"],
[40, "t9", "(function symbol object :behavior target)"]
],
"target-powerup-effect": [
[267, "a0", "symbol"],
[307, "a0", "vector"]
],
"(method 10 water-control)": [
[71, "a0", "collide-shape-moving"],
[147, "v1", "collide-shape-moving"],
[179, "v1", "collide-shape-moving"],
[461, "v1", "control-info"],
[473, "a0", "collide-shape-moving"],
[488, "v1", "collide-shape-moving"],
[502, "v1", "collide-shape-moving"],
[508, "v1", "collide-shape-moving"],
[580, "v1", "collide-shape-moving"],
[600, "s4", "collide-shape-moving"],
[609, "s4", "collide-shape-moving"],
[622, "s4", "collide-shape-moving"],
[627, "s4", "collide-shape-moving"],
[629, "s4", "collide-shape-moving"],
[716, "s5", "collide-shape-moving"],
[720, "s5", "collide-shape-moving"],
[721, "s5", "collide-shape-moving"],
[728, "s5", "collide-shape-moving"],
[730, "s5", "collide-shape-moving"],
[731, "s5", "collide-shape-moving"],
[744, "v1", "collide-shape-moving"],
[751, "a0", "collide-shape-moving"],
[775, "v1", "collide-shape-moving"],
[824, "a1", "collide-shape-moving"],
[826, "a0", "collide-shape-moving"],
[831, "v1", "collide-shape-moving"]
],
"part-water-splash-callback": [
[3, "v1", "float"]
],
"(method 15 water-control)": [
[42, "v1", "float"]
],
"(method 27 water-vol)": [
[16, "v1", "target"]
],
"(method 26 water-vol)": [
[19, "v1", "target"],
[33, "v1", "target"]
],
"(method 29 water-vol)": [
["_stack_", 16, "res-tag"],
[46, "v0", "(pointer float)"]
],
"(enter pickup racer)": [
[1, "t9", "(function none :behavior racer)"]
],
"target-racing-jump-anim": [
[36, "v1", "art-joint-anim"]
],
"target-racing-land-anim": [
[23, "v1", "art-joint-anim"],
[82, "v1", "art-joint-anim"],
[144, "v1", "art-joint-anim"]
],
"(post target-racing-get-off-jump)": [
[191, "f0", "float"]
],
"check-drop-level-rolling-dirt-finish": [
[17, "v1", "float"]
],
"(code peeper-down)": [
[24, "v1", "float"]
],
"(code nav-enemy-notice fleeing-nav-enemy)": [
[27, "v1", "art-joint-anim"]
],
"(code lightning-mole-dive)": [
[39, "v1", "art-joint-anim"]
],
"(code lightning-mole-yelp)": [
[19, "v1", "art-joint-anim"]
],
"(code peeper-up)": [
[10, "v1", "art-joint-anim"]
],
"(code robber-idle)": [
[14, "v1", "art-joint-anim"]
],
"(code robber-initial)": [
[14, "v1", "art-joint-anim"]
],
"(code robber-initial-notice)": [
[43, "v1", "art-joint-anim"]
],
"(code robber-tired)": [
[69, "v1", "art-joint-anim"],
[136, "v1", "float"]
],
"(code robber-flee)": [
[69, "v1", "art-joint-anim"],
[136, "v1", "float"]
],
"(code robber-die)": [
[71, "f0", "float"],
[104, "v1", "art-joint-anim"]
],
"target-flut-hit-ground-anim": [
[131, "v1", "art-joint-anim"],
[204, "v1", "art-joint-anim"]
],
"target-flut-standard-event-handler": [
[164, "a0", "process-drawable"]
],
"(code target-flut-stance)": [
[81, "v1", "art-joint-anim"],
[145, "v1", "art-joint-anim"]
],
"(code target-flut-walk)": [
[60, "v1", "art-joint-anim"]
],
"(code target-flut-air-attack)": [
[98, "v1", "art-joint-anim"]
],
"(code target-flut-air-attack-hit-ground)": [
[86, "v1", "art-joint-anim"]
],
"(code target-flut-death)": [
[224, "v1", "art-joint-anim"]
],
"(code target-flut-get-off-hit-ground)": [
[13, "v1", "art-joint-anim"]
],
"(code target-flut-running-attack)": [
[181, "f30", "float"],
[246, "f1", "float"],
[247, "f0", "float"],
[247, "f30", "float"],
[350, "v1", "art-joint-anim"],
[381, "f30", "float"]
],
"(code target-flut-double-jump)": [
[14, "v1", "art-joint-anim"],
[78, "v1", "art-joint-anim"]
],
"(trans target-flut-walk)": [
[147, "f0", "float"],
[152, "f1", "float"],
[203, "f0", "float"]
],
"(event target-flut-running-attack)": [
[41, "v1", "process-drawable"],
[53, "v1", "collide-shape"],
[59, "v1", "collide-shape"]
],
"(code target-flut-get-on)": [
[62, "s4", "process-drawable"],
[69, "s4", "process-drawable"],
[88, "s4", "process-drawable"],
[93, "s4", "process-drawable"]
],
"(code target-flut-get-off-jump)": [
[55, "s3", "process-drawable"],
[59, "s3", "process-drawable"],
[74, "s3", "process-drawable"],
[93, "s3", "process-drawable"],
[98, "s3", "process-drawable"],
[145, "v1", "art-joint-anim"]
],
"(event target-flut-grab)": [
[24, "a0", "process-drawable"]
],
"(post target-racing-get-on)": [
[76, "f0", "float"],
[88, "f0", "float"],
[92, "f1", "float"]
],
"target-death-anim": [
[18, "v1", "art-joint-anim"]
],
"target-hit-setup-anim": [
[90, "v1", "art-joint-anim"],
[164, "v1", "art-joint-anim"]
],
"(code target-death)": [
[533, "v1", "art-joint-anim"],
[655, "v0", "int"],
[691, "v1", "nav-enemy"],
[844, "gp", "spool-anim"],
[968, "s5", "handle"],
[991, "s5", "handle"],
[1010, "gp", "spool-anim"],
[1028, "s5", "handle"],
[1031, "s5", "handle"]
],
"(anon-function 1 target-death)": [
[12, "gp", "process-drawable"],
[16, "gp", "process-drawable"]
],
"next-level": [
[7, "a1", "level-load-info"],
[10, "a1", "level-load-info"]
],
"target-generic-event-handler": [
[10, "v1", "float"],
[297, "v1", "float"],
[308, "a0", "vector"],
[562, "v1", "(state target)"]
],
"target-standard-event-handler": [
[167, "a0", "process"],
[182, "a0", "process"],
[197, "a0", "process"],
[223, "a0", "process"],
[242, "a0", "process"],
[257, "a0", "process"],
[272, "a0", "process"],
[280, "a1", "process"],
[303, "a0", "process"],
[330, "a0", "process"]
],
"(code target-load-wait)": [
[21, "v1", "art-joint-anim"],
[138, "v1", "art-joint-anim"],
[196, "v1", "art-joint-anim"]
],
"(code target-grab)": [
[133, "v1", "art-joint-anim"],
[185, "v1", "art-joint-anim"],
[322, "v1", "art-joint-anim"],
[475, "v1", "art-joint-anim"]
],
"(code target-pole-cycle)": [
[87, "v1", "art-joint-anim"],
[148, "v1", "art-joint-anim"]
],
"(code target-pole-flip-up)": [
[13, "v1", "art-joint-anim"]
],
"(code target-edge-grab-jump)": [
[34, "v1", "art-joint-anim"]
],
"(code target-eco-powerup)": [
[32, "v1", "art-joint-anim"],
[47, "v1", "float"],
[215, "v1", "float"]
],
"(code target-swim-stance)": [
[31, "v1", "art-joint-anim"],
[52, "v1", "float"],
[89, "v1", "float"]
],
"(event target-swim-down)": [
[9, "v1", "attack-info"],
[13, "v1", "attack-info"],
[18, "v1", "attack-info"],
[23, "v1", "attack-info"],
[38, "v1", "attack-info"],
[39, "v1", "attack-info"],
[41, "v1", "attack-info"]
],
"(code target-swim-walk)": [
[54, "v1", "art-joint-anim"],
[140, "v1", "art-joint-anim"]
],
"(code target-yellow-jump-blast)": [
[184, "v1", "art-joint-anim"]
],
"(code target-swim-down)": [
[52, "v1", "art-joint-anim"]
],
"(anon-function 11 target2)": [
[19, "s4", "target"], // confusing -- the parent of a target is a target?
[21, "s4", "target"],
[29, "s4", "target"],
[34, "s4", "target"],
[40, "s4", "target"],
[54, "s4", "target"],
[66, "s4", "target"],
[76, "s4", "target"],
[82, "s4", "target"],
[87, "s4", "target"],
[89, "s4", "target"],
[118, "s4", "target"],
[129, "s4", "target"]
],
"(code target-play-anim)": [
[8, "v0", "art-joint-anim"]
],
"(code target-look-around)": [
[20, "v0", "float"]
],
"(code target-stance-look-around)": [
[10, "v0", "float"],
[36, "t9", "(function none :behavior target)"]
],
"part-first-person-hud-selector-func": [
[16, "v1", "first-person-hud"]
],
"part-first-person-hud-right-func": [
[16, "s5", "first-person-hud"],
[42, "s5", "first-person-hud"],
[46, "s5", "first-person-hud"],
[50, "s5", "first-person-hud"],
[59, "s5", "first-person-hud"]
],
"part-first-person-hud-left-func": [
[16, "s5", "first-person-hud"],
[43, "s5", "first-person-hud"],
[47, "s5", "first-person-hud"],
[51, "s5", "first-person-hud"],
[60, "s5", "first-person-hud"]
],
"(event target-grab)": [
[30, "a0", "process"],
[48, "a0", "process"],
[56, "a1", "process"]
],
"(code target-periscope)": [
[25, "v1", "process-drawable"],
[49, "v1", "art-joint-anim"],
[130, "v1", "art-joint-anim"]
],
"(code target-swim-up)": [
[17, "v1", "art-joint-anim"]
],
"(code target-yellow-blast)": [
[161, "gp", "handle"],
[176, "v1", "art-joint-anim"],
[219, "gp", "handle"]
],
"(code target-edge-grab)": [
[143, "v1", "art-joint-anim"],
[198, "v1", "art-joint-anim"]
],
"(method 10 first-person-hud)": [
[32, "t9", "(function process none)"]
],
"(code target-pole-flip-forward-jump)": [
[40, "t9", "(function none :behavior target)"]
],
"placeholder-do-not-add-below": []
}
@@ -3730,5 +3730,17 @@
}
},
"target-powerup-effect": {
"vars": {
"a0-74": ["a0-74", "vector"]
}
},
"(code target-yellow-blast)": {
"vars": {
"gp-0": ["gp-0", "handle"]
}
},
"aaaaaaaaaaaaaaaaaaaaaaa": {}
}
+46 -37
View File
@@ -6,19 +6,27 @@
;; dgos: GAME, ENGINE
(declare-type joint-control basic)
(declare-type effect-control basic)
(define-extern cspace<-parented-transformq-joint! (function cspace transformq none))
(define-extern cspace<-transformq! (function cspace transformq matrix))
(define-extern vector<-cspace! (function vector cspace vector))
;; DECOMP BEGINS
(deftype joint-control-channel (structure)
((parent joint-control :offset-assert 0)
(command symbol :offset-assert 4)
(frame-interp float :offset-assert 8)
(frame-group art-joint-anim :offset-assert 12)
(frame-num float :offset-assert 16)
(num-func (function joint-control-channel float float float) :offset-assert 20)
(param float 2 :offset-assert 24)
(group-sub-index int16 :offset-assert 32)
(group-size int16 :offset-assert 34)
(dist meters :offset-assert 36)
(eval-time uint32 :offset-assert 40)
(inspector-amount float :offset-assert 44)
((parent joint-control :offset-assert 0)
(command symbol :offset-assert 4)
(frame-interp float :offset-assert 8)
(frame-group art-joint-anim :offset-assert 12)
(frame-num float :offset-assert 16)
(num-func (function joint-control-channel float float float) :offset-assert 20)
(param float 2 :offset-assert 24)
(group-sub-index int16 :offset-assert 32)
(group-size int16 :offset-assert 34)
(dist meters :offset-assert 36)
(eval-time uint32 :offset-assert 40)
(inspector-amount float :offset-assert 44)
)
:method-count-assert 10
:size-assert #x30
@@ -28,7 +36,7 @@
)
)
(declare-type effect-control basic)
(deftype joint-control (basic)
((status uint16 :offset-assert 4)
(allocated-length int16 :offset-assert 6)
@@ -55,27 +63,29 @@
:flag-assert #xb000000c0
(:methods
(new (symbol type int) _type_ 0)
(dummy-9 (_type_) none 9)
(dummy-9 (_type_) float 9)
(dummy-10 (_type_ symbol) int 10)
)
)
(deftype matrix-stack (structure)
((top matrix :offset-assert 0)
(data matrix 24 :inline :offset-assert 16)
((top matrix :offset-assert 0)
(data matrix 24 :inline :offset-assert 16)
)
:method-count-assert 9
:size-assert #x610
:flag-assert #x900000610
)
(deftype channel-upload-info (structure)
((fixed joint-anim-compressed-fixed :offset-assert 0)
(fixed-qwc int32 :offset-assert 4)
(frame joint-anim-compressed-frame :offset-assert 8)
(frame-qwc int32 :offset-assert 12)
(amount float :offset-assert 16)
(interp float :offset-assert 20)
((fixed joint-anim-compressed-fixed :offset-assert 0)
(fixed-qwc int32 :offset-assert 4)
(frame joint-anim-compressed-frame :offset-assert 8)
(frame-qwc int32 :offset-assert 12)
(amount float :offset-assert 16)
(interp float :offset-assert 20)
)
:pack-me
:method-count-assert 9
@@ -83,21 +93,20 @@
:flag-assert #x900000018
)
(deftype joint-work (structure)
((temp-mtx matrix :inline :offset-assert 0)
(joint-stack matrix-stack :inline :offset-assert 64)
(fix-jmp-table (function none) 16 :offset-assert 1616)
(frm-jmp-table (function none) 16 :offset-assert 1680)
(pair-jmp-table (function none) 16 :offset-assert 1744)
(uploads channel-upload-info 24 :inline :offset-assert 1808)
(num-uploads int32 :offset-assert 2384)
(mtx-acc matrix 2 :inline :offset-assert 2400)
(tq-acc transformq 100 :inline :offset-assert 2528)
(jacp-hdr joint-anim-compressed-hdr :inline :offset-assert 7328)
(fixed-data joint-anim-compressed-fixed :inline :offset-assert 7392)
(frame-data joint-anim-compressed-frame 2 :inline :offset-assert 9600)
;(flatten-array UNKNOWN 576 :offset-assert 2400) no clue!
;(flattened UNKNOWN 24 :offset-assert 2400) no clue!
((temp-mtx matrix :inline :offset-assert 0)
(joint-stack matrix-stack :inline :offset-assert 64)
(fix-jmp-table (function none) 16 :offset-assert 1616)
(frm-jmp-table (function none) 16 :offset-assert 1680)
(pair-jmp-table (function none) 16 :offset-assert 1744)
(uploads channel-upload-info 24 :inline :offset-assert 1808)
(num-uploads int32 :offset-assert 2384)
(mtx-acc matrix 2 :inline :offset-assert 2400)
(tq-acc transformq 100 :inline :offset-assert 2528)
(jacp-hdr joint-anim-compressed-hdr :inline :offset-assert 7328)
(fixed-data joint-anim-compressed-fixed :inline :offset-assert 7392)
(frame-data joint-anim-compressed-frame 2 :inline :offset-assert 9600)
)
:method-count-assert 9
:size-assert #x3640
@@ -108,4 +117,4 @@
(define-extern cspace<-transformq! (function cspace transformq matrix))
(define-extern vector<-cspace! (function vector cspace vector))
(define-extern cspace<-transformq+world-trans! (function cspace transformq vector matrix))
(define-extern create-interpolated-joint-animation-frame (function joint-control int process-drawable int))
(define-extern create-interpolated-joint-animation-frame (function joint-control int process-drawable int))
@@ -8,3 +8,6 @@
;; TODO - for logic-target
(define-extern target-collision-reaction (function control-info collide-shape-intersect vector vector none))
(define-extern target-collision-no-reaction (function control-info collide-shape-intersect vector vector none))
;; TODO - for collide-reaction-racer
(define-extern collide-shape-moving-angle-set! (function collide-shape-moving vector vector none)) ;; not confirmed
+1 -2
View File
@@ -333,8 +333,7 @@
NOTE: uses the size-bytes as the TOTAL size of the structure."
(let ((obj (object-new allocation type-to-make size-bytes)))
;; not sure what this is.
(set! (-> obj cshape) cshape)
(set! (-> obj cshape) (the-as collide-shape cshape))
;; sphere/mesh?
(set! (-> obj prim-id) prim-id)
(set! (-> obj prim-core action) 0)
+2 -2
View File
@@ -993,11 +993,11 @@
((s5-1
(vector-normalize-copy!
(new 'stack-no-clear 'vector)
(the-as vector (&-> obj unknown-vector120))
(the-as vector (-> obj unknown-vector120))
1.0
)
)
(f0-32 (vector-length (the-as vector (&-> obj unknown-vector120))))
(f0-32 (vector-length (the-as vector (-> obj unknown-vector120))))
)
(set! (-> obj unknown-float140) (if (= f0-32 0.0)
0.0
+39 -17
View File
@@ -43,9 +43,9 @@
(unknown-vector10 vector :inline :offset 544) ;; from - logic-target::flat-setup
(unknown-vector11 vector :inline :offset 560) ;; from - logic-target::target-no-move-post
(unknown-vector12 vector :inline :offset 576)
(unknown-vector13 vector :inline :offset 592) ;; from - collide-shape::method-37
(unknown-vector13 vector :inline :offset 592) ;; from - collide-shape::method-37 | target::mod-var-jump
(unknown-vector14 vector :inline :offset 608) ;; from - logic-target::target-no-move-post
(unknown-vector15 vector :inline :offset 624) ;; from - collide-shape::method-37
(unknown-vector15 vector :inline :offset 624) ;; from - collide-shape::method-37 | target-handler::target-exit
(unknown-vector16 vector :inline :offset 640) ;; from - collide-shape::method-37
(unknown-dynamics00 dynamics :offset 656) ;; from - logic-target::bend-gravity
(unknown-surface00 surface :offset 660)
@@ -72,7 +72,8 @@
(unknown-qword00 uint128 :offset 1136)
(unknown-float30 float :offset 1140) ;; from - logic-target::target-calc-camera-pos
(unknown-vector40 vector :inline :offset 1152) ;; from - logic-target::target-real-post
(unknown-float40 float :offset 1176) ;; from - logic-target::do-rotations2
(unknown-float40 float :offset 1172) ;; from - target-death::lambda-1
(unknown-float41 float :offset 1176) ;; from - logic-target::do-rotations2
(unknown-int00 int32 :offset 1180) ;; from - logic-target::joint-points
(unknown-float50 float :offset 1168) ;; from - logic-target::target-real-post
(unknown-vector50 vector :inline :offset 1184) ;; from - logic-target::build-conversions
@@ -96,16 +97,21 @@
(unknown-float71 float :offset 1524) ;; from - collide-shape::method-37
(unknown-vector70 vector :inline :offset 1536) ;; from - logic-target::add-thrust
(unknown-vector71 vector :inline :offset 1552) ;; from - target-tube::tube-thrust
(unknown-vector72 vector :inline :offset 1584) ;; from - collide-reaction-target::target-collision-reaction
(unknown-vector72 vector :inline :offset 1568) ;; from - collide-reaction-racer::racer-collision-reaction
(unknown-vector73 vector :inline :offset 1584) ;; from - collide-reaction-racer::racer-collision-reaction
(unknown-handle00 handle :offset 1600) ;; from logic-target::reset-target-state
(unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608) ;; from target-util::target-collide-set! and from target-util::target-danger-set!
(unknown-sphere00 collide-shape-prim-sphere :offset 1632) ;; from target-util::target-danger-set!
(unknown-sphere01 collide-shape-prim-sphere :offset 1636) ;; from target-util::target-danger-set!
(unknown-sphere02 collide-shape-prim-sphere :offset 1640) ;; from target-util::target-danger-set!
(unknown-dword30 int64 :offset 1672) ;; from target-util::can-hands?
(unknown-dword31 int64 :offset 1680) ;; from target-util::can-hands?
(unknown-dword32 int64 :offset 1688) ;; from target-util::can-feet?
(unknown-dword33 int64 :offset 1696) ;; from target-util::can-feet?
(unknown-int50 int32 :offset 1656) ;; from target::(enter target-wheel)
(unknown-dword30 int64 :offset 1664) ;; from target::(trans target-walk)
(unknown-dword31 int64 :offset 1672) ;; from target-util::can-hands?
(unknown-dword32 int64 :offset 1680) ;; from target-util::can-hands?
(unknown-dword33 int64 :offset 1688) ;; from target-util::can-feet?
(unknown-dword34 int64 :offset 1696) ;; from target-util::can-feet?
(unknown-dword35 int64 :offset 1704) ;; from target::(exit target-slide-down)
(unknown-dword36 int64 :offset 1712) ;; from target::(trans target-jump)
(unknown-float80 float :offset 1724) ;; from logic-target::bend-gravity
(unknown-float81 float :offset 1728) ;; from logic-target::bend-gravity
(unknown-float82 float :offset 1732) ;; from logic-target::bend-gravity
@@ -127,11 +133,18 @@
(unknown-dword40 int64 :offset 2160) ;; from logic-target::target-compute-edge
(unknown-dword41 int64 :offset 2168) ;; from logic-target::target-compute-edge
(unknown-handle10 handle :offset 2176) ;; from logic-target::target-compute-pole - probably a swingpole
(unknown-float120 float :offset 2184) ;; from target::mod-var-jump
(unknown-uint20 uint32 :offset 2184) ;; from target::(trans target-running-attack)
(unknown-spoolanim00 spool-anim :offset 2184) ;; from target2::(trans target-stance-ambient)
(unknown-int20 int32 :offset 2184) ;; from (anon-function 1 basebutton)
(unknown-symbol20 symbol :offset 2184) ;; from (anon-function 1 basebutton)
(unknown-int20 int32 :offset 2188) ;; from logic-target::target-compute-pole
(unknown-float120 float :offset 2184) ;; from target::mod-var-jump
(unknown-int21 int32 :offset 2188) ;; from logic-target::target-compute-pole
(unknown-uint30 uint32 :offset 2188) ;; from target::(code target-running-attack)
(unknown-float121 float :offset 2188) ;; from target::mod-var-jump
(unknown-uint31 uint32 :offset 2192) ;; from target::(trans target-running-attack)
(unknown-float122 float :offset 2196) ;; from target::(trans target-jump)
(unknown-float123 float :offset 2200) ;; from target::mod-var-jump
(unknown-float124 float :offset 2204) ;; from target::init-var-jump
(unknown-vector102 vector :inline :offset 2224) ;; from (anon-function 3 basebutton)
(unknown-vector103 vector :inline :offset 2240) ;; from (anon-function 3 basebutton)
(unknown-quaternion02 quaternion :inline :offset 2256) ;; from racer-states::(code target-racing-get-on)
@@ -140,23 +153,32 @@
(unknown-vector110 vector :inline :offset 2320) ;; from logic-target::flag-setup
(unknown-vector111 vector :inline :offset 2336) ;; from logic-target::flag-setup
(unknown-symbol30 symbol :offset 2384) ;; from target-util::target-danger-set!
(unknown-int31 uint32 :offset 2384) ;; from target:: (event target-running-attack)
(unknown-dword50 int64 :offset 2392) ;; from target-util::target-start-attack
(unknown-dword51 int64 :offset 2400) ;; from target-util::target-start-attack
(unknown-pointer00 pointer :offset 2416) ;; from target-handler::target-standard-event-handler
(unknown-symbol40 symbol :offset 2428) ;; from logic-target::post-flag-setup
(unknown-dword60 int64 :offset 2432) ;; from target::(enter target-jump)
(unknown-dword61 int64 :offset 2440) ;; from target::(enter target-jump)
(unknown-dword62 int64 :offset 2448) ;; from target::(enter target-jump) - probably some sort of object64 that's used as a vector?
(unknown-dword63 int64 :offset 2456) ;; from target::(enter target-jump)
(unknown-halfword00 int16 :offset 2488) ;; from logic-target::target-move-dist
;; these were determined from racer-collision-reaction.
(history-length int16 :offset 2490)
(history-data collide-history 128 :inline :offset-assert 2496)
(unknown-float140 float :offset 18944)
(unknown-dword60 int64 :offset 18952) ;; from logic-target::add-thrust
(unknown-dword70 int64 :offset 18952) ;; from logic-target::add-thrust
(unknown-int40 int32 :offset 18880) ;; from logic-target::flag-setup
(unknown-dword70 int64 :offset 18888) ;; from logic-target::post-flag-setup
(unknown-dword71 int64 :offset 18896) ;; from logic-target::post-flag-setup
(unknown-dword72 int64 :offset 18912) ;; from logic-target::reset-target-state
(unknown-vector120 vector :offset 18928) ;; from collide-shape::method-37
(unknown-int50 uint32 :offset 18976) ;; from logic-target::print-target-stats
(unknown-dword80 int64 :offset 18888) ;; from logic-target::post-flag-setup
(unknown-dword81 int64 :offset 18896) ;; from logic-target::post-flag-setup
(unknown-float130 float :offset 18904) ;; from target2::target-swim-tilt
(unknown-float131 float :offset 18908) ;; from target2::target-swim-tilt
(unknown-dword82 int64 :offset 18912) ;; from logic-target::reset-target-state
(unknown-vector120 vector :inline :offset 18928) ;; from target::(code target-running-attack)
(unknown-float150 float :offset 18944) ;; from target::(code target-wheel-flip)
(unknown-int60 uint32 :offset 18976) ;; from logic-target::print-target-stats
(unknown-soundid00 sound-id :offset 18980) ;; from powerups::target-powerup-process
(unknown-float130 float :offset 18984) ;; from powerups::target-powerup-process
(unknown-float141 float :offset 18984) ;; from powerups::target-powerup-process
)
:size-assert #x4a2c
:method-count-assert 65
-1
View File
@@ -1199,7 +1199,6 @@
0.0
)
)
(none)
)
(defbehavior anim-loop process-drawable ()
+1
View File
@@ -1170,6 +1170,7 @@
)
)
;; TODO modified!
(defun ja-anim-done? ((arg0 process))
(let ((gp-0 (command-get-process arg0 *target*)))
(when gp-0
+5
View File
@@ -5,6 +5,11 @@
;; name in dgo: projectiles-h
;; dgos: GAME, ENGINE
(declare-type projectile process-drawable)
(define-extern projectile-init-by-other (function entity vector vector uint handle none :behavior projectile)) ;; 4th arg is `options`, 5th is `last-target`
;; decomp begins
(deftype projectile (process-drawable)
((root-override collide-shape-moving :score 100 :offset 112)
(base-trans vector :inline :offset-assert 176)
+32 -21
View File
@@ -5,15 +5,16 @@
;; name in dgo: vol-h
;; dgos: GAME, ENGINE
;; definition of type plane-volume
;; DECOMP BEGINS
(deftype plane-volume (structure)
((volume-type symbol :offset-assert 0)
(point-count int16 :offset-assert 4)
(normal-count int16 :offset-assert 6)
(first-point vector :offset-assert 8)
(first-normal vector :offset-assert 12)
(num-planes int32 :offset-assert 16)
(plane uint32 :offset-assert 20)
((volume-type symbol :offset-assert 0)
(point-count int16 :offset-assert 4)
(normal-count int16 :offset-assert 6)
(first-point vector :offset-assert 8)
(first-normal vector :offset-assert 12)
(num-planes int32 :offset-assert 16)
(plane uint32 :offset-assert 20)
)
:pack-me
:method-count-assert 12
@@ -26,12 +27,12 @@
)
)
;; definition of type vol-control
(deftype vol-control (basic)
((flags uint32 :offset-assert 4)
(process process-drawable :offset-assert 8)
(pos-vol-count int32 :offset-assert 12)
(pos-vol plane-volume 32 :inline :offset-assert 16)
((flags uint32 :offset-assert 4)
(process process-drawable :offset-assert 8)
(pos-vol-count int32 :offset-assert 12)
(pos-vol plane-volume 32 :inline :offset-assert 16)
(neg-vol-count int32 :offset-assert 784)
(neg-vol plane-volume 32 :inline :offset-assert 788)
(debug-point basic :offset-assert 1556)
@@ -43,16 +44,24 @@
(:methods
(new (symbol type process-drawable) _type_ 0)
(dummy-9 (_type_) none 9)
(dummy-10 () none 10)
(dummy-10 (_type_ vector) none 10)
(TODO-RENAME-11 (_type_) symbol 11)
)
)
;; definition for method 0 of type vol-control
;; INFO: Return type mismatch object vs vol-control.
;; Used lq/sq
(defmethod new vol-control ((allocation symbol) (type-to-make type) (arg0 process-drawable))
(let ((gp-0 (the-as object (object-new allocation type-to-make (the-as int (-> type-to-make size))))))
(defmethod
new
vol-control
((allocation symbol) (type-to-make type) (arg0 process-drawable))
(let
((gp-0
(the-as
object
(object-new allocation type-to-make (the-as int (-> type-to-make size)))
)
)
)
(when (zero? (the-as vol-control gp-0))
(go process-drawable-art-error "memory")
(set! gp-0 0)
@@ -156,8 +165,10 @@
)
)
;; definition for method 11 of type vol-control
(defmethod TODO-RENAME-11 vol-control ((obj vol-control))
(and *display-vol-marks* (logtest? (-> obj flags) 1))
)
+3
View File
@@ -5,6 +5,9 @@
;; name in dgo: ocean-h
;; dgos: GAME, ENGINE
;; NOTE - for water
(define-extern ocean-get-height (function vector float))
;; The "ocean" renderer is used to render the infinite water.
;; It doesn't draw the rivers in FJ or the water near the farmer.
+46 -46
View File
@@ -57,54 +57,54 @@
;; DECOMP BEGINS
(deftype water-control (basic)
((flags uint32 :offset-assert 4)
(process process :offset-assert 8)
(joint-index int32 :offset-assert 12)
(top-y-offset float :offset-assert 16)
(ripple-size meters :offset-assert 20)
(enter-water-time uint64 :offset-assert 24)
(wade-time uint64 :offset-assert 32)
(on-water-time uint64 :offset-assert 40)
(enter-swim-time uint64 :offset-assert 48)
(swim-time uint64 :offset-assert 56)
(base-height meters :offset-assert 64)
(wade-height meters :offset-assert 68)
(swim-height meters :offset-assert 72)
(surface-height meters :offset-assert 76)
(bottom-height meters :offset-assert 80)
(height meters :offset-assert 84)
(height-offset float 4 :offset-assert 88)
(real-ocean-offset meters :offset 88)
(ocean-offset meters :offset 92)
(bob-offset meters :offset 96)
(align-offset meters :offset 100)
(swim-depth meters :offset-assert 104)
(bob smush-control :inline :offset-assert 112)
(volume handle :offset-assert 144)
(bottom vector 2 :inline :offset-assert 160)
(top vector 2 :inline :offset-assert 192)
(enter-water-pos vector :inline :offset-assert 224)
(drip-old-pos vector :inline :offset-assert 240)
(drip-joint-index int32 :offset-assert 256)
(drip-wetness float :offset-assert 260)
(drip-time uint64 :offset-assert 264)
(drip-speed float :offset-assert 272)
(drip-height meters :offset-assert 276)
(drip-mult float :offset-assert 280)
((flags uint32 :offset-assert 4)
(process process-drawable :offset-assert 8)
(joint-index int32 :offset-assert 12)
(top-y-offset float :offset-assert 16)
(ripple-size meters :offset-assert 20)
(enter-water-time uint64 :offset-assert 24)
(wade-time uint64 :offset-assert 32)
(on-water-time uint64 :offset-assert 40)
(enter-swim-time uint64 :offset-assert 48)
(swim-time uint64 :offset-assert 56)
(base-height meters :offset-assert 64)
(wade-height meters :offset-assert 68)
(swim-height meters :offset-assert 72)
(surface-height meters :offset-assert 76)
(bottom-height meters :offset-assert 80)
(height meters :offset-assert 84)
(height-offset float 4 :offset-assert 88)
(real-ocean-offset meters :offset 88)
(ocean-offset meters :offset 92)
(bob-offset meters :offset 96)
(align-offset meters :offset 100)
(swim-depth meters :offset-assert 104)
(bob smush-control :inline :offset-assert 112)
(volume handle :offset-assert 144)
(bottom vector 2 :inline :offset-assert 160)
(top vector 2 :inline :offset-assert 192)
(enter-water-pos vector :inline :offset-assert 224)
(drip-old-pos vector :inline :offset-assert 240)
(drip-joint-index int32 :offset-assert 256)
(drip-wetness float :offset-assert 260)
(drip-time uint64 :offset-assert 264)
(drip-speed float :offset-assert 272)
(drip-height meters :offset-assert 276)
(drip-mult float :offset-assert 280)
)
:method-count-assert 17
:size-assert #x11c
:flag-assert #x110000011c
(:methods
(new (symbol type process int float float float) _type_ 0)
(dummy-9 () none 9)
(dummy-9 (_type_) none 9)
(dummy-10 (_type_) none 10)
(dummy-11 () none 11)
(start-bobbing! (_type_ float int int) none 11)
(distance-from-surface (_type_) float 12)
(dummy-13 (_type_ float vector int vector) none 13)
(display-water-marks? (_type_) symbol 14)
(dummy-15 () none 15)
(dummy-16 () none 16)
(TODO-RENAME-15 (_type_) none 15)
(TODO-RENAME-16 (_type_) none 16)
)
)
@@ -129,7 +129,7 @@
(object-new allocation type-to-make (the-as int (-> type-to-make size)))
)
)
(set! (-> v0-0 process) arg0)
(set! (-> v0-0 process) (the-as process-drawable arg0))
(set! (-> v0-0 joint-index) arg1)
(set! (-> v0-0 wade-height) arg4)
(set! (-> v0-0 swim-height) arg3)
@@ -151,8 +151,8 @@
(wade-height meters :offset-assert 180)
(swim-height meters :offset-assert 184)
(bottom-height meters :offset-assert 188)
(attack-event basic :offset-assert 192)
(target uint64 :offset-assert 200)
(attack-event symbol :offset-assert 192)
(target handle :offset-assert 200)
(flags uint32 :offset-assert 208)
)
:heap-base #x70
@@ -163,13 +163,13 @@
(water-vol-idle () _type_ :state 20)
(water-vol-startup () _type_ :state 21)
(TODO-RENAME-22 (_type_) ripple-wave-set 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(reset-root! (_type_) none 23)
(set-stack-size! (_type_) none 24)
(TODO-RENAME-25 (_type_) object 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(TODO-RENAME-26 (_type_) none 26)
(dummy-27 (_type_) none 27)
(get-ripple-height (_type_ vector) float 28)
(dummy-29 () none 29)
(TODO-RENAME-29 (_type_) uint 29)
)
)
File diff suppressed because it is too large Load Diff
+1
View File
@@ -18,6 +18,7 @@
(bit7 7) ;; TODO - nav-enemy::45
(bit8 8)
(bit10 10) ;; TODO - nav-enemy::nav-enemy-patrol-post
(bit12 12) ;; TODO - rolling-lightning-mole::(enter nav-enemy-chase fleeing-nav-enemy)
(bit13 13)
(bit17 17)
(bit19 19) ;; TODO - nav-enemy::lambda::17
+20 -20
View File
@@ -367,20 +367,20 @@
(let ((s4-2 format)
(s3-2 arg1)
(s2-2 "~0kwall:~6X mode:~-8S material:~-10S event:~S~%")
(s1-2 (-> arg0 control unknown-int50))
(s1-2 (-> arg0 control unknown-int60))
(s0-2
(pat-mode->string
(the-as pat-surface (-> arg0 control unknown-int50))
(the-as pat-surface (-> arg0 control unknown-int60))
)
)
)
(set!
sv-96
(pat-material->string (the-as pat-surface (-> arg0 control unknown-int50)))
(pat-material->string (the-as pat-surface (-> arg0 control unknown-int60)))
)
(let
((t1-2
(pat-event->string (the-as pat-surface (-> arg0 control unknown-int50)))
(pat-event->string (the-as pat-surface (-> arg0 control unknown-int60)))
)
)
(s4-2 s3-2 s2-2 s1-2 s0-2 sv-96 t1-2)
@@ -1051,13 +1051,13 @@
)
)
(set!
(-> self control unknown-dword60)
(-> self control unknown-dword70)
(-> *display* base-frame-counter)
)
)
(if
(<
(- (-> *display* base-frame-counter) (-> self control unknown-dword60))
(- (-> *display* base-frame-counter) (-> self control unknown-dword70))
60
)
(set! f30-4 (+ 204800.0 f30-4))
@@ -1231,7 +1231,7 @@
150
)
(logtest? (-> self control unknown-surface01 flags) 16)
(!= (-> self control unknown-float40) 0.0)
(!= (-> self control unknown-float41) 0.0)
)
(zero? (logand (-> self control unknown-surface01 flags) 32))
)
@@ -1619,7 +1619,7 @@
(if
(<
(logand
(- (-> *display* base-frame-counter) (-> self control unknown-dword70))
(- (-> *display* base-frame-counter) (-> self control unknown-dword80))
3
)
1
@@ -1629,8 +1629,8 @@
)
(if
(>=
(- (-> *display* base-frame-counter) (-> self control unknown-dword70))
(-> self control unknown-dword71)
(- (-> *display* base-frame-counter) (-> self control unknown-dword80))
(-> self control unknown-dword81)
)
(target-timed-invulnerable-off self)
)
@@ -1982,12 +1982,12 @@
(cond
((and
(< 2457.6 (vector-length s4-2))
(not (-> self control unknown-int20))
(not (-> self control unknown-int21))
)
(TODO-RENAME-28 (-> self control) (vector-normalize! s4-2 2457.6))
)
(else
(set! (-> self control unknown-int20) (the-as int #t))
(set! (-> self control unknown-int21) (the-as int #t))
(TODO-RENAME-30
(-> self control)
(vector-!
@@ -2218,7 +2218,7 @@
(target-calc-camera-pos)
(when (logtest? (-> self state-flags) #x4000)
(set! (-> self state-flags) (logand -28673 (-> self state-flags)))
(set! (-> self control unknown-float40) 0.0)
(set! (-> self control unknown-float41) 0.0)
)
(set! (-> self control unknown-int00) 0)
0
@@ -2231,9 +2231,9 @@
(countdown (s5-0 gp-0)
(set! (-> self control unknown-int40) s5-0)
(flag-setup)
(if (< (-> self control unknown-float40) 0.0)
(if (< (-> self control unknown-float41) 0.0)
(set!
(-> self control unknown-float40)
(-> self control unknown-float41)
(- 1.0 (-> self control unknown-cpad-info00 stick0-speed))
)
)
@@ -2257,9 +2257,9 @@
)
(set! f30-0 0.0)
)
(when (!= (-> self control unknown-float40) 0.0)
(let ((f0-12 (fmin 1.0 (-> self control unknown-float40))))
(set! (-> self control unknown-float40) f0-12)
(when (!= (-> self control unknown-float41) 0.0)
(let ((f0-12 (fmin 1.0 (-> self control unknown-float41))))
(set! (-> self control unknown-float41) f0-12)
(let
((a1-2 (vector-float*! (new 'stack-no-clear 'vector) (if (= f30-0 0.0)
*zero-vector*
@@ -2649,7 +2649,7 @@
(set! (-> self cam-user-mode) 'normal)
(set! (-> self control unknown-handle10) (the-as handle #f))
(set! (-> self control unknown-handle00) (the-as handle #f))
(set! (-> self control unknown-dword72) 0)
(set! (-> self control unknown-dword82) 0)
(buzz-stop! 0)
self
)
@@ -2775,7 +2775,7 @@
(add-connection *debug-engine* self target-print-stats self *stdcon0* #f)
)
(activate-hud self)
(set! (-> self fp-hud) (the-as uint #f))
(set! (-> self fp-hud) (the-as handle #f))
(set! (-> self water) (new 'process 'water-control self 9 0.0 8192.0 2048.0))
(set! (-> self water flags) (the-as uint #x4000f0))
(reset-target-state #t)
+332
View File
@@ -5,3 +5,335 @@
;; name in dgo: sidekick
;; dgos: GAME, ENGINE
(define-extern *sidekick-sg* skeleton-group)
(define-extern sidekick-clone (state sidekick))
;; DECOMP BEGINS
(define
*sidekick-remap*
'(
("run-to-stance-left"
"run-to-stance"
)
("run-to-stance-loop-left"
"run-to-stance-loop"
)
("stance-loop-left"
"stance-loop"
)
("run-to-stance-right"
"run-to-stance"
)
("run-to-stance-loop-right"
"run-to-stance-loop"
)
("stance-loop-right"
"stance-loop"
)
("run-to-stance-up"
"run-to-stance"
)
("run-to-stance-loop-up"
"run-to-stance-loop"
)
("stance-loop-up"
"stance-loop"
)
("run-to-stance-down"
"run-to-stance"
)
("run-to-stance-loop-down"
"run-to-stance-loop"
)
("stance-loop-down"
"stance-loop"
)
("run-right"
"run"
)
("run-left"
"run"
)
("walk-right"
"walk"
)
("walk-left"
"walk"
)
("edge-grab-stance1"
"edge-grab-stance1"
"edge-grab-stance1-alt"
)
("pole-cycle" "pole-cycle" "pole-cycle2")
)
)
(defun cspace<-cspace+quaternion! ((arg0 cspace) (arg1 cspace) (arg2 quaternion))
(rlet ((Q :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (-> arg0 bone transform)))
(quaternion->matrix s5-0 arg2)
(.lvf vf1 (&-> (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) quad))
(.lvf vf2 (&-> (-> arg1 bone) transform vector 3 quad))
(.lvf vf3 (&-> s5-0 vector 0 quad))
(.lvf vf4 (&-> s5-0 vector 1 quad))
(.lvf vf5 (&-> s5-0 vector 2 quad))
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
(.wait.vf)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
(.svf (&-> s5-0 vector 3 quad) vf2)
(.svf (&-> s5-0 vector 0 quad) vf3)
(.svf (&-> s5-0 vector 1 quad) vf4)
(.svf (&-> s5-0 vector 2 quad) vf5)
s5-0
)
)
)
(defstate sidekick-clone (sidekick)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(local-vars (v0-0 object))
(case arg2
(('matrix)
(case (-> arg3 param 0)
(('play-anim)
(set! v0-0 (-> self node-list data))
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param0)
cspace<-cspace+quaternion!
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param1)
(the-as basic (-> self parent-override 0 node-list data))
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param2)
(the-as basic (-> self parent-override 0 control quat))
)
)
(('copy-parent)
(set! v0-0 (-> self node-list data))
(set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace!)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param1)
(the-as basic (-> self parent-override 0 node-list data))
)
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2) #f)
)
(else
(set! v0-0 (-> self node-list data))
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param0)
cspace<-cspace+quaternion!
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param1)
(the-as
basic
(-> self parent-override 0 control unknown-cspace10 parent)
)
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param2)
(the-as basic (-> self parent-override 0 control quat))
)
)
)
v0-0
)
(('shadow)
(set! v0-0 (-> arg3 param 0))
(set! (-> self shadow-in-movie?) (the-as symbol v0-0))
v0-0
)
(('blend-shape)
(cond
((-> arg3 param 0)
(set! v0-0 (logior (-> self skel status) 8))
(set! (-> self skel status) (the-as uint v0-0))
)
(else
(set! v0-0 (logand -9 (-> self skel status)))
(set! (-> self skel status) (the-as uint v0-0))
)
)
v0-0
)
)
)
:code
(the-as (function none :behavior sidekick) looping-code)
:post
(behavior ()
(let ((v1-0 'process-drawable-art-error)
(a0-0 (-> self parent-override))
)
(when (!= (-> (if a0-0
(-> a0-0 0 self-override)
)
next-state
name
)
v1-0
)
(quaternion-copy!
(-> self root quat)
(-> self parent-override 0 control quat)
)
(set! (-> self anim-seed) (-> self parent-override 0 anim-seed))
(set! (-> self draw status) (-> self parent-override 0 draw status))
(joint-control-copy! (-> self skel) (-> self parent-override 0 skel))
(joint-control-remap!
(-> self skel)
(-> self draw art-group)
(-> self parent-override 0 draw art-group)
*sidekick-remap*
(the-as int (-> self anim-seed))
""
)
(let ((v1-22 (-> self parent-override 0 draw color-mult quad)))
(set! (-> self draw color-mult quad) v1-22)
)
(let ((v1-26 (-> self parent-override 0 draw color-emissive quad)))
(set! (-> self draw color-emissive quad) v1-26)
)
(set!
(-> self draw secondary-interp)
(-> self parent-override 0 draw secondary-interp)
)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x40 :b #x40 :a #x80)
)
)
(dummy-17 self)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x80 :a #x80)
)
)
(vector<-cspace!
(-> self draw origin)
(-> self node-list data (-> self draw origin-joint-index))
)
)
)
(when *display-sidekick-stats*
(format *stdcon* "~%")
(dummy-10 (-> self skel) (the-as symbol *stdcon*))
(add-debug-sphere
*display-sidekick-stats*
(bucket-id debug-draw1)
(->
self
parent-override
0
control
unknown-cspace10
parent
bone
transform
vector
3
)
409.6
(new 'static 'rgba :g #xff :a #x80)
)
(add-debug-sphere
*display-sidekick-stats*
(bucket-id debug-draw1)
(-> self node-list data 3 bone transform vector 3)
409.6
(new 'static 'rgba :r #xff :g #xff :a #x80)
)
(add-debug-sphere
*display-sidekick-stats*
(bucket-id debug-draw1)
(-> self draw origin)
409.6
(new 'static 'rgba :r #xff :g #x80 :a #x80)
)
)
(set!
(-> self draw shadow)
(the-as shadow-geo (if (and (movie?) (-> self shadow-in-movie?))
(-> self draw art-group data 2)
)
)
)
(let ((a0-26 (-> self skel effect)))
(if a0-26
(TODO-RENAME-9 a0-26)
)
)
(if (logtest? (-> self skel status) 72)
(merc-blend-shape self)
)
(if (logtest? (-> self skel status) 384)
(merc-eye-anim self)
)
(none)
)
)
(defskelgroup *sidekick-sg* sidekick
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 3)
:longest-edge (meters 1)
:shadow 2
:texture-level 2
:sort 1
)
(defbehavior init-sidekick sidekick ()
(logior! (-> self mask) (process-mask sidekick))
(set! (-> self root) (new 'process 'trsqv))
(vector-identity! (-> self root scale))
(quaternion-identity! (-> self root quat))
(initialize-skeleton self *sidekick-sg* '())
(set! (-> self draw origin-joint-index) (the-as uint 6))
(set! (-> self draw shadow-joint-index) (the-as uint 6))
(set! (-> self draw shadow-ctrl) *target-shadow-control*)
(logior! (-> self skel status) 256)
(let ((v1-14 (-> self node-list data)))
(set! (-> v1-14 0 param0) cspace<-cspace+quaternion!)
(set!
(-> v1-14 0 param1)
(the-as basic (-> self parent-override 0 control unknown-cspace10 parent))
)
(set!
(-> v1-14 0 param2)
(the-as basic (-> self parent-override 0 control quat))
)
)
(set! (-> self shadow-in-movie?) #t)
(go sidekick-clone)
(none)
)
(defun starts ()
(send-event *target* 'sidekick #t)
)
+37 -19
View File
@@ -11,35 +11,47 @@
(defun-extern start symbol continue-point target)
;; TODO - for mood
(define-extern target-joint-pos (function vector)) ;; TODO - unconfirmed
;; TODO - for target-util
(define-extern target-falling (state symbol none))
(define-extern target-slide-down (state none))
;; TODO - for logic-target - defined in shadow
(define-extern do-target-shadow (function none :behavior target))
;; TODO - for logic-target - defined in powerups
(define-extern target-powerup-process (function none :behavior target))
;; TODO - for logic-target - defined in target-handler
(define-extern target-exit (function none))
(define-extern target-generic-event-handler (function process int symbol event-message-block object))
(define-extern target-exit (function none :behavior target))
(define-extern target-generic-event-handler (function process int symbol event-message-block object :behavior target))
;; TODO - for logic-target - defined in sidekick
(define-extern init-sidekick (function none)) ;; TODO - not finished
(declare-type sidekick process-drawable)
(define-extern init-sidekick (function none :behavior sidekick))
;; TODO - for logic-target - defined in target-death
(define-extern target-continue (state continue-point none))
(define-extern target-periscope (state target))
(define-extern target-continue (state continue-point target))
(define-extern target-periscope (state handle target)) ;; unknown type
(define-extern mod-var-jump (function symbol symbol symbol vector vector :behavior target))
(define-extern init-var-jump (function float float vector vector vector vector :behavior target)) ;; 1st and 2nd vectors may be symbols instead?
(define-extern target-standard-event-handler function)
;; TODO - for target-util
(define-extern target-falling (state symbol target))
(define-extern target-slide-down (state target))
;; TODO - for target-tube
(define-extern target-attacked (function symbol attack-info process process (state handle attack-info target) object :behavior target)) ;; unconfirmed, target-tube::(event target-tube-start)
;; TODO - for racer-states
(define-extern racer-collision-reaction (function control-info collide-shape-intersect vector vector none))
;; TODO -for target2
(define-extern target-falling-anim-trans (function none :behavior target)) ;; unconfirmed
(declare-type sidekick basic)
(declare-type collide-cache basic)
(declare-type snowball-info basic)
(declare-type tube-info basic)
(declare-type racer-info basic)
(declare-type flut-info basic)
(declare-type target process-drawable)
(defun-extern start symbol continue-point target)
;; NOTE - for logic-target - defined in sidekick
(declare-type sidekick process-drawable)
;; DECOMP BEGINS
(deftype target (process-drawable)
((control control-info :offset 112)
((self-override target :offset 28)
(control control-info :offset 112)
(fact-info-target fact-info-target :offset 144)
(skel2 basic :offset-assert 176)
(racer racer-info :offset-assert 180)
@@ -56,12 +68,12 @@
(alt-cam-pos vector :inline :offset-assert 448)
(snowball snowball-info :offset-assert 464)
(tube tube-info :offset-assert 468)
(flut basic :offset-assert 472)
(flut flut-info :offset-assert 472)
(current-level level :offset-assert 476)
(saved-pos transformq :inline :offset-assert 480)
(saved-owner uint64 :offset-assert 528)
(alt-neck-pos vector :inline :offset-assert 544)
(fp-hud uint64 :offset-assert 560)
(fp-hud handle :offset-assert 560)
(no-load-wait uint64 :offset-assert 568)
(no-look-around-wait uint64 :offset-assert 576)
)
@@ -73,8 +85,8 @@
(dummy-20 (_type_ collide-cache) object 20)
)
(:states
target-clone-anim
target-death
(target-clone-anim handle)
(target-death symbol)
(target-hit-ground symbol)
(target-racing-bounce float float symbol)
(target-racing-clone-anim handle)
@@ -94,9 +106,10 @@
(define-perm *target* target #f)
(deftype sidekick (process-drawable)
((control control-info :offset 112)
(anim-seed uint64 :offset 192)
(shadow-in-movie? symbol :offset-assert 200)
((parent-override (pointer target) :offset 12)
(control control-info :offset 112)
(anim-seed uint64 :offset 192)
(shadow-in-movie? symbol :offset-assert 200)
)
:heap-base #x60
:method-count-assert 20
@@ -106,4 +119,9 @@
(define-perm *sidekick* sidekick #f)
(define-extern target-attacked (function symbol uint uint process (state target) object :behavior target)) ;; unconfirmed, target-tube::(event target-tube-start)
0
+11 -9
View File
@@ -870,7 +870,7 @@
(- (-> self control trans y) (-> self control shadow-pos y))
)
(defbehavior fall-test target ((arg0 symbol) (arg1 symbol))
(defbehavior fall-test target ()
(when
(and
(zero? (logand (-> self control status) 1))
@@ -918,9 +918,10 @@
)
(go target-falling #f)
)
(none)
)
(defbehavior slide-down-test target ((arg0 symbol) (arg1 symbol))
(defbehavior slide-down-test target ()
(if
(and
(zero? (logand (-> self control status) 129))
@@ -933,6 +934,7 @@
)
(go target-slide-down)
)
(none)
)
(defbehavior smack-surface? target ((arg0 symbol))
@@ -1066,13 +1068,13 @@
)
)
)
(-> self control unknown-dword30)
(-> self control unknown-dword31)
)
)
#t
)
(else
(set! (-> self control unknown-dword31) (-> *display* base-frame-counter))
(set! (-> self control unknown-dword32) (-> *display* base-frame-counter))
#f
)
)
@@ -1091,12 +1093,12 @@
(-> *display* base-frame-counter)
(the-as int (-> *TARGET-bank* attack-timeout))
)
(-> self control unknown-dword32)
(-> self control unknown-dword33)
)
#t
)
(else
(set! (-> self control unknown-dword33) (-> *display* base-frame-counter))
(set! (-> self control unknown-dword34) (-> *display* base-frame-counter))
#f
)
)
@@ -1136,7 +1138,7 @@
)
)
(defbehavior delete-back-vel target ((arg0 float))
(defbehavior delete-back-vel target ()
(let ((s5-0 (new-stack-vector0)))
(vector-z-quaternion! s5-0 (-> self control dir-targ))
(let ((gp-0 (new-stack-vector0))
@@ -1181,8 +1183,8 @@
(defun target-timed-invulnerable ((arg0 seconds) (arg1 target))
(logior! (-> arg1 state-flags) 32)
(set! (-> arg1 control unknown-dword70) (-> *display* base-frame-counter))
(set! (-> arg1 control unknown-dword71) (the-as int arg0))
(set! (-> arg1 control unknown-dword80) (-> *display* base-frame-counter))
(set! (-> arg1 control unknown-dword81) (the-as int arg0))
(dummy-53 (-> arg1 control) 2 4096 0)
0
(none)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+4
View File
@@ -28,6 +28,10 @@
(declare-type hud-bike-heat hud)
(declare-type hud-money-all hud)
;; TODO - for target2
(define-extern enable-hud (function none))
(define-extern disable-hud (function int none))
;; DECOMP BEGINS
(deftype hud-icon (basic)
+17 -5
View File
@@ -172,6 +172,9 @@
(beach-flutflutegg-hint #x275)
(sidekick-hint-fish-powerup #x278)
(misty-racer-hit-the-ballon-lurkers #x27e)
(sidekick-speech-hint-crate-darkeco1 #x281)
(beach-collectors-unblocked #x288)
@@ -192,7 +195,7 @@
(found-all-scout-flies #x296)
(yakow-owed-powercell #x297)
(misty-teetertotter-bonk-dax-tutorial #x2a4)
(sidekick-hint-misty-get-red-eco #x2a5)
@@ -208,6 +211,11 @@
(missed #x2b5)
(lose! #x2b6)
(daxter-screaming-jump #x290)
(daxter-wahoo-jump #x291)
(red-eco-tutorial #x2a6)
(village2-gambler-money #x300)
(village2-geologist-money #x301)
(village2-warrior-money #x302)
@@ -249,15 +257,13 @@
(rolling-ring-chase-2 #x325)
(rolling-beat-lurkers #x327)
(swamp-finished-with-flutflut #x328)
(rolling-race-beat-record #x335)
(sidekick-speech-hint-rolling-crate-darkeco #x336)
(rolling-lightning-moles-completion #x338)
(rolling-dark-plants-location-hint #x339)
(rolling-dark-plants-hint #x33a)
(rolling-flying-lurker-intro #x33c)
(rolling-ring-hint-one-ring-down #x33f)
(rolling-ring-hint-be-quick-to-next #x340)
(rolling-ring-hint-be-quick-all #x341)
@@ -270,6 +276,7 @@
(sunken-blue-eco-charger-all-hint #x34d)
(swamp-rats-nest-hint #x358)
(daxter-you-can-shoot-with-yellow-eco #x359)
(swamp-bats-hint #x364) ;; maybe we can ???? the bats. lol
(flutflut-reminder #x368)
@@ -327,6 +334,8 @@
(snow-frozen-crate #x42b) ;; task name?
(snow-bumpers #x42c)
(daxter-maybe-you-can-shoot-better-goggles #x433)
(darkcave-light-crystal-low-light-hint #x437)
(darkcave-light-crystal-hint #x438)
@@ -380,6 +389,9 @@
(citadel-break-generators-reminder #x809)
(citadel-climb-plat-hint #x80c)
(daxter-dont-miss-the-next-launcher #x80d)
(daxter-land-on-the-next-launcher #x812)
(misty-battle-finished #x813)
(training-precursor-orbs #x901)
+1 -1
View File
@@ -2361,7 +2361,7 @@
:enter #f
:event #f)))
(set! (-> dead-state code) nothing)
(set! (-> dead-state code) (the (function none :behavior process) nothing))
;; this is not yet defined.
+4 -4
View File
@@ -786,7 +786,7 @@
(-> self control unknown-vector102 y)
(+ -4096.0 (-> self control unknown-vector102 y))
)
(set! (-> self control unknown-float120) (the-as float #f))
(set! (-> self control unknown-uint20) (the-as uint #f))
(vector-reset! (-> self control transv))
(logior! (-> self state-flags) 1024)
(set! (-> self alt-cam-pos quad) (-> arg1 quad))
@@ -936,7 +936,7 @@
(and
(or
(< (vector-dot gp-2 (-> self control transv)) 0.0)
(-> self control unknown-float120)
(-> self control unknown-spoolanim00)
)
(>= (- (-> *display* base-frame-counter) (-> self state-time)) 15)
)
@@ -947,10 +947,10 @@
)
(set! (-> self control transv x) (* 0.95 (-> self control transv x)))
(set! (-> self control transv z) (* 0.95 (-> self control transv z)))
(when (not (-> self control unknown-float120))
(when (not (-> self control unknown-spoolanim00))
(send-event self 'do-effect 'death-warp-out -1.0)
(let ((v0-2 #t))
(set! (-> self control unknown-float120) (the-as float v0-2))
(set! (-> self control unknown-uint20) (the-as uint v0-2))
v0-2
)
)
+1 -1
View File
@@ -118,7 +118,7 @@
)
)
)
(set! (-> obj attack-event) (the-as basic v0-1))
(set! (-> obj attack-event) (the-as symbol v0-1))
v0-1
)
)
+1 -1
View File
@@ -953,7 +953,7 @@
(ripple-find-height obj 0 arg0)
)
(defmethod dummy-24 water-anim ()
(defmethod set-stack-size! water-anim ((obj water-anim))
(none)
)
@@ -8,6 +8,9 @@
(declare-type ecoclaw process-drawable)
(define-extern *ecoclaw* (pointer ecoclaw))
(define-extern ecoclaw-idle (state ecoclaw)) ;; unknown type
(define-extern ecoclaw-activate (state ecoclaw)) ;; unknown type
;; DECOMP BEGINS
(defskelgroup *med-res-snow1-sg* medres-snowback
+52 -47
View File
@@ -18,19 +18,22 @@
:flag-assert #xd00000028
(:methods
(dummy-9 (_type_ vector) none 9)
(dummy-10 (_type_ vector vector) symbol 10)
(TODO-RENAME-10 (_type_ collide-prim-core vector) symbol 10)
(dummy-11 (_type_ vector) symbol 11)
(dummy-12 (_type_ vector) none 12)
(dummy-12 (_type_ vector) vector 12)
)
)
(defmethod dummy-10 torus ((obj torus) (arg0 vector) (arg1 vector))
(defmethod
TODO-RENAME-10
torus
((obj torus) (arg0 collide-prim-core) (arg1 vector))
(let ((gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
(f30-0 (+ (-> obj radius-secondary) (-> arg0 w)))
(f30-0 (+ (-> obj radius-secondary) (-> arg0 world-sphere w)))
)
(vector-! gp-0 arg0 (-> obj origin))
(vector-! gp-0 (the-as vector arg0) (-> obj origin))
(vector-flatten! s5-0 gp-0 (-> obj axis))
(vector-normalize! s5-0 (-> obj radius-primary))
(vector-! arg1 gp-0 s5-0)
@@ -44,7 +47,7 @@
(when
(and
(logtest? (-> s4-0 prim-core collide-as) 16)
(dummy-10 obj (the-as vector (-> s4-0 prim-core)) arg0)
(TODO-RENAME-10 obj (-> s4-0 prim-core) arg0)
)
(countdown (s3-0 (-> s4-0 num-prims))
(let ((v1-9 (-> s4-0 prims s3-0)))
@@ -52,7 +55,7 @@
(and
(logtest? (-> v1-9 prim-core action) 1)
(logtest? (-> v1-9 prim-core collide-as) 16)
(dummy-10 obj (the-as vector (-> v1-9 prim-core)) arg0)
(TODO-RENAME-10 obj (-> v1-9 prim-core) arg0)
)
(return #t)
)
@@ -152,14 +155,15 @@
(vector-matrix*! arg0 arg0 s2-0)
)
(vector+! arg0 arg0 (-> obj origin))
(none)
arg0
)
(deftype arcing-shot (process-drawable)
((y-vel float :offset-assert 176)
(grav float :offset-assert 180)
(from vector :inline :offset-assert 192)
(to vector :inline :offset-assert 208)
((root-override collide-shape-moving :offset 112)
(y-vel float :offset-assert 176)
(grav float :offset-assert 180)
(from vector :inline :offset-assert 192)
(to vector :inline :offset-assert 208)
)
:heap-base #x70
:method-count-assert 20
@@ -185,12 +189,11 @@
(* 0.5 (- (sqrtf (- (* f0-6 f0-6) (* 4.0 f3-1))) f0-6))
)
)
(set!
(-> self grav)
(/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.0 v1-2))
(let ((f0-12 (/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.0 v1-2))))
(set! (-> self grav) f0-12)
f0-12
)
)
(none)
)
(defbehavior arcing-shot-calculate arcing-shot ((arg0 vector) (arg1 float))
@@ -198,9 +201,11 @@
(vector-lerp! arg0 (-> self from) (-> self to) s5-0)
(set! (-> arg0 y) (-> self from y))
(+! (-> arg0 y) (* (-> self y-vel) s5-0))
(+! (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav)))
(let ((f0-6 (+ (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav)))))
(set! (-> arg0 y) f0-6)
f0-6
)
)
(none)
)
(defbehavior arcing-shot-draw arcing-shot ()
@@ -288,7 +293,7 @@
#f
#f
#f
(-> self root trans)
(-> self root-override trans)
)
(-> s5-1 ppointer)
)
@@ -415,7 +420,7 @@
#f
#f
#f
(-> self root trans)
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
@@ -652,7 +657,7 @@
:trans
(behavior ()
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
@@ -796,9 +801,9 @@
)
(set! (-> s1-0 nav-radius) (* 0.75 (-> s1-0 root-prim local-sphere w)))
(backup-collide-with-as s1-0)
(set! (-> self root) s1-0)
(set! (-> self root-override) s1-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *darkecobomb-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
(set!
@@ -855,7 +860,7 @@
:trans
(behavior ()
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
@@ -868,7 +873,7 @@
)
(deactivate self)
)
(spawn (-> self part) (-> self root trans))
(spawn (-> self part) (-> self root-override trans))
(none)
)
:code
@@ -930,7 +935,7 @@
(defbehavior
greenshot-init-by-other greenshot
((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint))
((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 float))
(let
((s2-0
(new
@@ -959,9 +964,9 @@
)
(set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w)))
(backup-collide-with-as s2-0)
(set! (-> self root) s2-0)
(set! (-> self root-override) s2-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *greenshot-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
(arcing-shot-setup arg0 arg1 arg2)
@@ -1045,10 +1050,10 @@
(the float (+ (-> self rotation-offset) (-> *display* game-frame-counter)))
)
)
(matrix->quaternion (-> self root quat) s5-0)
(matrix->quaternion (-> self root-override quat) s5-0)
)
(if (< (* 0.006666667 (the float (min 150 arg0))) 1.0)
(spawn (-> self part) (-> self root trans))
(spawn (-> self part) (-> self root-override trans))
)
)
@@ -1066,9 +1071,9 @@
#t
)
(set! (-> self draw status) (logand -3 (-> self draw status)))
(quaternion-identity! (-> self root quat))
(quaternion-identity! (-> self root-override quat))
(set! (-> self ring radius-secondary) 3072.0)
(set! (-> self ring origin quad) (-> self root trans quad))
(set! (-> self ring origin quad) (-> self root-override trans quad))
(+! (-> self ring origin y) (-> self ring radius-secondary))
(set-vector! (-> self ring axis) 0.0 1.0 0.0 1.0)
(let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000)))
@@ -1099,7 +1104,7 @@
redshot-particle-callback
(-> self ppointer)
#f
(-> self root trans)
(-> self root-override trans)
)
(-> gp-1 ppointer)
)
@@ -1210,7 +1215,7 @@
)
(go redshot-explode)
)
(spawn (-> self shot-particle) (-> self root trans))
(spawn (-> self shot-particle) (-> self root-override trans))
(none)
)
:code
@@ -1236,7 +1241,7 @@
(behavior ()
(redshot-trans 1500)
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
@@ -1249,7 +1254,7 @@
)
(go redshot-wait)
)
(spawn (-> self shot-particle) (-> self root trans))
(spawn (-> self shot-particle) (-> self root-override trans))
(none)
)
:code
@@ -1265,7 +1270,7 @@
(defbehavior
redshot-init-by-other redshot
((arg0 vector) (arg1 vector) (arg2 float) (arg3 int) (arg4 int) (arg5 int))
((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 uint) (arg5 uint))
(local-vars (sv-16 collide-shape-prim-sphere))
(let
((s0-0
@@ -1296,15 +1301,15 @@
(set-root-prim! s0-0 sv-16)
(set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w)))
(backup-collide-with-as s0-0)
(set! (-> self root) s0-0)
(set! (-> self root-override) s0-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *redring-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
(arcing-shot-setup arg0 arg1 arg2)
(set! (-> self flight-time) arg3)
(set! (-> self stall-time) arg4)
(set! (-> self rotation-offset) arg5)
(set! (-> self flight-time) (the-as int arg3))
(set! (-> self stall-time) (the-as int arg4))
(set! (-> self rotation-offset) (the-as int arg5))
(set!
(-> self part)
(create-launch-control (-> *part-group-id-table* 647) self)
@@ -1331,7 +1336,7 @@
:volume #x400
:fo-max 80
)
(-> self root trans)
(-> self root-override trans)
)
)
(go redshot-idle)
@@ -1378,13 +1383,13 @@
:trans
(behavior ()
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
)
)
(spawn (-> self part) (-> self root trans))
(spawn (-> self part) (-> self root-override trans))
(when
(>=
(- (-> *display* game-frame-counter) (-> self state-time))
@@ -1438,9 +1443,9 @@
)
(set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w)))
(backup-collide-with-as s2-0)
(set! (-> self root) s2-0)
(set! (-> self root-override) s2-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *redring-sg* '())
(logior! (-> self draw status) 2)
(arcing-shot-setup arg0 arg1 arg2)
+3 -1
View File
@@ -3917,9 +3917,11 @@
(the-as (function none :behavior robotboss) transform-post)
)
;; WARN: Function may read a register that is not set: t2
(defbehavior
robotboss-greenshot robotboss
((arg0 vector) (arg1 basic) (arg2 basic) (arg3 symbol))
(local-vars (t2-0 none))
(+! (-> self children-spawned) 1)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(let ((s2-0 (new 'stack-no-clear 'vector)))
@@ -3937,7 +3939,7 @@
(the-as pointer #x70004000)
)
)
(run-now-in-process s1-1 greenshot-init-by-other gp-0 s2-0 arg1 arg2)
(run-now-in-process s1-1 greenshot-init-by-other gp-0 s2-0 arg1 arg2 t2-0)
(-> s1-1 ppointer)
)
)
+10 -9
View File
@@ -12,15 +12,16 @@
)
(deftype flutflut (process-drawable)
((root-override collide-shape-moving :offset 112)
(extra-trans vector :inline :offset-assert 176)
(condition int32 :offset-assert 192)
(auto-get-off symbol :offset-assert 196)
(cell handle :offset-assert 200)
(path-data path-control 2 :offset-assert 208)
(path-target path-control :offset 208)
(path-flut path-control :offset 212)
(touch-time uint64 :offset-assert 216)
((parent-override (pointer target) :offset 12)
(root-override collide-shape-moving :offset 112)
(extra-trans vector :inline :offset-assert 176)
(condition int32 :offset-assert 192)
(auto-get-off symbol :offset-assert 196)
(cell handle :offset-assert 200)
(path-data path-control 2 :offset-assert 208)
(path-target path-control :offset 208)
(path-flut path-control :offset 212)
(touch-time uint64 :offset-assert 216)
)
:pack-me
:heap-base #x70
+4 -5
View File
@@ -8,7 +8,6 @@
(declare-type fisher-fish process-drawable)
(define-extern fisher-fish-caught (state fisher-fish))
(define-extern fisher-fish-die (state fisher-fish))
(define-extern cspace<-cspace+quaternion! (function cspace quaternion cspace))
;; DECOMP BEGINS
@@ -2853,7 +2852,7 @@
(activate! (-> self control unknown-smush00) 1.0 120 210 0.3 1.0)
)
((= arg2 'lose)
(set! (-> self control unknown-float120) (the-as float arg2))
(set! (-> self control unknown-uint20) (the-as uint arg2))
arg2
)
(else
@@ -2866,7 +2865,7 @@
(set! (-> self control unknown-surface00) *empty-mods*)
(logior! (-> self state-flags) 16)
(set-zero! (-> self control unknown-smush00))
(set! (-> self control unknown-float120) (the-as float #f))
(set! (-> self control unknown-uint20) (the-as uint #f))
(none)
)
:exit
@@ -2983,7 +2982,7 @@
(set! (-> s5-1 frame-num) (ja-aframe 15.0 0))
)
(let ((s5-2 (new 'stack-no-clear 'vector)))
(until (-> self control unknown-float120)
(until (-> self control unknown-spoolanim00)
(let ((v1-42 (handle->process arg0)))
(when v1-42
(let ((a0-28 (-> self skel root-channel 0)))
@@ -3040,7 +3039,7 @@
(suspend)
)
)
(case (-> self control unknown-float120)
(case (-> self control unknown-spoolanim00)
(('lose)
(ja-channel-push! 1 30)
(let ((a0-38 (-> self skel root-channel 0)))
@@ -5,3 +5,254 @@
;; name in dgo: collide-reaction-racer
;; dgos: L1, FIC, LAV, MIS, OGR, RACERP, ROL
;; DECOMP BEGINS
(defun
racer-collision-reaction
((arg0 control-info)
(arg1 collide-shape-intersect)
(arg2 vector)
(arg3 vector)
)
(local-vars
(sv-80 vector)
(sv-84 vector)
(sv-88 (inline-array vector))
(sv-96 int)
(sv-104 int)
)
(set! sv-80 (new-stack-vector0))
(set! sv-84 (new-stack-vector0))
(let ((v1-2 (new 'stack-no-clear 'inline-array 'vector 2)))
(dotimes (a0-1 2)
(set! (-> v1-2 a0-1 quad) (the-as uint128 0))
)
(set! sv-88 v1-2)
)
(set! sv-96 0)
(set! sv-104 0)
(set! (-> sv-88 0 quad) (-> arg3 quad))
(set! (-> sv-88 1 quad) (-> arg3 quad))
(let ((a1-3 (new 'stack-no-clear 'vector)))
(vector-float*! a1-3 (-> arg1 move-vec) (-> arg1 best-u))
(TODO-RENAME-28 arg0 a1-3)
)
(dummy-56 arg0 (-> arg1 best-tri pat))
(if (= (-> arg0 poly-pat mode) (pat-mode wall))
(set! sv-104 (logior sv-104 1))
)
(if (= (-> arg0 unknown-surface00 mode) 'air)
(set! sv-104 (logior sv-104 32))
)
(let ((v1-21 (new 'stack-no-clear 'vector)))
(set! (-> v1-21 quad) (-> arg1 best-from-prim prim-core world-sphere quad))
(vector-! sv-80 v1-21 (-> arg1 best-tri intersect))
)
(vector-normalize! sv-80 1.0)
(set! (-> arg0 coverage) (vector-dot sv-80 (-> arg1 best-tri normal)))
(when (< (-> arg0 coverage) 0.0)
(set! (-> arg0 coverage) 0.0)
(vector-flatten! sv-80 sv-80 (-> arg1 best-tri normal))
(vector-normalize! sv-80 1.0)
)
(if (< (-> arg0 coverage) 0.9999)
(set! sv-104 (logior sv-104 24))
)
(let ((v1-31 (-> sv-80 quad)))
(set! (-> sv-84 quad) v1-31)
)
(if (= (-> arg1 best-u) 0.0)
(TODO-RENAME-28 arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0))
)
(set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad))
(collide-shape-moving-angle-set! arg0 sv-84 (-> sv-88 0))
(if (< (-> arg0 poly-angle) -0.2)
(set! sv-96 (logior sv-96 16))
)
(let
((s3-1
(<
(fabs (-> arg0 surface-angle))
(-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle)
)
)
)
(if s3-1
(set! sv-104 (logior sv-104 2))
)
(when (zero? (logand (-> arg0 prev-status) 1))
(set!
(-> arg0 ground-impact-vel)
(- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal)))
)
(set! sv-96 (logior sv-96 2048))
(when (not s3-1)
(let ((f30-0 (- 1.0 (-> arg0 surf impact-fric))))
(when (< f30-0 1.0)
(let ((s2-1 (new-stack-vector0))
(f28-0 (vector-dot (-> arg0 dynam gravity-normal) (-> sv-88 0)))
)
0.0
(vector-!
s2-1
(-> sv-88 0)
(vector-float*! s2-1 (-> arg0 dynam gravity-normal) f28-0)
)
(let* ((f0-18 (vector-length s2-1))
(f1-6 f0-18)
)
(if (< f28-0 0.0)
(set! f28-0 (* f28-0 f30-0))
)
(vector+!
(-> sv-88 0)
(vector-float*! (-> sv-88 0) (-> arg0 dynam gravity-normal) f28-0)
(vector-float*! s2-1 s2-1 (/ f0-18 f1-6))
)
)
)
)
)
)
)
(set! sv-96 (logior sv-96 4))
(cond
((-> arg1 best-to-prim)
(set! sv-96 (logior sv-96 32))
(set! (-> arg0 unknown-vector72 quad) (-> arg1 best-tri intersect quad))
(set! (-> arg0 unknown-vector73 quad) (-> arg0 poly-normal quad))
(set!
(-> arg0 unknown-handle00)
(process->handle (-> arg1 best-to-prim cshape process))
)
)
((= (-> arg0 poly-pat material) (pat-material waterbottom))
)
(else
(set! sv-96 (logior sv-96 4096))
)
)
(if (and s3-1 (logtest? #x10000 (-> arg0 root-prim prim-core action)))
(set! s3-1 #f)
)
(cond
(s3-1
(set! sv-104 (logior sv-104 4))
(set! sv-96 (logior sv-96 8))
(set! (-> arg0 cur-pat mode) 1)
(set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad))
(set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad))
(set! (-> arg0 unknown-int60) (the-as uint (-> arg1 best-tri pat)))
(vector-reflect-flat-above! arg2 (-> sv-88 0) sv-84)
(cond
((not
(and
(>=
(-> arg1 best-from-prim local-sphere w)
(vector-dot
(-> arg0 ground-poly-normal)
(vector-!
(new 'stack-no-clear 'vector)
(-> arg1 best-tri intersect)
(-> arg0 ground-touch-point)
)
)
)
(and
(< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2))
(< (- (-> *display* base-frame-counter) (-> arg0 unknown-dword10)) 90)
(zero? (logand sv-104 32))
)
)
)
)
(else
(set! sv-104 (logior sv-104 256))
(set! sv-104 (logand -65 sv-104))
(let
((s3-3
(vector-cross!
(new 'stack-no-clear 'vector)
(-> arg0 poly-normal)
(-> arg0 ground-poly-normal)
)
)
)
(vector-normalize! s3-3 1.0)
(vector-float*! arg2 s3-3 (vector-dot (-> sv-88 0) s3-3))
)
(vector+! arg2 arg2 (-> arg0 poly-normal))
)
)
(let*
((s2-2
(vector-normalize-copy! (new 'stack-no-clear 'vector) (-> sv-88 0) 1.0)
)
(s3-4 (new-stack-vector0))
(f30-1 (vector-dot s2-2 arg2))
)
0.0
(vector-! s3-4 arg2 (vector-float*! s3-4 s2-2 f30-1))
(let* ((f1-11 (vector-length s3-4))
(f0-27 f1-11)
(f1-12 (* 0.9 f1-11))
)
(vector+!
arg2
(vector-float*! arg2 s2-2 f30-1)
(vector-float*! s3-4 s3-4 (/ f1-12 f0-27))
)
)
)
)
(else
(set! sv-96 (logior sv-96 1))
(set! (-> arg0 cur-pat mode) 0)
(if (and (= (-> arg1 best-from-prim prim-id) 6) (zero? (logand sv-104 7)))
(set! (-> arg0 local-normal quad) (-> sv-84 quad))
)
(vector-reflect-flat! arg2 (-> sv-88 0) sv-84)
(dotimes (v1-142 16)
(vector+! arg2 arg2 (-> arg0 poly-normal))
)
(set! sv-96 (logior sv-96 2))
(set! (-> arg0 ground-touch-point w) 0.0)
(when (zero? (logand sv-104 15))
(set! sv-96 (logior sv-96 2))
(set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad))
(set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad))
(set!
(-> arg0 unknown-float60)
(vector-dot sv-84 (-> arg0 dynam gravity-normal))
)
(set! (-> arg0 unknown-dword10) (-> *display* base-frame-counter))
(set! (-> arg0 ground-pat) (-> arg0 poly-pat))
(set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad))
(set! sv-104 (logior sv-104 2048))
(if (= (-> arg0 poly-pat material) (pat-material waterbottom))
(set! sv-96 (logior sv-96 1024))
)
)
)
)
)
(logior! (-> arg0 status) sv-96)
(set! (-> arg0 reaction-flag) (the-as uint sv-104))
(update!
(-> arg0 history-data (-> arg0 unknown-halfword00))
arg0
(-> arg1 best-tri intersect)
(-> sv-88 1)
arg2
)
(set!
(-> arg0 unknown-halfword00)
(logand (+ (-> arg0 unknown-halfword00) 1) 127)
)
sv-96
(none)
)
@@ -70,10 +70,10 @@
)
(target-attacked
arg2
(-> arg3 param 1)
(the-as uint arg0)
(the-as attack-info (-> arg3 param 1))
arg0
(the-as process (-> arg3 param 0))
(the-as (state target) target-racing-hit)
target-racing-hit
)
)
)
@@ -1571,10 +1571,7 @@
(defstate target-racing-hit (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:enter
(behavior ((arg0 handle) (arg1 attack-info))
(let ((v1-0 (-> self attack-info)))
@@ -2215,10 +2212,7 @@
(defstate target-racing-get-on (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:exit
(-> target-racing-start exit)
:code
@@ -2243,8 +2237,8 @@
(-> self control unknown-quaternion00)
)
(set!
(-> self control unknown-float120)
(-> self control unknown-vector11 y)
(-> self control unknown-uint20)
(the-as uint (-> self control unknown-vector11 y))
)
(let* ((s3-0 (handle->process arg0))
(s4-1
@@ -2267,7 +2261,7 @@
)
(set! (-> self racer bike-scale quad) (-> s4-1 root-override scale quad))
(set!
(-> self control unknown-int20)
(-> self control unknown-int21)
(the-as int (-> self racer bike-trans y))
)
)
@@ -2532,7 +2526,7 @@
(set!
(-> self control unknown-vector11 y)
(lerp
(-> self control unknown-float120)
(the-as float (-> self control unknown-uint20))
(-> self racer cushion-base)
f30-1
)
@@ -2540,8 +2534,8 @@
(set!
(-> self racer bike-trans y)
(lerp
(-> self control unknown-float121)
(+ 4096.0 (-> self control unknown-float121))
(the-as float (-> self control unknown-uint30))
(+ 4096.0 (the-as float (-> self control unknown-uint30)))
f30-1
)
)
@@ -2554,10 +2548,7 @@
(defstate target-racing-get-off (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:exit
(-> target-racing-start exit)
:code
@@ -2653,10 +2644,7 @@
(defstate target-racing-get-off-jump (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:exit
(-> target-racing-start exit)
:code
@@ -2685,8 +2673,8 @@
(-> self control unknown-quaternion00)
)
(set!
(-> self control unknown-float120)
(-> self control unknown-vector11 y)
(-> self control unknown-uint20)
(the-as uint (-> self control unknown-vector11 y))
)
(let* ((s2-0 (handle->process arg0))
(s3-0
@@ -2713,7 +2701,7 @@
)
(set! (-> self racer bike-scale quad) (-> s3-0 root-override scale quad))
(set!
(-> self control unknown-int20)
(-> self control unknown-int21)
(the-as int (-> self racer bike-trans y))
)
)
@@ -2921,7 +2909,11 @@
)
(set!
(-> self control unknown-vector11 y)
(lerp (-> self control unknown-float120) 6144.0 (fmin 1.0 (* 2.0 f30-0)))
(lerp
(the-as float (-> self control unknown-uint20))
6144.0
(fmin 1.0 (* 2.0 f30-0))
)
)
)
(vector+!
@@ -2942,10 +2934,7 @@
(defstate target-racing-get-off-hit-ground (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-standard-event-handler
)
target-standard-event-handler
:enter
(-> target-hit-ground enter)
:trans
@@ -3121,7 +3110,7 @@
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore))
(set! (-> self control unknown-float120) (the-as float #f))
(set! (-> self control unknown-uint20) (the-as uint #f))
)
((-> target-racing-grab event) arg0 arg1 arg2 arg3)
)
@@ -3131,7 +3120,7 @@
(behavior ()
(set!
(-> self control unknown-vector11 y)
(-> self control unknown-float120)
(the-as float (-> self control unknown-uint20))
)
(set!
(-> self control unknown-vector12 y)
@@ -3146,8 +3135,8 @@
:code
(behavior ((arg0 handle))
(set!
(-> self control unknown-float120)
(-> self control unknown-vector11 y)
(-> self control unknown-uint20)
(the-as uint (-> self control unknown-vector11 y))
)
(set! (-> self control unknown-vector11 y) 0.0)
(send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim)
@@ -5,5 +5,4 @@
;; name in dgo: target-racer
;; dgos: FIC, LAV, MIS, OGR, ROL
(define-extern racer-collision-reaction function)
(define-extern *racer-mods* surface)
(define-extern *racer-mods* surface)
+1 -1
View File
@@ -63,7 +63,7 @@
target-jump
(-> *TARGET-bank* duck-jump-height-min)
(-> *TARGET-bank* duck-jump-height-max)
#f
(the-as surface #f)
)
)
(else
+5 -8
View File
@@ -828,15 +828,12 @@ swamp-bat-slave-event-handler
(deactivate self)
)
(swamp-bat-update-path)
(let ((s5-0 (method-of-object (-> self vol) dummy-10)))
(target-pos 5)
(if
(or
(s5-0)
(not (swamp-bat-check-slave-paths-match? (-> self path-select)))
)
(go swamp-bat-launch-slaves)
(if
(or
(dummy-10 (-> self vol) (target-pos 5))
(not (swamp-bat-check-slave-paths-match? (-> self path-select)))
)
(go swamp-bat-launch-slaves)
)
)
(let ((gp-1 (new 'static 'matrix)))
+1 -1
View File
@@ -733,7 +733,7 @@ Val* Compiler::compile_deref(const goos::Object& form, const goos::Object& _rest
// special case (-> <state> enter) should return the appropriate function type.
if (in_type.arg_count() > 0 && in_type.base_type() == "state") {
if (field_name == "enter") {
if (field_name == "enter" || field_name == "code") {
result->set_type(state_to_go_function(in_type, TypeSpec("none")));
}
}
+55
View File
@@ -0,0 +1,55 @@
import re
from jak1_file_list import file_list
import argparse
import os
parser = argparse.ArgumentParser()
parser.add_argument("--files")
args = parser.parse_args()
files = args.files.split(",")
throw_error = False
method_split_pattern = re.compile('t9-\d+\s\(method-of-object')
missing_res_tag_pattern = re.compile('(sv-\d{2,} int)')
decompiler_error_pattern = re.compile(';; ERROR')
for file in files:
src_path = ""
for f in file_list:
if f[2] != 3:
continue
if f[0] == file:
src_path = f[4]
break
if not os.path.exists("./goal_src/{}".format(src_path)):
print("{} couldn't find in /goal_src!".format(file))
throw_error = True
continue
file_path = "./goal_src/{}/{}.gc".format(src_path, file)
with open(file_path) as f:
for lineno, line in enumerate(f):
method_split_match = method_split_pattern.search(line)
if method_split_match:
print("method_split - {}:{}".format(file_path, lineno + 1))
throw_error = True
continue
missing_res_tag_match = missing_res_tag_pattern.search(line)
if missing_res_tag_match:
print("missing_res_tag - {}:{}".format(file_path, lineno + 1))
throw_error = True
continue
decompiler_error_match = decompiler_error_pattern.search(line)
if decompiler_error_match:
print("decompiler_error - {}:{}".format(file_path, lineno + 1))
throw_error = True
continue
if throw_error:
print("found potential problems!")
exit(1)
else:
print("looks good!")
+1
View File
@@ -27,6 +27,7 @@ files_with_modifications = [
"sunken-obs",
"cam-master",
"generic-obs",
"target-snowball",
"default-menu"
]
+1 -1
View File
@@ -69,7 +69,7 @@
:flag-assert #xb000000c0
(:methods
(new (symbol type int) _type_ 0)
(dummy-9 (_type_) none 9)
(dummy-9 (_type_) float 9)
(dummy-10 (_type_ symbol) int 10)
)
)
+37 -16
View File
@@ -79,7 +79,8 @@
(unknown-qword00 uint128 :offset 1136)
(unknown-float30 float :offset 1140)
(unknown-vector40 vector :inline :offset 1152)
(unknown-float40 float :offset 1176)
(unknown-float40 float :offset 1172)
(unknown-float41 float :offset 1176)
(unknown-int00 int32 :offset 1180)
(unknown-float50 float :offset 1168)
(unknown-vector50 vector :inline :offset 1184)
@@ -103,16 +104,21 @@
(unknown-float71 float :offset 1524)
(unknown-vector70 vector :inline :offset 1536)
(unknown-vector71 vector :inline :offset 1552)
(unknown-vector72 vector :inline :offset 1584)
(unknown-vector72 vector :inline :offset 1568)
(unknown-vector73 vector :inline :offset 1584)
(unknown-handle00 handle :offset 1600)
(unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608)
(unknown-sphere00 collide-shape-prim-sphere :offset 1632)
(unknown-sphere01 collide-shape-prim-sphere :offset 1636)
(unknown-sphere02 collide-shape-prim-sphere :offset 1640)
(unknown-dword30 int64 :offset 1672)
(unknown-dword31 int64 :offset 1680)
(unknown-dword32 int64 :offset 1688)
(unknown-dword33 int64 :offset 1696)
(unknown-int50 int32 :offset 1656)
(unknown-dword30 int64 :offset 1664)
(unknown-dword31 int64 :offset 1672)
(unknown-dword32 int64 :offset 1680)
(unknown-dword33 int64 :offset 1688)
(unknown-dword34 int64 :offset 1696)
(unknown-dword35 int64 :offset 1704)
(unknown-dword36 int64 :offset 1712)
(unknown-float80 float :offset 1724)
(unknown-float81 float :offset 1728)
(unknown-float82 float :offset 1732)
@@ -134,11 +140,18 @@
(unknown-dword40 int64 :offset 2160)
(unknown-dword41 int64 :offset 2168)
(unknown-handle10 handle :offset 2176)
(unknown-float120 float :offset 2184)
(unknown-uint20 uint32 :offset 2184)
(unknown-spoolanim00 spool-anim :offset 2184)
(unknown-int20 int32 :offset 2184)
(unknown-symbol20 symbol :offset 2184)
(unknown-int20 int32 :offset 2188)
(unknown-float120 float :offset 2184)
(unknown-int21 int32 :offset 2188)
(unknown-uint30 uint32 :offset 2188)
(unknown-float121 float :offset 2188)
(unknown-uint31 uint32 :offset 2192)
(unknown-float122 float :offset 2196)
(unknown-float123 float :offset 2200)
(unknown-float124 float :offset 2204)
(unknown-vector102 vector :inline :offset 2224)
(unknown-vector103 vector :inline :offset 2240)
(unknown-quaternion02 quaternion :inline :offset 2256)
@@ -147,27 +160,35 @@
(unknown-vector110 vector :inline :offset 2320)
(unknown-vector111 vector :inline :offset 2336)
(unknown-symbol30 symbol :offset 2384)
(unknown-int31 uint32 :offset 2384)
(unknown-dword50 int64 :offset 2392)
(unknown-dword51 int64 :offset 2400)
(unknown-pointer00 pointer :offset 2416)
(unknown-symbol40 symbol :offset 2428)
(unknown-dword60 int64 :offset 2432)
(unknown-dword61 int64 :offset 2440)
(unknown-dword62 int64 :offset 2448)
(unknown-dword63 int64 :offset 2456)
(unknown-halfword00 int16 :offset 2488)
(history-length int16 :offset 2490)
(history-data collide-history 128 :inline :offset-assert 2496)
(unknown-float140 float :offset 18944)
(unknown-dword60 int64 :offset 18952)
(unknown-dword70 int64 :offset 18952)
(unknown-int40 int32 :offset 18880)
(unknown-dword70 int64 :offset 18888)
(unknown-dword71 int64 :offset 18896)
(unknown-dword72 int64 :offset 18912)
(unknown-vector120 vector :offset 18928)
(unknown-int50 uint32 :offset 18976)
(unknown-dword80 int64 :offset 18888)
(unknown-dword81 int64 :offset 18896)
(unknown-float130 float :offset 18904)
(unknown-float131 float :offset 18908)
(unknown-dword82 int64 :offset 18912)
(unknown-vector120 vector :inline :offset 18928)
(unknown-float150 float :offset 18944)
(unknown-int60 uint32 :offset 18976)
(unknown-soundid00 sound-id :offset 18980)
(unknown-float130 float :offset 18984)
(unknown-float141 float :offset 18984)
)
:method-count-assert 65
:size-assert #x4a2c
:flag-assert #x4100004a2c
:no-inspect
)
;; definition for method 9 of type collide-history
-2
View File
@@ -1205,7 +1205,6 @@
)
;; definition for method 9 of type joint-control
;; INFO: Return type mismatch float vs none.
(defmethod dummy-9 joint-control ((obj joint-control))
(cond
((<
@@ -1245,7 +1244,6 @@
0.0
)
)
(none)
)
;; definition for function anim-loop
+1 -1
View File
@@ -52,7 +52,7 @@
(:methods
(new (symbol type process-drawable) _type_ 0)
(dummy-9 (_type_) none 9)
(dummy-10 () none 10)
(dummy-10 (_type_ vector) none 10)
(TODO-RENAME-11 (_type_) symbol 11)
)
)
+46 -46
View File
@@ -3,54 +3,54 @@
;; definition of type water-control
(deftype water-control (basic)
((flags uint32 :offset-assert 4)
(process process :offset-assert 8)
(joint-index int32 :offset-assert 12)
(top-y-offset float :offset-assert 16)
(ripple-size meters :offset-assert 20)
(enter-water-time uint64 :offset-assert 24)
(wade-time uint64 :offset-assert 32)
(on-water-time uint64 :offset-assert 40)
(enter-swim-time uint64 :offset-assert 48)
(swim-time uint64 :offset-assert 56)
(base-height meters :offset-assert 64)
(wade-height meters :offset-assert 68)
(swim-height meters :offset-assert 72)
(surface-height meters :offset-assert 76)
(bottom-height meters :offset-assert 80)
(height meters :offset-assert 84)
(height-offset float 4 :offset-assert 88)
(real-ocean-offset meters :offset 88)
(ocean-offset meters :offset 92)
(bob-offset meters :offset 96)
(align-offset meters :offset 100)
(swim-depth meters :offset-assert 104)
(bob smush-control :inline :offset-assert 112)
(volume handle :offset-assert 144)
(bottom vector 2 :inline :offset-assert 160)
(top vector 2 :inline :offset-assert 192)
(enter-water-pos vector :inline :offset-assert 224)
(drip-old-pos vector :inline :offset-assert 240)
(drip-joint-index int32 :offset-assert 256)
(drip-wetness float :offset-assert 260)
(drip-time uint64 :offset-assert 264)
(drip-speed float :offset-assert 272)
(drip-height meters :offset-assert 276)
(drip-mult float :offset-assert 280)
((flags uint32 :offset-assert 4)
(process process-drawable :offset-assert 8)
(joint-index int32 :offset-assert 12)
(top-y-offset float :offset-assert 16)
(ripple-size meters :offset-assert 20)
(enter-water-time uint64 :offset-assert 24)
(wade-time uint64 :offset-assert 32)
(on-water-time uint64 :offset-assert 40)
(enter-swim-time uint64 :offset-assert 48)
(swim-time uint64 :offset-assert 56)
(base-height meters :offset-assert 64)
(wade-height meters :offset-assert 68)
(swim-height meters :offset-assert 72)
(surface-height meters :offset-assert 76)
(bottom-height meters :offset-assert 80)
(height meters :offset-assert 84)
(height-offset float 4 :offset-assert 88)
(real-ocean-offset meters :offset 88)
(ocean-offset meters :offset 92)
(bob-offset meters :offset 96)
(align-offset meters :offset 100)
(swim-depth meters :offset-assert 104)
(bob smush-control :inline :offset-assert 112)
(volume handle :offset-assert 144)
(bottom vector 2 :inline :offset-assert 160)
(top vector 2 :inline :offset-assert 192)
(enter-water-pos vector :inline :offset-assert 224)
(drip-old-pos vector :inline :offset-assert 240)
(drip-joint-index int32 :offset-assert 256)
(drip-wetness float :offset-assert 260)
(drip-time uint64 :offset-assert 264)
(drip-speed float :offset-assert 272)
(drip-height meters :offset-assert 276)
(drip-mult float :offset-assert 280)
)
:method-count-assert 17
:size-assert #x11c
:flag-assert #x110000011c
(:methods
(new (symbol type process int float float float) _type_ 0)
(dummy-9 () none 9)
(dummy-9 (_type_) none 9)
(dummy-10 (_type_) none 10)
(dummy-11 () none 11)
(start-bobbing! (_type_ float int int) none 11)
(distance-from-surface (_type_) float 12)
(dummy-13 (_type_ float vector int vector) none 13)
(display-water-marks? (_type_) symbol 14)
(dummy-15 () none 15)
(dummy-16 () none 16)
(TODO-RENAME-15 (_type_) none 15)
(TODO-RENAME-16 (_type_) none 16)
)
)
@@ -116,7 +116,7 @@
(object-new allocation type-to-make (the-as int (-> type-to-make size)))
)
)
(set! (-> v0-0 process) arg0)
(set! (-> v0-0 process) (the-as process-drawable arg0))
(set! (-> v0-0 joint-index) arg1)
(set! (-> v0-0 wade-height) arg4)
(set! (-> v0-0 swim-height) arg3)
@@ -140,8 +140,8 @@
(wade-height meters :offset-assert 180)
(swim-height meters :offset-assert 184)
(bottom-height meters :offset-assert 188)
(attack-event basic :offset-assert 192)
(target uint64 :offset-assert 200)
(attack-event symbol :offset-assert 192)
(target handle :offset-assert 200)
(flags uint32 :offset-assert 208)
)
:heap-base #x70
@@ -152,13 +152,13 @@
(water-vol-idle () _type_ :state 20)
(water-vol-startup () _type_ :state 21)
(TODO-RENAME-22 (_type_) ripple-wave-set 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(reset-root! (_type_) none 23)
(set-stack-size! (_type_) none 24)
(TODO-RENAME-25 (_type_) object 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(TODO-RENAME-26 (_type_) none 26)
(dummy-27 (_type_) none 27)
(get-ripple-height (_type_ vector) float 28)
(dummy-29 () none 29)
(TODO-RENAME-29 (_type_) uint 29)
)
)
File diff suppressed because it is too large Load Diff
+20 -20
View File
@@ -371,20 +371,20 @@
(let ((s4-2 format)
(s3-2 arg1)
(s2-2 "~0kwall:~6X mode:~-8S material:~-10S event:~S~%")
(s1-2 (-> arg0 control unknown-int50))
(s1-2 (-> arg0 control unknown-int60))
(s0-2
(pat-mode->string
(the-as pat-surface (-> arg0 control unknown-int50))
(the-as pat-surface (-> arg0 control unknown-int60))
)
)
)
(set!
sv-96
(pat-material->string (the-as pat-surface (-> arg0 control unknown-int50)))
(pat-material->string (the-as pat-surface (-> arg0 control unknown-int60)))
)
(let
((t1-2
(pat-event->string (the-as pat-surface (-> arg0 control unknown-int50)))
(pat-event->string (the-as pat-surface (-> arg0 control unknown-int60)))
)
)
(s4-2 s3-2 s2-2 s1-2 s0-2 sv-96 t1-2)
@@ -1071,13 +1071,13 @@
)
)
(set!
(-> self control unknown-dword60)
(-> self control unknown-dword70)
(-> *display* base-frame-counter)
)
)
(if
(<
(- (-> *display* base-frame-counter) (-> self control unknown-dword60))
(- (-> *display* base-frame-counter) (-> self control unknown-dword70))
60
)
(set! f30-4 (+ 204800.0 f30-4))
@@ -1258,7 +1258,7 @@
150
)
(logtest? (-> self control unknown-surface01 flags) 16)
(!= (-> self control unknown-float40) 0.0)
(!= (-> self control unknown-float41) 0.0)
)
(zero? (logand (-> self control unknown-surface01 flags) 32))
)
@@ -1653,7 +1653,7 @@
(if
(<
(logand
(- (-> *display* base-frame-counter) (-> self control unknown-dword70))
(- (-> *display* base-frame-counter) (-> self control unknown-dword80))
3
)
1
@@ -1663,8 +1663,8 @@
)
(if
(>=
(- (-> *display* base-frame-counter) (-> self control unknown-dword70))
(-> self control unknown-dword71)
(- (-> *display* base-frame-counter) (-> self control unknown-dword80))
(-> self control unknown-dword81)
)
(target-timed-invulnerable-off self)
)
@@ -2025,12 +2025,12 @@
(cond
((and
(< 2457.6 (vector-length s4-2))
(not (-> self control unknown-int20))
(not (-> self control unknown-int21))
)
(TODO-RENAME-28 (-> self control) (vector-normalize! s4-2 2457.6))
)
(else
(set! (-> self control unknown-int20) (the-as int #t))
(set! (-> self control unknown-int21) (the-as int #t))
(TODO-RENAME-30
(-> self control)
(vector-!
@@ -2267,7 +2267,7 @@
(target-calc-camera-pos)
(when (logtest? (-> self state-flags) #x4000)
(set! (-> self state-flags) (logand -28673 (-> self state-flags)))
(set! (-> self control unknown-float40) 0.0)
(set! (-> self control unknown-float41) 0.0)
)
(set! (-> self control unknown-int00) 0)
0
@@ -2282,9 +2282,9 @@
(countdown (s5-0 gp-0)
(set! (-> self control unknown-int40) s5-0)
(flag-setup)
(if (< (-> self control unknown-float40) 0.0)
(if (< (-> self control unknown-float41) 0.0)
(set!
(-> self control unknown-float40)
(-> self control unknown-float41)
(- 1.0 (-> self control unknown-cpad-info00 stick0-speed))
)
)
@@ -2308,9 +2308,9 @@
)
(set! f30-0 0.0)
)
(when (!= (-> self control unknown-float40) 0.0)
(let ((f0-12 (fmin 1.0 (-> self control unknown-float40))))
(set! (-> self control unknown-float40) f0-12)
(when (!= (-> self control unknown-float41) 0.0)
(let ((f0-12 (fmin 1.0 (-> self control unknown-float41))))
(set! (-> self control unknown-float41) f0-12)
(let
((a1-2 (vector-float*! (new 'stack-no-clear 'vector) (if (= f30-0 0.0)
*zero-vector*
@@ -2711,7 +2711,7 @@
(set! (-> self cam-user-mode) 'normal)
(set! (-> self control unknown-handle10) (the-as handle #f))
(set! (-> self control unknown-handle00) (the-as handle #f))
(set! (-> self control unknown-dword72) 0)
(set! (-> self control unknown-dword82) 0)
(buzz-stop! 0)
self
)
@@ -2840,7 +2840,7 @@
(add-connection *debug-engine* self target-print-stats self *stdcon0* #f)
)
(activate-hud self)
(set! (-> self fp-hud) (the-as uint #f))
(set! (-> self fp-hud) (the-as handle #f))
(set! (-> self water) (new 'process 'water-control self 9 0.0 8192.0 2048.0))
(set! (-> self water flags) (the-as uint #x4000f0))
(reset-target-state #t)
+333
View File
@@ -0,0 +1,333 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol *sidekick-remap*, type pair
(define
*sidekick-remap*
'(
("run-to-stance-left"
"run-to-stance"
)
("run-to-stance-loop-left"
"run-to-stance-loop"
)
("stance-loop-left"
"stance-loop"
)
("run-to-stance-right"
"run-to-stance"
)
("run-to-stance-loop-right"
"run-to-stance-loop"
)
("stance-loop-right"
"stance-loop"
)
("run-to-stance-up"
"run-to-stance"
)
("run-to-stance-loop-up"
"run-to-stance-loop"
)
("stance-loop-up"
"stance-loop"
)
("run-to-stance-down"
"run-to-stance"
)
("run-to-stance-loop-down"
"run-to-stance-loop"
)
("stance-loop-down"
"stance-loop"
)
("run-right"
"run"
)
("run-left"
"run"
)
("walk-right"
"walk"
)
("walk-left"
"walk"
)
("edge-grab-stance1"
"edge-grab-stance1"
"edge-grab-stance1-alt"
)
("pole-cycle" "pole-cycle" "pole-cycle2")
)
)
;; definition for function cspace<-cspace+quaternion!
(defun cspace<-cspace+quaternion! ((arg0 cspace) (arg1 cspace) (arg2 quaternion))
(rlet ((Q :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (-> arg0 bone transform)))
(quaternion->matrix s5-0 arg2)
(.lvf vf1 (&-> (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) quad))
(.lvf vf2 (&-> (-> arg1 bone) transform vector 3 quad))
(.lvf vf3 (&-> s5-0 vector 0 quad))
(.lvf vf4 (&-> s5-0 vector 1 quad))
(.lvf vf5 (&-> s5-0 vector 2 quad))
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
(.wait.vf)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
(.svf (&-> s5-0 vector 3 quad) vf2)
(.svf (&-> s5-0 vector 0 quad) vf3)
(.svf (&-> s5-0 vector 1 quad) vf4)
(.svf (&-> s5-0 vector 2 quad) vf5)
s5-0
)
)
)
;; failed to figure out what this is:
(defstate sidekick-clone (sidekick)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(local-vars (v0-0 object))
(case arg2
(('matrix)
(case (-> arg3 param 0)
(('play-anim)
(set! v0-0 (-> self node-list data))
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param0)
cspace<-cspace+quaternion!
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param1)
(the-as basic (-> self parent-override 0 node-list data))
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param2)
(the-as basic (-> self parent-override 0 control quat))
)
)
(('copy-parent)
(set! v0-0 (-> self node-list data))
(set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace!)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param1)
(the-as basic (-> self parent-override 0 node-list data))
)
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2) #f)
)
(else
(set! v0-0 (-> self node-list data))
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param0)
cspace<-cspace+quaternion!
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param1)
(the-as
basic
(-> self parent-override 0 control unknown-cspace10 parent)
)
)
(set!
(-> (the-as (inline-array cspace) v0-0) 0 param2)
(the-as basic (-> self parent-override 0 control quat))
)
)
)
v0-0
)
(('shadow)
(set! v0-0 (-> arg3 param 0))
(set! (-> self shadow-in-movie?) (the-as symbol v0-0))
v0-0
)
(('blend-shape)
(cond
((-> arg3 param 0)
(set! v0-0 (logior (-> self skel status) 8))
(set! (-> self skel status) (the-as uint v0-0))
)
(else
(set! v0-0 (logand -9 (-> self skel status)))
(set! (-> self skel status) (the-as uint v0-0))
)
)
v0-0
)
)
)
:code
(the-as (function none :behavior sidekick) looping-code)
:post
(behavior ()
(let ((v1-0 'process-drawable-art-error)
(a0-0 (-> self parent-override))
)
(when (!= (-> (if a0-0
(-> a0-0 0 self-override)
)
next-state
name
)
v1-0
)
(quaternion-copy!
(-> self root quat)
(-> self parent-override 0 control quat)
)
(set! (-> self anim-seed) (-> self parent-override 0 anim-seed))
(set! (-> self draw status) (-> self parent-override 0 draw status))
(joint-control-copy! (-> self skel) (-> self parent-override 0 skel))
(joint-control-remap!
(-> self skel)
(-> self draw art-group)
(-> self parent-override 0 draw art-group)
*sidekick-remap*
(the-as int (-> self anim-seed))
""
)
(let ((v1-22 (-> self parent-override 0 draw color-mult quad)))
(set! (-> self draw color-mult quad) v1-22)
)
(let ((v1-26 (-> self parent-override 0 draw color-emissive quad)))
(set! (-> self draw color-emissive quad) v1-26)
)
(set!
(-> self draw secondary-interp)
(-> self parent-override 0 draw secondary-interp)
)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x40 :b #x40 :a #x80)
)
)
(dummy-17 self)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x80 :a #x80)
)
)
(vector<-cspace!
(-> self draw origin)
(-> self node-list data (-> self draw origin-joint-index))
)
)
)
(when *display-sidekick-stats*
(format *stdcon* "~%")
(dummy-10 (-> self skel) (the-as symbol *stdcon*))
(add-debug-sphere
*display-sidekick-stats*
(bucket-id debug-draw1)
(->
self
parent-override
0
control
unknown-cspace10
parent
bone
transform
vector
3
)
409.6
(new 'static 'rgba :g #xff :a #x80)
)
(add-debug-sphere
*display-sidekick-stats*
(bucket-id debug-draw1)
(-> self node-list data 3 bone transform vector 3)
409.6
(new 'static 'rgba :r #xff :g #xff :a #x80)
)
(add-debug-sphere
*display-sidekick-stats*
(bucket-id debug-draw1)
(-> self draw origin)
409.6
(new 'static 'rgba :r #xff :g #x80 :a #x80)
)
)
(set!
(-> self draw shadow)
(the-as shadow-geo (if (and (movie?) (-> self shadow-in-movie?))
(-> self draw art-group data 2)
)
)
)
(let ((a0-26 (-> self skel effect)))
(if a0-26
(TODO-RENAME-9 a0-26)
)
)
(if (logtest? (-> self skel status) 72)
(merc-blend-shape self)
)
(if (logtest? (-> self skel status) 384)
(merc-eye-anim self)
)
(none)
)
)
;; failed to figure out what this is:
(defskelgroup *sidekick-sg* sidekick
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 3)
:longest-edge (meters 1)
:shadow 2
:texture-level 2
:sort 1
)
;; definition for function init-sidekick
;; INFO: Return type mismatch object vs none.
(defbehavior init-sidekick sidekick ()
(logior! (-> self mask) (process-mask sidekick))
(set! (-> self root) (new 'process 'trsqv))
(vector-identity! (-> self root scale))
(quaternion-identity! (-> self root quat))
(initialize-skeleton self *sidekick-sg* '())
(set! (-> self draw origin-joint-index) (the-as uint 6))
(set! (-> self draw shadow-joint-index) (the-as uint 6))
(set! (-> self draw shadow-ctrl) *target-shadow-control*)
(logior! (-> self skel status) 256)
(let ((v1-14 (-> self node-list data)))
(set! (-> v1-14 0 param0) cspace<-cspace+quaternion!)
(set!
(-> v1-14 0 param1)
(the-as basic (-> self parent-override 0 control unknown-cspace10 parent))
)
(set!
(-> v1-14 0 param2)
(the-as basic (-> self parent-override 0 control quat))
)
)
(set! (-> self shadow-in-movie?) #t)
(go sidekick-clone)
(none)
)
;; definition for function starts
(defun starts ()
(send-event *target* 'sidekick #t)
)
+10 -8
View File
@@ -3,7 +3,8 @@
;; definition of type target
(deftype target (process-drawable)
((control control-info :offset 112)
((self-override target :offset 28)
(control control-info :offset 112)
(fact-info-target fact-info-target :offset 144)
(skel2 basic :offset-assert 176)
(racer racer-info :offset-assert 180)
@@ -20,12 +21,12 @@
(alt-cam-pos vector :inline :offset-assert 448)
(snowball snowball-info :offset-assert 464)
(tube tube-info :offset-assert 468)
(flut basic :offset-assert 472)
(flut flut-info :offset-assert 472)
(current-level level :offset-assert 476)
(saved-pos transformq :inline :offset-assert 480)
(saved-owner uint64 :offset-assert 528)
(alt-neck-pos vector :inline :offset-assert 544)
(fp-hud uint64 :offset-assert 560)
(fp-hud handle :offset-assert 560)
(no-load-wait uint64 :offset-assert 568)
(no-look-around-wait uint64 :offset-assert 576)
)
@@ -37,8 +38,8 @@
(dummy-20 (_type_ collide-cache) object 20)
)
(:states
target-clone-anim
target-death
(target-clone-anim handle)
(target-death symbol)
(target-hit-ground symbol)
(target-racing-bounce float float symbol)
(target-racing-clone-anim handle)
@@ -95,9 +96,10 @@
;; definition of type sidekick
(deftype sidekick (process-drawable)
((control control-info :offset 112)
(anim-seed uint64 :offset 192)
(shadow-in-movie? symbol :offset-assert 200)
((parent-override (pointer target) :offset 12)
(control control-info :offset 112)
(anim-seed uint64 :offset 192)
(shadow-in-movie? symbol :offset-assert 200)
)
:heap-base #x60
:method-count-assert 20
+13 -9
View File
@@ -1093,7 +1093,8 @@
)
;; definition for function fall-test
(defbehavior fall-test target ((arg0 symbol) (arg1 symbol))
;; INFO: Return type mismatch object vs none.
(defbehavior fall-test target ()
(when
(and
(zero? (logand (-> self control status) 1))
@@ -1141,10 +1142,12 @@
)
(go target-falling #f)
)
(none)
)
;; definition for function slide-down-test
(defbehavior slide-down-test target ((arg0 symbol) (arg1 symbol))
;; INFO: Return type mismatch object vs none.
(defbehavior slide-down-test target ()
(if
(and
(zero? (logand (-> self control status) 129))
@@ -1157,6 +1160,7 @@
)
(go target-slide-down)
)
(none)
)
;; definition for function smack-surface?
@@ -1296,13 +1300,13 @@
)
)
)
(-> self control unknown-dword30)
(-> self control unknown-dword31)
)
)
#t
)
(else
(set! (-> self control unknown-dword31) (-> *display* base-frame-counter))
(set! (-> self control unknown-dword32) (-> *display* base-frame-counter))
#f
)
)
@@ -1322,12 +1326,12 @@
(-> *display* base-frame-counter)
(the-as int (-> *TARGET-bank* attack-timeout))
)
(-> self control unknown-dword32)
(-> self control unknown-dword33)
)
#t
)
(else
(set! (-> self control unknown-dword33) (-> *display* base-frame-counter))
(set! (-> self control unknown-dword34) (-> *display* base-frame-counter))
#f
)
)
@@ -1376,7 +1380,7 @@
;; definition for function delete-back-vel
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defbehavior delete-back-vel target ((arg0 float))
(defbehavior delete-back-vel target ()
(let ((s5-0 (new-stack-vector0)))
(vector-z-quaternion! s5-0 (-> self control dir-targ))
(let ((gp-0 (new-stack-vector0))
@@ -1425,8 +1429,8 @@
;; INFO: Return type mismatch int vs none.
(defun target-timed-invulnerable ((arg0 seconds) (arg1 target))
(logior! (-> arg1 state-flags) 32)
(set! (-> arg1 control unknown-dword70) (-> *display* base-frame-counter))
(set! (-> arg1 control unknown-dword71) (the-as int arg0))
(set! (-> arg1 control unknown-dword80) (-> *display* base-frame-counter))
(set! (-> arg1 control unknown-dword81) (the-as int arg0))
(dummy-53 (-> arg1 control) 2 4096 0)
0
(none)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -834,7 +834,7 @@
(-> self control unknown-vector102 y)
(+ -4096.0 (-> self control unknown-vector102 y))
)
(set! (-> self control unknown-float120) (the-as float #f))
(set! (-> self control unknown-uint20) (the-as uint #f))
(vector-reset! (-> self control transv))
(logior! (-> self state-flags) 1024)
(set! (-> self alt-cam-pos quad) (-> arg1 quad))
@@ -984,7 +984,7 @@
(and
(or
(< (vector-dot gp-2 (-> self control transv)) 0.0)
(-> self control unknown-float120)
(-> self control unknown-spoolanim00)
)
(>= (- (-> *display* base-frame-counter) (-> self state-time)) 15)
)
@@ -995,10 +995,10 @@
)
(set! (-> self control transv x) (* 0.95 (-> self control transv x)))
(set! (-> self control transv z) (* 0.95 (-> self control transv z)))
(when (not (-> self control unknown-float120))
(when (not (-> self control unknown-spoolanim00))
(send-event self 'do-effect 'death-warp-out -1.0)
(let ((v0-2 #t))
(set! (-> self control unknown-float120) (the-as float v0-2))
(set! (-> self control unknown-uint20) (the-as uint v0-2))
v0-2
)
)
+1 -5
View File
@@ -126,7 +126,7 @@
)
)
)
(set! (-> obj attack-event) (the-as basic v0-1))
(set! (-> obj attack-event) (the-as symbol v0-1))
v0-1
)
)
@@ -517,7 +517,3 @@
(none)
)
)
+1 -1
View File
@@ -1019,7 +1019,7 @@
;; definition for method 24 of type water-anim
;; INFO: Return type mismatch symbol vs none.
(defmethod dummy-24 water-anim ()
(defmethod set-stack-size! water-anim ((obj water-anim))
(none)
)
+52 -50
View File
@@ -13,9 +13,9 @@
:flag-assert #xd00000028
(:methods
(dummy-9 (_type_ vector) none 9)
(dummy-10 (_type_ vector vector) symbol 10)
(TODO-RENAME-10 (_type_ collide-prim-core vector) symbol 10)
(dummy-11 (_type_ vector) symbol 11)
(dummy-12 (_type_ vector) none 12)
(dummy-12 (_type_ vector) vector 12)
)
)
@@ -30,12 +30,15 @@
)
;; definition for method 10 of type torus
(defmethod dummy-10 torus ((obj torus) (arg0 vector) (arg1 vector))
(defmethod
TODO-RENAME-10
torus
((obj torus) (arg0 collide-prim-core) (arg1 vector))
(let ((gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
(f30-0 (+ (-> obj radius-secondary) (-> arg0 w)))
(f30-0 (+ (-> obj radius-secondary) (-> arg0 world-sphere w)))
)
(vector-! gp-0 arg0 (-> obj origin))
(vector-! gp-0 (the-as vector arg0) (-> obj origin))
(vector-flatten! s5-0 gp-0 (-> obj axis))
(vector-normalize! s5-0 (-> obj radius-primary))
(vector-! arg1 gp-0 s5-0)
@@ -50,7 +53,7 @@
(when
(and
(logtest? (-> s4-0 prim-core collide-as) 16)
(dummy-10 obj (the-as vector (-> s4-0 prim-core)) arg0)
(TODO-RENAME-10 obj (-> s4-0 prim-core) arg0)
)
(countdown (s3-0 (-> s4-0 num-prims))
(let ((v1-9 (-> s4-0 prims s3-0)))
@@ -58,7 +61,7 @@
(and
(logtest? (-> v1-9 prim-core action) 1)
(logtest? (-> v1-9 prim-core collide-as) 16)
(dummy-10 obj (the-as vector (-> v1-9 prim-core)) arg0)
(TODO-RENAME-10 obj (-> v1-9 prim-core) arg0)
)
(return #t)
)
@@ -139,7 +142,6 @@
)
;; definition for method 12 of type torus
;; INFO: Return type mismatch vector vs none.
(defmethod dummy-12 torus ((obj torus) (arg0 vector))
(let* ((f30-0 65536.0)
(v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
@@ -170,15 +172,16 @@
(vector-matrix*! arg0 arg0 s2-0)
)
(vector+! arg0 arg0 (-> obj origin))
(none)
arg0
)
;; definition of type arcing-shot
(deftype arcing-shot (process-drawable)
((y-vel float :offset-assert 176)
(grav float :offset-assert 180)
(from vector :inline :offset-assert 192)
(to vector :inline :offset-assert 208)
((root-override collide-shape-moving :offset 112)
(y-vel float :offset-assert 176)
(grav float :offset-assert 180)
(from vector :inline :offset-assert 192)
(to vector :inline :offset-assert 208)
)
:heap-base #x70
:method-count-assert 20
@@ -199,7 +202,6 @@
)
;; definition for function arcing-shot-setup
;; INFO: Return type mismatch float vs none.
;; Used lq/sq
(defbehavior
arcing-shot-setup arcing-shot
@@ -218,24 +220,24 @@
(* 0.5 (- (sqrtf (- (* f0-6 f0-6) (* 4.0 f3-1))) f0-6))
)
)
(set!
(-> self grav)
(/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.0 v1-2))
(let ((f0-12 (/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.0 v1-2))))
(set! (-> self grav) f0-12)
f0-12
)
)
(none)
)
;; definition for function arcing-shot-calculate
;; INFO: Return type mismatch float vs none.
(defbehavior arcing-shot-calculate arcing-shot ((arg0 vector) (arg1 float))
(let ((s5-0 (fmin 1.0 (fmax 0.0 arg1))))
(vector-lerp! arg0 (-> self from) (-> self to) s5-0)
(set! (-> arg0 y) (-> self from y))
(+! (-> arg0 y) (* (-> self y-vel) s5-0))
(+! (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav)))
(let ((f0-6 (+ (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav)))))
(set! (-> arg0 y) f0-6)
f0-6
)
)
(none)
)
;; definition for function arcing-shot-draw
@@ -340,7 +342,7 @@
#f
#f
#f
(-> self root trans)
(-> self root-override trans)
)
(-> s5-1 ppointer)
)
@@ -471,7 +473,7 @@
#f
#f
#f
(-> self root trans)
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
@@ -710,7 +712,7 @@
:trans
(behavior ()
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
@@ -857,9 +859,9 @@
)
(set! (-> s1-0 nav-radius) (* 0.75 (-> s1-0 root-prim local-sphere w)))
(backup-collide-with-as s1-0)
(set! (-> self root) s1-0)
(set! (-> self root-override) s1-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *darkecobomb-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
(set!
@@ -927,7 +929,7 @@
:trans
(behavior ()
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
@@ -940,7 +942,7 @@
)
(deactivate self)
)
(spawn (-> self part) (-> self root trans))
(spawn (-> self part) (-> self root-override trans))
(none)
)
:code
@@ -1005,7 +1007,7 @@
;; Used lq/sq
(defbehavior
greenshot-init-by-other greenshot
((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint))
((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 float))
(let
((s2-0
(new
@@ -1034,9 +1036,9 @@
)
(set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w)))
(backup-collide-with-as s2-0)
(set! (-> self root) s2-0)
(set! (-> self root-override) s2-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *greenshot-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
(arcing-shot-setup arg0 arg1 arg2)
@@ -1142,10 +1144,10 @@
(the float (+ (-> self rotation-offset) (-> *display* game-frame-counter)))
)
)
(matrix->quaternion (-> self root quat) s5-0)
(matrix->quaternion (-> self root-override quat) s5-0)
)
(if (< (* 0.006666667 (the float (min 150 arg0))) 1.0)
(spawn (-> self part) (-> self root trans))
(spawn (-> self part) (-> self root-override trans))
)
)
@@ -1164,9 +1166,9 @@
#t
)
(set! (-> self draw status) (logand -3 (-> self draw status)))
(quaternion-identity! (-> self root quat))
(quaternion-identity! (-> self root-override quat))
(set! (-> self ring radius-secondary) 3072.0)
(set! (-> self ring origin quad) (-> self root trans quad))
(set! (-> self ring origin quad) (-> self root-override trans quad))
(+! (-> self ring origin y) (-> self ring radius-secondary))
(set-vector! (-> self ring axis) 0.0 1.0 0.0 1.0)
(let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000)))
@@ -1197,7 +1199,7 @@
redshot-particle-callback
(-> self ppointer)
#f
(-> self root trans)
(-> self root-override trans)
)
(-> gp-1 ppointer)
)
@@ -1310,7 +1312,7 @@
)
(go redshot-explode)
)
(spawn (-> self shot-particle) (-> self root trans))
(spawn (-> self shot-particle) (-> self root-override trans))
(none)
)
:code
@@ -1337,7 +1339,7 @@
(behavior ()
(redshot-trans 1500)
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
@@ -1350,7 +1352,7 @@
)
(go redshot-wait)
)
(spawn (-> self shot-particle) (-> self root trans))
(spawn (-> self shot-particle) (-> self root-override trans))
(none)
)
:code
@@ -1369,7 +1371,7 @@
;; Used lq/sq
(defbehavior
redshot-init-by-other redshot
((arg0 vector) (arg1 vector) (arg2 float) (arg3 int) (arg4 int) (arg5 int))
((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 uint) (arg5 uint))
(local-vars (sv-16 collide-shape-prim-sphere))
(let
((s0-0
@@ -1400,15 +1402,15 @@
(set-root-prim! s0-0 sv-16)
(set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w)))
(backup-collide-with-as s0-0)
(set! (-> self root) s0-0)
(set! (-> self root-override) s0-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *redring-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
(arcing-shot-setup arg0 arg1 arg2)
(set! (-> self flight-time) arg3)
(set! (-> self stall-time) arg4)
(set! (-> self rotation-offset) arg5)
(set! (-> self flight-time) (the-as int arg3))
(set! (-> self stall-time) (the-as int arg4))
(set! (-> self rotation-offset) (the-as int arg5))
(set!
(-> self part)
(create-launch-control (-> *part-group-id-table* 647) self)
@@ -1435,7 +1437,7 @@
:volume #x400
:fo-max 80
)
(-> self root trans)
(-> self root-override trans)
)
)
(go redshot-idle)
@@ -1492,13 +1494,13 @@
:trans
(behavior ()
(arcing-shot-calculate
(-> self root trans)
(-> self root-override trans)
(/
(the float (- (-> *display* game-frame-counter) (-> self state-time)))
(the float (-> self flight-time))
)
)
(spawn (-> self part) (-> self root trans))
(spawn (-> self part) (-> self root-override trans))
(when
(>=
(- (-> *display* game-frame-counter) (-> self state-time))
@@ -1555,9 +1557,9 @@
)
(set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w)))
(backup-collide-with-as s2-0)
(set! (-> self root) s2-0)
(set! (-> self root-override) s2-0)
)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *redring-sg* '())
(logior! (-> self draw status) 2)
(arcing-shot-setup arg0 arg1 arg2)
+3 -1
View File
@@ -3972,10 +3972,12 @@
;; definition for function robotboss-greenshot
;; INFO: Return type mismatch sound-id vs none.
;; WARN: Function may read a register that is not set: t2
;; Used lq/sq
(defbehavior
robotboss-greenshot robotboss
((arg0 vector) (arg1 basic) (arg2 basic) (arg3 symbol))
(local-vars (t2-0 none))
(+! (-> self children-spawned) 1)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(let ((s2-0 (new 'stack-no-clear 'vector)))
@@ -3993,7 +3995,7 @@
(the-as pointer #x70004000)
)
)
(run-now-in-process s1-1 greenshot-init-by-other gp-0 s2-0 arg1 arg2)
(run-now-in-process s1-1 greenshot-init-by-other gp-0 s2-0 arg1 arg2 t2-0)
(-> s1-1 ppointer)
)
)
+10 -9
View File
@@ -8,15 +8,16 @@
;; definition of type flutflut
(deftype flutflut (process-drawable)
((root-override collide-shape-moving :offset 112)
(extra-trans vector :inline :offset-assert 176)
(condition int32 :offset-assert 192)
(auto-get-off symbol :offset-assert 196)
(cell handle :offset-assert 200)
(path-data path-control 2 :offset-assert 208)
(path-target path-control :offset 208)
(path-flut path-control :offset 212)
(touch-time uint64 :offset-assert 216)
((parent-override (pointer target) :offset 12)
(root-override collide-shape-moving :offset 112)
(extra-trans vector :inline :offset-assert 176)
(condition int32 :offset-assert 192)
(auto-get-off symbol :offset-assert 196)
(cell handle :offset-assert 200)
(path-data path-control 2 :offset-assert 208)
(path-target path-control :offset 208)
(path-flut path-control :offset 212)
(touch-time uint64 :offset-assert 216)
)
:pack-me
:heap-base #x70
+4 -4
View File
@@ -2967,7 +2967,7 @@
(activate! (-> self control unknown-smush00) 1.0 120 210 0.3 1.0)
)
((= arg2 'lose)
(set! (-> self control unknown-float120) (the-as float arg2))
(set! (-> self control unknown-uint20) (the-as uint arg2))
arg2
)
(else
@@ -2980,7 +2980,7 @@
(set! (-> self control unknown-surface00) *empty-mods*)
(logior! (-> self state-flags) 16)
(set-zero! (-> self control unknown-smush00))
(set! (-> self control unknown-float120) (the-as float #f))
(set! (-> self control unknown-uint20) (the-as uint #f))
(none)
)
:exit
@@ -3097,7 +3097,7 @@
(set! (-> s5-1 frame-num) (ja-aframe 15.0 0))
)
(let ((s5-2 (new 'stack-no-clear 'vector)))
(until (-> self control unknown-float120)
(until (-> self control unknown-spoolanim00)
(let ((v1-42 (handle->process arg0)))
(when v1-42
(let ((a0-28 (-> self skel root-channel 0)))
@@ -3154,7 +3154,7 @@
(suspend)
)
)
(case (-> self control unknown-float120)
(case (-> self control unknown-spoolanim00)
(('lose)
(ja-channel-push! 1 30)
(let ((a0-38 (-> self skel root-channel 0)))
@@ -0,0 +1,251 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for function racer-collision-reaction
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defun
racer-collision-reaction
((arg0 control-info)
(arg1 collide-shape-intersect)
(arg2 vector)
(arg3 vector)
)
(local-vars
(sv-80 vector)
(sv-84 vector)
(sv-88 (inline-array vector))
(sv-96 int)
(sv-104 int)
)
(set! sv-80 (new-stack-vector0))
(set! sv-84 (new-stack-vector0))
(let ((v1-2 (new 'stack-no-clear 'inline-array 'vector 2)))
(dotimes (a0-1 2)
(set! (-> v1-2 a0-1 quad) (the-as uint128 0))
)
(set! sv-88 v1-2)
)
(set! sv-96 0)
(set! sv-104 0)
(set! (-> sv-88 0 quad) (-> arg3 quad))
(set! (-> sv-88 1 quad) (-> arg3 quad))
(let ((a1-3 (new 'stack-no-clear 'vector)))
(vector-float*! a1-3 (-> arg1 move-vec) (-> arg1 best-u))
(TODO-RENAME-28 arg0 a1-3)
)
(dummy-56 arg0 (-> arg1 best-tri pat))
(if (= (-> arg0 poly-pat mode) (pat-mode wall))
(set! sv-104 (logior sv-104 1))
)
(if (= (-> arg0 unknown-surface00 mode) 'air)
(set! sv-104 (logior sv-104 32))
)
(let ((v1-21 (new 'stack-no-clear 'vector)))
(set! (-> v1-21 quad) (-> arg1 best-from-prim prim-core world-sphere quad))
(vector-! sv-80 v1-21 (-> arg1 best-tri intersect))
)
(vector-normalize! sv-80 1.0)
(set! (-> arg0 coverage) (vector-dot sv-80 (-> arg1 best-tri normal)))
(when (< (-> arg0 coverage) 0.0)
(set! (-> arg0 coverage) 0.0)
(vector-flatten! sv-80 sv-80 (-> arg1 best-tri normal))
(vector-normalize! sv-80 1.0)
)
(if (< (-> arg0 coverage) 0.9999)
(set! sv-104 (logior sv-104 24))
)
(let ((v1-31 (-> sv-80 quad)))
(set! (-> sv-84 quad) v1-31)
)
(if (= (-> arg1 best-u) 0.0)
(TODO-RENAME-28 arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0))
)
(set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad))
(collide-shape-moving-angle-set! arg0 sv-84 (-> sv-88 0))
(if (< (-> arg0 poly-angle) -0.2)
(set! sv-96 (logior sv-96 16))
)
(let
((s3-1
(<
(fabs (-> arg0 surface-angle))
(-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle)
)
)
)
(if s3-1
(set! sv-104 (logior sv-104 2))
)
(when (zero? (logand (-> arg0 prev-status) 1))
(set!
(-> arg0 ground-impact-vel)
(- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal)))
)
(set! sv-96 (logior sv-96 2048))
(when (not s3-1)
(let ((f30-0 (- 1.0 (-> arg0 surf impact-fric))))
(when (< f30-0 1.0)
(let ((s2-1 (new-stack-vector0))
(f28-0 (vector-dot (-> arg0 dynam gravity-normal) (-> sv-88 0)))
)
0.0
(vector-!
s2-1
(-> sv-88 0)
(vector-float*! s2-1 (-> arg0 dynam gravity-normal) f28-0)
)
(let* ((f0-18 (vector-length s2-1))
(f1-6 f0-18)
)
(if (< f28-0 0.0)
(set! f28-0 (* f28-0 f30-0))
)
(vector+!
(-> sv-88 0)
(vector-float*! (-> sv-88 0) (-> arg0 dynam gravity-normal) f28-0)
(vector-float*! s2-1 s2-1 (/ f0-18 f1-6))
)
)
)
)
)
)
)
(set! sv-96 (logior sv-96 4))
(cond
((-> arg1 best-to-prim)
(set! sv-96 (logior sv-96 32))
(set! (-> arg0 unknown-vector72 quad) (-> arg1 best-tri intersect quad))
(set! (-> arg0 unknown-vector73 quad) (-> arg0 poly-normal quad))
(set!
(-> arg0 unknown-handle00)
(process->handle (-> arg1 best-to-prim cshape process))
)
)
((= (-> arg0 poly-pat material) (pat-material waterbottom))
)
(else
(set! sv-96 (logior sv-96 4096))
)
)
(if (and s3-1 (logtest? #x10000 (-> arg0 root-prim prim-core action)))
(set! s3-1 #f)
)
(cond
(s3-1
(set! sv-104 (logior sv-104 4))
(set! sv-96 (logior sv-96 8))
(set! (-> arg0 cur-pat mode) 1)
(set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad))
(set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad))
(set! (-> arg0 unknown-int60) (the-as uint (-> arg1 best-tri pat)))
(vector-reflect-flat-above! arg2 (-> sv-88 0) sv-84)
(cond
((not
(and
(>=
(-> arg1 best-from-prim local-sphere w)
(vector-dot
(-> arg0 ground-poly-normal)
(vector-!
(new 'stack-no-clear 'vector)
(-> arg1 best-tri intersect)
(-> arg0 ground-touch-point)
)
)
)
(and
(< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2))
(< (- (-> *display* base-frame-counter) (-> arg0 unknown-dword10)) 90)
(zero? (logand sv-104 32))
)
)
)
)
(else
(set! sv-104 (logior sv-104 256))
(set! sv-104 (logand -65 sv-104))
(let
((s3-3
(vector-cross!
(new 'stack-no-clear 'vector)
(-> arg0 poly-normal)
(-> arg0 ground-poly-normal)
)
)
)
(vector-normalize! s3-3 1.0)
(vector-float*! arg2 s3-3 (vector-dot (-> sv-88 0) s3-3))
)
(vector+! arg2 arg2 (-> arg0 poly-normal))
)
)
(let*
((s2-2
(vector-normalize-copy! (new 'stack-no-clear 'vector) (-> sv-88 0) 1.0)
)
(s3-4 (new-stack-vector0))
(f30-1 (vector-dot s2-2 arg2))
)
0.0
(vector-! s3-4 arg2 (vector-float*! s3-4 s2-2 f30-1))
(let* ((f1-11 (vector-length s3-4))
(f0-27 f1-11)
(f1-12 (* 0.9 f1-11))
)
(vector+!
arg2
(vector-float*! arg2 s2-2 f30-1)
(vector-float*! s3-4 s3-4 (/ f1-12 f0-27))
)
)
)
)
(else
(set! sv-96 (logior sv-96 1))
(set! (-> arg0 cur-pat mode) 0)
(if (and (= (-> arg1 best-from-prim prim-id) 6) (zero? (logand sv-104 7)))
(set! (-> arg0 local-normal quad) (-> sv-84 quad))
)
(vector-reflect-flat! arg2 (-> sv-88 0) sv-84)
(dotimes (v1-142 16)
(vector+! arg2 arg2 (-> arg0 poly-normal))
)
(set! sv-96 (logior sv-96 2))
(set! (-> arg0 ground-touch-point w) 0.0)
(when (zero? (logand sv-104 15))
(set! sv-96 (logior sv-96 2))
(set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad))
(set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad))
(set!
(-> arg0 unknown-float60)
(vector-dot sv-84 (-> arg0 dynam gravity-normal))
)
(set! (-> arg0 unknown-dword10) (-> *display* base-frame-counter))
(set! (-> arg0 ground-pat) (-> arg0 poly-pat))
(set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad))
(set! sv-104 (logior sv-104 2048))
(if (= (-> arg0 poly-pat material) (pat-material waterbottom))
(set! sv-96 (logior sv-96 1024))
)
)
)
)
)
(logior! (-> arg0 status) sv-96)
(set! (-> arg0 reaction-flag) (the-as uint sv-104))
(update!
(-> arg0 history-data (-> arg0 unknown-halfword00))
arg0
(-> arg1 best-tri intersect)
(-> sv-88 1)
arg2
)
(set!
(-> arg0 unknown-halfword00)
(logand (+ (-> arg0 unknown-halfword00) 1) 127)
)
sv-96
(none)
)
@@ -63,10 +63,10 @@
)
(target-attacked
arg2
(-> arg3 param 1)
(the-as uint arg0)
(the-as attack-info (-> arg3 param 1))
arg0
(the-as process (-> arg3 param 0))
(the-as (state target) target-racing-hit)
target-racing-hit
)
)
)
@@ -269,13 +269,7 @@
)
)
(set! (-> self control surf) *race-track-surface*)
(set!
(-> self control reaction)
(the-as
(function collide-shape-moving collide-shape-intersect vector vector none)
racer-collision-reaction
)
)
(set! (-> self control reaction) racer-collision-reaction)
(vector-reset! (-> self racer rot))
(set! (-> self racer rot y) (y-angle (-> self control)))
(target-collide-set! 'racer 0.0)
@@ -1573,10 +1567,7 @@
;; failed to figure out what this is:
(defstate target-racing-hit (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:enter
(behavior ((arg0 handle) (arg1 attack-info))
(let ((v1-0 (-> self attack-info)))
@@ -2219,10 +2210,7 @@
;; failed to figure out what this is:
(defstate target-racing-get-on (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:exit
(-> target-racing-start exit)
:code
@@ -2247,8 +2235,8 @@
(-> self control unknown-quaternion00)
)
(set!
(-> self control unknown-float120)
(-> self control unknown-vector11 y)
(-> self control unknown-uint20)
(the-as uint (-> self control unknown-vector11 y))
)
(let* ((s3-0 (handle->process arg0))
(s4-1
@@ -2271,7 +2259,7 @@
)
(set! (-> self racer bike-scale quad) (-> s4-1 root-override scale quad))
(set!
(-> self control unknown-int20)
(-> self control unknown-int21)
(the-as int (-> self racer bike-trans y))
)
)
@@ -2536,7 +2524,7 @@
(set!
(-> self control unknown-vector11 y)
(lerp
(-> self control unknown-float120)
(the-as float (-> self control unknown-uint20))
(-> self racer cushion-base)
f30-1
)
@@ -2544,8 +2532,8 @@
(set!
(-> self racer bike-trans y)
(lerp
(-> self control unknown-float121)
(+ 4096.0 (-> self control unknown-float121))
(the-as float (-> self control unknown-uint30))
(+ 4096.0 (the-as float (-> self control unknown-uint30)))
f30-1
)
)
@@ -2559,10 +2547,7 @@
;; failed to figure out what this is:
(defstate target-racing-get-off (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:exit
(-> target-racing-start exit)
:code
@@ -2659,10 +2644,7 @@
;; failed to figure out what this is:
(defstate target-racing-get-off-jump (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-generic-event-handler
)
target-generic-event-handler
:exit
(-> target-racing-start exit)
:code
@@ -2691,8 +2673,8 @@
(-> self control unknown-quaternion00)
)
(set!
(-> self control unknown-float120)
(-> self control unknown-vector11 y)
(-> self control unknown-uint20)
(the-as uint (-> self control unknown-vector11 y))
)
(let* ((s2-0 (handle->process arg0))
(s3-0
@@ -2719,7 +2701,7 @@
)
(set! (-> self racer bike-scale quad) (-> s3-0 root-override scale quad))
(set!
(-> self control unknown-int20)
(-> self control unknown-int21)
(the-as int (-> self racer bike-trans y))
)
)
@@ -2927,7 +2909,11 @@
)
(set!
(-> self control unknown-vector11 y)
(lerp (-> self control unknown-float120) 6144.0 (fmin 1.0 (* 2.0 f30-0)))
(lerp
(the-as float (-> self control unknown-uint20))
6144.0
(fmin 1.0 (* 2.0 f30-0))
)
)
)
(vector+!
@@ -2949,10 +2935,7 @@
;; failed to figure out what this is:
(defstate target-racing-get-off-hit-ground (target)
:event
(the-as
(function process int symbol event-message-block object :behavior target)
target-standard-event-handler
)
target-standard-event-handler
:enter
(-> target-hit-ground enter)
:trans
@@ -3130,7 +3113,7 @@
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore))
(set! (-> self control unknown-float120) (the-as float #f))
(set! (-> self control unknown-uint20) (the-as uint #f))
)
((-> target-racing-grab event) arg0 arg1 arg2 arg3)
)
@@ -3140,7 +3123,7 @@
(behavior ()
(set!
(-> self control unknown-vector11 y)
(-> self control unknown-float120)
(the-as float (-> self control unknown-uint20))
)
(set!
(-> self control unknown-vector12 y)
@@ -3155,8 +3138,8 @@
:code
(behavior ((arg0 handle))
(set!
(-> self control unknown-float120)
(-> self control unknown-vector11 y)
(-> self control unknown-uint20)
(the-as uint (-> self control unknown-vector11 y))
)
(set! (-> self control unknown-vector11 y) 0.0)
(send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim)
+1 -1
View File
@@ -72,7 +72,7 @@
target-jump
(-> *TARGET-bank* duck-jump-height-min)
(-> *TARGET-bank* duck-jump-height-max)
#f
(the-as surface #f)
)
)
(else
+5 -8
View File
@@ -887,15 +887,12 @@ swamp-bat-slave-event-handler
(deactivate self)
)
(swamp-bat-update-path)
(let ((s5-0 (method-of-object (-> self vol) dummy-10)))
(target-pos 5)
(if
(or
(s5-0)
(not (swamp-bat-check-slave-paths-match? (-> self path-select)))
)
(go swamp-bat-launch-slaves)
(if
(or
(dummy-10 (-> self vol) (target-pos 5))
(not (swamp-bat-check-slave-paths-match? (-> self path-select)))
)
(go swamp-bat-launch-slaves)
)
)
(let ((gp-1 (new 'static 'matrix)))
+1 -1
View File
@@ -349,6 +349,6 @@ TEST(GoosReader, TextDb) {
.as_pair()
->cdr.as_pair()
->car;
std::string expected = "test/test_data/test_reader_file0.gc, line: 5\n(1 2 3 4)\n ^\n";
std::string expected = "test/test_data/test_reader_file0.gc:5\n(1 2 3 4)\n ^\n";
EXPECT_EQ(expected, reader.db.get_info_for(result));
}