d/jak2: finish vol | cam-layout | menu | default-menu and start working on nav code (#1867)

I also added font-color names since this PR adds quite a few:

![image](https://user-images.githubusercontent.com/13153231/189508209-c8849672-fac5-47cb-9652-f1d4648f0af8.png)
This commit is contained in:
Tyler Wilding
2022-09-11 13:42:46 -04:00
committed by GitHub
parent 813611e0b2
commit 017070525a
76 changed files with 23936 additions and 6517 deletions
+1 -1
View File
@@ -55,7 +55,7 @@ tasks:
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
cmds:
- "{{.GK_BIN_RELEASE_DIR}}/gk -fakeiso -debug -v"
- "{{.GK_BIN_RELEASE_DIR}}/gk -fakeiso -debug -{{.GAME}} -v"
# DEVELOPMENT
repl:
desc: "Start the REPL"
File diff suppressed because it is too large Load Diff
@@ -220,7 +220,7 @@
[189, "(function none)"],
[190, "(function none)"],
[191, "(function symbol debug-menu-msg float float float)"],
[193, "(function symbol int object)"],
[193, "(function symbol debug-menu-msg object)"],
[198, "(function debug-menu debug-menu symbol)"],
[199, "(function debug-menu debug-menu symbol)"],
[200, "(function debug-menu debug-menu symbol)"],
+21 -3
View File
@@ -58,7 +58,6 @@
"(method 224 bot)",
"(method 77 rapid-gunner)",
// until loop without nop:
"cam-layout-entity-volume-info-create",
"process-drawable-shock-skel-effect",
"target-history-print",
"display-list-control",
@@ -196,6 +195,13 @@
"debug-menu-context-make-default-menus",
"debug-menu-make-task-menu",
"(method 19 gui-control)",
// menu
"debug-menu-rebuild",
"debug-menu-find-from-template",
"debug-menu-render",
"debug-menu-context-select-next-or-prev-item",
"debug-menu-context-select-new-item",
"debug-menu-send-msg",
// airlock
"(method 24 com-airlock)",
"(method 19 gui-control)",
@@ -241,7 +247,17 @@
"(method 11 perf-stat)": [0],
"(method 22 gui-control)": [117, 121, 127, 128, 129, 139],
"bsp-camera-asm": [1, 2, 3, 4, 6, 7],
"level-remap-texture": [2, 3, 4, 5, 6]
"level-remap-texture": [2, 3, 4, 5, 6],
"(method 27 nav-mesh)": [0, 1, 2, 4, 5],
"(method 31 nav-mesh)": [0, 1, 2, 7, 8, 9, 11, 12, 13, 15],
"(method 45 nav-mesh)": [1, 4, 5, 8],
"(method 46 nav-mesh)": [1, 2, 3, 5],
"(method 32 nav-mesh)": [0, 1, 2, 4],
"(method 33 nav-mesh)": [0, 1, 2, 4],
"(method 42 nav-mesh)": [1, 2, 3, 7],
"point-poly-distance-min": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"(method 34 nav-mesh)": [1, 2, 3, 7],
"(method 35 nav-mesh)": [2, 4]
},
// Sometimes the game might use format strings that are fetched dynamically,
@@ -255,7 +271,9 @@
"collide-do-primitives",
"moving-sphere-triangle-intersect",
"calc-animation-from-spr",
"draw-string-asm", "draw-string", "get-string-length",
"draw-string-asm",
"draw-string",
"get-string-length",
"init-boundary-regs"
],
+19 -1
View File
@@ -166,5 +166,23 @@
["L479", "vector"],
["L474", "vector"]
],
"merc-vu1": [["L1", "vu-function"]]
"merc-vu1": [["L1", "vu-function"]],
"cam-layout": [
["L784", "vector4w"], // needed or it guesses pointer and hits an assert
["L791", "vector4w"],
["L793", "vector4w"],
["L795", "vector4w"],
["L797", "vector4w"],
["L799", "vector4w"],
["L801", "vector4w"],
["L888", "(pointer uint64)", 1],
["L891", "(pointer uint64)", 1],
["L892", "(pointer uint64)", 1],
["L893", "(pointer uint64)", 1],
["L894", "(pointer uint64)", 1],
["L895", "(pointer uint64)", 1],
["L896", "(pointer uint64)", 1],
["L897", "(pointer uint64)", 1]
],
"nav-mesh": [["L347", "(inline-array vector)", 2]]
}
+95 -60
View File
@@ -227,9 +227,7 @@
[112, "vector"],
[128, "vector"]
],
"add-debug-sphere-with-transform": [
[16, "vector"]
],
"add-debug-sphere-with-transform": [[16, "vector"]],
"add-debug-line-sphere": [
[48, "matrix"],
[112, "matrix"],
@@ -244,15 +242,9 @@
[16, "vector"],
[32, "vector"]
],
"add-debug-vector": [
[16, "vector"]
],
"add-debug-quaternion": [
[16, "matrix"]
],
"add-debug-yrot-vector": [
[16, "vector"]
],
"add-debug-vector": [[16, "vector"]],
"add-debug-quaternion": [[16, "matrix"]],
"add-debug-yrot-vector": [[16, "vector"]],
"add-debug-arc": [
[16, "vector"],
[32, "vector"]
@@ -261,15 +253,9 @@
[16, "vector"],
[32, "vector"]
],
"add-debug-points": [
[16, "vector"]
],
"add-debug-light": [
[16, "vector"]
],
"add-debug-cursor": [
[16, "vector"]
],
"add-debug-points": [[16, "vector"]],
"add-debug-light": [[16, "vector"]],
"add-debug-cursor": [[16, "vector"]],
"dma-timeout-cam": [
[16, "vector"],
[32, "matrix"]
@@ -289,7 +275,6 @@
[48, "vector"],
[64, "vector"]
],
"matrix-3x3-triple-transpose-product": [[16, ["inline-array", "matrix", 3]]],
"(method 14 rigid-body)": [[16, "quaternion"]],
"(method 19 rigid-body)": [
@@ -538,36 +523,20 @@
[32, "vector"],
[48, "vector"]
],
"build-conversions": [
[16, "vector"]
],
"warp-vector-into-surface!": [
[16, "matrix"]
],
"vector<-pad-in-matrix!": [
[16, "vector"]
],
"target-no-ja-move-post": [
[16, "overlaps-others-params"]
],
"do-target-gspot": [
[16, "collide-query"]
],
"target-no-move-post": [
[16, "overlaps-others-params"]
],
"build-conversions": [[16, "vector"]],
"warp-vector-into-surface!": [[16, "matrix"]],
"vector<-pad-in-matrix!": [[16, "vector"]],
"target-no-ja-move-post": [[16, "overlaps-others-params"]],
"do-target-gspot": [[16, "collide-query"]],
"target-no-move-post": [[16, "overlaps-others-params"]],
"add-gravity": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"]
],
"target-no-stick-post": [
[32, "collide-query"]
],
"target-swim-post": [
[32, "collide-query"]
],
"target-no-stick-post": [[32, "collide-query"]],
"target-swim-post": [[32, "collide-query"]],
"target-real-post": [
[16, "vector"],
[32, "vector"],
@@ -597,9 +566,7 @@
[16, "event-message-block"],
[96, "bone"]
],
"bend-gravity": [
[32, "vector"]
],
"bend-gravity": [[32, "vector"]],
"wall-hide?": [
[16, "collide-query"],
[560, "vector"],
@@ -622,12 +589,8 @@
[96, "vector"],
[112, "vector"]
],
"do-rotations2": [
[16, "vector"]
],
"tobot-init": [
[16, "event-message-block"]
],
"do-rotations2": [[16, "vector"]],
"tobot-init": [[16, "event-message-block"]],
"target-update-ik": [
[16, "collide-query"],
[560, "vector"],
@@ -648,9 +611,7 @@
[96, "vector"],
[112, "vector"]
],
"draw-history": [
[16, "history-iterator"]
],
"draw-history": [[16, "history-iterator"]],
"target-collision-reaction": [
[16, "vector"],
[32, "vector"],
@@ -667,8 +628,82 @@
[128, "vector"],
[144, "vector"]
],
"target-move-dist": [
[16, "vector"]
"target-move-dist": [[16, "vector"]],
"cam-layout-entity-volume-info-create": [
// needed to prevent hang
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"],
[112, "vector"],
[128, "vector"],
[144, "vector"]
],
"cam-layout-entity-info": [
// needed to prevent a hang
[16, "matrix"],
[80, "vector"],
[96, "vector"],
[112, "vector"],
[128, "vector"],
[144, "curve"],
[176, "vector"],
[192, "vector"],
[208, "vector"],
[224, "curve"],
[256, "vector"],
[272, "vector"],
[288, "vector"],
[304, "curve"],
[336, "vector"],
[352, "vector"],
[368, "interp-test-info"],
[432, "vector"]
],
"clmf-pos-rot": [
// needed to prevent a hang
[16, "vector"],
[32, "vector"],
[48, "matrix"],
[112, "matrix"],
[176, "vector"]
],
"(method 9 plane-volume)": [
// needed to prevent a hang
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"],
[112, "vector"],
[128, "vector"]
],
"(method 31 entity-actor)": [[16, "nav-find-poly-parms"]],
"(method 32 entity-actor)": [[32, "nav-find-poly-parms"]],
"(method 36 nav-mesh)": [[16, "nav-route-portal"]],
"(method 13 nav-engine)": [[16, "nav-vertex"]],
"(method 12 nav-mesh)": [[16, "nav-vertex"]],
"(method 44 nav-mesh)": [[32, "nav-poly"]],
"(method 15 nav-mesh)": [[16, "vector"]],
"(method 40 nav-mesh)": [
[16, "vector"],
[32, "vector"]
],
"find-nearest-nav-mesh": [[16, "nav-find-poly-parms"]],
"(method 10 nav-mesh)": [[32, "nav-find-poly-parms"]],
"(method 34 nav-mesh)": [[16, "nav-poly"]],
"(method 9 nav-mesh)": [[16, "vector"]],
"debug-nav-validate-current-poly": [[16, "vector"]],
"(method 11 nav-control)": [[16, "nav-find-poly-parms"]],
"(method 15 nav-control)": [[16, "nav-find-poly-parms"]],
"(method 16 nav-control)": [[16, "nav-find-poly-parms"]],
"(method 46 nav-control)": [[16, "find-nav-sphere-ids-params"]],
"circle-tangent-directions": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(trans close com-airlock)": [[16, "script-context"]],
"traj3d-calc-initial-velocity-using-tilt": [[16, "traj2d-params"]],
+117 -57
View File
@@ -929,9 +929,7 @@
"joint-mod-joint-set-world-handler": [[[6, 197], "s5", "joint-mod"]],
"joint-mod-joint-set*-handler": [[[2, 39], "s5", "joint-mod"]],
"joint-mod-joint-set*-world-handler": [[[4, 53], "s5", "joint-mod"]],
"joint-mod-debug-draw": [
[8, "a3", "float"]
],
"joint-mod-debug-draw": [[8, "a3", "float"]],
"glst-find-node-by-name": [
[6, "s5", "glst-named-node"],
[7, "v1", "glst-named-node"]
@@ -1437,7 +1435,6 @@
[35, "s3", "pointer"]
],
"sp-process-particle-system": [[14, "a1", "vector"]],
// debug
"add-debug-point": [
[[35, 39], "a3", "dma-packet"],
@@ -1458,9 +1455,7 @@
[[107, 267], "a0", "(pointer uint64)"],
[[268, 273], "a0", "dma-packet"]
],
"internal-draw-debug-text-3d": [
[[53, 56], "v1", "dma-packet"]
],
"internal-draw-debug-text-3d": [[[53, 56], "v1", "dma-packet"]],
"add-debug-flat-triangle": [
[[70, 76], "a3", "dma-packet"],
[[79, 85], "a3", "gs-gif-tag"],
@@ -1481,38 +1476,22 @@
[[17, 20], "t0", "float"],
[[22, 29], "t0", "float"]
],
"add-debug-cspace": [
[[4, 6], "a3", "float"]
],
"add-debug-points": [
[[52, 57], "a3", "rgba"]
],
"debug-percent-bar": [
[[44, 49], "v1", "dma-packet"]
],
"debug-pad-display": [
[[72, 77], "v1", "dma-packet"]
],
"add-debug-light": [
[[17, 20], "t0", "float"]
],
"drawable-frag-count": [
[[14, 20], "s5", "drawable-group"]
],
"add-debug-cursor": [
[[35, 40], "v1", "dma-packet"]
],
"add-debug-cspace": [[[4, 6], "a3", "float"]],
"add-debug-points": [[[52, 57], "a3", "rgba"]],
"debug-percent-bar": [[[44, 49], "v1", "dma-packet"]],
"debug-pad-display": [[[72, 77], "v1", "dma-packet"]],
"add-debug-light": [[[17, 20], "t0", "float"]],
"drawable-frag-count": [[[14, 20], "s5", "drawable-group"]],
"add-debug-cursor": [[[35, 40], "v1", "dma-packet"]],
"add-boundary-shader": [
[[6, 12], "a0", "gs-gif-tag"],
[[14, 31], "s5", "adgif-shader"]
],
// debug-sphere
"add-debug-sphere-from-table": [
[[38, 41], "v1", "vector"],
[[55, 59], "s0", "(inline-array vector)"]
],
"drawable-load": [[[25, 28], "s5", "drawable"]],
"art-load": [[[13, 16], "s5", "art"]],
"art-group-load-check": [[[43, 53], "s3", "art-group"]],
@@ -1553,32 +1532,22 @@
[14, "v1", "gui-connection"]
],
"(method 10 gui-control)": [[[4, 32], "s3", "gui-connection"]],
"(method 10 bsp-header)": [
[49, "a3", "(pointer uint128)"]
],
"(method 10 bsp-header)": [[49, "a3", "(pointer uint128)"]],
"bsp-camera-asm": [
[26, "v1", "pointer"],
[[26, 63], "t1", "bsp-node"],
[43, "t3", "uint"]
],
"ja-post": [
[[42, 46], "a0", "collide-shape"]
],
"ja-post": [[[42, 46], "a0", "collide-shape"]],
"display-frame-start": [
[4, "v1", "vif-bank"],
[9, "a0", "vif-bank"]
],
"display-frame-finish": [
[[178, 185], "a0", "dma-packet"],
[[193, 194], "a0", "dma-packet"],
[194, "a0", "(pointer int64)"]
],
"default-end-buffer": [
[9, "v1", "dma-bucket"],
[[20, 28], "t1", "dma-packet"],
@@ -1604,7 +1573,6 @@
[[79, 82], "a1", "dma-packet"],
[85, "a1", "dma-bucket"]
],
"default-init-buffer": [
[[20, 28], "t1", "dma-packet"],
[[30, 36], "t1", "gs-gif-tag"],
@@ -1779,9 +1747,7 @@
[23, "v1", "fact-info-target"],
[29, "v1", "fact-info-target"]
],
"target-real-post": [
[97, "f28", "float"]
],
"target-real-post": [[97, "f28", "float"]],
"target-compute-pole": [
[12, "s2", "swingpole"],
[20, "s2", "swingpole"],
@@ -1791,20 +1757,114 @@
[99, "s2", "swingpole"],
[122, "s2", "swingpole"]
],
"tobot-start": [
[26, "s5", "target"]
"tobot-start": [[26, "s5", "target"]],
"(method 10 target)": [[28, "t9", "(function target none)"]],
"target-compute-edge": [[48, "a0", "process-drawable"]],
"target-compute-edge-rider": [[48, "a0", "process-drawable"]],
"target-update-ik": [[288, "f30", "float"]],
"cam-layout-entity-volume-info-create": [
["_stack_", 16, "res-tag"],
[16, "v0", "(inline-array vector)"],
[223, "v1", "float"],
[254, "v1", "float"],
[258, "v1", "float"],
[282, "v1", "float"],
[325, "f0", "float"]
],
"(method 10 target)": [
[28, "t9", "(function target none)"]
"cam-layout-entity-info": [
// can't just cast the return value from the res-tag retrieval
[202, "v1", "vector"]
],
"target-compute-edge": [
[48, "a0", "process-drawable"]
"clmf-next-entity": [[38, "a0", "connection"]],
"cam-layout-save-cam-rot": [[13, "v0", "vector"]],
"cam-layout-save-cam-trans": [
[29, "v0", "vector"],
[40, "v0", "vector"],
// super weird handling of vectors
[93, "s5", "symbol"],
[95, "s2", "symbol"],
[94, "s2", "symbol"]
],
"target-compute-edge-rider": [
[48, "a0", "process-drawable"]
"cam-layout-save-pivot": [
[38, "v0", "vector"],
[13, "v0", "vector"]
],
"target-update-ik": [
[288, "f30", "float"]
"cam-layout-save-align": [
[38, "v0", "vector"],
[13, "v0", "vector"]
],
"cam-layout-save-interesting": [
[38, "v0", "vector"],
[13, "v0", "vector"]
],
"cam-layout-save-splineoffset": [[37, "v0", "vector"]],
"cam-layout-save-campointsoffset": [[12, "v0", "vector"]],
"clmf-save-all": [[18, "v1", "connection"]],
"cam-layout-do-action": [[99, "s5", "(function object symbol symbol)"]],
"cam-layout-function-call": [[15, "gp", "(function string int basic none)"]],
"cam-layout-do-menu": [
[[280, 363], "s4", "clm-list"],
[374, "v1", "clm-item"],
[[136, 182], "s3", "clm-list"],
[209, "a0", "clm-item"],
[219, "v1", "clm-item"],
[234, "s3", "clm-item"],
[239, "v1", "clm-item"],
[244, "s3", "clm-item"]
],
"cam-layout-init": [[10, "v1", "connection"]],
"cam-layout-print": [[[21, 24], "v1", "dma-packet"]],
"clmf-pos-rot": [
[68, "a1", "res-tag"],
[139, "v1", "res-tag"],
[82, "v0", "vector"]
],
"clmf-cam-float-adjust": [[53, "v1", "res-tag"]],
"(method 9 plane-volume)": [
[185, "v1", "float"],
[216, "v1", "float"],
[241, "v1", "float"],
[281, "f0", "float"],
[220, "v1", "float"]
],
"(method 45 nav-mesh)": [[15, "v1", "entity-nav-mesh"]],
"(method 13 nav-engine)": [
[[53, 65], "s4", "nav-mesh"],
[[38, 50], "s3", "nav-mesh"]
],
"(method 9 nav-mesh)": [[[81, 134], "s4", "nav-poly"]],
"(method 37 nav-mesh)": [[[4, 18], "a1", "(inline-array vector)"]],
"debug-menu-item-var-update-display-str": [
[[44, 49], "v1", "int"],
[[61, 69], "v1", "int"]
],
"debug-menu-item-var-make-float": [[31, "v0", "int"]],
"debug-menu-item-get-max-width": [[[18, 35], "a0", "debug-menu-item-var"]],
"debug-menu-find-from-template": [
[10, "s4", "debug-menu-item"],
[18, "s4", "debug-menu-item-submenu"],
[3, "s5", "debug-menu"]
],
"debug-menu-item-var-joypad-handler": [
[206, "a1", "int"],
[207, "v1", "int"]
],
"debug-menu-rebuild": [[7, "a0", "debug-menu-item"]],
"debug-menu-render": [
[[45, 49], "v1", "dma-packet"],
[[108, 111], "v1", "dma-packet"]
],
"debug-menu-item-submenu-render": [[[39, 44], "v1", "dma-packet"]],
"debug-menu-item-flag-render": [[[44, 49], "v1", "dma-packet"]],
"debug-menu-item-function-render": [[[46, 51], "v1", "dma-packet"]],
"debug-menu-item-var-render": [[[94, 98], "v1", "dma-packet"]],
"debug-menu-send-msg": [
[[3, 14], "s2", "debug-menu-item"],
[[14, 21], "s2", "debug-menu-item-submenu"]
],
"(anon-function 86 default-menu)": [
// TODO - should not be required
[9, "a0", "state-flags"]
],
"(anon-function 2 find-nearest)": [
[28, "s3", "collide-shape"],
@@ -1865,7 +1925,7 @@
[582, "a0", "editable"],
[611, "a0", "editable"]
],
"(event idle editable-player)": [
[351, "s4", "editable-light"],
[409, "s4", "editable-light"],
+58 -13
View File
@@ -348,7 +348,15 @@
}
},
"add-debug-line": {
"args": ["enable", "bucket", "start", "end", "start-color", "mode", "end-color"],
"args": [
"enable",
"bucket",
"start",
"end",
"start-color",
"mode",
"end-color"
],
"vars": {
"v1-2": "line"
}
@@ -476,7 +484,16 @@
}
},
"add-debug-arc": {
"args": ["enable", "bucket", "position", "start-angle", "end-angle", "radius", "color", "orientation"],
"args": [
"enable",
"bucket",
"position",
"start-angle",
"end-angle",
"radius",
"color",
"orientation"
],
"vars": {
"f30-0": "angle",
"sv-80": "i",
@@ -485,7 +502,15 @@
}
},
"add-debug-curve": {
"args": ["enable", "bucket", "cverts", "num-cverts", "knots", "num-knots", "color"],
"args": [
"enable",
"bucket",
"cverts",
"num-cverts",
"knots",
"num-knots",
"color"
],
"vars": {
"sv-80": "i",
"s0-0": "p0",
@@ -497,14 +522,31 @@
"args": ["enable", "bucket", "curve", "color", "arg4"]
},
"add-debug-points": {
"args": ["enable", "bucket", "points", "num-points", "color", "y-override", "highlight"],
"args": [
"enable",
"bucket",
"points",
"num-points",
"color",
"y-override",
"highlight"
],
"vars": {
"s0-0": "i",
"sv-96": "position"
}
},
"debug-percent-bar": {
"args": ["enable", "bucket", "x", "y", "percentage", "color", "width", "height"],
"args": [
"enable",
"bucket",
"x",
"y",
"percentage",
"color",
"width",
"height"
],
"vars": {
"s0-0": "buf",
"s5-0": "tag-start",
@@ -648,16 +690,16 @@
}
},
"display-sync": {
"arg0":["disp"],
"arg0": ["disp"],
"vars": {
"s4-0" : "just-rendered-frame",
"a1-1" : "current-time",
"s5-0" : "just-rendered-frame-start-time",
"a0-3" : "prev-vblank-time-1",
"v1-6" : "prev-vblank-time-2",
"s4-0": "just-rendered-frame",
"a1-1": "current-time",
"s5-0": "just-rendered-frame-start-time",
"a0-3": "prev-vblank-time-1",
"v1-6": "prev-vblank-time-2",
"f28-0": "ticks-per-frame-f",
"f1-0" : "frame-duration",
"f0-2" : "frame-time-ratio",
"f1-0": "frame-duration",
"f0-2": "frame-time-ratio",
"f26-0": "vysnc-progress",
"f30-0": "last-dog",
"f30-1": "next-dog",
@@ -693,5 +735,8 @@
"s4-0": ["geo", "merc-fragment"],
"s5-0": ["ctrl", "merc-fragment-control"]
}
},
"add-nav-sphere": {
"args": ["nav", "sphere", "max-spheres"]
}
}
+43 -6
View File
@@ -436,9 +436,9 @@ goos::Object decomp_ref_to_inline_array_guess_size(
// verify the stride matches the type system
auto elt_type_info = ts.lookup_type(array_elt_type);
int ye = align(elt_type_info->get_size_in_memory(),
elt_type_info->get_inline_array_stride_alignment());
ASSERT(stride == ye);
int elt_size = align(elt_type_info->get_size_in_memory(),
elt_type_info->get_inline_array_stride_alignment());
ASSERT(stride == elt_size);
// the input is the location of the data field.
// we expect that to be a label:
@@ -573,6 +573,29 @@ goos::Object nav_mesh_poly_arr_decompile(const std::vector<LinkedWord>& words,
file, TypeSpec("nav-poly"), 8);
}
goos::Object nav_mesh_poly_arr_jak2_decompile(const std::vector<LinkedWord>& words,
const std::vector<DecompilerLabel>& labels,
int my_seg,
int field_location,
const TypeSystem& ts,
const std::vector<std::vector<LinkedWord>>& all_words,
const LinkedObjectFile* file) {
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts, all_words,
file, TypeSpec("nav-poly"), 64);
}
goos::Object nav_mesh_nav_control_arr_decompile(
const std::vector<LinkedWord>& words,
const std::vector<DecompilerLabel>& labels,
int my_seg,
int field_location,
const TypeSystem& ts,
const std::vector<std::vector<LinkedWord>>& all_words,
const LinkedObjectFile* file) {
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts, all_words,
file, TypeSpec("nav-control"), 288);
}
goos::Object nav_mesh_route_arr_decompile(const std::vector<LinkedWord>& words,
const std::vector<DecompilerLabel>& labels,
int my_seg,
@@ -958,6 +981,7 @@ goos::Object decompile_structure(const TypeSpec& type,
fmt::format("Dynamic value field {} in static data type {} not yet implemented",
field.name(), actual_type.print()));
} else {
// TODO - this is getting a little unwieldly -- refactor this at some point
if (field.name() == "data" && type.print() == "ocean-near-indices") {
// first, get the label:
field_defs_out.emplace_back(
@@ -971,15 +995,28 @@ goos::Object decompile_structure(const TypeSpec& type,
field_defs_out.emplace_back(
field.name(), sp_field_init_spec_decompile(obj_words, labels, label.target_segment,
field_start, ts, words, file));
} else if (field.name() == "vertex" && type.print() == "nav-mesh") {
} else if (field.name() == "vertex" && type.print() == "nav-mesh" &&
file->version == GameVersion::Jak1) {
field_defs_out.emplace_back(
field.name(), nav_mesh_vertex_arr_decompile(obj_words, labels, label.target_segment,
field_start, ts, words, file));
} else if (field.name() == "poly" && type.print() == "nav-mesh") {
} else if (field.name() == "poly" && type.print() == "nav-mesh" &&
file->version == GameVersion::Jak1) {
field_defs_out.emplace_back(
field.name(), nav_mesh_poly_arr_decompile(obj_words, labels, label.target_segment,
field_start, ts, words, file));
} else if (field.name() == "route" && type.print() == "nav-mesh") {
} else if (field.name() == "poly-array" && type.print() == "nav-mesh" &&
file->version == GameVersion::Jak2) {
field_defs_out.emplace_back(field.name(), nav_mesh_poly_arr_jak2_decompile(
obj_words, labels, label.target_segment,
field_start, ts, words, file));
} else if (field.name() == "nav-control-array" && type.print() == "nav-mesh" &&
file->version == GameVersion::Jak2) {
field_defs_out.emplace_back(field.name(), nav_mesh_nav_control_arr_decompile(
obj_words, labels, label.target_segment,
field_start, ts, words, file));
} else if (field.name() == "route" && type.print() == "nav-mesh" &&
file->version == GameVersion::Jak1) {
field_defs_out.emplace_back(
field.name(), nav_mesh_route_arr_decompile(obj_words, labels, label.target_segment,
field_start, ts, words, file));
+4
View File
@@ -7,6 +7,10 @@
;; todo: some types, method names.
;; NOTE - for default-menu
(define-extern traffic-start (function none))
(define-extern traffic-kill (function none))
;; DECOMP BEGINS
(define *traffic-manager* (the-as process #f))
@@ -18,6 +18,14 @@
;; NOTE - for cam-states
(define-extern cam-collision-record-save (function vector vector int symbol camera-slave none))
;; NOTE - for cam-layout
(define-extern camera-line-setup (function vector4w none))
(define-extern camera-line-draw (function vector vector none))
(define-extern camera-cross (function vector vector vector vector4w meters none))
(define-extern camera-fov-frame (function matrix vector float float float vector4w symbol))
(define-extern cam-slave-options->string (function cam-slave-options object string))
(define-extern cam-index-options->string (function cam-index-options object string))
;; DECOMP BEGINS
(declare-file (debug))
+10 -7
View File
@@ -200,13 +200,12 @@
:nreg #x4
)
)
(set! (-> (the-as gs-gif-tag a3-2) regs)
(new 'static 'gif-tag-regs
:regs0 (gif-reg-id rgbaq)
:regs1 (gif-reg-id xyzf2)
:regs2 (gif-reg-id rgbaq)
:regs3 (gif-reg-id xyzf2)
)
(set! (-> (the-as gs-gif-tag a3-2) regs) (new 'static 'gif-tag-regs
:regs0 (gif-reg-id rgbaq)
:regs1 (gif-reg-id xyzf2)
:regs2 (gif-reg-id rgbaq)
:regs3 (gif-reg-id xyzf2)
)
)
(set! (-> a1-1 base) (&+ (the-as pointer a3-2) 16))
)
@@ -1636,6 +1635,10 @@
)
;; WARN: Return type mismatch int vs none.
;; WARN: Function may read a register that is not set: t0
;; WARN: Function may read a register that is not set: t1
;; WARN: Function may read a register that is not set: t2
;; WARN: Function may read a register that is not set: t3
(defun cam-collision-record-draw ()
(cond
((cpad-pressed? 0 down)
File diff suppressed because it is too large Load Diff
@@ -237,6 +237,16 @@
(hit-by-others)
(player)
)
;; +++nav-flags
(defenum nav-flags
:type uint8
:bitfield #t
(nav-flags0 0)
(nav-flags1 1)
)
;; ---nav-flags
;; DECOMP BEGINS
(deftype collide-rider (structure)
@@ -422,9 +432,9 @@
(deftype collide-shape (trsqv)
((actor-hash-index int16 :offset 12)
(process process :offset-assert 140)
(process process-drawable :offset-assert 140)
(max-iteration-count uint8 :offset-assert 144)
(nav-flags uint8 :offset-assert 145)
(nav-flags nav-flags :offset-assert 145)
(total-prims uint8 :offset-assert 146)
(num-riders uint8 :offset-assert 147)
(pat-ignore-mask pat-surface :offset-assert 148)
@@ -583,7 +593,7 @@
(set! (-> s5-0 actor-hash-index) -1)
(set! (-> s5-0 process) arg0)
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
(set! (-> s5-0 nav-flags) (the-as uint 1))
(set! (-> s5-0 nav-flags) (nav-flags nav-flags0))
(set! (-> s5-0 event-self) #f)
(set! (-> s5-0 event-other) #f)
(set! (-> s5-0 riders) (the-as pointer #f))
+83
View File
@@ -5,5 +5,88 @@
;; name in dgo: anim-tester
;; dgos: ENGINE, GAME
;; NOTE - for default-menu
(define-extern anim-tester-start (function symbol))
;; DECOMP BEGINS
(defenum anim-tester-flags
:bitfield #t
:type int32
(fanimt0)
(fanimt1)
(fanimt2)
(fanimt3)
(fanimt4)
(fanimt5)
)
(defenum anim-tester-debug-flags
:bitfield #t
:type int32
(unk0)
(unk1)
(unk2)
(unk3)
(at-show-joint-info)
(at-apply-align)
(unk6)
)
(deftype list-control (structure)
((listfunc (function int list-control symbol) :offset-assert 0)
(list-owner uint32 :offset-assert 4)
(top int32 :offset-assert 8)
(left int32 :offset-assert 12)
(list glst-list :offset-assert 16)
(the-node glst-node :offset-assert 20)
(top-index int32 :offset-assert 24)
(the-index int32 :offset-assert 28)
(the-disp-line int32 :offset-assert 32)
(highlight-index int32 :offset-assert 36)
(current-index int32 :offset-assert 40)
(numlines int32 :offset-assert 44)
(lines-to-disp int32 :offset-assert 48)
(charswide int32 :offset-assert 52)
(highlight-disp-line int32 :offset-assert 56)
(field-id int32 :offset-assert 60)
(xpos int32 :offset-assert 64)
(ypos int32 :offset-assert 68)
(user-info int32 :offset-assert 72)
(user-info-u uint32 :offset 72) ;; custom
(return-int int32 :offset-assert 76)
)
:allow-misaligned
:method-count-assert 9
:size-assert #x50
:flag-assert #x900000050
)
(deftype anim-tester (process-drawable)
((flags anim-tester-flags :offset-assert 200)
(debug-flags anim-tester-debug-flags :offset-assert 204)
(obj-list glst-list :inline :offset-assert 208)
(current-obj string :offset-assert 224)
(speed int32 :offset-assert 228)
(list-con list-control :inline :offset-assert 232)
(pick-con list-control :inline :offset-assert 312)
(item-field int64 :offset-assert 392)
(inc-delay int32 :offset-assert 400)
(inc-timer int32 :offset-assert 404)
(edit-mode int32 :offset-assert 408)
(old-mode int32 :offset-assert 412)
(anim-speed float :offset-assert 416)
(anim-gspeed float :offset-assert 420)
(anim-first float :offset-assert 424)
(anim-last float :offset-assert 428)
)
:method-count-assert 20
:size-assert #x1b0
:heap-base #x130
:flag-assert #x14013001b0
(:states
anim-tester-process
)
)
(define-extern *anim-tester* (pointer anim-tester))
+12 -17
View File
@@ -22,6 +22,8 @@
;; NOTE - for debug
(define-extern add-debug-sphere (function symbol bucket-id vector meters rgba symbol))
;; NOTE - for menu
;; +++debug-menu-msg
(defenum debug-menu-msg
:type int32
(activate 1)
@@ -29,35 +31,28 @@
(update 3)
(press 4)
)
;; ---debug-menu-msg
;; +++debug-menu-dest
(defenum debug-menu-dest
:type int32
(activation 0)
(root 1)
(open-menus 2)
(current-selection 3))
;; ---debug-menu-dest
;; NOTE - for editable-player
(declare-type debug-menu basic)
(deftype debug-menu-context (basic)
((is-active symbol :offset-assert 4) ;; guessed by decompiler
(sel-length int32 :offset-assert 8)
(sel-menu debug-menu 8 :offset-assert 12) ;; guessed by decompiler
(root-menu debug-menu :offset-assert 44) ;; guessed by decompiler
(joypad-func (function basic none) :offset-assert 48) ;; guessed by decompiler
(joypad-item basic :offset-assert 52)
(font font-context :offset-assert 56) ;; guessed by decompiler
(is-hidden symbol :offset-assert 60) ;; guessed by decompiler
(joypad-number int32 :offset-assert 64)
)
:method-count-assert 9
:size-assert #x44
:flag-assert #x900000044
)
(declare-type debug-menu-node basic)
(declare-type debug-menu-item debug-menu-node)
(declare-type debug-menu-context basic)
(define-extern debug-menu-context-send-msg (function debug-menu-context debug-menu-msg debug-menu-dest debug-menu-context))
(define-extern debug-menu-make-from-template (function debug-menu-context pair debug-menu-node))
(define-extern debug-menu-func-decode (function object function))
(define-extern debug-menu-item-send-msg (function debug-menu-item debug-menu-msg debug-menu-item))
(define-extern debug-menu-send-msg (function debug-menu debug-menu-msg symbol debug-menu))
(define-extern debug-menus-handler (function debug-menu-context debug-menu-context))
;; DECOMP BEGINS
(deftype pos-history (structure)
+5 -5
View File
@@ -1078,7 +1078,7 @@
(defun-debug add-debug-text-sphere ((enable symbol) (bucket bucket-id) (position vector) (radius meters) (text string) (color rgba))
"Add a debug sphere at the given point, with some text. The color is for the sphere - the text is color 0."
(add-debug-sphere enable bucket position radius color)
(add-debug-text-3d enable bucket text position (font-color default) (the-as vector2h #f))
(add-debug-text-3d enable bucket text position (font-color default-#cddbcd) (the-as vector2h #f))
#f
)
@@ -1777,16 +1777,16 @@
(+ y -4)
(cond
((= v1-7 1)
(font-color orange-red)
(font-color precursor-#ec3b00)
)
((= v1-7 2)
(font-color fc-5)
(font-color yellow-#f3f300)
)
((= v1-7 4)
(font-color fc-6)
(font-color green-#3df23d)
)
(else
(font-color default)
(font-color default-#cddbcd)
)
)
(font-flags shadow)
File diff suppressed because it is too large Load Diff
+65 -57
View File
@@ -131,7 +131,7 @@
(s1-0 318)
)
(format (clear *temp-string*) "region-~D~%" (-> obj id))
(s3-0 s2-0 (the-as bucket-id s1-0) *temp-string* arg0 (font-color one) sv-32)
(s3-0 s2-0 (the-as bucket-id s1-0) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
(when (>= arg1 1)
@@ -142,7 +142,7 @@
(s1-1 318)
)
(format (clear *temp-string*) "(on-enter ~S)" s4-1)
(s3-1 s2-1 (the-as bucket-id s1-1) *temp-string* arg0 (font-color one) sv-32)
(s3-1 s2-1 (the-as bucket-id s1-1) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
)
@@ -154,7 +154,7 @@
(s1-2 318)
)
(format (clear *temp-string*) "(on-inside ~S)" s4-2)
(s3-2 s2-2 (the-as bucket-id s1-2) *temp-string* arg0 (font-color one) sv-32)
(s3-2 s2-2 (the-as bucket-id s1-2) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
)
@@ -166,7 +166,7 @@
(s2-3 318)
)
(format (clear *temp-string*) "(on-exit ~S)" s5-1)
(s4-3 s3-3 (the-as bucket-id s2-3) *temp-string* arg0 (font-color one) sv-32)
(s4-3 s3-3 (the-as bucket-id s2-3) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
)
@@ -249,24 +249,30 @@
;; WARN: Return type mismatch int vs none.
(defmethod editable-method-28 editable ((obj editable) (arg0 editable-filter))
(let* ((s5-0 (-> obj owner)) (a0-1 (car s5-0))) (while (not (null? s5-0))
(editable-method-28 (the-as editable a0-1) arg0)
(set! s5-0 (cdr s5-0))
(set! a0-1 (car s5-0))
)
)
(let* ((s5-0 (-> obj owner))
(a0-1 (car s5-0))
)
(while (not (null? s5-0))
(editable-method-28 (the-as editable a0-1) arg0)
(set! s5-0 (cdr s5-0))
(set! a0-1 (car s5-0))
)
)
0
(none)
)
;; WARN: Return type mismatch int vs symbol.
(defmethod editable-method-29 editable ((obj editable) (arg0 editable-filter))
(let* ((s5-0 (-> obj owner)) (a0-1 (car s5-0))) (while (not (null? s5-0))
(editable-method-29 (the-as editable a0-1) arg0)
(set! s5-0 (cdr s5-0))
(set! a0-1 (car s5-0))
)
)
(let* ((s5-0 (-> obj owner))
(a0-1 (car s5-0))
)
(while (not (null? s5-0))
(editable-method-29 (the-as editable a0-1) arg0)
(set! s5-0 (cdr s5-0))
(set! a0-1 (car s5-0))
)
)
(the-as symbol 0)
)
@@ -460,12 +466,15 @@
)
)
(logior! (-> obj flags) (editable-flag changed))
(let* ((s4-0 (-> obj owner)) (a0-3 (car s4-0))) (while (not (null? s4-0))
(editable-method-26 (the-as editable a0-3) obj arg0)
(set! s4-0 (cdr s4-0))
(set! a0-3 (car s4-0))
)
)
(let* ((s4-0 (-> obj owner))
(a0-3 (car s4-0))
)
(while (not (null? s4-0))
(editable-method-26 (the-as editable a0-3) obj arg0)
(set! s4-0 (cdr s4-0))
(set! a0-3 (car s4-0))
)
)
0
(none)
)
@@ -674,7 +683,7 @@
(s5-0 (new 'stack-no-clear 'vector))
)
(set! (-> a0-1 quad) (-> obj trans quad))
(set! (-> a0-1 w) (-> obj radius))
(set! (-> a0-1 r) (-> obj radius))
(when (sphere-in-view-frustum? a0-1)
(reverse-transform-point! s5-0 (-> obj trans) (-> *math-camera* inv-camera-rot vector 2) arg0)
(let ((f0-1 (vector-vector-distance (edit-get-trans obj) s5-0)))
@@ -978,7 +987,7 @@
(s3-1 318)
)
(format (clear *temp-string*) "~S~%" (-> obj name))
(s5-1 s4-1 (the-as bucket-id s3-1) *temp-string* (-> obj trans) (font-color one) (the-as vector2h #f))
(s5-1 s4-1 (the-as bucket-id s3-1) *temp-string* (-> obj trans) (font-color #dadada) (the-as vector2h #f))
)
)
((method-of-type editable-sphere editable-method-10) obj)
@@ -1170,11 +1179,10 @@
(the-as bucket-id s1-1)
*temp-string*
(-> gp-0 s4-1)
(the-as font-color (if (logtest? (-> obj flags) (editable-flag orient))
5
1
)
)
(if (logtest? (-> obj flags) (editable-flag orient))
(font-color yellow-#f3f300)
(font-color #dadada)
)
(the-as vector2h #f)
)
)
@@ -1184,16 +1192,14 @@
324
(the-as transform gp-0)
sv-112
(the-as rgba (if (logtest? (-> obj flags) (editable-flag orient))
(-> (new 'static 'array uint64 1 #x800000ff) 0)
(-> (new 'static 'array uint64 1 #x8000ffff) 0)
)
)
(the-as rgba (if (zero? (logand (-> obj flags) (editable-flag orient)))
(-> (new 'static 'array uint64 1 #x800000ff) 0)
(-> (new 'static 'array uint64 1 #x8000ffff) 0)
)
)
(if (logtest? (-> obj flags) (editable-flag orient))
(the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0))
(the-as rgba (-> (new 'static 'array uint64 1 #x8000ffff) 0))
)
(if (zero? (logand (-> obj flags) (editable-flag orient)))
(the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0))
(the-as rgba (-> (new 'static 'array uint64 1 #x8000ffff) 0))
)
(if (logtest? (-> obj flags) (editable-flag selected))
1
0
@@ -1478,16 +1484,14 @@
324
(the-as transform gp-0)
s4-0
(the-as rgba (if (logtest? (-> obj flags) (editable-flag orient))
(-> (new 'static 'array uint64 1 #x800000ff) 0)
(-> (new 'static 'array uint64 1 #x8000ffff) 0)
)
)
(the-as rgba (if (zero? (logand (-> obj flags) (editable-flag orient)))
(-> (new 'static 'array uint64 1 #x800000ff) 0)
(-> (new 'static 'array uint64 1 #x8000ffff) 0)
)
)
(if (logtest? (-> obj flags) (editable-flag orient))
(the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0))
(the-as rgba (-> (new 'static 'array uint64 1 #x8000ffff) 0))
)
(if (zero? (logand (-> obj flags) (editable-flag orient)))
(the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0))
(the-as rgba (-> (new 'static 'array uint64 1 #x8000ffff) 0))
)
(if (logtest? (-> obj flags) (editable-flag selected))
1
0
@@ -1652,14 +1656,18 @@
(let ((gp-0 (-> arg0 region)))
(when gp-0
(editable-method-25 arg0 obj)
(let* ((v1-3 (-> obj length)) (a0-2 0) (a1-4 (-> obj data a0-2))) (while (< a0-2 v1-3)
(if (and a1-4 (= arg0 a1-4))
(set! (-> obj data a0-2) #f)
)
(+! a0-2 1)
(set! a1-4 (-> obj data a0-2))
)
)
(let* ((v1-3 (-> obj length))
(a0-2 0)
(a1-4 (-> obj data a0-2))
)
(while (< a0-2 v1-3)
(if (and a1-4 (= arg0 a1-4))
(set! (-> obj data a0-2) #f)
)
(+! a0-2 1)
(set! a1-4 (-> obj data a0-2))
)
)
(let* ((v1-6 (-> obj length))
(a0-3 0)
(a1-14 (-> obj data a0-3))
File diff suppressed because it is too large Load Diff
@@ -7,3 +7,56 @@
;; DECOMP BEGINS
(deftype mysql-nav-node (structure)
((mysql-save-flag uint32 :offset-assert 0)
(runtime-id uint32 :offset-assert 4)
(temp-edge-list basic :offset-assert 8)
(level-node-index int32 :offset-assert 12)
(cam-dist float :offset-assert 16)
(visible basic :offset-assert 20)
(nav_node_id uint32 :offset-assert 24)
(nav_graph_id uint32 :offset-assert 28)
(position vector :inline :offset-assert 32)
(level_name basic :offset-assert 48)
(angle float :offset-assert 52)
(radius float :offset-assert 56)
(nav_node_flag uint32 :offset-assert 60)
(nav_mesh_id uint32 :offset-assert 64)
)
:pack-me
:method-count-assert 11
:size-assert #x44
:flag-assert #xb00000044
(:methods
(mysql-nav-node-method-9 () none 9)
(mysql-nav-node-method-10 () none 10)
)
)
(deftype mysql-nav-edge (structure)
((mysql-save-flag uint32 :offset-assert 0)
(runtime-id uint32 :offset-assert 4)
(runtime-node-id-1 int32 :offset-assert 8)
(runtime-node-id-2 int32 :offset-assert 12)
(temp-next-edge mysql-nav-edge :offset-assert 16)
(nav_edge_id uint32 :offset-assert 20)
(nav_graph_id uint32 :offset-assert 24)
(nav_node_id_1 uint32 :offset-assert 28)
(nav_node_id_2 uint32 :offset-assert 32)
(directionality uint32 :offset-assert 36)
(speed_limit float :offset-assert 40)
(density float :offset-assert 44)
(traffic_edge_flag int32 :offset-assert 48)
(nav_clock_mask uint32 :offset-assert 52)
(nav_clock_type uint32 :offset-assert 56)
(width float :offset-assert 60)
(minimap_edge_flag int32 :offset-assert 64)
)
:pack-me
:method-count-assert 10
:size-assert #x44
:flag-assert #xa00000044
(:methods
(mysql-nav-edge-method-9 () none 9)
)
)
@@ -5,5 +5,96 @@
;; name in dgo: nav-graph-editor
;; dgos: ENGINE, GAME
;; NOTE - for default-menu
(declare-type nav-graph-editor process)
(define-extern get-nav-graph-editor (function nav-graph-editor))
(define-extern run-nav-graph-editor (function symbol none))
(define-extern exit-nav-graph-editor (function none))
;; DECOMP BEGINS
(deftype nav-graph-editor (process)
((nav-graph basic :offset-assert 128)
(mode uint32 :offset-assert 132)
(command-id int32 :offset-assert 136)
(max-command int32 :offset-assert 140)
(selected-index int32 :offset-assert 144)
(selected-dist float :offset-assert 148)
(selected-node-edge? basic :offset-assert 152)
(closest-node int32 :offset-assert 156)
(dist-closest-node float :offset-assert 160)
(closest-edge int32 :offset-assert 164)
(dist-closest-edge float :offset-assert 168)
(mouse-pos vector :inline :offset-assert 176)
(mouse-hit vector :inline :offset-assert 192)
(mouse-hit-pick vector :inline :offset-assert 208)
(mouse-normal vector :inline :offset-assert 224)
(mouse-spos-hold vector :inline :offset-assert 240)
(edge-src int32 :offset-assert 256)
(edge-dst int32 :offset-assert 260)
(edge-visibility int32 :offset-assert 264)
(vehicle-edit-mode basic :offset-assert 268)
(hover-edit-mode basic :offset-assert 272)
(clipping-dist float :offset-assert 276)
(plane-height float :offset-assert 280)
(plane-height-hold float :offset-assert 284)
(default-node mysql-nav-node :inline :offset-assert 288)
(default-edge mysql-nav-edge :inline :offset-assert 356)
(command-array basic :offset-assert 424)
)
:method-count-assert 64
:size-assert #x1ac
:flag-assert #x40013001ac
(:methods
(move-node () _type_ :state 14)
(move-plane () _type_ :state 15)
(create () _type_ :state 16)
(edit-edge () _type_ :state 17)
(create-edge () _type_ :state 18)
(adjust-plane () _type_ :state 19)
(adjust-it () _type_ :state 20)
(adjust-minimap () _type_ :state 21)
(adjust-node-angle () _type_ :state 22)
(adjust-node-radius () _type_ :state 23)
(adjust-edge-visibility () _type_ :state 24)
(adjust-edge-width () _type_ :state 25)
(adjust-edge-density () _type_ :state 26)
(draw-closest-minimap () _type_ :state 27)
(nav-graph-editor-method-28 () none 28)
(nav-graph-editor-method-29 () none 29)
(nav-graph-editor-method-30 () none 30)
(nav-graph-editor-method-31 () none 31)
(nav-graph-editor-method-32 () none 32)
(nav-graph-editor-method-33 () none 33)
(nav-graph-editor-method-34 () none 34)
(nav-graph-editor-method-35 () none 35)
(nav-graph-editor-method-36 () none 36)
(nav-graph-editor-method-37 () none 37)
(nav-graph-editor-method-38 () none 38)
(nav-graph-editor-method-39 () none 39)
(nav-graph-editor-method-40 () none 40)
(nav-graph-editor-method-41 () none 41)
(nav-graph-editor-method-42 () none 42)
(nav-graph-editor-method-43 () none 43)
(nav-graph-editor-method-44 () none 44)
(nav-graph-editor-method-45 () none 45)
(nav-graph-editor-method-46 () none 46)
(nav-graph-editor-method-47 () none 47)
(nav-graph-editor-method-48 () none 48)
(nav-graph-editor-method-49 () none 49)
(nav-graph-editor-method-50 () none 50)
(nav-graph-editor-method-51 () none 51)
(nav-graph-editor-method-52 () none 52)
(nav-graph-editor-method-53 () none 53)
(nav-graph-editor-method-54 () none 54)
(nav-graph-editor-method-55 () none 55)
(nav-graph-editor-method-56 () none 56)
(nav-graph-editor-method-57 () none 57)
(nav-graph-editor-method-58 () none 58)
(nav-graph-editor-method-59 () none 59)
(nav-graph-editor-method-60 () none 60)
(nav-graph-editor-method-61 () none 61)
(nav-graph-editor-method-62 () none 62)
(nav-graph-editor-method-63 () none 63)
)
)
+8
View File
@@ -9,6 +9,14 @@
;; NOTE - for sparticle-launcher and editable
(define-extern sphere-in-view-frustum? (function sphere symbol))
;; NOTE - for default-menu
(define-extern *edit-instance* string)
(declare-type prototype-bucket basic)
(define-extern find-instance-by-name (function string prototype-bucket))
(define-extern prototype-bucket-type (function prototype-bucket type))
(define-extern print-prototype-list (function none))
(define-extern prototype-bucket-recalc-fields (function prototype-bucket prototype-bucket))
;; DECOMP BEGINS
(deftype drawable (basic)
+33 -9
View File
@@ -30,6 +30,13 @@
(define-extern process-entity-status! (function process entity-perm-status symbol int))
(define-extern process-drawable-from-entity! (function process-drawable entity-actor none))
(declare-type nav-poly structure)
;; NOTE - for default-menu
(define-extern *compact-actors* symbol)
(define-extern debug-actor (function string none))
(define-extern reset-actors (function symbol none))
;; DECOMP BEGINS
(define *generate-actor-vis* #f)
@@ -62,6 +69,7 @@
)
)
(deftype entity-links (structure)
((prev-link entity-links :offset-assert 0)
(next-link entity-links :offset-assert 4)
@@ -85,6 +93,7 @@
)
)
(deftype entity-perm-array (inline-array-class)
((data entity-perm :inline :dynamic :offset-assert 16)
)
@@ -92,6 +101,8 @@
:size-assert #x10
:flag-assert #x900000010
)
(set! (-> entity-perm-array heap-base) (the-as uint 16))
(deftype entity-links-array (inline-array-class)
@@ -101,6 +112,8 @@
:size-assert #x10
:flag-assert #x900000010
)
(set! (-> entity-links-array heap-base) (the-as uint 64))
(deftype entity (res-lump)
@@ -111,8 +124,8 @@
:size-assert #x34
:flag-assert #x1b00000034
(:methods
(entity-method-22 () none 22)
(entity-method-23 () none 23)
(entity-method-22 (_type_) _type_ 22)
(entity-method-23 (_type_) _type_ 23)
(entity-method-24 () none 24)
(entity-method-25 () none 25)
(entity-method-26 () none 26)
@@ -134,8 +147,8 @@
:size-assert #x38
:flag-assert #x1d00000038
(:methods
(entity-nav-mesh-method-27 () none 27)
(entity-nav-mesh-method-28 () none 28)
(entity-nav-mesh-method-27 (_type_) none 27)
(debug-draw (_type_) none 28)
)
)
@@ -166,8 +179,8 @@
(prev-actor (_type_) entity-actor 28)
(entity-actor-method-29 () none 29)
(entity-actor-method-30 () none 30)
(entity-actor-method-31 () none 31)
(entity-actor-method-32 () none 32)
(entity-actor-method-31 (_type_ vector vector vector object float) nav-mesh 31)
(entity-actor-method-32 (_type_ vector vector nav-poly float) nav-poly 32)
)
)
@@ -180,6 +193,7 @@
:flag-assert #x900000008
)
(deftype actor-group (inline-array-class)
((data actor-reference :inline :dynamic :offset-assert 16)
)
@@ -187,20 +201,23 @@
:size-assert #x10
:flag-assert #x900000010
)
(set! (-> actor-group heap-base) (the-as uint 8))
(deftype entity-info (basic)
((ptype type :offset-assert 4)
((ptype type :offset-assert 4)
(package string :offset-assert 8)
(art-group pair :offset-assert 12)
(art-group pair :offset-assert 12)
(pool symbol :offset-assert 16)
(heap-size int32 :offset-assert 20)
(heap-size int32 :offset-assert 20)
)
:method-count-assert 9
:size-assert #x18
:flag-assert #x900000018
)
(deftype actor-bank (basic)
((pause-dist meters :offset-assert 4)
(birth-dist meters :offset-assert 8)
@@ -211,4 +228,11 @@
:flag-assert #x900000010
)
(define *ACTOR-bank* (new 'static 'actor-bank :pause-dist (meters 50) :birth-dist (meters 220) :birth-max 10))
0
+100 -96
View File
@@ -126,6 +126,10 @@
(define-extern process-drawable-art-error (state string process-drawable))
(define-extern part-group-pointer? (function pointer symbol))
;; NOTE - for default-menu
(define-extern bug-report-display (function none))
(define-extern trsq->continue-point (function trsq none))
;; DECOMP BEGINS
(local-vars (gp-0 game-info))
@@ -247,102 +251,102 @@
(deftype game-info (basic)
((mode symbol :offset-assert 4)
(save-name string :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features game-feature :offset-assert 128)
(debug-features game-feature :offset-assert 136)
(secrets game-secrets :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue continue-point :offset-assert 244)
(unknown-pad3 array :offset-assert 248)
(unknown-pad4 array :offset-assert 252)
(unknown-pad5 array :offset-assert 256)
(task-counter uint32 :offset-assert 260)
(unknown-pad6 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score (array highscore-info) :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
((mode symbol :offset-assert 4)
(save-name string :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features game-feature :offset-assert 128)
(debug-features game-feature :offset-assert 136)
(secrets game-secrets :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue continue-point :offset-assert 244)
(play-list (array game-task-info) :offset-assert 248)
(sub-task-list (array game-task-node-info) :offset-assert 252)
(unknown-pad5 array :offset-assert 256)
(task-counter uint32 :offset-assert 260)
(unknown-pad6 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score (array highscore-info) :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
)
:method-count-assert 31
:size-assert #x25c
+3
View File
@@ -5,5 +5,8 @@
;; name in dgo: game-save
;; dgos: ENGINE, GAME
;; NOTE - for default-menu
(define-extern auto-save-command (function symbol int int process-tree symbol none))
;; DECOMP BEGINS
+3
View File
@@ -102,6 +102,9 @@
;; NOTE - for settings
(define-extern *master-exit* symbol)
;; NOTE - for default-menu
(define-extern set-master-mode (function symbol none))
;; DECOMP BEGINS
;; engine debug settings
+4 -4
View File
@@ -67,7 +67,7 @@
; (when *display-deci-count*
; (let ((s2-0 draw-string-xy))
; (format (clear *temp-string*) "~D" *deci-count*)
; (s2-0 *temp-string* s3-0 448 210 (font-color default) (font-flags shadow))
; (s2-0 *temp-string* s3-0 448 210 (font-color default-#cddbcd) (font-flags shadow))
; )
; )
; (display-file-info)
@@ -93,7 +93,7 @@
; 352
; 320
; )
; (font-color orange-red)
; (font-color precursor-#ec3b00)
; (font-flags shadow kerning middle large)
; )
; )
@@ -113,7 +113,7 @@
; s3-1
; (the int (-> *font-context* origin x))
; s2-2
; (font-color default)
; (font-color default-#cddbcd)
; (font-flags shadow)
; )
; )
@@ -124,7 +124,7 @@
; s3-1
; (the int (-> *font-context* origin x))
; a3-6
; (font-color default)
; (font-color default-#cddbcd)
; (font-flags shadow)
; )
; )
@@ -167,6 +167,13 @@
;; NOTE - for settings
(define-extern update-task-masks (function symbol none))
;; NOTE - for default-menu
(define-extern play-clean (function symbol none))
(define-extern task-node-open! (function game-task none))
(define-extern task-node-close! (function game-task none))
(define-extern task-node-open? (function game-task symbol))
(define-extern play-task (function game-task symbol symbol string))
;; DECOMP BEGINS
(defun-debug game-task->string ((arg0 game-task))
@@ -1291,8 +1298,8 @@
(deftype game-task-node-info (basic)
((level basic :offset-assert 4)
(task game-task :offset-assert 8)
(name basic :offset-assert 12)
(when-open basic :offset-assert 16)
(name string :offset-assert 12)
(when-open array :offset-assert 16)
(flags game-task-node-flag :offset-assert 20)
(parent-node uint16 4 :offset-assert 24)
(task-mask task-mask :offset-assert 32)
@@ -1323,14 +1330,14 @@
(deftype game-task-info (basic)
((name basic :offset-assert 4)
((name string :offset-assert 4)
(text-name uint32 :offset-assert 8)
(pre-play-node uint16 :offset-assert 12)
(kiosk-play-node uint16 :offset-assert 14)
(pre-play-continue basic :offset-assert 16)
(pre-play-continue string :offset-assert 16)
(play-node uint16 :offset-assert 20)
(play-continue basic :offset-assert 24)
(kiosk-play-continue basic :offset-assert 28)
(play-continue string :offset-assert 24)
(kiosk-play-continue string :offset-assert 28)
)
:method-count-assert 9
:size-assert #x20
+11 -5
View File
@@ -5,11 +5,14 @@
;; name in dgo: vol-h
;; dgos: ENGINE, GAME
;; +++vol-flags
(defenum vol-flags
:bitfield #t
:type uint32
(display?)
(vol-flags-1)
)
;; ---vol-flags
;; DECOMP BEGINS
@@ -27,12 +30,13 @@
:size-assert #x18
:flag-assert #xc00000018
(:methods
(plane-volume-method-9 () none 9)
(plane-volume-method-10 () none 10)
(plane-volume-method-11 () none 11)
(plane-volume-method-9 (_type_ symbol vector-array vector-array) plane-volume 9)
(debug-draw (_type_) none 10)
(point-in-vol? (_type_ vector float) symbol 11)
)
)
(deftype vol-control (basic)
((flags vol-flags :offset-assert 4)
(process process-drawable :offset-assert 8)
@@ -48,12 +52,14 @@
:flag-assert #xc0000061c
(:methods
(new (symbol type process-drawable) _type_ 0)
(vol-control-method-9 (_type_) symbol 9)
(vol-control-method-10 (_type_ vector) symbol 10)
(vol-control-method-9 (_type_) none 9)
(vol-control-method-10 (_type_ plane) symbol 10)
(should-display? (_type_) symbol 11)
)
)
;; WARN: Return type mismatch object vs vol-control.
(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))
+349
View File
@@ -7,3 +7,352 @@
;; DECOMP BEGINS
(defun plane-volume-intersect-dist ((arg0 vector) (arg1 vector) (arg2 vector))
(let ((f0-1 (vector-dot arg1 arg0))
(f1-1 (vector-dot arg2 arg0))
)
(if (< 0.00001 (fabs f1-1))
(/ (- (-> arg0 w) f0-1) f1-1)
409600000.0
)
)
)
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
(defmethod plane-volume-method-9 plane-volume ((obj plane-volume) (arg0 symbol) (arg1 vector-array) (arg2 vector-array))
(local-vars
(sv-144 vector)
(sv-148 number)
(sv-152 int)
(sv-160 vector)
(sv-176 vector)
(sv-192 vector)
(sv-208 vector)
(sv-224 vector)
(sv-240 int)
(sv-256 int)
)
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
)
(init-vf0-vector)
(set! (-> obj volume-type) arg0)
(set! (-> obj point-count) 0)
(set! (-> obj first-point) (the-as (pointer vector) (-> arg1 data (-> arg1 length))))
(set! (-> obj normal-count) 0)
(set! (-> obj first-normal) (the-as (pointer vector) (-> arg2 data (-> arg2 length))))
(dotimes (s3-0 (-> obj num-planes))
(set! sv-176 (new 'stack-no-clear 'vector))
(set! (-> sv-176 quad) (the-as uint128 0))
(set! sv-192 (new 'stack-no-clear 'vector))
(set! (-> sv-192 quad) (the-as uint128 0))
(set! sv-208 (new 'stack-no-clear 'vector))
(set! (-> sv-208 quad) (the-as uint128 0))
(set! sv-224 (new 'stack-no-clear 'vector))
(set! (-> sv-224 quad) (the-as uint128 0))
0.0
0.0
0.0
(set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0))
(let ((s1-0 (new-stack-vector0))
(s0-0 0)
(s2-0 (-> obj plane))
)
(set! sv-240 0)
(while (< sv-240 (-> obj num-planes))
(when (!= s3-0 sv-240)
(vector-float*! sv-176 (the-as vector (-> s2-0 sv-240)) (-> s2-0 sv-240 w))
(vector-cross! sv-192 (the-as vector (-> s2-0 sv-240)) (the-as vector (-> s2-0 s3-0)))
(vector-normalize! sv-192 1.0)
(vector-cross! sv-208 sv-192 (the-as vector (-> s2-0 sv-240)))
(vector-normalize! sv-208 1.0)
(let ((f0-4 (plane-volume-intersect-dist (-> s2-0 s3-0) sv-176 sv-208)))
(when (!= f0-4 409600000.0)
(let ((v1-28 sv-224))
(let ((a0-12 sv-176))
(.lvf vf2 (&-> sv-208 quad))
(.lvf vf1 (&-> a0-12 quad))
)
(let ((a0-13 f0-4))
(.mov vf3 a0-13)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-28 quad) vf4)
)
(set! sv-144 (new-stack-vector0))
(set! sv-148 0.0)
(set! sv-152 0)
(set! sv-160 (new-stack-vector0))
(set! (-> sv-144 quad) (-> sv-224 quad))
(set! sv-256 0)
(while (< sv-256 (-> obj num-planes))
(when (and (!= sv-256 s3-0) (!= sv-256 sv-240))
(let ((f0-6 (plane-volume-intersect-dist (-> s2-0 sv-256) sv-144 sv-192)))
(cond
((= f0-6 409600000.0)
)
((zero? sv-152)
(let ((v1-42 sv-144))
(let ((a0-19 sv-144))
(.lvf vf2 (&-> sv-192 quad))
(.lvf vf1 (&-> a0-19 quad))
)
(let ((a0-20 f0-6))
(.mov vf3 a0-20)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-42 quad) vf4)
)
(set! (-> sv-160 quad) (-> s2-0 sv-256 quad))
(set! sv-148 8192000.0)
(set! sv-152 1)
)
((begin (vector-float*! sv-224 sv-192 f0-6) (>= (vector-dot sv-224 sv-160) 0.0))
)
((>= (vector-dot sv-224 (the-as vector (-> s2-0 sv-256))) 0.0)
(when (< (fabs f0-6) (fabs (the-as float sv-148)))
(set! sv-148 f0-6)
(set! sv-152 (+ sv-152 1))
)
)
(else
(let ((v1-59 sv-144))
(let ((a0-28 sv-144)
(a1-15 sv-192)
(f1-8 f0-6)
)
(.lvf vf2 (&-> a1-15 quad))
(.lvf vf1 (&-> a0-28 quad))
(let ((a0-29 f1-8))
(.mov vf3 a0-29)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-59 quad) vf4)
)
(set! (-> sv-160 quad) (-> s2-0 sv-256 quad))
(set! sv-152 (+ sv-152 1))
(if (< (fabs f0-6) (fabs (the-as float sv-148)))
(set! sv-148 (- (the-as float sv-148) f0-6))
(set! sv-148 0.0)
)
)
)
)
)
(set! sv-256 (+ sv-256 1))
)
(cond
((zero? sv-152)
)
((= (the-as float sv-148) 0.0)
)
(else
(dotimes (v1-76 (-> obj num-planes))
(when (and (!= v1-76 s3-0) (!= v1-76 sv-240))
(if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-76))) (-> s2-0 v1-76 w)))
(goto cfg-42)
)
)
)
(let ((v1-80 sv-224))
(let ((a0-46 sv-144)
(a1-18 sv-192)
(f0-12 sv-148)
)
(.lvf vf2 (&-> a1-18 quad))
(.lvf vf1 (&-> a0-46 quad))
(let ((a0-47 (the-as float f0-12)))
(.mov vf3 a0-47)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-80 quad) vf4)
)
(cond
((< (-> arg1 allocated-length) (+ (-> arg1 length) 2))
(format 0 "ERROR <AG>: vol-control #x~X out of volume points~%" obj)
)
(else
(set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad))
(set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad))
(+! (-> arg1 length) 2)
(+! (-> obj point-count) 2)
)
)
(vector+! s1-0 s1-0 sv-144)
(vector+! s1-0 s1-0 sv-224)
(+! s0-0 2)
)
)
)
)
)
(label cfg-42)
(set! sv-240 (+ sv-240 1))
)
(when (nonzero? s0-0)
(vector-float*! s1-0 s1-0 (/ 1.0 (the float s0-0)))
(cond
((< (-> arg2 allocated-length) (+ (-> arg2 length) 2))
(format 0 "ERROR <AG>: vol-control #x~X out of volume normals~%" obj)
)
(else
(set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad))
(set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad))
(+! (-> arg2 length) 2)
(set! (-> obj normal-count) (+ (-> obj normal-count) 2))
)
)
)
)
)
obj
)
)
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw plane-volume ((obj plane-volume))
(let* ((v1-0 (-> obj volume-type))
(s5-0 (cond
((= v1-0 'vol)
(the-as uint #x8000c000)
)
((= v1-0 'pvol)
(the-as uint #x80808080)
)
(else
(the-as uint #x800000c0)
)
)
)
(s4-0 (-> obj first-point))
)
(dotimes (s3-0 (/ (-> obj point-count) 2))
(add-debug-line
#t
(bucket-id bucket-318)
(the-as vector s4-0)
(the-as vector (&-> s4-0 4))
(the-as rgba s5-0)
#f
(the-as rgba -1)
)
(set! s4-0 (&-> s4-0 8))
)
)
0
(none)
)
(defmethod point-in-vol? plane-volume ((obj plane-volume) (arg0 vector) (arg1 float))
"TODO - Checks if the given [[vector]] point is inside the volume defined by 6 [[plane]]s by atleast the padding value provided"
(dotimes (v1-0 (-> obj num-planes))
(if (< arg1 (- (vector-dot arg0 (the-as vector (-> obj plane v1-0))) (-> obj plane v1-0 w)))
(return #f)
)
)
#t
)
;; WARN: Return type mismatch int vs none.
(defmethod vol-control-method-9 vol-control ((obj vol-control))
(with-pp
(let ((a0-1 obj))
(when (and (and *display-vol-marks* (logtest? (-> a0-1 flags) (vol-flags display?)))
(logtest? (-> obj flags) (vol-flags vol-flags-1))
)
(when (zero? (-> obj debug-point))
(let ((s5-0 pp))
(set! pp (-> obj process))
(let ((s4-0 0))
(dotimes (v1-8 (-> obj pos-vol-count))
(+! s4-0 (-> obj pos-vol v1-8 num-planes))
)
(dotimes (v1-11 (-> obj neg-vol-count))
(+! s4-0 (-> obj neg-vol v1-11 num-planes))
)
(set! (-> obj debug-point) (new 'debug 'vector-array (* 10 s4-0)))
(set! (-> obj debug-normal) (new 'debug 'vector-array (* 10 s4-0)))
)
(set! pp s5-0)
)
(set! (-> obj debug-point length) 0)
(set! (-> obj debug-normal length) 0)
(dotimes (s5-1 (-> obj pos-vol-count))
(plane-volume-method-9 (-> obj pos-vol s5-1) 'vol (-> obj debug-point) (-> obj debug-normal))
)
(dotimes (s5-2 (-> obj neg-vol-count))
(plane-volume-method-9 (-> obj neg-vol s5-2) 'vol (-> obj debug-point) (-> obj debug-normal))
)
)
(dotimes (s5-3 (-> obj pos-vol-count))
(debug-draw (-> obj pos-vol s5-3))
)
(dotimes (s5-4 (-> obj neg-vol-count))
(debug-draw (-> obj neg-vol s5-4))
)
)
)
0
(none)
)
)
(defmethod vol-control-method-10 vol-control ((obj vol-control) (arg0 plane))
(dotimes (s4-0 (-> obj neg-vol-count))
(if (point-in-vol? (-> obj neg-vol s4-0) arg0 0.0)
(return #f)
)
)
(dotimes (s4-1 (-> obj pos-vol-count))
(if (point-in-vol? (-> obj pos-vol s4-1) arg0 0.0)
(return #t)
)
)
#f
)
@@ -5,6 +5,13 @@
;; name in dgo: subdivide-h
;; dgos: ENGINE, GAME
;; NOTE - for default-menu
(declare-type subdivide-settings basic)
(define-extern *subdivide-settings* subdivide-settings)
(define-extern *stat-string-tfrag* string)
(define-extern *stat-string-tfrag-scissor* string)
(define-extern *stat-string-total* string)
;; DECOMP BEGINS
(deftype subdivide-settings (basic)
+42 -5
View File
@@ -9,14 +9,51 @@
;; TODO: figure out what's weird with set-font-color
;; The font system draws all of the strings.
;; +++font-color
(defenum font-color
:type uint32
(default 0)
(one 1)
(orange-red 3)
(fc-5 5)
(fc-6 6)
(default-#cddbcd 0)
(#dadada 1)
(#ededed 2)
(precursor-#ec3b00 3)
(gold-#ba9200 4)
(yellow-#f3f300 5)
(green-#3df23d 6)
(blue-#003cf1 7)
(cyan-#00fefe 8)
(magenta-#f87df8 9)
(#a0d5d5 10)
(#7cbaba 11)
(white-#ffffff 12)
(#959595 13)
(#f9a400 14)
(#daf95e 15)
(#8aa81f 16)
(#a6b5a6 17)
(#757f75 18)
(#5e3f5e 19)
(#f0e387 20)
(#3fbaed 21)
(#3a3a3a 22)
(#5c5c5c 23)
(#f298c8 24)
(#f46868 25)
(#20ca98 26)
(#8289de 27)
(#a8f3f6 28)
(#fef666 29)
(#f1f104 30)
(#8ed0f4 31)
(#7efbfb 32)
(#7ffcfc 33)
(#f9f9f9 34)
(#408080 35)
(#e0f0e0 36)
(#c00000 37)
(#ffc040 38)
(#000000 39)
)
;; ---font-color
;; copied from jak1, not completely confirmed.
(defenum font-flags
+7 -13
View File
@@ -5,11 +5,13 @@
;; name in dgo: font
;; dgos: ENGINE, GAME
(def-mips2c draw-string-asm (function string dma-buffer font-context uint))
(def-mips2c draw-string (function string dma-buffer font-context draw-string-result))
(def-mips2c get-string-length (function string font-context draw-string-result))
;; DECOMP BEGINS
;; definition for function gen-font-12
;; INFO: Return type mismatch object vs none.
;; WARN: Return type mismatch object vs none.
(defun gen-font-12 ((arg0 string))
(format #t "(define ~s~%" arg0)
(format #t " (new 'static 'inline-array 'vector 0~%")
@@ -142,28 +144,19 @@
(none)
)
;; definition for function draw-string-asm
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function draw-string
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function get-string-length
;; ERROR: function was not converted to expressions. Cannot decompile.
(def-mips2c draw-string-asm (function string dma-buffer font-context uint))
(def-mips2c draw-string (function string dma-buffer font-context draw-string-result))
(def-mips2c get-string-length (function string font-context float))
;; definition for function draw-string-xy
(defun draw-string-xy ((arg0 string) (arg1 dma-buffer) (arg2 int) (arg3 int) (arg4 font-color) (arg5 font-flags))
(let ((a2-2 (new 'stack 'font-context *font-default-matrix* arg2 arg3 0.0 arg4 arg5)))
(draw-string arg0 arg1 a2-2)
)
)
;; definition for function draw-string-adv
;; INFO: Return type mismatch float vs none.
;; WARN: Return type mismatch float vs none.
(defun draw-string-adv ((arg0 string) (arg1 dma-buffer) (arg2 font-context))
(let ((v1-0 (draw-string arg0 arg1 arg2)))
(+! (-> arg2 origin x) (-> v1-0 length))
@@ -174,3 +167,4 @@
@@ -5,6 +5,10 @@
;; name in dgo: generic-h
;; dgos: ENGINE, GAME
;; NOTE - for default-menu
(declare-type generic-consts structure)
(define-extern *generic-consts* generic-consts)
;; DECOMP BEGINS
(deftype gsf-vertex (structure)
+1 -1
View File
@@ -80,7 +80,7 @@
)
(define *font-context*
(new 'global 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
(new 'global 'font-context *font-default-matrix* 0 0 0.0 (font-color default-#cddbcd) (font-flags shadow kerning))
)
(defun draw-sprite2d-xy ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 rgba))
+3
View File
@@ -5,6 +5,9 @@
;; name in dgo: merc-h
;; dgos: ENGINE, GAME
;; NOTE - for default-menu
(define-extern merc-stats (function none))
;; DECOMP BEGINS
(deftype ripple-merc-query (inline-array-class)
@@ -27,6 +27,11 @@
;; NOTE - for mood-funcs
(define-extern set-filter-color! (function float float float none))
;; NOTE - for default-menu
(declare-type time-of-day-proc process)
(define-extern *time-of-day* (pointer time-of-day-proc))
(define-extern time-of-day-setup (function symbol symbol))
;; DECOMP BEGINS
(deftype palette-fade-control (structure)
@@ -24,6 +24,12 @@
(define-extern adgif-shader<-texture-simple! (function adgif-shader texture adgif-shader))
(define-extern lookup-texture-by-id-fast (function texture-id texture))
;; NOTE - for default-menu
(define-extern *edit-shader* texture-id)
(define-extern adgif-shader-update! (function adgif-shader texture none))
(declare-type texture-page-dir basic)
(define-extern texture-page-dir-inspect (function texture-page-dir symbol none))
;; DECOMP BEGINS
(deftype texture-id (uint32)
+1 -1
View File
@@ -363,7 +363,7 @@
(bucket-323 323) ;; hud
(bucket-324 324) ;; debug
(debug-no-zbuf 325) ;; debug
;; (bucket-326 326) ;; debug
(debug-unknown-326 326) ;; debug
)
(defenum vu1-renderer-mask
+31 -31
View File
@@ -169,7 +169,7 @@
(callback-info nav-callback-info :offset-assert 4)
(process process :offset-assert 8)
(pad0 uint32 :offset-assert 12)
(shape basic :offset-assert 16)
(shape collide-shape :offset-assert 16)
(nearest-y-threshold meters :offset-assert 20)
(nav-cull-radius meters :offset-assert 24)
(sec-per-frame float :offset-assert 28)
@@ -184,8 +184,8 @@
(sphere-mask uint8 :offset-assert 61)
(pad1 uint8 2 :offset-assert 62)
(sphere-id-array uint8 16 :offset-assert 64)
(extra-nav-sphere vector :inline :offset-assert 80)
(root-nav-sphere vector :inline :offset-assert 96)
(extra-nav-sphere sphere :inline :offset-assert 80)
(root-nav-sphere sphere :inline :offset-assert 96)
(state nav-state :inline :offset-assert 112)
)
:method-count-assert 47
@@ -193,43 +193,43 @@
:flag-assert #x2f00000120
(:methods
(nav-control-method-9 () none 9)
(nav-control-method-10 () none 10)
(point-in-bounds? (_type_ vector) symbol 10)
(nav-control-method-11 (_type_ vector) vector 11)
(nav-control-method-12 () none 12)
(nav-control-method-13 () none 13)
(nav-control-method-14 () none 14)
(nav-control-method-15 () none 15)
(nav-control-method-16 () none 16)
(nav-control-method-17 () none 17)
(find-poly (_type_ vector) nav-poly 13)
(nav-control-method-14 (_type_ nav-poly vector object vector) none 14)
(nav-control-method-15 (_type_ vector) none 15)
(nav-control-method-16 (_type_ vector float) symbol 16)
(is-in-mesh? (_type_ vector float) symbol 17)
(nav-control-method-18 () none 18)
(nav-control-method-19 () none 19)
(nav-control-method-20 (_type_ vector vector vector int symbol symbol) none 20)
(nav-control-method-21 () none 21)
(nav-control-method-22 () none 22)
(nav-control-method-23 () none 23)
(nav-control-method-23 (_type_) none 23)
(nav-control-method-24 () none 24)
(nav-control-method-25 () none 25)
(nav-control-method-26 () none 26)
(nav-control-method-27 () none 27)
(nav-control-method-28 () none 28)
(nav-control-method-29 () none 29)
(nav-control-method-30 () none 30)
(nav-control-method-31 () none 31)
(nav-control-method-32 () none 32)
(nav-control-method-33 () none 33)
(nav-control-method-34 () none 34)
(nav-control-method-35 () none 35)
(nav-control-method-36 () none 36)
(nav-control-method-37 () none 37)
(nav-control-method-38 () none 38)
(nav-control-method-39 () none 39)
(nav-control-method-40 () none 40)
(nav-control-method-41 () none 41)
(nav-control-method-42 () none 42)
(nav-control-method-43 () none 43)
(get-max-rotation-rate (_type_) float 25)
(get-sphere-mask (_type_) none 26)
(get-target-speed (_type_) meters 27)
(nav-control-method-28 (_type_) none 28)
(nav-control-method-29 (_type_) none 29)
(copy-extra-nav-sphere! (_type_ sphere) none 30)
(set-extra-nav-sphere! (_type_ sphere) none 31)
(set-extra-nav-sphere-radius! (_type_ float) none 32)
(set-nearest-y-thres! (_type_ float) none 33)
(set-nav-cull-radius! (_type_ meters) none 34)
(set-speed-scale! (_type_ float) none 35)
(set-target-speed! (_type_ meters) none 36)
(set-acceleration! (_type_ meters) none 37)
(set-turning-acceleration! (_type_ meters) none 38)
(set-max-rotation-rate! (_type_ float) none 39)
(set-sphere-mask! (_type_ uint) none 40)
(nav-control-method-41 (_type_) none 41)
(init! (_type_ collide-shape) none 42)
(display-marks? (_type_) symbol 43)
(nav-control-method-44 () none 44)
(nav-control-method-45 () none 45)
(nav-control-method-46 () none 46)
(nav-control-method-45 (_type_ vector vector vector) sphere 45)
(find-sphere (_type_) none 46)
)
)
+139 -71
View File
@@ -11,6 +11,9 @@
(dummy 0)
)
(declare-type grid-hash basic)
(declare-type sphere-hash grid-hash)
;; DECOMP BEGINS
(deftype nav-mesh-work-debug (structure)
@@ -33,6 +36,7 @@
:flag-assert #x9000001c0
)
(deftype nav-mesh-work (structure)
((vert0-table int8 4 :offset-assert 0)
(vert1-table int8 4 :offset-assert 4)
@@ -47,10 +51,10 @@
(work-struct-in-scratch int8 :offset-assert 292)
(mesh-struct-in-scratch int8 :offset-assert 293)
(polys-in-scratch int8 :offset-assert 294)
(mesh basic :offset-assert 296)
(mesh nav-mesh :offset-assert 296)
(nav basic :offset-assert 300)
(poly0 basic :offset-assert 304)
(poly1 basic :offset-assert 308)
(poly0 nav-poly :offset-assert 304)
(poly1 nav-poly :offset-assert 308)
(poly-id int32 :offset-assert 312)
)
:method-count-assert 9
@@ -58,6 +62,7 @@
:flag-assert #x90000013c
)
(deftype nav-mesh-link (structure)
((id uint32 :offset-assert 0)
(dest-mesh-id uint32 :offset-assert 4)
@@ -72,6 +77,7 @@
:flag-assert #x900000010
)
(deftype nav-poly (structure)
((data uint8 64 :offset-assert 0)
(vertex vector 4 :inline :offset 0)
@@ -96,13 +102,17 @@
:flag-assert #x900000040
)
(deftype nav-vertex (vector)
"A typedef for `vector`, not used because our code looks nicer if everything is `vector`s anyway
and declared out of order (cannot use forward declared structures in inline arrays)"
()
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
(deftype nav-sphere (structure)
((trans sphere :inline :offset-assert 0)
)
@@ -111,6 +121,7 @@
:flag-assert #x900000010
)
(deftype nav-ray (structure)
((current-pos vector :inline :offset-assert 0)
(dir vector :inline :offset-assert 16)
@@ -130,6 +141,7 @@
:flag-assert #x900000050
)
(deftype nav-route-portal (structure)
((vertex nav-vertex 2 :inline :offset-assert 0)
(next-poly nav-poly :offset-assert 32)
@@ -140,6 +152,7 @@
:flag-assert #x900000025
)
(deftype nav-find-poly-parms (structure)
((point vector :inline :offset-assert 0)
(y-threshold float :offset-assert 16)
@@ -153,6 +166,7 @@
:flag-assert #x900000024
)
(deftype clamp-travel-vector-to-mesh-return-info (structure)
((found-boundary basic :offset-assert 0)
(intersection vector :inline :offset-assert 16)
@@ -173,77 +187,79 @@
:flag-assert #x9000000a0
)
(deftype nav-mesh (basic)
((work nav-mesh-work :offset-assert 4)
(poly-array (inline-array nav-poly) :offset-assert 8)
(static-sphere-count uint8 :offset-assert 12)
(poly-count uint8 :offset-assert 13)
(nav-control-count uint8 :offset-assert 14)
(max-nav-control-count uint8 :offset-assert 15)
(route uint32 :offset-assert 16)
(poly-hash basic :offset-assert 20)
(nav-control-array uint32 :offset-assert 24)
(sphere-hash basic :offset-assert 28)
(static-sphere uint32 :offset-assert 32)
(user-list basic :offset-assert 36)
(next-nav-mesh basic :offset-assert 40)
(prev-nav-mesh basic :offset-assert 44)
(bounds sphere :inline :offset-assert 48)
(origin vector :inline :offset 48)
(entity entity :offset-assert 64)
(link-array uint32 :offset-assert 68)
(link-count uint8 :offset-assert 72)
(flags nav-mesh-flag :offset-assert 73)
(pad1 uint8 2 :offset-assert 74)
(nearest-y-threshold meters :offset-assert 76)
(water-max-height meters :offset-assert 80)
(pad2 uint32 7 :offset-assert 84)
((work nav-mesh-work :offset-assert 4)
(poly-array (inline-array nav-poly) :offset-assert 8)
(static-sphere-count uint8 :offset-assert 12)
(poly-count uint8 :offset-assert 13)
(nav-control-count uint8 :offset-assert 14)
(max-nav-control-count uint8 :offset-assert 15)
(route uint32 :offset-assert 16)
(poly-hash grid-hash :offset-assert 20)
(nav-control-array (inline-array nav-control) :offset-assert 24)
(sphere-hash sphere-hash :offset-assert 28)
(static-sphere (inline-array sphere) :offset-assert 32)
(user-list engine :offset-assert 36)
(next-nav-mesh surface :offset-assert 40)
(prev-nav-mesh surface :offset-assert 44)
(bounds sphere :inline :offset-assert 48)
(origin vector :inline :offset 48)
(entity entity :offset-assert 64)
(link-array (array nav-mesh-link) :offset-assert 68)
(link-count uint8 :offset-assert 72)
(flags nav-mesh-flag :offset-assert 73)
(pad1 uint8 2 :offset-assert 74)
(nearest-y-threshold meters :offset-assert 76)
(water-max-height meters :offset-assert 80)
(pad2 uint32 7 :offset-assert 84)
)
:method-count-assert 47
:size-assert #x70
:flag-assert #x2f00000070
(:methods
(nav-mesh-method-9 () none 9)
(nav-mesh-method-10 () none 10)
(nav-mesh-method-11 () none 11)
(nav-mesh-method-12 () none 12)
(nav-mesh-method-13 () none 13)
(nav-mesh-method-14 () none 14)
(nav-mesh-method-15 () none 15)
(nav-mesh-method-9 (_type_) none 9)
(nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly 10)
(nav-mesh-method-11 (_type_ nav-poly vector) vector 11)
(nav-mesh-method-12 (_type_ nav-poly vector) none 12)
(nav-mesh-method-13 (_type_ symbol symbol) none 13)
(get-route-portal (_type_ object object nav-find-poly-parms) none 14)
(initialize-mesh! (_type_) none 15)
(move-along-nav-ray! (_type_ nav-ray) none 16)
(nav-mesh-method-17 () none 17)
(try-move-along-ray (_type_ nav-poly vector vector float) meters 17)
(nav-mesh-method-18 () none 18)
(nav-mesh-method-19 () none 19)
(nav-mesh-method-20 () none 20)
(nav-mesh-method-21 () none 21)
(nav-mesh-method-22 () none 22)
(nav-mesh-method-23 () none 23)
(nav-mesh-method-24 () none 24)
(nav-mesh-method-25 () none 25)
(nav-mesh-method-26 () none 26)
(nav-mesh-method-27 () none 27)
(nav-mesh-method-28 () none 28)
(nav-mesh-method-29 () none 29)
(nav-mesh-method-30 () none 30)
(nav-mesh-method-31 () none 31)
(nav-mesh-method-32 () none 32)
(nav-mesh-method-33 () none 33)
(nav-mesh-method-34 () none 34)
(nav-mesh-method-22 (_type_ vector vector) none 22)
(nav-mesh-method-23 (_type_ entity-nav-mesh) none 23)
(nav-mesh-method-24 (_type_) none 24)
(nav-mesh-method-25 (_type_) none 25)
(nav-mesh-method-26 (_type_) none 26)
(new-nav-control (_type_ vector int) nav-control 27)
(nav-mesh-method-28 (_type_ object) none 28)
(nav-mesh-method-29 (_type_ object symbol) nav-control 29)
(nav-mesh-method-30 (_type_ process-drawable) none 30)
(change-to (_type_ process-drawable) none 31)
(nav-mesh-method-32 (_type_ uint32) none 32)
(nav-mesh-method-33 (_type_ uint32) symbol 33)
(nav-mesh-method-34 (_type_ object vector float) none 34)
(nav-mesh-method-35 () none 35)
(nav-mesh-method-36 () none 36)
(nav-mesh-method-36 (_type_ nav-poly rgba) none 36)
(point-in-poly? (_type_ nav-poly vector) symbol 37)
(nav-mesh-method-38 () none 38)
(nav-mesh-method-38 (_type_ nav-poly vector vector vector object) vector 38)
(closest-point-on-boundary (_type_ nav-poly vector vector) none 39)
(nav-mesh-method-40 () none 40)
(nav-mesh-method-40 (_type_ nav-poly vector object vector) none 40)
(project-point-into-poly-2d (_type_ nav-poly vector vector) none 41)
(nav-mesh-method-42 () none 42)
(nav-mesh-method-43 () none 43)
(nav-mesh-method-44 () none 44)
(nav-mesh-method-45 () none 45)
(nav-mesh-method-46 () none 46)
(nav-mesh-method-42 (_type_ nav-find-poly-parms) symbol 42)
(nav-mesh-method-43 (_type_ nav-find-poly-parms) none 43)
(nav-mesh-method-44 (_type_ vector float float) symbol 44)
(nav-mesh-method-45 (_type_ entity-perm) none 45)
(nav-mesh-method-46 (_type_ object) none 46)
)
)
(defun vector-normalize-unity! ((arg0 vector))
(rlet ((acc :class vf)
(Q :class vf)
@@ -313,6 +329,7 @@
#f
)
;; WARN: Return type mismatch int vs none.
(defun init-ray ((arg0 nav-ray))
(rlet ((acc :class vf)
(Q :class vf)
@@ -357,8 +374,6 @@
)
(defun point-poly-intersection? ((arg0 nav-mesh) (arg1 vector) (arg2 int) (arg3 (inline-array vector)))
"Helper for point in poly...
Uses the vertex table of the nav-mesh, but user supplied vectors."
(let ((v1-1 (-> arg0 work vert0-table))
(a0-2 (-> arg0 work vert1-table))
)
@@ -381,11 +396,10 @@
)
(defmethod point-in-poly? nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector))
"Is the point in the poly?"
(let* ((a3-0 obj)
(v1-0 arg1)
(a0-1 (-> arg0 vertex-count))
(a1-1 (-> arg0 vertex))
(a1-1 (the-as (inline-array vector) (-> arg0 vertex0)))
(a2-2 (-> a3-0 work vert0-table))
(a3-2 (-> a3-0 work vert1-table))
)
@@ -407,8 +421,12 @@
#t
)
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Return type mismatch vector vs none.
(defmethod closest-point-on-boundary nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector))
"Set arg1 to the closest point to arg2 that's on the boundary of arg0."
(local-vars (sv-48 vector) (sv-52 vector) (sv-56 float))
(set! sv-48 (new 'stack-no-clear 'vector))
(set! sv-52 (new 'stack-no-clear 'vector))
@@ -430,10 +448,12 @@
(none)
)
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Return type mismatch vector vs none.
(defmethod project-point-into-poly-2d nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector))
"Project into polygon. If it's not in the polygon, sets y to the height of the edge.
If it's in the polygon (in the xz plane), the output uses y from the input.
As a result, this doesn't make too much sense for 3d stuff."
(local-vars (sv-48 vector) (sv-52 vector) (sv-56 float))
(cond
((point-in-poly? obj arg0 arg2)
@@ -464,9 +484,56 @@
(none)
)
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 60 signed mismatch
;; WARN: Stack slot offset 64 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Return type mismatch int vs none.
(defmethod move-along-nav-ray! nav-mesh ((obj nav-mesh) (ray nav-ray))
"Advance the ray into the next polygon.
update the ray's status as needed."
(local-vars
(next-poly-idx int)
(work nav-mesh-work)
@@ -495,16 +562,16 @@
(set! adj-vtx-1 (-> current-poly vertex (-> v1-table i)))
(set! adj-edge-dz (- (-> adj-vtx-0 z) (-> adj-vtx-1 z)))
(set! adj-edge-minus-dx (- (-> adj-vtx-1 x) (-> adj-vtx-0 x)))
(let ((f0-10 (+ (* delta-x adj-edge-dz) (* delta-z adj-edge-minus-dx))))
(when (< 0.0 f0-10)
(let ((heading-dot (+ (* delta-x adj-edge-dz) (* delta-z adj-edge-minus-dx))))
(when (< 0.0 heading-dot)
(let ((f1-10 (+ (* adj-edge-dz (- (-> adj-vtx-0 x) (-> ray current-pos x)))
(* adj-edge-minus-dx (- (-> adj-vtx-0 z) (-> ray current-pos z)))
)
)
)
(when (< f1-10 f0-10)
(when (< f1-10 heading-dot)
(set! next-poly-idx i)
(let ((f0-12 (fmax 0.0 (/ f1-10 f0-10))))
(let ((f0-12 (fmax 0.0 (/ f1-10 heading-dot))))
(set! delta-x (* delta-x f0-12))
(set! delta-z (* delta-z f0-12))
)
@@ -529,7 +596,7 @@
(+! (-> ray current-pos z) delta-z)
(set! sv-68 (-> current-poly adj-poly next-poly-idx))
(if (!= sv-68 255)
(set! (-> ray next-poly) (-> obj poly-array sv-68))
(set! (-> ray next-poly) (the-as nav-poly (-> obj poly-array sv-68 vertex0)))
)
(cond
((and (-> ray next-poly) (zero? (logand (-> ray next-poly pat) (-> ray ignore))))
@@ -550,6 +617,7 @@
(none)
)
;; WARN: Return type mismatch int vs none.
(defun-debug nav-sphere-from-cam ()
(let ((v1-0 (camera-pos)))
(format #t "SPHEREM(~4,,1M, ~4,,1M, ~4,,1M, 1.0)~%" (-> v1-0 x) (-> v1-0 y) (-> v1-0 z))
+1 -1
View File
@@ -106,7 +106,7 @@
)
)
)
(draw-string-xy *temp-string* arg0 32 (+ (* 12 s4-0) 8) (font-color orange-red) (font-flags shadow))
(draw-string-xy *temp-string* arg0 32 (+ (* 12 s4-0) 8) (font-color precursor-#ec3b00) (font-flags shadow))
)
)
0
+4
View File
@@ -5,6 +5,10 @@
;; name in dgo: scene-h
;; dgos: ENGINE, GAME
;; NOTE - for default-menu
(declare-type scene-player process-drawable)
(define-extern scene-player-init (function string symbol object none :behavior scene-player))
;; DECOMP BEGINS
(deftype scene-actor (basic)
+6 -6
View File
@@ -844,7 +844,7 @@
arg0
(+ (* s5-0 16) 16)
48
(font-color default)
(font-color default-#cddbcd)
(font-flags shadow)
)
)
@@ -857,7 +857,7 @@
arg0
(+ (* s5-1 16) 16)
64
(font-color default)
(font-color default-#cddbcd)
(font-flags shadow)
)
)
@@ -869,7 +869,7 @@
(-> *level* sound-bank 1)
(-> *level* sound-bank 2)
)
(s5-2 *temp-string* arg0 16 88 (font-color default) (font-flags shadow))
(s5-2 *temp-string* arg0 16 88 (font-color default-#cddbcd) (font-flags shadow))
)
(let ((s5-3 draw-string-xy))
(format
@@ -882,7 +882,7 @@
(-> *setting-control* user-current sound-excitement)
(-> *setting-control* user-current mode-sound-bank)
)
(s5-3 *temp-string* arg0 16 104 (font-color default) (font-flags shadow))
(s5-3 *temp-string* arg0 16 104 (font-color default-#cddbcd) (font-flags shadow))
)
0
)
@@ -895,7 +895,7 @@
(-> *sound-iop-info* freemem)
(shr (-> *sound-iop-info* freemem) 10)
)
(s5-0 *temp-string* arg0 32 96 (font-color default) (font-flags shadow))
(s5-0 *temp-string* arg0 32 96 (font-color default-#cddbcd) (font-flags shadow))
)
(let ((s5-1 draw-string-xy))
(format
@@ -904,7 +904,7 @@
(-> *sound-iop-info* freemem2)
(shr (-> *sound-iop-info* freemem2) 10)
)
(s5-1 *temp-string* arg0 32 64 (font-color default) (font-flags shadow))
(s5-1 *temp-string* arg0 32 64 (font-color default-#cddbcd) (font-flags shadow))
)
0
)
@@ -24,6 +24,7 @@
:flag-assert #x900000006
)
(deftype grid-hash (basic)
((work basic :offset-assert 4)
(search-box grid-hash-box :inline :offset-assert 8)
@@ -66,6 +67,7 @@
)
)
(deftype find-nav-sphere-ids-params (structure)
((bsphere sphere :inline :offset-assert 0)
(y-threshold float :offset-assert 16)
@@ -79,12 +81,13 @@
:flag-assert #x900000020
)
(deftype sphere-hash (grid-hash)
((sphere-array uint32 :offset-assert 88)
(max-object-count int16 :offset-assert 92)
(pad int16 :offset-assert 94)
(mem-sphere-array uint32 :offset-assert 96)
(spr-sphere-array uint32 :offset-assert 100)
((sphere-array (inline-array sphere) :offset-assert 88)
(max-object-count int16 :offset-assert 92)
(pad int16 :offset-assert 94)
(mem-sphere-array uint32 :offset-assert 96)
(spr-sphere-array uint32 :offset-assert 100)
)
:method-count-assert 34
:size-assert #x68
@@ -95,13 +98,14 @@
(sphere-hash-method-27 () none 27)
(sphere-hash-method-28 () none 28)
(sphere-hash-method-29 () none 29)
(sphere-hash-method-30 () none 30)
(sphere-hash-method-30 (_type_ find-nav-sphere-ids-params) none 30)
(sphere-hash-method-31 () none 31)
(sphere-hash-method-32 () none 32)
(sphere-hash-method-33 () none 33)
)
)
(deftype hash-object-info (structure)
((object basic :offset-assert 0)
)
@@ -110,6 +114,7 @@
:flag-assert #x900000004
)
(deftype spatial-hash (sphere-hash)
((object-array uint32 :offset-assert 104)
(mem-object-array uint32 :offset-assert 108)
@@ -128,3 +133,10 @@
(spatial-hash-method-40 () none 40)
)
)
0
+9 -9
View File
@@ -689,8 +689,8 @@
488
arg1
(if (>= f30-0 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
@@ -705,8 +705,8 @@
488
arg1
(if (>= f30-0 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
@@ -740,8 +740,8 @@
488
arg1
(if (>= f30-1 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
@@ -756,8 +756,8 @@
488
arg1
(if (>= f30-1 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
@@ -859,4 +859,4 @@
,@body
(end-profiler)
)
)
)
+4
View File
@@ -12,6 +12,10 @@
(define-extern *syntax-context* script-context)
(define-extern *script-context* script-context)
;; NOTE - for menu
(define-extern command-get-int (function object int int))
(define-extern command-get-float (function object float float))
;; DECOMP BEGINS
(deftype script-form (structure)
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -343,18 +343,18 @@
:max (new 'static 'vector :x 6144.0 :y 11059.2 :z 6144.0 :w 1.0)
)
:local-player-spheres (new 'static 'inline-array sphere 12
(new 'static 'sphere :x 1720.32 :y -819.2 :w 1433.6)
(new 'static 'sphere :x 2293.76 :y -3276.8 :w 1884.16)
(new 'static 'sphere :x 1966.08 :y -6144.0 :w 1556.48)
(new 'static 'sphere :x 1966.08 :y -8601.6 :w 1556.48)
(new 'static 'sphere :x 1761.28 :y -11059.2 :w 1351.68)
(new 'static 'sphere :x 1679.36 :y -13312.0 :w 1269.76)
(new 'static 'sphere :x -737.28 :y 4096.0 :w 3072.0)
(new 'static 'sphere :x -737.28 :y 6553.6 :w 3072.0)
(new 'static 'sphere :x -737.28 :y 9420.8 :w 3072.0)
(new 'static 'sphere :x 1720.32 :y 3686.4 :w 2949.12)
(new 'static 'sphere :x 1720.32 :y 5734.4 :w 2949.12)
(new 'static 'sphere :x 1720.32 :y 8601.6 :w 2949.12)
(new 'static 'sphere :x 1720.32 :y -819.2 :r 1433.6)
(new 'static 'sphere :x 2293.76 :y -3276.8 :r 1884.16)
(new 'static 'sphere :x 1966.08 :y -6144.0 :r 1556.48)
(new 'static 'sphere :x 1966.08 :y -8601.6 :r 1556.48)
(new 'static 'sphere :x 1761.28 :y -11059.2 :r 1351.68)
(new 'static 'sphere :x 1679.36 :y -13312.0 :r 1269.76)
(new 'static 'sphere :x -737.28 :y 4096.0 :r 3072.0)
(new 'static 'sphere :x -737.28 :y 6553.6 :r 3072.0)
(new 'static 'sphere :x -737.28 :y 9420.8 :r 3072.0)
(new 'static 'sphere :x 1720.32 :y 3686.4 :r 2949.12)
(new 'static 'sphere :x 1720.32 :y 5734.4 :r 2949.12)
(new 'static 'sphere :x 1720.32 :y 8601.6 :r 2949.12)
)
)
)
+3 -3
View File
@@ -1284,9 +1284,9 @@
;; definition of type collide-shape
(deftype collide-shape (trsqv)
((actor-hash-index int16 :offset 12)
(process process :offset-assert 140)
(process process-drawable :offset-assert 140)
(max-iteration-count uint8 :offset-assert 144)
(nav-flags uint8 :offset-assert 145)
(nav-flags nav-flags :offset-assert 145)
(total-prims uint8 :offset-assert 146)
(num-riders uint8 :offset-assert 147)
(pat-ignore-mask pat-surface :offset-assert 148)
@@ -1964,7 +1964,7 @@
(set! (-> s5-0 actor-hash-index) -1)
(set! (-> s5-0 process) arg0)
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
(set! (-> s5-0 nav-flags) (the-as uint 1))
(set! (-> s5-0 nav-flags) (nav-flags nav-flags0))
(set! (-> s5-0 event-self) #f)
(set! (-> s5-0 event-other) #f)
(set! (-> s5-0 riders) (the-as pointer #f))
+5 -5
View File
@@ -1085,7 +1085,7 @@
;; definition (debug) for function add-debug-text-sphere
(defun-debug add-debug-text-sphere ((enable symbol) (bucket bucket-id) (position vector) (radius meters) (text string) (color rgba))
(add-debug-sphere enable bucket position radius color)
(add-debug-text-3d enable bucket text position (font-color default) (the-as vector2h #f))
(add-debug-text-3d enable bucket text position (font-color default-#cddbcd) (the-as vector2h #f))
#f
)
@@ -1879,16 +1879,16 @@
(+ y -4)
(cond
((= v1-7 1)
(font-color orange-red)
(font-color precursor-#ec3b00)
)
((= v1-7 2)
(font-color fc-5)
(font-color yellow-#f3f300)
)
((= v1-7 4)
(font-color fc-6)
(font-color green-#3df23d)
)
(else
(font-color default)
(font-color default-#cddbcd)
)
)
(font-flags shadow)
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -124,7 +124,7 @@
(s1-0 318)
)
(format (clear *temp-string*) "region-~D~%" (-> obj id))
(s3-0 s2-0 (the-as bucket-id s1-0) *temp-string* arg0 (font-color one) sv-32)
(s3-0 s2-0 (the-as bucket-id s1-0) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
(when (>= arg1 1)
@@ -135,7 +135,7 @@
(s1-1 318)
)
(format (clear *temp-string*) "(on-enter ~S)" s4-1)
(s3-1 s2-1 (the-as bucket-id s1-1) *temp-string* arg0 (font-color one) sv-32)
(s3-1 s2-1 (the-as bucket-id s1-1) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
)
@@ -147,7 +147,7 @@
(s1-2 318)
)
(format (clear *temp-string*) "(on-inside ~S)" s4-2)
(s3-2 s2-2 (the-as bucket-id s1-2) *temp-string* arg0 (font-color one) sv-32)
(s3-2 s2-2 (the-as bucket-id s1-2) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
)
@@ -159,7 +159,7 @@
(s2-3 318)
)
(format (clear *temp-string*) "(on-exit ~S)" s5-1)
(s4-3 s3-3 (the-as bucket-id s2-3) *temp-string* arg0 (font-color one) sv-32)
(s4-3 s3-3 (the-as bucket-id s2-3) *temp-string* arg0 (font-color #dadada) sv-32)
)
(set! (-> sv-32 y) (the-as int (+ (-> sv-32 y) 8)))
)
@@ -708,7 +708,7 @@
(s5-0 (new 'stack-no-clear 'vector))
)
(set! (-> a0-1 quad) (-> obj trans quad))
(set! (-> a0-1 w) (-> obj radius))
(set! (-> a0-1 r) (-> obj radius))
(when (sphere-in-view-frustum? a0-1)
(reverse-transform-point! s5-0 (-> obj trans) (-> *math-camera* inv-camera-rot vector 2) arg0)
(let ((f0-1 (vector-vector-distance (edit-get-trans obj) s5-0)))
@@ -1027,7 +1027,7 @@
(s3-1 318)
)
(format (clear *temp-string*) "~S~%" (-> obj name))
(s5-1 s4-1 (the-as bucket-id s3-1) *temp-string* (-> obj trans) (font-color one) (the-as vector2h #f))
(s5-1 s4-1 (the-as bucket-id s3-1) *temp-string* (-> obj trans) (font-color #dadada) (the-as vector2h #f))
)
)
((method-of-type editable-sphere editable-method-10) obj)
@@ -1648,8 +1648,8 @@
*temp-string*
(-> gp-0 s4-1)
(if (logtest? (-> obj flags) (editable-flag orient))
(font-color fc-5)
(font-color one)
(font-color yellow-#f3f300)
(font-color #dadada)
)
(the-as vector2h #f)
)
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -230,8 +230,8 @@
:size-assert #x34
:flag-assert #x1b00000034
(:methods
(entity-method-22 () none 22)
(entity-method-23 () none 23)
(entity-method-22 (_type_) _type_ 22)
(entity-method-23 (_type_) _type_ 23)
(entity-method-24 () none 24)
(entity-method-25 () none 25)
(entity-method-26 () none 26)
@@ -255,8 +255,8 @@
:size-assert #x38
:flag-assert #x1d00000038
(:methods
(entity-nav-mesh-method-27 () none 27)
(entity-nav-mesh-method-28 () none 28)
(entity-nav-mesh-method-27 (_type_) none 27)
(debug-draw (_type_) none 28)
)
)
@@ -289,8 +289,8 @@
(prev-actor (_type_) entity-actor 28)
(entity-actor-method-29 () none 29)
(entity-actor-method-30 () none 30)
(entity-actor-method-31 () none 31)
(entity-actor-method-32 () none 32)
(entity-actor-method-31 (_type_ vector vector vector object float) nav-mesh 31)
(entity-actor-method-32 (_type_ vector vector nav-poly float) nav-poly 32)
)
)
+96 -96
View File
@@ -222,102 +222,102 @@
;; definition of type game-info
(deftype game-info (basic)
((mode symbol :offset-assert 4)
(save-name string :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features game-feature :offset-assert 128)
(debug-features game-feature :offset-assert 136)
(secrets game-secrets :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue continue-point :offset-assert 244)
(unknown-pad3 array :offset-assert 248)
(unknown-pad4 array :offset-assert 252)
(unknown-pad5 array :offset-assert 256)
(task-counter uint32 :offset-assert 260)
(unknown-pad6 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score (array highscore-info) :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
((mode symbol :offset-assert 4)
(save-name string :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features game-feature :offset-assert 128)
(debug-features game-feature :offset-assert 136)
(secrets game-secrets :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue continue-point :offset-assert 244)
(play-list (array game-task-info) :offset-assert 248)
(sub-task-list (array game-task-node-info) :offset-assert 252)
(unknown-pad5 array :offset-assert 256)
(task-counter uint32 :offset-assert 260)
(unknown-pad6 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score (array highscore-info) :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
)
:method-count-assert 31
:size-assert #x25c
+14 -4
View File
@@ -1052,10 +1052,10 @@
(local-vars (v0-0 uint) (f3-1 float) (f4-5 float) (f5-5 float) (f5-15 float) (f6-0 float) (f8-1 float))
(let ((f3-0 (-> arg0 x))
(f4-0 (-> arg0 z))
(f5-0 (-> arg0 w))
(f5-0 (-> arg0 r))
(f1-0 (-> arg1 x))
(f0-0 (-> arg1 z))
(f2-0 (-> arg1 w))
(f2-0 (-> arg1 r))
(v1-0 0.5)
)
(.mula.s f5-0 f5-0)
@@ -1248,8 +1248,18 @@
(s5-0 (new-stack-vector0))
(gp-0 (new-stack-vector0))
)
(set-vector! s4-0 0.0 0.0 0.0 1.0)
(set-vector! a1-2 100.0 0.0 0.0 10000.0)
(let ((v1-3 s4-0))
(set! (-> v1-3 x) 0.0)
(set! (-> v1-3 y) 0.0)
(set! (-> v1-3 z) 0.0)
(set! (-> v1-3 r) 1.0)
)
(let ((v1-4 a1-2))
(set! (-> v1-4 x) 100.0)
(set! (-> v1-4 y) 0.0)
(set! (-> v1-4 z) 0.0)
(set! (-> v1-4 r) 10000.0)
)
(let ((a2-1 (circle-circle-xz-intersect s4-0 a1-2 s5-0 gp-0)))
(format #t "res = ~d~%" a2-1)
)
+5 -5
View File
@@ -16,9 +16,9 @@
:size-assert #x18
:flag-assert #xc00000018
(:methods
(plane-volume-method-9 () none 9)
(plane-volume-method-10 () none 10)
(plane-volume-method-11 () none 11)
(plane-volume-method-9 (_type_ symbol vector-array vector-array) plane-volume 9)
(debug-draw (_type_) none 10)
(point-in-vol? (_type_ vector float) symbol 11)
)
)
@@ -56,8 +56,8 @@
:flag-assert #xc0000061c
(:methods
(new (symbol type process-drawable) _type_ 0)
(vol-control-method-9 (_type_) symbol 9)
(vol-control-method-10 (_type_ vector) symbol 10)
(vol-control-method-9 (_type_) none 9)
(vol-control-method-10 (_type_ plane) symbol 10)
(should-display? (_type_) symbol 11)
)
)
+355
View File
@@ -0,0 +1,355 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for function plane-volume-intersect-dist
(defun plane-volume-intersect-dist ((arg0 vector) (arg1 vector) (arg2 vector))
(let ((f0-1 (vector-dot arg1 arg0))
(f1-1 (vector-dot arg2 arg0))
)
(if (< 0.00001 (fabs f1-1))
(/ (- (-> arg0 w) f0-1) f1-1)
409600000.0
)
)
)
;; definition for method 9 of type plane-volume
;; INFO: Used lq/sq
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
;; WARN: Stack slot offset 148 signed mismatch
(defmethod plane-volume-method-9 plane-volume ((obj plane-volume) (arg0 symbol) (arg1 vector-array) (arg2 vector-array))
(local-vars
(sv-144 vector)
(sv-148 number)
(sv-152 int)
(sv-160 vector)
(sv-176 vector)
(sv-192 vector)
(sv-208 vector)
(sv-224 vector)
(sv-240 int)
(sv-256 int)
)
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
)
(init-vf0-vector)
(set! (-> obj volume-type) arg0)
(set! (-> obj point-count) 0)
(set! (-> obj first-point) (the-as (pointer vector) (-> arg1 data (-> arg1 length))))
(set! (-> obj normal-count) 0)
(set! (-> obj first-normal) (the-as (pointer vector) (-> arg2 data (-> arg2 length))))
(dotimes (s3-0 (-> obj num-planes))
(set! sv-176 (new 'stack-no-clear 'vector))
(set! (-> sv-176 quad) (the-as uint128 0))
(set! sv-192 (new 'stack-no-clear 'vector))
(set! (-> sv-192 quad) (the-as uint128 0))
(set! sv-208 (new 'stack-no-clear 'vector))
(set! (-> sv-208 quad) (the-as uint128 0))
(set! sv-224 (new 'stack-no-clear 'vector))
(set! (-> sv-224 quad) (the-as uint128 0))
0.0
0.0
0.0
(set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0))
(let ((s1-0 (new-stack-vector0))
(s0-0 0)
(s2-0 (-> obj plane))
)
(set! sv-240 0)
(while (< sv-240 (-> obj num-planes))
(when (!= s3-0 sv-240)
(vector-float*! sv-176 (the-as vector (-> s2-0 sv-240)) (-> s2-0 sv-240 w))
(vector-cross! sv-192 (the-as vector (-> s2-0 sv-240)) (the-as vector (-> s2-0 s3-0)))
(vector-normalize! sv-192 1.0)
(vector-cross! sv-208 sv-192 (the-as vector (-> s2-0 sv-240)))
(vector-normalize! sv-208 1.0)
(let ((f0-4 (plane-volume-intersect-dist (-> s2-0 s3-0) sv-176 sv-208)))
(when (!= f0-4 409600000.0)
(let ((v1-28 sv-224))
(let ((a0-12 sv-176))
(.lvf vf2 (&-> sv-208 quad))
(.lvf vf1 (&-> a0-12 quad))
)
(let ((a0-13 f0-4))
(.mov vf3 a0-13)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-28 quad) vf4)
)
(set! sv-144 (new-stack-vector0))
(set! sv-148 0.0)
(set! sv-152 0)
(set! sv-160 (new-stack-vector0))
(set! (-> sv-144 quad) (-> sv-224 quad))
(set! sv-256 0)
(while (< sv-256 (-> obj num-planes))
(when (and (!= sv-256 s3-0) (!= sv-256 sv-240))
(let ((f0-6 (plane-volume-intersect-dist (-> s2-0 sv-256) sv-144 sv-192)))
(cond
((= f0-6 409600000.0)
)
((zero? sv-152)
(let ((v1-42 sv-144))
(let ((a0-19 sv-144))
(.lvf vf2 (&-> sv-192 quad))
(.lvf vf1 (&-> a0-19 quad))
)
(let ((a0-20 f0-6))
(.mov vf3 a0-20)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-42 quad) vf4)
)
(set! (-> sv-160 quad) (-> s2-0 sv-256 quad))
(set! sv-148 8192000.0)
(set! sv-152 1)
)
((begin (vector-float*! sv-224 sv-192 f0-6) (>= (vector-dot sv-224 sv-160) 0.0))
)
((>= (vector-dot sv-224 (the-as vector (-> s2-0 sv-256))) 0.0)
(when (< (fabs f0-6) (fabs (the-as float sv-148)))
(set! sv-148 f0-6)
(set! sv-152 (+ sv-152 1))
)
)
(else
(let ((v1-59 sv-144))
(let ((a0-28 sv-144)
(a1-15 sv-192)
(f1-8 f0-6)
)
(.lvf vf2 (&-> a1-15 quad))
(.lvf vf1 (&-> a0-28 quad))
(let ((a0-29 f1-8))
(.mov vf3 a0-29)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-59 quad) vf4)
)
(set! (-> sv-160 quad) (-> s2-0 sv-256 quad))
(set! sv-152 (+ sv-152 1))
(if (< (fabs f0-6) (fabs (the-as float sv-148)))
(set! sv-148 (- (the-as float sv-148) f0-6))
(set! sv-148 0.0)
)
)
)
)
)
(set! sv-256 (+ sv-256 1))
)
(cond
((zero? sv-152)
)
((= (the-as float sv-148) 0.0)
)
(else
(dotimes (v1-76 (-> obj num-planes))
(when (and (!= v1-76 s3-0) (!= v1-76 sv-240))
(if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-76))) (-> s2-0 v1-76 w)))
(goto cfg-42)
)
)
)
(let ((v1-80 sv-224))
(let ((a0-46 sv-144)
(a1-18 sv-192)
(f0-12 sv-148)
)
(.lvf vf2 (&-> a1-18 quad))
(.lvf vf1 (&-> a0-46 quad))
(let ((a0-47 (the-as float f0-12)))
(.mov vf3 a0-47)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-80 quad) vf4)
)
(cond
((< (-> arg1 allocated-length) (+ (-> arg1 length) 2))
(format 0 "ERROR <AG>: vol-control #x~X out of volume points~%" obj)
)
(else
(set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad))
(set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad))
(+! (-> arg1 length) 2)
(+! (-> obj point-count) 2)
)
)
(vector+! s1-0 s1-0 sv-144)
(vector+! s1-0 s1-0 sv-224)
(+! s0-0 2)
)
)
)
)
)
(label cfg-42)
(set! sv-240 (+ sv-240 1))
)
(when (nonzero? s0-0)
(vector-float*! s1-0 s1-0 (/ 1.0 (the float s0-0)))
(cond
((< (-> arg2 allocated-length) (+ (-> arg2 length) 2))
(format 0 "ERROR <AG>: vol-control #x~X out of volume normals~%" obj)
)
(else
(set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad))
(set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad))
(+! (-> arg2 length) 2)
(set! (-> obj normal-count) (+ (-> obj normal-count) 2))
)
)
)
)
)
obj
)
)
;; definition for method 10 of type plane-volume
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw plane-volume ((obj plane-volume))
(let* ((v1-0 (-> obj volume-type))
(s5-0 (cond
((= v1-0 'vol)
(the-as uint #x8000c000)
)
((= v1-0 'pvol)
(the-as uint #x80808080)
)
(else
(the-as uint #x800000c0)
)
)
)
(s4-0 (-> obj first-point))
)
(dotimes (s3-0 (/ (-> obj point-count) 2))
(add-debug-line
#t
(bucket-id bucket-318)
(the-as vector s4-0)
(the-as vector (&-> s4-0 4))
(the-as rgba s5-0)
#f
(the-as rgba -1)
)
(set! s4-0 (&-> s4-0 8))
)
)
0
(none)
)
;; definition for method 11 of type plane-volume
(defmethod point-in-vol? plane-volume ((obj plane-volume) (arg0 vector) (arg1 float))
"TODO - Checks if the given [[vector]] point is inside the volume defined by 6 [[plane]]s by atleast the padding value provided"
(dotimes (v1-0 (-> obj num-planes))
(if (< arg1 (- (vector-dot arg0 (the-as vector (-> obj plane v1-0))) (-> obj plane v1-0 w)))
(return #f)
)
)
#t
)
;; definition for method 9 of type vol-control
;; WARN: Return type mismatch int vs none.
(defmethod vol-control-method-9 vol-control ((obj vol-control))
(with-pp
(let ((a0-1 obj))
(when (and (and *display-vol-marks* (logtest? (-> a0-1 flags) (vol-flags display?)))
(logtest? (-> obj flags) (vol-flags vol-flags-1))
)
(when (zero? (-> obj debug-point))
(let ((s5-0 pp))
(set! pp (-> obj process))
(let ((s4-0 0))
(dotimes (v1-8 (-> obj pos-vol-count))
(+! s4-0 (-> obj pos-vol v1-8 num-planes))
)
(dotimes (v1-11 (-> obj neg-vol-count))
(+! s4-0 (-> obj neg-vol v1-11 num-planes))
)
(set! (-> obj debug-point) (new 'debug 'vector-array (* 10 s4-0)))
(set! (-> obj debug-normal) (new 'debug 'vector-array (* 10 s4-0)))
)
(set! pp s5-0)
)
(set! (-> obj debug-point length) 0)
(set! (-> obj debug-normal length) 0)
(dotimes (s5-1 (-> obj pos-vol-count))
(plane-volume-method-9 (-> obj pos-vol s5-1) 'vol (-> obj debug-point) (-> obj debug-normal))
)
(dotimes (s5-2 (-> obj neg-vol-count))
(plane-volume-method-9 (-> obj neg-vol s5-2) 'vol (-> obj debug-point) (-> obj debug-normal))
)
)
(dotimes (s5-3 (-> obj pos-vol-count))
(debug-draw (-> obj pos-vol s5-3))
)
(dotimes (s5-4 (-> obj neg-vol-count))
(debug-draw (-> obj neg-vol s5-4))
)
)
)
0
(none)
)
)
;; definition for method 10 of type vol-control
(defmethod vol-control-method-10 vol-control ((obj vol-control) (arg0 plane))
(dotimes (s4-0 (-> obj neg-vol-count))
(if (point-in-vol? (-> obj neg-vol s4-0) arg0 0.0)
(return #f)
)
)
(dotimes (s4-1 (-> obj pos-vol-count))
(if (point-in-vol? (-> obj pos-vol s4-1) arg0 0.0)
(return #t)
)
)
#f
)
+11 -3
View File
@@ -69,9 +69,17 @@
)
;; definition for symbol *font-context*, type font-context
(define *font-context*
(new 'global 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
)
(define *font-context* (new
'global
'font-context
*font-default-matrix*
0
0
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
;; definition for function draw-sprite2d-xy
;; WARN: Return type mismatch pointer vs none.
+12 -2
View File
@@ -238,7 +238,12 @@
(let ((a0-10 (new 'stack-no-clear 'sphere))
(a1-4 (-> *math-camera* trans))
)
(set-vector! a0-10 4898816.0 32768.0 245760.0 1.0)
(let ((v1-6 a0-10))
(set! (-> v1-6 x) 4898816.0)
(set! (-> v1-6 y) 32768.0)
(set! (-> v1-6 z) 245760.0)
(set! (-> v1-6 r) 1.0)
)
(let ((f0-5 (get-sphere-interp a0-10 a1-4 61440.0 69632.0)))
(set-vector! (-> arg0 times 0) 1.0 1.0 1.0 1.0)
(vector-lerp!
@@ -804,7 +809,12 @@
(let ((a0-121 (new 'stack-no-clear 'sphere))
(a1-40 (-> *math-camera* trans))
)
(set-vector! a0-121 -364544.0 0.0 5324800.0 1.0)
(let ((v1-67 a0-121))
(set! (-> v1-67 x) -364544.0)
(set! (-> v1-67 y) 0.0)
(set! (-> v1-67 z) 5324800.0)
(set! (-> v1-67 r) 1.0)
)
(let ((f0-76 (get-sphere-interp a0-121 a1-40 139264.0 24576.0)))
(vector-lerp!
(the-as vector (-> arg0 times))
+6 -1
View File
@@ -747,7 +747,12 @@
(let ((a0-9 (new 'stack-no-clear 'sphere))
(a1-3 (-> *math-camera* trans))
)
(set-vector! a0-9 786432.0 1818624.0 2498560.0 1.0)
(let ((v1-12 a0-9))
(set! (-> v1-12 x) 786432.0)
(set! (-> v1-12 y) 1818624.0)
(set! (-> v1-12 z) 2498560.0)
(set! (-> v1-12 r) 1.0)
)
(let ((f0-8 (- 1.0 (get-sphere-interp a0-9 a1-3 1024000.0 2048000.0))))
(update-mood-weather! *mood-control* (+ 0.25 (* 0.75 f0-8)) (+ 0.5 (* 0.5 f0-8)) 30.0 30.0)
)
@@ -1263,7 +1263,7 @@
;; definition for method 10 of type sparticle-launch-control
(defmethod sparticle-launch-control-method-10 sparticle-launch-control ((obj sparticle-launch-control) (arg0 vector))
(let* ((v1-0 (-> obj group))
(f0-0 (-> v1-0 bounds w))
(f0-0 (-> v1-0 bounds r))
)
(cond
((= f0-0 0.0)
+2 -2
View File
@@ -839,9 +839,9 @@
(format #t "~1Tx: ~f~%" (-> obj x))
(format #t "~1Ty: ~f~%" (-> obj y))
(format #t "~1Tz: ~f~%" (-> obj z))
(format #t "~1Tw: ~f~%" (-> obj w))
(format #t "~1Tw: ~f~%" (-> obj r))
(format #t "~1Tquad: ~D~%" (-> obj quad))
(format #t "~1Tr: ~f~%" (-> obj w))
(format #t "~1Tr: ~f~%" (-> obj r))
(label cfg-4)
obj
)
+3 -3
View File
@@ -1583,9 +1583,9 @@
;; definition for function sphere<-vector!
;; INFO: Used lq/sq
(defun sphere<-vector! ((arg0 sphere) (arg1 vector))
(let ((f0-0 (-> arg0 w)))
(let ((f0-0 (-> arg0 r)))
(set! (-> arg0 quad) (-> arg1 quad))
(set! (-> arg0 w) f0-0)
(set! (-> arg0 r) f0-0)
)
arg0
)
@@ -1594,7 +1594,7 @@
;; INFO: Used lq/sq
(defun sphere<-vector+r! ((arg0 sphere) (arg1 vector) (arg2 float))
(set! (-> arg0 quad) (-> arg1 quad))
(set! (-> arg0 w) arg2)
(set! (-> arg0 r) arg2)
arg0
)
+31 -31
View File
@@ -266,7 +266,7 @@
(callback-info nav-callback-info :offset-assert 4)
(process process :offset-assert 8)
(pad0 uint32 :offset-assert 12)
(shape basic :offset-assert 16)
(shape collide-shape :offset-assert 16)
(nearest-y-threshold meters :offset-assert 20)
(nav-cull-radius meters :offset-assert 24)
(sec-per-frame float :offset-assert 28)
@@ -281,8 +281,8 @@
(sphere-mask uint8 :offset-assert 61)
(pad1 uint8 2 :offset-assert 62)
(sphere-id-array uint8 16 :offset-assert 64)
(extra-nav-sphere vector :inline :offset-assert 80)
(root-nav-sphere vector :inline :offset-assert 96)
(extra-nav-sphere sphere :inline :offset-assert 80)
(root-nav-sphere sphere :inline :offset-assert 96)
(state nav-state :inline :offset-assert 112)
)
:method-count-assert 47
@@ -290,43 +290,43 @@
:flag-assert #x2f00000120
(:methods
(nav-control-method-9 () none 9)
(nav-control-method-10 () none 10)
(point-in-bounds? (_type_ vector) symbol 10)
(nav-control-method-11 (_type_ vector) vector 11)
(nav-control-method-12 () none 12)
(nav-control-method-13 () none 13)
(nav-control-method-14 () none 14)
(nav-control-method-15 () none 15)
(nav-control-method-16 () none 16)
(nav-control-method-17 () none 17)
(find-poly (_type_ vector) nav-poly 13)
(nav-control-method-14 (_type_ nav-poly vector object vector) none 14)
(nav-control-method-15 (_type_ vector) none 15)
(nav-control-method-16 (_type_ vector float) symbol 16)
(is-in-mesh? (_type_ vector float) symbol 17)
(nav-control-method-18 () none 18)
(nav-control-method-19 () none 19)
(nav-control-method-20 (_type_ vector vector vector int symbol symbol) none 20)
(nav-control-method-21 () none 21)
(nav-control-method-22 () none 22)
(nav-control-method-23 () none 23)
(nav-control-method-23 (_type_) none 23)
(nav-control-method-24 () none 24)
(nav-control-method-25 () none 25)
(nav-control-method-26 () none 26)
(nav-control-method-27 () none 27)
(nav-control-method-28 () none 28)
(nav-control-method-29 () none 29)
(nav-control-method-30 () none 30)
(nav-control-method-31 () none 31)
(nav-control-method-32 () none 32)
(nav-control-method-33 () none 33)
(nav-control-method-34 () none 34)
(nav-control-method-35 () none 35)
(nav-control-method-36 () none 36)
(nav-control-method-37 () none 37)
(nav-control-method-38 () none 38)
(nav-control-method-39 () none 39)
(nav-control-method-40 () none 40)
(nav-control-method-41 () none 41)
(nav-control-method-42 () none 42)
(nav-control-method-43 () none 43)
(get-max-rotation-rate (_type_) float 25)
(get-sphere-mask (_type_) none 26)
(get-target-speed (_type_) meters 27)
(nav-control-method-28 (_type_) none 28)
(nav-control-method-29 (_type_) none 29)
(copy-extra-nav-sphere! (_type_ sphere) none 30)
(set-extra-nav-sphere! (_type_ sphere) none 31)
(set-extra-nav-sphere-radius! (_type_ float) none 32)
(set-nearest-y-thres! (_type_ float) none 33)
(set-nav-cull-radius! (_type_ meters) none 34)
(set-speed-scale! (_type_ float) none 35)
(set-target-speed! (_type_ meters) none 36)
(set-acceleration! (_type_ meters) none 37)
(set-turning-acceleration! (_type_ meters) none 38)
(set-max-rotation-rate! (_type_ float) none 39)
(set-sphere-mask! (_type_ uint) none 40)
(nav-control-method-41 (_type_) none 41)
(init! (_type_ collide-shape) none 42)
(display-marks? (_type_) symbol 43)
(nav-control-method-44 () none 44)
(nav-control-method-45 () none 45)
(nav-control-method-46 () none 46)
(nav-control-method-45 (_type_ vector vector vector) sphere 45)
(find-sphere (_type_) none 46)
)
)
+63 -61
View File
@@ -61,10 +61,10 @@
(work-struct-in-scratch int8 :offset-assert 292)
(mesh-struct-in-scratch int8 :offset-assert 293)
(polys-in-scratch int8 :offset-assert 294)
(mesh basic :offset-assert 296)
(mesh nav-mesh :offset-assert 296)
(nav basic :offset-assert 300)
(poly0 basic :offset-assert 304)
(poly1 basic :offset-assert 308)
(poly0 nav-poly :offset-assert 304)
(poly1 nav-poly :offset-assert 308)
(poly-id int32 :offset-assert 312)
)
:method-count-assert 9
@@ -166,9 +166,9 @@
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'nav-poly)
(format #t "~1Tdata[64] @ #x~X~%" (-> obj vertex))
(format #t "~1Tvertex[4] @ #x~X~%" (-> obj vertex))
(format #t "~1Tvertex0: ~`vector`P~%" (-> obj vertex))
(format #t "~1Tdata[64] @ #x~X~%" (-> obj vertex0))
(format #t "~1Tvertex[4] @ #x~X~%" (-> obj vertex0))
(format #t "~1Tvertex0: ~`vector`P~%" (-> obj vertex0))
(format #t "~1Tvertex1: ~`vector`P~%" (-> obj vertex1))
(format #t "~1Tvertex2: ~`vector`P~%" (-> obj vertex2))
(format #t "~1Tvertex3: ~`vector`P~%" (-> obj vertex3))
@@ -189,6 +189,8 @@
;; definition of type nav-vertex
(deftype nav-vertex (vector)
"A typedef for `vector`, not used because our code looks nicer if everything is `vector`s anyway
and declared out of order (cannot use forward declared structures in inline arrays)"
()
:method-count-assert 9
:size-assert #x10
@@ -380,73 +382,73 @@
;; definition of type nav-mesh
(deftype nav-mesh (basic)
((work nav-mesh-work :offset-assert 4)
(poly-array (inline-array nav-poly) :offset-assert 8)
(static-sphere-count uint8 :offset-assert 12)
(poly-count uint8 :offset-assert 13)
(nav-control-count uint8 :offset-assert 14)
(max-nav-control-count uint8 :offset-assert 15)
(route uint32 :offset-assert 16)
(poly-hash basic :offset-assert 20)
(nav-control-array uint32 :offset-assert 24)
(sphere-hash basic :offset-assert 28)
(static-sphere uint32 :offset-assert 32)
(user-list basic :offset-assert 36)
(next-nav-mesh basic :offset-assert 40)
(prev-nav-mesh basic :offset-assert 44)
(bounds sphere :inline :offset-assert 48)
(origin vector :inline :offset 48)
(entity entity :offset-assert 64)
(link-array uint32 :offset-assert 68)
(link-count uint8 :offset-assert 72)
(flags nav-mesh-flag :offset-assert 73)
(pad1 uint8 2 :offset-assert 74)
(nearest-y-threshold meters :offset-assert 76)
(water-max-height meters :offset-assert 80)
(pad2 uint32 7 :offset-assert 84)
((work nav-mesh-work :offset-assert 4)
(poly-array (inline-array nav-poly) :offset-assert 8)
(static-sphere-count uint8 :offset-assert 12)
(poly-count uint8 :offset-assert 13)
(nav-control-count uint8 :offset-assert 14)
(max-nav-control-count uint8 :offset-assert 15)
(route uint32 :offset-assert 16)
(poly-hash grid-hash :offset-assert 20)
(nav-control-array (inline-array nav-control) :offset-assert 24)
(sphere-hash sphere-hash :offset-assert 28)
(static-sphere (inline-array sphere) :offset-assert 32)
(user-list engine :offset-assert 36)
(next-nav-mesh surface :offset-assert 40)
(prev-nav-mesh surface :offset-assert 44)
(bounds sphere :inline :offset-assert 48)
(origin vector :inline :offset 48)
(entity entity :offset-assert 64)
(link-array (array nav-mesh-link) :offset-assert 68)
(link-count uint8 :offset-assert 72)
(flags nav-mesh-flag :offset-assert 73)
(pad1 uint8 2 :offset-assert 74)
(nearest-y-threshold meters :offset-assert 76)
(water-max-height meters :offset-assert 80)
(pad2 uint32 7 :offset-assert 84)
)
:method-count-assert 47
:size-assert #x70
:flag-assert #x2f00000070
(:methods
(nav-mesh-method-9 () none 9)
(nav-mesh-method-10 () none 10)
(nav-mesh-method-11 () none 11)
(nav-mesh-method-12 () none 12)
(nav-mesh-method-13 () none 13)
(nav-mesh-method-14 () none 14)
(nav-mesh-method-15 () none 15)
(nav-mesh-method-9 (_type_) none 9)
(nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly 10)
(nav-mesh-method-11 (_type_ nav-poly vector) vector 11)
(nav-mesh-method-12 (_type_ nav-poly vector) none 12)
(nav-mesh-method-13 (_type_ symbol symbol) none 13)
(get-route-portal (_type_ object object nav-find-poly-parms) none 14)
(initialize-mesh! (_type_) none 15)
(move-along-nav-ray! (_type_ nav-ray) none 16)
(nav-mesh-method-17 () none 17)
(try-move-along-ray (_type_ nav-poly vector vector float) meters 17)
(nav-mesh-method-18 () none 18)
(nav-mesh-method-19 () none 19)
(nav-mesh-method-20 () none 20)
(nav-mesh-method-21 () none 21)
(nav-mesh-method-22 () none 22)
(nav-mesh-method-23 () none 23)
(nav-mesh-method-24 () none 24)
(nav-mesh-method-25 () none 25)
(nav-mesh-method-26 () none 26)
(nav-mesh-method-27 () none 27)
(nav-mesh-method-28 () none 28)
(nav-mesh-method-29 () none 29)
(nav-mesh-method-30 () none 30)
(nav-mesh-method-31 () none 31)
(nav-mesh-method-32 () none 32)
(nav-mesh-method-33 () none 33)
(nav-mesh-method-34 () none 34)
(nav-mesh-method-22 (_type_ vector vector) none 22)
(nav-mesh-method-23 (_type_ entity-nav-mesh) none 23)
(nav-mesh-method-24 (_type_) none 24)
(nav-mesh-method-25 (_type_) none 25)
(nav-mesh-method-26 (_type_) none 26)
(new-nav-control (_type_ vector int) nav-control 27)
(nav-mesh-method-28 (_type_ object) none 28)
(nav-mesh-method-29 (_type_ object symbol) nav-control 29)
(nav-mesh-method-30 (_type_ process-drawable) none 30)
(change-to (_type_ process-drawable) none 31)
(nav-mesh-method-32 (_type_ uint32) none 32)
(nav-mesh-method-33 (_type_ uint32) symbol 33)
(nav-mesh-method-34 (_type_ object vector float) none 34)
(nav-mesh-method-35 () none 35)
(nav-mesh-method-36 () none 36)
(nav-mesh-method-36 (_type_ nav-poly rgba) none 36)
(point-in-poly? (_type_ nav-poly vector) symbol 37)
(nav-mesh-method-38 () none 38)
(nav-mesh-method-38 (_type_ nav-poly vector vector vector object) vector 38)
(closest-point-on-boundary (_type_ nav-poly vector vector) none 39)
(nav-mesh-method-40 () none 40)
(nav-mesh-method-40 (_type_ nav-poly vector object vector) none 40)
(project-point-into-poly-2d (_type_ nav-poly vector vector) none 41)
(nav-mesh-method-42 () none 42)
(nav-mesh-method-43 () none 43)
(nav-mesh-method-44 () none 44)
(nav-mesh-method-45 () none 45)
(nav-mesh-method-46 () none 46)
(nav-mesh-method-42 (_type_ nav-find-poly-parms) symbol 42)
(nav-mesh-method-43 (_type_ nav-find-poly-parms) none 43)
(nav-mesh-method-44 (_type_ vector float float) symbol 44)
(nav-mesh-method-45 (_type_ entity-perm) none 45)
(nav-mesh-method-46 (_type_ object) none 46)
)
)
@@ -637,7 +639,7 @@
(let* ((a3-0 obj)
(v1-0 arg1)
(a0-1 (-> arg0 vertex-count))
(a1-1 (-> arg0 vertex))
(a1-1 (the-as (inline-array vector) (-> arg0 vertex0)))
(a2-2 (-> a3-0 work vert0-table))
(a3-2 (-> a3-0 work vert1-table))
)
@@ -840,7 +842,7 @@
(+! (-> ray current-pos z) delta-z)
(set! sv-68 (-> current-poly adj-poly next-poly-idx))
(if (!= sv-68 255)
(set! (-> ray next-poly) (-> obj poly-array sv-68))
(set! (-> ray next-poly) (the-as nav-poly (-> obj poly-array sv-68 vertex0)))
)
(cond
((and (-> ray next-poly) (zero? (logand (-> ray next-poly pat) (-> ray ignore))))
+1 -1
View File
@@ -153,7 +153,7 @@
)
)
)
(draw-string-xy *temp-string* arg0 32 (+ (* 12 s4-0) 8) (font-color orange-red) (font-flags shadow))
(draw-string-xy *temp-string* arg0 32 (+ (* 12 s4-0) 8) (font-color precursor-#ec3b00) (font-flags shadow))
)
)
0
+6 -6
View File
@@ -1150,7 +1150,7 @@
arg0
(+ (* s5-0 16) 16)
48
(font-color default)
(font-color default-#cddbcd)
(font-flags shadow)
)
)
@@ -1163,7 +1163,7 @@
arg0
(+ (* s5-1 16) 16)
64
(font-color default)
(font-color default-#cddbcd)
(font-flags shadow)
)
)
@@ -1175,7 +1175,7 @@
(-> *level* sound-bank 1)
(-> *level* sound-bank 2)
)
(s5-2 *temp-string* arg0 16 88 (font-color default) (font-flags shadow))
(s5-2 *temp-string* arg0 16 88 (font-color default-#cddbcd) (font-flags shadow))
)
(let ((s5-3 draw-string-xy))
(format
@@ -1188,7 +1188,7 @@
(-> *setting-control* user-current sound-excitement)
(-> *setting-control* user-current mode-sound-bank)
)
(s5-3 *temp-string* arg0 16 104 (font-color default) (font-flags shadow))
(s5-3 *temp-string* arg0 16 104 (font-color default-#cddbcd) (font-flags shadow))
)
0
)
@@ -1202,7 +1202,7 @@
(-> *sound-iop-info* freemem)
(shr (-> *sound-iop-info* freemem) 10)
)
(s5-0 *temp-string* arg0 32 96 (font-color default) (font-flags shadow))
(s5-0 *temp-string* arg0 32 96 (font-color default-#cddbcd) (font-flags shadow))
)
(let ((s5-1 draw-string-xy))
(format
@@ -1211,7 +1211,7 @@
(-> *sound-iop-info* freemem2)
(shr (-> *sound-iop-info* freemem2) 10)
)
(s5-1 *temp-string* arg0 32 64 (font-color default) (font-flags shadow))
(s5-1 *temp-string* arg0 32 64 (font-color default-#cddbcd) (font-flags shadow))
)
0
)
+6 -10
View File
@@ -137,11 +137,11 @@
;; definition of type sphere-hash
(deftype sphere-hash (grid-hash)
((sphere-array uint32 :offset-assert 88)
(max-object-count int16 :offset-assert 92)
(pad int16 :offset-assert 94)
(mem-sphere-array uint32 :offset-assert 96)
(spr-sphere-array uint32 :offset-assert 100)
((sphere-array (inline-array sphere) :offset-assert 88)
(max-object-count int16 :offset-assert 92)
(pad int16 :offset-assert 94)
(mem-sphere-array uint32 :offset-assert 96)
(spr-sphere-array uint32 :offset-assert 100)
)
:method-count-assert 34
:size-assert #x68
@@ -152,7 +152,7 @@
(sphere-hash-method-27 () none 27)
(sphere-hash-method-28 () none 28)
(sphere-hash-method-29 () none 29)
(sphere-hash-method-30 () none 30)
(sphere-hash-method-30 (_type_ find-nav-sphere-ids-params) none 30)
(sphere-hash-method-31 () none 31)
(sphere-hash-method-32 () none 32)
(sphere-hash-method-33 () none 33)
@@ -271,7 +271,3 @@
;; failed to figure out what this is:
0
+3 -3
View File
@@ -422,14 +422,14 @@
)
(set! (-> s5-0 0 quad) (-> v1-51 quad))
(set! (-> s5-0 0 y) (+ 8192.0 (-> s5-0 0 y)))
(set! (-> s5-0 0 w) 2867.2)
(set! (-> s5-0 0 r) 2867.2)
(set! (-> s5-0 1 quad) (-> v1-51 quad))
(set! (-> s5-0 1 y) (+ 12288.0 (-> s5-0 1 y)))
(set! (-> s5-0 1 w) 2867.2)
(set! (-> s5-0 1 r) 2867.2)
(set! (-> s5-0 2 quad) (-> v1-51 quad))
)
(set! (-> s5-0 2 y) (+ 16384.0 (-> s5-0 2 y)))
(set! (-> s5-0 2 w) 2867.2)
(set! (-> s5-0 2 r) 2867.2)
(let ((v1-55 gp-0))
(set! (-> v1-55 spheres) s5-0)
(set! (-> v1-55 num-spheres) (the-as uint 3))
+6 -6
View File
@@ -1206,8 +1206,8 @@
(deftype game-task-node-info (basic)
((level basic :offset-assert 4)
(task game-task :offset-assert 8)
(name basic :offset-assert 12)
(when-open basic :offset-assert 16)
(name string :offset-assert 12)
(when-open array :offset-assert 16)
(flags game-task-node-flag :offset-assert 20)
(parent-node uint16 4 :offset-assert 24)
(task-mask task-mask :offset-assert 32)
@@ -1333,14 +1333,14 @@
;; definition of type game-task-info
(deftype game-task-info (basic)
((name basic :offset-assert 4)
((name string :offset-assert 4)
(text-name uint32 :offset-assert 8)
(pre-play-node uint16 :offset-assert 12)
(kiosk-play-node uint16 :offset-assert 14)
(pre-play-continue basic :offset-assert 16)
(pre-play-continue string :offset-assert 16)
(play-node uint16 :offset-assert 20)
(play-continue basic :offset-assert 24)
(kiosk-play-continue basic :offset-assert 28)
(play-continue string :offset-assert 24)
(kiosk-play-continue string :offset-assert 28)
)
:method-count-assert 9
:size-assert #x20
+3 -3
View File
@@ -441,7 +441,7 @@
(sv-40 float)
(sv-44 float)
(sv-48 float)
(sv-52 int)
(sv-52 float)
(sv-56 float)
(sv-64 int)
(sv-72 uint)
@@ -471,7 +471,7 @@
(set! sv-40 (-> arg1 origin x))
(set! sv-44 (+ (-> arg1 origin x) (-> arg1 width)))
(set! sv-48 (+ (-> arg1 origin y) (-> arg1 height)))
(set! sv-52 (gpr->fpr (.asm.sllv.r0 (get-string-length " " arg1))))
(set! sv-52 (-> (get-string-length " " arg1) length))
(set! sv-56 (* (if (logtest? (-> arg1 flags) (font-flags large))
(the float arg3)
28.0
@@ -536,7 +536,7 @@
(when sv-108
(set! (-> *game-text-word* data sv-80) (the-as uint 0))
(let ((f30-1 sv-36))
(set! sv-120 (the int (the-as float (.asm.sllv.r0 (get-string-length *game-text-word* arg1)))))
(set! sv-120 (the int (the-as float (-> (get-string-length *game-text-word* arg1) length))))
(let ((f0-26 (+ f30-1 (the float sv-120))))
(if (= (-> *game-text-word* data (+ sv-80 -1)) 32)
(set! f0-26 (- f0-26 (the-as float sv-52)))
+8 -8
View File
@@ -684,8 +684,8 @@
488
arg1
(if (>= f30-0 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
@@ -700,8 +700,8 @@
488
arg1
(if (>= f30-0 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
@@ -735,8 +735,8 @@
488
arg1
(if (>= f30-1 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
@@ -751,8 +751,8 @@
488
arg1
(if (>= f30-1 100.0)
(font-color orange-red)
(font-color default)
(font-color precursor-#ec3b00)
(font-color default-#cddbcd)
)
(font-flags shadow right)
)
+1 -10
View File
@@ -60,19 +60,10 @@
"ja-play-spooled-anim",
// default menu
// - causes a decompiler hang
"dm-cam-setting-float",
"debug-menu-make-camera-menu", // requires the above, fine on it's own
// - delayed until game-info is better understood
"debug-menu-make-play-menu",
"debug-menu-make-task-sub-menu",
// - weird array accessing pattern, we never fixed it in jak 1
"all-texture-tweak-adjust",
"debug-menu-make-shader-menu", // requires the above, fine on it's own
// - process-spawn macro issues
"dm-scene-load-pick-func",
"popup-menu-context-make-default-menus",
"debug-menu-context-make-default-menus",
// camera
// - vector-dot issue
"slave-set-rotation!",