mirror of
https://github.com/open-goal/jak-project
synced 2026-08-17 13:40:39 -04:00
6d99f1bfc1
Reasons for doing so include: 1. This should stop the confusion around editing the wrong config file's flags -- when for example, extracting a level. Common settings can be in one central place, with bespoke overrides being provided for each version 2. Less verbose way of supporting multiple game versions. You don't have to duplicate the entire `type_casts` file for example, just add or override the json objects required. 3. Makes the folder structure consistent, Jak 1's `all-types` is now in a `jak1` folder, etc.
562 lines
17 KiB
JSON
562 lines
17 KiB
JSON
{
|
|
////////////////////////////
|
|
// HACKS and ASM FUNCTIONS
|
|
////////////////////////////
|
|
|
|
"types_with_bad_inspect_methods": [
|
|
"engine",
|
|
"bsp-header",
|
|
"joint-anim-matrix",
|
|
"part-tracker"
|
|
],
|
|
|
|
"no_type_analysis_functions_by_name": [],
|
|
|
|
// this limits the number of cases in a cond. The first argument is the name of the function.
|
|
// the second argument is the name of the first condition in the cond. Use print_cfg to find it out.
|
|
// The third argument is the number of cases. If you set it too small it may fail to build the CFG.
|
|
"cond_with_else_max_lengths": [
|
|
["(method 20 res-lump)", "b0", 2],
|
|
["(method 11 res-lump)", "b0", 1],
|
|
["(method 12 res-lump)", "b0", 1]
|
|
],
|
|
|
|
// if a cond with an else case is being used a value in a place where it looks wrong
|
|
// you can add the function name to this list and it will more aggressively reject this rewrite.
|
|
"aggressively_reject_cond_to_value_rewrite": [
|
|
"(method 10 res-lump)",
|
|
"(method 11 res-lump)",
|
|
"(method 12 res-lump)",
|
|
"(method 7 texture-page)"
|
|
],
|
|
|
|
// this provides a hint to the decompiler that these functions will have a lot of inline assembly.
|
|
// currently it just leaves pcpyld as an asm op.
|
|
"hint_inline_assembly_functions": ["matrix-transpose!"],
|
|
|
|
"asm_functions_by_name": [
|
|
// gcommon
|
|
"quad-copy!",
|
|
|
|
// gkernel
|
|
"(method 11 cpu-thread)",
|
|
"throw",
|
|
"return-from-thread",
|
|
"return-from-thread-dead",
|
|
"reset-and-call",
|
|
"(method 10 cpu-thread)",
|
|
"(method 0 catch-frame)",
|
|
"throw-dispatch",
|
|
"set-to-run-bootstrap",
|
|
"run-function-in-process", // not asm, but it uses the stack.
|
|
|
|
// pskernel
|
|
"return-from-exception", // F: eret
|
|
"kernel-read-function", // F: delay slot tricks
|
|
"kernel-write-function", // F: delay slot tricks
|
|
"kernel-copy-function",
|
|
"kernel-check-hardwired-addresses",
|
|
|
|
// math
|
|
"rand-uint31-gen",
|
|
|
|
// bounding box
|
|
"(method 9 bounding-box)", // F: asm branching
|
|
"(method 14 bounding-box)",
|
|
|
|
// matrix
|
|
"(method 9 matrix)", // F: asm branching
|
|
"matrix-axis-sin-cos!", // F: asm branching
|
|
"matrix-axis-sin-cos-vu!",
|
|
|
|
// geometry
|
|
"circle-circle-xz-intersect", // F: asm branching
|
|
|
|
// trigonometry
|
|
"exp", // BUG: cfg is wrong.
|
|
"atan0", // P: manual use of stack
|
|
"sincos!", // P: manual use of stack
|
|
"sincos-rad!",
|
|
|
|
// dma-h
|
|
"dma-count-until-done", // F: asm branching
|
|
"dma-sync-with-count", // F: asm branching
|
|
"dma-send-no-scratch", // F: asm branching
|
|
"dma-sync-fast",
|
|
|
|
// dma
|
|
"symlink3", // F: asm branching
|
|
"symlink2", // F: asm branching
|
|
"dma-sync-hang",
|
|
|
|
// display
|
|
"vblank-handler", // F: weird asm for interrupt handler
|
|
"vif1-handler", // F: weird asm for interrupt handler
|
|
"vif1-handler-debug",
|
|
|
|
// vector
|
|
"vector=", // asm branching
|
|
|
|
// collide-mesh-h
|
|
"(method 11 collide-mesh-cache)",
|
|
|
|
// collide-func
|
|
"moving-sphere-triangle-intersect", // P: weird branching
|
|
"collide-do-primitives", // P: asm branching
|
|
|
|
// joint
|
|
"calc-animation-from-spr", // F: asm branching
|
|
"decompress-frame-data-pair-to-accumulator", // P: asm calling
|
|
"decompress-frame-data-to-accumulator", // P: asm calling
|
|
"decompress-fixed-data-to-accumulator", // P: asm calling
|
|
"normalize-frame-quaternions", // F: asm branching, return
|
|
"clear-frame-accumulator", // F: asm branching
|
|
"cspace<-parented-transformq-joint!",
|
|
|
|
// sprite
|
|
|
|
// merc-blend-shape
|
|
"setup-blerc-chains-for-one-fragment", // F: asm branching
|
|
"merc-dma-chain-to-spr", // F: asm branching
|
|
"blerc-a-fragment",
|
|
|
|
// ripple
|
|
"ripple-matrix-scale",
|
|
"ripple-apply-wave-table",
|
|
"ripple-create-wave-table",
|
|
"ripple-execute-init",
|
|
|
|
// bones
|
|
"draw-bones-hud",
|
|
"draw-bones",
|
|
"draw-bones-check-longest-edge-asm",
|
|
"draw-bones-merc",
|
|
"bones-mtx-calc-execute",
|
|
"bones-mtx-calc",
|
|
"texscroll-execute",
|
|
|
|
// generic-effect
|
|
"generic-debug-light-proc",
|
|
"generic-none-dma-wait",
|
|
"generic-copy-vtx-dclr-dtex",
|
|
"generic-light",
|
|
"generic-envmap-only-proc",
|
|
"generic-no-light",
|
|
"generic-no-light+envmap",
|
|
"generic-no-light-dproc",
|
|
"generic-no-light-dproc-only",
|
|
"generic-no-light-proc",
|
|
"generic-interp-dproc",
|
|
"generic-envmap-dproc",
|
|
"generic-prepare-dma-single",
|
|
"generic-prepare-dma-double",
|
|
"generic-envmap-proc",
|
|
"generic-light-proc",
|
|
"generic-dma-from-spr",
|
|
"upload-vu0-program",
|
|
|
|
// generic-merc
|
|
"generic-merc-execute-all",
|
|
"generic-merc-execute-asm",
|
|
"high-speed-reject",
|
|
"mercneric-convert",
|
|
"mercneric-bittable-asm",
|
|
"mercneric-shader-asm",
|
|
"mercneric-matrix-asm",
|
|
"generic-merc-init-asm",
|
|
|
|
// generic-tie
|
|
"generic-tie-convert",
|
|
"generic-tie-convert-proc",
|
|
"generic-tie-upload-next",
|
|
"generic-tie-decompress",
|
|
"generic-tie-dma-to-spad-sync",
|
|
|
|
// shadow-cpu
|
|
"shadow-execute",
|
|
"shadow-add-double-edges",
|
|
"shadow-add-double-tris",
|
|
"shadow-add-single-edges",
|
|
"shadow-add-facing-single-tris",
|
|
"shadow-add-verts",
|
|
"shadow-find-double-edges",
|
|
"shadow-find-facing-double-tris",
|
|
"shadow-find-single-edges",
|
|
"shadow-find-facing-single-tris",
|
|
"shadow-scissor-top",
|
|
"shadow-scissor-edges",
|
|
"shadow-calc-dual-verts",
|
|
|
|
// background
|
|
"background-upload-vu0",
|
|
|
|
// draw-node
|
|
"draw-node-cull",
|
|
|
|
// shrubbery
|
|
"test-func",
|
|
"draw-inline-array-instance-shrub",
|
|
|
|
// tfrag
|
|
"stats-tfrag-asm",
|
|
"draw-inline-array-tfrag-near",
|
|
"draw-inline-array-tfrag",
|
|
|
|
// tie-methods
|
|
"draw-inline-array-prototype-tie-near-asm",
|
|
"draw-inline-array-prototype-tie-asm",
|
|
"draw-inline-array-prototype-tie-generic-asm",
|
|
"draw-inline-array-instance-tie",
|
|
|
|
// sparticle-launcher
|
|
"sp-init-fields!",
|
|
|
|
// sparticle
|
|
"memcpy",
|
|
"sp-process-block-3d",
|
|
"sp-process-block-2d",
|
|
"sp-launch-particles-var",
|
|
"particle-adgif",
|
|
"sp-init-fields!",
|
|
|
|
// time-of-day
|
|
"time-of-day-interp-colors-scratch",
|
|
"time-of-day-interp-colors",
|
|
|
|
// sky-tng
|
|
"clip-polygon-against-negative-hyperplane",
|
|
"clip-polygon-against-positive-hyperplane",
|
|
"draw-large-polygon",
|
|
|
|
// load-boundary
|
|
"render-boundary-tri",
|
|
"render-boundary-quad",
|
|
"draw-boundary-polygon",
|
|
|
|
// collide-probe
|
|
"collide-probe-instance-tie",
|
|
"collide-probe-node",
|
|
|
|
// collide-mesh
|
|
"(method 10 collide-mesh)",
|
|
"(method 13 collide-mesh)",
|
|
"(method 9 collide-mesh-cache)",
|
|
"(method 15 collide-mesh)",
|
|
"(method 14 collide-mesh)",
|
|
"(method 11 collide-mesh)",
|
|
"(method 12 collide-mesh)",
|
|
|
|
// collide-edge-grab
|
|
"(method 13 collide-edge-work)",
|
|
"(method 17 collide-edge-work)",
|
|
"(method 15 collide-edge-work)",
|
|
"(method 16 collide-edge-work)",
|
|
"(method 9 edge-grab-info)", // maybe bug
|
|
"(method 18 collide-edge-work)",
|
|
"(method 10 collide-edge-hold-list)",
|
|
|
|
// collide-shape
|
|
"(method 15 collide-shape-prim-mesh)", // BUG:
|
|
"(method 15 collide-shape-prim-sphere)", // BUG:
|
|
"(method 16 collide-shape-prim)",
|
|
"(method 15 collide-shape-prim-group)",
|
|
"(method 45 collide-shape)",
|
|
"(method 28 collide-shape-prim-mesh)", // BUG:
|
|
"(method 29 collide-shape-prim-group)",
|
|
"(method 20 collide-shape-prim-group)",
|
|
"(method 19 collide-shape-prim-sphere)",
|
|
"(method 18 collide-shape-prim-sphere)",
|
|
"(method 23 collide-shape-prim-sphere)",
|
|
"(method 23 collide-shape-prim-mesh)", // BUG: maybe
|
|
"(method 24 collide-shape-prim)",
|
|
"(method 23 collide-shape-prim-group)",
|
|
"(method 42 collide-shape)",
|
|
|
|
// collide-shape-rider
|
|
"(method 35 collide-shape)",
|
|
|
|
// process-drawable BUG
|
|
"cspace-inspect-tree", // BUG:
|
|
"process-drawable-birth-fuel-cell", // BUG:
|
|
"(method 19 process-drawable)",
|
|
|
|
// ambient
|
|
"ambient-inspect",
|
|
|
|
// generic-obs BUG
|
|
"camera-change-to",
|
|
|
|
// target BUG
|
|
"target-falling-anim-trans",
|
|
|
|
// target2 BUG
|
|
"(anon-function 33 target2)", // BUG:
|
|
"(anon-function 67 target2)", // BUG:
|
|
"look-for-points-of-interest",
|
|
|
|
// drawable-tree
|
|
"(method 16 drawable-tree)",
|
|
|
|
// collide-cache
|
|
"(method 10 collide-puss-work)",
|
|
"(method 9 collide-puss-work)",
|
|
"(method 19 collide-cache)",
|
|
"(method 10 collide-cache-prim)",
|
|
"(method 9 collide-cache-prim)",
|
|
"(method 30 collide-cache)",
|
|
"(method 13 collide-shape-prim-group)",
|
|
"(method 13 collide-shape-prim-sphere)",
|
|
"(method 13 collide-shape-prim-mesh)",
|
|
"(method 14 collide-shape-prim-group)",
|
|
"(method 14 collide-shape-prim-sphere)",
|
|
"(method 14 collide-shape-prim-mesh)",
|
|
"(method 12 collide-shape-prim-group)", // BUG: maybe
|
|
"(method 12 collide-shape-prim-sphere)",
|
|
"(method 12 collide-shape-prim-mesh)",
|
|
"(method 29 collide-cache)",
|
|
"(method 27 collide-cache)",
|
|
"(method 14 collide-cache)",
|
|
"(method 28 collide-cache)",
|
|
"(method 26 collide-cache)",
|
|
"(method 21 collide-cache)",
|
|
"(method 32 collide-cache)",
|
|
|
|
// memory-usage BUG
|
|
//"(method 14 level)",
|
|
|
|
// navigate BUG
|
|
"(method 32 nav-control)",
|
|
|
|
// collectables BUG
|
|
"add-blue-motion",
|
|
|
|
// ocean
|
|
"draw-large-polygon-ocean",
|
|
|
|
// ocean-vu0
|
|
"ocean-generate-verts",
|
|
"ocean-interp-wave",
|
|
|
|
// nav-enemy BUG
|
|
// "(anon-function 28 nav-enemy)",
|
|
|
|
// orb-cache BUG
|
|
"(method 27 orb-cache-top)",
|
|
|
|
// ropebridge BUG
|
|
"(method 27 ropebridge)",
|
|
|
|
// all unchecked and in level DGO code
|
|
"(anon-function 21 plant-boss)",
|
|
"(anon-function 10 ice-cube)",
|
|
"(anon-function 15 ice-cube)",
|
|
"(anon-function 45 lavatube-energy)",
|
|
"mistycannon-find-best-solution",
|
|
"target-flut-falling-anim-trans",
|
|
"kermit-check-to-hit-player?",
|
|
"(anon-function 6 title-obs)",
|
|
"(anon-function 36 mistycannon)",
|
|
"(anon-function 43 maincave-obs)",
|
|
"(anon-function 2 target-tube)",
|
|
"(anon-function 5 orbit-plat)",
|
|
"(anon-function 2 ogreboss)"
|
|
|
|
],
|
|
|
|
// these functions use pairs and the decompiler
|
|
// will be less picky about types related to pairs.
|
|
"pair_functions_by_name": [
|
|
"ref",
|
|
"last",
|
|
"member",
|
|
"nmember",
|
|
"assoc",
|
|
"assoce",
|
|
"append!",
|
|
"delete!",
|
|
"delete-car!",
|
|
"insert-cons!",
|
|
"sort",
|
|
"unload-package",
|
|
"(method 4 pair)",
|
|
"nassoc",
|
|
"nassoce",
|
|
"lookup-level-info",
|
|
"(method 21 level-group)",
|
|
"(method 12 level)",
|
|
"update-sound-banks",
|
|
"(method 16 level-group)",
|
|
"bg",
|
|
"(method 18 game-info)",
|
|
"debug-menu-context-default-selection",
|
|
"debug-menu-rebuild",
|
|
"debug-menu-func-decode",
|
|
"debug-menu-make-from-template",
|
|
"debug-menu-render",
|
|
"debug-menu-context-select-next-or-prev-item",
|
|
"debug-menu-context-select-new-item",
|
|
"debug-menu-send-msg",
|
|
"debug-menu-find-from-template",
|
|
"build-continue-menu",
|
|
"(method 8 process-tree)",
|
|
"(method 16 load-state)",
|
|
"(method 15 load-state)",
|
|
"build-continue-menu",
|
|
"entity-remap-names",
|
|
"(method 21 swamp-rat-nest-dummy-a)",
|
|
"(method 21 swamp-rat-nest-dummy-b)",
|
|
"(method 21 swamp-rat-nest-dummy-c)",
|
|
"(method 27 battlecontroller)",
|
|
"load-boundary-from-template",
|
|
"command-get-time",
|
|
"command-get-param",
|
|
"command-get-quoted-param"
|
|
],
|
|
|
|
// If format is used with the wrong number of arguments,
|
|
// it will often mess up the decompilation, as the decompiler assumes
|
|
// that they used the correct number. This will override the decompiler's
|
|
// automatic detection.
|
|
"bad_format_strings": {
|
|
"ERROR: dma tag has data in reserved bits ~X~%": 0,
|
|
"#<surface f0:~m f1:~f tf+:~f tf-:~f sf:~f tvv:~m": 5,
|
|
"ERROR<GMJ>: value of symbol ~A in task-controls is not a task-control~%": 0,
|
|
"~0K~10,'-S--~5,'-DK-of-~5,'-DK--~5,'-DK-of-~5,'-DK--": 5,
|
|
" bsp ~192H~5DK ~280Hdebug~456H~5DK~%": 2,
|
|
" bsp-leaf-vis-iop ~192H~5DK~%": 1,
|
|
" bsp-leaf-vis-adj ~192H~5DK~%": 1,
|
|
" level-code ~192H~5DK~%": 1,
|
|
" tfrag ~192H~5DK ~280Htfragment~456H~5DK~%": 2,
|
|
" tie-proto ~192H~5DK ~280Hsky~456H~5DK~%": 2,
|
|
" tie-instance ~192H~5DK ~280Htie-fragment~456H~5DK~%": 2,
|
|
" shrub-proto ~192H~5DK ~280Htie-near~456H~5DK~%": 2,
|
|
" shrub-instance ~192H~5DK ~280Hshrubbery~456H~5DK~%": 2,
|
|
" collision ~192H~5DK ~280Htie-generic~456H~5DK~%": 2,
|
|
" pris-geo ~192H~5DK ~280Hpris-fragment~456H~5DK~%": 2,
|
|
" pris-anim ~192H~5DK ~280Hpris-generic~456H~5DK~%": 2,
|
|
" textures ~192H~5DK ~280Htextures~456H~5DK~%": 2,
|
|
" entity ~192H~5DK~%": 2,
|
|
" misc ~192H~5DK ~280Hsprite~456H~5DK~%": 2,
|
|
"ERROR: <asg> ~A in spool anim loop for ~A ~D, but not loaded.~": 3,
|
|
"~0k~5d/~d ~6d/~d ~6d/~d ": 6,
|
|
"~0k~s~%": 1
|
|
},
|
|
|
|
"blocks_ending_in_asm_branch": {
|
|
"closest-pt-in-triangle": [17],
|
|
|
|
// this one is all asm branches
|
|
"circle-circle-xz-intersect": [
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
|
|
],
|
|
|
|
"find-knot-span": [0, 1, 2, 3, 5, 6, 7, 8, 9],
|
|
|
|
"curve-evaluate!": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
|
|
"(method 9 texture-page-dir)": [4, 5],
|
|
|
|
"adgif-shader<-texture-with-update!": [0, 1],
|
|
|
|
"display-loop": [44, 49, 66, 96],
|
|
|
|
"load-game-text-info": [12, 13, 14, 18],
|
|
|
|
"real-main-draw-hook": [75, 77],
|
|
|
|
"(method 12 perf-stat)": [0],
|
|
"(method 11 perf-stat)": [0],
|
|
"raw-ray-sphere-intersect": [0, 1, 2, 3, 4, 5],
|
|
"ray-cylinder-intersect": [0, 1, 2, 3, 4, 5],
|
|
"ray-triangle-intersect": [0, 1, 2, 3, 4],
|
|
"bsp-camera-asm": [1, 2, 3],
|
|
"level-remap-texture": [2, 3, 4, 5, 6],
|
|
"start-perf-stat-collection": [26],
|
|
"end-perf-stat-collection": [0],
|
|
"sprite-draw-distorters": [4, 5],
|
|
"draw-string": [
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
|
|
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
|
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
|
|
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
|
|
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
|
|
94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
|
|
110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
|
|
125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
|
|
140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
|
|
155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
|
|
170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
|
|
185, 186, 187, 188, 189
|
|
],
|
|
"get-string-length": [
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
|
|
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50
|
|
],
|
|
"unpack-comp-rle": [1, 3, 5, 6],
|
|
"(method 16 level)": [1, 5, 13, 14, 15, 19, 26, 53],
|
|
"unpack-comp-huf": [2, 4, 5, 6, 7, 8, 9],
|
|
"blerc-execute": [
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33
|
|
],
|
|
"(method 11 fact-info-target)": [42],
|
|
"(anon-function 9 game-save)": [3, 4, 5, 6, 7, 8, 10],
|
|
//"(anon-function 9 game-save)":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
|
|
"particle-adgif": [0, 1, 2, 3, 4, 5, 7],
|
|
"sp-launch-particles-var": [
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
|
|
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
|
|
57, 58, 59, 60, 61, 62, 63, 64, 65, 66
|
|
],
|
|
"(method 11 sparticle-launch-control)": [27, 28, 35, 46, 48, 49, 77],
|
|
"upload-vis-bits": [0, 1, 2, 3, 4, 5, 6]
|
|
},
|
|
|
|
// Sometimes the game might use format strings that are fetched dynamically,
|
|
// for example using the game text lookup method
|
|
// Add information about those format instructions here.
|
|
// e.g. "function-name":[[op, argc], [op, argc], ...]
|
|
// where "op" is the op number for the call to format.
|
|
"dynamic_format_arg_counts": {
|
|
"(method 35 progress)": [
|
|
[44, 1],
|
|
[92, 1]
|
|
],
|
|
"(method 49 progress)": [[35, 1]],
|
|
"(method 37 progress)": [[41, 1]],
|
|
"(method 38 progress)": [[106, 1]],
|
|
"(method 39 progress)": [[56, 1], [83, 1]],
|
|
"(method 41 progress)": [[73, 1]],
|
|
"(method 42 progress)": [[41, 1]],
|
|
"(method 43 progress)": [
|
|
[51, 1],
|
|
[94, 1]
|
|
],
|
|
"": []
|
|
},
|
|
|
|
"mips2c_functions_by_name": [
|
|
"sp-init-fields!",
|
|
"particle-adgif",
|
|
"sp-launch-particles-var",
|
|
"sp-process-block-2d",
|
|
"sp-process-block-3d",
|
|
"draw-large-polygon",
|
|
"clip-polygon-against-positive-hyperplane",
|
|
"clip-polygon-against-negative-hyperplane",
|
|
"render-sky-quad",
|
|
"render-sky-tri",
|
|
"init-sky-regs",
|
|
"set-tex-offset",
|
|
"adgif-shader<-texture-with-update!",
|
|
"init-boundary-regs",
|
|
"draw-boundary-polygon",
|
|
"render-boundary-quad",
|
|
"render-boundary-tri"
|
|
]
|
|
}
|
|
|
|
|