mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
20e5f671b1
* add configs * final fixes * Update main.gc * fix "NO-XGO" gen bug * oops grr
562 lines
17 KiB
Plaintext
562 lines
17 KiB
Plaintext
{
|
|
////////////////////////////
|
|
// 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"
|
|
]
|
|
}
|
|
|
|
|