From 70e231fa72a17a6091067ba20588736cb477a1a2 Mon Sep 17 00:00:00 2001 From: water111 <48171810+water111@users.noreply.github.com> Date: Wed, 30 Nov 2022 22:36:09 -0500 Subject: [PATCH] [jak 2] merc (#2039) --- common/goos/Printer.cpp | 3 +- common/type_system/deftype.cpp | 2 +- decompiler/IR2/AtomicOp.cpp | 3 +- decompiler/config/jak2/all-types.gc | 423 ++- .../jak2/anonymous_function_types.jsonc | 14 +- decompiler/config/jak2/hacks.jsonc | 15 +- decompiler/config/jak2/inputs.jsonc | 18 +- decompiler/config/jak2/label_types.jsonc | 43 +- decompiler/config/jak2/stack_structures.jsonc | 20 +- decompiler/config/jak2/type_casts.jsonc | 181 +- decompiler/config/jak2/var_names.jsonc | 83 + decompiler/config/jak2_ntsc_v1.jsonc | 2 +- decompiler/level_extractor/extract_level.cpp | 4 - decompiler/level_extractor/extract_merc.cpp | 12 +- decompiler/types2/types2.cpp | 1 - decompiler/util/data_decompile.cpp | 11 +- game/CMakeLists.txt | 2 + .../opengl_renderer/DirectRenderer.cpp | 19 +- .../graphics/opengl_renderer/DirectRenderer.h | 1 + .../opengl_renderer/OpenGLRenderer.cpp | 30 +- game/graphics/opengl_renderer/buckets.h | 21 + .../opengl_renderer/foreground/Merc2.cpp | 76 +- .../opengl_renderer/foreground/Merc2.h | 4 +- .../opengl_renderer/shaders/merc2.vert | 2 +- game/kernel/jak2/klink.cpp | 9 +- game/mips2c/jak2_functions/bones.cpp | 676 +++++ game/mips2c/jak2_functions/collide_mesh.cpp | 5 +- game/mips2c/jak2_functions/foreground.cpp | 613 ++++ game/mips2c/mips2c_private.h | 4 +- game/mips2c/mips2c_table.cpp | 7 +- goal_src/jak1/engine/math/matrix.gc | 3 + goal_src/jak2/engine/anim/joint-exploder.gc | 762 ++++- goal_src/jak2/engine/collide/collide-cache.gc | 4 +- goal_src/jak2/engine/collide/collide-mesh.gc | 1 + .../jak2/engine/collide/collide-shape-h.gc | 2 +- .../jak2/engine/common_objs/collectables.gc | 3 + goal_src/jak2/engine/common_objs/water.gc | 4 +- goal_src/jak2/engine/data/art-elts.gc | 1674 +++++++++++ goal_src/jak2/engine/data/art-h.gc | 20 +- goal_src/jak2/engine/draw/drawable.gc | 503 +++- goal_src/jak2/engine/game/game-h.gc | 2 +- goal_src/jak2/engine/game/game-save.gc | 2 +- goal_src/jak2/engine/game/main.gc | 6 +- .../jak2/engine/gfx/foreground/bones-h.gc | 65 +- goal_src/jak2/engine/gfx/foreground/bones.gc | 303 ++ .../engine/gfx/foreground/foreground-h.gc | 16 +- .../jak2/engine/gfx/foreground/foreground.gc | 1169 +++++++- goal_src/jak2/engine/gfx/foreground/ripple.gc | 6 + .../engine/gfx/foreground/shadow-cpu-h.gc | 3 + goal_src/jak2/engine/gfx/lights-h.gc | 15 +- goal_src/jak2/engine/gfx/lights.gc | 49 + goal_src/jak2/engine/gfx/merc/merc-h.gc | 17 +- goal_src/jak2/engine/gfx/merc/merc-vu1.gc | 2 +- goal_src/jak2/engine/gfx/merc/merc.gc | 11 +- goal_src/jak2/engine/gfx/vu1-user-h.gc | 93 +- goal_src/jak2/engine/level/level.gc | 3 +- goal_src/jak2/engine/math/matrix.gc | 4 + goal_src/jak2/engine/nav/nav-mesh.gc | 3 + .../process-drawable/process-drawable.gc | 5 +- goal_src/jak2/engine/target/target-darkjak.gc | 15 +- goal_src/jak2/engine/target/target-h.gc | 2 +- goal_src/jak2/engine/target/target-handler.gc | 25 +- goal_src/jak2/engine/target/target.gc | 4 +- goal_src/jak2/engine/ui/bigmap.gc | 15 + goal_src/jak2/engine/ui/hud.gc | 8 + .../jak2/engine/ui/progress/progress-draw.gc | 46 +- goal_src/jak2/engine/ui/progress/progress.gc | 2 +- goal_src/jak2/engine/util/profile.gc | 84 +- goal_src/jak2/game.gp | 177 +- .../jak2/levels/city/common/ctywide-scenes.gc | 1974 +++++++++++++ goal_src/jak2/levels/common/airlock.gc | 60 +- goal_src/jak2/levels/common/warp-gate.gc | 2505 +++++++++++++++++ .../jak2/levels/fortress/exit/forexita-obs.gc | 410 +++ .../levels/fortress/exit/forexita-part.gc | 1796 ++++++++++++ .../levels/fortress/exit/forexitb-part.gc | 1797 ++++++++++++ goal_src/jak2/levels/fortress/fortress-obs.gc | 253 ++ .../jak2/levels/fortress/prison/prison-obs.gc | 883 ++++++ .../levels/fortress/prison/prison-part.gc | 1805 ++++++++++++ goalc/main.cpp | 2 +- goalc/regalloc/Allocator_v2.cpp | 29 +- .../jak2/engine/anim/joint-exploder_REF.gc | 934 ++++++ .../jak2/engine/collide/collide-mesh_REF.gc | 133 +- .../engine/collide/collide-shape-h_REF.gc | 2 +- .../reference/jak2/engine/data/art-h_REF.gc | 80 +- .../reference/jak2/engine/game/game-h_REF.gc | 2 +- .../jak2/engine/game/game-save_REF.gc | 2 +- .../jak2/engine/gfx/foreground/bones-h_REF.gc | 63 +- .../jak2/engine/gfx/foreground/bones_REF.gc | 341 +++ .../engine/gfx/foreground/foreground-h_REF.gc | 15 +- .../reference/jak2/engine/gfx/lights-h_REF.gc | 29 +- .../jak2/engine/gfx/merc/merc-h_REF.gc | 10 +- .../jak2/engine/gfx/merc/merc_REF.gc | 28 +- .../process-drawable/process-drawable_REF.gc | 2 +- .../jak2/engine/target/target-darkjak_REF.gc | 15 +- .../jak2/engine/target/target-handler_REF.gc | 14 +- .../jak2/engine/target/target_REF.gc | 4 +- .../engine/ui/progress/progress-draw_REF.gc | 46 +- .../jak2/engine/ui/progress/progress_REF.gc | 2 +- .../reference/jak2/engine/util/profile_REF.gc | 84 +- .../levels/city/common/ctywide-scenes_REF.gc | 1974 +++++++++++++ .../jak2/levels/common/warp-gate_REF.gc | 2505 +++++++++++++++++ .../levels/fortress/exit/forexita-obs_REF.gc | 381 +++ .../levels/fortress/exit/forexita-part_REF.gc | 1799 ++++++++++++ .../levels/fortress/exit/forexitb-part_REF.gc | 1816 ++++++++++++ .../jak2/levels/fortress/fortress-obs_REF.gc | 257 ++ .../levels/fortress/prison/prison-obs_REF.gc | 879 ++++++ .../levels/fortress/prison/prison-part_REF.gc | 1805 ++++++++++++ test/decompiler/test_VuDisasm.cpp | 15 + .../vu_reference/jak2/bones-vu0-result.txt | 54 + .../vu_reference/jak2/bones-vu0.txt | 110 + .../jak2/foreground-vu0-result.txt | 9 + .../vu_reference/jak2/foreground-vu0.txt | 18 + test/offline/config/jak2/config.jsonc | 6 +- 113 files changed, 31406 insertions(+), 974 deletions(-) create mode 100644 game/mips2c/jak2_functions/bones.cpp create mode 100644 game/mips2c/jak2_functions/foreground.cpp create mode 100644 goal_src/jak2/engine/data/art-elts.gc create mode 100644 test/decompiler/reference/jak2/engine/anim/joint-exploder_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/gfx/foreground/bones_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/city/common/ctywide-scenes_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/fortress/exit/forexita-obs_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/fortress/exit/forexita-part_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/fortress/exit/forexitb-part_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/fortress/fortress-obs_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/fortress/prison/prison-obs_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/fortress/prison/prison-part_REF.gc create mode 100644 test/decompiler/vu_reference/jak2/bones-vu0-result.txt create mode 100644 test/decompiler/vu_reference/jak2/bones-vu0.txt create mode 100644 test/decompiler/vu_reference/jak2/foreground-vu0-result.txt create mode 100644 test/decompiler/vu_reference/jak2/foreground-vu0.txt diff --git a/common/goos/Printer.cpp b/common/goos/Printer.cpp index 1c5b9e25cb..35b1577583 100644 --- a/common/goos/Printer.cpp +++ b/common/goos/Printer.cpp @@ -1,5 +1,6 @@ #include "Printer.h" +#include #include #include "third-party/fmt/core.h" @@ -23,7 +24,7 @@ goos::Object float_representation(float value) { memcpy(&int_value, &value, 4); u8 exp = (int_value >> 23) & 0xff; u32 mant = int_value & 0x7fffff; - if ((exp == 0 && mant != 0) || exp == 0xff) { + if ((exp == 0 && mant != 0) || exp == 0xff || !std::isfinite(value)) { // lg::warn("PS2-incompatible float (0x{:08X}) detected! Writing as the-as cast.", int_value); return pretty_print::build_list("the-as", "float", fmt::format("#x{:x}", int_value)); } else if (const_floats.find(int_value) != const_floats.end()) { diff --git a/common/type_system/deftype.cpp b/common/type_system/deftype.cpp index 5e7760fc9c..df6731a600 100644 --- a/common/type_system/deftype.cpp +++ b/common/type_system/deftype.cpp @@ -261,7 +261,7 @@ void declare_method(Type* type, TypeSystem* type_system, const goos::Object& def if (id != -1) { // method id assert! if (id != info.id) { - lg::print("WARNING - ID assert failed on method %s of type %s (wanted %d got %d)\n", + lg::print("WARNING - ID assert failed on method {} of type {} (wanted {} got {})\n", method_name.c_str(), type->get_name().c_str(), id, info.id); throw std::runtime_error("Method ID assert failed"); } diff --git a/decompiler/IR2/AtomicOp.cpp b/decompiler/IR2/AtomicOp.cpp index d1463f02b7..f77ce76932 100644 --- a/decompiler/IR2/AtomicOp.cpp +++ b/decompiler/IR2/AtomicOp.cpp @@ -184,11 +184,10 @@ goos::Object SimpleAtom::to_form(const std::vector& labels, con s32 as_s32 = m_int; ASSERT(((s64)as_s32) == m_int); // float should always be a sign extended 32-bit value. memcpy(&f, &as_s32, 4); - if (f == f) { + if (f == f && std::isfinite(f)) { return goos::Object::make_float(f); } else { // nan or weird - ASSERT(false); // let's abort on this for now, can remove if it actually comes up. return pretty_print::to_symbol(fmt::format("(the-as float #x{:x})", m_int)); } } else { diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index 81582b05d0..a232f96cd9 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -29,6 +29,7 @@ (define-extern pointer type) (define-extern #t symbol) +(define-extern #f symbol) ;; some types we need. (declare-type sparticle-launch-group basic) @@ -2732,7 +2733,7 @@ (etie-s-l0-tfrag 13) ;; tie (merc-l0-tfrag 14) ;; merc (emerc-l0-tfrag 15) ;; emerc - (bucket-16 16) ;; mercneric + (gmerc-l0-tfrag 16) ;; mercneric (tie-v-l0-tfrag 17) ;; tie (tex-l1-tfrag 18) ;; tex @@ -2744,7 +2745,7 @@ (etie-s-l1-tfrag 24) ;; tie (merc-l1-tfrag 25) ;; merc (emerc-l1-tfrag 26) ;; emerc - (bucket-27 27) ;; mercneric + (gmerc-l1-tfrag 27) ;; mercneric (tie-v-l1-tfrag 28) ;; tie (tex-l2-tfrag 29) ;; tex @@ -2756,7 +2757,7 @@ (etie-s-l2-tfrag 35) ;; tie (merc-l2-tfrag 36) ;; merc (emerc-l2-tfrag 37) ;; emerc - (bucket-38 38) ;; mercneric + (gmerc-l2-tfrag 38) ;; mercneric (tie-v-l2-tfrag 39) ;; tie (tex-l3-tfrag 40) ;; tex @@ -2768,7 +2769,7 @@ (etie-s-l3-tfrag 46) ;; tie (merc-l3-tfrag 47) ;; merc (emerc-l3-tfrag 48) ;; emerc - (bucket-49 49) ;; mercneric + (gmerc-l3-tfrag 49) ;; mercneric (tie-v-l3-tfrag 50) ;; tie (tex-l4-tfrag 51) ;; tex @@ -2780,7 +2781,7 @@ (etie-s-l4-tfrag 57) ;; tie (merc-l4-tfrag 58) ;; merc (emerc-l4-tfrag 59) ;; emerc - (bucket-60 60) ;; mercneric + (gmerc-l4-tfrag 60) ;; mercneric (tie-v-l4-tfrag 61) ;; tie (tex-l5-tfrag 62) ;; tex @@ -2792,7 +2793,7 @@ (etie-s-l5-tfrag 68) ;; tie (merc-l5-tfrag 69) ;; merc (emerc-l5-tfrag 70) ;; emerc - (bucket-71 71) ;; mercneric + (gmerc-l5-tfrag 71) ;; mercneric (tie-v-l5-tfrag 72) ;; tie ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2807,7 +2808,7 @@ (shrub-nt-l0-shrub 78) ;; shrub (merc-l0-shrub 79) ;; merc (emerc-l0-shrub 80) ;; emerc - (bucket-81 81) ;; mercneric + (gmerc-l0-shrub 81) ;; mercneric (tex-l1-shrub 82) ;; tex (shrub-l1-shrub 83) ;; shrub @@ -2817,7 +2818,7 @@ (shrub-nt-l1-shrub 87) ;; shrub (merc-l1-shrub 88) ;; merc (emerc-l1-shrub 89) ;; emerc - (bucket-90 90) ;; mercneric + (gmerc-l1-shrub 90) ;; mercneric (tex-l2-shrub 91) ;; tex (shrub-l2-shrub 92) ;; shrub @@ -2827,7 +2828,7 @@ (shrub-nt-l2-shrub 96) ;; shrub (merc-l2-shrub 97) ;; merc (emerc-l2-shrub 98) ;; emerc - (bucket-99 99) ;; mercneric + (gmerc-l2-shrub 99) ;; mercneric (tex-l3-shrub 100) ;; tex (shrub-l3-shrub 101) ;; shrub @@ -2837,7 +2838,7 @@ (shrub-nt-l3-shrub 105) ;; shrub (merc-l3-shrub 106) ;; merc (emerc-l3-shrub 107) ;; emerc - (bucket-108 108) ;; mercneric + (gmerc-l3-shrub 108) ;; mercneric (tex-l4-shrub 109) ;; tex (shrub-l4-shrub 110) ;; shrub @@ -2847,7 +2848,7 @@ (shrub-nt-l4-shrub 114) ;; shrub (merc-l4-shrub 115) ;; merc (emerc-l4-shrub 116) ;; emerc - (bucket-117 117) ;; mercneric + (gmerc-l4-shrub 117) ;; mercneric (tex-l5-shrub 118) ;; tex (shrub-l5-shrub 119) ;; shrub @@ -2857,7 +2858,7 @@ (shrub-nt-l5-shrub 123) ;; shrub (merc-l5-shrub 124) ;; merc (emerc-l5-shrub 125) ;; emerc - (bucket-126 126) ;; mercneric + (gmerc-l5-shrub 126) ;; mercneric (tex-l0-alpha 127) ;; tex (tfrag-t-l0-alpha 128) ;; tfrag @@ -2865,7 +2866,7 @@ (etie-t-l0-alpha 130) ;; tie (merc-l0-alpha 131) ;; merc (emerc-l0-alpha 132) ;; emerc - (bucket-133 133) ;; mercneric + (gmerc-l0-alpha 133) ;; mercneric (tfrag-st-l0-alpha 134) ;; tfrag (tie-st-l0-alpha 135) ;; tie (etie-st-l0-alpha 136) ;; tie @@ -2876,7 +2877,7 @@ (etie-t-l1-alpha 140) ;; tie (merc-l1-alpha 141) ;; merc (emerc-l1-alpha 142) ;; emerc - (bucket-143 143) ;; mercneric + (gmerc-l1-alpha 143) ;; mercneric (tfrag-st-l1-alpha 144) ;; tfrag (tie-st-l1-alpha 145) ;; tie (etie-st-l1-alpha 146) ;; tie @@ -2887,7 +2888,7 @@ (etie-t-l2-alpha 150) ;; tie (merc-l2-alpha 151) ;; merc (emerc-l2-alpha 152) ;; emerc - (bucket-153 153) ;; mercneric + (gmerc-l2-alpha 153) ;; mercneric (tfrag-st-l2-alpha 154) ;; tfrag (tie-st-l2-alpha 155) ;; tie (etie-st-l2-alpha 156) ;; tie @@ -2898,7 +2899,7 @@ (etie-t-l3-alpha 160) ;; tie (merc-l3-alpha 161) ;; merc (emerc-l3-alpha 162) ;; emerc - (bucket-163 163) ;; mercneric + (gmerc-l3-alpha 163) ;; mercneric (tfrag-st-l3-alpha 164) ;; tfrag (tie-st-l3-alpha 165) ;; tie (etie-st-l3-alpha 166) ;; tie @@ -2909,7 +2910,7 @@ (etie-t-l4-alpha 170) ;; tie (merc-l4-alpha 171) ;; merc (emerc-l4-alpha 172) ;; emerc - (bucket-173 173) ;; mercneric + (gmerc-l4-alpha 173) ;; mercneric (tfrag-st-l4-alpha 174) ;; tfrag (tie-st-l4-alpha 175) ;; tie (etie-st-l4-alpha 176) ;; tie @@ -2920,7 +2921,7 @@ (etie-t-l5-alpha 180) ;; tie (merc-l5-alpha 181) ;; merc (emerc-l5-alpha 182) ;; emerc - (bucket-183 183) ;; mercneric + (gmerc-l5-alpha 183) ;; mercneric (tfrag-st-l5-alpha 184) ;; tfrag (tie-st-l5-alpha 185) ;; tie (etie-st-l5-alpha 186) ;; tie @@ -2928,88 +2929,88 @@ (tex-lcom-tfrag 187) ;; tex (merc-lcom-tfrag 188) ;; merc (emerc-lcom-tfrag 189) ;; emerc - (bucket-190 190) ;; mercneric + (gmerc-lcom-tfrag 190) ;; mercneric (tex-lcom-shrub 191) ;; tex (merc-lcom-shrub 192) ;; merc (emerc-lcom-shrub 193) ;; emerc - (bucket-194 194) ;; mercneric + (gmerc-lcom-shrub 194) ;; mercneric (bucket-195 195) ;; shadow (tex-l0-pris 196) ;; tex (merc-l0-pris 197) ;; merc (emerc-l0-pris 198) ;; emerc - (bucket-199 199) ;; mercneric + (gmerc-l0-pris 199) ;; mercneric (tex-l1-pris 200) ;; tex (merc-l1-pris 201) ;; merc (emerc-l1-pris 202) ;; emerc - (bucket-203 203) ;; mercneric + (gmerc-l1-pris 203) ;; mercneric (tex-l2-pris 204) ;; tex (merc-l2-pris 205) ;; merc (emerc-l2-pris 206) ;; emerc - (bucket-207 207) ;; mercneric + (gmerc-l2-pris 207) ;; mercneric (tex-l3-pris 208) ;; tex (merc-l3-pris 209) ;; merc (emerc-l3-pris 210) ;; emerc - (bucket-211 211) ;; mercneric + (gmerc-l3-pris 211) ;; mercneric (tex-l4-pris 212) ;; tex (merc-l4-pris 213) ;; merc (emerc-l4-pris 214) ;; emerc - (bucket-215 215) ;; mercneric + (gmerc-l4-pris 215) ;; mercneric (tex-l5-pris 216) ;; tex (merc-l5-pris 217) ;; merc (emerc-l5-pris 218) ;; emerc - (bucket-219 219) ;; mercneric + (gmerc-l5-pris 219) ;; mercneric (tex-lcom-pris 220) ;; tex (merc-lcom-pris 221) ;; merc (emerc-lcom-pris 222) ;; emerc - (bucket-223 223) ;; mercneric + (gmerc-lcom-pris 223) ;; mercneric (tex-l0-pris2 224) ;; tex (merc-l0-pris2 225) ;; merc (emerc-l0-pris2 226) ;; emerc - (bucket-227 227) ;; mercneric + (gmerc-l0-pris2 227) ;; mercneric (tex-l1-pris2 228) ;; tex (merc-l1-pris2 229) ;; merc (emerc-l1-pris2 230) ;; emerc - (bucket-231 231) ;; mercneric + (gmerc-l1-pris2 231) ;; mercneric (tex-l2-pris2 232) ;; tex (merc-l2-pris2 233) ;; merc (emerc-l2-pris2 234) ;; emerc - (bucket-235 235) ;; mercneric + (gmerc-l2-pris2 235) ;; mercneric (tex-l3-pris2 236) ;; tex (merc-l3-pris2 237) ;; merc (emerc-l3-pris2 238) ;; emerc - (bucket-239 239) ;; mercneric + (gmerc-l3-pris2 239) ;; mercneric (tex-l4-pris2 240) ;; tex (merc-l4-pris2 241) ;; merc (emerc-l4-pris2 242) ;; emerc - (bucket-243 243) ;; mercneric + (gmerc-l4-pris2 243) ;; mercneric (tex-l5-pris2 244) ;; tex (merc-l5-pris2 245) ;; merc (emerc-l5-pris2 246) ;; emerc - (bucket-247 247) ;; mercneric + (gmerc-l5-pris2 247) ;; mercneric (tex-lcom-pris2 248) ;; tex (merc-lcom-pris2 249) ;; merc (emerc-lcom-pris2 250) ;; emerc - (bucket-251 251) ;; mercneric + (gmerc-lcom-pris2 251) ;; mercneric (tex-l0-water 252) ;; tex (merc-l0-water 253) ;; merc - (bucket-254 254) ;; mercneric + (gmerc-l0-water 254) ;; mercneric (tfrag-w-l0-water 255) ;; tfrag (tie-w-l0-water 256) (etie-w-l0-water 257) @@ -3019,7 +3020,7 @@ (tex-l1-water 261) ;; tex (merc-l1-water 262) ;; merc - (bucket-263 263) ;; mercneric + (gmerc-l1-water 263) ;; mercneric (tfrag-w-l1-water 264) ;; tfrag (tie-w-l1-water 265) (etie-w-l1-water 266) @@ -3029,7 +3030,7 @@ (tex-l2-water 270) ;; tex (merc-l2-water 271) ;; merc - (bucket-272 272) ;; mercneric + (gmerc-l2-water 272) ;; mercneric (tfrag-w-l2-water 273) ;; tfrag (tie-w-l2-water 274) (etie-w-l2-water 275) @@ -3039,7 +3040,7 @@ (tex-l3-water 279) ;; tex (merc-l3-water 280) ;; merc - (bucket-281 281) ;; mercneric + (gmerc-l3-water 281) ;; mercneric (tfrag-w-l3-water 282) ;; tfrag (tie-w-l3-water 283) (etie-w-l3-water 284) @@ -3049,7 +3050,7 @@ (tex-l4-water 288) ;; tex (merc-l4-water 289) ;; merc - (bucket-290 290) ;; mercneric + (gmerc-l4-water 290) ;; mercneric (tfrag-w-l4-water 291) ;; tfrag (tie-w-l4-water 292) (etie-w-l4-water 293) @@ -3059,7 +3060,7 @@ (tex-l5-water 297) ;; tex (merc-l5-water 298) ;; merc - (bucket-299 299) ;; mercneric + (gmerc-l5-water 299) ;; mercneric (tfrag-w-l5-water 300) ;; tfrag (tie-w-l5-water 301) (etie-w-l5-water 302) @@ -3069,7 +3070,7 @@ (tex-lcom-water 306) ;; tex (merc-lcom-water 307) ;; merc - (bucket-308 308) ;; mercneric + (gmerc-lcom-water 308) ;; mercneric (tex-lcom-sky-post 309) @@ -3081,11 +3082,11 @@ (bucket-314 314) ;; shadow (bucket-315 315) ;; effects (tex-all-warp 316) ;; tex - (bucket-317 317) ;; mercneric + (gmerc-warp 317) ;; mercneric (debug-no-zbuf1 318) ;; debug, no zbuf (tex-all-map 319) ;; tex - (bucket-320 320) ;; hud | progress + (progress 320) ;; hud | progress (screen-filter 321) ;; hud letterbox, no zbuf (bucket-322 322) ;; hud (bucket-323 323) ;; hud @@ -3094,6 +3095,11 @@ (debug3 326) ) +(defenum bucket-id-16 + :type int16 + :copy-entries bucket-id + ) + ;; TODO - names in `render` menu (defenum vu1-renderer-mask :type uint64 @@ -5293,6 +5299,8 @@ ((direction vector 3 :inline :offset-assert 0) (color vector 3 :inline :offset-assert 48) (ambient vector :inline :offset-assert 96) + (fade-int uint32 :offset 44) + (fade-flags uint32 :offset 28) ) :method-count-assert 9 :size-assert #x70 @@ -5336,6 +5344,7 @@ ((index uint16 :offset-assert 0) (count uint16 :offset-assert 2) ) + :pack-me :method-count-assert 9 :size-assert #x4 :flag-assert #x900000004 @@ -5349,7 +5358,7 @@ (base-trans vector :inline :offset-assert 16) (axis-scale vector :inline :offset-assert 32) (dimension-array vector4w :inline :offset-assert 48) - (bucket-array pointer :offset-assert 64) + (bucket-array (inline-array light-hash-bucket) :offset-assert 64) (index-array pointer :offset-assert 68) (light-sphere-array (inline-array light-sphere) :offset-assert 72) ) @@ -11306,10 +11315,10 @@ (data-format draw-control-data-format) (global-effect draw-control-global-effect) (art-group art-group :offset-assert 12) - (jgeo art-joint-geo) - (mgeo merc-ctrl) - (dma-add-func function) ;; (function process-drawable draw-control symbol object none) - (skeleton skeleton) + (jgeo art-joint-geo :offset-assert 16) + (mgeo merc-ctrl :offset-assert 20) + (dma-add-func (function process-drawable draw-control symbol object none) :offset-assert 24) + (skeleton skeleton :offset-assert 28) (lod-set lod-set :inline) (max-lod int8 :offset 80) (force-lod int8) @@ -11565,7 +11574,7 @@ (deftype mei-envmap-tint (structure) ((fade0 float :offset-assert 0) (fade1 float :offset-assert 4) - (tint uint32 :offset-assert 8) + (tint rgba :offset-assert 8) (dummy int32 :offset-assert 12) ) :method-count-assert 9 @@ -11610,13 +11619,26 @@ :flag-assert #x900000010 ) +(defenum effect-bits + :type uint8 + :bitfield #t + (texscroll 0) + (no-fade-out 1) + (ripple 2) + (emerc 3) ;; envmap?? + (ignore-tod-for-envmap-tint 4) ;; color thing + (force-mercneric 5) ;; some mercneric-only effect + (cross-fade 6) + (ignore-alpha 7) + ) + (deftype merc-effect (structure) ((frag-geo merc-fragment :offset-assert 0) (frag-ctrl merc-fragment-control :offset-assert 4) (blend-data merc-blend-data :offset-assert 8) (blend-ctrl merc-blend-ctrl :offset-assert 12) (merc-effect-version uint8 :offset-assert 16) - (effect-bits uint8 :offset-assert 17) + (effect-bits effect-bits :offset-assert 17) (frag-count uint16 :offset-assert 18) (blend-frag-count uint16 :offset-assert 20) (tri-count uint16 :offset-assert 22) @@ -12293,6 +12315,8 @@ (shdf03) (shdf04) ;; unused (disable-draw) + (shdf06) + (shdf07) ) (deftype shadow-settings (structure) @@ -12306,6 +12330,7 @@ (fade-start float :offset-assert 68) (dummy-2 int32 :offset-assert 72) (shadow-type int32 :offset-assert 76) + (flag-vector vector :inline :offset 64) ;; added ) :method-count-assert 9 :size-assert #x50 @@ -13642,10 +13667,9 @@ (deftype bone-buffer (structure) - ((joint joint-anim-compressed-hdr 16 :inline :offset-assert 0) ;; guessed by decompiler + ((joint matrix 16 :inline :offset-assert 0) ;; guessed by decompiler (bone bone 16 :inline :offset-assert 1024) ;; guessed by decompiler - ;; (output UNKNOWN 16 :offset-assert 2304) - (_pad uint8 #x800) + (output pris-mtx 16 :inline :offset-assert 2304) ) :method-count-assert 9 :size-assert #x1100 @@ -13654,9 +13678,9 @@ (deftype bone-layout (structure) ((data uint16 8 :offset-assert 0) ;; guessed by decompiler - (joint joint 2 :offset 0) ;; guessed by decompiler - (bone bone 2 :offset 8) ;; guessed by decompiler - (output uint32 2 :offset 16) ;; guessed by decompiler + (joint (inline-array matrix) 2 :offset 0) ;; guessed by decompiler + (bone (inline-array bone) 2 :offset 8) ;; guessed by decompiler + (output (inline-array pris-mtx) 2 :offset 16) ;; guessed by decompiler (unused uint32 2 :offset 24) ;; was "cache" in jak 1, but they removed this. ) :method-count-assert 9 @@ -13673,7 +13697,7 @@ (joint-ptr (inline-array joint) :offset-assert 20) ;; guessed by decompiler (bone-ptr (inline-array bone) :offset-assert 24) ;; guessed by decompiler (num-bones uint32 :offset-assert 28) - (mtxs uint32 :offset-assert 32) + (mtxs (inline-array pris-mtx) :offset-assert 32) ) :method-count-assert 9 :size-assert #x24 @@ -13710,8 +13734,8 @@ (defenum bone-calc-flags :type uint16 :bitfield #t - (bncfl00 0) - (bncfl01 1) ;; use identity matrix in bone matrix calc instead of cam rot (effectively screen-space bones?) + (write-ripple-data 0) + (no-cam-rot 1) (bncfl02 2) (bncfl03 3) (bncfl04 4) @@ -13732,13 +13756,14 @@ (deftype bone-calculation (structure) ((flags bone-calc-flags :offset-assert 0) ;; bone-calc-flags (num-bones uint16 :offset-assert 2) - (matrix-area (inline-array matrix) :offset-assert 4) ;; guessed by decompiler + (matrix-area (inline-array pris-mtx) :offset-assert 4) ;; guessed by decompiler (joints (inline-array joint) :offset-assert 8) ;; guessed by decompiler (bones (inline-array bone) :offset-assert 12) ;; guessed by decompiler (ripple-scale float :offset-assert 16) (ripple-y-scale float :offset-assert 20) (ripple-normal-scale float :offset-assert 24) (ripple-area (inline-array vector) :offset-assert 28) ;; guessed by decompiler + (ripple-vec vector :inline :offset 16) ;; added (next bone-calculation :offset-assert 32) (dummy-1 uint32 :offset-assert 36) (dummy-2 uint32 :offset-assert 40) @@ -13758,7 +13783,7 @@ ((first uint32 :offset-assert 0) (next uint32 :offset-assert 4) (state generic-bucket-state :inline :offset-assert 8) - (vu1-bucket int32 :offset-assert 16) + (vu1-bucket bucket-id :offset-assert 16) ) :pack-me :method-count-assert 9 @@ -13769,7 +13794,7 @@ (deftype merc-chain (structure) ((first dma-packet :offset-assert 0) (patch dma-packet :offset-assert 4) - (vu1-bucket int32 :offset-assert 8) + (vu1-bucket bucket-id :offset-assert 8) ) :pack-me :method-count-assert 9 @@ -13812,11 +13837,11 @@ (mercneric-used uint32 :offset-assert 12) (use-isometric uint32 :offset-assert 16) (base-start dma-packet :offset-assert 20) - (joint-ptr uint32 :offset-assert 24) - (bone-ptr uint32 :offset-assert 28) + (joint-ptr (inline-array joint) :offset-assert 24) + (bone-ptr (inline-array bone) :offset-assert 28) (num-bones uint32 :offset-assert 32) - (mtxs uint32 :offset-assert 36) - (dma-buf basic :offset-assert 40) + (mtxs (inline-array pris-mtx) :offset-assert 36) + (dma-buf dma-buffer :offset-assert 40) (default-texture-index uint32 :offset-assert 44) (mercneric-chain mercneric-chain :offset-assert 48) (level-buckets foreground-level-buckets :offset-assert 52) @@ -13828,7 +13853,7 @@ (deftype foreground-work (structure) ((regs foreground-regs :inline :offset-assert 0) - (draw-index-map uint16 7 :offset 64) ;; ???? + (draw-index-map uint8 7 :offset 64) ;; ???? (grid foreground-bucket-grid :inline :offset-assert 80) (bounds sphere :inline :offset-assert 2464) (lights vu-lights :inline :offset-assert 2480) @@ -13851,6 +13876,7 @@ (deftype merc-effect-bucket-info (structure) ((color-fade rgba :offset-assert 0) ;; guessed by decompiler + (alpha uint8 :offset 3) (merc-path uint8 :offset-assert 4) (ignore-alpha uint8 :offset-assert 5) (disable-draw uint8 :offset-assert 6) @@ -14107,7 +14133,7 @@ (define-extern update-light-hash (function light-hash none)) (define-extern lookup-light-sphere-by-name (function string light-hash light-sphere)) (define-extern light-hash-get-bucket-index (function light-hash vector int)) -;; (define-extern add-light-sphere-to-light-group function) +(define-extern add-light-sphere-to-light-group (function object object object object object)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; dynamics-h ;; @@ -15076,7 +15102,7 @@ (prev-state state :offset-assert 124) (id uint32 :offset-assert 128) (count uint32 :offset-assert 132) - (penetrate-using uint64 :offset-assert 136) + (penetrate-using penetrate :offset-assert 136) (damage float :offset-assert 144) (shield-damage float :offset-assert 148) (knock uint8 :offset-assert 152) @@ -16087,7 +16113,7 @@ (new (symbol type collide-shape uint int) _type_ 0) (debug-draw (_type_) none 9) (add-fg-prim-using-box (_type_ collide-cache) none 10) - (add-fg-prim-using-line-sphere () none 11) + (add-fg-prim-using-line-sphere (_type_ collide-cache object) none 11) (overlaps-others-test (_type_ overlaps-others-params collide-shape-prim) symbol 12) (overlaps-others-group (_type_ overlaps-others-params collide-shape-prim-group) symbol 13) (collide-shape-prim-method-14 () none 14) @@ -17585,12 +17611,12 @@ :flag-assert #xf00000024 (:methods (new (symbol type process-drawable) _type_ 0) - (update-effects (_type_) none 9) ;; (TODO-RENAME-9 (_type_) none 9) - (do-effect (_type_ symbol float int) none 10) ;; (dummy-10 (_type_ symbol float int) object 10) - (do-effect-for-surface (_type_ symbol float int basic pat-surface) none 11) ;; (dummy-11 (_type_ symbol float int basic pat-surface) none 11) - (play-effect-sound (_type_ symbol float int basic sound-name) int 12) ;; (dummy-12 (_type_ symbol float int basic sound-name) int 12) + (update-effects (_type_) none 9) + (do-effect (_type_ symbol float int) none 10) + (do-effect-for-surface (_type_ symbol float int basic pat-surface) none 11) + (play-effect-sound (_type_ symbol float int basic sound-name) int 12) (set-channel-offset! (_type_ int) none 13) - (play-effects-from-res-lump (_type_ float float float) none 14) ;; (TODO-RENAME-14 (_type_ float float float) none 14) + (play-effects-from-res-lump (_type_ float float float) none 14) ) ) @@ -23945,7 +23971,6 @@ ;; bones ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype bone-calculation-list (structure) ((first bone-calculation :offset-assert 0) (next bone-calculation :offset-assert 4) @@ -23954,20 +23979,19 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# -;; (define-extern *bone-calculation-list* object) ;; bone-calculation-list -;; (define-extern bone-list-init function) ;; (function none) -;; (define-extern bones-vu0-block object) ;; vu-function -;; (define-extern bones-set-sqwc function) ;; (function none) -;; (define-extern bones-reset-sqwc function) ;; (function none) +(define-extern *bone-calculation-list* bone-calculation-list) +(define-extern bone-list-init (function none)) +(define-extern bones-vu0-block vu-function) +(define-extern bones-set-sqwc (function none)) +(define-extern bones-reset-sqwc (function none)) (define-extern bones-init (function dma-buffer none)) -;; (define-extern bones-mtx-calc function) ;; (function int pointer pointer int object none) +(define-extern bones-mtx-calc (function (inline-array pris-mtx) (inline-array joint) (inline-array bone) uint object none)) (define-extern bones-mtx-calc-execute (function none)) -;; (define-extern dump-qword function) ;; (function qword none) -;; (define-extern dump-mem function) ;; (function pointer int none) -;; (define-extern bones-debug function) ;; (function none) -;; (define-extern dump-bone-mem function) ;; (function none) +(define-extern dump-qword (function qword none)) +(define-extern dump-mem (function pointer int none)) +(define-extern bones-debug (function none)) +(define-extern dump-bone-mem (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; debug-foreground ;; @@ -23983,27 +24007,34 @@ ;; foreground ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defenum merc-mode + :type int32 + (merc 0) + (emerc 1) + (mercneric 2) + ) + (define-extern foreground-vu0-block vu-function) -;; (define-extern *bucket-map* object) -;; (define-extern vu1-bucket-map function) -;; (define-extern generic-bucket-state-init function) -;; (define-extern mercneric-chain-init function) +(define-extern *bucket-map* (pointer bucket-id-16)) +(define-extern vu1-bucket-map (function int int merc-mode bucket-id)) +(define-extern generic-bucket-state-init (function generic-bucket-state none)) +(define-extern mercneric-chain-init (function mercneric-chain bucket-id none)) (define-extern foreground-init (function none)) -;; (define-extern texscroll-make-request function) ;; (function merc-effect none) +(define-extern texscroll-make-request (function merc-effect none)) (define-extern texscroll-execute (function none)) (define-extern vu-lights<-light-group! (function vu-lights light-group none)) -;; (define-extern foreground-add-mtx-calc function) +(define-extern foreground-add-mtx-calc (function bone-calculation (inline-array pris-mtx) bone-calc-flags bone-calculation)) (define-extern foreground-wrapup (function none)) (define-extern *default-shadow-settings* shadow-settings) -;; (define-extern foreground-shadow function) -;; (define-extern foreground-generic-merc-death function) -;; (define-extern foreground-generic-merc-add-fragments function) -;; (define-extern foreground-generic-merc function) -;; (define-extern foreground-merc function) -;; (define-extern foreground-emerc function) -;; (define-extern foreground-check-longest-edge-asm function) -;; (define-extern foreground-ripple function) -;; (define-extern foreground-draw function) +(define-extern foreground-shadow (function draw-control (inline-array pris-mtx) pointer pointer)) +(define-extern foreground-generic-merc-death (function object object none)) +(define-extern foreground-generic-merc-add-fragments (function object object object none)) +(define-extern foreground-generic-merc (function draw-control pointer int pointer)) +(define-extern foreground-merc (function draw-control (inline-array pris-mtx) pointer int int pointer)) +(define-extern foreground-emerc (function draw-control (inline-array pris-mtx) pointer object int int pointer)) +(define-extern foreground-check-longest-edge-asm (function draw-control float symbol)) +(define-extern foreground-ripple (function draw-control merc-ctrl pointer int pointer)) +(define-extern foreground-draw (function draw-control dma-buffer float none)) ;; (define-extern foreground-draw-hud function) (define-extern *foreground-draw-engine* engine) @@ -28750,7 +28781,7 @@ (define-extern target-shoved (function meters meters process (state object object target) object :behavior target)) (define-extern attack-mode-is-invinc (function symbol symbol)) (define-extern target-attacked (function symbol attack-info process touching-shapes-entry (state symbol attack-info target) object :behavior target)) -(define-extern target-send-attack (function process symbol touching-shapes-entry int int uint symbol :behavior target)) +(define-extern target-send-attack (function process symbol touching-shapes-entry int int penetrate symbol :behavior target)) (define-extern target-generic-event-handler (function process int symbol event-message-block object :behavior target)) ;; (function process int symbol event-message-block object :behavior target) (define-extern target-standard-event-handler (function process int symbol event-message-block object :behavior target)) (define-extern target-dangerous-event-handler (function process int symbol event-message-block object :behavior target)) @@ -33688,10 +33719,9 @@ ;; joint-exploder ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype joint-exploder-tuning (structure) - ((explosion uint64 :offset-assert 0) - (duration uint64 :offset-assert 8) ;; time-frame + ((explosion uint64 :offset-assert 0) + (duration time-frame :offset-assert 8) (gravity float :offset-assert 16) (rot-speed float :offset-assert 20) (bounds-inflate float :offset-assert 24) @@ -33700,19 +33730,21 @@ (max-probe-depth float :offset-assert 36) (fountain-rand-transv-lo vector :inline :offset-assert 48) (fountain-rand-transv-hi vector :inline :offset-assert 64) - (away-from-focal-pt vector :inline :offset-assert 48) - (away-from-rand-transv-xz-lo float :offset-assert 64) - (away-from-rand-transv-xz-hi float :offset-assert 68) - (away-from-rand-transv-y-lo float :offset-assert 72) - (away-from-rand-transv-y-hi float :offset-assert 76) - (hit-xz-reaction float :offset-assert 80) - (hit-y-reaction float :offset-assert 84) + (away-from-focal-pt vector :inline :offset 48) + (away-from-rand-transv-xz-lo float :offset 64) + (away-from-rand-transv-xz-hi float :offset 68) + (away-from-rand-transv-y-lo float :offset 72) + (away-from-rand-transv-y-hi float :offset 76) + (hit-xz-reaction float :offset 80) + (hit-y-reaction float :offset 84) ) + (:methods + (new (symbol type uint) _type_ 0) + ) :method-count-assert 9 :size-assert #x58 :flag-assert #x900000058 ) -|# (deftype joint-exploder-static-joint-params (structure) ((joint-index int16 :offset-assert 0) @@ -33733,7 +33765,6 @@ :flag-assert #x900000010 ) -#| (deftype joint-exploder-joint (structure) ((next int16 :offset-assert 0) (prev int16 :offset-assert 2) @@ -33748,20 +33779,18 @@ :size-assert #xf0 :flag-assert #x9000000f0 ) -|# -#| (deftype joint-exploder-joints (basic) ((num-joints int32 :offset-assert 4) - (joint joint-exploder-joint :dynamic :offset-assert 16) ;; guessed by decompiler + (joint joint-exploder-joint :inline :dynamic :offset-assert 16) ;; guessed by decompiler ) + (:methods + (new (symbol type joint-exploder-static-params) _type_ 0)) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -|# -#| (deftype joint-exploder-list (structure) ((head int32 :offset-assert 0) (pre-moved? symbol :offset-assert 4) ;; guessed by decompiler @@ -33773,40 +33802,37 @@ :size-assert #x30 :flag-assert #x900000030 ) -|# -#| (deftype joint-exploder (process-drawable) - ((die-if-below-y float :offset-assert 196) - (die-if-beyond-xz-dist-sqrd float :offset-assert 200) - (joints joint-exploder-joints :offset-assert 204) ;; guessed by decompiler - (static-params joint-exploder-static-params :offset-assert 208) ;; guessed by decompiler - (anim art-joint-anim :offset-assert 212) ;; guessed by decompiler - (scale-vector vector :inline :offset-assert 220) - (tuning joint-exploder-tuning :inline :offset-assert 236) - (lists joint-exploder-list 5 :offset-assert 332) ;; guessed by decompiler + ((die-if-below-y float :offset-assert 200) + (die-if-beyond-xz-dist-sqrd float :offset-assert 204) + (joints joint-exploder-joints :offset-assert 208) ;; guessed by decompiler + (static-params joint-exploder-static-params :offset-assert 212) ;; guessed by decompiler + (anim art-joint-anim :offset-assert 216) ;; guessed by decompiler + (scale-vector vector :inline :offset-assert 224) + (tuning joint-exploder-tuning :inline :offset-assert 240) + (lists joint-exploder-list 5 :inline :offset-assert 336 :score 10) ;; guessed by decompiler ) :method-count-assert 30 :size-assert #x240 :flag-assert #x1e01c00240 (:methods - (joint-exploder-method-20 () none 20) ;; (TODO-RENAME-20 (_type_ joint-exploder-list int) int 20) - (joint-exploder-method-21 () none 21) ;; (TODO-RENAME-21 (_type_ joint-exploder-list joint-exploder-joint) none 21) - (joint-exploder-method-22 () none 22) ;; (TODO-RENAME-22 (_type_ joint-exploder-list) symbol 22) - (joint-exploder-method-23 () none 23) ;; (TODO-RENAME-23 (_type_) symbol 23) - (joint-exploder-method-24 () none 24) ;; (TODO-RENAME-24 (_type_ joint-exploder-list int) int 24) - (joint-exploder-method-25 () none 25) ;; (TODO-RENAME-25 (_type_ joint-exploder-list) symbol 25) - (joint-exploder-method-26 () none 26) ;; (TODO-RENAME-26 (_type_ joint-exploder-list int) int 26) - (joint-exploder-method-27 () none 27) ;; (TODO-RENAME-27 (_type_ joint-exploder-list int) joint-exploder-list 27) - (joint-exploder-method-28 () none 28) ;; (TODO-RENAME-28 (_type_ joint-exploder-list) none 28) - (joint-exploder-method-29 () none 29) + (add-joint-to-list (_type_ joint-exploder-list int) int 20) ;; (TODO-RENAME-20 (_type_ joint-exploder-list int) int 20) + (update-bbox-for-joint (_type_ joint-exploder-list joint-exploder-joint) none 21) ;; (TODO-RENAME-21 (_type_ joint-exploder-list joint-exploder-joint) none 21) + (do-collision-response (_type_ joint-exploder-list) none 22) ;; (TODO-RENAME-22 (_type_ joint-exploder-list) symbol 22) + (init-joint-list (_type_) none 23) ;; (TODO-RENAME-23 (_type_) symbol 23) + (remove-from-list-and-reset (_type_ joint-exploder-list int) int 24) ;; (TODO-RENAME-24 (_type_ joint-exploder-list int) int 24) + (final-adjust (_type_ joint-exploder-list int) int 25) ;; (TODO-RENAME-25 (_type_ joint-exploder-list) symbol 25) + (integrate-and-kill (_type_ joint-exploder-list) none 26) ;; (TODO-RENAME-26 (_type_ joint-exploder-list int) int 26) + (remove-joint-from-list (_type_ joint-exploder-list int) int 27) ;; (TODO-RENAME-27 (_type_ joint-exploder-list int) joint-exploder-list 27) + (adjust-bbox-for-limits-along-axis (_type_ joint-exploder-list int) joint-exploder-list 28) ;; (TODO-RENAME-28 (_type_ joint-exploder-list) none 28) + (adjust-bbox-for-limits (_type_ joint-exploder-list) none 29) ) ) -|# -;; (define-extern joint-exploder-joint-callback function) ;; (function joint-exploder none) -;; (define-extern joint-exploder-shatter state) ;; (state joint-exploder) -;; (define-extern joint-exploder-init-by-other function) ;; (function skeleton-group int joint-exploder-static-params joint-exploder-static-params none :behavior joint-exploder) +(define-extern joint-exploder-joint-callback (function draw-control cspace-array joint-control none)) +(define-extern joint-exploder-shatter (state joint-exploder)) +(define-extern joint-exploder-init-by-other (function skeleton-group int joint-exploder-tuning joint-exploder-static-params none :behavior joint-exploder)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; simple-focus ;; @@ -34047,9 +34073,9 @@ ( (root-override collide-shape :offset 128 :score 100) (level-name uint32 :offset-assert 200) - (on-notice int32 :offset-assert 204) - (on-activate int32 :offset-assert 208) - (on-close int32 :offset-assert 212) + (on-notice pair :offset-assert 204) + (on-activate pair :offset-assert 208) + (on-close pair :offset-assert 212) (wait-for pair :offset-assert 216) (continue continue-point :offset-assert 220) (distance meters :offset-assert 224) @@ -34064,9 +34090,9 @@ (idle () _type_ :state 20) (use (continue-point) _type_ :state 21) (hidden () _type_ :state 22) - (warp-gate-method-23 (_type_) none 23) - (warp-gate-method-24 () none 24) - (warp-gate-method-25 (_type_) continue-point 25) + (init-skel-and-collide (_type_) none 23) + (setup-fields (_type_) none 24) + (handle-notice (_type_) continue-point 25) ) ) @@ -36873,9 +36899,9 @@ ;; fortress-obs ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype fort-trap-door (process-drawable) - ((notify-actor basic :offset-assert 196) + ((root-override collide-shape-moving :offset 128 :score 10) + (notify-actor entity-actor :offset-assert 200) ) :method-count-assert 22 :size-assert #xcc @@ -36885,9 +36911,7 @@ (die () _type_ :state 21) ) ) -|# -#| (deftype water-anim-fortress (water-anim) () :method-count-assert 29 @@ -36896,27 +36920,21 @@ (:methods ) ) -|# -;; (define-extern *fort-trap-door-exploder-params* joint-exploder-static-params) -;; (define-extern ripple-for-water-anim-fortress ripple-wave-set) +(define-extern *fort-trap-door-exploder-params* joint-exploder-static-params) +(define-extern ripple-for-water-anim-fortress ripple-wave-set) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; forexitb-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| -(deftype forexitb-part (UNKNOWN) +(deftype forexitb-part (part-spawner) () - :method-count-assert 0 - :size-assert #x0 - :flag-assert #x0 - ;; Failed to read fields. + :flag-assert #x10003000b0 ) -|# -;; (define-extern check-drop-level-forexitb-drop-userdata function) -;; (define-extern check-drop-level-forexitb-drop-water-userdata function) +(define-extern check-drop-level-forexitb-drop-userdata (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern check-drop-level-forexitb-drop-water-userdata (function sparticle-system sparticle-cpuinfo matrix none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; target-turret-shot ;; @@ -41887,25 +41905,20 @@ ;; prison-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| -(deftype prison-part (UNKNOWN) +(deftype prison-part (part-spawner) () - :method-count-assert 0 - :size-assert #x0 - :flag-assert #x0 + :flag-assert #x10003000b0 ;; Failed to read fields. ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; prison-obs ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype prsn-hang-cell (process-drawable) - ((path-u float :offset-assert 196) - (path-du float :offset-assert 200) + ((path-u float :offset-assert 200) + (path-du float :offset-assert 204) ) :method-count-assert 21 :size-assert #xd0 @@ -41914,40 +41927,17 @@ (idle () _type_ :state 20) ) ) -|# -#| (deftype warp-gate-b (warp-gate) () :method-count-assert 26 :size-assert #x100 :flag-assert #x1a00800100 - (:methods - (warp-gate-b-method-9 () none 9) - (warp-gate-b-method-10 () none 10) - (warp-gate-b-method-11 () none 11) - (warp-gate-b-method-12 () none 12) - (warp-gate-b-method-13 () none 13) - (warp-gate-b-method-14 () none 14) - (warp-gate-b-method-15 () none 15) - (warp-gate-b-method-16 () none 16) - (warp-gate-b-method-17 () none 17) - (warp-gate-b-method-18 () none 18) - (warp-gate-b-method-19 () none 19) - (warp-gate-b-method-20 () none 20) - (warp-gate-b-method-21 () none 21) - (warp-gate-b-method-22 () none 22) - (warp-gate-b-method-23 () none 23) - (warp-gate-b-method-24 () none 24) - (warp-gate-b-method-25 () none 25) - ) ) -|# -#| (deftype prsn-cell-door (process-drawable) - ((frame float :offset-assert 196) - (desired float :offset-assert 200) + ((frame float :offset-assert 200) + (desired float :offset-assert 204) ) :method-count-assert 21 :size-assert #xd0 @@ -41956,9 +41946,7 @@ (idle () _type_ :state 20) ) ) -|# -#| (deftype prsn-vent-fan (process-drawable) () :method-count-assert 21 @@ -41968,9 +41956,7 @@ (idle () _type_ :state 20) ) ) -|# -#| (deftype prsn-torture (process-drawable) () :method-count-assert 21 @@ -41980,12 +41966,11 @@ (idle () _type_ :state 20) ) ) -|# -;; (define-extern *prsn-torture-lightning-joints* array) -;; (define-extern *prsn-chair-shackle-lightning-joints* array) -;; (define-extern dark-lightning-handler function) -;; (define-extern prsn-hang-cell-init-by-other function) +(define-extern *prsn-torture-lightning-joints* (array int32)) +(define-extern *prsn-chair-shackle-lightning-joints* (array int32)) +(define-extern dark-lightning-handler (function process int symbol event-message-block object :behavior process-drawable)) +(define-extern prsn-hang-cell-init-by-other (function float none :behavior prsn-hang-cell)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; kidesc-h ;; @@ -44803,25 +44788,20 @@ ;; forexita-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| -(deftype forexita-part (UNKNOWN) +(deftype forexita-part (part-spawner) () - :method-count-assert 0 - :size-assert #x0 - :flag-assert #x0 + :flag-assert #x10003000b0 ;; Failed to read fields. ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; forexita-obs ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype fort-lift-plat (plat) - ((sound-time time-frame :offset-assert 324) - (last-val float :offset-assert 332) + ((sound-time time-frame :offset-assert 328) + (last-val float :offset-assert 336) ) :method-count-assert 38 :size-assert #x154 @@ -44830,12 +44810,10 @@ (plat-anim-active () _type_ :state 37) ) ) -|# -#| (deftype fort-claw (process-drawable) - ((path-u float :offset-assert 196) - (path-dest float :offset-assert 200) + ((path-u float :offset-assert 200) + (path-dest float :offset-assert 204) ) :method-count-assert 22 :size-assert #xd0 @@ -44845,7 +44823,6 @@ (pause () _type_ :state 21) ) ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/decompiler/config/jak2/anonymous_function_types.jsonc b/decompiler/config/jak2/anonymous_function_types.jsonc index 2ab15e7344..4c64d2b9cc 100644 --- a/decompiler/config/jak2/anonymous_function_types.jsonc +++ b/decompiler/config/jak2/anonymous_function_types.jsonc @@ -465,5 +465,17 @@ [15, "(function none :behavior target)"] ], "generic-obs": [[9, "(function symbol :behavior touch-tracker)"]], - "gun-dark-shot": [[1, "(function handle none :behavior gun-dark-shot)"]] + "gun-dark-shot": [[1, "(function handle none :behavior gun-dark-shot)"]], + "ctywide-scenes": [ + [3, "(function object)"], + [2, "(function object)"], + [1, "(function object)"], + [0, "(function object)"] + ], + "fortress-obs": [ + [3, "(function object)"] + ], + "forexita-obs": [ + [0, "(function object)"] + ] } diff --git a/decompiler/config/jak2/hacks.jsonc b/decompiler/config/jak2/hacks.jsonc index 40de08bb33..104cdd1e94 100644 --- a/decompiler/config/jak2/hacks.jsonc +++ b/decompiler/config/jak2/hacks.jsonc @@ -441,7 +441,14 @@ 288, 289, 290 - ] + ], + "bones-mtx-calc-execute": [ + 19, 7 + ], + "foreground-draw": [ + 0, 1, 126 + ], + "dma-add-process-drawable": [0, 136] }, // Sometimes the game might use format strings that are fetched dynamically, @@ -509,6 +516,7 @@ "fill-bg-using-box-new", "fill-bg-using-line-sphere-new", "(method 12 collide-mesh)", + "(method 11 collide-mesh)", "(method 14 collide-mesh)", "(method 15 collide-mesh)", "(method 10 collide-edge-hold-list)", @@ -548,7 +556,10 @@ "(method 10 collide-cache-prim)", "(method 17 collide-cache)", "(method 9 collide-puss-work)", - "(method 10 collide-puss-work)" + "(method 10 collide-puss-work)", + "bones-mtx-calc", + "foreground-check-longest-edge-asm", + "foreground-merc" ], "mips2c_jump_table_functions": {}, diff --git a/decompiler/config/jak2/inputs.jsonc b/decompiler/config/jak2/inputs.jsonc index c586364ba8..cfab436c2d 100644 --- a/decompiler/config/jak2/inputs.jsonc +++ b/decompiler/config/jak2/inputs.jsonc @@ -13,7 +13,7 @@ "CGO/ENGINE.CGO", "CGO/GAME.CGO", "CGO/COMMON.CGO", - // "DGO/LWIDEB.DGO", + "DGO/LWIDEB.DGO", "DGO/LMEETBRT.DGO", "DGO/CTA.DGO", "DGO/PALOUT.DGO", @@ -23,7 +23,7 @@ // "DGO/HIDEOUT.DGO", // "DGO/LWIDESTA.DGO", // "DGO/LRACELIT.DGO", - // "DGO/CTB.DGO", + "DGO/CTB.DGO", // "DGO/KIOSK.DGO", // "DGO/DG1.DGO", "DGO/FEB.DGO", @@ -66,7 +66,7 @@ "DGO/PRI.DGO", // "DGO/LKIDDOGE.DGO", // "DGO/NESTT.DGO", - // "DGO/LWIDEC.DGO", + "DGO/LWIDEC.DGO", // "DGO/SAG.DGO", // "DGO/NEB.DGO", // "DGO/COB.DGO", @@ -102,7 +102,7 @@ // "DGO/LTENTOB.DGO", // "DGO/LRACEBF.DGO", // "DGO/LPROTECT.DGO", - // "DGO/FEA.DGO", + "DGO/FEA.DGO", // "DGO/ONINTENT.DGO", // "DGO/STA.DGO", // "DGO/CGC.DGO", @@ -113,7 +113,7 @@ // "DGO/CIA.DGO", // "DGO/TOB.DGO", // "DGO/LRACEDB.DGO", - // "DGO/LDJAKBRN.DGO", + "DGO/LDJAKBRN.DGO", // "DGO/TOA.DGO", // "DGO/STADBLMP.DGO", // "DGO/UND.DGO", @@ -187,8 +187,16 @@ "levels_to_extract": [ "PRI.DGO", "CTA.DGO", + "CTB.DGO", "CWI.DGO", "LWIDEA.DGO", + "LWIDEB.DGO", + "LWIDEC.DGO", + "FEA.DGO", + "FEB.DGO", + + "LDJAKBRN.DGO", + "VI1.DGO", "CIB.DGO", "FEB.DGO" diff --git a/decompiler/config/jak2/label_types.jsonc b/decompiler/config/jak2/label_types.jsonc index 3c68d67f76..2bd70d2249 100644 --- a/decompiler/config/jak2/label_types.jsonc +++ b/decompiler/config/jak2/label_types.jsonc @@ -483,7 +483,20 @@ ["L1250", "uint64", true], ["L1158", "vector"], ["L1222", "uint64", true], - ["L1223", "uint64", true] + ["L1223", "uint64", true], + ["L1221", "uint64", true], + ["L815", "vector"], + ["L801", "vector"], + ["L787", "vector"], + ["L773", "vector"], + ["L766", "vector"], + ["L752", "vector"], + ["L738", "vector"], + ["L724", "vector"], + ["L710", "vector"], + ["L696", "vector"], + ["L682", "vector"] + ], "ocean-texture": [ ["L55", "vector4w"], @@ -532,5 +545,33 @@ "flitter": [ ["L159", "vector"], ["L158", "vector"] + ], + "foreground": [["L213", "vector"], ["L214", "(pointer bucket-id-16)", 200]], + "prison-part": [["L238", "uint64", true]], + "prison-obs": [["L293", "vector4w"], ["L292", "vector4w"]], + "ctywide-scenes": [ + ["L1164", "vector"], + ["L1150", "vector"], + ["L1136", "vector"], + ["L1129", "vector"], + ["L1122", "vector"], + ["L1115", "vector"], + ["L1108", "vector"], + ["L1085", "traffic-danger-info"], + ["L960", "vector"], + ["L953", "vector"], + ["L946", "vector"], + ["L932", "vector"], + ["L918", "vector"], + ["L851", "traffic-danger-info"], + ["L351", "vector"], + ["L250", "vector"], + ["L142", "vector"] + ], + "forexita-part": [ + ["L191", "uint64", true] + ], + "forexitb-part": [ + ["L197", "uint64", true] ] } diff --git a/decompiler/config/jak2/stack_structures.jsonc b/decompiler/config/jak2/stack_structures.jsonc index 40177bbc99..252f454796 100644 --- a/decompiler/config/jak2/stack_structures.jsonc +++ b/decompiler/config/jak2/stack_structures.jsonc @@ -1202,5 +1202,23 @@ "(method 20 collide-cache)": [[16, "matrix"]], "col-rend-draw": [[16, "matrix"]], "(code jump enemy)": [[16, "enemy-jump-info"]], - "check-drop-level-flitter-dirt-rubble": [[16, "vector"]] + "check-drop-level-flitter-dirt-rubble": [[16, "vector"]], + "col-rend-draw": [ + [16, "matrix"] + ], + "dma-add-process-drawable": [ + [64, "light-group"] + ], + "dark-lightning-handler": [ + [16, "matrix"] + ], + "(method 25 joint-exploder)": [ + [16, "matrix"] + ], + "check-drop-level-forexitb-drop-userdata": [ + [16, "vector"] + ], + "check-drop-level-forexitb-drop-water-userdata": [ + [16, "vector"] + ] } diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc index 924f118669..1405288f2d 100644 --- a/decompiler/config/jak2/type_casts.jsonc +++ b/decompiler/config/jak2/type_casts.jsonc @@ -2081,8 +2081,8 @@ [45, "a0", "(pointer gs-test)"], [47, "a0", "(pointer gs-reg64)"], [49, "a1", "(pointer gs-reg64)"], - [52, "a0", "(pointer gs-test)"], - [54, "a0", "(pointer gs-test)"], + [52, "a0", "(pointer gs-zbuf)"], + [54, "a0", "(pointer gs-reg64)"], [[63, 68], "v1", "dma-packet"] ], "texture-usage-init": [ @@ -5077,5 +5077,182 @@ [28, "v1", "vector"], [32, "v1", "vector"], [36, "v1", "vector"] + ], +"bones-set-sqwc": [[2, "v1", "dma-bank-control"]], + "bones-reset-sqwc": [[2, "v1", "dma-bank-control"]], + "bones-init": [ + [1, "v1", "bone-memory"], + [6, "a1", "bone-memory"], + [10, "a1", "bone-memory"], + [14, "a1", "bone-memory"], + [18, "a1", "bone-memory"], + [22, "a1", "bone-memory"], + [26, "a1", "bone-memory"], + [44, "a0", "dma-packet"], + [45, "a0", "(pointer uint64)"] + ], + "bones-mtx-calc-execute": [ + [[126, 154], "a0", "pris-mtx"], + [[126, 154], "a1", "pris-mtx"], + [65, "v1", "bone-memory"], + [70, "a1", "bone-memory"], + [74, "a1", "bone-memory"], + [78, "a1", "bone-memory"], + [82, "a1", "bone-memory"], + [86, "a1", "bone-memory"], + [90, "a1", "bone-memory"], + [94, "a0", "dma-bank-control"], + [157, "a0", "dma-bank-control"] + ], + "foreground-init": [ + [[1, 100], "gp", "foreground-work"], + [21, "a0", "dma-packet"], + [22, "a0", "(pointer uint64)"] + ], + + "texscroll-make-request": [ + [[5, 40], "a1", "mei-texture-scroll"] + ], + "texscroll-execute": [ + [19, "t1", "pointer"], + [15, "a2", "merc-fragment-control"], + [[20, 24], "t1", "merc-fragment"], + [40, "a2", "merc-fragment-control"], + [45, "a2", "merc-fragment-control"], + [48, "a2", "merc-fragment-control"], + [51, "a2", "int"], + [[10, 31], "a1", "mei-texture-scroll"], + [39, "t1", "(pointer int8)"] + ], + + "foreground-wrapup": [ + [[1, 90], "gp", "foreground-work"], + [[25, 31], "a0", "dma-packet"], + [[55, 60], "a0", "dma-packet"] + ], + + "foreground-draw": [ + [[1, 64], "at", "foreground-work"], + [13, "t0", "foreground-work"], + [27, "t1", "foreground-work"], + [32, "a2", "foreground-work"], + [37, "a1", "foreground-work"], + [70, "a0", "foreground-work"], + [114, "v1", "foreground-work"], + [116, "v1", "foreground-work"], + [118, "v1", "foreground-work"], + [142, "v1", "foreground-work"], + [187, "a0", "foreground-work"], + [220, "a0", "foreground-work"], + [233, "a0", "foreground-work"], + [256, "a0", "foreground-work"], + [369, "v1", "foreground-work"], + [377, "a0", "foreground-work"], + [417, "a0", "foreground-work"], + [432, "a0", "foreground-work"], + [445, "v1", "foreground-work"], + [468, "v1", "foreground-work"], + [475, "v1", "foreground-work"], + [500, "v1", "foreground-work"], + [518, "v1", "foreground-work"], + [524, "v1", "foreground-work"], + [553, "a0", "foreground-work"], + [583, "v1", "foreground-work"], + [594, "v1", "foreground-work"], + [602, "v1", "foreground-work"], + [611, "v1", "foreground-work"], + [654, "a0", "foreground-work"], + [648, "s5", "int"], + + [315, "a2", "(pointer uint8)"], + [321, "v1", "pointer"], + [338, "a3", "(pointer uint8)"], + [344, "v1", "pointer"], + + [[4, 61], "a0", "bone-calculation"], + [[185, 189], "v1", "mei-texture-scroll"], + + [[252,281], "v1", "mei-envmap-tint"] + ], + + "foreground-add-mtx-calc": [ + [1, "v1", "foreground-work"] + ], + + "foreground-shadow": [ + [2, "v1", "foreground-work"], + [[13, 19], "t1", "vector"] + ], + + "dma-add-process-drawable": [ + [433, "a0", "foreground-work"], + [545, "t0", "(pointer uint128)"], + [39, "a0", "foreground-work"], + [42, "a0", "foreground-work"], + [[128, 146], "v1", "mood-context"] + ], + + "foreground-ripple": [ + [2, "v1", "foreground-work"], + [25, "v1", "foreground-work"], + [[27, 32], "a0", "foreground-work"] + ], + + "dark-lightning-handler": [ + [64, "s5", "process-drawable"], + [211, "gp", "process-drawable"], + [147, "s5", "process-drawable"], + [251, "gp", "process-drawable"], + [312, "a0", "lightning-tracker"] + ], + + "(post idle air-train)": [ + [4, "t9", "(function none)"] + ], + + "(anon-function 3 ctywide-scenes)": [ + [13, "t9", "(function mood-context symbol)"], + [33, "t9", "(function mood-context symbol)"] + ], + "(anon-function 2 ctywide-scenes)": [ + [13, "t9", "(function mood-context symbol)"], + [33, "t9", "(function mood-context symbol)"] + ], + "(anon-function 1 ctywide-scenes)": [ + [13, "t9", "(function mood-context symbol)"], + [33, "t9", "(function mood-context symbol)"] + ], + "(anon-function 0 ctywide-scenes)": [ + [13, "t9", "(function mood-context symbol)"], + [33, "t9", "(function mood-context symbol)"] + ], + "(method 11 fort-trap-door)": [ + [53, "a0", "collide-shape-moving"] + ], + + "(method 0 joint-exploder-tuning)": [ + [[5, 79], "v0", "joint-exploder-tuning"] + ], + + "joint-exploder-init-by-other": [ + [48, "a0", "process-drawable"], + [57, "v1", "process-drawable"], + [64, "a0", "process-drawable"] + ], + + "(method 23 joint-exploder)": [ + [26, "v1", "process-drawable"] + ], + + "(method 28 joint-exploder)": [ + [[0, 250], "s5", "joint-exploder-list"] + ], + + "joint-exploder-joint-callback": [ + [3, "s4", "joint-exploder"] + ], + + "(event idle fort-trap-door)": [ + [4, "v1", "attack-info"] ] } diff --git a/decompiler/config/jak2/var_names.jsonc b/decompiler/config/jak2/var_names.jsonc index 4a2d7c783c..cde72da212 100644 --- a/decompiler/config/jak2/var_names.jsonc +++ b/decompiler/config/jak2/var_names.jsonc @@ -2193,5 +2193,88 @@ "sv-56": "overhang-nrm", "sv-52": "tangent" } + }, + "foreground-draw": { + "args": ["dc", "dma-buf", "dist-in"], + "vars": { + "at-0":"fg-work", + "a0-1":["bone-calc", "bone-calculation"], + "t1-0":"num-bones", + "a3-3":"bone-mem-size", + "t0-1":"fg-regs", + "v1-0":"matrix-mem", + "t0-2":"matrix-mem2", + "t1-2":"bflags", + "t4-0":"f-regs", + "a1-6":"bone-list", + "a2-5":"calc-to-add", + "t2-4":"jnt", + "t3-0":"bn", + "t4-1":"count", + "t5-0":"calc", + "s5-0":["dma-ptr", "pointer"], + "s4-0":"bucket-info", + "a0-5":"fg-lights", + "v1-6":"rotated-light-out", + "a1-8":"inv-cam-rot", + "s3-0":"geo", + "s2-0":"effect-mask", + "s1-0":"effect-idx", + "v1-40":"extra", + "v1-41":"tex-scroll-info", + "v1-70":"ei", + "v1-71":"tint-info", + "f1-1":"t-fade-0", + "f0-4":"t-fade-1", + "f1-3":"t-interp", + "f0-6":"t-amount", + "a0-75":"merc-fade-int", + "v1-156":"fade-enable", + "f0-11":"dist-until-gone" + } + }, + + "dma-add-process-drawable": { + "args": ["pd", "dc", "flag", "dma-buf"], + "vars": { + "s4-0":"fg-bounds", + "s3-0":"fg-lights", + "sv-272":"tod", + "sv-288": "shadow-mask", + "s0-0": "shadow-mask-not", + "sv-304":"lev-idx-for-mood", + "s1-1":"light-idx", + "s2-1":"lg", + "v1-53":"packed-shadow-vals", + "a0-28":"light-idx", + "a2-8":"light-pal-idx", + "s1-2":"fg-light-lev-idx", + "v1-62":"lev", + "s0-1":"light-hash", + "sv-320":"my-origin", + "sv-336":"lev-mood", + "v0-6":"light-lookup-result", + "sv-352":"light-result-bucket", + "sv-368":"index-ptr", + "sv-384":"index-index", + "a1-49":"light-sphere", + "v1-73":"palette-idx", + "f0-12":"interp", + "s1-3":"target-shadow-dir", + "s0-2":"current-shadow-dir", + "f30-0":"shadow-dir-w", + "v1-109":"fg-dist", + "s3-1":"lod-idx", + "f30-1":"dist-w", + "v1-133":"src-lev", + "f0-26":"corrected-dist", + "a0-64":"tex-use", + "a1-54":"use-fg-idx", + "a2-13":"use-idx", + "t0-0":"tex-lod" + } + }, + "(method 0 joint-exploder-tuning)": { + "vars": {"v0-0":["v0-0", "joint-exploder-tuning"]} } } diff --git a/decompiler/config/jak2_ntsc_v1.jsonc b/decompiler/config/jak2_ntsc_v1.jsonc index 1ce7b08952..23693b5685 100644 --- a/decompiler/config/jak2_ntsc_v1.jsonc +++ b/decompiler/config/jak2_ntsc_v1.jsonc @@ -8,7 +8,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. "allowed_objects": [], - "banned_objects": ["ctywide-scenes", "texture-anim-tables", "traffic-engine"], + "banned_objects": ["texture-anim-tables", "traffic-engine"], //////////////////////////// // CODE ANALYSIS OPTIONS diff --git a/decompiler/level_extractor/extract_level.cpp b/decompiler/level_extractor/extract_level.cpp index 6417af89e9..1f91924a32 100644 --- a/decompiler/level_extractor/extract_level.cpp +++ b/decompiler/level_extractor/extract_level.cpp @@ -101,10 +101,6 @@ void extract_art_groups_from_level(const ObjectFileDB& db, const std::vector& tex_remap, const std::string& dgo_name, tfrag3::Level& level_data) { - if (db.version() == GameVersion::Jak2) { - lg::warn("skipping art group extraction for jak 2"); - return; - } const auto& files = db.obj_files_by_dgo.at(dgo_name); for (const auto& file : files) { if (file.name.length() > 3 && !file.name.compare(file.name.length() - 3, 3, "-ag")) { diff --git a/decompiler/level_extractor/extract_merc.cpp b/decompiler/level_extractor/extract_merc.cpp index 74a01f65d0..19e6d40e00 100644 --- a/decompiler/level_extractor/extract_merc.cpp +++ b/decompiler/level_extractor/extract_merc.cpp @@ -654,7 +654,6 @@ std::string debug_dump_to_ply(const std::vector& draws, ConvertedMercEffect convert_merc_effect(const MercEffect& input_effect, const MercCtrlHeader& ctrl_header, - const TextureDB& tdb, const std::vector& map, const std::string& debug_name, size_t ctrl_idx, @@ -726,9 +725,7 @@ ConvertedMercEffect convert_merc_effect(const MercEffect& input_effect, u32 tpage = new_tex >> 20; u32 tidx = (new_tex >> 8) & 0b1111'1111'1111; u32 tex_combo = (((u32)tpage) << 16) | tidx; - // look up the texture to make sure it's valid - auto tex = tdb.textures.find(tex_combo); - ASSERT(tex != tdb.textures.end()); + // remember the texture id merc_state.merc_draw_mode.pc_combo_tex_id = tex_combo; @@ -882,8 +879,8 @@ void extract_merc(const ObjectFileData& ag_data, for (size_t ci = 0; ci < ctrls.size(); ci++) { auto& effects_in_ctrl = all_effects.emplace_back(); for (size_t ei = 0; ei < ctrls[ci].effects.size(); ei++) { - effects_in_ctrl.push_back(convert_merc_effect(ctrls[ci].effects[ei], ctrls[ci].header, tex_db, - map, ctrls[ci].name, ci, ei, dump_level)); + effects_in_ctrl.push_back(convert_merc_effect(ctrls[ci].effects[ei], ctrls[ci].header, map, + ctrls[ci].name, ci, ei, dump_level)); } } @@ -941,7 +938,8 @@ void extract_merc(const ObjectFileData& ag_data, // not added to level, add it auto tex_it = tex_db.textures.find(draw.state.merc_draw_mode.pc_combo_tex_id); if (tex_it == tex_db.textures.end()) { - ASSERT(false); + lg::error("failed to find texture: 0x{:x} for {}\n", + draw.state.merc_draw_mode.pc_combo_tex_id, ctrl.name); } else { idx_in_level_texture = out.textures.size(); auto& new_tex = out.textures.emplace_back(); diff --git a/decompiler/types2/types2.cpp b/decompiler/types2/types2.cpp index 81d684a7ad..f2802d446d 100644 --- a/decompiler/types2/types2.cpp +++ b/decompiler/types2/types2.cpp @@ -735,7 +735,6 @@ end_type_pass: } auto& type = instr.unknown_label_tag->selected_type.value(); int idx = instr.unknown_label_tag->label_idx; - ASSERT(type.base_type() != "pointer"); // want to test this if we find example... env.file->label_db->set_and_get_previous(idx, type, false, {}); } diff --git a/decompiler/util/data_decompile.cpp b/decompiler/util/data_decompile.cpp index affc337644..c0606199c6 100644 --- a/decompiler/util/data_decompile.cpp +++ b/decompiler/util/data_decompile.cpp @@ -156,7 +156,7 @@ goos::Object decompile_at_label_guess_type(const DecompilerLabel& label, GameVersion version) { auto guessed_type = get_type_of_label(label, words); if (!guessed_type.has_value()) { - throw std::runtime_error("Could not guess the type of " + label.name); + throw std::runtime_error("(1) Could not guess the type of " + label.name); } return decompile_at_label(*guessed_type, label, labels, words, ts, file, version); } @@ -1567,7 +1567,14 @@ goos::Object decompile_pair_elt(const LinkedWord& word, auto& label = labels.at(word.label_id()); auto guessed_type = get_type_of_label(label, words); if (!guessed_type.has_value()) { - throw std::runtime_error("Could not guess the type of " + label.name); + auto& info = file->label_db->lookup(label.name); + if (info.known) { + guessed_type = info.result_type; + } + } + + if (!guessed_type.has_value()) { + throw std::runtime_error("(1) Could not guess the type of " + label.name); } if (guessed_type == TypeSpec("pair")) { diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index c62dd6fc56..e00f3715ae 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -82,6 +82,7 @@ set(RUNTIME_SOURCE mips2c/jak1_functions/tfrag.cpp mips2c/jak1_functions/tie_methods.cpp mips2c/jak1_functions/time_of_day.cpp + mips2c/jak2_functions/bones.cpp mips2c/jak2_functions/collide_cache.cpp mips2c/jak2_functions/collide_edge_grab.cpp mips2c/jak2_functions/collide_func.cpp @@ -89,6 +90,7 @@ set(RUNTIME_SOURCE mips2c/jak2_functions/collide_mesh.cpp mips2c/jak2_functions/debug.cpp mips2c/jak2_functions/font.cpp + mips2c/jak2_functions/foreground.cpp mips2c/jak2_functions/joint.cpp mips2c/jak2_functions/sky.cpp mips2c/jak2_functions/sparticle.cpp diff --git a/game/graphics/opengl_renderer/DirectRenderer.cpp b/game/graphics/opengl_renderer/DirectRenderer.cpp index 4b4fffa754..d465be6b6c 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.cpp +++ b/game/graphics/opengl_renderer/DirectRenderer.cpp @@ -278,15 +278,10 @@ void DirectRenderer::update_gl_prim(SharedRenderState* render_state) { } else { render_state->shaders[ShaderId::DIRECT_BASIC].activate(); } - if (state.fogging_enable) { - // ASSERT(false); - } + if (state.aa_enable) { ASSERT(false); } - if (state.use_uv) { - ASSERT(false); - } if (state.ctxt) { ASSERT(false); } @@ -580,6 +575,9 @@ void DirectRenderer::render_gif(const u8* data, case GifTag::RegisterDescriptor::TEX0_1: handle_tex0_1_packed(data + offset); break; + case GifTag::RegisterDescriptor::UV: + handle_uv_packed(data + offset); + break; default: ASSERT_MSG(false, fmt::format("Register {} is not supported in packed mode yet\n", reg_descriptor_name(reg_desc[reg]))); @@ -769,6 +767,15 @@ void DirectRenderer::handle_st_packed(const u8* data) { memcpy(&m_prim_building.Q, data + 8, 4); } +void DirectRenderer::handle_uv_packed(const u8* data) { + u32 u, v; + memcpy(&u, data, 4); + memcpy(&v, data + 4, 4); + m_prim_building.st_reg.x() = u; + m_prim_building.st_reg.y() = v; + m_prim_building.Q = 16.f; +} + void DirectRenderer::handle_rgbaq_packed(const u8* data) { // TODO update Q from st. m_prim_building.rgba_reg[0] = data[0]; diff --git a/game/graphics/opengl_renderer/DirectRenderer.h b/game/graphics/opengl_renderer/DirectRenderer.h index 244b0ce78d..dc15419a8d 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.h +++ b/game/graphics/opengl_renderer/DirectRenderer.h @@ -81,6 +81,7 @@ class DirectRenderer : public BucketRenderer { void handle_rgbaq(u64 val); void handle_xyzf2(u64 val, SharedRenderState* render_state, ScopedProfilerNode& prof); void handle_st_packed(const u8* data); + void handle_uv_packed(const u8* data); void handle_rgbaq_packed(const u8* data); void handle_xyzf2_packed(const u8* data, SharedRenderState* render_state, diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.cpp b/game/graphics/opengl_renderer/OpenGLRenderer.cpp index 67a7148ec2..e481eee3f3 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.cpp +++ b/game/graphics/opengl_renderer/OpenGLRenderer.cpp @@ -99,19 +99,28 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { std::vector{tfrag3::TFragmentTreeKind::NORMAL}, false, 0); init_bucket_renderer("tie-l0-tfrag", BucketCategory::TIE, BucketId::TIE_L0_TFRAG, 0); // 10 + init_bucket_renderer("merc-l0-tfrag", BucketCategory::MERC, BucketId::MERC_L0_TFRAG); init_bucket_renderer("tex-l1-tfrag", BucketCategory::TEX, BucketId::TEX_L1_TFRAG); init_bucket_renderer("tfrag-l1-tfrag", BucketCategory::TFRAG, BucketId::TFRAG_L1_TFRAG, std::vector{tfrag3::TFragmentTreeKind::NORMAL}, false, 1); // 20 init_bucket_renderer("tie-l1-tfrag", BucketCategory::TIE, BucketId::TIE_L1_TFRAG, 1); + init_bucket_renderer("merc-l1-tfrag", BucketCategory::MERC, BucketId::MERC_L1_TFRAG); + init_bucket_renderer("tex-l2-tfrag", BucketCategory::TEX, + BucketId::TEX_L2_TFRAG); // 30 + init_bucket_renderer("tfrag-l2-tfrag", BucketCategory::TFRAG, BucketId::TFRAG_L2_TFRAG, + std::vector{tfrag3::TFragmentTreeKind::NORMAL}, false, 2); + init_bucket_renderer("tie-l2-tfrag", BucketCategory::TIE, BucketId::TIE_L2_TFRAG, 2); + init_bucket_renderer("merc-l2-tfrag", BucketCategory::MERC, BucketId::MERC_L2_TFRAG); // 40 init_bucket_renderer("tex-l3-tfrag", BucketCategory::TEX, BucketId::TEX_L3_TFRAG); init_bucket_renderer("tfrag-l3-tfrag", BucketCategory::TFRAG, BucketId::TFRAG_L3_TFRAG, std::vector{tfrag3::TFragmentTreeKind::NORMAL}, false, 3); init_bucket_renderer("tie-l3-tfrag", BucketCategory::TIE, BucketId::TIE_L3_TFRAG, 3); + init_bucket_renderer("merc-l3-tfrag", BucketCategory::MERC, BucketId::MERC_L3_TFRAG); // 50 // 60 // 70 @@ -123,6 +132,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { BucketId::TEX_L1_SHRUB); init_bucket_renderer("shrub-l1-shrub", BucketCategory::SHRUB, BucketId::SHRUB_L1_SHRUB); // 90 + init_bucket_renderer("tex-l2-shrub", BucketCategory::TEX, + BucketId::TEX_L2_SHRUB); + init_bucket_renderer("shrub-l2-shrub", BucketCategory::SHRUB, BucketId::SHRUB_L2_SHRUB); // 100 init_bucket_renderer("tex-l3-shrub", BucketCategory::TEX, BucketId::TEX_L3_SHRUB); @@ -135,6 +147,8 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { BucketId::TFRAG_T_L0_ALPHA, std::vector{tfrag3::TFragmentTreeKind::TRANS}, false, 0); // 130 + init_bucket_renderer("tex-l1-alpha", BucketCategory::TEX, + BucketId::TEX_L1_ALPHA); // 140 // 150 // 160 @@ -142,32 +156,42 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { // 180 init_bucket_renderer("tex-lcom-tfrag", BucketCategory::TEX, BucketId::TEX_LCOM_TFRAG); + init_bucket_renderer("merc-lcom-tfrag", BucketCategory::MERC, BucketId::MERC_LCOM_TFRAG); // 190 init_bucket_renderer("tex-lcom-shrub", BucketCategory::TEX, BucketId::TEX_LCOM_SHRUB); - + init_bucket_renderer("merc-lcom-shrub", BucketCategory::MERC, BucketId::MERC_LCOM_SHRUB); init_bucket_renderer("tex-l0-pris", BucketCategory::TEX, BucketId::TEX_L0_PRIS); + init_bucket_renderer("merc-l0-pris", BucketCategory::MERC, BucketId::MERC_L0_PRIS); // 200 + init_bucket_renderer("tex-l1-pris", BucketCategory::TEX, + BucketId::TEX_L1_PRIS); + init_bucket_renderer("merc-l1-pris", BucketCategory::MERC, BucketId::MERC_L1_PRIS); init_bucket_renderer("tex-l2-pris", BucketCategory::TEX, BucketId::TEX_L2_PRIS); + init_bucket_renderer("merc-l2-pris", BucketCategory::MERC, BucketId::MERC_L2_PRIS); init_bucket_renderer("tex-l3-pris", BucketCategory::TEX, BucketId::TEX_L3_PRIS); // 210 // 220 init_bucket_renderer("tex-lcom-pris", BucketCategory::TEX, BucketId::TEX_LCOM_PRIS); + init_bucket_renderer("merc-lcom-pris", BucketCategory::MERC, BucketId::MERC_LCOM_PRIS); // 230 // 240 // 250 init_bucket_renderer("tex-l0-water", BucketCategory::TEX, BucketId::TEX_L0_WATER); + init_bucket_renderer("merc-l0-water", BucketCategory::MERC, BucketId::MERC_L0_WATER); init_bucket_renderer("tfrag-w-l0-alpha", BucketCategory::TFRAG, BucketId::TFRAG_W_L0_WATER, std::vector{tfrag3::TFragmentTreeKind::WATER}, false, 0); // 260 init_bucket_renderer("tex-l1-water", BucketCategory::TEX, BucketId::TEX_L1_WATER); + init_bucket_renderer("merc-l1-water", BucketCategory::MERC, BucketId::MERC_L1_WATER); + // 270 init_bucket_renderer("tex-l2-water", BucketCategory::TEX, BucketId::TEX_L2_WATER); @@ -176,6 +200,7 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { // 300 init_bucket_renderer("tex-lcom-water", BucketCategory::TEX, BucketId::TEX_LCOM_WATER); + init_bucket_renderer("merc-lcom-water", BucketCategory::MERC, BucketId::MERC_LCOM_WATER); init_bucket_renderer("tex-lcom-sky-post", BucketCategory::TEX, BucketId::TEX_LCOM_SKY_POST); // 310 @@ -189,6 +214,8 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { init_bucket_renderer("tex-all-map", BucketCategory::TEX, BucketId::TEX_ALL_MAP); // 320 + init_bucket_renderer("progress", BucketCategory::OTHER, BucketId::PROGRESS, + 0x8000); init_bucket_renderer("debug2", BucketCategory::OTHER, BucketId::DEBUG2, 0x8000); init_bucket_renderer("debug-no-zbuf2", BucketCategory::OTHER, BucketId::DEBUG_NO_ZBUF2, 0x8000); @@ -658,6 +685,7 @@ Fbo make_fbo(int w, int h, int msaa, bool make_zbuf_and_stencil) { void OpenGLRenderer::setup_frame(const RenderOptions& settings) { // glfw controls the window framebuffer, so we just update the size: auto& window_fb = m_fbo_state.resources.window; + bool window_resized = window_fb.width != settings.window_framebuffer_width || window_fb.height != settings.window_framebuffer_height; window_fb.valid = true; diff --git a/game/graphics/opengl_renderer/buckets.h b/game/graphics/opengl_renderer/buckets.h index 74fe88f4aa..54219b9269 100644 --- a/game/graphics/opengl_renderer/buckets.h +++ b/game/graphics/opengl_renderer/buckets.h @@ -87,37 +87,58 @@ enum class BucketId { TEX_L0_TFRAG = 7, TFRAG_L0_TFRAG = 8, TIE_L0_TFRAG = 9, + MERC_L0_TFRAG = 14, TEX_L1_TFRAG = 18, TFRAG_L1_TFRAG = 19, TIE_L1_TFRAG = 20, + MERC_L1_TFRAG = 25, + TEX_L2_TFRAG = 29, + TFRAG_L2_TFRAG = 30, + TIE_L2_TFRAG = 31, + MERC_L2_TFRAG = 36, TEX_L3_TFRAG = 40, TFRAG_L3_TFRAG = 41, TIE_L3_TFRAG = 42, + MERC_L3_TFRAG = 47, TEX_L0_SHRUB = 73, SHRUB_L0_SHRUB = 74, TEX_L1_SHRUB = 82, SHRUB_L1_SHRUB = 83, + TEX_L2_SHRUB = 91, + SHRUB_L2_SHRUB = 92, TEX_L3_SHRUB = 100, SHRUB_L3_SHRUB = 101, TEX_L0_ALPHA = 127, TFRAG_T_L0_ALPHA = 128, + TEX_L1_ALPHA = 137, TEX_LCOM_TFRAG = 187, + MERC_LCOM_TFRAG = 188, TEX_LCOM_SHRUB = 191, + MERC_LCOM_SHRUB = 192, // ??? TEX_L0_PRIS = 196, + MERC_L0_PRIS = 197, + TEX_L1_PRIS = 200, + MERC_L1_PRIS = 201, TEX_L2_PRIS = 204, + MERC_L2_PRIS = 205, TEX_L3_PRIS = 208, TEX_LCOM_PRIS = 220, + MERC_LCOM_PRIS = 221, TEX_L0_WATER = 252, + MERC_L0_WATER = 253, TFRAG_W_L0_WATER = 255, TEX_L1_WATER = 261, + MERC_L1_WATER = 262, TEX_L2_WATER = 270, TEX_LCOM_WATER = 306, + MERC_LCOM_WATER = 307, TEX_LCOM_SKY_POST = 309, TEX_ALL_SPRITE = 312, PARTICLES = 313, TEX_ALL_WARP = 316, DEBUG_NO_ZBUF1 = 318, TEX_ALL_MAP = 319, + PROGRESS = 320, DEBUG2 = 324, DEBUG_NO_ZBUF2 = 325, DEBUG3 = 326, diff --git a/game/graphics/opengl_renderer/foreground/Merc2.cpp b/game/graphics/opengl_renderer/foreground/Merc2.cpp index abc5c20227..9effb54d22 100644 --- a/game/graphics/opengl_renderer/foreground/Merc2.cpp +++ b/game/graphics/opengl_renderer/foreground/Merc2.cpp @@ -153,6 +153,12 @@ void Merc2::set_lights(const DmaTransfer& dma) { memcpy(&m_current_lights, dma.data, sizeof(VuLights)); } +std::string Merc2::ShaderMercMat::to_string() const { + return fmt::format("tmat:\n{}\n{}\n{}\n{}\n", tmat[0].to_string_aligned(), + tmat[1].to_string_aligned(), tmat[2].to_string_aligned(), + tmat[3].to_string_aligned()); +} + void Merc2::handle_matrix_dma(const DmaTransfer& dma) { int slot = dma.vif0() & 0xff; ASSERT(slot < MAX_SKEL_BONES); @@ -167,8 +173,9 @@ void Merc2::handle_all_dma(DmaFollower& dma, ScopedProfilerNode& prof) { // process the first tag. this is just jumping to the merc-specific dma. auto data0 = dma.read_and_advance(); - ASSERT(data0.vif1() == 0); - ASSERT(data0.vif0() == 0); + ASSERT(data0.vif1() == 0 || data0.vifcode1().kind == VifCode::Kind::NOP); + ASSERT(data0.vif0() == 0 || data0.vifcode0().kind == VifCode::Kind::NOP || + data0.vifcode0().kind == VifCode::Kind::MARK); ASSERT(data0.size_bytes == 0); if (dma.current_tag().kind == DmaTag::Kind::CALL) { // renderer didn't run, let's just get out of here. @@ -178,13 +185,13 @@ void Merc2::handle_all_dma(DmaFollower& dma, ASSERT(dma.current_tag_offset() == render_state->next_bucket); return; } - ASSERT(data0.size_bytes == 0); - ASSERT(data0.vif0() == 0); - ASSERT(data0.vif1() == 0); + if (dma.current_tag_offset() == render_state->next_bucket) { + return; + } // if we reach here, there's stuff to draw // this handles merc-specific setup DMA - handle_setup_dma(dma); + handle_setup_dma(dma, render_state); // handle each merc transfer while (dma.current_tag_offset() != render_state->next_bucket) { @@ -202,13 +209,11 @@ void set_uniform(GLuint uniform, const math::Vector4f& val) { } } // namespace -void Merc2::handle_setup_dma(DmaFollower& dma) { +void Merc2::handle_setup_dma(DmaFollower& dma, SharedRenderState* render_state) { auto first = dma.read_and_advance(); // 10 quadword setup packet ASSERT(first.size_bytes == 10 * 16); - // m_stats.str += fmt::format("Setup 0: {} {} {}", first.size_bytes / 16, - // first.vifcode0().print(), first.vifcode1().print()); // transferred vifcodes { @@ -245,6 +250,12 @@ void Merc2::handle_setup_dma(DmaFollower& dma) { // 8 qw's of low memory data memcpy(&m_low_memory, first.data + 16, sizeof(LowMemory)); + // fmt::print("low\nhvdf: {}\nfog: {}\nmat:\n{}\n{}\n{}\n{}\n\n", + // m_low_memory.hvdf_offset.to_string_aligned(), m_low_memory.fog.to_string_aligned(), + // m_low_memory.perspective[0].to_string_aligned(), + // m_low_memory.perspective[1].to_string_aligned(), + // m_low_memory.perspective[2].to_string_aligned(), + // m_low_memory.perspective[3].to_string_aligned()); set_uniform(m_uniforms.hvdf_offset, m_low_memory.hvdf_offset); set_uniform(m_uniforms.fog, m_low_memory.fog); for (int i = 0; i < 4; i++) { @@ -267,12 +278,22 @@ void Merc2::handle_setup_dma(DmaFollower& dma) { // TODO: process low memory initialization - auto second = dma.read_and_advance(); - ASSERT(second.size_bytes == 32); // setting up test register. - auto nothing = dma.read_and_advance(); - ASSERT(nothing.size_bytes == 0); - ASSERT(nothing.vif0() == 0); - ASSERT(nothing.vif1() == 0); + if (render_state->version == GameVersion::Jak1) { + auto second = dma.read_and_advance(); + ASSERT(second.size_bytes == 32); // setting up test register. + auto nothing = dma.read_and_advance(); + ASSERT(nothing.size_bytes == 0); + ASSERT(nothing.vif0() == 0); + ASSERT(nothing.vif1() == 0); + } else { + auto second = dma.read_and_advance(); + ASSERT(second.size_bytes == 48); // setting up test/zbuf register. + // todo z write mask stuff. + auto nothing = dma.read_and_advance(); + ASSERT(nothing.size_bytes == 0); + ASSERT(nothing.vif0() == 0); + ASSERT(nothing.vif1() == 0); + } } namespace { @@ -302,13 +323,34 @@ void Merc2::handle_merc_chain(DmaFollower& dma, auto init = dma.read_and_advance(); + if (init.vifcode0().kind == VifCode::Kind::FLUSHA) { + while (dma.current_tag_offset() != render_state->next_bucket) { + dma.read_and_advance(); + } + return; + } + if (init.vifcode1().kind == VifCode::Kind::PC_PORT) { // we got a PC PORT packet. this contains some extra data to set up the model flush_pending_model(render_state, prof); init_pc_model(init, render_state); - ASSERT(tag_is_nothing_cnt(dma)); + + ASSERT(tag_is_nothing_cnt(dma) || tag_is_nothing_next(dma)); init = dma.read_and_advance(); // dummy tag in pc port - init = dma.read_and_advance(); + if (init.vifcode0().kind != VifCode::Kind::STROW) { + init = dma.read_and_advance(); + } + if (init.vifcode0().kind != VifCode::Kind::STROW) { + init = dma.read_and_advance(); + } + if (init.vifcode0().kind != VifCode::Kind::STROW) { + while (dma.current_tag_offset() != render_state->next_bucket) { + auto skip = dma.read_and_advance(); + ASSERT(skip.vifcode0().kind == VifCode::Kind::NOP); + ASSERT(skip.vifcode1().kind == VifCode::Kind::NOP); + } + return; + } } // row stuff. diff --git a/game/graphics/opengl_renderer/foreground/Merc2.h b/game/graphics/opengl_renderer/foreground/Merc2.h index 932bac76c1..e9f578cb44 100644 --- a/game/graphics/opengl_renderer/foreground/Merc2.h +++ b/game/graphics/opengl_renderer/foreground/Merc2.h @@ -48,7 +48,7 @@ class Merc2 : public BucketRenderer { void init_for_frame(SharedRenderState* render_state); void init_pc_model(const DmaTransfer& setup, SharedRenderState* render_state); void handle_all_dma(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof); - void handle_setup_dma(DmaFollower& dma); + void handle_setup_dma(DmaFollower& dma, SharedRenderState* render_state); u32 alloc_lights(const VuLights& lights); void set_lights(const DmaTransfer& dma); void handle_matrix_dma(const DmaTransfer& dma); @@ -69,6 +69,8 @@ class Merc2 : public BucketRenderer { math::Vector4f tmat[4]; math::Vector4f nmat[3]; math::Vector4f pad; + + std::string to_string() const; }; static constexpr int MAX_SKEL_BONES = 128; diff --git a/game/graphics/opengl_renderer/shaders/merc2.vert b/game/graphics/opengl_renderer/shaders/merc2.vert index b0b2663840..9a068b058e 100644 --- a/game/graphics/opengl_renderer/shaders/merc2.vert +++ b/game/graphics/opengl_renderer/shaders/merc2.vert @@ -27,7 +27,7 @@ uniform vec4 fog_constants; uniform mat4 perspective_matrix; -const float SCISSOR_ADJUST = 512.0/448.0; +const float SCISSOR_ADJUST = HEIGHT_SCALE * 512.0/448.0; // output out vec3 vtx_color; diff --git a/game/kernel/jak2/klink.cpp b/game/kernel/jak2/klink.cpp index 00e933df52..ecf06e2583 100644 --- a/game/kernel/jak2/klink.cpp +++ b/game/kernel/jak2/klink.cpp @@ -348,8 +348,15 @@ uint32_t link_control::jak2_work_v2() { MsgErr("dkernel: heap overflow\n"); // game has ~% instead of \n :P return 1; } - } else { // not close enough, need to move the object + // added in jak 2, move the link block to the top of the heap so we can allocate on + // the level heap during linking without overwriting link data. this is used for level types + u32 link_block_size = *m_link_block_ptr.cast(); + auto new_link_block = kmalloc(m_heap, link_block_size, KMALLOC_TOP, "link-block"); + memmove(new_link_block.c(), m_link_block_ptr.c() - 4, link_block_size); + m_link_block_ptr = Ptr(new_link_block.offset + 4); // basic offset + + } else { // not close enough, need to move the object // on the first run of this state... if (m_segment_process == 0) { m_original_object_location = m_object_data; diff --git a/game/mips2c/jak2_functions/bones.cpp b/game/mips2c/jak2_functions/bones.cpp new file mode 100644 index 0000000000..a080357337 --- /dev/null +++ b/game/mips2c/jak2_functions/bones.cpp @@ -0,0 +1,676 @@ + +//--------------------------MIPS2C--------------------- +// clang-format off +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/jak2/kscheme.h" +using namespace jak2; + +namespace Mips2C::jak2 { +void exec_mpg(ExecutionContext* c) { + // nop | mulax.xyzw ACC, vf05, vf01 0 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf05).vf, c->vf_src(vf01).vf.x()); + // nop | madday.xyzw ACC, vf06, vf01 1 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf06].vf, c->vfs[vf01].vf.y()); + // nop | maddaz.xyzw ACC, vf07, vf01 2 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf07].vf, c->vfs[vf01].vf.z()); + // nop | maddw.xyzw vf13, vf08, vf01 3 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf13].vf, c->vf_src(vf08).vf, c->vf_src(vf01).vf.w()); + // nop | mulax.xyzw ACC, vf05, vf02 4 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf05).vf, c->vf_src(vf02).vf.x()); + // nop | madday.xyzw ACC, vf06, vf02 5 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf06].vf, c->vfs[vf02].vf.y()); + // nop | maddaz.xyzw ACC, vf07, vf02 6 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf07].vf, c->vfs[vf02].vf.z()); + // nop | maddw.xyzw vf14, vf08, vf02 7 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf14].vf, c->vf_src(vf08).vf, c->vf_src(vf02).vf.w()); + // nop | mulax.xyzw ACC, vf05, vf03 8 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf05).vf, c->vf_src(vf03).vf.x()); + // nop | madday.xyzw ACC, vf06, vf03 9 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf06].vf, c->vfs[vf03].vf.y()); + // nop | maddaz.xyzw ACC, vf07, vf03 10 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf07].vf, c->vfs[vf03].vf.z()); + // nop | maddw.xyzw vf15, vf08, vf03 11 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf15].vf, c->vf_src(vf08).vf, c->vf_src(vf03).vf.w()); + // nop | mulax.xyzw ACC, vf05, vf04 12 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf05).vf, c->vf_src(vf04).vf.x()); + // nop | madday.xyzw ACC, vf06, vf04 13 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf06].vf, c->vfs[vf04].vf.y()); + // nop | maddaz.xyzw ACC, vf07, vf04 14 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf07].vf, c->vfs[vf04].vf.z()); + // nop | maddw.xyzw vf16, vf08, vf04 15 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf16].vf, c->vf_src(vf08).vf, c->vf_src(vf04).vf.w()); + // nop | opmula.xyz ACC, vf14, vf15 16 + c->vopmula(vf14, vf15); // vu.acc.opmula(vu.vf14, vu.vf15); + // nop | opmsub.xyz vf09, vf15, vf14 17 + c->vopmsub(vf09, vf15, vf14); // vu.acc.opmsub(vu.vf09, vu.vf15, vu.vf14); + // nop | opmula.xyz ACC, vf15, vf13 18 + c->vopmula(vf15, vf13); // vu.acc.opmula(vu.vf15, vu.vf13); + // nop | opmsub.xyz vf10, vf13, vf15 19 + c->vopmsub(vf10, vf13, vf15); // vu.acc.opmsub(vu.vf10, vu.vf13, vu.vf15); + // nop | opmula.xyz ACC, vf13, vf14 20 + c->vopmula(vf13, vf14); // vu.acc.opmula(vu.vf13, vu.vf14); + // nop | mul.xyz vf12, vf13, vf09 21 + c->vfs[vf12].vf.mul(Mask::xyz, c->vf_src(vf13).vf, c->vf_src(vf09).vf); + // nop | opmsub.xyz vf11, vf14, vf13 22 + c->vopmsub(vf11, vf14, vf13); // vu.acc.opmsub(vu.vf11, vu.vf14, vu.vf13); + // nop | mulax.xyzw ACC, vf28, vf13 23 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf28).vf, c->vf_src(vf13).vf.x()); + // nop | madday.xyzw ACC, vf29, vf13 24 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf29].vf, c->vfs[vf13].vf.y()); + // nop | maddaz.xyzw ACC, vf30, vf13 25 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf30].vf, c->vfs[vf13].vf.z()); + // nop | maddw.xyzw vf13, vf31, vf13 26 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf13].vf, c->vf_src(vf31).vf, c->vf_src(vf13).vf.w()); + // nop | mulax.w ACC, vf00, vf12 27 + c->acc.vf.mula(Mask::w, c->vf_src(vf00).vf, c->vf_src(vf12).vf.x()); + // nop | madday.w ACC, vf00, vf12 28 + c->acc.vf.madda(Mask::w, c->vfs[vf00].vf, c->vfs[vf12].vf.y()); + // nop | maddz.w vf12, vf00, vf12 29 + c->acc.vf.madd(Mask::w, c->vfs[vf12].vf, c->vf_src(vf00).vf, c->vf_src(vf12).vf.z()); + // nop | mulax.xyzw ACC, vf28, vf14 30 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf28).vf, c->vf_src(vf14).vf.x()); + // nop | madday.xyzw ACC, vf29, vf14 31 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf29].vf, c->vfs[vf14].vf.y()); + // nop | maddaz.xyzw ACC, vf30, vf14 32 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf30].vf, c->vfs[vf14].vf.z()); + // div Q, vf00.w, vf12.w | maddw.xyzw vf14, vf31, vf14 33 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf14].vf, c->vf_src(vf31).vf, c->vf_src(vf14).vf.w()); + //vu.Q = vu.vf00.w() / vu.vf12.w(); + c->vdiv(vf0, BC::w, vf12, BC::w); + // nop | mulax.xyzw ACC, vf28, vf15 34 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf28).vf, c->vf_src(vf15).vf.x()); + // nop | madday.xyzw ACC, vf29, vf15 35 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf29].vf, c->vfs[vf15].vf.y()); + // nop | maddaz.xyzw ACC, vf30, vf15 36 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf30].vf, c->vfs[vf15].vf.z()); + // nop | maddw.xyzw vf15, vf31, vf15 37 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf15].vf, c->vf_src(vf31).vf, c->vf_src(vf15).vf.w()); + // nop | mulax.xyzw ACC, vf28, vf16 38 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf28).vf, c->vf_src(vf16).vf.x()); + // nop | madday.xyzw ACC, vf29, vf16 39 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf29].vf, c->vfs[vf16].vf.y()); + // nop | maddaz.xyzw ACC, vf30, vf16 40 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf30].vf, c->vfs[vf16].vf.z()); + // nop | maddw.xyzw vf16, vf31, vf16 41 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf16].vf, c->vf_src(vf31).vf, c->vf_src(vf16).vf.w()); + // nop | mul.xyzw vf09, vf09, Q 42 + c->vfs[vf09].vf.mul(Mask::xyzw, c->vf_src(vf09).vf, c->Q); + // nop | mul.xyzw vf10, vf10, Q 43 + c->vfs[vf10].vf.mul(Mask::xyzw, c->vf_src(vf10).vf, c->Q); + // nop | mul.xyzw vf11, vf11, Q 44 + c->vfs[vf11].vf.mul(Mask::xyzw, c->vf_src(vf11).vf, c->Q); + // nop | mulax.xyzw ACC, vf25, vf09 45 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf25).vf, c->vf_src(vf09).vf.x()); + // nop | madday.xyzw ACC, vf26, vf09 46 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf26].vf, c->vfs[vf09].vf.y()); + // nop | maddz.xyzw vf09, vf27, vf09 47 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf09].vf, c->vf_src(vf27).vf, c->vf_src(vf09).vf.z()); + // nop | mulax.xyzw ACC, vf25, vf10 48 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf25).vf, c->vf_src(vf10).vf.x()); + // nop | madday.xyzw ACC, vf26, vf10 49 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf26].vf, c->vfs[vf10].vf.y()); + // nop | maddz.xyzw vf10, vf27, vf10 50 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf10].vf, c->vf_src(vf27).vf, c->vf_src(vf10).vf.z()); + // nop | mulax.xyzw ACC, vf25, vf11 51 + c->acc.vf.mula(Mask::xyzw, c->vf_src(vf25).vf, c->vf_src(vf11).vf.x()); + // nop | madday.xyzw ACC, vf26, vf11 :e 52 + c->acc.vf.madda(Mask::xyzw, c->vfs[vf26].vf, c->vfs[vf11].vf.y()); + // nop | maddz.xyzw vf11, vf27, vf11 53 + c->acc.vf.madd(Mask::xyzw, c->vfs[vf11].vf, c->vf_src(vf27).vf, c->vf_src(vf11).vf.z()); +} +} + +//--------------------------MIPS2C--------------------- +// clang-format off +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/jak2/kscheme.h" +using ::jak2::intern_from_c; +namespace Mips2C::jak2 { +namespace bones_mtx_calc { +struct Cache { + void* fake_scratchpad_data; // *fake-scratchpad-data* +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + u32 madr, sadr, qwc; + + // hack, added this that should be loaded by the caller. + // lqc2 vf28, 0(v1) ;; [ 60] (set! vf28 (l.vf v1-13)) [v1: matrix ] -> [] + c->lqc2(vf28, 0, t0); + // lqc2 vf29, 16(v1) ;; [ 61] (set! vf29 (l.vf (+ v1-13 16))) [v1: matrix ] -> [] + c->lqc2(vf29, 16, t0); + // lqc2 vf30, 32(v1) ;; [ 62] (set! vf30 (l.vf (+ v1-13 32))) [v1: matrix ] -> [] + c->lqc2(vf30, 32, t0); + // lqc2 vf31, 48(v1) ;; [ 63] (set! vf31 (l.vf (+ v1-13 48))) [v1: matrix ] -> [] + c->lqc2(vf31, 48, t0); + // lqc2 vf25, 0(v1) ;; [ 64] (set! vf25 (l.vf v1-13)) [v1: matrix ] -> [] + c->lqc2(vf25, 0, t0); + // lqc2 vf26, 16(v1) ;; [ 65] (set! vf26 (l.vf (+ v1-13 16))) [v1: matrix ] -> [] + c->lqc2(vf26, 16, t0); + // lqc2 vf27, 32(v1) ;; [ 66] (set! vf27 (l.vf (+ v1-13 32))) [v1: matrix ] -> [] + c->lqc2(vf27, 32, t0); + + c->daddiu(sp, sp, -96); // daddiu sp, sp, -96 + c->sd(ra, 0, sp); // sd ra, 0(sp) + c->sq(s2, 16, sp); // sq s2, 16(sp) + c->sq(s3, 32, sp); // sq s3, 32(sp) + c->sq(s4, 48, sp); // sq s4, 48(sp) + c->sq(s5, 64, sp); // sq s5, 64(sp) + c->sq(gp, 80, sp); // sq gp, 80(sp) + c->lui(v1, 4096); // lui v1, 4096 + c->lui(t0, 4096); // lui t0, 4096 + c->ori(v1, v1, 54272); // ori v1, v1, 54272 + c->ori(t0, t0, 53248); // ori t0, t0, 53248 + c->lui(t2, 32767); // lui t2, 32767 + c->daddiu(t1, a3, -16); // daddiu t1, a3, -16 + c->ori(t2, t2, 65535); // ori t2, t2, 65535 + get_fake_spad_addr2(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 + c->addiu(t4, r0, 64); // addiu t4, r0, 64 + c->addiu(t5, r0, 1280); // addiu t5, r0, 1280 + bc = ((s64)c->sgpr64(t1)) >= 0; // bgez t1, L17 + c->addiu(t3, r0, 16); // addiu t3, r0, 16 + if (bc) {goto block_2;} // branch non-likely + + c->mov64(t3, a3); // or t3, a3, r0 + // nop // sll r0, r0, 0 + c->dsll(t4, t3, 2); // dsll t4, t3, 2 + c->dsll(a3, t3, 4); // dsll a3, t3, 4 + c->dsll(t1, t3, 6); // dsll t1, t3, 6 + // nop // sll r0, r0, 0 + c->daddu(t5, t1, a3); // daddu t5, t1, a3 + c->addiu(t1, r0, 0); // addiu t1, r0, 0 + + block_2: + c->addiu(a3, r0, 0); // addiu a3, r0, 0 + c->addiu(t6, r0, 1); // addiu t6, r0, 1 + c->and_(a1, a1, t2); // and a1, a1, t2 + // nop // sll r0, r0, 0 + c->daddiu(a1, a1, 12); // daddiu a1, a1, 12 + c->mov64(a0, a0); // or a0, a0, r0 + c->daddiu(a1, a1, -80); // daddiu a1, a1, -80 + // nop // sll r0, r0, 0 + + /* + block_3: + c->lw(t6, 0, v1); // lw t6, 0(v1) + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->andi(t6, t6, 256); // andi t6, t6, 256 + // nop // sll r0, r0, 0 + bc = c->sgpr64(t6) == 0; // beq t6, r0, L19 + // nop // sll r0, r0, 0 + if (bc) {goto block_5;} // branch non-likely + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + //beq r0, r0, L18 // beq r0, r0, L18 + // nop // sll r0, r0, 0 + goto block_3; // branch always + */ + + + // block_5: + c->addiu(t6, r0, 80); // addiu t6, r0, 80 + c->addiu(t7, r0, 264); // addiu t7, r0, 264 + // c->sw(t6, 128, v1); // sw t6, 128(v1) + // c->sw(a1, 16, v1); // sw a1, 16(v1) + // c->sw(t4, 32, v1); // sw t4, 32(v1) + // c->sw(t7, 0, v1); // sw t7, 0(v1) + spad_to_dma_no_sadr_off_bones_interleave(cache.fake_scratchpad_data, c->sgpr64(a1), c->sgpr64(t6), c->sgpr64(t4)); + c->daddu(a1, a1, t5); // daddu a1, a1, t5 + + /* + block_6: + c->lw(t4, 0, v1); // lw t4, 0(v1) + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->andi(t4, t4, 256); // andi t4, t4, 256 + // nop // sll r0, r0, 0 + bc = c->sgpr64(t4) == 0; // beq t4, r0, L21 + // nop // sll r0, r0, 0 + if (bc) {goto block_8;} // branch non-likely + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + //beq r0, r0, L20 // beq r0, r0, L20 + // nop // sll r0, r0, 0 + goto block_6; // branch always + */ + + + // block_8: + c->and_(a2, a2, t2); // and a2, a2, t2 + // nop // sll r0, r0, 0 + c->dsll(t2, t3, 2); // dsll t2, t3, 2 + c->addiu(t4, r0, 256); // addiu t4, r0, 256 + c->daddu(t2, t2, t3); // daddu t2, t2, t3 + c->addiu(t6, r0, 1104); // addiu t6, r0, 1104 + c->dsll(t5, t2, 4); // dsll t5, t2, 4 + // c->sw(t6, 128, v1); // sw t6, 128(v1) + sadr = c->sgpr64(t6); + c->addiu(t8, r0, 0); // addiu t8, r0, 0 + // c->sw(a2, 16, v1); // sw a2, 16(v1) + madr = c->sgpr64(a2); + c->daddu(a2, a2, t5); // daddu a2, a2, t5 + // c->sw(t2, 32, v1); // sw t2, 32(v1) + qwc = c->sgpr64(t2); + c->addiu(t2, r0, 1); // addiu t2, r0, 1 + // c->sw(t4, 0, v1); // sw t4, 0(v1) + spad_to_dma_no_sadr_off(cache.fake_scratchpad_data, madr, sadr, qwc); + + block_9: + /* + c->lw(t5, 0, v1); // lw t5, 0(v1) + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->andi(t5, t5, 256); // andi t5, t5, 256 + // nop // sll r0, r0, 0 + bc = c->sgpr64(t5) == 0; // beq t5, r0, L23 + // nop // sll r0, r0, 0 + if (bc) {goto block_11;} // branch non-likely + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + //beq r0, r0, L22 // beq r0, r0, L22 + // nop // sll r0, r0, 0 + goto block_9; // branch always + */ + + + // block_11: + c->dsll(t5, t8, 2); // dsll t5, t8, 2 + c->daddu(t9, t5, at); // daddu t9, t5, at + // nop // sll r0, r0, 0 + c->lwu(t5, 0, t9); // lwu t5, 0(t9) + c->mov64(t6, t3); // or t6, t3, r0 + c->lwu(t7, 8, t9); // lwu t7, 8(t9) + c->mov64(ra, t3); // or ra, t3, r0 + c->lwu(t3, 16, t9); // lwu t3, 16(t9) + // nop // sll r0, r0, 0 + c->sw(ra, 44, at); // sw ra, 44(at) + bc = c->sgpr64(ra) == 0; // beq ra, r0, L36 + c->sw(t8, 48, at); // sw t8, 48(at) + if (bc) {goto block_33;} // branch non-likely + + c->daddiu(t1, t1, -16); // daddiu t1, t1, -16 + c->addiu(t9, r0, 1280); // addiu t9, r0, 1280 + bc = ((s64)c->sgpr64(t1)) >= 0; // bgez t1, L24 + c->addiu(t8, r0, 16); // addiu t8, r0, 16 + if (bc) {goto block_14;} // branch non-likely + + c->daddiu(t8, t1, 16); // daddiu t8, t1, 16 + c->addiu(t1, r0, 0); // addiu t1, r0, 0 + c->dsll(t9, t8, 4); // dsll t9, t8, 4 + c->dsll(ra, t8, 6); // dsll ra, t8, 6 + bc = c->sgpr64(t8) == 0; // beq t8, r0, L25 + c->daddu(t9, ra, t9); // daddu t9, ra, t9 + if (bc) {goto block_15;} // branch non-likely + + + block_14: + c->dsll(t4, t8, 2); // dsll t4, t8, 2 + c->dsll(ra, t2, 2); // dsll ra, t2, 2 + c->daddu(gp, ra, at); // daddu gp, ra, at + // c->sw(a1, 16, v1); // sw a1, 16(v1) + madr = c->sgpr64(a1); + c->addiu(ra, r0, 264); // addiu ra, r0, 264 + c->lwu(gp, 0, gp); // lwu gp, 0(gp) + c->andi(gp, gp, 16383); // andi gp, gp, 16383 + // c->sw(t4, 32, v1); // sw t4, 32(v1) + qwc = c->sgpr64(t4); + c->daddu(a1, a1, t9); // daddu a1, a1, t9 + // c->sw(gp, 128, v1); // sw gp, 128(v1) + sadr = c->sgpr64(gp); + c->addiu(t4, r0, 0); // addiu t4, r0, 0 + // c->sw(ra, 0, v1); // sw ra, 0(v1) + spad_to_dma_no_sadr_off_bones_interleave(cache.fake_scratchpad_data, madr, sadr, qwc); + + block_15: + // nop // sll r0, r0, 0 + c->sw(t8, 40, at); // sw t8, 40(at) + // nop // sll r0, r0, 0 + c->lqc2(vf1, 0, t5); // lqc2 vf1, 0(t5) + // nop // sll r0, r0, 0 + c->lqc2(vf2, 16, t5); // lqc2 vf2, 16(t5) + // nop // sll r0, r0, 0 + c->lqc2(vf3, 32, t5); // lqc2 vf3, 32(t5) + // nop // sll r0, r0, 0 + c->lqc2(vf4, 48, t5); // lqc2 vf4, 48(t5) + // nop // sll r0, r0, 0 + c->lqc2(vf5, 0, t7); // lqc2 vf5, 0(t7) + // nop // sll r0, r0, 0 + c->lqc2(vf6, 16, t7); // lqc2 vf6, 16(t7) + // nop // sll r0, r0, 0 + c->lqc2(vf7, 32, t7); // lqc2 vf7, 32(t7) + // nop // sll r0, r0, 0 + c->lqc2(vf8, 48, t7); // lqc2 vf8, 48(t7) + // Unknown instr: vcallms 0 + exec_mpg(c); + // nop // sll r0, r0, 0 + + block_16: + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->daddiu(t5, t5, 64); // daddiu t5, t5, 64 + // nop // sll r0, r0, 0 + c->daddiu(t7, t7, 80); // daddiu t7, t7, 80 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->lq(t8, 0, t5); // lq t8, 0(t5) + // nop // sll r0, r0, 0 + c->lq(t9, 16, t5); // lq t9, 16(t5) + // nop // sll r0, r0, 0 + c->lq(ra, 32, t5); // lq ra, 32(t5) + // nop // sll r0, r0, 0 + c->lq(gp, 48, t5); // lq gp, 48(t5) + // nop // sll r0, r0, 0 + c->lq(s5, 0, t7); // lq s5, 0(t7) + // nop // sll r0, r0, 0 + c->lq(s4, 16, t7); // lq s4, 16(t7) + // nop // sll r0, r0, 0 + c->lq(s3, 32, t7); // lq s3, 32(t7) + // nop // sll r0, r0, 0 + c->lq(s2, 48, t7); // lq s2, 48(t7) + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf1, t8); // qmtc2.ni vf1, t8 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf2, t9); // qmtc2.ni vf2, t9 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf3, ra); // qmtc2.ni vf3, ra + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf4, gp); // qmtc2.ni vf4, gp + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf5, s5); // qmtc2.ni vf5, s5 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf6, s4); // qmtc2.ni vf6, s4 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf7, s3); // qmtc2.ni vf7, s3 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf8, s2); // qmtc2.ni vf8, s2 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(t8, vf13); // qmfc2.i t8, vf13 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(t9, vf14); // qmfc2.ni t9, vf14 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(ra, vf15); // qmfc2.ni ra, vf15 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(gp, vf16); // qmfc2.ni gp, vf16 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(s5, vf9); // qmfc2.ni s5, vf9 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(s4, vf10); // qmfc2.ni s4, vf10 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(s3, vf11); // qmfc2.ni s3, vf11 + // Unknown instr: vcallms 0 + exec_mpg(c); + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->sq(t8, 0, t3); // sq t8, 0(t3) + // nop // sll r0, r0, 0 + c->sq(t9, 16, t3); // sq t9, 16(t3) + // nop // sll r0, r0, 0 + c->sq(ra, 32, t3); // sq ra, 32(t3) + // nop // sll r0, r0, 0 + c->sq(gp, 48, t3); // sq gp, 48(t3) + // nop // sll r0, r0, 0 + c->sq(s5, 64, t3); // sq s5, 64(t3) + // nop // sll r0, r0, 0 + c->sq(s4, 80, t3); // sq s4, 80(t3) + // nop // sll r0, r0, 0 + c->sq(s3, 96, t3); // sq s3, 96(t3) + // nop // sll r0, r0, 0 + c->sq(r0, 112, t3); // sq r0, 112(t3) + c->daddiu(t3, t3, 128); // daddiu t3, t3, 128 + c->daddiu(t6, t6, -1); // daddiu t6, t6, -1 + bc = ((s64)c->sgpr64(t6)) > 0; // bgtz t6, L26 + // nop // sll r0, r0, 0 + if (bc) {goto block_16;} // branch non-likely + + // nop // sll r0, r0, 0 + c->lw(t3, 40, at); // lw t3, 40(at) + bc = c->sgpr64(t3) == 0; // beq t3, r0, L29 + // nop // sll r0, r0, 0 + if (bc) {goto block_21;} // branch non-likely + + /* + block_18: + c->lw(t4, 0, v1); // lw t4, 0(v1) + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->andi(t4, t4, 256); // andi t4, t4, 256 + // nop // sll r0, r0, 0 + bc = c->sgpr64(t4) == 0; // beq t4, r0, L28 + // nop // sll r0, r0, 0 + if (bc) {goto block_20;} // branch non-likely + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + //beq r0, r0, L27 // beq r0, r0, L27 + // nop // sll r0, r0, 0 + goto block_18; // branch always + */ + + + // block_20: + c->dsll(t5, t2, 2); // dsll t5, t2, 2 + // nop // sll r0, r0, 0 + c->addiu(t4, r0, 1); // addiu t4, r0, 1 + c->daddu(t5, t5, at); // daddu t5, t5, at + // nop // sll r0, r0, 0 + c->lwu(t6, 8, t5); // lwu t6, 8(t5) + c->dsll(t5, t3, 2); // dsll t5, t3, 2 + c->andi(t6, t6, 16383); // andi t6, t6, 16383 + c->daddu(t5, t5, t3); // daddu t5, t5, t3 + // c->sw(t6, 128, v1); // sw t6, 128(v1) + sadr = c->sgpr64(t6); + c->dsll(t6, t5, 4); // dsll t6, t5, 4 + // c->sw(a2, 16, v1); // sw a2, 16(v1) + madr = c->sgpr64(a2); + c->addiu(t7, r0, 256); // addiu t7, r0, 256 + // c->sw(t5, 32, v1); // sw t5, 32(v1) + qwc = c->sgpr64(t5); + c->daddu(a2, a2, t6); // daddu a2, a2, t6 + // c->sw(t7, 0, v1); // sw t7, 0(v1) + spad_to_dma_no_sadr_off(cache.fake_scratchpad_data, madr, sadr, qwc); + + block_21: + // nop // sll r0, r0, 0 + c->lw(t5, 48, at); // lw t5, 48(at) + // nop // sll r0, r0, 0 + c->lw(t6, 44, at); // lw t6, 44(at) + + /* + block_22: + c->lw(t7, 0, t0); // lw t7, 0(t0) + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->andi(t7, t7, 256); // andi t7, t7, 256 + // nop // sll r0, r0, 0 + bc = c->sgpr64(t7) == 0; // beq t7, r0, L31 + // nop // sll r0, r0, 0 + if (bc) {goto block_24;} // branch non-likely + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + //beq r0, r0, L30 // beq r0, r0, L30 + // nop // sll r0, r0, 0 + goto block_22; // branch always + */ + + + // block_24: + bc = c->sgpr64(t6) == 0; // beq t6, r0, L32 + // nop // sll r0, r0, 0 + if (bc) {goto block_26;} // branch non-likely + + c->dsll(t7, t5, 2); // dsll t7, t5, 2 + get_fake_spad_addr2(t8, cache.fake_scratchpad_data, 0, c);// lui t8, 28672 + c->daddu(t7, t7, t8); // daddu t7, t7, t8 + c->lwu(t7, 16, t7); // lwu t7, 16(t7) + c->andi(t7, t7, 16383); // andi t7, t7, 16383 + // c->sw(t7, 128, t0); // sw t7, 128(t0) + sadr = c->sgpr64(t7); + // c->sw(a0, 16, t0); // sw a0, 16(t0) + madr = c->sgpr64(a0); + c->dsll(t7, t6, 3); // dsll t7, t6, 3 + // c->sw(t7, 32, t0); // sw t7, 32(t0) + qwc = c->sgpr64(t7); + c->addiu(t7, r0, 256); // addiu t7, r0, 256 + // c->sw(t7, 0, t0); // sw t7, 0(t0) + spad_from_dma_no_sadr_off(cache.fake_scratchpad_data, madr, sadr, qwc); + c->dsll(t6, t6, 7); // dsll t6, t6, 7 + c->daddu(a0, a0, t6); // daddu a0, a0, t6 + + block_26: + bc = c->sgpr64(t3) == 0; // beq t3, r0, L35 + // nop // sll r0, r0, 0 + if (bc) {goto block_31;} // branch non-likely + + bc = c->sgpr64(t4) != 0; // bne t4, r0, L35 + // nop // sll r0, r0, 0 + if (bc) {goto block_31;} // branch non-likely + + /* + block_28: + c->lw(t6, 0, v1); // lw t6, 0(v1) + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + c->andi(t6, t6, 256); // andi t6, t6, 256 + // nop // sll r0, r0, 0 + bc = c->sgpr64(t6) == 0; // beq t6, r0, L34 + // nop // sll r0, r0, 0 + if (bc) {goto block_30;} // branch non-likely + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + //beq r0, r0, L33 // beq r0, r0, L33 + // nop // sll r0, r0, 0 + goto block_28; // branch always + */ + + + // block_30: + c->dsll(t6, t2, 2); // dsll t6, t2, 2 + get_fake_spad_addr2(t7, cache.fake_scratchpad_data, 0, c);// lui t7, 28672 + c->daddu(t6, t6, t7); // daddu t6, t6, t7 + c->lwu(t6, 8, t6); // lwu t6, 8(t6) + c->andi(t6, t6, 16383); // andi t6, t6, 16383 + // c->sw(t6, 128, v1); // sw t6, 128(v1) + sadr = c->sgpr64(t6); + // c->sw(a2, 16, v1); // sw a2, 16(v1) + madr = c->sgpr64(a2); + c->addiu(t6, r0, 5); // addiu t6, r0, 5 + c->mult3(t6, t6, t3); // mult3 t6, t6, t3 + // c->sw(t6, 32, v1); // sw t6, 32(v1) + qwc = c->sgpr64(t6); + c->addiu(t6, r0, 256); // addiu t6, r0, 256 + // c->sw(t6, 0, v1); // sw t6, 0(v1) + spad_to_dma_no_sadr_off(cache.fake_scratchpad_data, madr, sadr, qwc); + c->addiu(t6, r0, 80); // addiu t6, r0, 80 + c->mult3(t6, t6, t3); // mult3 t6, t6, t3 + c->daddu(a2, a2, t6); // daddu a2, a2, t6 + + block_31: + c->mov64(t8, t2); // or t8, t2, r0 + bc = c->sgpr64(t1) != 0; // bne t1, r0, L22 + c->mov64(t2, t5); // or t2, t5, r0 + if (bc) {goto block_9;} // branch non-likely + + bc = c->sgpr64(a3) == 0; // beq a3, r0, L22 + c->addiu(a3, r0, 1); // addiu a3, r0, 1 + if (bc) {goto block_9;} // branch non-likely + + + block_33: + c->gprs[v0].du64[0] = 0; // or v0, r0, r0 + c->ld(ra, 0, sp); // ld ra, 0(sp) + c->lq(gp, 80, sp); // lq gp, 80(sp) + c->lq(s5, 64, sp); // lq s5, 64(sp) + c->lq(s4, 48, sp); // lq s4, 48(sp) + c->lq(s3, 32, sp); // lq s3, 32(sp) + c->lq(s2, 16, sp); // lq s2, 16(sp) + //jr ra // jr ra + c->daddiu(sp, sp, 96); // daddiu sp, sp, 96 + goto end_of_function; // return + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + end_of_function: + return c->gprs[v0].du64[0]; +} + +void link() { + cache.fake_scratchpad_data = intern_from_c("*fake-scratchpad-data*").c(); + gLinkedFunctionTable.reg("bones-mtx-calc", execute, 128); +} + +} // namespace bones_mtx_calc +} // namespace Mips2C + diff --git a/game/mips2c/jak2_functions/collide_mesh.cpp b/game/mips2c/jak2_functions/collide_mesh.cpp index 99e1fd157d..bbdbc238ae 100644 --- a/game/mips2c/jak2_functions/collide_mesh.cpp +++ b/game/mips2c/jak2_functions/collide_mesh.cpp @@ -211,7 +211,7 @@ using ::jak2::intern_from_c; namespace Mips2C::jak2 { namespace method_14_collide_mesh { u64 execute(void* ctxt) { - ASSERT(false); // this should be totally fine to remove, just trying to find what calls this + // ASSERT(false); // this should be totally fine to remove, just trying to find what calls this auto* c = (ExecutionContext*)ctxt; bool bc = false; // nop // sll r0, r0, 0 @@ -416,7 +416,7 @@ using ::jak2::intern_from_c; namespace Mips2C::jak2 { namespace method_15_collide_mesh { u64 execute(void* ctxt) { - ASSERT(false); // this should be totally fine to remove, just trying to find what calls this + // ASSERT(false); // this should be totally fine to remove, just trying to find what calls this auto* c = (ExecutionContext*)ctxt; bool bc = false; // nop // sll r0, r0, 0 @@ -716,3 +716,4 @@ void link() { } // namespace method_15_collide_mesh } // namespace Mips2C + diff --git a/game/mips2c/jak2_functions/foreground.cpp b/game/mips2c/jak2_functions/foreground.cpp new file mode 100644 index 0000000000..046bd4a257 --- /dev/null +++ b/game/mips2c/jak2_functions/foreground.cpp @@ -0,0 +1,613 @@ +//--------------------------MIPS2C--------------------- +// clang-format off +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/jak2/kscheme.h" +using ::jak2::intern_from_c; +namespace Mips2C::jak2 { +namespace foreground_check_longest_edge_asm { +struct Cache { + void* fake_scratchpad_data; // *fake-scratchpad-data* + void* math_camera; // *math-camera* +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + bool cop1_bc = false; + float acc; + get_fake_spad_addr2(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 + c->mov64(v0, s7); // or v0, s7, r0 + c->load_symbol2(v1, cache.math_camera); // lw v1, *math-camera*(s7) + c->lwc1(f0, 84, a0); // lwc1 f0, 84(a0) + c->lwc1(f7, 2592, at); // lwc1 f7, 2592(at) + c->lwc1(f3, 2596, at); // lwc1 f3, 2596(at) + c->lwc1(f6, 2600, at); // lwc1 f6, 2600(at) + c->lwc1(f4, 152, a0); // lwc1 f4, 152(a0) + c->lwc1(f12, 0, v1); // lwc1 f12, 0(v1) + c->lwc1(f11, 64, v1); // lwc1 f11, 64(v1) + c->mtc1(f1, a1); // mtc1 f1, a1 + c->mtc1(f9, r0); // mtc1 f9, r0 + c->mtc1(f10, r0); // mtc1 f10, r0 + c->mtc1(f2, r0); // mtc1 f2, r0 + c->mtc1(f2, r0); // mtc1 f2, r0 + c->mtc1(f5, r0); // mtc1 f5, r0 + c->mtc1(f8, r0); // mtc1 f8, r0 + c->lui(a0, 16256); // lui a0, 16256 + c->mtc1(f5, a0); // mtc1 f5, a0 + cop1_bc = c->fprs[f1] < c->fprs[f11]; // c.lt.s f1, f11 + bc = cop1_bc; // bc1t L100 + // nop // sll r0, r0, 0 + if (bc) {goto block_37;} // branch non-likely + + c->lwc1(f11, 12, v1); // lwc1 f11, 12(v1) + c->lwc1(f13, 16, v1); // lwc1 f13, 16(v1) + c->muls(f11, f11, f12); // mul.s f11, f11, f12 + c->muls(f13, f13, f12); // mul.s f13, f13, f12 + c->subs(f14, f6, f4); // sub.s f14, f6, f4 + cop1_bc = c->fprs[f12] < c->fprs[f14]; // c.lt.s f12, f14 + bc = !cop1_bc; // bc1f L84 + c->lwc1(f12, 60, v1); // lwc1 f12, 60(v1) + if (bc) {goto block_3;} // branch non-likely + + c->muls(f12, f14, f12); // mul.s f12, f14, f12 + cop1_bc = c->fprs[f0] < c->fprs[f12]; // c.lt.s f0, f12 + bc = cop1_bc; // bc1t L99 + // nop // sll r0, r0, 0 + if (bc) {goto block_36;} // branch non-likely + + + block_3: + c->subs(f14, f3, f4); // sub.s f14, f3, f4 + cop1_bc = c->fprs[f13] < c->fprs[f14]; // c.lt.s f13, f14 + bc = !cop1_bc; // bc1f L85 + c->lwc1(f12, 56, v1); // lwc1 f12, 56(v1) + if (bc) {goto block_5;} // branch non-likely + + //beq r0, r0, L86 // beq r0, r0, L86 + c->muls(f10, f14, f12); // mul.s f10, f14, f12 + goto block_7; // branch always + + + block_5: + c->adds(f14, f3, f4); // add.s f14, f3, f4 + c->negs(f13, f13); // neg.s f13, f13 + cop1_bc = c->fprs[f14] < c->fprs[f13]; // c.lt.s f14, f13 + bc = !cop1_bc; // bc1f L86 + c->negs(f13, f14); // neg.s f13, f14 + if (bc) {goto block_7;} // branch non-likely + + c->muls(f10, f13, f12); // mul.s f10, f13, f12 + + block_7: + cop1_bc = c->fprs[f0] < c->fprs[f10]; // c.lt.s f0, f10 + bc = cop1_bc; // bc1t L99 + // nop // sll r0, r0, 0 + if (bc) {goto block_36;} // branch non-likely + + c->subs(f12, f7, f4); // sub.s f12, f7, f4 + cop1_bc = c->fprs[f11] < c->fprs[f12]; // c.lt.s f11, f12 + bc = !cop1_bc; // bc1f L87 + c->lwc1(f10, 52, v1); // lwc1 f10, 52(v1) + if (bc) {goto block_10;} // branch non-likely + + //beq r0, r0, L88 // beq r0, r0, L88 + c->muls(f9, f12, f10); // mul.s f9, f12, f10 + goto block_12; // branch always + + + block_10: + c->adds(f12, f7, f4); // add.s f12, f7, f4 + c->negs(f11, f11); // neg.s f11, f11 + cop1_bc = c->fprs[f12] < c->fprs[f11]; // c.lt.s f12, f11 + bc = !cop1_bc; // bc1f L88 + c->negs(f11, f12); // neg.s f11, f12 + if (bc) {goto block_12;} // branch non-likely + + c->muls(f9, f11, f10); // mul.s f9, f11, f10 + + block_12: + cop1_bc = c->fprs[f0] < c->fprs[f9]; // c.lt.s f0, f9 + bc = cop1_bc; // bc1t L99 + // nop // sll r0, r0, 0 + if (bc) {goto block_36;} // branch non-likely + + c->abss(f14, f7); // abs.s f14, f7 + c->movs(f12, f6); // mov.s f12, f6 + acc = c->fprs[f14] * c->fprs[f14]; // Unknown instr: mula.s f14, f14 + c->fprs[f15] = acc + c->fprs[f12] * c->fprs[f12]; // Unknown instr: madd.s f15, f12, f12 + c->lwc1(f9, 76, v1); // lwc1 f9, 76(v1) + c->lwc1(f13, 80, v1); // lwc1 f13, 80(v1) + c->lwc1(f10, 84, v1); // lwc1 f10, 84(v1) + c->lwc1(f11, 88, v1); // lwc1 f11, 88(v1) + c->fprs[f16] = c->fprs[f5] / (std::sqrt(std::abs(c->fprs[f15]))); // Unknown instr: rsqrt.s f16, f5, f15 + c->muls(f15, f14, f16); // mul.s f15, f14, f16 + c->muls(f16, f12, f16); // mul.s f16, f12, f16 + acc = c->fprs[f9] * c->fprs[f16]; // Unknown instr: mula.s f9, f16 + c->fprs[f12] = acc - c->fprs[f13] * c->fprs[f15]; // Unknown instr: msub.s f12, f13, f15 + acc = c->fprs[f10] * c->fprs[f16]; // Unknown instr: mula.s f10, f16 + c->fprs[f14] = acc - c->fprs[f11] * c->fprs[f15];// Unknown instr: msub.s f14, f11, f15 + acc = c->fprs[f9] * c->fprs[f15];// Unknown instr: mula.s f9, f15 + c->fprs[f9] = acc + c->fprs[f13] * c->fprs[f16];// Unknown instr: madd.s f9, f13, f16 + acc = c->fprs[f10] * c->fprs[f15];// Unknown instr: mula.s f10, f15 + c->fprs[f10] = acc + c->fprs[f11] * c->fprs[f16];// Unknown instr: madd.s f10, f11, f16 + cop1_bc = c->fprs[f8] < c->fprs[f12]; // c.lt.s f8, f12 + bc = cop1_bc; // bc1t L89 + // nop // sll r0, r0, 0 + if (bc) {goto block_17;} // branch non-likely + + cop1_bc = c->fprs[f8] < c->fprs[f14]; // c.lt.s f8, f14 + bc = cop1_bc; // bc1t L90 + // nop // sll r0, r0, 0 + if (bc) {goto block_18;} // branch non-likely + + cop1_bc = c->fprs[f8] < c->fprs[f9]; // c.lt.s f8, f9 + bc = cop1_bc; // bc1t L91 + // nop // sll r0, r0, 0 + if (bc) {goto block_19;} // branch non-likely + + //beq r0, r0, L93 // beq r0, r0, L93 + // nop // sll r0, r0, 0 + goto block_23; // branch always + + + block_17: + //beq r0, r0, L93 // beq r0, r0, L93 + c->divs(f2, f1, f10); // div.s f2, f1, f10 + goto block_23; // branch always + + + block_18: + c->negs(f2, f12); // neg.s f2, f12 + c->divs(f2, f2, f9); // div.s f2, f2, f9 + c->divs(f7, f14, f10); // div.s f7, f14, f10 + c->adds(f2, f7, f2); // add.s f2, f7, f2 + //beq r0, r0, L93 // beq r0, r0, L93 + c->muls(f2, f2, f1); // mul.s f2, f2, f1 + goto block_23; // branch always + + + block_19: + c->subs(f8, f7, f4); // sub.s f8, f7, f4 + c->adds(f10, f7, f4); // add.s f10, f7, f4 + c->negs(f11, f7); // neg.s f11, f7 + cop1_bc = c->fprs[f7] < c->fprs[f8]; // c.lt.s f7, f8 + bc = cop1_bc; // bc1t L92 + // nop // sll r0, r0, 0 + if (bc) {goto block_22;} // branch non-likely + + cop1_bc = c->fprs[f10] < c->fprs[f11]; // c.lt.s f10, f11 + bc = cop1_bc; // bc1t L92 + // nop // sll r0, r0, 0 + if (bc) {goto block_22;} // branch non-likely + + //beq r0, r0, L93 // beq r0, r0, L93 + // nop // sll r0, r0, 0 + goto block_23; // branch always + + + block_22: + c->negs(f2, f12); // neg.s f2, f12 + c->muls(f2, f1, f2); // mul.s f2, f1, f2 + c->divs(f2, f2, f9); // div.s f2, f2, f9 + + block_23: + cop1_bc = c->fprs[f0] < c->fprs[f2]; // c.lt.s f0, f2 + bc = cop1_bc; // bc1t L99 + // nop // sll r0, r0, 0 + if (bc) {goto block_36;} // branch non-likely + + c->abss(f10, f3); // abs.s f10, f3 + c->movs(f12, f6); // mov.s f12, f6 + acc = c->fprs[10] * c->fprs[10]; // Unknown instr: mula.s f10, f10 + c->fprs[9] = acc + c->fprs[12] * c->fprs[12]; // Unknown instr: madd.s f9, f12, f12 + c->lwc1(f7, 96, v1); // lwc1 f7, 96(v1) + c->lwc1(f8, 100, v1); // lwc1 f8, 100(v1) + c->lwc1(f6, 104, v1); // lwc1 f6, 104(v1) + c->fprs[f5] = c->fprs[f5] / (std::sqrt(std::abs(c->fprs[f9]))); // Unknown instr: rsqrt.s f5, f5, f9 + c->lwc1(f11, 108, v1); // lwc1 f11, 108(v1) + c->mtc1(f9, r0); // mtc1 f9, r0 + c->muls(f13, f10, f5); // mul.s f13, f10, f5 + c->muls(f14, f12, f5); // mul.s f14, f12, f5 + acc = c->fprs[f7] * c->fprs[f14];// Unknown instr: mula.s f7, f14 + c->fprs[f10] = acc - c->fprs[f8] * c->fprs[f13];// Unknown instr: msub.s f10, f8, f13 + acc = c->fprs[f6] * c->fprs[f14];// Unknown instr: mula.s f6, f14 + c->fprs[f12] = acc - c->fprs[f11] * c->fprs[f13];// Unknown instr: msub.s f12, f11, f13 + acc = c->fprs[f7] * c->fprs[f13];// Unknown instr: mula.s f7, f13 + c->fprs[f5] = acc + c->fprs[f8] * c->fprs[f14];// Unknown instr: madd.s f5, f8, f14 + acc = c->fprs[f6] * c->fprs[f13];// Unknown instr: mula.s f6, f13 + c->fprs[f6] = acc + c->fprs[f11] * c->fprs[f14];// Unknown instr: madd.s f6, f11, f14 + cop1_bc = c->fprs[f9] < c->fprs[f10]; // c.lt.s f9, f10 + bc = cop1_bc; // bc1t L94 + // nop // sll r0, r0, 0 + if (bc) {goto block_28;} // branch non-likely + + cop1_bc = c->fprs[f9] < c->fprs[f12]; // c.lt.s f9, f12 + bc = cop1_bc; // bc1t L95 + // nop // sll r0, r0, 0 + if (bc) {goto block_29;} // branch non-likely + + cop1_bc = c->fprs[f9] < c->fprs[f5]; // c.lt.s f9, f5 + bc = cop1_bc; // bc1t L96 + // nop // sll r0, r0, 0 + if (bc) {goto block_30;} // branch non-likely + + //beq r0, r0, L98 // beq r0, r0, L98 + // nop // sll r0, r0, 0 + goto block_34; // branch always + + + block_28: + //beq r0, r0, L98 // beq r0, r0, L98 + c->divs(f1, f1, f6); // div.s f1, f1, f6 + goto block_34; // branch always + + + block_29: + c->negs(f3, f10); // neg.s f3, f10 + c->divs(f3, f3, f5); // div.s f3, f3, f5 + c->divs(f4, f12, f6); // div.s f4, f12, f6 + c->adds(f3, f4, f3); // add.s f3, f4, f3 + //beq r0, r0, L98 // beq r0, r0, L98 + c->muls(f1, f3, f1); // mul.s f1, f3, f1 + goto block_34; // branch always + + + block_30: + c->subs(f6, f3, f4); // sub.s f6, f3, f4 + c->adds(f4, f3, f4); // add.s f4, f3, f4 + c->negs(f7, f3); // neg.s f7, f3 + cop1_bc = c->fprs[f3] < c->fprs[f6]; // c.lt.s f3, f6 + bc = cop1_bc; // bc1t L97 + // nop // sll r0, r0, 0 + if (bc) {goto block_33;} // branch non-likely + + cop1_bc = c->fprs[f4] < c->fprs[f7]; // c.lt.s f4, f7 + bc = cop1_bc; // bc1t L97 + // nop // sll r0, r0, 0 + if (bc) {goto block_33;} // branch non-likely + + //beq r0, r0, L98 // beq r0, r0, L98 + // nop // sll r0, r0, 0 + goto block_34; // branch always + + + block_33: + c->negs(f3, f10); // neg.s f3, f10 + c->muls(f1, f1, f3); // mul.s f1, f1, f3 + c->divs(f1, f1, f5); // div.s f1, f1, f5 + + block_34: + cop1_bc = c->fprs[f0] < c->fprs[f2]; // c.lt.s f0, f2 + bc = cop1_bc; // bc1t L99 + // nop // sll r0, r0, 0 + if (bc) {goto block_36;} // branch non-likely + + //beq r0, r0, L100 // beq r0, r0, L100 + // nop // sll r0, r0, 0 + goto block_37; // branch always + + + block_36: + c->daddiu(v0, s7, 4); // daddiu v0, s7, #t + + block_37: + //jr ra // jr ra + c->daddu(sp, sp, r0); // daddu sp, sp, r0 + goto end_of_function; // return + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + end_of_function: + return c->gprs[v0].du64[0]; +} + +void link() { + cache.fake_scratchpad_data = intern_from_c("*fake-scratchpad-data*").c(); + cache.math_camera = intern_from_c("*math-camera*").c(); + gLinkedFunctionTable.reg("foreground-check-longest-edge-asm", execute, 128); +} + +} // namespace foreground_check_longest_edge_asm +} // namespace Mips2C + +//--------------------------MIPS2C--------------------- +// clang-format off +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/jak2/kscheme.h" +using ::jak2::intern_from_c; +namespace Mips2C::jak2 { +namespace foreground_merc { +struct Cache { + void* fake_scratchpad_data; // *fake-scratchpad-data* + void* foreground; // *foreground* + void* merc_global_stats; // *merc-global-stats* +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + c->daddiu(sp, sp, -128); // daddiu sp, sp, -128 + c->sd(ra, 0, sp); // sd ra, 0(sp) + c->sq(s0, 16, sp); // sq s0, 16(sp) + c->sq(s1, 32, sp); // sq s1, 32(sp) + c->sq(s2, 48, sp); // sq s2, 48(sp) + c->sq(s3, 64, sp); // sq s3, 64(sp) + c->sq(s4, 80, sp); // sq s4, 80(sp) + c->sq(s5, 96, sp); // sq s5, 96(sp) + c->sq(gp, 112, sp); // sq gp, 112(sp) + c->mov64(t7, a3); // or t7, a3, r0 + c->mov64(v1, t0); // or v1, t0, r0 + c->lui(t0, 4096); // lui t0, 4096 + c->lui(t1, 18304); // lui t1, 18304 + c->daddiu(t0, t0, 1); // daddiu t0, t0, 1 + c->dsll32(t1, t1, 0); // dsll32 t1, t1, 0 + c->lui(a3, 12288); // lui a3, 12288 + c->lui(t8, 19201); // lui t8, 19201 + c->pcpyld(t0, a3, t0); // pcpyld t0, a3, t0 + c->lbu(a3, 78, a0); // lbu a3, 78(a0) + c->pcpyld(t1, t8, t1); // pcpyld t1, t8, t1 + c->lui(t2, 28160); // lui t2, 28160 + c->addiu(t8, r0, 8); // addiu t8, r0, 8 + c->multu3(a3, a3, t8); // multu3 a3, a3, t8 + c->lui(t3, 1280); // lui t3, 1280 + c->lui(t4, 27648); // lui t4, 27648 + c->dsll32(t2, t2, 0); // dsll32 t2, t2, 0 + c->dsll32(t4, t4, 0); // dsll32 t4, t4, 0 + c->daddu(t4, t4, t3); // daddu t4, t4, t3 + c->daddu(t3, t2, t3); // daddu t3, t2, t3 + c->daddiu(t3, t3, 1); // daddiu t3, t3, 1 + c->daddu(a0, a3, a0); // daddu a0, a3, a0 + c->pcpyld(t2, t2, r0); // pcpyld t2, t2, r0 + c->lw(a0, 28, a0); // lw a0, 28(a0) + c->pcpyld(t3, t3, r0); // pcpyld t3, t3, r0 + c->pcpyld(t4, t4, r0); // pcpyld t4, t4, r0 + c->lui(t5, 12288); // lui t5, 12288 + c->lui(t6, 4096); // lui t6, 4096 + c->daddiu(t5, t5, 7); // daddiu t5, t5, 7 + c->lui(t8, 5120); // lui t8, 5120 + c->lui(a3, 27655); // lui a3, 27655 + c->daddu(t7, t8, t7); // daddu t7, t8, t7 + c->dsll32(a3, a3, 0); // dsll32 a3, a3, 0 + c->dsll32(t8, t7, 0); // dsll32 t8, t7, 0 + c->pcpyld(t5, a3, t5); // pcpyld t5, a3, t5 + c->lwu(t7, 52, a0); // lwu t7, 52(a0) + c->pcpyld(t6, t8, t6); // pcpyld t6, t8, t6 + c->daddiu(t8, a0, 156); // daddiu t8, a0, 156 + bc = c->sgpr64(t7) == 0; // beq t7, r0, L117 + c->load_symbol2(a3, cache.foreground); // lw a3, *foreground*(s7) + if (bc) {goto block_16;} // branch non-likely + + c->daddiu(t9, a3, 2508); // daddiu t9, a3, 2508 + + block_2: + c->mov64(ra, a2); // or ra, a2, r0 + c->lbu(a3, 6, t9); // lbu a3, 6(t9) + c->lbu(gp, 4, t9); // lbu gp, 4(t9) + bc = c->sgpr64(a3) != 0; // bne a3, r0, L117 + c->load_symbol2(a3, cache.merc_global_stats); // lw a3, *merc-global-stats*(s7) + if (bc) {goto block_16;} // branch non-likely + + c->daddu(a3, r0, a3); // daddu a3, r0, a3 + bc = c->sgpr64(gp) != 0; // bne gp, r0, L117 + c->lhu(s4, 2, a3); // lhu s4, 2(a3) + if (bc) {goto block_16;} // branch non-likely + + c->lhu(s3, 18, t8); // lhu s3, 18(t8) + c->lwu(gp, 4, a3); // lwu gp, 4(a3) + c->lhu(s5, 22, t8); // lhu s5, 22(t8) + c->daddu(s4, s4, s3); // daddu s4, s4, s3 + c->lwu(s3, 8, a3); // lwu s3, 8(a3) + c->lhu(s2, 24, t8); // lhu s2, 24(t8) + c->daddu(gp, gp, s5); // daddu gp, gp, s5 + c->sh(s4, 2, a3); // sh s4, 2(a3) + c->sw(gp, 4, a3); // sw gp, 4(a3) + c->daddu(s5, s3, s2); // daddu s5, s3, s2 + c->lwu(t2, 0, t8); // lwu t2, 0(t8) + c->lwu(gp, 4, t8); // lwu gp, 4(t8) + c->lui(s4, 12288); // lui s4, 12288 + c->dsll32(t2, t2, 0); // dsll32 t2, t2, 0 + c->sw(s5, 8, a3); // sw s5, 8(a3) + c->or_(t2, t2, s4); // or t2, t2, s4 + c->lhu(s5, 18, t8); // lhu s5, 18(t8) + c->addiu(s4, r0, 0); // addiu s4, r0, 0 + bc = c->sgpr64(s5) == 0; // beq s5, r0, L117 + // nop // sll r0, r0, 0 + if (bc) {goto block_16;} // branch non-likely + + // nop // sll r0, r0, 0 + + block_6: + c->lbu(s0, 0, gp); // lbu s0, 0(gp) + // nop // sll r0, r0, 0 + c->lbu(s2, 1, gp); // lbu s2, 1(gp) + c->xori(s1, r0, 49292); // xori s1, r0, 49292 + c->lbu(s3, 2, gp); // lbu s3, 2(gp) + c->daddiu(v0, s0, 3); // daddiu v0, s0, 3 + c->lw(a3, 44, a0); // lw a3, 44(a0) + c->srl(v0, v0, 2); // srl v0, v0, 2 + c->sq(t0, 0, a2); // sq t0, 0(a2) + c->xor_(t2, t2, v0); // xor t2, t2, v0 + c->sq(t2, 32, a2); // sq t2, 32(a2) + c->xor_(t2, t2, v0); // xor t2, t2, v0 + c->sh(s1, 44, a2); // sh s1, 44(a2) + c->daddu(s1, s1, s0); // daddu s1, s1, s0 + c->sb(s0, 46, a2); // sb s0, 46(a2) + c->dsll32(s0, v0, 4); // dsll32 s0, v0, 4 + c->daddu(t3, t2, s0); // daddu t3, t2, s0 + c->daddiu(s0, s2, 3); // daddiu s0, s2, 3 + c->sw(a3, 12, a2); // sw a3, 12(a2) + c->srl(s0, s0, 2); // srl s0, s0, 2 + c->sq(t1, 16, a2); // sq t1, 16(a2) + + // pc hack + { + u16 use_pc_merc_bits = UINT16_MAX; + u16 ignore_alpha_bits = UINT16_MAX; + memcpy(g_ee_main_mem + c->sgpr64(a2) + 28, &use_pc_merc_bits, 2); + memcpy(g_ee_main_mem + c->sgpr64(a2) + 30, &ignore_alpha_bits, 2); + } + + c->xor_(t3, t3, s0); // xor t3, t3, s0 + c->sq(t3, 48, a2); // sq t3, 48(a2) + c->xor_(t3, t3, s0); // xor t3, t3, s0 + c->sh(s1, 60, a2); // sh s1, 60(a2) + c->daddu(s1, s1, s2); // daddu s1, s1, s2 + c->sb(s2, 62, a2); // sb s2, 62(a2) + c->dsll32(s2, s0, 4); // dsll32 s2, s0, 4 + c->sw(a3, 16, a2); // sw a3, 16(a2) + c->daddu(t4, t3, s2); // daddu t4, t3, s2 + c->xor_(t4, t4, s3); // xor t4, t4, s3 + c->xori(a3, s1, 16384); // xori a3, s1, 16384 + c->sq(t4, 64, a2); // sq t4, 64(a2) + c->xor_(t4, t4, s3); // xor t4, t4, s3 + c->sb(s3, 78, a2); // sb s3, 78(a2) + c->dsll32(s3, s3, 4); // dsll32 s3, s3, 4 + c->sh(a3, 76, a2); // sh a3, 76(a2) + c->daddu(t2, t4, s3); // daddu t2, t4, s3 + c->lbu(s3, 3, gp); // lbu s3, 3(gp) + c->daddiu(gp, gp, 4); // daddiu gp, gp, 4 + bc = c->sgpr64(s4) != 0; // bne s4, r0, L113 + c->daddiu(a2, a2, 80); // daddiu a2, a2, 80 + if (bc) {goto block_8;} // branch non-likely + + c->sd(t6, 0, a2); // sd t6, 0(a2) + c->addiu(s2, r0, 8); // addiu s2, r0, 8 + c->sd(t6, 8, a2); // sd t6, 8(a2) + c->lui(a3, 27656); // lui a3, 27656 + c->sb(s2, 0, a2); // sb s2, 0(a2) + c->daddiu(a3, a3, 132); // daddiu a3, a3, 132 + c->load_symbol2(s2, cache.foreground); // lw s2, *foreground*(s7) + c->daddiu(s1, s2, 2384); // daddiu s1, s2, 2384 + c->sw(a3, 12, a2); // sw a3, 12(a2) + c->lq(a3, 0, s1); // lq a3, 0(s1) + c->lq(s2, 16, s1); // lq s2, 16(s1) + c->lq(s0, 32, s1); // lq s0, 32(s1) + c->lq(v0, 48, s1); // lq v0, 48(s1) + c->sq(a3, 16, a2); // sq a3, 16(a2) + c->sq(s2, 32, a2); // sq s2, 32(a2) + c->sq(s0, 48, a2); // sq s0, 48(a2) + c->sq(v0, 64, a2); // sq v0, 64(a2) + c->lq(a3, 64, s1); // lq a3, 64(s1) + c->lq(s2, 80, s1); // lq s2, 80(s1) + c->lq(s1, 96, s1); // lq s1, 96(s1) + c->lui(s0, 16261); // lui s0, 16261 + c->daddiu(v0, s0, 4715); // daddiu v0, s0, 4715 + c->daddiu(v0, s0, 619); // daddiu v0, s0, 619 + c->lq(s0, 28, a0); // lq s0, 28(a0) + c->sq(a3, 80, a2); // sq a3, 80(a2) + c->lbu(a3, 5, t9); // lbu a3, 5(t9) + c->sq(s2, 96, a2); // sq s2, 96(a2) + c->sq(s1, 112, a2); // sq s1, 112(a2) + c->dsubu(a3, v0, a3); // dsubu a3, v0, a3 + c->sq(s0, 128, a2); // sq s0, 128(a2) + c->sw(a3, 28, a2); // sw a3, 28(a2) + c->daddiu(a2, a2, 144); // daddiu a2, a2, 144 + + block_8: + bc = c->sgpr64(s3) == 0; // beq s3, r0, L115 + c->addiu(s2, r0, 128); // addiu s2, r0, 128 + if (bc) {goto block_11;} // branch non-likely + + c->lbu(a3, 0, gp); // lbu a3, 0(gp) + // nop // sll r0, r0, 0 + + block_10: + c->multu3(s1, a3, s2); // multu3 s1, a3, s2 + c->sq(t5, 0, a2); // sq t5, 0(a2) + c->lbu(s0, 1, gp); // lbu s0, 1(gp) + c->daddiu(gp, gp, 2); // daddiu gp, gp, 2 + + // HACK for PC PORT: stash the source matrix number in the unused bits of nop viftag. + c->sb(a3, 8, a2); + + c->lbu(a3, 0, gp); // lbu a3, 0(gp) + c->daddiu(s3, s3, -1); // daddiu s3, s3, -1 + c->sb(s0, 12, a2); // sb s0, 12(a2) + c->daddiu(a2, a2, 16); // daddiu a2, a2, 16 + c->daddu(s1, s1, a1); // daddu s1, s1, a1 + // nop // sll r0, r0, 0 + bc = c->sgpr64(s3) != 0; // bne s3, r0, L114 + c->sw(s1, -12, a2); // sw s1, -12(a2) + if (bc) {goto block_10;} // branch non-likely + + + block_11: + c->sq(t6, 0, a2); // sq t6, 0(a2) + c->daddiu(a2, a2, 16); // daddiu a2, a2, 16 + bc = c->sgpr64(s4) != 0; // bne s4, r0, L116 + c->daddiu(s4, s4, 1); // daddiu s4, s4, 1 + if (bc) {goto block_13;} // branch non-likely + + c->mov64(a3, v1); // or a3, v1, r0 + c->sb(a3, -4, a2); // sb a3, -4(a2) + + block_13: + bc = c->sgpr64(s4) != c->sgpr64(s5); // bne s4, s5, L112 + // nop // sll r0, r0, 0 + if (bc) {goto block_6;} // branch non-likely + + get_fake_spad_addr2(s5, cache.fake_scratchpad_data, 0, c);// lui s5, 28672 + c->lbu(a3, 26, t8); // lbu a3, 26(t8) + c->addiu(gp, r0, 48); // addiu gp, r0, 48 + c->lw(s5, 52, s5); // lw s5, 52(s5) + c->mult3(a3, a3, gp); // mult3 a3, a3, gp + // nop // sll r0, r0, 0 + c->daddu(a3, s5, a3); // daddu a3, s5, a3 + // nop // sll r0, r0, 0 + c->lw(s4, 0, a3); // lw s4, 0(a3) + // nop // sll r0, r0, 0 + c->lw(gp, 4, a3); // lw gp, 4(a3) + c->movz(s4, ra, s4); // movz s4, ra, s4 + c->sq(r0, 0, a2); // sq r0, 0(a2) + c->lui(s5, 8192); // lui s5, 8192 + c->sw(s4, 0, a3); // sw s4, 0(a3) + c->mov64(s4, a2); // or s4, a2, r0 + c->sw(s5, 0, a2); // sw s5, 0(a2) + c->daddiu(a2, a2, 16); // daddiu a2, a2, 16 + bc = c->sgpr64(gp) == 0; // beq gp, r0, L117 + c->sw(s4, 4, a3); // sw s4, 4(a3) + if (bc) {goto block_16;} // branch non-likely + + // nop // sll r0, r0, 0 + c->sw(ra, 4, gp); // sw ra, 4(gp) + + block_16: + c->daddiu(t8, t8, 32); // daddiu t8, t8, 32 + c->daddiu(t9, t9, 8); // daddiu t9, t9, 8 + c->daddiu(t7, t7, -1); // daddiu t7, t7, -1 + bc = c->sgpr64(t7) != 0; // bne t7, r0, L111 + // nop // sll r0, r0, 0 + if (bc) {goto block_2;} // branch non-likely + + c->mov64(v0, a2); // or v0, a2, r0 + c->ld(ra, 0, sp); // ld ra, 0(sp) + c->lq(gp, 112, sp); // lq gp, 112(sp) + c->lq(s5, 96, sp); // lq s5, 96(sp) + c->lq(s4, 80, sp); // lq s4, 80(sp) + c->lq(s3, 64, sp); // lq s3, 64(sp) + c->lq(s2, 48, sp); // lq s2, 48(sp) + c->lq(s1, 32, sp); // lq s1, 32(sp) + c->lq(s0, 16, sp); // lq s0, 16(sp) + //jr ra // jr ra + c->daddiu(sp, sp, 128); // daddiu sp, sp, 128 + goto end_of_function; // return + + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + end_of_function: + return c->gprs[v0].du64[0]; +} + +void link() { + cache.fake_scratchpad_data = intern_from_c("*fake-scratchpad-data*").c(); + cache.foreground = intern_from_c("*foreground*").c(); + cache.merc_global_stats = intern_from_c("*merc-global-stats*").c(); + gLinkedFunctionTable.reg("foreground-merc", execute, 256); +} + +} // namespace foreground_merc +} // namespace Mips2C + + + diff --git a/game/mips2c/mips2c_private.h b/game/mips2c/mips2c_private.h index cb427e4955..7e14cec202 100644 --- a/game/mips2c/mips2c_private.h +++ b/game/mips2c/mips2c_private.h @@ -1573,7 +1573,7 @@ inline void spad_to_dma_no_sadr_off_bones_interleave(void* spad_sym_addr, u32 sadr, u32 qwc) { u32 spad_addr_goal; - memcpy(&spad_addr_goal, spad_sym_addr, 4); + memcpy(&spad_addr_goal, align4_ptr(spad_sym_addr), 4); ASSERT((madr & 0xf) == 0); ASSERT((sadr & 0xf) == 0); @@ -1612,7 +1612,7 @@ inline void spad_from_dma(void* spad_sym_addr, u32 madr, u32 sadr, u32 qwc) { inline void spad_from_dma_no_sadr_off(void* spad_sym_addr, u32 madr, u32 sadr, u32 qwc) { u32 spad_addr_goal; - memcpy(&spad_addr_goal, spad_sym_addr, 4); + memcpy(&spad_addr_goal, align4_ptr(spad_sym_addr), 4); ASSERT((madr & 0xf) == 0); ASSERT((sadr & 0xf) == 0); ASSERT(sadr < 0x4000); diff --git a/game/mips2c/mips2c_table.cpp b/game/mips2c/mips2c_table.cpp index 8a83002af7..f5f29b5295 100644 --- a/game/mips2c/mips2c_table.cpp +++ b/game/mips2c/mips2c_table.cpp @@ -192,6 +192,9 @@ namespace method_10_collide_cache_prim { extern void link(); } namespace method_17_collide_cache { extern void link(); } namespace method_9_collide_puss_work { extern void link(); } namespace method_10_collide_puss_work { extern void link(); } +namespace bones_mtx_calc { extern void link(); } +namespace foreground_check_longest_edge_asm { extern void link(); } +namespace foreground_merc { extern void link(); } } // clang-format on @@ -319,7 +322,9 @@ PerGameVersion>> gMips2C jak2::method_11_collide_shape_prim_sphere::link, jak2::method_11_collide_shape_prim_group::link, jak2::method_9_collide_cache_prim::link, jak2::method_10_collide_cache_prim::link, jak2::method_17_collide_cache::link, - jak2::method_9_collide_puss_work::link, jak2::method_10_collide_puss_work::link}}}, + jak2::method_9_collide_puss_work::link, jak2::method_10_collide_puss_work::link}}, + {"bones", {jak2::bones_mtx_calc::link}}, + {"foreground", {jak2::foreground_check_longest_edge_asm::link, jak2::foreground_merc::link}}}, }; void LinkedFunctionTable::reg(const std::string& name, u64 (*exec)(void*), u32 stack_size) { diff --git a/goal_src/jak1/engine/math/matrix.gc b/goal_src/jak1/engine/math/matrix.gc index 13e38886a4..d78af302fe 100644 --- a/goal_src/jak1/engine/math/matrix.gc +++ b/goal_src/jak1/engine/math/matrix.gc @@ -498,6 +498,9 @@ (.xor.vf vf18 vf18 vf18) (.xor.vf vf23 vf23 vf23) (.xor.vf vf19 vf19 vf19) + (.xor.vf vf3 vf3 vf3) + (.xor.vf vf4 vf4 vf4) + (.xor.vf vf5 vf5 vf5) (init-vf0-vector) (.lvf vf23 (&-> src vector 0 quad)) diff --git a/goal_src/jak2/engine/anim/joint-exploder.gc b/goal_src/jak2/engine/anim/joint-exploder.gc index c1cbf44b63..89b7036b6b 100644 --- a/goal_src/jak2/engine/anim/joint-exploder.gc +++ b/goal_src/jak2/engine/anim/joint-exploder.gc @@ -5,11 +5,39 @@ ;; name in dgo: joint-exploder ;; dgos: GAME, COMMON -;; TODO - for vehicle-h + +;; DECOMP BEGINS + +(deftype joint-exploder-tuning (structure) + ((explosion uint64 :offset-assert 0) + (duration time-frame :offset-assert 8) + (gravity float :offset-assert 16) + (rot-speed float :offset-assert 20) + (bounds-inflate float :offset-assert 24) + (max-probe-width float :offset-assert 28) + (max-probe-height float :offset-assert 32) + (max-probe-depth float :offset-assert 36) + (fountain-rand-transv-lo vector :inline :offset-assert 48) + (fountain-rand-transv-hi vector :inline :offset-assert 64) + (away-from-focal-pt vector :inline :offset 48) + (away-from-rand-transv-xz-lo float :offset 64) + (away-from-rand-transv-xz-hi float :offset 68) + (away-from-rand-transv-y-lo float :offset 72) + (away-from-rand-transv-y-hi float :offset 76) + (hit-xz-reaction float :offset 80) + (hit-y-reaction float :offset 84) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + (:methods + (new (symbol type uint) _type_ 0) + ) + ) (deftype joint-exploder-static-joint-params (structure) - ((joint-index int16 :offset-assert 0) - (parent-joint-index int16 :offset-assert 2) + ((joint-index int16 :offset-assert 0) + (parent-joint-index int16 :offset-assert 2) ) :method-count-assert 9 :size-assert #x4 @@ -17,14 +45,734 @@ ) (deftype joint-exploder-static-params (basic) - ((joints (array joint-exploder-static-joint-params) :offset-assert 4) ;; guessed by decompiler - (collide-spec uint32 :offset-assert 8) - (art-level basic :offset-assert 12) + ((joints (array joint-exploder-static-joint-params) :offset-assert 4) + (collide-spec uint32 :offset-assert 8) + (art-level basic :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -;; DECOMP BEGINS +(deftype joint-exploder-joint (structure) + ((next int16 :offset-assert 0) + (prev int16 :offset-assert 2) + (joint-index int16 :offset-assert 4) + (mat matrix :inline :offset-assert 16) + (rmat matrix :inline :offset-assert 80) + (update-rmat matrix :inline :offset-assert 144) + (transv vector :inline :offset-assert 208) + (prev-pos vector :inline :offset-assert 224) + ) + :method-count-assert 9 + :size-assert #xf0 + :flag-assert #x9000000f0 + ) + +(deftype joint-exploder-joints (basic) + ((num-joints int32 :offset-assert 4) + (joint joint-exploder-joint :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + (:methods + (new (symbol type joint-exploder-static-params) _type_ 0) + ) + ) + +(deftype joint-exploder-list (structure) + ((head int32 :offset-assert 0) + (pre-moved? symbol :offset-assert 4) + (bbox-valid? symbol :offset-assert 8) + (probeless? basic :offset-assert 12) + (bbox bounding-box :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype joint-exploder (process-drawable) + ((die-if-below-y float :offset-assert 200) + (die-if-beyond-xz-dist-sqrd float :offset-assert 204) + (joints joint-exploder-joints :offset-assert 208) + (static-params joint-exploder-static-params :offset-assert 212) + (anim art-joint-anim :offset-assert 216) + (scale-vector vector :inline :offset-assert 224) + (tuning joint-exploder-tuning :inline :offset-assert 240) + (lists joint-exploder-list 5 :inline :offset-assert 336) + ) + :heap-base #x1c0 + :method-count-assert 30 + :size-assert #x240 + :flag-assert #x1e01c00240 + (:methods + (add-joint-to-list (_type_ joint-exploder-list int) int 20) + (update-bbox-for-joint (_type_ joint-exploder-list joint-exploder-joint) none 21) + (do-collision-response (_type_ joint-exploder-list) none 22) + (init-joint-list (_type_) none 23) + (remove-from-list-and-reset (_type_ joint-exploder-list int) int 24) + (final-adjust (_type_ joint-exploder-list int) int 25) + (integrate-and-kill (_type_ joint-exploder-list) none 26) + (remove-joint-from-list (_type_ joint-exploder-list int) int 27) + (adjust-bbox-for-limits-along-axis (_type_ joint-exploder-list int) joint-exploder-list 28) + (adjust-bbox-for-limits (_type_ joint-exploder-list) none 29) + ) + ) + +(defmethod asize-of joint-exploder-joints ((obj joint-exploder-joints)) + (the-as int (+ (-> obj type size) (* 240 (-> obj num-joints)))) + ) + +(defmethod new joint-exploder-joints ((allocation symbol) (type-to-make type) (arg0 joint-exploder-static-params)) + (let* ((gp-0 (-> arg0 joints length)) + (v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 240 gp-0))))) + ) + (set! (-> v0-0 num-joints) gp-0) + v0-0 + ) + ) + +(defun joint-exploder-joint-callback ((arg0 draw-control) (arg1 cspace-array) (arg2 joint-control)) + (let ((s4-0 (-> arg0 process))) + (let ((s3-0 (-> (the-as joint-exploder s4-0) joints))) + (countdown (s2-0 (-> s3-0 num-joints)) + (let* ((v1-3 (-> s3-0 joint s2-0)) + (a0-5 (-> arg1 data (-> v1-3 joint-index) bone transform)) + ) + (matrix*! a0-5 (-> v1-3 rmat) (-> v1-3 mat)) + ) + ) + ) + (let ((s4-1 (&-> s4-0 stack 96))) + (countdown (s3-1 (-> arg1 length)) + (let ((a2-2 (-> arg1 data s3-1 bone transform))) + (scale-matrix! a2-2 (the-as vector s4-1) a2-2) + ) + ) + ) + ) + (let ((s4-2 (new-stack-matrix0)) + (f30-0 (-> arg0 bounds w)) + ) + (matrix-4x4-inverse! s4-2 (-> arg1 data 0 bone transform)) + (set! (-> arg0 bounds w) 1.0) + (vector-matrix*! (-> arg0 bounds) (-> arg0 bounds) s4-2) + (set! (-> arg0 bounds w) f30-0) + ) + 0 + (none) + ) + +(defmethod remove-from-list-and-reset joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (let ((v0-0 (remove-joint-from-list obj arg0 arg1))) + (let* ((v1-1 (-> obj joints)) + (v1-2 (-> v1-1 joint arg1)) + ) + (set! (-> v1-2 mat quad 0) (the-as uint128 0)) + (set! (-> v1-2 mat vector 1 quad) (the-as uint128 0)) + (set! (-> v1-2 mat vector 2 quad) (the-as uint128 0)) + (set! (-> v1-2 mat trans quad) (-> obj root trans quad)) + ) + v0-0 + ) + ) + +(defmethod remove-joint-from-list joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (let* ((v1-0 (-> obj joints)) + (a2-1 (-> v1-0 joint arg1)) + (a0-4 (-> a2-1 prev)) + (v0-0 (-> a2-1 next)) + ) + (cond + ((>= a0-4 0) + (set! (-> v1-0 joint a0-4 next) v0-0) + (if (>= v0-0 0) + (set! (-> v1-0 joint v0-0 prev) a0-4) + ) + ) + (else + (set! (-> arg0 head) v0-0) + (cond + ((>= v0-0 0) + (let ((v1-2 (-> v1-0 joint v0-0))) + (set! (-> v1-2 prev) -1) + ) + ) + (else + (set! (-> arg0 bbox-valid?) #f) + ) + ) + ) + ) + v0-0 + ) + ) + +(defmethod add-joint-to-list joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (let* ((v1-0 (-> obj joints)) + (a3-0 (-> v1-0 joint arg1)) + (a0-4 (-> arg0 head)) + ) + (set! (-> arg0 head) arg1) + (set! (-> a3-0 prev) -1) + (set! (-> a3-0 next) a0-4) + (when (>= a0-4 0) + (set! (-> v1-0 joint a0-4 prev) arg1) + arg1 + ) + ) + ) + +(defmethod update-bbox-for-joint joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 joint-exploder-joint)) + (let ((a1-1 (-> arg1 mat trans))) + (cond + ((-> arg0 bbox-valid?) + (add-point! (-> arg0 bbox) a1-1) + ) + (else + (set! (-> arg0 bbox-valid?) #t) + (set! (-> arg0 bbox min quad) (-> a1-1 quad)) + (set! (-> arg0 bbox max quad) (-> a1-1 quad)) + ) + ) + ) + (add-point! (-> arg0 bbox) (-> arg1 prev-pos)) + (none) + ) + +(defmethod adjust-bbox-for-limits-along-axis joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (local-vars + (sv-16 int) + (sv-32 int) + (sv-48 joint-exploder-joint) + (sv-64 int) + (sv-80 joint-exploder-joint) + (sv-96 int) + (sv-112 joint-exploder-joint) + ) + (let ((s5-0 (the-as joint-exploder-list #f))) + (let ((v1-0 1)) + (until (= v1-0 5) + (let ((a0-4 (-> obj lists v1-0))) + (when (< (-> a0-4 head) 0) + (set! s5-0 a0-4) + (goto cfg-6) + ) + ) + (+! v1-0 1) + ) + ) + (label cfg-6) + (cond + (s5-0 + (set! (-> s5-0 pre-moved?) #t) + (set! (-> s5-0 bbox-valid?) #f) + ) + (else + (set! s5-0 (the-as joint-exploder-list (-> obj lists))) + ) + ) + (set! (-> arg0 bbox-valid?) #f) + (let ((s2-0 (-> obj joints))) + (set! sv-32 (-> arg0 head)) + (let ((s1-0 0) + (s0-0 0) + ) + (let ((v1-7 arg1)) + (cond + ((zero? v1-7) + (let ((f30-0 (* 0.5 (+ (-> arg0 bbox min x) (-> arg0 bbox max x))))) + (while (>= sv-32 0) + (set! sv-48 (-> s2-0 joint sv-32)) + (cond + ((>= (-> sv-48 mat trans x) f30-0) + (set! sv-16 (remove-joint-from-list obj arg0 sv-32)) + (add-joint-to-list obj s5-0 sv-32) + (set! sv-32 sv-16) + (update-bbox-for-joint obj s5-0 sv-48) + (+! s0-0 1) + ) + (else + (update-bbox-for-joint obj arg0 sv-48) + (set! sv-32 (-> sv-48 next)) + (+! s1-0 1) + ) + ) + ) + ) + ) + ((= v1-7 1) + (let ((f30-1 (* 0.5 (+ (-> arg0 bbox min y) (-> arg0 bbox max y))))) + (while (>= sv-32 0) + (set! sv-80 (-> s2-0 joint sv-32)) + (cond + ((>= (-> sv-80 mat trans y) f30-1) + (set! sv-64 (remove-joint-from-list obj arg0 sv-32)) + (add-joint-to-list obj s5-0 sv-32) + (set! sv-32 sv-64) + (update-bbox-for-joint obj s5-0 sv-80) + (+! s0-0 1) + ) + (else + (update-bbox-for-joint obj arg0 sv-80) + (set! sv-32 (-> sv-80 next)) + (+! s1-0 1) + ) + ) + ) + ) + ) + ((= v1-7 2) + (let ((f30-2 (* 0.5 (+ (-> arg0 bbox min z) (-> arg0 bbox max z))))) + (while (>= sv-32 0) + (set! sv-112 (-> s2-0 joint sv-32)) + (cond + ((>= (-> sv-112 mat trans z) f30-2) + (set! sv-96 (remove-joint-from-list obj arg0 sv-32)) + (add-joint-to-list obj s5-0 sv-32) + (set! sv-32 sv-96) + (update-bbox-for-joint obj s5-0 sv-112) + (+! s0-0 1) + ) + (else + (update-bbox-for-joint obj arg0 sv-112) + (set! sv-32 (-> sv-112 next)) + (+! s1-0 1) + ) + ) + ) + ) + ) + ) + ) + (cond + ((zero? s0-0) + (final-adjust obj arg0 arg1) + ) + ((zero? s1-0) + (if (not (-> s5-0 probeless?)) + (final-adjust obj s5-0 arg1) + ) + ) + ) + ) + ) + s5-0 + ) + ) + +(defmethod final-adjust joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (local-vars (sv-48 int) (sv-64 (inline-array joint-exploder-list)) (sv-80 joint-exploder-joint)) + (set! (-> arg0 bbox-valid?) #f) + (let ((s3-0 (-> obj joints)) + (s2-0 (-> arg0 head)) + ) + (while (>= s2-0 0) + (set! sv-80 (-> s3-0 joint s2-0)) + (let ((s1-0 (new 'stack-no-clear 'matrix)) + (s0-0 (-> arg0 bbox-valid?)) + ) + (set! (-> s1-0 vector 0 quad) (-> arg0 bbox min quad)) + (set! (-> s1-0 vector 1 quad) (-> arg0 bbox max quad)) + (update-bbox-for-joint obj arg0 sv-80) + (let* ((v1-7 arg1) + (v1-8 (cond + ((zero? v1-7) + (< (-> obj tuning max-probe-width) (- (-> arg0 bbox max x) (-> arg0 bbox min x))) + ) + ((= v1-7 1) + (< (-> obj tuning max-probe-height) (- (-> arg0 bbox max y) (-> arg0 bbox min y))) + ) + ((= v1-7 2) + (< (-> obj tuning max-probe-depth) (- (-> arg0 bbox max z) (-> arg0 bbox min z))) + ) + ) + ) + ) + (when v1-8 + (set! sv-48 (remove-joint-from-list obj arg0 s2-0)) + (set! sv-64 (-> obj lists)) + (add-joint-to-list obj (the-as joint-exploder-list sv-64) s2-0) + (set! s2-0 sv-48) + (update-bbox-for-joint obj (the-as joint-exploder-list sv-64) sv-80) + (set! (-> arg0 bbox-valid?) s0-0) + (set! (-> arg0 bbox min quad) (-> s1-0 vector 0 quad)) + (set! (-> arg0 bbox max quad) (-> s1-0 vector 1 quad)) + ) + ) + ) + ) + ) + (the-as int #f) + ) + +(defmethod adjust-bbox-for-limits joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) + (when (and (-> arg0 bbox-valid?) (>= (-> arg0 head) 0) (not (-> arg0 probeless?))) + (let ((a2-0 -1)) + (cond + ((< (-> obj tuning max-probe-width) (- (-> arg0 bbox max x) (-> arg0 bbox min x))) + (set! a2-0 0) + ) + ((< (-> obj tuning max-probe-height) (- (-> arg0 bbox max y) (-> arg0 bbox min y))) + (set! a2-0 1) + ) + ((< (-> obj tuning max-probe-depth) (- (-> arg0 bbox max z) (-> arg0 bbox min z))) + (set! a2-0 2) + ) + ) + (when (>= a2-0 0) + (let ((a1-2 (adjust-bbox-for-limits-along-axis obj arg0 a2-0))) + (if (not (-> a1-2 probeless?)) + (adjust-bbox-for-limits obj a1-2) + ) + ) + (adjust-bbox-for-limits obj arg0) + ) + ) + ) + 0 + (none) + ) + +(defmethod integrate-and-kill joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) + (with-pp + (set! (-> arg0 bbox-valid?) #f) + (set! (-> arg0 pre-moved?) #t) + (let ((s4-0 (-> obj joints)) + (f30-0 (* (-> obj tuning gravity) (-> pp clock seconds-per-frame))) + (s3-0 (-> arg0 head)) + ) + (while (>= s3-0 0) + (let* ((s2-0 (-> s4-0 joint s3-0)) + (s1-0 (-> s2-0 mat trans)) + ) + (set! (-> s2-0 prev-pos quad) (-> s1-0 quad)) + (+! (-> s2-0 transv y) f30-0) + (vector-v+! s1-0 s1-0 (-> s2-0 transv)) + (matrix*! (-> s2-0 rmat) (-> s2-0 rmat) (-> s2-0 update-rmat)) + (cond + ((or (< (-> s1-0 y) (-> obj die-if-below-y)) + (< (-> obj die-if-beyond-xz-dist-sqrd) (vector-vector-xz-distance s1-0 (-> obj root trans))) + ) + (set! s3-0 (remove-from-list-and-reset obj arg0 s3-0)) + ) + (else + (update-bbox-for-joint obj arg0 s2-0) + (set! s3-0 (-> s2-0 next)) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +(defmethod do-collision-response joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) + (let ((s5-0 (new 'stack-no-clear 'collide-query))) + (set! (-> s5-0 collide-with) (the-as collide-spec (-> obj static-params collide-spec))) + (set! (-> s5-0 ignore-process0) obj) + (set! (-> s5-0 ignore-process1) #f) + (set! (-> s5-0 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1)) + (set! (-> s5-0 action-mask) (collide-action solid)) + (mem-copy! (the-as pointer (-> s5-0 bbox)) (the-as pointer (-> arg0 bbox)) 32) + (fill-using-bounding-box *collide-cache* s5-0) + ) + (let ((s5-1 (-> obj joints)) + (v1-6 (-> arg0 head)) + ) + (while (>= v1-6 0) + (let ((s4-1 (-> s5-1 joint v1-6))) + (let ((s3-0 (-> s4-1 mat trans)) + (s2-0 (new 'stack-no-clear 'collide-query)) + ) + (vector-! (-> s2-0 move-dist) s3-0 (-> s4-1 prev-pos)) + (set! (-> s2-0 start-pos quad) (-> s4-1 prev-pos quad)) + (let ((v1-11 s2-0)) + (set! (-> v1-11 radius) 40.96) + (set! (-> v1-11 collide-with) (the-as collide-spec (-> obj static-params collide-spec))) + (set! (-> v1-11 ignore-process0) #f) + (set! (-> v1-11 ignore-process1) #f) + (set! (-> v1-11 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1)) + (set! (-> v1-11 action-mask) (collide-action solid)) + ) + (when (>= (probe-using-line-sphere *collide-cache* s2-0) 0.0) + (set! (-> s3-0 quad) (-> s2-0 best-other-tri intersect quad)) + (let* ((v1-16 (-> s4-1 transv)) + (f28-0 (sqrtf (+ (* (-> v1-16 x) (-> v1-16 x)) (* (-> v1-16 z) (-> v1-16 z))))) + ) + (vector-reflect! (-> s4-1 transv) (-> s4-1 transv) (-> s2-0 best-other-tri normal)) + (let ((f30-0 (-> s4-1 transv y))) + (set! (-> s4-1 transv y) 0.0) + (vector-normalize! (-> s4-1 transv) (* f28-0 (-> obj tuning hit-xz-reaction))) + (set! (-> s4-1 transv y) (* f30-0 (-> obj tuning hit-y-reaction))) + ) + ) + (+! (-> s3-0 y) (* 40.96 (-> s2-0 best-other-tri normal y))) + (set! (-> s3-0 w) 1.0) + (matrix-lerp! (-> s4-1 update-rmat) (-> s4-1 update-rmat) *identity-matrix* 0.5) + ) + ) + (set! v1-6 (-> s4-1 next)) + ) + ) + ) + 0 + (none) + ) + +(defstate joint-exploder-shatter (joint-exploder) + :enter (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :trans (behavior () + (let* ((f0-1 (the float (- (-> self clock frame-counter) (-> self state-time)))) + (f1-1 (- 1.0 (/ f0-1 (the float (-> self tuning duration))))) + (f0-3 (- 1.0 (/ f0-1 (* 0.75 (the float (-> self tuning duration)))))) + ) + (if (< f0-3 0.0) + (set! f0-3 0.0) + ) + (set-vector! (-> self scale-vector) f1-1 f0-3 f1-1 1.0) + ) + (dotimes (v1-11 5) + (set! (-> self lists v1-11 pre-moved?) #f) + ) + (dotimes (gp-0 5) + (let ((s5-0 (-> self lists gp-0))) + (when (>= (-> s5-0 head) 0) + (when (not (-> s5-0 pre-moved?)) + (integrate-and-kill self s5-0) + (if (nonzero? gp-0) + (adjust-bbox-for-limits self s5-0) + ) + ) + ) + ) + ) + (let ((gp-1 (new 'stack-no-clear 'bounding-box))) + (let ((v1-29 (-> self root trans))) + (set! (-> gp-1 min quad) (-> v1-29 quad)) + (set! (-> gp-1 max quad) (-> v1-29 quad)) + ) + (dotimes (s5-1 5) + (let ((s4-0 (-> self lists s5-1))) + (if (-> s4-0 bbox-valid?) + (add-box! gp-1 (-> s4-0 bbox)) + ) + (if (nonzero? s5-1) + (do-collision-response self s4-0) + ) + ) + ) + (let ((s5-2 (-> self draw bounds))) + (vector-average! s5-2 (-> gp-1 min) (-> gp-1 max)) + (set! (-> s5-2 w) (+ (vector-vector-distance s5-2 (-> gp-1 max)) (-> self tuning bounds-inflate))) + ) + ) + 0 + (none) + ) + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (until (>= (- (-> self clock frame-counter) (-> self state-time)) (-> self tuning duration)) + (suspend) + (ja :num! (loop!)) + ) + (none) + ) + :post (the-as (function none :behavior joint-exploder) ja-post) + ) + +(defmethod init-joint-list joint-exploder ((obj joint-exploder)) + (let ((gp-0 (-> obj joints))) + (dotimes (s4-0 (-> gp-0 num-joints)) + (let ((v1-2 (-> obj static-params joints s4-0)) + (s3-0 (-> gp-0 joint s4-0)) + ) + (let ((a0-6 (-> v1-2 parent-joint-index))) + (set! (-> s3-0 prev) (+ s4-0 -1)) + (set! (-> s3-0 next) (+ s4-0 1)) + (set! (-> s3-0 joint-index) (-> v1-2 joint-index)) + (cond + ((>= a0-6 0) + (if (zero? a0-6) + (set! a0-6 (-> v1-2 joint-index)) + ) + (let* ((a3-0 (-> (the-as process-drawable (-> obj parent 0)) node-list data a0-6 bone transform)) + (a2-0 (-> s3-0 mat)) + (v1-9 (-> a3-0 quad 0)) + (a0-8 (-> a3-0 quad 1)) + (a1-4 (-> a3-0 quad 2)) + (a3-1 (-> a3-0 trans quad)) + ) + (set! (-> a2-0 quad 0) v1-9) + (set! (-> a2-0 quad 1) a0-8) + (set! (-> a2-0 quad 2) a1-4) + (set! (-> a2-0 trans quad) a3-1) + ) + (matrix-identity! (-> s3-0 rmat)) + ) + (else + (let* ((a3-2 (-> obj node-list data (-> v1-2 joint-index) bone transform)) + (a2-1 (-> s3-0 mat)) + (v1-15 (-> a3-2 quad 0)) + (a0-11 (-> a3-2 quad 1)) + (a1-5 (-> a3-2 quad 2)) + (a3-3 (-> a3-2 trans quad)) + ) + (set! (-> a2-1 quad 0) v1-15) + (set! (-> a2-1 quad 1) a0-11) + (set! (-> a2-1 quad 2) a1-5) + (set! (-> a2-1 trans quad) a3-3) + ) + (matrix-identity! (-> s3-0 rmat)) + ) + ) + ) + (case (-> obj tuning explosion) + ((1) + (vector-! (-> s3-0 transv) (-> s3-0 mat trans) (-> obj tuning fountain-rand-transv-lo)) + (vector-normalize! + (-> s3-0 transv) + (rand-vu-float-range (-> obj tuning fountain-rand-transv-hi x) (-> obj tuning fountain-rand-transv-hi y)) + ) + (+! (-> s3-0 transv y) + (rand-vu-float-range (-> obj tuning fountain-rand-transv-hi z) (-> obj tuning fountain-rand-transv-hi w)) + ) + (set! (-> s3-0 transv w) 1.0) + ) + (else + (let ((s0-0 (-> obj tuning fountain-rand-transv-lo)) + (s1-1 (-> obj tuning fountain-rand-transv-hi)) + ) + (set-vector! + (-> s3-0 transv) + (rand-vu-float-range (-> s0-0 x) (-> s1-1 x)) + (rand-vu-float-range (-> s0-0 y) (-> s1-1 y)) + (rand-vu-float-range (-> s0-0 z) (-> s1-1 z)) + 1.0 + ) + ) + ) + ) + (let* ((v1-21 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> s3-0 transv) 1.0)) + (s2-4 (vector-cross! (new 'stack-no-clear 'vector) v1-21 *up-vector*)) + (s1-2 (new 'stack-no-clear 'quaternion)) + ) + (vector-normalize! s2-4 1.0) + (quaternion-vector-angle! s1-2 s2-4 (* 182.04445 (-> obj tuning rot-speed))) + (quaternion->matrix (-> s3-0 update-rmat) s1-2) + ) + ) + ) + (when (nonzero? (-> gp-0 num-joints)) + (let ((v1-32 (-> gp-0 joint (+ (-> gp-0 num-joints) -1)))) + (set! (-> v1-32 next) -1) + ) + (let ((v1-33 (-> obj lists 1))) + (set! (-> v1-33 head) 0) + (let ((s5-1 (-> v1-33 bbox))) + (let ((v1-34 (-> gp-0 joint 0 mat trans))) + (set! (-> s5-1 min quad) (-> v1-34 quad)) + (set! (-> s5-1 max quad) (-> v1-34 quad)) + ) + (dotimes (s4-1 (-> gp-0 num-joints)) + (add-point! s5-1 (the-as vector (+ (the-as uint (-> gp-0 joint 0 mat trans)) (* 240 s4-1)))) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defmethod relocate joint-exploder ((obj joint-exploder) (arg0 int)) + (if (nonzero? (-> obj joints)) + (&+! (-> obj joints) arg0) + ) + (the-as joint-exploder ((method-of-type process-drawable relocate) obj arg0)) + ) + +(defbehavior joint-exploder-init-by-other joint-exploder ((arg0 skeleton-group) (arg1 int) (arg2 joint-exploder-tuning) (arg3 joint-exploder-static-params)) + (set! (-> self static-params) arg3) + (set! (-> self die-if-beyond-xz-dist-sqrd) 10485760000.0) + (mem-copy! (the-as pointer (-> self tuning)) (the-as pointer arg2) 88) + (set! (-> self joints) (new 'process 'joint-exploder-joints arg3)) + (dotimes (v1-2 5) + (let ((a0-6 (-> self lists v1-2))) + (set! (-> a0-6 head) -1) + (set! (-> a0-6 bbox-valid?) #f) + (set! (-> a0-6 pre-moved?) #f) + (set! (-> a0-6 probeless?) #f) + ) + ) + (let ((v1-5 (-> self lists))) + (set! (-> v1-5 0 probeless?) (the-as basic #t)) + ) + (set! (-> self root) (new 'process 'trsqv)) + (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) + (quaternion-copy! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat)) + (set! (-> self root scale quad) (-> (the-as process-drawable (-> self parent 0)) root scale quad)) + (when (-> arg3 art-level) + (let ((a1-6 (entity-actor-from-level-name (the-as level (-> arg3 art-level))))) + (if a1-6 + (process-entity-set! self a1-6) + ) + ) + ) + (initialize-skeleton self arg0 (the-as pair 0)) + (logior! (-> self skel status) (joint-control-status sync-math)) + (set! (-> self anim) (the-as art-joint-anim (-> self draw art-group data arg1))) + (ja-channel-set! 1) + (ja :group! (-> self anim) :num! min) + (ja-post) + (init-joint-list self) + (set! (-> self die-if-below-y) (+ -102400.0 (-> self root trans y))) + (set! (-> self skel postbind-function) joint-exploder-joint-callback) + (go joint-exploder-shatter) + (none) + ) + +(defmethod new joint-exploder-tuning ((allocation symbol) (type-to-make type) (arg0 uint)) + (let ((t9-0 (method-of-type structure new)) + (v1-1 type-to-make) + ) + (-> type-to-make size) + (let ((v0-0 (the-as joint-exploder-tuning (t9-0 allocation v1-1)))) + (set! (-> v0-0 explosion) (the-as uint arg0)) + (set! (-> v0-0 duration) (seconds 2)) + (set! (-> v0-0 gravity) -286720.0) + (set! (-> v0-0 rot-speed) 8.4) + (set! (-> v0-0 bounds-inflate) 16384.0) + (set! (-> v0-0 max-probe-width) 20480.0) + (set! (-> v0-0 max-probe-height) 24576.0) + (set! (-> v0-0 max-probe-depth) 20480.0) + (set! (-> v0-0 hit-xz-reaction) 0.75) + (set! (-> v0-0 hit-y-reaction) 0.7) + (cond + ((zero? arg0) + (set-vector! (-> v0-0 fountain-rand-transv-lo) -81920.0 20480.0 -81920.0 1.0) + (set-vector! (-> v0-0 fountain-rand-transv-hi) 81920.0 61440.0 81920.0 1.0) + ) + ((= arg0 1) + (vector-reset! (-> v0-0 fountain-rand-transv-lo)) + (set! (-> v0-0 fountain-rand-transv-hi x) 49152.0) + (set! (-> v0-0 fountain-rand-transv-hi y) 163840.0) + (set! (-> v0-0 fountain-rand-transv-hi z) 20480.0) + (set! (-> v0-0 fountain-rand-transv-hi w) 61440.0) + ) + ) + (the-as joint-exploder-tuning v0-0) + ) + ) + ) + + + diff --git a/goal_src/jak2/engine/collide/collide-cache.gc b/goal_src/jak2/engine/collide/collide-cache.gc index 613ad5ca46..823751d6b5 100644 --- a/goal_src/jak2/engine/collide/collide-cache.gc +++ b/goal_src/jak2/engine/collide/collide-cache.gc @@ -707,7 +707,7 @@ (when (logtest? s4-0 (-> v1-58 root-prim prim-core collide-as)) (let ((a0-37 (-> v1-58 process))) (if (not (or (= a0-37 (-> obj ignore-processes 0)) (= a0-37 (-> obj ignore-processes 1)))) - ((method-of-object (-> v1-58 root-prim) add-fg-prim-using-line-sphere)) + (add-fg-prim-using-line-sphere (-> v1-58 root-prim) obj arg0) ) ) ) @@ -721,7 +721,7 @@ ;; definition for method 11 of type collide-shape-prim ;; WARN: Return type mismatch object vs none. -(defmethod add-fg-prim-using-line-sphere collide-shape-prim () +(defmethod add-fg-prim-using-line-sphere collide-shape-prim ((obj collide-shape-prim) (arg0 collide-cache) (arg1 object)) (format 0 "ERROR: Illegal collide-shape-prim type passed to collide-shape-prim::add-fg-prim-using-line-sphere!~%" diff --git a/goal_src/jak2/engine/collide/collide-mesh.gc b/goal_src/jak2/engine/collide/collide-mesh.gc index 699e1b2acc..7205edbe06 100644 --- a/goal_src/jak2/engine/collide/collide-mesh.gc +++ b/goal_src/jak2/engine/collide/collide-mesh.gc @@ -264,6 +264,7 @@ ) ) + ;; these two are unknown. (defmethod-mips2c "(method 14 collide-mesh)" 14 collide-mesh) (defmethod-mips2c "(method 15 collide-mesh)" 15 collide-mesh) diff --git a/goal_src/jak2/engine/collide/collide-shape-h.gc b/goal_src/jak2/engine/collide/collide-shape-h.gc index f661cca090..0df94e837f 100644 --- a/goal_src/jak2/engine/collide/collide-shape-h.gc +++ b/goal_src/jak2/engine/collide/collide-shape-h.gc @@ -407,7 +407,7 @@ (new (symbol type collide-shape uint int) _type_ 0) (debug-draw (_type_) none 9) (add-fg-prim-using-box (_type_ collide-cache) none 10) - (add-fg-prim-using-line-sphere () none 11) + (add-fg-prim-using-line-sphere (_type_ collide-cache object) none 11) (overlaps-others-test (_type_ overlaps-others-params collide-shape-prim) symbol 12) (overlaps-others-group (_type_ overlaps-others-params collide-shape-prim-group) symbol 13) (collide-shape-prim-method-14 () none 14) diff --git a/goal_src/jak2/engine/common_objs/collectables.gc b/goal_src/jak2/engine/common_objs/collectables.gc index d7443c4d7b..ececab99cb 100644 --- a/goal_src/jak2/engine/common_objs/collectables.gc +++ b/goal_src/jak2/engine/common_objs/collectables.gc @@ -7,3 +7,6 @@ ;; DECOMP BEGINS +(defmethod drop-pickup fact-info ((obj fact-info) (arg0 symbol) (arg1 process-tree) (arg2 fact-info) (arg3 int)) + (the (pointer process) #f) + ) \ No newline at end of file diff --git a/goal_src/jak2/engine/common_objs/water.gc b/goal_src/jak2/engine/common_objs/water.gc index 50c1ebb9be..c4349807a1 100644 --- a/goal_src/jak2/engine/common_objs/water.gc +++ b/goal_src/jak2/engine/common_objs/water.gc @@ -1591,8 +1591,8 @@ (logtest? (-> s2-2 prim-core action) arg3) (nonzero? (-> s2-2 prim-core collide-with)) ) - (set! (-> (the-as region-prim-area #x70000000) pos quad) (-> s2-2 prim-core world-sphere quad)) - (if (and (within-area? arg1 (the-as region-prim-area (+ #x70000000 0))) + (set! (-> (scratchpad-object region-prim-area) pos quad) (-> s2-2 prim-core world-sphere quad)) + (if (and (within-area? arg1 (scratchpad-object region-prim-area)) (begin (set! (-> arg0 flags) (logior (water-flags over-water) (-> arg0 flags))) (>= (-> arg0 trans y) (- (-> s2-2 prim-core world-sphere y) (-> s2-2 prim-core world-sphere w))) diff --git a/goal_src/jak2/engine/data/art-elts.gc b/goal_src/jak2/engine/data/art-elts.gc new file mode 100644 index 0000000000..e0205bf0c5 --- /dev/null +++ b/goal_src/jak2/engine/data/art-elts.gc @@ -0,0 +1,1674 @@ +(def-art-elt race-bike-a-ag race-bike-a-idle-ja 5) +(def-art-elt race-bike-a-ag race-bike-a-shadow-mg 4) +(def-art-elt race-bike-a-ag race-bike-a-lod2-mg 3) +(def-art-elt race-bike-a-ag race-bike-a-lod1-mg 2) +(def-art-elt race-bike-a-ag race-bike-a-lod0-mg 1) +(def-art-elt race-bike-a-ag race-bike-a-lod0-jg 0) +(def-art-elt jellyfish-ag jellyfish-grab-detach-ja 11) +(def-art-elt jellyfish-ag jellyfish-grab-attach-loop-ja 10) +(def-art-elt jellyfish-ag jellyfish-grab-attach-ja 9) +(def-art-elt jellyfish-ag jellyfish-grab-start-ja 8) +(def-art-elt jellyfish-ag jellyfish-notice-charge-loop-ja 7) +(def-art-elt jellyfish-ag jellyfish-notice-charge-ja 6) +(def-art-elt jellyfish-ag jellyfish-notice-loop-ja 5) +(def-art-elt jellyfish-ag jellyfish-notice-ja 4) +(def-art-elt jellyfish-ag jellyfish-die-ja 3) +(def-art-elt jellyfish-ag jellyfish-idle-ja 2) +(def-art-elt jellyfish-ag jellyfish-lod0-mg 1) +(def-art-elt jellyfish-ag jellyfish-lod0-jg 0) +(def-art-elt bikec-ag bikec-idle-ja 5) +(def-art-elt bikec-ag bikec-shadow-mg 4) +(def-art-elt bikec-ag bikec-lod2-mg 3) +(def-art-elt bikec-ag bikec-lod1-mg 2) +(def-art-elt bikec-ag bikec-lod0-mg 1) +(def-art-elt bikec-ag bikec-lod0-jg 0) +(def-art-elt bikea-ag bikea-idle-ja 5) +(def-art-elt bikea-ag bikea-shadow-mg 4) +(def-art-elt bikea-ag bikea-lod2-mg 3) +(def-art-elt bikea-ag bikea-lod1-mg 2) +(def-art-elt bikea-ag bikea-lod0-mg 1) +(def-art-elt bikea-ag bikea-lod0-jg 0) +(def-art-elt under-break-wall-ag under-break-wall-idle-ja 2) +(def-art-elt under-break-wall-ag under-break-wall-lod0-mg 1) +(def-art-elt under-break-wall-ag under-break-wall-lod0-jg 0) +(def-art-elt market-basket-b-ag market-basket-b-idle-ja 2) +(def-art-elt market-basket-b-ag market-basket-b-lod0-mg 1) +(def-art-elt market-basket-b-ag market-basket-b-lod0-jg 0) +(def-art-elt roboguard-ag roboguard-explode-idle-ja 31) +(def-art-elt roboguard-ag roboguard-explode-lod0-mg 30) +(def-art-elt roboguard-ag roboguard-explode-lod0-jg 29) +(def-art-elt roboguard-ag roboguard-death-standing-ja 12) +(def-art-elt roboguard-ag roboguard-ball-to-idle-ja 11) +(def-art-elt roboguard-ag roboguard-ball-ja 10) +(def-art-elt roboguard-ag roboguard-idle-to-ball-ja 9) +(def-art-elt roboguard-ag roboguard-run-ja 8) +(def-art-elt roboguard-ag roboguard-walk-ja 7) +(def-art-elt roboguard-ag roboguard-notice-ja 6) +(def-art-elt roboguard-ag roboguard-idle1-ja 5) +(def-art-elt roboguard-ag roboguard-idle0-ja 4) +(def-art-elt roboguard-ag roboguard-shadow-mg 3) +(def-art-elt roboguard-ag roboguard-lod2-mg 2) +(def-art-elt roboguard-ag roboguard-lod0-mg 1) +(def-art-elt roboguard-ag roboguard-lod0-jg 0) +(def-art-elt roboguard-ag roboguard-laser-ground-ja 13) +(def-art-elt roboguard-ag roboguard-punch-rotate-ja 14) +(def-art-elt roboguard-ag roboguard-punch-go-ja 15) +(def-art-elt roboguard-ag roboguard-punch-hold-ja 16) +(def-art-elt roboguard-ag roboguard-punch-end-ja 17) +(def-art-elt roboguard-ag roboguard-shoot-left-start-ja 18) +(def-art-elt roboguard-ag roboguard-shoot-left-ja 19) +(def-art-elt roboguard-ag roboguard-shoot-left-end-ja 20) +(def-art-elt roboguard-ag roboguard-knocked-small-ja 21) +(def-art-elt roboguard-ag roboguard-knocked-small-land-ja 22) +(def-art-elt roboguard-ag roboguard-knocked-big-ja 23) +(def-art-elt roboguard-ag roboguard-knocked-big-land-ja 24) +(def-art-elt roboguard-ag roboguard-fall-ja 25) +(def-art-elt roboguard-ag roboguard-shoot-right-ja 26) +(def-art-elt roboguard-ag roboguard-ball-to-dizzy-ja 27) +(def-art-elt roboguard-ag roboguard-dizzy-ja 28) +(def-art-elt cty-guard-turret-ag cty-guard-turret-explode-idle-ja 6) +(def-art-elt cty-guard-turret-ag cty-guard-turret-explode-lod0-mg 5) +(def-art-elt cty-guard-turret-ag cty-guard-turret-explode-lod0-jg 4) +(def-art-elt cty-guard-turret-ag cty-guard-turret-pop-up-down-ja 3) +(def-art-elt cty-guard-turret-ag cty-guard-turret-idle-ja 2) +(def-art-elt cty-guard-turret-ag cty-guard-turret-lod0-mg 1) +(def-art-elt cty-guard-turret-ag cty-guard-turret-lod0-jg 0) +(def-art-elt warp-gate-b-ag warp-gate-b-idle-ja 2) +(def-art-elt warp-gate-b-ag warp-gate-b-lod0-mg 1) +(def-art-elt warp-gate-b-ag warp-gate-b-lod0-jg 0) +(def-art-elt keira-highres-ag keira-highres-idle-ja 3) +(def-art-elt keira-highres-ag keira-highres-shadow-mg 2) +(def-art-elt keira-highres-ag keira-highres-lod0-mg 1) +(def-art-elt keira-highres-ag keira-highres-lod0-jg 0) +(def-art-elt fort-trap-door-ag fort-trap-door-explode-idle-ja 5) +(def-art-elt fort-trap-door-ag fort-trap-door-explode-lod0-mg 4) +(def-art-elt fort-trap-door-ag fort-trap-door-explode-lod0-jg 3) +(def-art-elt fort-trap-door-ag fort-trap-door-idle-ja 2) +(def-art-elt fort-trap-door-ag fort-trap-door-lod0-mg 1) +(def-art-elt fort-trap-door-ag fort-trap-door-lod0-jg 0) +(def-art-elt drill-metalhead-eggs-a-ag drill-metalhead-eggs-a-idle-ja 2) +(def-art-elt drill-metalhead-eggs-a-ag drill-metalhead-eggs-a-lod0-mg 1) +(def-art-elt drill-metalhead-eggs-a-ag drill-metalhead-eggs-a-lod0-jg 0) +(def-art-elt under-lift-ag under-lift-idle-ja 3) +(def-art-elt under-lift-ag under-lift-lod1-mg 2) +(def-art-elt under-lift-ag under-lift-lod0-mg 1) +(def-art-elt under-lift-ag under-lift-lod0-jg 0) +(def-art-elt prsn-torture-ag prsn-torture-idle-ja 2) +(def-art-elt prsn-torture-ag prsn-torture-lod0-mg 1) +(def-art-elt prsn-torture-ag prsn-torture-lod0-jg 0) +(def-art-elt stdmb-race-hatch-ag stdmb-race-hatch-idle-ja 3) +(def-art-elt stdmb-race-hatch-ag stdmb-race-hatch-lod1-mg 2) +(def-art-elt stdmb-race-hatch-ag stdmb-race-hatch-lod0-mg 1) +(def-art-elt stdmb-race-hatch-ag stdmb-race-hatch-lod0-jg 0) +(def-art-elt under-rise-plat-ag under-rise-plat-idle2-ja 5) +(def-art-elt under-rise-plat-ag under-rise-plat-rise2-ja 4) +(def-art-elt under-rise-plat-ag under-rise-plat-idle-ja 3) +(def-art-elt under-rise-plat-ag under-rise-plat-rise1-ja 2) +(def-art-elt under-rise-plat-ag under-rise-plat-lod0-mg 1) +(def-art-elt under-rise-plat-ag under-rise-plat-lod0-jg 0) +(def-art-elt samos-highres-ag samos-highres-idle-ja 3) +(def-art-elt samos-highres-ag samos-highres-shadow-mg 2) +(def-art-elt samos-highres-ag samos-highres-lod0-mg 1) +(def-art-elt samos-highres-ag samos-highres-lod0-jg 0) +(def-art-elt vil-windspinner-ag vil-windspinner-idle-ja 4) +(def-art-elt vil-windspinner-ag vil-windspinner-lod2-mg 3) +(def-art-elt vil-windspinner-ag vil-windspinner-lod1-mg 2) +(def-art-elt vil-windspinner-ag vil-windspinner-lod0-mg 1) +(def-art-elt vil-windspinner-ag vil-windspinner-lod0-jg 0) +(def-art-elt cty-fruit-stand-ag cty-fruit-stand-idle-ja 2) +(def-art-elt cty-fruit-stand-ag cty-fruit-stand-lod0-mg 1) +(def-art-elt cty-fruit-stand-ag cty-fruit-stand-lod0-jg 0) +(def-art-elt scenecamera-ag scenecamera-idle-ja 2) +(def-art-elt scenecamera-ag scenecamera-lod0-mg 1) +(def-art-elt scenecamera-ag scenecamera-lod0-jg 0) +(def-art-elt market-crate-ag market-crate-idle-ja 2) +(def-art-elt market-crate-ag market-crate-lod0-mg 1) +(def-art-elt market-crate-ag market-crate-lod0-jg 0) +(def-art-elt under-buoy-base-ag under-buoy-base-idle-ja 2) +(def-art-elt under-buoy-base-ag under-buoy-base-lod0-mg 1) +(def-art-elt under-buoy-base-ag under-buoy-base-lod0-jg 0) +(def-art-elt daxter-highres-ag daxter-highres-idle-ja 3) +(def-art-elt daxter-highres-ag daxter-highres-shadow-mg 2) +(def-art-elt daxter-highres-ag daxter-highres-lod0-mg 1) +(def-art-elt daxter-highres-ag daxter-highres-lod0-jg 0) +(def-art-elt vil-windmill-sail-ag vil-windmill-sail-idle-ja 4) +(def-art-elt vil-windmill-sail-ag vil-windmill-sail-lod2-mg 3) +(def-art-elt vil-windmill-sail-ag vil-windmill-sail-lod1-mg 2) +(def-art-elt vil-windmill-sail-ag vil-windmill-sail-lod0-mg 1) +(def-art-elt vil-windmill-sail-ag vil-windmill-sail-lod0-jg 0) +(def-art-elt hide-door-a-ag hide-door-a-idle-ja 2) +(def-art-elt hide-door-a-ag hide-door-a-lod0-mg 1) +(def-art-elt hide-door-a-ag hide-door-a-lod0-jg 0) +(def-art-elt vehicle-explosion-ag vehicle-explosion-idle-ja 2) +(def-art-elt vehicle-explosion-ag vehicle-explosion-lod0-mg 1) +(def-art-elt vehicle-explosion-ag vehicle-explosion-lod0-jg 0) +(def-art-elt jak-pidax+0-ag daxter-pidax-car-crash-right-ja 6) +(def-art-elt jak-pidax+0-ag daxter-pidax-car-crash-left-ja 5) +(def-art-elt jak-pidax+0-ag daxter-pidax-car-crash-back-ja 4) +(def-art-elt jak-pidax+0-ag daxter-pidax-car-crash-front-ja 3) +(def-art-elt jak-pidax+0-ag daxter-pidax-car-up-down-ja 2) +(def-art-elt jak-pidax+0-ag daxter-pidax-car-turn-back-ja 1) +(def-art-elt jak-pidax+0-ag daxter-pidax-car-turn-front-ja 0) +(def-art-elt drill-elevator-doors-ag drill-elevator-doors-idle-ja 2) +(def-art-elt drill-elevator-doors-ag drill-elevator-doors-lod0-mg 1) +(def-art-elt drill-elevator-doors-ag drill-elevator-doors-lod0-jg 0) +(def-art-elt under-shoot-block-ag under-shoot-block-explode-idle-ja 5) +(def-art-elt under-shoot-block-ag under-shoot-block-explode-lod0-mg 4) +(def-art-elt under-shoot-block-ag under-shoot-block-explode-lod0-jg 3) +(def-art-elt under-shoot-block-ag under-shoot-block-idle-ja 2) +(def-art-elt under-shoot-block-ag under-shoot-block-lod0-mg 1) +(def-art-elt under-shoot-block-ag under-shoot-block-lod0-jg 0) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-dismount-land-ja 7) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-dismount-ja 6) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-double-pound-ja 5) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-punch-left-ja 4) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-head-butt-ja 3) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-idle0-ja 2) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-grab-ja 1) +(def-art-elt grunt-mech-anims+0-ag grunt-mech-lunge-ja 0) +(def-art-elt citizen-norm-ag citizen-norm-knocked-from-bike-ja 34) +(def-art-elt citizen-norm-ag citizen-norm-knocked-from-car-ja 33) +(def-art-elt citizen-norm-ag citizen-norm-get-in-car-ja 32) +(def-art-elt citizen-norm-ag citizen-norm-car-stance-ja 31) +(def-art-elt citizen-norm-ag citizen-norm-bike-stance-ja 30) +(def-art-elt citizen-norm-ag citizen-norm-tread-water-ja 29) +(def-art-elt citizen-norm-ag citizen-norm-walk-ja 12) +(def-art-elt citizen-norm-ag citizen-norm-shuffle-ja 11) +(def-art-elt citizen-norm-ag citizen-norm-out-of-breath-ja 10) +(def-art-elt citizen-norm-ag citizen-norm-idle-to-out-of-breath-ja 9) +(def-art-elt citizen-norm-ag citizen-norm-arms-crossed-ja 8) +(def-art-elt citizen-norm-ag citizen-norm-idle-to-arms-crossed-ja 7) +(def-art-elt citizen-norm-ag citizen-norm-arms-hips-ja 6) +(def-art-elt citizen-norm-ag citizen-norm-idle-to-arms-hips-ja 5) +(def-art-elt citizen-norm-ag citizen-norm-idle-ja 4) +(def-art-elt citizen-norm-ag citizen-norm-shadow-mg 3) +(def-art-elt citizen-norm-ag citizen-norm-lod2-mg 2) +(def-art-elt citizen-norm-ag citizen-norm-lod0-mg 1) +(def-art-elt citizen-norm-ag citizen-norm-lod0-jg 0) +(def-art-elt citizen-norm-ag citizen-norm-walk2-ja 13) +(def-art-elt citizen-norm-ag citizen-norm-run-ja 14) +(def-art-elt citizen-norm-ag citizen-norm-panic-run-ja 15) +(def-art-elt citizen-norm-ag citizen-norm-dive-forward-ja 16) +(def-art-elt citizen-norm-ag citizen-norm-hit-the-deck-ja 17) +(def-art-elt citizen-norm-ag citizen-norm-knocked-front-ja 18) +(def-art-elt citizen-norm-ag citizen-norm-knocked-front-land-ja 19) +(def-art-elt citizen-norm-ag citizen-norm-knocked-back-ja 20) +(def-art-elt citizen-norm-ag citizen-norm-knocked-back-land-ja 21) +(def-art-elt citizen-norm-ag citizen-norm-get-up-from-front-ja 22) +(def-art-elt citizen-norm-ag citizen-norm-get-up-from-back-ja 23) +(def-art-elt citizen-norm-ag citizen-norm-blue-hit-ja 24) +(def-art-elt citizen-norm-ag citizen-norm-blue-hit-land-death-ja 25) +(def-art-elt citizen-norm-ag citizen-norm-cover-head-start-ja 26) +(def-art-elt citizen-norm-ag citizen-norm-cover-head-loop-ja 27) +(def-art-elt citizen-norm-ag citizen-norm-cover-head-end-ja 28) +(def-art-elt wasp-ag wasp-explode-idle-ja 22) +(def-art-elt wasp-ag wasp-explode-lod0-mg 21) +(def-art-elt wasp-ag wasp-explode-lod0-jg 20) +(def-art-elt wasp-ag wasp-death-land-ja 19) +(def-art-elt wasp-ag wasp-death-instant-ja 18) +(def-art-elt wasp-ag wasp-death-right-fall-ja 17) +(def-art-elt wasp-ag wasp-death-right-ja 16) +(def-art-elt wasp-ag wasp-death-left-fall-ja 15) +(def-art-elt wasp-ag wasp-death-left-ja 14) +(def-art-elt wasp-ag wasp-knocked1-recover-ja 13) +(def-art-elt wasp-ag wasp-lod0-jg 0) +(def-art-elt wasp-ag wasp-lod0-mg 1) +(def-art-elt wasp-ag wasp-lod1-mg 2) +(def-art-elt wasp-ag wasp-shadow-mg 3) +(def-art-elt wasp-ag wasp-idle-ja 4) +(def-art-elt wasp-ag wasp-fly-right-ja 5) +(def-art-elt wasp-ag wasp-fly-left-ja 6) +(def-art-elt wasp-ag wasp-fly-forward-ja 7) +(def-art-elt wasp-ag wasp-fly-back-ja 8) +(def-art-elt wasp-ag wasp-shoot0-ja 9) +(def-art-elt wasp-ag wasp-knocked0-ja 10) +(def-art-elt wasp-ag wasp-knocked0-recover-ja 11) +(def-art-elt wasp-ag wasp-knocked1-ja 12) +(def-art-elt wren-ag wren-land-ja 8) +(def-art-elt wren-ag wren-glide-ja 7) +(def-art-elt wren-ag wren-fly-ja 6) +(def-art-elt wren-ag wren-takeoff-ja 5) +(def-art-elt wren-ag wren-peck-ja 4) +(def-art-elt wren-ag wren-hop-ja 3) +(def-art-elt wren-ag wren-idle-ja 2) +(def-art-elt wren-ag wren-lod0-mg 1) +(def-art-elt wren-ag wren-lod0-jg 0) +(def-art-elt gun-ag gun-idle-blue-ja 16) +(def-art-elt gun-ag gun-idle-yellow-ja 15) +(def-art-elt gun-ag gun-idle-dark-ja 14) +(def-art-elt gun-ag gun-red-cone-idle-ja 42) +(def-art-elt gun-ag gun-idle-red-ja 13) +(def-art-elt gun-ag gun-ammo-yellow-lod0-jg 0) +(def-art-elt gun-ag gun-ammo-yellow-lod0-mg 1) +(def-art-elt gun-ag gun-ammo-red-lod0-jg 2) +(def-art-elt gun-ag gun-ammo-red-lod0-mg 3) +(def-art-elt gun-ag gun-ammo-blue-lod0-jg 4) +(def-art-elt gun-ag gun-ammo-blue-lod0-mg 5) +(def-art-elt gun-ag gun-ammo-dark-lod0-jg 6) +(def-art-elt gun-ag gun-ammo-dark-lod0-mg 7) +(def-art-elt gun-ag gun-ammo-idle-ja 8) +(def-art-elt gun-ag gun-lod0-jg 9) +(def-art-elt gun-ag gun-lod0-mg 10) +(def-art-elt gun-ag gun-red-cone-lod0-jg 40) +(def-art-elt gun-ag gun-shadow-mg 11) +(def-art-elt gun-ag gun-red-cone-lod0-mg 41) +(def-art-elt gun-ag gun-idle-ja 12) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-smack-right-ja 75) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-smack-left-ja 74) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-smack-right-ja 73) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-smack-left-ja 72) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-dark-takeout-ja 71) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-blue-takeout-ja 70) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-yellow-takeout-ja 69) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-yellow-blue-ja 68) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-red-blue-ja 67) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-red-yellow-ja 66) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-red-dark-ja 65) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-dark-fire-ja 64) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-yellow-fire-ja 63) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-red-fire-ja 62) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-blue-idle-ja 61) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-yellow-idle-ja 60) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-dark-idle-ja 59) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-red-yellow-ja 28) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-red-dark-ja 27) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-dark-fire-ja 26) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-yellow-fire-ja 25) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-red-fire-ja 24) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-blue-idle-ja 23) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-yellow-idle-ja 22) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-dark-idle-ja 21) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-red-idle-ja 20) +(def-art-elt jak-pilot+0-ag daxter-pilot-eject-loop-ja 19) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-get-off-ja 18) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-smack-shock-ja 17) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-up-down-ja 16) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-up-down-ja 15) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-smack-back-ja 14) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-smack-front-ja 13) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-red-takeout-ja 0) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-get-off-ja 1) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-get-on-ja 2) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-get-on-ja 3) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-turn-front-ja 4) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-turn-back-ja 5) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-smack-front-ja 6) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-smack-back-ja 7) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-blue-fire-ja 8) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-blue-fire-single-ja 9) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-smack-shock-ja 10) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-turn-front-ja 11) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-turn-back-ja 12) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-red-blue-ja 29) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-yellow-blue-ja 30) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-yellow-takeout-ja 31) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-blue-takeout-ja 32) +(def-art-elt jak-pilot+0-ag daxter-pilot-gun-dark-takeout-ja 33) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-smack-left-ja 34) +(def-art-elt jak-pilot+0-ag daxter-pilot-bike-smack-right-ja 35) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-smack-left-ja 36) +(def-art-elt jak-pilot+0-ag daxter-pilot-car-smack-right-ja 37) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-red-takeout-ja 38) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-get-off-ja 39) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-get-on-ja 40) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-get-on-ja 41) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-turn-front-ja 42) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-turn-back-ja 43) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-smack-front-ja 44) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-smack-back-ja 45) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-blue-fire-ja 46) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-blue-fire-single-ja 47) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-smack-shock-ja 48) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-turn-front-ja 49) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-turn-back-ja 50) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-smack-front-ja 51) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-smack-back-ja 52) +(def-art-elt jak-pilot+0-ag jakb-pilot-car-up-down-ja 53) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-up-down-ja 54) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-smack-shock-ja 55) +(def-art-elt jak-pilot+0-ag jakb-pilot-bike-get-off-ja 56) +(def-art-elt jak-pilot+0-ag jakb-pilot-eject-loop-ja 57) +(def-art-elt jak-pilot+0-ag jakb-pilot-gun-red-idle-ja 58) +(def-art-elt under-laser-ag under-laser-idle-ja 2) +(def-art-elt under-laser-ag under-laser-lod0-mg 1) +(def-art-elt under-laser-ag under-laser-lod0-jg 0) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-c-idle-ja 14) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-c-lod0-mg 13) +(def-art-elt drill-barons-ship-ag drill-barons-ship-lod0-jg 0) +(def-art-elt drill-barons-ship-ag drill-barons-ship-lod0-mg 1) +(def-art-elt drill-barons-ship-ag drill-barons-ship-idle-ja 2) +(def-art-elt drill-barons-ship-ag drill-barons-ship-explode-lod0-jg 3) +(def-art-elt drill-barons-ship-ag drill-barons-ship-explode-lod0-mg 4) +(def-art-elt drill-barons-ship-ag drill-barons-ship-explode-idle-ja 5) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-lod0-jg 6) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-lod0-mg 7) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-idle-ja 8) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-b-lod0-jg 9) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-b-lod0-mg 10) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-b-idle-ja 11) +(def-art-elt drill-barons-ship-ag drill-barons-ship-turret-c-lod0-jg 12) +(def-art-elt under-buoy-chain-ag under-buoy-chain-idle-ja 2) +(def-art-elt under-buoy-chain-ag under-buoy-chain-lod0-mg 1) +(def-art-elt under-buoy-chain-ag under-buoy-chain-lod0-jg 0) +(def-art-elt under-plat-shoot-ag under-plat-shoot-idle-ja 3) +(def-art-elt under-plat-shoot-ag under-plat-shoot-lod1-mg 2) +(def-art-elt under-plat-shoot-ag under-plat-shoot-lod0-mg 1) +(def-art-elt under-plat-shoot-ag under-plat-shoot-lod0-jg 0) +(def-art-elt paddy-wagon-ag paddy-wagon-idle-ja 3) +(def-art-elt paddy-wagon-ag paddy-wagon-shadow-mg 2) +(def-art-elt paddy-wagon-ag paddy-wagon-lod0-mg 1) +(def-art-elt paddy-wagon-ag paddy-wagon-lod0-jg 0) +(def-art-elt drill-control-panel-ag drill-control-panel-a-break-ja 9) +(def-art-elt drill-control-panel-ag drill-control-panel-a-idle-ja 8) +(def-art-elt drill-control-panel-ag drill-control-panel-a-lod1-mg 7) +(def-art-elt drill-control-panel-ag drill-control-panel-a-lod0-mg 6) +(def-art-elt drill-control-panel-ag drill-control-panel-a-lod0-jg 5) +(def-art-elt drill-control-panel-ag drill-control-panel-break-ja 4) +(def-art-elt drill-control-panel-ag drill-control-panel-idle-ja 3) +(def-art-elt drill-control-panel-ag drill-control-panel-lod1-mg 2) +(def-art-elt drill-control-panel-ag drill-control-panel-lod0-mg 1) +(def-art-elt drill-control-panel-ag drill-control-panel-lod0-jg 0) +(def-art-elt market-basket-a-ag market-basket-a-idle-ja 2) +(def-art-elt market-basket-a-ag market-basket-a-lod0-mg 1) +(def-art-elt market-basket-a-ag market-basket-a-lod0-jg 0) +(def-art-elt prsn-hang-cell-ag prsn-hang-cell-idle-ja 2) +(def-art-elt prsn-hang-cell-ag prsn-hang-cell-lod0-mg 1) +(def-art-elt prsn-hang-cell-ag prsn-hang-cell-lod0-jg 0) +(def-art-elt race-bike-b-ag race-bike-b-idle-ja 4) +(def-art-elt race-bike-b-ag race-bike-b-shadow-mg 3) +(def-art-elt race-bike-b-ag race-bike-b-lod1-mg 2) +(def-art-elt race-bike-b-ag race-bike-b-lod0-mg 1) +(def-art-elt race-bike-b-ag race-bike-b-lod0-jg 0) +(def-art-elt precursor-ag precursor-idle-ja 2) +(def-art-elt precursor-ag precursor-lod0-mg 1) +(def-art-elt precursor-ag precursor-lod0-jg 0) +(def-art-elt jak-highres-prison-ag jak-highres-prison-idle-ja 3) +(def-art-elt jak-highres-prison-ag jak-highres-prison-shadow-mg 2) +(def-art-elt jak-highres-prison-ag jak-highres-prison-lod0-mg 1) +(def-art-elt jak-highres-prison-ag jak-highres-prison-lod0-jg 0) +(def-art-elt grunt-ag grunt-sew-scare-grunt-end-ja 57) +(def-art-elt grunt-ag grunt-jump-land-ja 47) +(def-art-elt grunt-ag grunt-jump-in-air-ja 46) +(def-art-elt grunt-ag grunt-jump-wind-up-ja 45) +(def-art-elt grunt-ag grunt-blue-land-ja 44) +(def-art-elt grunt-ag grunt-blue-hit5-ja 43) +(def-art-elt grunt-ag grunt-blue-hit4-ja 42) +(def-art-elt grunt-ag grunt-blue-hit3-ja 41) +(def-art-elt grunt-ag grunt-blue-hit2-ja 40) +(def-art-elt grunt-ag grunt-blue-hit1-ja 39) +(def-art-elt grunt-ag grunt-blue-hit0-ja 38) +(def-art-elt grunt-ag grunt-yellow-hit3-ja 37) +(def-art-elt grunt-ag grunt-yellow-hit2-ja 36) +(def-art-elt grunt-ag grunt-yellow-hit1-ja 35) +(def-art-elt grunt-ag grunt-yellow-hit0-ja 34) +(def-art-elt grunt-ag grunt-bite-ja 33) +(def-art-elt grunt-ag grunt-die-falling-ja 32) +(def-art-elt grunt-ag grunt-celebrate-finish-ja 31) +(def-art-elt grunt-ag grunt-celebrate-start-ja 30) +(def-art-elt grunt-ag grunt-explode-land0-ja 29) +(def-art-elt grunt-ag grunt-patrol1-ja 12) +(def-art-elt grunt-ag grunt-patrol0-ja 11) +(def-art-elt grunt-ag grunt-idle1-left-to-idle-ja 10) +(def-art-elt grunt-ag grunt-idle1-look-left-hold-ja 9) +(def-art-elt grunt-ag grunt-idle1-look-left-ja 8) +(def-art-elt grunt-ag grunt-idle1-look-right-hold-ja 7) +(def-art-elt grunt-ag grunt-idle1-look-right-ja 6) +(def-art-elt grunt-ag grunt-idle-ja 5) +(def-art-elt grunt-ag grunt-shadow-mg 4) +(def-art-elt grunt-ag grunt-lod2-mg 3) +(def-art-elt grunt-ag grunt-lod1-mg 2) +(def-art-elt grunt-ag grunt-lod0-mg 1) +(def-art-elt grunt-ag grunt-lod0-jg 0) +(def-art-elt grunt-ag grunt-notice-ja 13) +(def-art-elt grunt-ag grunt-charge0-ja 14) +(def-art-elt grunt-ag grunt-charge1-ja 15) +(def-art-elt grunt-ag grunt-charge2-ja 16) +(def-art-elt grunt-ag grunt-attack0-ja 17) +(def-art-elt grunt-ag grunt-attack1-ja 18) +(def-art-elt grunt-ag grunt-death-in-place-ja 19) +(def-art-elt grunt-ag grunt-taunt-ja 20) +(def-art-elt grunt-ag grunt-turn-ja 21) +(def-art-elt grunt-ag grunt-knocked0-ja 22) +(def-art-elt grunt-ag grunt-knocked-land0-ja 23) +(def-art-elt grunt-ag grunt-knocked1-ja 24) +(def-art-elt grunt-ag grunt-knocked-land1-ja 25) +(def-art-elt grunt-ag grunt-knocked2-ja 26) +(def-art-elt grunt-ag grunt-knocked-land2-ja 27) +(def-art-elt grunt-ag grunt-explode0-ja 28) +(def-art-elt water-anim-fortress-ag water-anim-fortress-idle-ja 2) +(def-art-elt water-anim-fortress-ag water-anim-fortress-exitb-pool-lod0-mg 1) +(def-art-elt water-anim-fortress-ag water-anim-fortress-exitb-pool-lod0-jg 0) +(def-art-elt drill-lift-ag drill-lift-idle-ja 3) +(def-art-elt drill-lift-ag drill-lift-lod1-mg 2) +(def-art-elt drill-lift-ag drill-lift-lod0-mg 1) +(def-art-elt drill-lift-ag drill-lift-lod0-jg 0) +(def-art-elt drill-turret-int-ag drill-turret-int-idle-ja 2) +(def-art-elt drill-turret-int-ag drill-turret-int-lod0-mg 1) +(def-art-elt drill-turret-int-ag drill-turret-int-lod0-jg 0) +(def-art-elt blocking-plane-ag blocking-plane-idle-ja 2) +(def-art-elt blocking-plane-ag blocking-plane-lod0-mg 1) +(def-art-elt blocking-plane-ag blocking-plane-lod0-jg 0) +(def-art-elt market-sack-a-ag market-sack-a-idle-ja 2) +(def-art-elt market-sack-a-ag market-sack-a-lod0-mg 1) +(def-art-elt market-sack-a-ag market-sack-a-lod0-jg 0) +(def-art-elt onin-highres-ag onin-highres-idle-wakeup-ja 5) +(def-art-elt onin-highres-ag onin-highres-idle-sleep-ja 4) +(def-art-elt onin-highres-ag onin-highres-idle-ja 3) +(def-art-elt onin-highres-ag onin-highres-shadow-mg 2) +(def-art-elt onin-highres-ag onin-highres-lod0-mg 1) +(def-art-elt onin-highres-ag onin-highres-lod0-jg 0) +(def-art-elt rift-ring-ag rift-ring-idle-ja 2) +(def-art-elt rift-ring-ag rift-ring-lod0-mg 1) +(def-art-elt rift-ring-ag rift-ring-lod0-jg 0) +(def-art-elt vil-break-support-ag vil-break-support-idle-ja 2) +(def-art-elt vil-break-support-ag vil-break-support-lod0-mg 1) +(def-art-elt vil-break-support-ag vil-break-support-lod0-jg 0) +(def-art-elt darkjak-highres-ag darkjak-highres-idle-ja 2) +(def-art-elt darkjak-highres-ag darkjak-highres-lod0-mg 1) +(def-art-elt darkjak-highres-ag darkjak-highres-lod0-jg 0) +(def-art-elt stad-d-force-field-ag stad-d-force-field-idle-ja 2) +(def-art-elt stad-d-force-field-ag stad-d-force-field-lod0-mg 1) +(def-art-elt stad-d-force-field-ag stad-d-force-field-lod0-jg 0) +(def-art-elt collectables-ag collectables-skill-idle-ja 22) +(def-art-elt collectables-ag collectables-skill-shadow-mg 21) +(def-art-elt collectables-ag collectables-skill-lod2-mg 20) +(def-art-elt collectables-ag collectables-skill-lod1-mg 19) +(def-art-elt collectables-ag collectables-skill-lod0-mg 18) +(def-art-elt collectables-ag collectables-skill-lod0-jg 17) +(def-art-elt collectables-ag collectables-generic-ripples-cycle-ja 16) +(def-art-elt collectables-ag collectables-generic-ripples-idle-ja 15) +(def-art-elt collectables-ag collectables-generic-ripples-lod0-mg 14) +(def-art-elt collectables-ag collectables-generic-ripples-lod0-jg 13) +(def-art-elt collectables-ag collectables-bomb-blast-lod0-jg 0) +(def-art-elt collectables-ag collectables-bomb-blast-lod0-mg 1) +(def-art-elt collectables-ag collectables-bomb-blast-idle-ja 2) +(def-art-elt collectables-ag collectables-health-lod0-jg 3) +(def-art-elt collectables-ag collectables-health-lod0-mg 4) +(def-art-elt collectables-ag collectables-health-idle-ja 5) +(def-art-elt collectables-ag collectables-gem-lod0-jg 6) +(def-art-elt collectables-ag collectables-gem-lod0-mg 7) +(def-art-elt collectables-ag collectables-gem-lod1-mg 8) +(def-art-elt collectables-ag collectables-gem-idle-ja 9) +(def-art-elt collectables-ag collectables-generic-blast-lod0-jg 10) +(def-art-elt collectables-ag collectables-generic-blast-lod0-mg 11) +(def-art-elt collectables-ag collectables-generic-blast-idle-ja 12) +(def-art-elt com-airlock-outer-ag com-airlock-outer-idle-ja 2) +(def-art-elt com-airlock-outer-ag com-airlock-outer-lod0-mg 1) +(def-art-elt com-airlock-outer-ag com-airlock-outer-lod0-jg 0) +(def-art-elt baron-statue-ag baron-statue-idle-ja 2) +(def-art-elt baron-statue-ag baron-statue-lod0-mg 1) +(def-art-elt baron-statue-ag baron-statue-lod0-jg 0) +(def-art-elt citizen-norm-rider-ag citizen-norm-rider-car-stance-ja 5) +(def-art-elt citizen-norm-rider-ag citizen-norm-rider-bike-stance-ja 4) +(def-art-elt citizen-norm-rider-ag citizen-norm-rider-idle-ja 3) +(def-art-elt citizen-norm-rider-ag citizen-norm-rider-lod2-mg 2) +(def-art-elt citizen-norm-rider-ag citizen-norm-rider-lod0-mg 1) +(def-art-elt citizen-norm-rider-ag citizen-norm-rider-lod0-jg 0) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-explode-idle-ja 25) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-explode-lod0-mg 24) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-explode-lod0-jg 23) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-death-land-ja 19) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-death-instant-ja 18) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-death-right-fall-ja 17) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-death-left-fall-ja 16) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-death-left-ja 15) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-death-right-ja 14) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-knocked1-recover-ja 13) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-lod0-jg 0) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-lod0-mg 1) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-lod1-mg 2) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-shadow-mg 3) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-idle-ja 4) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-fly-right-ja 5) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-fly-left-ja 6) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-fly-forward-ja 7) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-fly-back-ja 8) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-shoot0-ja 9) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-knocked0-ja 10) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-knocked0-recover-ja 11) +(def-art-elt crimson-guard-hover-ag crimson-guard-hover-knocked1-ja 12) +(def-art-elt rift-break-ring-ag rift-break-ring-idle-ja 2) +(def-art-elt rift-break-ring-ag rift-break-ring-lod0-mg 1) +(def-art-elt rift-break-ring-ag rift-break-ring-lod0-jg 0) +(def-art-elt jak-tube+0-ag jakb-tube-jump-land-ja 3) +(def-art-elt jak-tube+0-ag jakb-tube-turn-ja 2) +(def-art-elt jak-tube+0-ag daxter-tube-jump-land-ja 1) +(def-art-elt jak-tube+0-ag daxter-tube-turn-ja 0) +(def-art-elt sig-ag sig-chased-idle-loop-ja 62) +(def-art-elt sig-ag sig-chased-idle-start-ja 61) +(def-art-elt sig-ag sig-chased-shoot-jump-land0-ja 60) +(def-art-elt sig-ag sig-chased-shoot-jump0-ja 59) +(def-art-elt sig-ag sig-gun-fix-hit-to-look-a-ja 28) +(def-art-elt sig-ag sig-gun-fix-hit-ja 27) +(def-art-elt sig-ag sig-gun-fix-start-ja 26) +(def-art-elt sig-ag sig-die-in-place0-ja 25) +(def-art-elt sig-ag sig-hard-hit-land-ja 24) +(def-art-elt sig-ag sig-hard-hit0-ja 23) +(def-art-elt sig-ag sig-blue-hit-land-ja 22) +(def-art-elt sig-ag sig-blue-hit2-ja 21) +(def-art-elt sig-ag sig-blue-hit1-ja 20) +(def-art-elt sig-ag sig-blue-hit0-ja 19) +(def-art-elt sig-ag sig-yellow-hit-right0-ja 18) +(def-art-elt sig-ag sig-yellow-hit-left0-ja 17) +(def-art-elt sig-ag sig-yellow-hit-backward0-ja 16) +(def-art-elt sig-ag sig-yellow-hit-forward0-ja 15) +(def-art-elt sig-ag sig-blast-right-ja 14) +(def-art-elt sig-ag sig-blast-left-ja 13) +(def-art-elt sig-ag sig-lod0-jg 0) +(def-art-elt sig-ag sig-lod0-mg 1) +(def-art-elt sig-ag sig-shadow-mg 2) +(def-art-elt sig-ag sig-walk-ja 3) +(def-art-elt sig-ag sig-idle-right0-ja 4) +(def-art-elt sig-ag sig-idle-right0-to-ready0-ja 5) +(def-art-elt sig-ag sig-ready0-to-idle-right0-ja 6) +(def-art-elt sig-ag sig-ready0-ja 7) +(def-art-elt sig-ag sig-run-ja 8) +(def-art-elt sig-ag sig-whip-forward-ja 9) +(def-art-elt sig-ag sig-whip-left-ja 10) +(def-art-elt sig-ag sig-whip-right-ja 11) +(def-art-elt sig-ag sig-blast-forward-ja 12) +(def-art-elt sig-ag sig-gun-fix-look-a-ja 29) +(def-art-elt sig-ag sig-gun-fix-look-b-ja 30) +(def-art-elt sig-ag sig-gun-fix-shake-look-ja 31) +(def-art-elt sig-ag sig-gun-fix-look-to-stomp-ja 32) +(def-art-elt sig-ag sig-gun-fix-stomp-ja 33) +(def-art-elt sig-ag sig-gun-fix-stomp-to-hit-ja 34) +(def-art-elt sig-ag sig-charge-to-crouch-ja 35) +(def-art-elt sig-ag sig-charge0-ja 36) +(def-art-elt sig-ag sig-charge-to-ready-ja 37) +(def-art-elt sig-ag sig-charge-ready-ja 38) +(def-art-elt sig-ag sig-standing-jump-wind-up-ja 39) +(def-art-elt sig-ag sig-standing-jump-in-air-ja 40) +(def-art-elt sig-ag sig-standing-jump-land-ja 41) +(def-art-elt sig-ag sig-upper-base-low-ja 42) +(def-art-elt sig-ag sig-upper-low-to-high-ja 43) +(def-art-elt sig-ag sig-upper-base-high-ja 44) +(def-art-elt sig-ag sig-upper-shoot-ja 45) +(def-art-elt sig-ag sig-upper-high-to-low-ja 46) +(def-art-elt sig-ag sig-idle-crouch-ja 47) +(def-art-elt sig-ag sig-turn-left-start0-ja 48) +(def-art-elt sig-ag sig-turn-left50-end0-ja 49) +(def-art-elt sig-ag sig-turn-left100-end0-ja 50) +(def-art-elt sig-ag sig-turn-left150-end0-ja 51) +(def-art-elt sig-ag sig-turn-right-start0-ja 52) +(def-art-elt sig-ag sig-turn-right50-end0-ja 53) +(def-art-elt sig-ag sig-turn-right100-end0-ja 54) +(def-art-elt sig-ag sig-turn-right150-end0-ja 55) +(def-art-elt sig-ag sig-chased-run0-ja 56) +(def-art-elt sig-ag sig-chased-run-jump0-ja 57) +(def-art-elt sig-ag sig-chased-run-jump-land0-ja 58) +(def-art-elt ctywide-arrow-ag ctywide-arrow-idle-ja 2) +(def-art-elt ctywide-arrow-ag ctywide-arrow-lod0-mg 1) +(def-art-elt ctywide-arrow-ag ctywide-arrow-lod0-jg 0) +(def-art-elt burning-bush-ag burning-bush-idle-ja 2) +(def-art-elt burning-bush-ag burning-bush-lod0-mg 1) +(def-art-elt burning-bush-ag burning-bush-lod0-jg 0) +(def-art-elt security-wall-ag security-wall-idle-ja 2) +(def-art-elt security-wall-ag security-wall-lod0-mg 1) +(def-art-elt security-wall-ag security-wall-lod0-jg 0) +(def-art-elt carc-ag carc-idle-ja 5) +(def-art-elt carc-ag carc-shadow-mg 4) +(def-art-elt carc-ag carc-lod2-mg 3) +(def-art-elt carc-ag carc-lod1-mg 2) +(def-art-elt carc-ag carc-lod0-mg 1) +(def-art-elt carc-ag carc-lod0-jg 0) +(def-art-elt citizen-fat-ag citizen-fat-tread-water-ja 32) +(def-art-elt citizen-fat-ag citizen-fat-riding-stance-ja 31) +(def-art-elt citizen-fat-ag citizen-fat-cover-head-end-ja 30) +(def-art-elt citizen-fat-ag citizen-fat-cover-head-loop-ja 29) +(def-art-elt citizen-fat-ag citizen-fat-shuffle-ja 12) +(def-art-elt citizen-fat-ag citizen-fat-walk-ja 11) +(def-art-elt citizen-fat-ag citizen-fat-out-of-breath-ja 10) +(def-art-elt citizen-fat-ag citizen-fat-idle-to-out-of-breath-ja 9) +(def-art-elt citizen-fat-ag citizen-fat-arms-crossed-ja 8) +(def-art-elt citizen-fat-ag citizen-fat-idle-to-arms-crossed-ja 7) +(def-art-elt citizen-fat-ag citizen-fat-arms-hips-ja 6) +(def-art-elt citizen-fat-ag citizen-fat-idle-to-arms-hips-ja 5) +(def-art-elt citizen-fat-ag citizen-fat-idle-ja 4) +(def-art-elt citizen-fat-ag citizen-fat-shadow-mg 3) +(def-art-elt citizen-fat-ag citizen-fat-lod2-mg 2) +(def-art-elt citizen-fat-ag citizen-fat-lod0-mg 1) +(def-art-elt citizen-fat-ag citizen-fat-lod0-jg 0) +(def-art-elt citizen-fat-ag citizen-fat-walk2-ja 13) +(def-art-elt citizen-fat-ag citizen-fat-walk3-ja 14) +(def-art-elt citizen-fat-ag citizen-fat-run-ja 15) +(def-art-elt citizen-fat-ag citizen-fat-run2-ja 16) +(def-art-elt citizen-fat-ag citizen-fat-panic-run-ja 17) +(def-art-elt citizen-fat-ag citizen-fat-dive-forward-ja 18) +(def-art-elt citizen-fat-ag citizen-fat-hit-the-deck-ja 19) +(def-art-elt citizen-fat-ag citizen-fat-knocked-front-ja 20) +(def-art-elt citizen-fat-ag citizen-fat-knocked-front-land-ja 21) +(def-art-elt citizen-fat-ag citizen-fat-knocked-back-ja 22) +(def-art-elt citizen-fat-ag citizen-fat-knocked-back-land-ja 23) +(def-art-elt citizen-fat-ag citizen-fat-get-up-from-front-ja 24) +(def-art-elt citizen-fat-ag citizen-fat-get-up-from-back-ja 25) +(def-art-elt citizen-fat-ag citizen-fat-blue-hit-front-ja 26) +(def-art-elt citizen-fat-ag citizen-fat-blue-hit-back-ja 27) +(def-art-elt citizen-fat-ag citizen-fat-cover-head-start-ja 28) +(def-art-elt jak-pegasus+0-ag jakb-board-attack-pegasus-ja 1) +(def-art-elt jak-pegasus+0-ag daxter-board-attack-pegasus-ja 0) +(def-art-elt drill-metalhead-eggs-c-ag drill-metalhead-eggs-c-idle-ja 2) +(def-art-elt drill-metalhead-eggs-c-ag drill-metalhead-eggs-c-lod0-mg 1) +(def-art-elt drill-metalhead-eggs-c-ag drill-metalhead-eggs-c-lod0-jg 0) +(def-art-elt pegasus-ag pegasus-board-attack-pegasus-ja 20) +(def-art-elt pegasus-ag pegasus-fly-to-idle-ja 19) +(def-art-elt pegasus-ag pegasus-run-to-fly-ja 18) +(def-art-elt pegasus-ag pegasus-run-ja 17) +(def-art-elt pegasus-ag pegasus-fly-to-run-ja 16) +(def-art-elt pegasus-ag pegasus-die-flying-ja 15) +(def-art-elt pegasus-ag pegasus-flip-around-b-ja 14) +(def-art-elt pegasus-ag pegasus-flip-around-a-ja 13) +(def-art-elt pegasus-ag pegasus-lod0-jg 0) +(def-art-elt pegasus-ag pegasus-lod0-mg 1) +(def-art-elt pegasus-ag pegasus-lod1-mg 2) +(def-art-elt pegasus-ag pegasus-lod2-mg 3) +(def-art-elt pegasus-ag pegasus-shadow-mg 4) +(def-art-elt pegasus-ag pegasus-idle-ja 5) +(def-art-elt pegasus-ag pegasus-idle-takeoff-on-ground-ja 6) +(def-art-elt pegasus-ag pegasus-idle-takeoff-in-air-ja 7) +(def-art-elt pegasus-ag pegasus-fly-ja 8) +(def-art-elt pegasus-ag pegasus-fly-doublespeed-ja 9) +(def-art-elt pegasus-ag pegasus-fly-glide-ja 10) +(def-art-elt pegasus-ag pegasus-fly-turn-left-ja 11) +(def-art-elt pegasus-ag pegasus-fly-turn-right-ja 12) +(def-art-elt under-warp-ag under-warp-none-ja 3) +(def-art-elt under-warp-ag under-warp-idle-ja 2) +(def-art-elt under-warp-ag under-warp-lod0-mg 1) +(def-art-elt under-warp-ag under-warp-lod0-jg 0) +(def-art-elt jak-board+0-ag jakb-board-hit-get-off-ja 81) +(def-art-elt jak-board+0-ag jakb-board-kickflip-c-ja 80) +(def-art-elt jak-board+0-ag jakb-board-kickflip-b-ja 79) +(def-art-elt jak-board+0-ag jakb-board-get-off-pre-ja 78) +(def-art-elt jak-board+0-ag jakb-board-get-on-land-ja 77) +(def-art-elt jak-board+0-ag jakb-board-hit-elec-ja 76) +(def-art-elt jak-board+0-ag jakb-board-jump-kickoff-ja 75) +(def-art-elt jak-board+0-ag jakb-board-noseflip-ja 74) +(def-art-elt jak-board+0-ag jakb-board-nosegrab-end-ja 73) +(def-art-elt jak-board+0-ag jakb-board-nosegrab-loop-ja 72) +(def-art-elt jak-board+0-ag jakb-board-method-end-ja 71) +(def-art-elt jak-board+0-ag jakb-board-method-loop-ja 70) +(def-art-elt jak-board+0-ag jakb-board-flip-backward-loop-ja 69) +(def-art-elt jak-board+0-ag jakb-board-flip-forward-loop-ja 68) +(def-art-elt jak-board+0-ag jakb-board-flip-backward-ja 67) +(def-art-elt jak-board+0-ag jakb-board-air-turn-ja 66) +(def-art-elt jak-board+0-ag jakb-board-spin-ja 65) +(def-art-elt jak-board+0-ag jakb-board-kickflip-a-ja 64) +(def-art-elt jak-board+0-ag jakb-board-method-ja 63) +(def-art-elt jak-board+0-ag jakb-board-nosegrab-ja 62) +(def-art-elt jak-board+0-ag jakb-board-grenade-ja 61) +(def-art-elt jak-board+0-ag jakb-board-get-off-ja 60) +(def-art-elt jak-board+0-ag jakb-board-get-on-ja 59) +(def-art-elt jak-board+0-ag daxter-board-method-loop-ja 28) +(def-art-elt jak-board+0-ag daxter-board-flip-backward-loop-ja 27) +(def-art-elt jak-board+0-ag daxter-board-flip-forward-loop-ja 26) +(def-art-elt jak-board+0-ag daxter-board-flip-backward-ja 25) +(def-art-elt jak-board+0-ag daxter-board-air-turn-ja 24) +(def-art-elt jak-board+0-ag daxter-board-spin-ja 23) +(def-art-elt jak-board+0-ag daxter-board-kickflip-a-ja 22) +(def-art-elt jak-board+0-ag daxter-board-method-ja 21) +(def-art-elt jak-board+0-ag daxter-board-nosegrab-ja 20) +(def-art-elt jak-board+0-ag daxter-board-grenade-ja 19) +(def-art-elt jak-board+0-ag daxter-board-get-off-ja 18) +(def-art-elt jak-board+0-ag daxter-board-get-on-ja 17) +(def-art-elt jak-board+0-ag daxter-board-ride-turn-left-ja 16) +(def-art-elt jak-board+0-ag daxter-board-ride-turn-right-ja 15) +(def-art-elt jak-board+0-ag daxter-board-ride-turn-front-ja 14) +(def-art-elt jak-board+0-ag daxter-board-ride-turn-back-ja 13) +(def-art-elt jak-board+0-ag daxter-board-stance-ja 0) +(def-art-elt jak-board+0-ag daxter-board-duck-turn-ja 1) +(def-art-elt jak-board+0-ag daxter-board-turn-ja 2) +(def-art-elt jak-board+0-ag daxter-board-jump-kick-ja 3) +(def-art-elt jak-board+0-ag daxter-board-jump-ja 4) +(def-art-elt jak-board+0-ag daxter-board-jump-loop-ja 5) +(def-art-elt jak-board+0-ag daxter-board-hit-ja 6) +(def-art-elt jak-board+0-ag daxter-board-flip-forward-ja 7) +(def-art-elt jak-board+0-ag daxter-board-turn-left-ja 8) +(def-art-elt jak-board+0-ag daxter-board-turn-right-ja 9) +(def-art-elt jak-board+0-ag daxter-board-turn-up-ja 10) +(def-art-elt jak-board+0-ag daxter-board-turn-down-ja 11) +(def-art-elt jak-board+0-ag daxter-board-hit-forward-ja 12) +(def-art-elt jak-board+0-ag daxter-board-method-end-ja 29) +(def-art-elt jak-board+0-ag daxter-board-nosegrab-loop-ja 30) +(def-art-elt jak-board+0-ag daxter-board-nosegrab-end-ja 31) +(def-art-elt jak-board+0-ag daxter-board-noseflip-ja 32) +(def-art-elt jak-board+0-ag daxter-board-jump-kickoff-ja 33) +(def-art-elt jak-board+0-ag daxter-board-hit-elec-ja 34) +(def-art-elt jak-board+0-ag daxter-board-get-on-land-ja 35) +(def-art-elt jak-board+0-ag daxter-board-get-off-pre-ja 36) +(def-art-elt jak-board+0-ag daxter-board-kickflip-b-ja 37) +(def-art-elt jak-board+0-ag daxter-board-kickflip-c-ja 38) +(def-art-elt jak-board+0-ag daxter-board-hit-get-off-ja 39) +(def-art-elt jak-board+0-ag daxter-board-spin-cw-ja 40) +(def-art-elt jak-board+0-ag daxter-board-spin-ccw-ja 41) +(def-art-elt jak-board+0-ag jakb-board-stance-ja 42) +(def-art-elt jak-board+0-ag jakb-board-duck-turn-ja 43) +(def-art-elt jak-board+0-ag jakb-board-turn-ja 44) +(def-art-elt jak-board+0-ag jakb-board-jump-kick-ja 45) +(def-art-elt jak-board+0-ag jakb-board-jump-ja 46) +(def-art-elt jak-board+0-ag jakb-board-jump-loop-ja 47) +(def-art-elt jak-board+0-ag jakb-board-hit-ja 48) +(def-art-elt jak-board+0-ag jakb-board-flip-forward-ja 49) +(def-art-elt jak-board+0-ag jakb-board-turn-left-ja 50) +(def-art-elt jak-board+0-ag jakb-board-turn-right-ja 51) +(def-art-elt jak-board+0-ag jakb-board-turn-up-ja 52) +(def-art-elt jak-board+0-ag jakb-board-turn-down-ja 53) +(def-art-elt jak-board+0-ag jakb-board-hit-forward-ja 54) +(def-art-elt jak-board+0-ag jakb-board-ride-turn-back-ja 55) +(def-art-elt jak-board+0-ag jakb-board-ride-turn-front-ja 56) +(def-art-elt jak-board+0-ag jakb-board-ride-turn-right-ja 57) +(def-art-elt jak-board+0-ag jakb-board-ride-turn-left-ja 58) +(def-art-elt race-bike-c-ag race-bike-c-idle-ja 4) +(def-art-elt race-bike-c-ag race-bike-c-shadow-mg 3) +(def-art-elt race-bike-c-ag race-bike-c-lod1-mg 2) +(def-art-elt race-bike-c-ag race-bike-c-lod0-mg 1) +(def-art-elt race-bike-c-ag race-bike-c-lod0-jg 0) +(def-art-elt drill-wall-ag drill-wall-1-end-ja 3) +(def-art-elt drill-wall-ag drill-wall-1-idle-ja 2) +(def-art-elt drill-wall-ag drill-wall-lod0-mg 1) +(def-art-elt drill-wall-ag drill-wall-lod0-jg 0) +(def-art-elt searchlight-ag searchlight-idle-ja 2) +(def-art-elt searchlight-ag searchlight-lod0-mg 1) +(def-art-elt searchlight-ag searchlight-lod0-jg 0) +(def-art-elt under-buoy-plat-ag under-buoy-plat-idle-ja 2) +(def-art-elt under-buoy-plat-ag under-buoy-plat-lod0-mg 1) +(def-art-elt under-buoy-plat-ag under-buoy-plat-lod0-jg 0) +(def-art-elt water-anim-under-ag water-anim-under-idle-ja 6) +(def-art-elt water-anim-under-ag water-anim-under-fillup-lod0-mg 5) +(def-art-elt water-anim-under-ag water-anim-under-fillup-lod0-jg 4) +(def-art-elt water-anim-under-ag water-anim-under-drainout-lod0-mg 3) +(def-art-elt water-anim-under-ag water-anim-under-drainout-lod0-jg 2) +(def-art-elt water-anim-under-ag water-anim-under-pool-lod0-mg 1) +(def-art-elt water-anim-under-ag water-anim-under-pool-lod0-jg 0) +(def-art-elt babak-ag babak-jump-ja 21) +(def-art-elt babak-ag babak-swim-ilde-ja 20) +(def-art-elt babak-ag babak-swim-ja 19) +(def-art-elt babak-ag babak-idle-patty-wagon-ja 18) +(def-art-elt babak-ag babak-fall-out-patty-wagon-ja 17) +(def-art-elt babak-ag babak-jump-on-bike-ja 16) +(def-art-elt babak-ag babak-idle-hair-ja 15) +(def-art-elt babak-ag babak-idle-bike-forward-sides-ja 14) +(def-art-elt babak-ag babak-idle-bike-sides-ja 13) +(def-art-elt babak-ag babak-lod0-jg 0) +(def-art-elt babak-ag babak-lod0-mg 1) +(def-art-elt babak-ag babak-shadow-mg 2) +(def-art-elt babak-ag babak-idle-ja 3) +(def-art-elt babak-ag babak-idle-cower-ja 4) +(def-art-elt babak-ag babak-run-ja 5) +(def-art-elt babak-ag babak-knocked-ja 6) +(def-art-elt babak-ag babak-knocked-land-ja 7) +(def-art-elt babak-ag babak-jump-in-car-ja 8) +(def-art-elt babak-ag babak-idle-car-back-sides-ja 9) +(def-art-elt babak-ag babak-idle-car-sides-ja 10) +(def-art-elt babak-ag babak-idle-car-forward-sides-ja 11) +(def-art-elt babak-ag babak-idle-bike-back-sides-ja 12) +(def-art-elt drill-moving-staircase-ag drill-moving-staircase-idle-ja 2) +(def-art-elt drill-moving-staircase-ag drill-moving-staircase-lod0-mg 1) +(def-art-elt drill-moving-staircase-ag drill-moving-staircase-lod0-jg 0) +(def-art-elt flitter-ag flitter-blue-hit0-ja 23) +(def-art-elt flitter-ag flitter-knocked-land-upright-ja 22) +(def-art-elt flitter-ag flitter-knocked-land0-ja 21) +(def-art-elt flitter-ag flitter-knocked0-ja 20) +(def-art-elt flitter-ag flitter-die-in-place-ja 19) +(def-art-elt flitter-ag flitter-die-falling-ja 18) +(def-art-elt flitter-ag flitter-attack-high-ja 17) +(def-art-elt flitter-ag flitter-attack-ja 16) +(def-art-elt flitter-ag flitter-turn-ja 15) +(def-art-elt flitter-ag flitter-move-ja 14) +(def-art-elt flitter-ag flitter-walk-ja 13) +(def-art-elt flitter-ag flitter-lod0-jg 0) +(def-art-elt flitter-ag flitter-lod0-mg 1) +(def-art-elt flitter-ag flitter-lod1-mg 2) +(def-art-elt flitter-ag flitter-lod2-mg 3) +(def-art-elt flitter-ag flitter-shadow-mg 4) +(def-art-elt flitter-ag flitter-idle-ja 5) +(def-art-elt flitter-ag flitter-idle-look-left-ja 6) +(def-art-elt flitter-ag flitter-idle-look-left-hold-ja 7) +(def-art-elt flitter-ag flitter-idle-look-right-ja 8) +(def-art-elt flitter-ag flitter-idle-look-right-hold-ja 9) +(def-art-elt flitter-ag flitter-ambush-jump-ja 10) +(def-art-elt flitter-ag flitter-ambush-land-ja 11) +(def-art-elt flitter-ag flitter-notice-ja 12) +(def-art-elt prsn-cell-door-ag prsn-cell-door-idle-ja 2) +(def-art-elt prsn-cell-door-ag prsn-cell-door-lod0-mg 1) +(def-art-elt prsn-cell-door-ag prsn-cell-door-lod0-jg 0) +(def-art-elt drill-turret-ext-ag drill-turret-ext-explode-idle-ja 6) +(def-art-elt drill-turret-ext-ag drill-turret-ext-explode-lod0-mg 5) +(def-art-elt drill-turret-ext-ag drill-turret-ext-explode-lod0-jg 4) +(def-art-elt drill-turret-ext-ag drill-turret-ext-idle-ja 2) +(def-art-elt drill-turret-ext-ag drill-turret-ext-lod0-mg 1) +(def-art-elt drill-turret-ext-ag drill-turret-ext-lod0-jg 0) +(def-art-elt barons-ship-lores-ag barons-ship-lores-idle-ja 2) +(def-art-elt barons-ship-lores-ag barons-ship-lores-lod0-mg 1) +(def-art-elt barons-ship-lores-ag barons-ship-lores-lod0-jg 0) +(def-art-elt board-ag board-board-idle-ja 5) +(def-art-elt board-ag board-close-ja 4) +(def-art-elt board-ag board-open-ja 3) +(def-art-elt board-ag board-shadow-mg 2) +(def-art-elt board-ag board-lod0-mg 1) +(def-art-elt board-ag board-lod0-jg 0) +(def-art-elt lurker-pipe-lid-ag lurker-pipe-lid-idle-ja 2) +(def-art-elt lurker-pipe-lid-ag lurker-pipe-lid-lod0-mg 1) +(def-art-elt lurker-pipe-lid-ag lurker-pipe-lid-lod0-jg 0) +(def-art-elt under-break-floor-ag under-break-floor-explode-idle-ja 5) +(def-art-elt under-break-floor-ag under-break-floor-explode-lod0-mg 4) +(def-art-elt under-break-floor-ag under-break-floor-explode-lod0-jg 3) +(def-art-elt under-break-floor-ag under-break-floor-idle-ja 2) +(def-art-elt under-break-floor-ag under-break-floor-lod0-mg 1) +(def-art-elt under-break-floor-ag under-break-floor-lod0-jg 0) +(def-art-elt hud-ring-ag hud-ring-part-idle-ja 5) +(def-art-elt hud-ring-ag hud-ring-part-lod0-mg 4) +(def-art-elt hud-ring-ag hud-ring-part-lod0-jg 3) +(def-art-elt hud-ring-ag hud-ring-idle-ja 2) +(def-art-elt hud-ring-ag hud-ring-lod0-mg 1) +(def-art-elt hud-ring-ag hud-ring-lod0-jg 0) +(def-art-elt spyder-ag spyder-jump-land-ja 23) +(def-art-elt spyder-ag spyder-jump-in-air-ja 22) +(def-art-elt spyder-ag spyder-jump-wind-up-ja 21) +(def-art-elt spyder-ag spyder-hit-land-ja 20) +(def-art-elt spyder-ag spyder-blue-hit2-ja 19) +(def-art-elt spyder-ag spyder-blue-hit1-ja 18) +(def-art-elt spyder-ag spyder-blue-hit0-ja 17) +(def-art-elt spyder-ag spyder-hit-hard-ja 16) +(def-art-elt spyder-ag spyder-hit-ja 15) +(def-art-elt spyder-ag spyder-jump-ja 14) +(def-art-elt spyder-ag spyder-die-knocked-ja 13) +(def-art-elt spyder-ag spyder-lod0-jg 0) +(def-art-elt spyder-ag spyder-lod0-mg 1) +(def-art-elt spyder-ag spyder-lod1-mg 2) +(def-art-elt spyder-ag spyder-shadow-mg 3) +(def-art-elt spyder-ag spyder-idle-ja 4) +(def-art-elt spyder-ag spyder-patrol0-ja 5) +(def-art-elt spyder-ag spyder-notice-ja 6) +(def-art-elt spyder-ag spyder-victory-ja 7) +(def-art-elt spyder-ag spyder-run0-ja 8) +(def-art-elt spyder-ag spyder-shoot-low-ja 9) +(def-art-elt spyder-ag spyder-shoot-high-ja 10) +(def-art-elt spyder-ag spyder-falling-death-ja 11) +(def-art-elt spyder-ag spyder-death-ja 12) +(def-art-elt daxter-ag daxter-wall-hide-body-ja 84) +(def-art-elt daxter-ag daxter-wall-hide-head-right-ja 83) +(def-art-elt daxter-ag daxter-wall-hide-head-left-ja 82) +(def-art-elt daxter-ag daxter-wall-hide-head-ja 81) +(def-art-elt daxter-ag daxter-wall-hide-scared-return-ja 80) +(def-art-elt daxter-ag daxter-wall-hide-scared-loop-ja 79) +(def-art-elt daxter-ag daxter-wall-hide-scared-ja 78) +(def-art-elt daxter-ag daxter-wall-hide-ja 77) +(def-art-elt daxter-ag daxter-slide-left-ja 76) +(def-art-elt daxter-ag daxter-slide-right-ja 75) +(def-art-elt daxter-ag daxter-shocked-ja 70) +(def-art-elt daxter-ag daxter-smack-surface-end-ja 69) +(def-art-elt daxter-ag daxter-smack-surface-ja 68) +(def-art-elt daxter-ag daxter-death-painful-land-ja 67) +(def-art-elt daxter-ag daxter-deatha-ja 66) +(def-art-elt daxter-ag daxter-hit-up-ja 65) +(def-art-elt daxter-ag daxter-hit-from-back-ja 64) +(def-art-elt daxter-ag daxter-duck-high-jump-ja 27) +(def-art-elt daxter-ag daxter-jump-forward-ja 26) +(def-art-elt daxter-ag daxter-jump-short-land-ja 25) +(def-art-elt daxter-ag daxter-jump-loop-ja 24) +(def-art-elt daxter-ag daxter-painful-land-end-ja 23) +(def-art-elt daxter-ag daxter-painful-land-ja 22) +(def-art-elt daxter-ag daxter-jump-land-ja 21) +(def-art-elt daxter-ag daxter-jump-ja 20) +(def-art-elt daxter-ag daxter-turn-around-ja 19) +(def-art-elt daxter-ag daxter-duck-walk-ja 18) +(def-art-elt daxter-ag daxter-duck-stance-ja 17) +(def-art-elt daxter-ag daxter-stance-to-duck-ja 16) +(def-art-elt daxter-ag daxter-run-squash-weak-ja 15) +(def-art-elt daxter-ag daxter-run-squash-ja 14) +(def-art-elt daxter-ag daxter-walk-down-ja 13) +(def-art-elt daxter-ag daxter-launch-jump-loop-ja 29) +(def-art-elt daxter-ag daxter-fuel-cell-victory-9-ja 127) +(def-art-elt daxter-ag daxter-lod0-jg 0) +(def-art-elt daxter-ag daxter-roll-flip-ja 59) +(def-art-elt daxter-ag daxter-lod0-mg 1) +(def-art-elt daxter-ag daxter-roll-flip-land-ja 60) +(def-art-elt daxter-ag daxter-lod1-mg 2) +(def-art-elt daxter-ag daxter-trip-ja 61) +(def-art-elt daxter-ag daxter-shadow-mg 3) +(def-art-elt daxter-ag daxter-hit-elec-ja 62) +(def-art-elt daxter-ag daxter-run-to-stance-ja 4) +(def-art-elt daxter-ag daxter-hit-from-front-ja 63) +(def-art-elt daxter-ag daxter-run-to-stance-loop-ja 5) +(def-art-elt daxter-ag daxter-stance-loop-ja 6) +(def-art-elt daxter-ag daxter-run-to-stance-fast-ja 7) +(def-art-elt daxter-ag daxter-run-ja 8) +(def-art-elt daxter-ag daxter-run-up-ja 9) +(def-art-elt daxter-ag daxter-run-down-ja 10) +(def-art-elt daxter-ag daxter-walk-ja 11) +(def-art-elt daxter-ag daxter-walk-up-ja 12) +(def-art-elt daxter-ag daxter-edge-grab-stance0-ja 30) +(def-art-elt daxter-ag daxter-edge-grab-stance1-ja 31) +(def-art-elt daxter-ag daxter-falling-to-edge-grab-ja 33) +(def-art-elt daxter-ag daxter-edge-grab-to-jump-ja 36) +(def-art-elt daxter-ag daxter-edge-grab-off-ja 37) +(def-art-elt daxter-ag daxter-attack-from-stance-ja 38) +(def-art-elt daxter-ag daxter-attack-from-stance-end-ja 39) +(def-art-elt daxter-ag daxter-attack-from-stance-alt-end-ja 40) +(def-art-elt daxter-ag daxter-attack-from-stance-run-end-ja 41) +(def-art-elt daxter-ag daxter-attack-from-stance-run-alt-end-ja 42) +(def-art-elt daxter-ag daxter-attack-from-jump-ja 43) +(def-art-elt daxter-ag daxter-attack-from-jump-loop-ja 44) +(def-art-elt daxter-ag daxter-attack-from-jump-end-ja 45) +(def-art-elt daxter-ag daxter-attack-punch-ja 46) +(def-art-elt daxter-ag daxter-attack-punch-end-ja 47) +(def-art-elt daxter-ag daxter-attack-punch-alt-end-ja 48) +(def-art-elt daxter-ag daxter-attack-uppercut-ja 49) +(def-art-elt daxter-ag daxter-flop-down-ja 50) +(def-art-elt daxter-ag daxter-flop-down-loop-ja 51) +(def-art-elt daxter-ag daxter-flop-down-land-ja 52) +(def-art-elt daxter-ag daxter-moving-flop-down-ja 53) +(def-art-elt daxter-ag daxter-moving-flop-down-loop-ja 54) +(def-art-elt daxter-ag daxter-flop-jump-ja 56) +(def-art-elt daxter-ag daxter-duck-roll-ja 57) +(def-art-elt daxter-ag daxter-duck-roll-end-ja 58) +(def-art-elt tess-highres-ag tess-highres-idle-ja 3) +(def-art-elt tess-highres-ag tess-highres-shadow-mg 2) +(def-art-elt tess-highres-ag tess-highres-lod0-mg 1) +(def-art-elt tess-highres-ag tess-highres-lod0-jg 0) +(def-art-elt jakb-ag jakb-wall-hide-body-ja 88) +(def-art-elt jakb-ag jakb-wall-hide-head-right-ja 87) +(def-art-elt jakb-ag jakb-wall-hide-head-left-ja 86) +(def-art-elt jakb-ag jakb-wall-hide-head-ja 85) +(def-art-elt jakb-ag jakb-wall-hide-scared-return-ja 84) +(def-art-elt jakb-ag jakb-wall-hide-scared-loop-ja 83) +(def-art-elt jakb-ag jakb-wall-hide-scared-ja 82) +(def-art-elt jakb-ag jakb-wall-hide-ja 81) +(def-art-elt jakb-ag jakb-slide-left-ja 80) +(def-art-elt jakb-ag jakb-slide-right-ja 79) +(def-art-elt jakb-ag jakb-shocked-ja 73) +(def-art-elt jakb-ag jakb-smack-surface-end-ja 72) +(def-art-elt jakb-ag jakb-smack-surface-ja 71) +(def-art-elt jakb-ag jakb-death-painful-land-ja 70) +(def-art-elt jakb-ag jakb-deatha-ja 69) +(def-art-elt jakb-ag jakb-hit-up-ja 68) +(def-art-elt jakb-ag jakb-hit-from-back-ja 67) +(def-art-elt jakb-ag jakb-hit-from-front-ja 66) +(def-art-elt jakb-ag jakb-hit-from-front-alt1-ja 65) +(def-art-elt jakb-ag jakb-hit-elec-ja 64) +(def-art-elt jakb-ag jakb-trip-ja 63) +(def-art-elt jakb-ag jakb-jump-short-land-ja 28) +(def-art-elt jakb-ag jakb-jump-loop-ja 27) +(def-art-elt jakb-ag jakb-painful-land-end-ja 26) +(def-art-elt jakb-ag jakb-painful-land-ja 25) +(def-art-elt jakb-ag jakb-jump-land-ja 24) +(def-art-elt jakb-ag jakb-jump-ja 23) +(def-art-elt jakb-ag jakb-turn-around-ja 22) +(def-art-elt jakb-ag jakb-duck-walk-ja 21) +(def-art-elt jakb-ag jakb-duck-stance-ja 20) +(def-art-elt jakb-ag jakb-stance-to-duck-ja 19) +(def-art-elt jakb-ag jakb-run-squash-weak-ja 18) +(def-art-elt jakb-ag jakb-run-squash-ja 17) +(def-art-elt jakb-ag jakb-walk-left-ja 16) +(def-art-elt jakb-ag jakb-walk-right-ja 15) +(def-art-elt jakb-ag jakb-walk-down-ja 14) +(def-art-elt jakb-ag jakb-walk-up-ja 13) +(def-art-elt jakb-ag jakb-lod0-jg 0) +(def-art-elt jakb-ag jakb-duck-roll-ja 59) +(def-art-elt jakb-ag jakb-lod0-mg 1) +(def-art-elt jakb-ag jakb-duck-roll-end-ja 60) +(def-art-elt jakb-ag jakb-shadow-mg 2) +(def-art-elt jakb-ag jakb-roll-flip-ja 61) +(def-art-elt jakb-ag jakb-fuel-cell-victory-9-ja 130) +(def-art-elt jakb-ag jakb-run-to-stance-ja 3) +(def-art-elt jakb-ag jakb-roll-flip-land-ja 62) +(def-art-elt jakb-ag jakb-run-to-stance-loop-ja 4) +(def-art-elt jakb-ag jakb-stance-loop-ja 5) +(def-art-elt jakb-ag jakb-run-to-stance-fast-ja 6) +(def-art-elt jakb-ag jakb-run-ja 7) +(def-art-elt jakb-ag jakb-run-up-ja 8) +(def-art-elt jakb-ag jakb-run-down-ja 9) +(def-art-elt jakb-ag jakb-run-right-ja 10) +(def-art-elt jakb-ag jakb-run-left-ja 11) +(def-art-elt jakb-ag jakb-walk-ja 12) +(def-art-elt jakb-ag jakb-jump-forward-ja 29) +(def-art-elt jakb-ag jakb-duck-high-jump-ja 30) +(def-art-elt jakb-ag jakb-launch-jump-loop-ja 32) +(def-art-elt jakb-ag jakb-edge-grab-stance0-ja 33) +(def-art-elt jakb-ag jakb-edge-grab-stance1-ja 34) +(def-art-elt jakb-ag jakb-falling-to-edge-grab-ja 35) +(def-art-elt jakb-ag jakb-edge-grab-to-jump-ja 38) +(def-art-elt jakb-ag jakb-edge-grab-off-ja 39) +(def-art-elt jakb-ag jakb-attack-from-stance-ja 40) +(def-art-elt jakb-ag jakb-attack-from-stance-end-ja 41) +(def-art-elt jakb-ag jakb-attack-from-stance-alt-end-ja 42) +(def-art-elt jakb-ag jakb-attack-from-stance-run-end-ja 43) +(def-art-elt jakb-ag jakb-attack-from-stance-run-alt-end-ja 44) +(def-art-elt jakb-ag jakb-attack-from-jump-ja 45) +(def-art-elt jakb-ag jakb-attack-from-jump-loop-ja 46) +(def-art-elt jakb-ag jakb-attack-from-jump-end-ja 47) +(def-art-elt jakb-ag jakb-attack-punch-ja 48) +(def-art-elt jakb-ag jakb-attack-punch-end-ja 49) +(def-art-elt jakb-ag jakb-attack-punch-alt-end-ja 50) +(def-art-elt jakb-ag jakb-attack-uppercut-ja 51) +(def-art-elt jakb-ag jakb-flop-down-ja 52) +(def-art-elt jakb-ag jakb-flop-down-loop-ja 53) +(def-art-elt jakb-ag jakb-flop-down-land-ja 54) +(def-art-elt jakb-ag jakb-moving-flop-down-ja 55) +(def-art-elt jakb-ag jakb-moving-flop-down-loop-ja 56) +(def-art-elt jakb-ag jakb-flop-jump-ja 58) +(def-art-elt stadium-barrier-ag stadium-barrier-idle-ja 2) +(def-art-elt stadium-barrier-ag stadium-barrier-lod0-mg 1) +(def-art-elt stadium-barrier-ag stadium-barrier-lod0-jg 0) +(def-art-elt bikeb-ag bikeb-idle-ja 5) +(def-art-elt bikeb-ag bikeb-shadow-mg 4) +(def-art-elt bikeb-ag bikeb-lod2-mg 3) +(def-art-elt bikeb-ag bikeb-lod1-mg 2) +(def-art-elt bikeb-ag bikeb-lod0-mg 1) +(def-art-elt bikeb-ag bikeb-lod0-jg 0) +(def-art-elt prsn-chair-shackle-ag prsn-chair-shackle-idle-ja 2) +(def-art-elt prsn-chair-shackle-ag prsn-chair-shackle-lod0-mg 1) +(def-art-elt prsn-chair-shackle-ag prsn-chair-shackle-lod0-jg 0) +(def-art-elt predator-ag predator-blue-hit-land-ja 23) +(def-art-elt predator-ag predator-blue-hit-back-ja 22) +(def-art-elt predator-ag predator-blue-hit-front-ja 21) +(def-art-elt predator-ag predator-knocked-big-death-ja 20) +(def-art-elt predator-ag predator-knocked-big-land-ja 19) +(def-art-elt predator-ag predator-knocked-big-ja 18) +(def-art-elt predator-ag predator-jump-attack-land-ja 17) +(def-art-elt predator-ag predator-jump-attack-ja 16) +(def-art-elt predator-ag predator-knocked-death-land-ja 15) +(def-art-elt predator-ag predator-knocked-death-ja 14) +(def-art-elt predator-ag predator-knocked-land-ja 13) +(def-art-elt predator-ag predator-lod0-jg 0) +(def-art-elt predator-ag predator-lod0-mg 1) +(def-art-elt predator-ag predator-lod1-mg 2) +(def-art-elt predator-ag predator-lod2-mg 3) +(def-art-elt predator-ag predator-shadow-mg 4) +(def-art-elt predator-ag predator-idle-ja 5) +(def-art-elt predator-ag predator-walk0-ja 6) +(def-art-elt predator-ag predator-run0-ja 7) +(def-art-elt predator-ag predator-close-attack-ja 8) +(def-art-elt predator-ag predator-close-attack-recover-ja 9) +(def-art-elt predator-ag predator-shoot-guns0-ja 10) +(def-art-elt predator-ag predator-death-standing-ja 11) +(def-art-elt predator-ag predator-knocked-ja 12) +(def-art-elt hellcat-ag hellcat-idle-ja 5) +(def-art-elt hellcat-ag hellcat-shadow-mg 4) +(def-art-elt hellcat-ag hellcat-lod2-mg 3) +(def-art-elt hellcat-ag hellcat-lod1-mg 2) +(def-art-elt hellcat-ag hellcat-lod0-mg 1) +(def-art-elt hellcat-ag hellcat-lod0-jg 0) +(def-art-elt drill-top-break-ag drill-top-break-explode-b-lod0-mg 11) +(def-art-elt drill-top-break-ag drill-top-break-explode-b-lod0-jg 10) +(def-art-elt drill-top-break-ag drill-top-break-explode-a-lod0-mg 8) +(def-art-elt drill-top-break-ag drill-top-break-explode-a-lod0-jg 7) +(def-art-elt drill-top-break-ag drill-top-break-explode-lod0-mg 5) +(def-art-elt drill-top-break-ag drill-top-break-explode-lod0-jg 4) +(def-art-elt drill-top-break-ag drill-top-break-idle-ja 2) +(def-art-elt drill-top-break-ag drill-top-break-lod0-mg 1) +(def-art-elt drill-top-break-ag drill-top-break-lod0-jg 0) +(def-art-elt drill-switch-ag drill-switch-idle-ja 2) +(def-art-elt drill-switch-ag drill-switch-lod0-mg 1) +(def-art-elt drill-switch-ag drill-switch-lod0-jg 0) +(def-art-elt fort-lift-plat-ag fort-lift-plat-scale-ja 4) +(def-art-elt fort-lift-plat-ag fort-lift-plat-idle-ja 3) +(def-art-elt fort-lift-plat-ag fort-lift-plat-lod1-mg 2) +(def-art-elt fort-lift-plat-ag fort-lift-plat-lod0-mg 1) +(def-art-elt fort-lift-plat-ag fort-lift-plat-lod0-jg 0) +(def-art-elt minnow-ag minnow-idle-ja 2) +(def-art-elt minnow-ag minnow-lod0-mg 1) +(def-art-elt minnow-ag minnow-lod0-jg 0) +(def-art-elt mech-ag mech-target-idle-ja 44) +(def-art-elt mech-ag mech-target-lod0-mg 43) +(def-art-elt mech-ag mech-target-lod0-jg 42) +(def-art-elt mech-ag mech-mech-idle-ja 3) +(def-art-elt mech-ag mech-explode-idle-ja 41) +(def-art-elt mech-ag mech-shadow-mg 2) +(def-art-elt mech-ag mech-explode-lod0-mg 40) +(def-art-elt mech-ag mech-lod0-mg 1) +(def-art-elt mech-ag mech-explode-lod0-jg 39) +(def-art-elt mech-ag mech-lod0-jg 0) +(def-art-elt baron-highres-ag baron-highres-idle-ja 3) +(def-art-elt baron-highres-ag baron-highres-shadow-mg 2) +(def-art-elt baron-highres-ag baron-highres-lod0-mg 1) +(def-art-elt baron-highres-ag baron-highres-lod0-jg 0) +(def-art-elt propa-ag propa-idle-ja 2) +(def-art-elt propa-ag propa-lod0-mg 1) +(def-art-elt propa-ag propa-lod0-jg 0) +(def-art-elt vil-sagesail-ag vil-sagesail-idle-ja 4) +(def-art-elt vil-sagesail-ag vil-sagesail-lod2-mg 3) +(def-art-elt vil-sagesail-ag vil-sagesail-lod1-mg 2) +(def-art-elt vil-sagesail-ag vil-sagesail-lod0-mg 1) +(def-art-elt vil-sagesail-ag vil-sagesail-lod0-jg 0) +(def-art-elt jak-mech+0-ag mech-mech-punch-u-ja 89) +(def-art-elt jak-mech+0-ag mech-mech-death-b-ja 88) +(def-art-elt jak-mech+0-ag mech-mech-death-a-ja 87) +(def-art-elt jak-mech+0-ag mech-mech-get-on-ja 86) +(def-art-elt jak-mech+0-ag mech-mech-get-off-ja 85) +(def-art-elt jak-mech+0-ag mech-mech-hit-front-ja 84) +(def-art-elt jak-mech+0-ag mech-mech-drag-pickup-ja 83) +(def-art-elt jak-mech+0-ag mech-mech-pull-ja 82) +(def-art-elt jak-mech+0-ag mech-mech-push-ja 81) +(def-art-elt jak-mech+0-ag mech-mech-carry-turn45-ja 80) +(def-art-elt jak-mech+0-ag mech-mech-carry-throw-ja 79) +(def-art-elt jak-mech+0-ag mech-mech-carry-jump-land-ja 78) +(def-art-elt jak-mech+0-ag mech-mech-carry-jump-loop-ja 77) +(def-art-elt jak-mech+0-ag mech-mech-carry-jump-ja 76) +(def-art-elt jak-mech+0-ag mech-mech-carry-walk-ja 75) +(def-art-elt jak-mech+0-ag mech-mech-carry-stance-ja 74) +(def-art-elt jak-mech+0-ag mech-mech-carry-pickup-high-ja 73) +(def-art-elt jak-mech+0-ag mech-mech-carry-pickup-low-ja 72) +(def-art-elt jak-mech+0-ag mech-mech-punch-b-ja 71) +(def-art-elt jak-mech+0-ag mech-mech-punch-r-ja 70) +(def-art-elt jak-mech+0-ag mech-mech-punch-l-ja 69) +(def-art-elt jak-mech+0-ag mech-mech-turn20-ja 68) +(def-art-elt jak-mech+0-ag mech-mech-jump-land-ja 67) +(def-art-elt jak-mech+0-ag mech-mech-jump-loop-ja 66) +(def-art-elt jak-mech+0-ag mech-mech-jump-thrust-ja 65) +(def-art-elt jak-mech+0-ag mech-mech-jump-ja 64) +(def-art-elt jak-mech+0-ag mech-mech-turn90-ja 63) +(def-art-elt jak-mech+0-ag mech-mech-walk-ja 62) +(def-art-elt jak-mech+0-ag mech-mech-run-ja 61) +(def-art-elt jak-mech+0-ag mech-mech-stance-ja 60) +(def-art-elt jak-mech+0-ag jakb-mech-punch-u-ja 59) +(def-art-elt jak-mech+0-ag daxter-mech-death-b-ja 28) +(def-art-elt jak-mech+0-ag daxter-mech-death-a-ja 27) +(def-art-elt jak-mech+0-ag daxter-mech-get-on-ja 26) +(def-art-elt jak-mech+0-ag daxter-mech-get-off-ja 25) +(def-art-elt jak-mech+0-ag daxter-mech-hit-front-ja 24) +(def-art-elt jak-mech+0-ag daxter-mech-drag-pickup-ja 23) +(def-art-elt jak-mech+0-ag daxter-mech-pull-ja 22) +(def-art-elt jak-mech+0-ag daxter-mech-push-ja 21) +(def-art-elt jak-mech+0-ag daxter-mech-carry-turn45-ja 20) +(def-art-elt jak-mech+0-ag daxter-mech-carry-throw-ja 19) +(def-art-elt jak-mech+0-ag daxter-mech-carry-jump-land-ja 18) +(def-art-elt jak-mech+0-ag daxter-mech-carry-jump-loop-ja 17) +(def-art-elt jak-mech+0-ag daxter-mech-carry-jump-ja 16) +(def-art-elt jak-mech+0-ag daxter-mech-carry-walk-ja 15) +(def-art-elt jak-mech+0-ag daxter-mech-carry-stance-ja 14) +(def-art-elt jak-mech+0-ag daxter-mech-carry-pickup-high-ja 13) +(def-art-elt jak-mech+0-ag daxter-mech-stance-ja 0) +(def-art-elt jak-mech+0-ag daxter-mech-run-ja 1) +(def-art-elt jak-mech+0-ag daxter-mech-walk-ja 2) +(def-art-elt jak-mech+0-ag daxter-mech-turn90-ja 3) +(def-art-elt jak-mech+0-ag daxter-mech-jump-ja 4) +(def-art-elt jak-mech+0-ag daxter-mech-jump-thrust-ja 5) +(def-art-elt jak-mech+0-ag daxter-mech-jump-loop-ja 6) +(def-art-elt jak-mech+0-ag daxter-mech-jump-land-ja 7) +(def-art-elt jak-mech+0-ag daxter-mech-turn20-ja 8) +(def-art-elt jak-mech+0-ag daxter-mech-punch-l-ja 9) +(def-art-elt jak-mech+0-ag daxter-mech-punch-r-ja 10) +(def-art-elt jak-mech+0-ag daxter-mech-punch-b-ja 11) +(def-art-elt jak-mech+0-ag daxter-mech-carry-pickup-low-ja 12) +(def-art-elt jak-mech+0-ag daxter-mech-punch-u-ja 29) +(def-art-elt jak-mech+0-ag jakb-mech-stance-ja 30) +(def-art-elt jak-mech+0-ag jakb-mech-run-ja 31) +(def-art-elt jak-mech+0-ag jakb-mech-walk-ja 32) +(def-art-elt jak-mech+0-ag jakb-mech-turn90-ja 33) +(def-art-elt jak-mech+0-ag jakb-mech-jump-ja 34) +(def-art-elt jak-mech+0-ag jakb-mech-jump-thrust-ja 35) +(def-art-elt jak-mech+0-ag jakb-mech-jump-loop-ja 36) +(def-art-elt jak-mech+0-ag jakb-mech-jump-land-ja 37) +(def-art-elt jak-mech+0-ag jakb-mech-turn20-ja 38) +(def-art-elt jak-mech+0-ag jakb-mech-punch-l-ja 39) +(def-art-elt jak-mech+0-ag jakb-mech-punch-r-ja 40) +(def-art-elt jak-mech+0-ag jakb-mech-punch-b-ja 41) +(def-art-elt jak-mech+0-ag jakb-mech-carry-pickup-low-ja 42) +(def-art-elt jak-mech+0-ag jakb-mech-carry-pickup-high-ja 43) +(def-art-elt jak-mech+0-ag jakb-mech-carry-stance-ja 44) +(def-art-elt jak-mech+0-ag jakb-mech-carry-walk-ja 45) +(def-art-elt jak-mech+0-ag jakb-mech-carry-jump-ja 46) +(def-art-elt jak-mech+0-ag jakb-mech-carry-jump-loop-ja 47) +(def-art-elt jak-mech+0-ag jakb-mech-carry-jump-land-ja 48) +(def-art-elt jak-mech+0-ag jakb-mech-carry-throw-ja 49) +(def-art-elt jak-mech+0-ag jakb-mech-carry-turn45-ja 50) +(def-art-elt jak-mech+0-ag jakb-mech-push-ja 51) +(def-art-elt jak-mech+0-ag jakb-mech-pull-ja 52) +(def-art-elt jak-mech+0-ag jakb-mech-drag-pickup-ja 53) +(def-art-elt jak-mech+0-ag jakb-mech-hit-front-ja 54) +(def-art-elt jak-mech+0-ag jakb-mech-get-off-ja 55) +(def-art-elt jak-mech+0-ag jakb-mech-get-on-ja 56) +(def-art-elt jak-mech+0-ag jakb-mech-death-a-ja 57) +(def-art-elt jak-mech+0-ag jakb-mech-death-b-ja 58) +(def-art-elt fort-entry-gate-ag fort-entry-gate-idle-ja 2) +(def-art-elt fort-entry-gate-ag fort-entry-gate-lod0-mg 1) +(def-art-elt fort-entry-gate-ag fort-entry-gate-lod0-jg 0) +(def-art-elt eco-canister-ag eco-canister-dark-idle-ja 2) +(def-art-elt eco-canister-ag eco-canister-dark-lod0-mg 1) +(def-art-elt eco-canister-ag eco-canister-dark-lod0-jg 0) +(def-art-elt talk-box-ag talk-box-idle-ja 2) +(def-art-elt talk-box-ag talk-box-lod0-mg 1) +(def-art-elt talk-box-ag talk-box-lod0-jg 0) +(def-art-elt particleman-ag particleman-idle-ja 2) +(def-art-elt particleman-ag particleman-lod0-mg 1) +(def-art-elt particleman-ag particleman-lod0-jg 0) +(def-art-elt jak-gun+0-ag jakb-gun-red-fire-fast-ja 141) +(def-art-elt jak-gun+0-ag jakb-gun-side-jump-land-ja 140) +(def-art-elt jak-gun+0-ag jakb-gun-side-jump-ja 139) +(def-art-elt jak-gun+0-ag jakb-gun-walk-blue-ja 138) +(def-art-elt jak-gun+0-ag jakb-gun-duck-walk-ja 137) +(def-art-elt jak-gun+0-ag jakb-gun-front-jump-land-ja 136) +(def-art-elt jak-gun+0-ag jakb-gun-front-jump-ja 135) +(def-art-elt jak-gun+0-ag jakb-gun-front-run-ja 134) +(def-art-elt jak-gun+0-ag jakb-gun-front-walk-ja 133) +(def-art-elt jak-gun+0-ag jakb-gun-hit-elec-ja 132) +(def-art-elt jak-gun+0-ag jakb-gun-yellow-fire-twirl-ja 131) +(def-art-elt jak-gun+0-ag jakb-gun-red-from-sideways-ja 130) +(def-art-elt jak-gun+0-ag jakb-gun-stance-red-sideways-ja 129) +(def-art-elt jak-gun+0-ag jakb-gun-dark-fire-twirl-ja 128) +(def-art-elt jak-gun+0-ag jakb-gun-red-fire-from-sideways-ja 127) +(def-art-elt jak-gun+0-ag daxter-gun-duck-walk-ja 58) +(def-art-elt jak-gun+0-ag daxter-gun-front-jump-land-ja 57) +(def-art-elt jak-gun+0-ag daxter-gun-front-jump-ja 56) +(def-art-elt jak-gun+0-ag daxter-gun-front-run-ja 55) +(def-art-elt jak-gun+0-ag daxter-gun-front-walk-ja 54) +(def-art-elt jak-gun+0-ag daxter-gun-hit-elec-ja 53) +(def-art-elt jak-gun+0-ag daxter-gun-yellow-fire-twirl-ja 52) +(def-art-elt jak-gun+0-ag daxter-gun-red-from-sideways-ja 51) +(def-art-elt jak-gun+0-ag daxter-gun-stance-red-sideways-ja 50) +(def-art-elt jak-gun+0-ag daxter-gun-dark-fire-twirl-ja 49) +(def-art-elt jak-gun+0-ag daxter-gun-red-fire-from-sideways-ja 48) +(def-art-elt jak-gun+0-ag daxter-gun-red-fire-to-sideways-ja 47) +(def-art-elt jak-gun+0-ag daxter-gun-hit-from-back-ja 46) +(def-art-elt jak-gun+0-ag daxter-gun-hit-from-front-ja 45) +(def-art-elt jak-gun+0-ag daxter-gun-flop-down-land-ja 44) +(def-art-elt jak-gun+0-ag daxter-gun-flop-down-loop-ja 43) +(def-art-elt jak-gun+0-ag daxter-gun-flop-down-ja 42) +(def-art-elt jak-gun+0-ag daxter-gun-roll-flip-land-ja 41) +(def-art-elt jak-gun+0-ag daxter-gun-roll-flip-ja 40) +(def-art-elt jak-gun+0-ag daxter-gun-duck-roll-end-ja 39) +(def-art-elt jak-gun+0-ag daxter-gun-duck-roll-ja 38) +(def-art-elt jak-gun+0-ag daxter-gun-edge-grab-to-jump-ja 37) +(def-art-elt jak-gun+0-ag daxter-gun-edge-grab-off-ja 36) +(def-art-elt jak-gun+0-ag daxter-gun-attack-upperbutt-blue-ja 35) +(def-art-elt jak-gun+0-ag daxter-gun-jump-land-side-ja 34) +(def-art-elt jak-gun+0-ag daxter-gun-jump-land-ja 33) +(def-art-elt jak-gun+0-ag daxter-gun-attack-butt-blue-end-ja 32) +(def-art-elt jak-gun+0-ag daxter-gun-attack-butt-blue-ja 31) +(def-art-elt jak-gun+0-ag daxter-gun-attack-butt-end-ja 30) +(def-art-elt jak-gun+0-ag daxter-gun-attack-butt-ja 29) +(def-art-elt jak-gun+0-ag daxter-gun-red-fire-ja 12) +(def-art-elt jak-gun+0-ag daxter-gun-stance-blue-ja 11) +(def-art-elt jak-gun+0-ag daxter-gun-stance-yellow-ja 10) +(def-art-elt jak-gun+0-ag daxter-gun-stance-dark-ja 9) +(def-art-elt jak-gun+0-ag daxter-gun-blue-to-yellow-ja 8) +(def-art-elt jak-gun+0-ag daxter-gun-attack-from-stance-blue-end-ja 7) +(def-art-elt jak-gun+0-ag daxter-gun-attack-from-stance-blue-ja 6) +(def-art-elt jak-gun+0-ag daxter-gun-attack-from-stance-end-ja 5) +(def-art-elt jak-gun+0-ag daxter-gun-attack-from-stance-ja 4) +(def-art-elt jak-gun+0-ag daxter-gun-yellow-highlow-ja 3) +(def-art-elt jak-gun+0-ag daxter-gun-yellow-fire-low-ja 2) +(def-art-elt jak-gun+0-ag daxter-gun-stance-yellow-low-ja 1) +(def-art-elt jak-gun+0-ag daxter-gun-stance-ja 0) +(def-art-elt jak-gun+0-ag daxter-gun-blue-fire-ja 13) +(def-art-elt jak-gun+0-ag daxter-gun-blue-fire-single-ja 14) +(def-art-elt jak-gun+0-ag daxter-gun-dark-fire-ja 15) +(def-art-elt jak-gun+0-ag daxter-gun-yellow-fire-ja 16) +(def-art-elt jak-gun+0-ag daxter-gun-walk-side-ja 17) +(def-art-elt jak-gun+0-ag daxter-gun-run-blue-ja 18) +(def-art-elt jak-gun+0-ag daxter-gun-red-takeout-ja 19) +(def-art-elt jak-gun+0-ag daxter-gun-dark-takeout-ja 20) +(def-art-elt jak-gun+0-ag daxter-gun-yellow-takeout-ja 21) +(def-art-elt jak-gun+0-ag daxter-gun-blue-takeout-ja 22) +(def-art-elt jak-gun+0-ag daxter-gun-attack-upperbutt-ja 23) +(def-art-elt jak-gun+0-ag daxter-gun-side-to-front-hop-ja 24) +(def-art-elt jak-gun+0-ag daxter-gun-transformation-twirl-ja 25) +(def-art-elt jak-gun+0-ag daxter-gun-front-to-side-hop-ja 26) +(def-art-elt jak-gun+0-ag daxter-gun-front-to-blue-hop-ja 27) +(def-art-elt jak-gun+0-ag daxter-gun-blue-to-front-hop-ja 28) +(def-art-elt jak-gun+0-ag daxter-gun-walk-blue-ja 59) +(def-art-elt jak-gun+0-ag daxter-gun-side-jump-ja 60) +(def-art-elt jak-gun+0-ag daxter-gun-side-jump-land-ja 61) +(def-art-elt jak-gun+0-ag daxter-gun-red-fire-fast-ja 62) +(def-art-elt jak-gun+0-ag daxter-gun-attack-from-stance-end-alt1-ja 63) +(def-art-elt jak-gun+0-ag daxter-gun-attack-butt-end-alt1-ja 64) +(def-art-elt jak-gun+0-ag gun-gun-yellow-fire-low-ja 65) +(def-art-elt jak-gun+0-ag gun-gun-red-fire-ja 66) +(def-art-elt jak-gun+0-ag gun-gun-blue-fire-ja 67) +(def-art-elt jak-gun+0-ag gun-gun-blue-fire-single-ja 68) +(def-art-elt jak-gun+0-ag gun-gun-dark-fire-ja 69) +(def-art-elt jak-gun+0-ag gun-gun-yellow-fire-ja 70) +(def-art-elt jak-gun+0-ag gun-gun-red-dark-ja 71) +(def-art-elt jak-gun+0-ag gun-gun-red-yellow-ja 72) +(def-art-elt jak-gun+0-ag gun-gun-red-blue-ja 73) +(def-art-elt jak-gun+0-ag gun-gun-dark-yellow-ja 74) +(def-art-elt jak-gun+0-ag gun-gun-yellow-blue-ja 75) +(def-art-elt jak-gun+0-ag gun-gun-yellow-red-ja 76) +(def-art-elt jak-gun+0-ag gun-gun-blue-dark-ja 77) +(def-art-elt jak-gun+0-ag gun-gun-blue-red-ja 78) +(def-art-elt jak-gun+0-ag jakb-gun-stance-ja 79) +(def-art-elt jak-gun+0-ag jakb-gun-stance-yellow-low-ja 80) +(def-art-elt jak-gun+0-ag jakb-gun-yellow-fire-low-ja 81) +(def-art-elt jak-gun+0-ag jakb-gun-yellow-highlow-ja 82) +(def-art-elt jak-gun+0-ag jakb-gun-attack-from-stance-ja 83) +(def-art-elt jak-gun+0-ag jakb-gun-attack-from-stance-end-ja 84) +(def-art-elt jak-gun+0-ag jakb-gun-attack-from-stance-blue-ja 85) +(def-art-elt jak-gun+0-ag jakb-gun-attack-from-stance-blue-end-ja 86) +(def-art-elt jak-gun+0-ag jakb-gun-blue-to-yellow-ja 87) +(def-art-elt jak-gun+0-ag jakb-gun-stance-dark-ja 88) +(def-art-elt jak-gun+0-ag jakb-gun-stance-yellow-ja 89) +(def-art-elt jak-gun+0-ag jakb-gun-stance-blue-ja 90) +(def-art-elt jak-gun+0-ag jakb-gun-red-fire-ja 91) +(def-art-elt jak-gun+0-ag jakb-gun-blue-fire-ja 92) +(def-art-elt jak-gun+0-ag jakb-gun-blue-fire-single-ja 93) +(def-art-elt jak-gun+0-ag jakb-gun-dark-fire-ja 94) +(def-art-elt jak-gun+0-ag jakb-gun-yellow-fire-ja 95) +(def-art-elt jak-gun+0-ag jakb-gun-walk-side-ja 96) +(def-art-elt jak-gun+0-ag jakb-gun-run-blue-ja 97) +(def-art-elt jak-gun+0-ag jakb-gun-red-takeout-ja 98) +(def-art-elt jak-gun+0-ag jakb-gun-dark-takeout-ja 99) +(def-art-elt jak-gun+0-ag jakb-gun-yellow-takeout-ja 100) +(def-art-elt jak-gun+0-ag jakb-gun-blue-takeout-ja 101) +(def-art-elt jak-gun+0-ag jakb-gun-attack-upperbutt-ja 102) +(def-art-elt jak-gun+0-ag jakb-gun-side-to-front-hop-ja 103) +(def-art-elt jak-gun+0-ag jakb-gun-transformation-twirl-ja 104) +(def-art-elt jak-gun+0-ag jakb-gun-front-to-side-hop-ja 105) +(def-art-elt jak-gun+0-ag jakb-gun-front-to-blue-hop-ja 106) +(def-art-elt jak-gun+0-ag jakb-gun-blue-to-front-hop-ja 107) +(def-art-elt jak-gun+0-ag jakb-gun-attack-butt-ja 108) +(def-art-elt jak-gun+0-ag jakb-gun-attack-butt-end-ja 109) +(def-art-elt jak-gun+0-ag jakb-gun-attack-butt-blue-ja 110) +(def-art-elt jak-gun+0-ag jakb-gun-attack-butt-blue-end-ja 111) +(def-art-elt jak-gun+0-ag jakb-gun-jump-land-ja 112) +(def-art-elt jak-gun+0-ag jakb-gun-jump-land-side-ja 113) +(def-art-elt jak-gun+0-ag jakb-gun-attack-upperbutt-blue-ja 114) +(def-art-elt jak-gun+0-ag jakb-gun-edge-grab-off-ja 115) +(def-art-elt jak-gun+0-ag jakb-gun-edge-grab-to-jump-ja 116) +(def-art-elt jak-gun+0-ag jakb-gun-duck-roll-ja 117) +(def-art-elt jak-gun+0-ag jakb-gun-duck-roll-end-ja 118) +(def-art-elt jak-gun+0-ag jakb-gun-roll-flip-ja 119) +(def-art-elt jak-gun+0-ag jakb-gun-roll-flip-land-ja 120) +(def-art-elt jak-gun+0-ag jakb-gun-flop-down-ja 121) +(def-art-elt jak-gun+0-ag jakb-gun-flop-down-loop-ja 122) +(def-art-elt jak-gun+0-ag jakb-gun-flop-down-land-ja 123) +(def-art-elt jak-gun+0-ag jakb-gun-hit-from-front-ja 124) +(def-art-elt jak-gun+0-ag jakb-gun-hit-from-back-ja 125) +(def-art-elt jak-gun+0-ag jakb-gun-red-fire-to-sideways-ja 126) +(def-art-elt vehicle-turret-ag vehicle-turret-idle-ja 4) +(def-art-elt vehicle-turret-ag vehicle-turret-lod2-mg 3) +(def-art-elt vehicle-turret-ag vehicle-turret-lod1-mg 2) +(def-art-elt vehicle-turret-ag vehicle-turret-lod0-mg 1) +(def-art-elt vehicle-turret-ag vehicle-turret-lod0-jg 0) +(def-art-elt prsn-daxter-plat-ag prsn-daxter-plat-idle-ja 2) +(def-art-elt prsn-daxter-plat-ag prsn-daxter-plat-lod0-mg 1) +(def-art-elt prsn-daxter-plat-ag prsn-daxter-plat-lod0-jg 0) +(def-art-elt drill-crane-ag drill-crane-d-end-ja 25) +(def-art-elt drill-crane-ag drill-crane-d-idle-ja 23) +(def-art-elt drill-crane-ag drill-crane-d-lod0-mg 22) +(def-art-elt drill-crane-ag drill-crane-d-lod0-jg 21) +(def-art-elt drill-crane-ag drill-crane-c-end-ja 20) +(def-art-elt drill-crane-ag drill-crane-c-idle-ja 18) +(def-art-elt drill-crane-ag drill-crane-c-lod0-mg 17) +(def-art-elt drill-crane-ag drill-crane-c-lod0-jg 16) +(def-art-elt drill-crane-ag drill-crane-lod0-jg 0) +(def-art-elt drill-crane-ag drill-crane-b-idle-ja 13) +(def-art-elt drill-crane-ag drill-crane-lod0-mg 1) +(def-art-elt drill-crane-ag drill-crane-lod1-mg 2) +(def-art-elt drill-crane-ag drill-crane-b-end-ja 15) +(def-art-elt drill-crane-ag drill-crane-idle-ja 3) +(def-art-elt drill-crane-ag drill-crane-end-ja 4) +(def-art-elt drill-crane-ag drill-crane-a-lod0-jg 6) +(def-art-elt drill-crane-ag drill-crane-a-lod0-mg 7) +(def-art-elt drill-crane-ag drill-crane-a-idle-ja 8) +(def-art-elt drill-crane-ag drill-crane-a-end-ja 10) +(def-art-elt drill-crane-ag drill-crane-b-lod0-jg 11) +(def-art-elt drill-crane-ag drill-crane-b-lod0-mg 12) +(def-art-elt centipede-ag centipede-mand-close-mouth-jitter-ja 14) +(def-art-elt centipede-ag centipede-mand-close-mouth-ja 13) +(def-art-elt centipede-ag centipede-lod0-jg 0) +(def-art-elt centipede-ag centipede-lod0-mg 1) +(def-art-elt centipede-ag centipede-shadow-mg 2) +(def-art-elt centipede-ag centipede-idle-ja 3) +(def-art-elt centipede-ag centipede-walk0-ja 4) +(def-art-elt centipede-ag centipede-attack0-ja 5) +(def-art-elt centipede-ag centipede-eat0-ja 6) +(def-art-elt centipede-ag centipede-mand-idle0-ja 7) +(def-art-elt centipede-ag centipede-mand-chomp1-ja 8) +(def-art-elt centipede-ag centipede-mand-chomp2-ja 9) +(def-art-elt centipede-ag centipede-mand-chomp3-ja 10) +(def-art-elt centipede-ag centipede-mand-open-mouth-ja 11) +(def-art-elt centipede-ag centipede-mand-open-mouth-jitter-ja 12) +(def-art-elt drill-metalhead-eggs-b-ag drill-metalhead-eggs-b-idle-ja 2) +(def-art-elt drill-metalhead-eggs-b-ag drill-metalhead-eggs-b-lod0-mg 1) +(def-art-elt drill-metalhead-eggs-b-ag drill-metalhead-eggs-b-lod0-jg 0) +(def-art-elt under-mine-ag under-mine-explode-idle-ja 7) +(def-art-elt under-mine-ag under-mine-explode-lod0-mg 6) +(def-art-elt under-mine-ag under-mine-explode-lod0-jg 5) +(def-art-elt under-mine-ag under-mine-idle-ja 4) +(def-art-elt under-mine-ag under-mine-shadow-mg 3) +(def-art-elt under-mine-ag under-mine-lod1-mg 2) +(def-art-elt under-mine-ag under-mine-lod0-mg 1) +(def-art-elt under-mine-ag under-mine-lod0-jg 0) +(def-art-elt crimson-guard-ag crimson-guard-knocked-from-bike-ja 43) +(def-art-elt crimson-guard-ag crimson-guard-knocked-from-car-ja 42) +(def-art-elt crimson-guard-ag crimson-guard-jump-left-ja 41) +(def-art-elt crimson-guard-ag crimson-guard-jump-right-ja 40) +(def-art-elt crimson-guard-ag crimson-guard-die-falling-ja 39) +(def-art-elt crimson-guard-ag crimson-guard-jump-high-ja 38) +(def-art-elt crimson-guard-ag crimson-guard-grenade-attack-ja 37) +(def-art-elt crimson-guard-ag crimson-guard-car-stance-ja 36) +(def-art-elt crimson-guard-ag crimson-guard-bike-stance-ja 35) +(def-art-elt crimson-guard-ag crimson-guard-get-up-back-ja 34) +(def-art-elt crimson-guard-ag crimson-guard-get-up-front-ja 33) +(def-art-elt crimson-guard-ag crimson-guard-knocked-back-land-ja 32) +(def-art-elt crimson-guard-ag crimson-guard-knocked-back-ja 31) +(def-art-elt crimson-guard-ag crimson-guard-attack-shoot-knee-end-ja 30) +(def-art-elt crimson-guard-ag crimson-guard-attack-shoot-knee-ja 29) +(def-art-elt crimson-guard-ag crimson-guard-blue-hit-land-death-ja 12) +(def-art-elt crimson-guard-ag crimson-guard-blue-hit-land-ja 11) +(def-art-elt crimson-guard-ag crimson-guard-blue-hit-ja 10) +(def-art-elt crimson-guard-ag crimson-guard-knocked-land-ja 9) +(def-art-elt crimson-guard-ag crimson-guard-knocked-ja 8) +(def-art-elt crimson-guard-ag crimson-guard-notice-ja 7) +(def-art-elt crimson-guard-ag crimson-guard-run-ja 6) +(def-art-elt crimson-guard-ag crimson-guard-walk-ja 5) +(def-art-elt crimson-guard-ag crimson-guard-idle-ja 4) +(def-art-elt crimson-guard-ag crimson-guard-shadow-mg 3) +(def-art-elt crimson-guard-ag crimson-guard-lod2-mg 2) +(def-art-elt crimson-guard-ag crimson-guard-lod0-mg 1) +(def-art-elt crimson-guard-ag crimson-guard-lod0-jg 0) +(def-art-elt crimson-guard-ag crimson-guard-yellow-hit0-ja 13) +(def-art-elt crimson-guard-ag crimson-guard-yellow-hit0-land-ja 14) +(def-art-elt crimson-guard-ag crimson-guard-yellow-hit1-ja 15) +(def-art-elt crimson-guard-ag crimson-guard-yellow-hit1-land-ja 16) +(def-art-elt crimson-guard-ag crimson-guard-die-ja 17) +(def-art-elt crimson-guard-ag crimson-guard-rifle-butt-ja 18) +(def-art-elt crimson-guard-ag crimson-guard-idle-to-stab-idle-ja 19) +(def-art-elt crimson-guard-ag crimson-guard-stab-idle-loop-ja 20) +(def-art-elt crimson-guard-ag crimson-guard-stab-idle-to-attack-ja 21) +(def-art-elt crimson-guard-ag crimson-guard-stab-attack-ja 22) +(def-art-elt crimson-guard-ag crimson-guard-stab-attack-to-stab-idle-ja 23) +(def-art-elt crimson-guard-ag crimson-guard-stab-idle-to-idle-ja 24) +(def-art-elt crimson-guard-ag crimson-guard-stab-shuffle-ja 25) +(def-art-elt crimson-guard-ag crimson-guard-gun-attack-ja 26) +(def-art-elt crimson-guard-ag crimson-guard-attack-shoot-knee-start-ja 27) +(def-art-elt crimson-guard-ag crimson-guard-attack-shoot-knee-loop-ja 28) +(def-art-elt market-sack-b-ag market-sack-b-idle-ja 2) +(def-art-elt market-sack-b-ag market-sack-b-lod0-mg 1) +(def-art-elt market-sack-b-ag market-sack-b-lod0-jg 0) +(def-art-elt intro-flamer-ag intro-flamer-fly-straight-ja 5) +(def-art-elt intro-flamer-ag intro-flamer-shadow-mg 4) +(def-art-elt intro-flamer-ag intro-flamer-lod2-mg 3) +(def-art-elt intro-flamer-ag intro-flamer-lod1-mg 2) +(def-art-elt intro-flamer-ag intro-flamer-lod0-mg 1) +(def-art-elt intro-flamer-ag intro-flamer-lod0-jg 0) +(def-art-elt com-airlock-inner-ag com-airlock-inner-idle-ja 2) +(def-art-elt com-airlock-inner-ag com-airlock-inner-lod0-mg 1) +(def-art-elt com-airlock-inner-ag com-airlock-inner-lod0-jg 0) +(def-art-elt cara-ag cara-idle-ja 5) +(def-art-elt cara-ag cara-shadow-mg 4) +(def-art-elt cara-ag cara-lod2-mg 3) +(def-art-elt cara-ag cara-lod1-mg 2) +(def-art-elt cara-ag cara-lod0-mg 1) +(def-art-elt cara-ag cara-lod0-jg 0) +(def-art-elt port-turret-ag port-turret-idle-ja 2) +(def-art-elt port-turret-ag port-turret-lod0-mg 1) +(def-art-elt port-turret-ag port-turret-lod0-jg 0) +(def-art-elt jak-swim+0-ag jakb-swim-jump-ja 25) +(def-art-elt jak-swim+0-ag jakb-swim-up-to-stance-ja 24) +(def-art-elt jak-swim+0-ag jakb-swim-up-ja 23) +(def-art-elt jak-swim+0-ag jakb-swim-down-to-up-ja 22) +(def-art-elt jak-swim+0-ag jakb-swim-down-ja 21) +(def-art-elt jak-swim+0-ag jakb-swim-walk-to-down-ja 20) +(def-art-elt jak-swim+0-ag jakb-swim-walk-ja 19) +(def-art-elt jak-swim+0-ag jakb-swim-stance-ja 18) +(def-art-elt jak-swim+0-ag jakb-wade-deep-walk-ja 17) +(def-art-elt jak-swim+0-ag jakb-wade-shallow-walk-ja 16) +(def-art-elt jak-swim+0-ag jakb-death-swim-end-ja 15) +(def-art-elt jak-swim+0-ag jakb-death-swim-loop-ja 14) +(def-art-elt jak-swim+0-ag jakb-death-swim-ja 13) +(def-art-elt jak-swim+0-ag daxter-death-swim-ja 0) +(def-art-elt jak-swim+0-ag daxter-death-swim-loop-ja 1) +(def-art-elt jak-swim+0-ag daxter-death-swim-end-ja 2) +(def-art-elt jak-swim+0-ag daxter-wade-shallow-walk-ja 3) +(def-art-elt jak-swim+0-ag daxter-wade-deep-walk-ja 4) +(def-art-elt jak-swim+0-ag daxter-swim-stance-ja 5) +(def-art-elt jak-swim+0-ag daxter-swim-walk-ja 6) +(def-art-elt jak-swim+0-ag daxter-swim-walk-to-down-ja 7) +(def-art-elt jak-swim+0-ag daxter-swim-down-ja 8) +(def-art-elt jak-swim+0-ag daxter-swim-down-to-up-ja 9) +(def-art-elt jak-swim+0-ag daxter-swim-up-ja 10) +(def-art-elt jak-swim+0-ag daxter-swim-up-to-stance-ja 11) +(def-art-elt jak-swim+0-ag daxter-swim-jump-ja 12) +(def-art-elt carb-ag carb-idle-ja 5) +(def-art-elt carb-ag carb-shadow-mg 4) +(def-art-elt carb-ag carb-lod2-mg 3) +(def-art-elt carb-ag carb-lod1-mg 2) +(def-art-elt carb-ag carb-lod0-mg 1) +(def-art-elt carb-ag carb-lod0-jg 0) +(def-art-elt metalkor-torso-ag metalkor-torso-idle-ja 2) +(def-art-elt metalkor-torso-ag metalkor-torso-lod0-mg 1) +(def-art-elt metalkor-torso-ag metalkor-torso-lod0-jg 0) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-ice-end-ja 57) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-ice-loop2-ja 56) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-ice-loop-ja 55) +(def-art-elt jak-dark+0-ag jakb-darkjak-bomb-land-ja 54) +(def-art-elt jak-dark+0-ag jakb-darkjak-bomb-loop-ja 53) +(def-art-elt jak-dark+0-ag jakb-darkjak-bomb-ja 52) +(def-art-elt jak-dark+0-ag jakb-darkjak-get-off-end-ja 51) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo3c-end-ja 50) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo3c-ja 49) +(def-art-elt jak-dark+0-ag jakb-darkjak-get-on-fast-ja 48) +(def-art-elt jak-dark+0-ag jakb-darkjak-bomb-end-ja 47) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo1b-end-ja 46) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo1b-ja 45) +(def-art-elt jak-dark+0-ag jakb-darkjak-get-off-ja 44) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo3-end-ja 43) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo3-ja 42) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo2-end-ja 41) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo2-ja 40) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo1-end-ja 39) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-combo1-ja 38) +(def-art-elt jak-dark+0-ag jakb-darkjak-bomb-pre-ja 37) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-spin-end-ja 36) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-spin-ja 35) +(def-art-elt jak-dark+0-ag jakb-darkjak-stance-ja 34) +(def-art-elt jak-dark+0-ag jakb-darkjak-jump-land-ja 33) +(def-art-elt jak-dark+0-ag jakb-darkjak-jump-ja 32) +(def-art-elt jak-dark+0-ag jakb-darkjak-run-ja 31) +(def-art-elt jak-dark+0-ag jakb-darkjak-walk-ja 30) +(def-art-elt jak-dark+0-ag jakb-darkjak-attack-ice-ja 29) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo2-end-ja 12) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo2-ja 11) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo1-end-ja 10) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo1-ja 9) +(def-art-elt jak-dark+0-ag daxter-darkjak-bomb-pre-ja 8) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-spin-end-ja 7) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-spin-ja 6) +(def-art-elt jak-dark+0-ag daxter-darkjak-stance-ja 5) +(def-art-elt jak-dark+0-ag daxter-darkjak-jump-land-ja 4) +(def-art-elt jak-dark+0-ag daxter-darkjak-jump-ja 3) +(def-art-elt jak-dark+0-ag daxter-darkjak-run-ja 2) +(def-art-elt jak-dark+0-ag daxter-darkjak-walk-ja 1) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-ice-ja 0) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo3-ja 13) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo3-end-ja 14) +(def-art-elt jak-dark+0-ag daxter-darkjak-get-off-ja 15) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo1b-ja 16) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo1b-end-ja 17) +(def-art-elt jak-dark+0-ag daxter-darkjak-bomb-end-ja 18) +(def-art-elt jak-dark+0-ag daxter-darkjak-get-on-fast-ja 19) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo3c-ja 20) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-combo3c-end-ja 21) +(def-art-elt jak-dark+0-ag daxter-darkjak-get-off-end-ja 22) +(def-art-elt jak-dark+0-ag daxter-darkjak-bomb-ja 23) +(def-art-elt jak-dark+0-ag daxter-darkjak-bomb-loop-ja 24) +(def-art-elt jak-dark+0-ag daxter-darkjak-bomb-land-ja 25) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-ice-loop-ja 26) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-ice-loop2-ja 27) +(def-art-elt jak-dark+0-ag daxter-darkjak-attack-ice-end-ja 28) +(def-art-elt prsn-vent-fan-ag prsn-vent-fan-idle-ja 3) +(def-art-elt prsn-vent-fan-ag prsn-vent-fan-lod1-mg 2) +(def-art-elt prsn-vent-fan-ag prsn-vent-fan-lod0-mg 1) +(def-art-elt prsn-vent-fan-ag prsn-vent-fan-lod0-jg 0) +(def-art-elt jak-pole+0-ag jakb-pole-jump-loop-ja 8) +(def-art-elt jak-pole+0-ag jakb-pole-flip-forward-ja 7) +(def-art-elt jak-pole+0-ag jakb-pole-flip-up-ja 6) +(def-art-elt jak-pole+0-ag jakb-pole-cycle-ja 5) +(def-art-elt jak-pole+0-ag daxter-pole-jump-loop-ja 4) +(def-art-elt jak-pole+0-ag daxter-pole-flip-forward-ja 3) +(def-art-elt jak-pole+0-ag daxter-pole-flip-up-ja 2) +(def-art-elt jak-pole+0-ag daxter-pole-cycle2-ja 1) +(def-art-elt jak-pole+0-ag daxter-pole-cycle-ja 0) +(def-art-elt crimson-bike-ag crimson-bike-idle-ja 5) +(def-art-elt crimson-bike-ag crimson-bike-shadow-mg 4) +(def-art-elt crimson-bike-ag crimson-bike-lod2-mg 3) +(def-art-elt crimson-bike-ag crimson-bike-lod1-mg 2) +(def-art-elt crimson-bike-ag crimson-bike-lod0-mg 1) +(def-art-elt crimson-bike-ag crimson-bike-lod0-jg 0) +(def-art-elt crate-ag crate-idle-ja 3) +(def-art-elt crate-ag crate-krimson-lod1-mg 2) +(def-art-elt crate-ag crate-krimson-lod0-mg 1) +(def-art-elt crate-ag crate-krimson-lod0-jg 0) +(def-art-elt jak-clothes-ag jak-clothes-idle-ja 2) +(def-art-elt jak-clothes-ag jak-clothes-lod0-mg 1) +(def-art-elt jak-clothes-ag jak-clothes-lod0-jg 0) +(def-art-elt citizen-chick-ag citizen-chick-riding-stance-ja 27) +(def-art-elt citizen-chick-ag citizen-chick-shuffle-ja 26) +(def-art-elt citizen-chick-ag citizen-chick-get-up-from-back-ja 25) +(def-art-elt citizen-chick-ag citizen-chick-get-up-from-front-ja 24) +(def-art-elt citizen-chick-ag citizen-chick-knocked-back-land-ja 23) +(def-art-elt citizen-chick-ag citizen-chick-knocked-back-ja 22) +(def-art-elt citizen-chick-ag citizen-chick-knocked-front-land-ja 21) +(def-art-elt citizen-chick-ag citizen-chick-knocked-front-ja 20) +(def-art-elt citizen-chick-ag citizen-chick-blue-hit-back-ja 19) +(def-art-elt citizen-chick-ag citizen-chick-blue-hit-front-ja 18) +(def-art-elt citizen-chick-ag citizen-chick-dive-forward-ja 17) +(def-art-elt citizen-chick-ag citizen-chick-cover-head-end-ja 16) +(def-art-elt citizen-chick-ag citizen-chick-cover-head-loop-ja 15) +(def-art-elt citizen-chick-ag citizen-chick-cover-head-start-ja 14) +(def-art-elt citizen-chick-ag citizen-chick-hit-the-deck-ja 13) +(def-art-elt citizen-chick-ag citizen-chick-lod0-jg 0) +(def-art-elt citizen-chick-ag citizen-chick-lod0-mg 1) +(def-art-elt citizen-chick-ag citizen-chick-lod2-mg 2) +(def-art-elt citizen-chick-ag citizen-chick-shadow-mg 3) +(def-art-elt citizen-chick-ag citizen-chick-walk-ja 4) +(def-art-elt citizen-chick-ag citizen-chick-walk2-ja 5) +(def-art-elt citizen-chick-ag citizen-chick-walk3-ja 6) +(def-art-elt citizen-chick-ag citizen-chick-run-ja 7) +(def-art-elt citizen-chick-ag citizen-chick-run2-ja 8) +(def-art-elt citizen-chick-ag citizen-chick-run3-ja 9) +(def-art-elt citizen-chick-ag citizen-chick-idle-ja 10) +(def-art-elt citizen-chick-ag citizen-chick-panic-run-ja 11) +(def-art-elt citizen-chick-ag citizen-chick-tread-water-ja 12) +(def-art-elt under-int-door-ag under-int-door-open-ja 2) +(def-art-elt under-int-door-ag under-int-door-lod0-mg 1) +(def-art-elt under-int-door-ag under-int-door-lod0-jg 0) +(def-art-elt under-plat-long-ag under-plat-long-idle-ja 2) +(def-art-elt under-plat-long-ag under-plat-long-lod0-mg 1) +(def-art-elt under-plat-long-ag under-plat-long-lod0-jg 0) +(def-art-elt under-laser-shadow-ag under-laser-shadow-idle-ja 3) +(def-art-elt under-laser-shadow-ag under-laser-shadow-shadow-mg 2) +(def-art-elt under-laser-shadow-ag under-laser-shadow-lod0-mg 1) +(def-art-elt under-laser-shadow-ag under-laser-shadow-lod0-jg 0) +(def-art-elt drill-flip-step-ag drill-flip-step-swing-down-ja 3) +(def-art-elt drill-flip-step-ag drill-flip-step-swing-up-ja 2) +(def-art-elt drill-flip-step-ag drill-flip-step-lod0-mg 1) +(def-art-elt drill-flip-step-ag drill-flip-step-lod0-jg 0) +(def-art-elt under-break-wall-b-ag under-break-wall-b-idle-ja 2) +(def-art-elt under-break-wall-b-ag under-break-wall-b-lod0-mg 1) +(def-art-elt under-break-wall-b-ag under-break-wall-b-lod0-jg 0) +(def-art-elt drill-drill-ag drill-drill-idle-ja 2) +(def-art-elt drill-drill-ag drill-drill-lod0-mg 1) +(def-art-elt drill-drill-ag drill-drill-lod0-jg 0) +(def-art-elt under-plat-wall-ag under-plat-wall-idle-ja 2) +(def-art-elt under-plat-wall-ag under-plat-wall-lod0-mg 1) +(def-art-elt under-plat-wall-ag under-plat-wall-lod0-jg 0) +(def-art-elt rift-rider-donut-ag rift-rider-donut-idle-ja 3) +(def-art-elt rift-rider-donut-ag rift-rider-donut-shadow-mg 2) +(def-art-elt rift-rider-donut-ag rift-rider-donut-lod0-mg 1) +(def-art-elt rift-rider-donut-ag rift-rider-donut-lod0-jg 0) +(def-art-elt hip-door-a-ag hip-door-a-idle-ja 2) +(def-art-elt hip-door-a-ag hip-door-a-lod0-mg 1) +(def-art-elt hip-door-a-ag hip-door-a-lod0-jg 0) diff --git a/goal_src/jak2/engine/data/art-h.gc b/goal_src/jak2/engine/data/art-h.gc index fedd8b1941..4360b2dc08 100644 --- a/goal_src/jak2/engine/data/art-h.gc +++ b/goal_src/jak2/engine/data/art-h.gc @@ -349,7 +349,7 @@ (art-group art-group :offset-assert 12) (jgeo art-joint-geo :offset-assert 16) (mgeo merc-ctrl :offset-assert 20) - (dma-add-func function :offset-assert 24) + (dma-add-func (function process-drawable draw-control symbol object none) :offset-assert 24) (skeleton skeleton :offset-assert 28) (lod-set lod-set :inline :offset-assert 32) (max-lod int8 :offset 80) @@ -407,18 +407,19 @@ (if (number? elt-name) elt-name (let ((ag-info (hash-table-try-ref *art-info* (symbol->string ag-name)))) - (if (not (car ag-info)) - -1 - (let ((elt-info (hash-table-try-ref (cdr ag-info) (symbol->string elt-name)))) - (if (not (car elt-info)) - -1 - (cadr (cdr elt-info))) - ) + (if (not (car ag-info)) + (error (symbol->string ag-name)) + (let ((elt-info (hash-table-try-ref (cdr ag-info) (symbol->string elt-name)))) + (if (not (car elt-info)) + (error (symbol->string ag-name)) + (cadr (cdr elt-info))) ) - ) + ) + ) ) ) + (defmacro defskelgroup (name ag-name joint-geom joint-anim lods &key (shadow 0) &key bounds @@ -472,3 +473,4 @@ +(import "goal_src/jak2/engine/data/art-elts.gc") diff --git a/goal_src/jak2/engine/draw/drawable.gc b/goal_src/jak2/engine/draw/drawable.gc index f6c4e433b9..c8771aebcc 100644 --- a/goal_src/jak2/engine/draw/drawable.gc +++ b/goal_src/jak2/engine/draw/drawable.gc @@ -270,11 +270,456 @@ (define *instance-mem-usage* (new 'debug 'memory-usage-block)) ) -;;hack +;; todo find-instance-by-name-level + +;; todo: hack (defun find-instance-by-name ((a0-0 string)) (the prototype-bucket #f)) +;; todo prototypes-game-visible-set! +;; todo find-instance-by-index +;; todo prototype-bucket-type +;; todo prototype-bucket-recalc-fields +;; todo print-prototype-list +;; todo draw-instance-info +;; todo set-shadow-by-name +;; todo get-shadow-by-name +;; todo teleport-camera-by-name + +(defun dma-add-process-drawable ((pd process-drawable) (dc draw-control) (flag symbol) (dma-buf dma-buffer)) + "Draw a normal process-drawable. Set up lighting/shadow settings, then pass on to foreground renderer." + (local-vars + (a0-82 int) + (a0-84 int) + (a3-11 uint128) + (sv-16 process-drawable) + (tod time-of-day-context) + (shadow-mask uint) + (lev-idx-for-mood uint) + (my-origin vector) + (lev-mood mood-context) + (light-result-bucket light-hash-bucket) + (index-ptr pointer) + (index-index int) + ) + (with-pp + (rlet ((acc :class vf) + (Q :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf15 :class vf) + (vf16 :class vf) + (vf17 :class vf) + (vf18 :class vf) + (vf19 :class vf) + (vf2 :class vf) + (vf20 :class vf) + (vf21 :class vf) + (vf22 :class vf) + (vf23 :class vf) + (vf24 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf27 :class vf) + (vf28 :class vf) + (vf29 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (set! sv-16 pd) + + (reset! (-> *perf-stats* data (perf-stat-bucket foreground))) + + ;; skip drawing when in menu mode. + (when (-> *blit-displays-work* menu-mode) + (if (not (logtest? (-> dc status) (draw-control-status hud))) + (return #f) + ) + ) + + ;; clear previous on-screen flag, we don't know if we're on-screen yet. + (logclear! (-> dc status) (draw-control-status on-screen)) + + ;; only if we should draw... + (when (not (logtest? (-> dc status) (draw-control-status no-draw no-draw-temp uninited))) + (let ((fg-bounds (-> (scratchpad-object foreground-work) bounds)) + (fg-lights (-> (scratchpad-object foreground-work) lights)) + ) + (set! tod *time-of-day-context*) + (.lvf vf16 (&-> dc origin quad)) + (.svf (&-> fg-bounds quad) vf16) + + ;; sphere cull. + (when (sphere-in-view-frustum? fg-bounds) + (cond + ((logtest? (-> dc global-effect) (draw-control-global-effect title-light)) + ;; magic special case for title light. + (when (not (-> tod title-updated)) + (set! (-> tod title-updated) #t) + (let ((s1-0 (-> *math-camera* inv-camera-rot)) + (a1-3 (new 'stack-no-clear 'vector)) + (s2-0 (new 'stack-no-clear 'vector)) + ) + (set-vector! a1-3 0.612 0.5 -0.612 0.0) + (set-vector! s2-0 -0.696 0.174 0.696 0.0) + (vector-matrix*! (the-as vector (-> tod title-light-group)) a1-3 s1-0) + (vector-matrix*! (the-as vector (-> tod title-light-group dir1)) s2-0 s1-0) + ) + ) + (vu-lights<-light-group! fg-lights (-> tod title-light-group)) + ) + (else + ;; terrible lighting and shadow stuff + (set! shadow-mask (-> dc shadow-mask)) + (let ((shadow-mask-not (lognot shadow-mask))) + (set! lev-idx-for-mood (-> dc level-index)) + (let ((light-idx (-> dc light-index)) + (lg (new 'stack-no-clear 'light-group)) + ) + (if (and (>= lev-idx-for-mood (the-as uint 6)) (< light-idx (the-as uint 20))) + (+! light-idx 20) + ) + (let ((v1-40 (the-as + mood-context + (+ (the-as uint (-> *level* level0 mood-context)) (* (the-as uint 5232) lev-idx-for-mood)) + ) + ) + ) + (cond + ((< light-idx (the-as uint 8)) + (quad-copy! (the-as pointer lg) (the-as pointer (-> v1-40 light-group light-idx)) 12) + ) + ((< light-idx (the-as uint 18)) + (quad-copy! (the-as pointer lg) (the-as pointer (-> v1-40 light-group (+ light-idx -10))) 12) + ) + ((< light-idx (the-as uint 28)) + (quad-copy! (the-as pointer lg) (the-as pointer (-> tod light-group (+ light-idx -20))) 12) + ) + ((< light-idx (the-as uint 38)) + (quad-copy! (the-as pointer lg) (the-as pointer (-> tod light-group (+ light-idx -30))) 12) + ) + ) + ) + (when (not (or (>= lev-idx-for-mood (the-as uint 6)) (zero? shadow-mask))) + (let ((packed-shadow-vals (-> dc shadow-values))) + (set! light-idx (the uint 0)) + (while (< light-idx 4) + (when (nonzero? (-> lg lights light-idx mask)) + (when (not (logtest? (-> lg lights light-idx mask) shadow-mask-not)) + (let ((light-pal-idx (-> lg lights light-idx palette-index))) + (set! (-> lg lights light-idx extra x) + (* 0.0625 + (the float (logand (ash packed-shadow-vals (* -4 light-pal-idx)) 15)) + (-> lg lights light-idx extra x) + ) + ) + ) + ) + ) + (+! light-idx 1) + ) + ) + ) + (when (or (and (>= light-idx (the-as uint 10)) (< light-idx (the-as uint 18))) + (and (>= light-idx (the-as uint 30)) (< light-idx (the-as uint 38))) + ) + (dotimes (fg-light-lev-idx (-> *level* length)) + (let ((lev (-> *level* level fg-light-lev-idx))) + (when (= (-> lev status) 'active) + (let ((light-hash (-> lev light-hash))) + (set! my-origin (-> dc origin)) + (set! lev-mood (-> lev mood-context)) + (when (nonzero? light-hash) + (let ((light-lookup-result (light-hash-get-bucket-index light-hash (-> dc origin)))) + (when (!= light-lookup-result -1) + (set! light-result-bucket (-> light-hash bucket-array light-lookup-result)) + (set! index-ptr (the pointer (+ (+ (-> light-result-bucket index) 0) (the-as uint (-> light-hash index-array))))) + (set! index-index 0) + (while (< index-index (the-as int (-> light-result-bucket count))) + (let* ((light-sphere (-> light-hash light-sphere-array (-> (the-as (pointer uint8) (&+ index-ptr index-index))))) + (palette-idx (-> light-sphere palette-index)) + (interp (if (= palette-idx -1) + 1.0 + (-> lev-mood times palette-idx w) + ) + ) + ) + (if (!= (* (-> light-sphere brightness) interp) 0.0) + (add-light-sphere-to-light-group lg light-sphere my-origin lev-mood) + ) + ) + (set! index-index (+ index-index 1)) + ) + ) + ) + ) + ) + ) + ) + ) + ) + + ;; convert to vu format + (vu-lights<-light-group! fg-lights lg) + + ;; adjust shadow angle + (when (and (nonzero? (-> dc shadow-ctrl)) + (-> dc shadow-ctrl) + (not (logtest? (-> dc shadow-ctrl settings flags) (shadow-flags disable-draw))) + (zero? (logand (-> dc shadow-ctrl settings flags) (shadow-flags shdf07))) + ) + (let ((target-shadow-dir (new 'stack-no-clear 'vector)) + (current-shadow-dir (-> dc shadow-ctrl settings shadow-dir)) + (shadow-dir-w (-> dc shadow-ctrl settings shadow-dir w)) + ) + (.lvf vf1 (&-> lg dir0 direction quad)) + (.lvf vf2 (&-> lg dir1 direction quad)) + (.lvf vf3 (&-> lg dir2 direction quad)) + (.lvf vf4 (&-> lg dir0 extra quad)) + (.lvf vf5 (&-> lg dir1 extra quad)) + (.lvf vf6 (&-> lg dir2 extra quad)) + (.mul.x.vf acc vf1 vf4) + (.add.mul.x.vf acc vf2 vf5 acc) + (.add.mul.x.vf vf1 vf3 vf6 acc) + (.svf (&-> target-shadow-dir quad) vf1) + (vector-normalize! target-shadow-dir -1.0) + (when (< (- (-> target-shadow-dir y)) 0.9063) + (let* ((f0-16 0.4226) + (f1-6 (-> target-shadow-dir x)) + (f1-8 (* f1-6 f1-6)) + (f2-0 (-> target-shadow-dir z)) + (f0-17 (/ f0-16 (sqrtf (+ f1-8 (* f2-0 f2-0))))) + ) + (set! (-> target-shadow-dir x) (* (-> target-shadow-dir x) f0-17)) + (set! (-> target-shadow-dir y) -0.9063) + (set! (-> target-shadow-dir z) (* (-> target-shadow-dir z) f0-17)) + ) + ) + (when (not (paused?)) + (vector-seek! current-shadow-dir target-shadow-dir (* 0.2 (-> pp clock seconds-per-frame))) + (vector-normalize! current-shadow-dir 1.0) + ) + (set! (-> dc shadow-ctrl settings shadow-dir w) shadow-dir-w) + ) + ) + ) + ) + ) + ) + + ;; apply mult and emissive lighting. + (.lvf vf28 (&-> dc color-mult quad)) + (.lvf vf29 (&-> dc color-emissive quad)) + (.lvf vf2 (&-> fg-lights color 0 quad)) + (.lvf vf3 (&-> fg-lights color 1 quad)) + (.lvf vf4 (&-> fg-lights color 2 quad)) + (.lvf vf5 (&-> fg-lights ambient quad)) + (.mul.vf vf5 vf5 vf28) + (.mul.vf vf2 vf2 vf28) + (.mul.vf vf3 vf3 vf28) + (.mul.vf vf4 vf4 vf28) + (.add.vf vf5 vf5 vf29) + (.svf (&-> fg-lights color 0 quad) vf2) + (.svf (&-> fg-lights color 1 quad) vf3) + (.svf (&-> fg-lights color 2 quad) vf4) + (.svf (&-> fg-lights ambient quad) vf5) + + ;; load math camera registers for distance calcs + (let ((at-0 *math-camera*)) + (.lvf vf16 (&-> at-0 plane 0 quad)) + (.lvf vf17 (&-> at-0 plane 1 quad)) + (.lvf vf18 (&-> at-0 plane 2 quad)) + (.lvf vf19 (&-> at-0 plane 3 quad)) + (.lvf vf20 (&-> at-0 guard-plane 0 quad)) + (.lvf vf21 (&-> at-0 guard-plane 1 quad)) + (.lvf vf22 (&-> at-0 guard-plane 2 quad)) + (.lvf vf23 (&-> at-0 guard-plane 3 quad)) + (.lvf vf24 (&-> at-0 camera-rot quad 0)) + (.lvf vf25 (&-> at-0 camera-rot quad 1)) + (.lvf vf26 (&-> at-0 camera-rot quad 2)) + (.lvf vf27 (&-> at-0 camera-rot trans quad)) + ) + + ;; do distance math + (let ((fg-dist (-> (scratchpad-object foreground-work) distance))) + (.lvf vf15 (&-> fg-bounds quad)) + (.mul.w.vf acc vf27 vf0) + (.add.mul.x.vf acc vf24 vf15 acc) + (.add.mul.y.vf acc vf25 vf15 acc) + (.add.mul.z.vf vf15 vf26 vf15 acc :mask #b111) + (.mul.vf vf28 vf15 vf15) + (.max.w.vf vf29 vf0 vf0) + (.add.y.vf acc vf28 vf28) + (.add.mul.z.vf vf28 vf29 vf28 acc :mask #b1) + (.sqrt.vf Q vf28 :ftf #b0) + (.sub.w.vf vf28 vf0 vf15 :mask #b1000) + (.wait.vf) + (.add.vf vf15 vf28 Q :mask #b1000) + (.svf (&-> fg-dist quad) vf15) + + ;; pick lods + (when (< 0.0 (+ (-> fg-dist z) (-> dc bounds w))) + (let ((lod-idx 0)) + (let ((dist-w (-> fg-dist w))) + (set! (-> dc distance) dist-w) + (when (nonzero? (-> dc lod-set max-lod)) + (cond + ((>= (-> dc force-lod) 0) + (set! lod-idx (-> dc force-lod)) + (if (< (-> dc lod-set lod (-> dc lod-set max-lod) dist) dist-w) + (return #f) + ) + ) + (else + (while (and (< lod-idx (the-as int (-> dc lod-set max-lod))) (< (-> dc lod-set lod lod-idx dist) dist-w)) + (+! lod-idx 1) + ) + ) + ) + ) + (if (and (< (-> dc lod-set lod lod-idx dist) dist-w) (< (-> dc force-lod) 0)) + (return #f) + ) + + ;; predict texture use and set masks. + (let ((src-lev (-> *level* level (-> dc level-index))) + (corrected-dist (* dist-w (-> *math-camera* fov-correction-factor))) + (tex-use (-> dc mgeo header texture-usage-group)) + ) + (dotimes (use-fg-idx 7) + (let ((use-idx (+ use-fg-idx 11))) + (if (not (logtest? (-> dc status) (draw-control-status no-closest-distance))) + (set! (-> src-lev closest-object-array use-idx) (fmin (-> src-lev closest-object-array use-idx) dist-w)) + ) + ) + (let ((tex-lod (cond + ((>= corrected-dist (-> tex-use data use-fg-idx data 0 dist)) + 0 + ) + ((>= corrected-dist (-> tex-use data use-fg-idx data 1 dist)) + 1 + ) + (else + 2 + ) + ) + ) + (a2-23 (+ use-fg-idx 11)) + ) + (let ((a3-10 (-> src-lev texture-mask a2-23 mask quad)) + (t0-3 (-> (the-as (pointer uint128) (+ (the-as uint tex-use) (* 48 use-fg-idx) (* tex-lod 16))) 0)) + ) + (.por a3-11 a3-10 t0-3) + ) + (set! (-> src-lev texture-mask a2-23 mask quad) a3-11) + ) + ) + ) + + ;; see if we need special scissor mode. + (if (or (guard-band-cull fg-bounds) (< dist-w (* 1.2 (-> *math-camera* d)))) + (logior! (-> dc status) (draw-control-status close-to-screen)) + (logclear! (-> dc status) (draw-control-status close-to-screen)) + ) + + ;; if we got this far, we're on-screen. + (logior! (-> dc status) (draw-control-status on-screen)) + (if (logtest? (-> dc status) (draw-control-status no-draw-bounds no-draw-bounds2)) + (return #f) + ) + (set! (-> pp clock) (-> sv-16 clock)) + + ;; draw! + (if (or (= lod-idx (-> dc cur-lod)) (logtest? (-> dc status) (draw-control-status lod-set))) + (foreground-draw dc dma-buf dist-w) + ) + ) + + ;; trick to do joint math twice if we're changing lods. + (when (and (< lod-idx (-> dc cur-lod)) (logtest? (-> dc status) (draw-control-status math-skel))) + (let ((v1-159 *matrix-engine*)) + (set! (-> v1-159 (-> v1-159 length)) (process->handle sv-16)) + (+! (-> v1-159 length) 1) + ) + ) + (lod-set! dc lod-idx) + ) + (logior! (-> dc status) (draw-control-status lod-set)) + ) + ) + ) + ) + ) + (read! (-> *perf-stats* data (perf-stat-bucket foreground))) + (none) + ) + ) + ) + +(define *hud-lights* (new 'global 'vu-lights)) +(set-vector! (-> *hud-lights* direction 0) 1.0 0.0 0.0 1.0) +(set-vector! (-> *hud-lights* direction 1) 0.0 1.0 0.0 1.0) +(set-vector! (-> *hud-lights* direction 2) 0.0 0.0 1.0 1.0) +(set-vector! (-> *hud-lights* color 0) 0.0 0.0 0.0 1.0) +(set-vector! (-> *hud-lights* color 1) 0.0 0.0 0.0 1.0) +(set-vector! (-> *hud-lights* color 2) 0.5 0.5 0.5 1.0) +(set-vector! (-> *hud-lights* ambient) 0.5 0.5 0.5 1.0) + +;; todo dma-add-process-drawable-hud + +(defun add-process-drawable ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) + "Call the dma-add-func callback on a draw-control to draw it." + ((-> arg1 dma-add-func) arg0 arg1 arg2 arg3) + (none) + ) + +(defun foreground-engine-execute ((arg0 engine) (arg1 display-frame)) + "Run the foreground drawing engine." + (when (> (length arg0) 0) + (let ((gp-0 (-> *display* frames (-> *display* on-screen) global-buf base))) + (with-profiler 'foreground *profile-foreground-color* + (let ((s4-1 (-> arg1 global-buf))) + ; (let ((v1-29 (-> s4-1 base))) + ; (.sync.l) + ; (.cache dxwbin v1-29 0) + ; (.sync.l) + ; (.cache dxwbin v1-29 1) + ; ) + ; (.sync.l) + ; 0 + + ;; prepare for foreground functions + (foreground-init) + + ;; add dma for each foreground object + (execute-connections arg0 s4-1) + + ;; stitch together buckets/finalize renderers. + (foreground-wrapup) + ) + ) + (let ((v1-49 *dma-mem-usage*)) + (when (nonzero? v1-49) + (set! (-> v1-49 length) (max 36 (-> v1-49 length))) + (set! (-> v1-49 data 35 name) "pris-fragment") + (+! (-> v1-49 data 35 count) 1) + (+! (-> v1-49 data 35 used) + (&- (-> *display* frames (-> *display* on-screen) global-buf base) (the-as uint gp-0)) + ) + (set! (-> v1-49 data 35 total) (-> v1-49 data 35 used)) + ) + ) + ) + ) + 0 + (none) + ) + (defun main-debug-hook () + "Execute the debug engine, collision renderer, and draw-instance-info." (when (not (or (= *master-mode* 'menu) (= *master-mode* 'progress))) (let ((a0-3 *col-rend*)) (if (-> a0-3 draw?) @@ -289,6 +734,40 @@ (define *debug-hook* (cons main-debug-hook '())) +(define *add-sphere* #f) + +(define *generic-effect-mode* 0) + +(defun foreground-initialize-engines () + (let ((v1-0 *shadow-globals*)) + (dotimes (a0-0 2) + (let ((a1-2 (-> v1-0 bucket a0-0))) + (set! (-> a1-2 first) (the-as uint 0)) + (set! (-> a1-2 next) (the-as uint 0)) + (set! (-> a1-2 shadow-color) (if (zero? a0-0) + (the-as uint #x80f0f0f0) + (the-as uint (-> *setting-control* user-current spotlight-color)) + ) + ) + (set! (-> a1-2 constants) (the-as basic 0)) + ) + ) + ) + (none) + ) + +(defun foreground-execute-cpu-vu0-engines () + (let ((gp-0 (-> *display* frames (-> *display* on-screen) global-buf))) + (bones-init gp-0) + (bones-mtx-calc-execute) + ;;(generic-merc-execute-all gp-0) + ;;(shadow-execute-all gp-0) + ) + ;;(lightning-draw-all) + (none) + ) + + (defun real-main-draw-hook () (local-vars (a0-96 int) (a0-98 int)) (with-pp @@ -334,7 +813,7 @@ ; ) ;; set up foreground buckets - ; (foreground-initialize-engines) + (foreground-initialize-engines) ;; update time of day and wind effects. (let ((gp-2 (-> pp clock))) @@ -375,15 +854,15 @@ ; ) ;; run the foreground system - ; (foreground-engine-execute *foreground-draw-engine* (-> *display* frames (-> *display* on-screen))) - ; (let ((gp-6 (-> pp clock))) - ; (if (= (-> *time-of-day-context* mode) (time-of-day-palette-id unk3)) - ; (set! (-> pp clock) (-> *display* bg-clock)) - ; (set! (-> pp clock) (-> *display* real-clock)) - ; ) - ; (foreground-execute-cpu-vu0-engines) - ; (set! (-> pp clock) gp-6) - ; ) + (foreground-engine-execute *foreground-draw-engine* (-> *display* frames (-> *display* on-screen))) + (let ((gp-6 (-> pp clock))) + (if (= (-> *time-of-day-context* mode) (time-of-day-palette-id unk3)) + (set! (-> pp clock) (-> *display* bg-clock)) + (set! (-> pp clock) (-> *display* real-clock)) + ) + (foreground-execute-cpu-vu0-engines) + (set! (-> pp clock) gp-6) + ) ;; ?? ; (when *add-sphere* @@ -950,7 +1429,7 @@ ;; post-draw buffer setup (tfrag-vu1-init-buffers) (tie-vu1-init-buffers) - ; (merc-vu1-init-buffers) + (merc-vu1-init-buffers) ; (emerc-vu1-init-buffers) ; (generic-vu1-init-buffers) diff --git a/goal_src/jak2/engine/game/game-h.gc b/goal_src/jak2/engine/game/game-h.gc index c3888c2566..c1c82f2259 100644 --- a/goal_src/jak2/engine/game/game-h.gc +++ b/goal_src/jak2/engine/game/game-h.gc @@ -320,7 +320,7 @@ (prev-state state :offset-assert 124) (id uint32 :offset-assert 128) (count uint32 :offset-assert 132) - (penetrate-using uint64 :offset-assert 136) + (penetrate-using penetrate :offset-assert 136) (damage float :offset-assert 144) (shield-damage float :offset-assert 148) (knock uint8 :offset-assert 152) diff --git a/goal_src/jak2/engine/game/game-save.gc b/goal_src/jak2/engine/game/game-save.gc index 388543171f..eba6d73fda 100644 --- a/goal_src/jak2/engine/game/game-save.gc +++ b/goal_src/jak2/engine/game/game-save.gc @@ -1712,7 +1712,7 @@ ) (when (< (mod (-> *display* real-clock frame-counter) 300) 270) (with-dma-buffer-add-bucket ((s5-3 (-> *display* frames (-> *display* on-screen) global-buf)) - (bucket-id bucket-320) + (bucket-id progress) ) (hud-sprite-method-9 (-> self icon) s5-3 (-> self level)) ) diff --git a/goal_src/jak2/engine/game/main.gc b/goal_src/jak2/engine/game/main.gc index 89371ef601..78a6ea7b39 100644 --- a/goal_src/jak2/engine/game/main.gc +++ b/goal_src/jak2/engine/game/main.gc @@ -478,15 +478,15 @@ ) ; ;; Run blerc to modify foreground models - ; (with-profiler 'merc *profile-merc-color* + (with-profiler 'merc *profile-merc-color* ; (blerc-execute) ; (blerc-init) - ; ) + ) ; ;; Run other merc effects that modify vertices ; (texscroll-execute) ; (ripple-execute) - ; (region-execute) + (region-execute) ;; final call to update joints before drawing. (with-profiler 'joints *profile-joints-color* diff --git a/goal_src/jak2/engine/gfx/foreground/bones-h.gc b/goal_src/jak2/engine/gfx/foreground/bones-h.gc index c89e95ba25..c0b3073b12 100644 --- a/goal_src/jak2/engine/gfx/foreground/bones-h.gc +++ b/goal_src/jak2/engine/gfx/foreground/bones-h.gc @@ -9,8 +9,8 @@ (defenum bone-calc-flags :type uint16 :bitfield #t - (bncfl00 0) - (bncfl01 1) ;; use identity matrix in bone matrix calc instead of cam rot (effectively screen-space bones?) + (write-ripple-data 0) + (no-cam-rot 1) (bncfl02 2) (bncfl03 3) (bncfl04 4) @@ -30,9 +30,9 @@ ;; DECOMP BEGINS (deftype bone-buffer (structure) - ((joint joint-anim-compressed-hdr 16 :inline :offset-assert 0) - (bone bone 16 :inline :offset-assert 1024) - (_pad uint8 2048 :offset-assert 2304) + ((joint matrix 16 :inline :offset-assert 0) + (bone bone 16 :inline :offset-assert 1024) + (output pris-mtx 16 :inline :offset-assert 2304) ) :method-count-assert 9 :size-assert #x1100 @@ -40,11 +40,11 @@ ) (deftype bone-layout (structure) - ((data uint16 8 :offset-assert 0) - (joint joint 2 :offset 0) - (bone bone 2 :offset 8) - (output uint32 2 :offset 16) - (unused uint32 2 :offset 24) + ((data uint16 8 :offset-assert 0) + (joint (inline-array matrix) 2 :offset 0) + (bone (inline-array bone) 2 :offset 8) + (output (inline-array pris-mtx) 2 :offset 16) + (unused uint32 2 :offset 24) ) :method-count-assert 9 :size-assert #x20 @@ -52,15 +52,15 @@ ) (deftype bone-regs (structure) - ((dma-buf basic :offset-assert 0) - (wait-count uint32 :offset-assert 4) - (in-count uint32 :offset-assert 8) - (sp-size uint32 :offset-assert 12) - (sp-bufnum uint32 :offset-assert 16) - (joint-ptr (inline-array joint) :offset-assert 20) - (bone-ptr (inline-array bone) :offset-assert 24) - (num-bones uint32 :offset-assert 28) - (mtxs uint32 :offset-assert 32) + ((dma-buf basic :offset-assert 0) + (wait-count uint32 :offset-assert 4) + (in-count uint32 :offset-assert 8) + (sp-size uint32 :offset-assert 12) + (sp-bufnum uint32 :offset-assert 16) + (joint-ptr (inline-array joint) :offset-assert 20) + (bone-ptr (inline-array bone) :offset-assert 24) + (num-bones uint32 :offset-assert 28) + (mtxs (inline-array pris-mtx) :offset-assert 32) ) :method-count-assert 9 :size-assert #x24 @@ -95,19 +95,20 @@ ) (deftype bone-calculation (structure) - ((flags bone-calc-flags :offset-assert 0) - (num-bones uint16 :offset-assert 2) - (matrix-area (inline-array matrix) :offset-assert 4) - (joints (inline-array joint) :offset-assert 8) - (bones (inline-array bone) :offset-assert 12) - (ripple-scale float :offset-assert 16) - (ripple-y-scale float :offset-assert 20) - (ripple-normal-scale float :offset-assert 24) - (ripple-area (inline-array vector) :offset-assert 28) - (next bone-calculation :offset-assert 32) - (dummy-1 uint32 :offset-assert 36) - (dummy-2 uint32 :offset-assert 40) - (dummy-3 uint32 :offset-assert 44) + ((flags bone-calc-flags :offset-assert 0) + (num-bones uint16 :offset-assert 2) + (matrix-area (inline-array pris-mtx) :offset-assert 4) + (joints (inline-array joint) :offset-assert 8) + (bones (inline-array bone) :offset-assert 12) + (ripple-scale float :offset-assert 16) + (ripple-y-scale float :offset-assert 20) + (ripple-normal-scale float :offset-assert 24) + (ripple-area (inline-array vector) :offset-assert 28) + (ripple-vec vector :inline :offset 16) + (next bone-calculation :offset-assert 32) + (dummy-1 uint32 :offset-assert 36) + (dummy-2 uint32 :offset-assert 40) + (dummy-3 uint32 :offset-assert 44) ) :method-count-assert 9 :size-assert #x30 diff --git a/goal_src/jak2/engine/gfx/foreground/bones.gc b/goal_src/jak2/engine/gfx/foreground/bones.gc index 8a47589829..a244577ad0 100644 --- a/goal_src/jak2/engine/gfx/foreground/bones.gc +++ b/goal_src/jak2/engine/gfx/foreground/bones.gc @@ -7,3 +7,306 @@ ;; DECOMP BEGINS +;; todo check bad reference. + + +;; bones, joints, cspace, matrix, joint-anim-frames... + +;; The "joints" define the structure of the skeleton, just storing a bind pose, and parent info. These don't change, +;; and are loaded as part of the skeleton. The actual joint objects are stored in the art-joint-geo. + +;; The "do-joint-math" method of process-drawable is responsible for computing the joint-anim-frame and the bones. +;; The "cspace" system is used to compute bones from joint-anim-frames. +;; The "joint-anim-frame" is a list of transformqs for the relative transform between bones. +;; The "bones" are the world space transform of each 'bone' + +;; The "do-joint-math" function does: +;; - call the generate-frame-function callback to generate a joint-anim-frame (does the joint anim decompress/blending) +;; - call the prebind-function which can modify the relative transforms (eg: joint-mods) +;; - walk the tree of joints, computing bones using the cspace +;; - call the postbind-function, for other effects. + +;; The "bones" system creates matrices for foreground renderers from bones/joints. +;; The inputs are bones/joints, and the output is pris-mtx, which is a 4x4 "t-mtx" for transforming, and a 3x3 (stored in 3 vec4's) +;; n-mtx for rotating normals. + +;; all matrices are calculated at once, and shared between merc/emerc/gmerc/shadow +;; this is done by a linked list of "bone calculations", which is stashed in the dma buffer. + +;; list node for pending bone calculations. These are terminated by 0's. +(deftype bone-calculation-list (structure) + ((first bone-calculation :offset-assert 0) + (next bone-calculation :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +;; head of bone calculation list +(define *bone-calculation-list* (new 'global 'bone-calculation-list)) + +(defun bone-list-init () + "Reset bone calculation list to have nothing in it." + (let ((v1-0 *bone-calculation-list*)) + (set! (-> v1-0 first) (the-as bone-calculation 0)) + (set! (-> v1-0 next) (the-as bone-calculation 0)) + ) + 0 + 0 + (none) + ) + +;; clear list. +(bone-list-init) + +;; VU0 microprogram for bone calculations. +(define bones-vu0-block (new 'static 'vu-function :length 54 :qlength 27)) + +(defun bones-set-sqwc () + "Set the sqwc register so the DMA transfer of joints skips the metadata and just transfers the bind-pose." + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4)) + (none) + ) + +(defun bones-reset-sqwc () + "Reset sqwc so DMA works normally again (see bones-set-sqwc)" + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1)) + (none) + ) + +(defun bones-init ((arg0 dma-buffer)) + "Initialize scratchpad/vu0 for BONE MATH." + (let ((v1-1 (-> (scratchpad-object bone-memory) work))) + (+ #x70000000 0) + + ;; scratchpad layout of double-buffered bone calculation. + + ;; "joints", which are stripped of their metadata qw and are 4qw matrices + (set! (-> v1-1 layout joint 0) (-> (scratchpad-object bone-memory) buffer 0 joint)) + (set! (-> v1-1 layout joint 1) (-> (scratchpad-object bone-memory) buffer 1 joint)) + + ;; "bones", which are 5 qw transform + scale separately + (set! (-> v1-1 layout bone 0) (-> (scratchpad-object bone-memory) buffer 0 bone)) + (set! (-> v1-1 layout bone 1) (-> (scratchpad-object bone-memory) buffer 1 bone)) + + ;; "output" pris-mtx. + (set! (-> v1-1 layout output 0) (-> (scratchpad-object bone-memory) buffer 0 output)) + (set! (-> v1-1 layout output 1) (-> (scratchpad-object bone-memory) buffer 1 output)) + ) + + ;; upload the bones vu0 block. + (unless PC_PORT + (let ((gp-0 *vu0-dma-list*)) + (let ((v1-2 gp-0)) + (set! (-> v1-2 base) (-> v1-2 data)) + (set! (-> v1-2 end) (&-> v1-2 data-buffer (-> v1-2 allocated-length))) + ) + (dma-buffer-add-vu-function gp-0 bones-vu0-block 0) + (let* ((v1-3 gp-0) + (a0-20 (the-as object (-> v1-3 base))) + ) + (set! (-> (the-as dma-packet a0-20) dma) (new 'static 'dma-tag :id (dma-tag-id end))) + (set! (-> (the-as (pointer uint64) a0-20) 1) (the-as uint 0)) + (set! (-> v1-3 base) (&+ (the-as pointer a0-20) 16)) + ) + (.sync.l) + (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0) + ) + ) + 0 + (none) + ) + +;; note that the original game doesn't quite use a normal calling convention here, so we cheat and pass an extra arg. +;; see the C++ code for more details. +(def-mips2c bones-mtx-calc (function (inline-array pris-mtx) (inline-array joint) (inline-array bone) uint object none)) + +(defun bones-mtx-calc-execute () + "Execute all bone matrix calculations." + (rlet ((vf1 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf27 :class vf) + (vf28 :class vf) + (vf29 :class vf) + (vf30 :class vf) + (vf31 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + ) + (with-profiler 'bones *profile-bones-color* + (reset! (-> *perf-stats* data (perf-stat-bucket bones))) + ;; set up layout in scratchpad (again) + (let ((v1-24 (-> (scratchpad-object bone-memory) work))) + (set! (-> v1-24 layout joint 0) (-> (scratchpad-object bone-memory) buffer 0 joint)) + (set! (-> v1-24 layout joint 1) (-> (scratchpad-object bone-memory) buffer 1 joint)) + (set! (-> v1-24 layout bone 0) (-> (scratchpad-object bone-memory) buffer 0 bone)) + (set! (-> v1-24 layout bone 1) (-> (scratchpad-object bone-memory) buffer 1 bone)) + (set! (-> v1-24 layout output 0) (-> (scratchpad-object bone-memory) buffer 0 output)) + (set! (-> v1-24 layout output 1) (-> (scratchpad-object bone-memory) buffer 1 output)) + ) + + ;; set sqwc to upload joints. This will skip the 1 qw of metadata and just grab the joint matrix. + ;; (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4)) + + ;; loop over bone calculations: + (let* ((v1-26 *bone-calculation-list*) + (gp-1 *identity-matrix*) + (s5-1 (-> *math-camera* camera-rot)) + (s4-1 (-> v1-26 first)) + ) + (while (nonzero? s4-1) ;; loop + + ;; pick correct matrix. The pris-mtx includes camera rotation, so all that's needed in the final + ;; renderers is perspective. (unless you set no-cam-rot) + (let ((v1-29 (if (logtest? (-> s4-1 flags) (bone-calc-flags no-cam-rot)) + gp-1 + s5-1 + ) + ) + ) + (.lvf vf28 (&-> v1-29 quad 0)) + (.lvf vf29 (&-> v1-29 quad 1)) + (.lvf vf30 (&-> v1-29 quad 2)) + (.lvf vf31 (&-> v1-29 trans quad)) + (.lvf vf25 (&-> v1-29 quad 0)) + (.lvf vf26 (&-> v1-29 quad 1)) + (.lvf vf27 (&-> v1-29 quad 2)) + + ;; calculate! + (bones-mtx-calc + (-> s4-1 matrix-area) + (-> s4-1 joints) + (-> s4-1 bones) + (-> s4-1 num-bones) + v1-29 ;; hack, to pass matrix to bones-mtx-calc in a better way. + ) + ) + + ;; there is an optional post-processing step for ripple. + (when (logtest? (-> s4-1 flags) (bone-calc-flags write-ripple-data)) + (let* ((a2-1 s4-1) + (v1-34 (-> a2-1 num-bones)) + (a0-26 (the-as pris-mtx (-> a2-1 matrix-area))) + (a1-11 (the-as pris-mtx (-> a2-1 ripple-area))) + ) + (.lvf vf1 (&-> a2-1 ripple-vec quad)) + (label cfg-15) + (.lvf vf5 (&-> a0-26 t-mtx quad 1)) + (.lvf vf6 (&-> a0-26 t-mtx trans quad)) + (.lvf vf7 (&-> a0-26 n-mtx quad 0)) + (.lvf vf8 (&-> a0-26 n-mtx quad 2)) + (.mul.x.vf vf4 vf5 vf1) + (.mul.y.vf vf5 vf5 vf1) + (let ((a3-1 (-> a0-26 t-mtx quad 0))) + (.mul.z.vf vf7 vf7 vf1) + (let ((a2-2 (-> a0-26 t-mtx quad 2))) + (.mul.z.vf vf8 vf8 vf1) + (set! (-> a1-11 t-mtx quad 0) a3-1) + (let ((a3-2 (-> a0-26 n-mtx quad 1))) + (.sub.vf vf6 vf6 vf4) + (set! (-> a1-11 t-mtx quad 2) a2-2) + (.svf (&-> a1-11 t-mtx quad 1) vf5) + (set! (-> a1-11 n-mtx quad 1) a3-2) + ) + ) + ) + (+! v1-34 -1) + (.svf (&-> a1-11 n-mtx quad 0) vf7) + ;; (.addiu a0-26 a0-26 128) + (&+! a0-26 128) + (.svf (&-> a1-11 t-mtx trans quad) vf6) + ;; (.addiu a1-11 a1-11 128) + (&+! a1-11 128) + (b! (nonzero? v1-34) cfg-15 :delay (.svf (&-> (the (inline-array vector) a1-11) -2 quad) vf8)) + ) + 0 + ) + (set! s4-1 (-> s4-1 next)) + ) + ) + + ;; reset sqwc + ;; (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1)) + + ;; clear bone list + (bone-list-init) + (read! (-> *perf-stats* data (perf-stat-bucket bones))) + ) + 0 + (none) + ) + ) + + +(defun-debug dump-qword ((arg0 qword)) + (let ((v1-0 arg0)) + (format + 0 + "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X~%" + v1-0 + (-> v1-0 data 0) + (-> v1-0 data 1) + (-> v1-0 data 2) + (-> v1-0 data 3) + ) + ) + 0 + (none) + ) + +(defun-debug dump-mem ((arg0 pointer) (arg1 int)) + (dotimes (s4-0 arg1) + (format + 0 + "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X" + (&+ arg0 (* (* s4-0 4) 4)) + (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4)))) + ) + (format + 0 + " ~F ~F ~F ~F ~%" + (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4)))) + ) + ) + 0 + (none) + ) + +(defun-debug bones-debug () + 0 + (none) + ) + +(defun-debug dump-bone-mem () + (format 0 "== joints 0 ===========~%") + (dump-mem (the-as pointer (+ 80 #x70000000)) 64) + (format 0 "== bones 0 ============~%") + (dump-mem (the-as pointer (+ 1104 #x70000000)) 80) + (format 0 "== output 0 ===========~%") + (dump-mem (the-as pointer (+ 2384 #x70000000)) 128) + (format 0 "~%~%~%") + (format 0 "== joints 1 ===========~%") + (dump-mem (the-as pointer (+ 4432 #x70000000)) 64) + (format 0 "== bones 1 ============~%") + (dump-mem (the-as pointer (+ 5456 #x70000000)) 80) + (format 0 "== output 1 ===========~%") + (dump-mem (the-as pointer (+ 6736 #x70000000)) 128) + (format 0 "========================~%~%") + 0 + (none) + ) + + + + diff --git a/goal_src/jak2/engine/gfx/foreground/foreground-h.gc b/goal_src/jak2/engine/gfx/foreground/foreground-h.gc index 696e173973..cd27c68ec2 100644 --- a/goal_src/jak2/engine/gfx/foreground/foreground-h.gc +++ b/goal_src/jak2/engine/gfx/foreground/foreground-h.gc @@ -6,6 +6,7 @@ ;; dgos: ENGINE, GAME (define-extern *foreground-draw-engine* engine) +(define-extern vu-lights<-light-group! (function vu-lights light-group none)) ;; DECOMP BEGINS @@ -13,7 +14,7 @@ ((first uint32 :offset-assert 0) (next uint32 :offset-assert 4) (state generic-bucket-state :inline :offset-assert 8) - (vu1-bucket int32 :offset-assert 16) + (vu1-bucket bucket-id :offset-assert 16) ) :pack-me :method-count-assert 9 @@ -24,7 +25,7 @@ (deftype merc-chain (structure) ((first dma-packet :offset-assert 0) (patch dma-packet :offset-assert 4) - (vu1-bucket int32 :offset-assert 8) + (vu1-bucket bucket-id :offset-assert 8) ) :pack-me :method-count-assert 9 @@ -66,11 +67,11 @@ (mercneric-used uint32 :offset-assert 12) (use-isometric uint32 :offset-assert 16) (base-start dma-packet :offset-assert 20) - (joint-ptr uint32 :offset-assert 24) - (bone-ptr uint32 :offset-assert 28) + (joint-ptr (inline-array joint) :offset-assert 24) + (bone-ptr (inline-array bone) :offset-assert 28) (num-bones uint32 :offset-assert 32) - (mtxs uint32 :offset-assert 36) - (dma-buf basic :offset-assert 40) + (mtxs (inline-array pris-mtx) :offset-assert 36) + (dma-buf dma-buffer :offset-assert 40) (default-texture-index uint32 :offset-assert 44) (mercneric-chain mercneric-chain :offset-assert 48) (level-buckets foreground-level-buckets :offset-assert 52) @@ -82,7 +83,7 @@ (deftype foreground-work (structure) ((regs foreground-regs :inline :offset-assert 0) - (draw-index-map uint16 7 :offset 64) + (draw-index-map uint8 7 :offset 64) (grid foreground-bucket-grid :inline :offset-assert 80) (bounds sphere :inline :offset-assert 2464) (lights vu-lights :inline :offset-assert 2480) @@ -115,6 +116,7 @@ (deftype merc-effect-bucket-info (structure) ((color-fade rgba :offset-assert 0) + (alpha uint8 :offset 3) (merc-path uint8 :offset-assert 4) (ignore-alpha uint8 :offset-assert 5) (disable-draw uint8 :offset-assert 6) diff --git a/goal_src/jak2/engine/gfx/foreground/foreground.gc b/goal_src/jak2/engine/gfx/foreground/foreground.gc index 747adeac42..be7abad112 100644 --- a/goal_src/jak2/engine/gfx/foreground/foreground.gc +++ b/goal_src/jak2/engine/gfx/foreground/foreground.gc @@ -5,8 +5,1173 @@ ;; name in dgo: foreground ;; dgos: ENGINE, GAME +(defenum merc-mode + :type int32 + (merc 0) + (emerc 1) + (mercneric 2) + ) + + ;; DECOMP BEGINS -;; this is wrong, just a placeholder -(define *default-shadow-settings* (new 'static 'shadow-settings)) +(define foreground-vu0-block (new 'static 'vu-function :length 9 :qlength 5)) + +(define *bucket-map* (new 'static 'array bucket-id-16 200 + (bucket-id-16 merc-l0-tfrag) + (bucket-id-16 emerc-l0-tfrag) + (bucket-id-16 gmerc-l0-tfrag) + (bucket-id-16 tex-l0-tfrag) + (bucket-id-16 merc-l0-pris) + (bucket-id-16 emerc-l0-pris) + (bucket-id-16 gmerc-l0-pris) + (bucket-id-16 tex-l0-pris) + (bucket-id-16 merc-l0-shrub) + (bucket-id-16 emerc-l0-shrub) + (bucket-id-16 gmerc-l0-shrub) + (bucket-id-16 tex-l0-shrub) + (bucket-id-16 merc-l0-alpha) + (bucket-id-16 emerc-l0-alpha) + (bucket-id-16 gmerc-l0-alpha) + (bucket-id-16 tex-l0-alpha) + (bucket-id-16 merc-l0-water) + (bucket-id-16 merc-l0-water) + (bucket-id-16 gmerc-l0-water) + (bucket-id-16 tex-l0-water) + (bucket-id-16 merc-l0-pris) + (bucket-id-16 emerc-l0-pris) + (bucket-id-16 gmerc-l0-pris) + (bucket-id-16 tex-l0-pris) + (bucket-id-16 merc-l0-pris2) + (bucket-id-16 emerc-l0-pris2) + (bucket-id-16 gmerc-l0-pris2) + (bucket-id-16 tex-l0-pris2) + (bucket-id-16 merc-l1-tfrag) + (bucket-id-16 emerc-l1-tfrag) + (bucket-id-16 gmerc-l1-tfrag) + (bucket-id-16 tex-l1-tfrag) + (bucket-id-16 merc-l1-pris) + (bucket-id-16 emerc-l1-pris) + (bucket-id-16 gmerc-l1-pris) + (bucket-id-16 tex-l1-pris) + (bucket-id-16 merc-l1-shrub) + (bucket-id-16 emerc-l1-shrub) + (bucket-id-16 gmerc-l1-shrub) + (bucket-id-16 tex-l1-shrub) + (bucket-id-16 merc-l1-alpha) + (bucket-id-16 emerc-l1-alpha) + (bucket-id-16 gmerc-l1-alpha) + (bucket-id-16 tex-l1-alpha) + (bucket-id-16 merc-l1-water) + (bucket-id-16 merc-l1-water) + (bucket-id-16 gmerc-l1-water) + (bucket-id-16 tex-l1-water) + (bucket-id-16 merc-l1-pris) + (bucket-id-16 emerc-l1-pris) + (bucket-id-16 gmerc-l1-pris) + (bucket-id-16 tex-l1-pris) + (bucket-id-16 merc-l1-pris2) + (bucket-id-16 emerc-l1-pris2) + (bucket-id-16 gmerc-l1-pris2) + (bucket-id-16 tex-l1-pris2) + (bucket-id-16 merc-l2-tfrag) + (bucket-id-16 emerc-l2-tfrag) + (bucket-id-16 gmerc-l2-tfrag) + (bucket-id-16 tex-l2-tfrag) + (bucket-id-16 merc-l2-pris) + (bucket-id-16 emerc-l2-pris) + (bucket-id-16 gmerc-l2-pris) + (bucket-id-16 tex-l2-pris) + (bucket-id-16 merc-l2-shrub) + (bucket-id-16 emerc-l2-shrub) + (bucket-id-16 gmerc-l2-shrub) + (bucket-id-16 tex-l2-shrub) + (bucket-id-16 merc-l2-alpha) + (bucket-id-16 emerc-l2-alpha) + (bucket-id-16 gmerc-l2-alpha) + (bucket-id-16 tex-l2-alpha) + (bucket-id-16 merc-l2-water) + (bucket-id-16 merc-l2-water) + (bucket-id-16 gmerc-l2-water) + (bucket-id-16 tex-l2-water) + (bucket-id-16 merc-l2-pris) + (bucket-id-16 emerc-l2-pris) + (bucket-id-16 gmerc-l2-pris) + (bucket-id-16 tex-l2-pris) + (bucket-id-16 merc-l2-pris2) + (bucket-id-16 emerc-l2-pris2) + (bucket-id-16 gmerc-l2-pris2) + (bucket-id-16 tex-l2-pris2) + (bucket-id-16 merc-l3-tfrag) + (bucket-id-16 emerc-l3-tfrag) + (bucket-id-16 gmerc-l3-tfrag) + (bucket-id-16 tex-l3-tfrag) + (bucket-id-16 merc-l3-pris) + (bucket-id-16 emerc-l3-pris) + (bucket-id-16 gmerc-l3-pris) + (bucket-id-16 tex-l3-pris) + (bucket-id-16 merc-l3-shrub) + (bucket-id-16 emerc-l3-shrub) + (bucket-id-16 gmerc-l3-shrub) + (bucket-id-16 tex-l3-shrub) + (bucket-id-16 merc-l3-alpha) + (bucket-id-16 emerc-l3-alpha) + (bucket-id-16 gmerc-l3-alpha) + (bucket-id-16 tex-l3-alpha) + (bucket-id-16 merc-l3-water) + (bucket-id-16 merc-l3-water) + (bucket-id-16 gmerc-l3-water) + (bucket-id-16 tex-l3-water) + (bucket-id-16 merc-l3-pris) + (bucket-id-16 emerc-l3-pris) + (bucket-id-16 gmerc-l3-pris) + (bucket-id-16 tex-l3-pris) + (bucket-id-16 merc-l3-pris2) + (bucket-id-16 emerc-l3-pris2) + (bucket-id-16 gmerc-l3-pris2) + (bucket-id-16 tex-l3-pris2) + (bucket-id-16 merc-l4-tfrag) + (bucket-id-16 emerc-l4-tfrag) + (bucket-id-16 gmerc-l4-tfrag) + (bucket-id-16 tex-l4-tfrag) + (bucket-id-16 merc-l4-pris) + (bucket-id-16 emerc-l4-pris) + (bucket-id-16 gmerc-l4-pris) + (bucket-id-16 tex-l4-pris) + (bucket-id-16 merc-l4-shrub) + (bucket-id-16 emerc-l4-shrub) + (bucket-id-16 gmerc-l4-shrub) + (bucket-id-16 tex-l4-shrub) + (bucket-id-16 merc-l4-alpha) + (bucket-id-16 emerc-l4-alpha) + (bucket-id-16 gmerc-l4-alpha) + (bucket-id-16 tex-l4-alpha) + (bucket-id-16 merc-l4-water) + (bucket-id-16 merc-l4-water) + (bucket-id-16 gmerc-l4-water) + (bucket-id-16 tex-l4-water) + (bucket-id-16 merc-l4-pris) + (bucket-id-16 emerc-l4-pris) + (bucket-id-16 gmerc-l4-pris) + (bucket-id-16 tex-l4-pris) + (bucket-id-16 merc-l4-pris2) + (bucket-id-16 emerc-l4-pris2) + (bucket-id-16 gmerc-l4-pris2) + (bucket-id-16 tex-l4-pris2) + (bucket-id-16 merc-l5-tfrag) + (bucket-id-16 emerc-l5-tfrag) + (bucket-id-16 gmerc-l5-tfrag) + (bucket-id-16 tex-l5-tfrag) + (bucket-id-16 merc-l5-pris) + (bucket-id-16 emerc-l5-pris) + (bucket-id-16 gmerc-l5-pris) + (bucket-id-16 tex-l5-pris) + (bucket-id-16 merc-l5-shrub) + (bucket-id-16 emerc-l5-shrub) + (bucket-id-16 gmerc-l5-shrub) + (bucket-id-16 tex-l5-shrub) + (bucket-id-16 merc-l5-alpha) + (bucket-id-16 emerc-l5-alpha) + (bucket-id-16 gmerc-l5-alpha) + (bucket-id-16 tex-l5-alpha) + (bucket-id-16 merc-l5-water) + (bucket-id-16 merc-l5-water) + (bucket-id-16 gmerc-l5-water) + (bucket-id-16 tex-l5-water) + (bucket-id-16 merc-l5-pris) + (bucket-id-16 emerc-l5-pris) + (bucket-id-16 gmerc-l5-pris) + (bucket-id-16 tex-l5-pris) + (bucket-id-16 merc-l5-pris2) + (bucket-id-16 emerc-l5-pris2) + (bucket-id-16 gmerc-l5-pris2) + (bucket-id-16 tex-l5-pris2) + (bucket-id-16 merc-lcom-tfrag) + (bucket-id-16 emerc-lcom-tfrag) + (bucket-id-16 gmerc-lcom-tfrag) + (bucket-id-16 tex-lcom-tfrag) + (bucket-id-16 merc-lcom-pris) + (bucket-id-16 emerc-lcom-pris) + (bucket-id-16 gmerc-lcom-pris) + (bucket-id-16 tex-lcom-pris) + (bucket-id-16 merc-lcom-shrub) + (bucket-id-16 emerc-lcom-shrub) + (bucket-id-16 gmerc-lcom-shrub) + (bucket-id-16 tex-lcom-shrub) + (bucket-id-16 merc-lcom-pris) + (bucket-id-16 emerc-lcom-pris) + (bucket-id-16 gmerc-lcom-pris) + (bucket-id-16 tex-lcom-pris) + (bucket-id-16 merc-lcom-water) + (bucket-id-16 merc-lcom-water) + (bucket-id-16 gmerc-lcom-water) + (bucket-id-16 tex-lcom-water) + (bucket-id-16 merc-lcom-pris) + (bucket-id-16 emerc-lcom-pris) + (bucket-id-16 gmerc-lcom-pris) + (bucket-id-16 tex-lcom-pris) + (bucket-id-16 merc-lcom-pris2) + (bucket-id-16 emerc-lcom-pris2) + (bucket-id-16 gmerc-lcom-pris2) + (bucket-id-16 tex-lcom-pris2) + (bucket-id-16 bucket-0) + (bucket-id-16 bucket-0) + (bucket-id-16 bucket-0) + (bucket-id-16 bucket-0) + ) + ) + +(defun vu1-bucket-map ((arg0 int) (arg1 int) (arg2 merc-mode)) + "level, tex, mode -> bucket." + (the-as bucket-id (-> *bucket-map* (+ (+ (* 28 arg0) (* arg1 4)) (the-as int arg2)))) + ) + +(defun generic-bucket-state-init ((arg0 generic-bucket-state)) + "Generic buckets double buffer across models and store their state in generic-bucket-state. + Reset a state for the first transfer" + (set! (-> arg0 gifbuf-adr) (the-as uint 837)) + (set! (-> arg0 inbuf-adr) (the-as uint 9)) + (none) + ) + +(defun mercneric-chain-init ((arg0 mercneric-chain) (arg1 bucket-id)) + "Initialize a mercneric chain. (generic chain specific to merc)" + (set! (-> arg0 first) (the-as uint 0)) + (set! (-> arg0 next) (the-as uint 0)) + (set! (-> arg0 vu1-bucket) arg1) + (generic-bucket-state-init (-> arg0 state)) + (none) + ) + +(defun foreground-init () + (let ((gp-0 (scratchpad-object foreground-work))) + (vu-lights-default! *default-lights*) + ;; upload foreground vu0. + ; (let ((s5-0 *vu0-dma-list*)) + ; (let ((v1-1 s5-0)) + ; (set! (-> v1-1 base) (-> v1-1 data)) + ; (set! (-> v1-1 end) (&-> v1-1 data-buffer (-> v1-1 allocated-length))) + ; ) + ; (dma-buffer-add-vu-function s5-0 foreground-vu0-block 0) + ; (let* ((v1-2 s5-0) + ; (a0-6 (the-as object (-> v1-2 base))) + ; ) + ; (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :id (dma-tag-id end))) + ; (set! (-> (the-as (pointer uint64) a0-6) 1) (the-as uint 0)) + ; (set! (-> v1-2 base) (&+ (the-as pointer a0-6) 16)) + ; ) + ; (.sync.l) + ; (dma-buffer-send-chain (the-as dma-bank-source #x10008000) s5-0) + ; ) + ;; set up templates + (set! (-> gp-0 next-tmpl dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> gp-0 next-tmpl vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + (set! (-> gp-0 next-tmpl vif1) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + + ;; stash drawing map + (let ((v1-7 *level*)) + (dotimes (a0-9 7) + (set! (-> gp-0 draw-index-map a0-9) (-> v1-7 draw-index-map a0-9)) + ) + ) + + ;; bucket lookups, set up chains. + (dotimes (s5-1 7) + (let ((s4-0 (-> gp-0 grid level-buckets s5-1))) + (dotimes (s3-0 7) + (let ((s1-0 (-> s4-0 data s3-0))) + (set! (-> s1-0 merc first) (the-as dma-packet 0)) + (set! (-> s1-0 merc patch) (the-as dma-packet 0)) + (set! (-> s1-0 merc vu1-bucket) (vu1-bucket-map s5-1 s3-0 (merc-mode merc))) + (set! (-> s1-0 emerc first) (the-as dma-packet 0)) + (set! (-> s1-0 emerc patch) (the-as dma-packet 0)) + (set! (-> s1-0 emerc vu1-bucket) (vu1-bucket-map s5-1 s3-0 (merc-mode emerc))) + (mercneric-chain-init (-> s1-0 mercneric) (vu1-bucket-map s5-1 s3-0 (merc-mode mercneric))) + ) + ) + ) + ) + ;; warp chain init. + (mercneric-chain-init (-> gp-0 grid warp-chain) (bucket-id gmerc-warp)) + ) + (none) + ) + +(defun texscroll-make-request ((arg0 merc-effect)) + (with-pp + (let* ((v1-1 (-> *foreground* texscroll requests)) + (a1-0 (the-as structure (-> arg0 extra-info))) + (a1-1 (the-as + mei-texture-scroll + (+ (the-as uint a1-0) (* (-> (the-as merc-extra-info a1-0) texture-scroll-offset) 16)) + ) + ) + ) + (when (< v1-1 32) + (let* ((a3-1 (the-as int (-> pp clock integral-frame-counter))) + (a2-3 (-> a1-1 time-factor)) + (t0-2 (+ (ash 1 a2-3) -1)) + ) + (if (zero? (-> a1-1 scroll-dir)) + (set! a3-1 (- a3-1)) + ) + (let ((a2-5 (ash (ash (logand a3-1 t0-2) (- 12 (the-as int (-> a1-1 st-int-scale)))) (- (the-as int a2-3))))) + (when (!= a2-5 (-> a1-1 cached-time)) + (set! (-> a1-1 time-delta) (the-as uint (- a2-5 (the-as int (-> a1-1 cached-time))))) + (set! (-> a1-1 cached-time) (the-as uint a2-5)) + (set! (-> *foreground* texscroll effects v1-1) arg0) + (+! (-> *foreground* texscroll requests) 1) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +(defun texscroll-execute () + (dotimes (v1-0 (-> *foreground* texscroll requests)) + (let* ((a2-0 (-> *foreground* texscroll effects v1-0)) + (a0-2 (-> a2-0 frag-count)) + (a1-1 (the-as structure (-> a2-0 extra-info))) + (a1-2 (the-as + mei-texture-scroll + (+ (the-as uint a1-1) (* (-> (the-as merc-extra-info a1-1) texture-scroll-offset) 16)) + ) + ) + (t1-0 (the-as object (-> a2-0 frag-geo))) + (a2-1 (the-as object (-> a2-0 frag-ctrl))) + ) + (dotimes (a3-2 (the-as int a0-2)) + (let ((t0-4 (&+ + (the-as pointer t1-0) + (logand (* (+ (-> (the-as merc-fragment-control a2-1) unsigned-four-count) 3) 4) #xfff0) + ) + ) + ) + (let ((t2-2 (+ (-> (the-as merc-fragment t1-0) header mat1-cnt) + (-> (the-as merc-fragment t1-0) header mat2-cnt) + (-> (the-as merc-fragment t1-0) header mat3-cnt) + ) + ) + ) + (-> a1-2 time-delta) + (let* ((t1-3 (&+ t0-4 9)) + (t2-4 (&+ t1-3 (* (the-as uint 12) t2-2))) + (t3-3 (-> a1-2 time-delta)) + ) + (nop!) + (label cfg-3) + (let ((t4-0 (-> (the-as (pointer int8) t1-3)))) + (nop!) + (nop!) + (nop!) + (let ((t4-1 (+ t4-0 t3-3))) + (&+! t1-3 12) + (b! (!= (the-as (pointer int8) t1-3) t2-4) cfg-3 :delay (set! (-> (the-as (pointer int8) t1-3) -12) t4-1)) + ) + ) + ) + ) + (set! t1-0 (&+ + (&+ t0-4 (logand (* (+ (-> (the-as merc-fragment-control a2-1) lump-four-count) 3) 4) #xfff0)) + (* (-> (the-as merc-fragment-control a2-1) fp-qwc) 16) + ) + ) + ) + (set! a2-1 (+ (the-as int a2-1) (* (-> (the-as merc-fragment-control a2-1) mat-xfer-count) 2) 4)) + ) + ) + ) + (set! (-> *foreground* texscroll requests) 0) + 0 + (none) + ) + +(defun vu-lights<-light-group! ((arg0 vu-lights) (arg1 light-group)) + (local-vars (v1-0 uint128) (v1-1 uint128) (a2-1 uint128) (t0-1 uint128) (t1-1 uint128)) + (rlet ((vf0 :class vf) + (vf10 :class vf) + (vf11 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + (vf9 :class vf) + ) + (init-vf0-vector) + (nop!) + ;; ???????? + (let ((a3-0 (the-as uint128 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)))) + (nop!) + (let ((a2-0 (-> arg1 dir0 direction quad))) + (nop!) + (let ((t1-0 (-> arg1 dir1 direction quad))) + (nop!) + (.lvf vf4 (&-> arg1 dir0 color quad)) + (.pextlw v1-0 t1-0 a2-0) + (let ((t0-0 (-> arg1 dir2 direction quad))) + (.pextuw a2-1 t1-0 a2-0) + (.lvf vf8 (&-> arg1 dir0 extra quad)) + (.pextlw t1-1 a3-0 t0-0) + (.lvf vf5 (&-> arg1 dir1 color quad)) + (.pextuw t0-1 a3-0 t0-0) + ) + ) + ) + ) + (.lvf vf9 (&-> arg1 dir1 extra quad)) + (let ((a3-1 (make-u128 t1-1 v1-0))) + (.lvf vf6 (&-> arg1 dir2 color quad)) + (.pcpyud v1-1 v1-0 t1-1) + (.lvf vf10 (&-> arg1 dir2 extra quad)) + (let ((a2-2 (make-u128 t0-1 a2-1))) + (.lvf vf7 (&-> arg1 ambi color quad)) + (.mul.x.vf vf4 vf4 vf8) + (.lvf vf11 (&-> arg1 ambi extra quad)) + (.mul.x.vf vf5 vf5 vf9) + (set! (-> arg0 direction 0 quad) (the-as uint128 a3-1)) + (.mul.x.vf vf6 vf6 vf10) + (set! (-> arg0 direction 1 quad) v1-1) + (.mul.x.vf vf7 vf7 vf11) + (set! (-> arg0 direction 2 quad) (the-as uint128 a2-2)) + ) + ) + (.min.x.vf vf4 vf0 vf0 :mask #b1000) + (nop!) + (.min.x.vf vf5 vf0 vf0 :mask #b1000) + (nop!) + (.min.x.vf vf6 vf0 vf0 :mask #b1000) + (nop!) + (.max.w.vf vf7 vf0 vf0 :mask #b1000) + (nop!) + (nop!) + (.svf (&-> arg0 color 0 quad) vf4) + (nop!) + (.svf (&-> arg0 color 1 quad) vf5) + (nop!) + (.svf (&-> arg0 color 2 quad) vf6) + (nop!) + (.svf (&-> arg0 ambient quad) vf7) + 0 + (none) + ) + ) + +(defun foreground-add-mtx-calc ((arg0 bone-calculation) (arg1 (inline-array pris-mtx)) (arg2 bone-calc-flags)) + (let ((t2-0 (-> (scratchpad-object foreground-work) regs)) + (v1-1 *bone-calculation-list*) + (a3-0 arg0) + ) + (let ((t0-0 (-> t2-0 joint-ptr)) + (t1-0 (-> t2-0 bone-ptr)) + (t2-1 (-> t2-0 num-bones)) + (t3-0 a3-0) + ) + (set! (-> t3-0 flags) arg2) + (set! (-> t3-0 num-bones) t2-1) + (set! (-> t3-0 matrix-area) arg1) + (set! (-> t3-0 joints) t0-0) + (set! (-> t3-0 bones) t1-0) + (set! (-> t3-0 next) (the-as bone-calculation 0)) + ) + (if (nonzero? (-> v1-1 next)) + (set! (-> v1-1 next next) a3-0) + ) + (if (zero? (-> v1-1 first)) + (set! (-> v1-1 first) a3-0) + ) + (set! (-> v1-1 next) a3-0) + ) + (&+ arg0 48) + ) + +(defun foreground-wrapup () + (let ((gp-0 (scratchpad-object foreground-work))) + (dotimes (s5-0 7) + (let ((s4-0 (-> gp-0 grid level-buckets s5-0))) + (dotimes (s3-0 7) + (let ((s2-0 (-> s4-0 data s3-0))) + (when (nonzero? (-> s2-0 merc first)) + (let* ((v1-9 (-> gp-0 regs dma-buf)) + (a3-0 (-> v1-9 base)) + ) + (let ((a0-0 (-> s2-0 merc patch))) + (if (nonzero? a0-0) + (set! (-> a0-0 dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (the-as int a3-0))) + ) + ) + (let ((a0-1 (the-as dma-packet (-> v1-9 base)))) + (set! (-> a0-1 dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> a0-1 vif0) (new 'static 'vif-tag)) + (set! (-> a0-1 vif1) (new 'static 'vif-tag)) + (set! (-> v1-9 base) (the-as pointer (&+ a0-1 16))) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) bucket-group) + (-> s2-0 merc vu1-bucket) + (the-as pointer (-> s2-0 merc first)) + (the-as (pointer dma-tag) a3-0) + ) + ) + ) + (when (nonzero? (-> s2-0 emerc first)) + (let* ((v1-18 (-> gp-0 regs dma-buf)) + (a3-1 (-> v1-18 base)) + ) + (let ((a0-5 (-> s2-0 emerc patch))) + (if (nonzero? a0-5) + (set! (-> a0-5 dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (the-as int a3-1))) + ) + ) + (let ((a0-6 (the-as object (-> v1-18 base)))) + (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag)) + (set! (-> v1-18 base) (&+ (the-as pointer a0-6) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) bucket-group) + (-> s2-0 emerc vu1-bucket) + (the-as pointer (-> s2-0 emerc first)) + (the-as (pointer dma-tag) a3-1) + ) + ) + ) + ) + ) + ) + ) + (quad-copy! (the-as pointer (-> *foreground* foreground-grid)) (the-as pointer (-> gp-0 grid)) 149) + ) + 0 + (none) + ) + +(define *default-shadow-settings* (new 'static 'shadow-settings + :shadow-dir (new 'static 'vector :x -0.4226 :y -0.9063 :w 409600.0) + :bot-plane (new 'static 'plane :y 1.0 :w 37683.2) + :top-plane (new 'static 'plane :y 1.0 :w 4096.0) + :fade-dist 409600.0 + ) + ) + +;; todo foreground-shadow +;;(define-extern foreground-shadow (function draw-control (inline-array pris-mtx) pointer pointer)) +(defun foreground-shadow ((arg0 draw-control) (arg1 (inline-array pris-mtx)) (arg2 pointer)) + arg2 + ) +;; todo foreground-generic-merc-death +;; todo foreground-generic-merc-add-fragments +;; todo foreground-generic-merc +(defun foreground-generic-merc ((arg0 draw-control) (arg1 pointer) (arg2 int)) + arg1 + ) + +(def-mips2c foreground-merc (function draw-control (inline-array pris-mtx) pointer int int pointer)) + +(define-extern foreground-emerc (function draw-control (inline-array pris-mtx) pointer object int int pointer)) + +;; todo foreground-emerc +(defun foreground-emerc ((arg0 draw-control) (arg1 (inline-array pris-mtx)) (arg2 pointer) (arg3 object) (arg4 int) (arg5 int)) + arg2 + ) + +(def-mips2c foreground-check-longest-edge-asm (function draw-control float symbol)) + +(defun foreground-ripple ((arg0 draw-control) (arg1 merc-ctrl) (arg2 pointer) (arg3 int)) + (local-vars (v1-6 uint) (t0-0 pointer)) + (let* ((gp-0 (-> arg0 ripple)) + (f0-0 (-> (scratchpad-object foreground-work) regs dist)) + (f1-3 (/ (- (-> gp-0 far-fade-dist) f0-0) (- (-> gp-0 far-fade-dist) (-> gp-0 close-fade-dist)))) + (f1-5 (fmax 0.0 (fmin 1.0 f1-3))) + (f0-3 f1-5) + (f30-0 (* f1-5 (-> gp-0 global-scale))) + ) + (set! (-> gp-0 faded-scale) f30-0) + (let ((f1-8 (/ f30-0 (* 128.0 (-> arg1 header xyz-scale))))) + 0 + (let ((v1-5 (-> (scratchpad-object foreground-work) regs num-bones))) + ;;(.sll v1-6 v1-5 7) + (set! v1-6 (shl v1-5 7)) + ) + (let ((a0-1 (scratchpad-object foreground-work))) + ;;(.addu t0-0 arg2 v1-6) + (set! t0-0 (&+ arg2 v1-6)) + (let ((v1-7 arg2) + (s5-0 t0-0) + ) + (set! (-> a0-1 regs mtxs) (the-as (inline-array pris-mtx) v1-7)) + (let ((a0-3 (-> *bone-calculation-list* next))) + (logior! (-> a0-3 flags) (bone-calc-flags write-ripple-data)) + (set! (-> a0-3 ripple-scale) f30-0) + (set! (-> a0-3 ripple-y-scale) f1-8) + (set! (-> a0-3 ripple-normal-scale) (* f0-3 (-> gp-0 individual-normal-scale))) + (set! (-> a0-3 ripple-area) (the-as (inline-array vector) v1-7)) + ) + (if (not (and (= f30-0 0.0) (= (-> gp-0 last-frame-scale) 0.0))) + (ripple-make-request (the-as ripple-wave (-> gp-0 waveform)) (-> arg1 effect arg3)) + ) + (set! (-> gp-0 last-frame-scale) f30-0) + (the-as pointer s5-0) + ) + ) + ) + ) + ) + +(defun pc-draw-bones ((dc draw-control) (dma-buf pointer)) + "Add a dma packet to tell the PC renderer which model we are renderering." + (let ((use-flags (new 'stack-no-clear 'array 'uint8 7)) + (mctrl (-> dc mgeo)) + (buckets (-> (scratchpad-object foreground-work) grid level-buckets (-> (scratchpad-object foreground-work) draw-index-map (-> dc level-index)))) + ) + ;; mark all as unused, until we see a use + (dotimes (i 7) (set! (-> use-flags i) 0)) + + ;; look for uses. + (dotimes (i (-> mctrl header effect-count)) + ;;(format 0 "effect ~d, texture ~d~%" i (-> mctrl effect i texture-index)) + (set! (-> use-flags (-> mctrl effect i texture-index)) 1) + ) + + ;; loop over texture groupe + (dotimes (i 7) + (when (nonzero? (-> use-flags i)) + ;; this one is used, update the model for pc. + ;; create dma-packet to send the name: + (let ((packet (the-as dma-packet dma-buf))) + (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 10)) + (set! (-> packet vif0) (new 'static 'vif-tag)) + (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) + (set! dma-buf (the pointer (&+ packet 16))) + ;; send the name + (let ((data-ptr (the-as (pointer uint128) dma-buf))) + (charp<-string (the (pointer uint8) (&-> data-ptr 0)) (-> dc mgeo name)) + ) + (&+! dma-buf (* 16 10)) + + ;; create a patch packet + (let ((patch-packet (the-as dma-packet dma-buf))) + (set! (-> patch-packet dma) (the-as dma-tag #x20000000)) + (set! (-> patch-packet vif0) (new 'static 'vif-tag)) + (set! (-> patch-packet vif1) (new 'static 'vif-tag)) + (set! dma-buf (the pointer (&+ patch-packet 16))) + + ;; now, the confusing splice stuff + (let ((merc-chain (-> buckets data i merc))) + ;; first step: set first, if we are the first thing to draw. + (when (zero? (-> merc-chain first)) + (set! (-> merc-chain first) packet) + ) + + ;; second step: patch the last thing that was drawn + (when (nonzero? (-> merc-chain patch)) + (let ((patch-addr (+ 4 (the-as int (-> merc-chain patch))))) + (set! (-> (the (pointer dma-packet) patch-addr)) packet) + ) + ) + + ;; third step: update patch to point to our packet. + (set! (-> merc-chain patch) patch-packet) + + ) + ) + ) + + ) + ) + + + + + ) + dma-buf + ; (let ((packet (the-as dma-packet dma-buf))) + ; ;; merc draw asm will check this. + ; (when (zero? (-> (scratchpad-object terrain-context) work foreground bone-mem work next-merc)) + ; (set! (-> (scratchpad-object terrain-context) work foreground bone-mem work next-merc) packet) + ; ) + ; (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 10)) + ; (set! (-> packet vif0) (new 'static 'vif-tag)) + ; (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) + ; (set! dma-buf (the pointer (&+ packet 16))) + ; ) + + ; (let ((data-ptr (the-as (pointer uint128) dma-buf))) + ; (charp<-string (the (pointer uint8) (&-> data-ptr 0)) (-> dc mgeo name)) + ; ) + ; (&+! dma-buf (* 16 10)) + + ; ;; merc linking needs this. + ; (let ((packet (the-as dma-packet dma-buf))) + ; (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 0)) + ; (set! (-> packet vif0) (new 'static 'vif-tag)) + ; (set! (-> packet vif1) (new 'static 'vif-tag)) + ; (set! dma-buf (the pointer (&+ packet 16))) + ; ) + + ; dma-buf + + ;; ra is start packet + ; lw s4, 0(a3) ;; s4 = first + ; lw gp, 4(a3) ;; gp = patch + ; movz s4, ra, s4 ;; check first, if zero, set s4 to this packet + ; sq r0, 0(a2) + ; lui s5, 8192 + ; sw s4, 0(a3) ;; store first + ; or s4, a2, r0 + ; sw s5, 0(a2) + ; daddiu a2, a2, 16 + ; beq gp, r0, L117 + ; sw s4, 4(a3) + ; branch non-likely + + ; sll r0, r0, 0 + ; sw ra, 4(gp) + ;; L117 + + ) + +(defun foreground-draw ((dc draw-control) (dma-buf dma-buffer) (dist-in float)) + (local-vars (fg-work foreground-work) (a0-92 uint)) + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + (vf9 :class vf) + (acc :class vf) + ) + ;;(.lui fg-work 28672) + (set! fg-work (scratchpad-object foreground-work)) + (let* ((bone-calc (the-as bone-calculation (-> dma-buf base))) + (matrix-mem (the-as object (&+ (the-as pointer bone-calc) 64))) + ) + (let ((a3-0 (logand (the-as int matrix-mem) 48))) + (b! (zero? a3-0) cfg-2 :delay (nop!)) + (set! matrix-mem (&- (&+ (the-as pointer matrix-mem) 64) (the-as uint a3-0))) + ) + (label cfg-2) + (let* ((num-bones (+ (-> dc mgeo num-joints) 3)) + (bone-mem-size (* num-bones 128)) + ) + (let ((fg-regs (-> (scratchpad-object foreground-work) regs))) + (set! (-> fg-regs joint-ptr) (the-as (inline-array joint) (-> dc jgeo data 0))) + (set! (-> fg-regs bone-ptr) (-> dc skeleton bones)) + (set! (-> fg-regs num-bones) (the-as uint num-bones)) + (set! (-> fg-regs dist) dist-in) + (set! (-> fg-regs dma-buf) dma-buf) + (set! (-> fg-regs level-buckets) + (-> (scratchpad-object foreground-work) + grid + level-buckets + (-> (scratchpad-object foreground-work) draw-index-map (-> dc level-index)) + ) + ) + ) + (let ((matrix-mem2 matrix-mem) + (bflags 0) + ) + (let ((f-regs (-> (scratchpad-object foreground-work) regs)) + (bone-list *bone-calculation-list*) + (calc-to-add bone-calc) + ) + (let ((jnt (-> f-regs joint-ptr)) + (bn (-> f-regs bone-ptr)) + (count (-> f-regs num-bones)) + (calc calc-to-add) + ) + (set! (-> calc flags) (the-as bone-calc-flags bflags)) + (set! (-> calc num-bones) count) + (set! (-> calc matrix-area) (the-as (inline-array pris-mtx) matrix-mem2)) + (set! (-> calc joints) jnt) + (set! (-> calc bones) bn) + (set! (-> calc next) (the-as bone-calculation 0)) + ) + (if (nonzero? (-> bone-list next)) + (set! (-> bone-list next next) calc-to-add) + ) + (if (zero? (-> bone-list first)) + (set! (-> bone-list first) calc-to-add) + ) + (set! (-> bone-list next) calc-to-add) + ) + (&+ bone-calc 48) + (let ((dma-ptr (the-as pointer (+ (the-as uint matrix-mem) bone-mem-size)))) + (set! (-> fg-work regs mtxs) (the-as (inline-array pris-mtx) matrix-mem)) + (let ((bucket-info (-> *foreground* merc-bucket-info))) + (when (= (-> dc data-format) (draw-control-data-format merc)) + (let ((fg-lights (-> (scratchpad-object foreground-work) lights)) + (rotated-light-out (-> bucket-info light)) + ) + (let ((inv-cam-rot (-> *math-camera* inv-camera-rot))) + (nop!) + (nop!) + (.lvf vf4 (&-> inv-cam-rot quad 0)) + (nop!) + (.lvf vf5 (&-> inv-cam-rot quad 1)) + (nop!) + (.lvf vf6 (&-> inv-cam-rot quad 2)) + ) + (nop!) + (.lvf vf1 (&-> fg-lights direction 0 quad)) + (nop!) + (.lvf vf2 (&-> fg-lights direction 1 quad)) + (nop!) + (.lvf vf3 (&-> fg-lights direction 2 quad)) + ;; (.vcallms 0) + ; mulax.xyzw ACC, vf01, vf04 + (.mul.x.vf acc vf1 vf4) + ; madday.xyzw ACC, vf02, vf04 + (.add.mul.y.vf acc vf2 vf4 acc) + ; maddz.xyzw vf07, vf03, vf04 + (.add.mul.z.vf vf7 vf3 vf4 acc) + ; mulax.xyzw ACC, vf01, vf05 + (.mul.x.vf acc vf1 vf5) + ; madday.xyzw ACC, vf02, vf05 + (.add.mul.y.vf acc vf2 vf5 acc) + ; maddz.xyzw vf08, vf03, vf05 + (.add.mul.z.vf vf8 vf3 vf5 acc) + ; mulax.xyzw ACC, vf01, vf06 + (.mul.x.vf acc vf1 vf6) + ; madday.xyzw ACC, vf02, vf06 :e + (.add.mul.y.vf acc vf2 vf6 acc) + ; maddz.xyzw vf09, vf03, vf06 + (.add.mul.z.vf vf9 vf3 vf6 acc) + + (let ((a1-9 (-> fg-lights color 0 quad))) + (nop!) + (let ((a2-6 (-> fg-lights color 1 quad))) + (nop!) + (let ((a3-4 (-> fg-lights color 2 quad))) + (nop!) + (let ((a0-6 (-> fg-lights ambient quad))) + (nop!) + (set! (-> rotated-light-out color 0 quad) a1-9) + (nop!) + (set! (-> rotated-light-out color 1 quad) a2-6) + (nop!) + (set! (-> rotated-light-out color 2 quad) a3-4) + (nop!) + (set! (-> rotated-light-out ambient quad) a0-6) + ) + ) + ) + ) + (nop!) + (.nop.vf) + (nop!) + (.svf (&-> rotated-light-out direction 0 quad) vf7) + (nop!) + (.svf (&-> rotated-light-out direction 1 quad) vf8) + (nop!) + (.svf (&-> rotated-light-out direction 2 quad) vf9) + (nop!) + (set! (-> rotated-light-out fade-flags) (the-as uint 0)) + ) + (set! (-> (scratchpad-object foreground-work) regs merc-used) (the-as uint 0)) + (set! (-> (scratchpad-object foreground-work) regs emerc-used) (the-as uint 0)) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) (the-as uint 0)) + (set! (-> bucket-info needs-clip) (if (logtest? (-> dc status) (draw-control-status close-to-screen)) + 1 + 0 + ) + ) + (set! (-> bucket-info need-mercprime-if-merc) 0) + (set! (-> bucket-info must-use-mercneric-for-clip) 0) + (when (logtest? (-> dc status) (draw-control-status close-to-screen)) + (cond + ((logtest? (-> dc status) (draw-control-status force-vu1)) + (set! (-> bucket-info need-mercprime-if-merc) 1) + ) + ((nonzero? (-> dc longest-edge)) + (if (foreground-check-longest-edge-asm dc (-> (scratchpad-object foreground-work) regs dist)) + (set! (-> bucket-info need-mercprime-if-merc) 1) + (set! (-> bucket-info must-use-mercneric-for-clip) 1) + ) + ) + (else + (set! (-> bucket-info must-use-mercneric-for-clip) 1) + ) + ) + ) + (let ((geo (-> dc lod-set lod (-> dc cur-lod) geo))) + (let ((effect-mask (-> dc effect-mask))) + (dotimes (effect-idx (the-as int (-> geo header effect-count))) + (cond + ((= (logand effect-mask 1) 1) + (set! (-> bucket-info effect effect-idx disable-draw) (the-as uint 1)) + ) + ((begin + (set! (-> bucket-info effect effect-idx disable-draw) (the-as uint 0)) + (set! (-> bucket-info effect effect-idx disable-envmap) (the-as uint 0)) + (when (logtest? (-> geo effect effect-idx effect-bits) (effect-bits texscroll)) + (let* ((extra (the-as structure (-> geo effect effect-idx extra-info))) + (tex-scroll-info + (the-as + mei-texture-scroll + (+ (the-as uint extra) (* (-> (the-as merc-extra-info extra) texture-scroll-offset) 16)) + ) + ) + ) + (if (< (-> (scratchpad-object foreground-work) regs dist) (-> tex-scroll-info max-dist)) + (texscroll-make-request (-> geo effect effect-idx)) + ) + ) + ) + (if (and (logtest? (-> geo effect effect-idx effect-bits) (effect-bits ripple)) (-> dc ripple)) + (set! dma-ptr (foreground-ripple dc geo dma-ptr effect-idx)) + ) + (nonzero? (-> dc death-timer)) + ) + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 2)) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) (the-as uint 1)) + ) + ((logtest? (-> geo effect effect-idx effect-bits) (effect-bits force-mercneric)) + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 2)) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) (the-as uint 1)) + ) + ((and (logtest? (-> geo effect effect-idx effect-usage) 1) + (zero? (logand (-> dc global-effect) (draw-control-global-effect disable-envmap))) + ) + 0.0 + (let* ((ei (the-as structure (-> geo effect effect-idx extra-info))) + (tint-info + (the-as mei-envmap-tint (+ (the-as uint ei) (* (-> (the-as merc-extra-info ei) envmap-tint-offset) 16))) + ) + (t-fade-0 (-> tint-info fade0)) + (t-fade-1 (-> tint-info fade1)) + (t-interp (+ (* t-fade-0 (-> (scratchpad-object foreground-work) regs dist)) t-fade-1)) + (t-amount (fmax 0.0 (fmin 1.0 t-interp))) + ) + (cond + ((or (nonzero? (-> bucket-info must-use-mercneric-for-clip)) + (or (< 0.0 t-amount) (logtest? (-> geo effect effect-idx effect-bits) (effect-bits cross-fade))) + ) + (let ((a0-33 (&-> tint-info tint)) + (v1-74 (the-as object (-> bucket-info effect effect-idx))) + ) + (let ((a1-17 (-> *time-of-day-context* current-env-color))) + (if (and (logtest? (-> geo effect effect-idx effect-bits) (effect-bits cross-fade)) + (logtest? (-> dc status) (draw-control-status warp-cross-fade)) + ) + (set! t-amount (* 0.0078125 (the float (- 128 (the-as int (-> dc force-fade)))) t-amount)) + ) + (cond + ((logtest? (-> geo effect effect-idx effect-bits) (effect-bits ignore-tod-for-envmap-tint)) + (dotimes (a1-18 3) + (set! (-> (the-as (pointer int8) (&+ (the-as pointer v1-74) a1-18))) + (the int (* t-amount (the float (-> (the-as (pointer uint8) (&+ a0-33 a1-18)) 0)))) + ) + ) + ) + (else + (let ((f0-7 (* 0.0078125 t-amount))) + (dotimes (a2-27 3) + (set! (-> (the-as (pointer int8) (&+ (the-as pointer v1-74) a2-27))) + (the int (* f0-7 (-> a1-17 data a2-27) (the float (-> (the-as (pointer uint8) (&+ a0-33 a2-27)) 0)))) + ) + ) + ) + ) + ) + ) + (set! (-> (the-as merc-effect-bucket-info v1-74) alpha) (the-as uint 128)) + ) + (cond + ((and (logtest? (-> dc status) (draw-control-status force-vu1)) + (logtest? (-> geo effect effect-idx effect-bits) (effect-bits emerc)) + ) + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 1)) + (set! (-> (scratchpad-object foreground-work) regs emerc-used) (the-as uint 1)) + ) + (else + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 2)) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) (the-as uint 1)) + (if (logtest? (-> dc status) (draw-control-status force-fade)) + (set! (-> bucket-info light fade-int) (-> dc force-fade)) + ) + ) + ) + (set! (-> bucket-info effect effect-idx ignore-alpha) + (the-as uint (if (logtest? (-> geo effect effect-idx effect-bits) (effect-bits ignore-alpha)) + 1 + 0 + ) + ) + ) + ) + ((logtest? (-> dc status) (draw-control-status force-fade)) + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 2)) + (set! (-> bucket-info effect effect-idx ignore-alpha) + (the-as uint (if (logtest? (-> geo effect effect-idx effect-bits) (effect-bits ignore-alpha)) + 1 + 0 + ) + ) + ) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) (the-as uint 1)) + (set! (-> bucket-info light fade-int) (-> dc force-fade)) + ) + (else + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 0)) + (set! (-> bucket-info effect effect-idx ignore-alpha) (the-as uint 1)) + (set! (-> (scratchpad-object foreground-work) regs merc-used) (the-as uint 1)) + ) + ) + ) + ) + (else + (cond + ((logtest? (-> geo effect effect-idx effect-bits) (effect-bits cross-fade)) + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 2)) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) (the-as uint 1)) + ) + ((or (logtest? (-> dc status) (draw-control-status force-fade)) + (nonzero? (-> bucket-info must-use-mercneric-for-clip)) + ) + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 2)) + (if (logtest? (-> dc global-effect) (draw-control-global-effect disable-envmap)) + (set! (-> bucket-info effect effect-idx disable-envmap) (the-as uint 1)) + ) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) (the-as uint 1)) + ) + (else + (set! (-> bucket-info effect effect-idx merc-path) (the-as uint 0)) + (set! (-> (scratchpad-object foreground-work) regs merc-used) (the-as uint 1)) + ) + ) + (set! (-> bucket-info effect effect-idx ignore-alpha) + (the-as + uint + (if (or (logtest? (-> geo effect effect-idx effect-bits) (effect-bits ignore-alpha)) + (logtest? (-> dc global-effect) (draw-control-global-effect disable-envmap)) + ) + 1 + 0 + ) + ) + ) + ) + ) + (set! effect-mask (shr effect-mask 1)) + ) + ) + ;; massive hack + (when (or (nonzero? (-> (scratchpad-object foreground-work) regs mercneric-used)) + (nonzero? (-> (scratchpad-object foreground-work) regs emerc-used)) + ) + (set! (-> (scratchpad-object foreground-work) regs mercneric-used) 0) + (set! (-> (scratchpad-object foreground-work) regs emerc-used) 0) + (set! (-> (scratchpad-object foreground-work) regs merc-used) 1) + (dotimes (effect-idx (the-as int (-> geo header effect-count))) + (set! (-> bucket-info effect effect-idx merc-path) 0) + ) + ) + + + + (when (nonzero? (-> (scratchpad-object foreground-work) regs mercneric-used)) + (if (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask generic)) + (set! dma-ptr (foreground-generic-merc dc dma-ptr 0)) + ) + ) + (if (-> dc shadow) + (set! dma-ptr (foreground-shadow dc (-> (scratchpad-object foreground-work) regs mtxs) dma-ptr)) + ) + (when (nonzero? (-> (scratchpad-object foreground-work) regs merc-used)) + (when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask merc)) + (let ((merc-fade-int 0) + (fade-enable #f) + ) + (cond + ((logtest? (-> geo effect 0 effect-bits) (effect-bits no-fade-out)) + (set! fade-enable #f) + ) + ((logtest? (-> dc status) (draw-control-status force-fade)) + (set! merc-fade-int (the-as int (-> dc force-fade))) + (set! fade-enable #t) + ) + ((= (-> dc cur-lod) (-> dc lod-set max-lod)) + (let ((dist-until-gone + (- (-> dc lod-set lod (-> dc cur-lod) dist) (-> (scratchpad-object foreground-work) regs dist)) + ) + ) + (if (< dist-until-gone 81920.0) + (set! fade-enable #t) + ) + (set! merc-fade-int (the int (* 0.0015625 dist-until-gone))) + ) + ) + ) + (when fade-enable + (let ((v1-159 (min 128 (max 0 merc-fade-int))) + (a0-84 (-> bucket-info light)) + ) + (set! (-> a0-84 fade-flags) (the-as uint 0.00000000000000000000000000000000000000000014)) + (set! (-> a0-84 fade-int) (the-as uint v1-159)) + ) + ) + ) + + ;; added + (set! dma-ptr (pc-draw-bones dc dma-ptr)) + + (if (nonzero? (-> bucket-info need-mercprime-if-merc)) + (set! dma-ptr (foreground-merc dc (-> (scratchpad-object foreground-work) regs mtxs) dma-ptr 32 17)) + (set! dma-ptr (foreground-merc dc (-> (scratchpad-object foreground-work) regs mtxs) dma-ptr 35 20)) + ) + ) + ) + ) + (when (nonzero? (-> (scratchpad-object foreground-work) regs emerc-used)) + (if (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask emerc)) + (set! dma-ptr (foreground-emerc dc (-> (scratchpad-object foreground-work) regs mtxs) dma-ptr 29 19 bflags)) + ) + ) + (when (nonzero? (-> dc death-timer)) + (when (not (paused?)) + (+! (-> dc death-timer) -1) + (if (>= (the-as uint 1) (-> dc death-timer)) + (send-event (-> dc process) 'death-end dc) + ) + ) + ) + ) + ) + (let ((v1-186 (logand (the-as int dma-ptr) 48))) + 0 + (b! (zero? v1-186) cfg-128 :delay (set! a0-92 (the-as uint #x20000000))) + ;; (s.q! (the-as object dma-ptr) a0-92) + (set! (-> (the (pointer uint128) dma-ptr) 0) (the uint128 a0-92)) + + (let ((a0-93 (the-as object dma-ptr))) + (set! dma-ptr (the-as pointer (+ (- (the-as int dma-ptr) (the-as uint v1-186)) 64))) + ;; (s.w! (+ a0-93 4) (the-as int dma-ptr)) + (set! (-> (the (pointer int32) (+ (the-as uint a0-93) 4))) (the-as int dma-ptr)) + ) + ) + (label cfg-128) + (set! (-> (scratchpad-object foreground-work) regs dma-buf base) + (the-as pointer (logand (the-as int dma-ptr) #xfffffff)) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + + +;; todo foreground-draw-hud + (define *foreground-draw-engine* (new 'global 'engine 'draw 768 connection)) \ No newline at end of file diff --git a/goal_src/jak2/engine/gfx/foreground/ripple.gc b/goal_src/jak2/engine/gfx/foreground/ripple.gc index b72c420e28..49b4d56135 100644 --- a/goal_src/jak2/engine/gfx/foreground/ripple.gc +++ b/goal_src/jak2/engine/gfx/foreground/ripple.gc @@ -7,3 +7,9 @@ ;; DECOMP BEGINS +(defun ripple-make-request ((arg0 ripple-wave) (arg1 merc-effect)) + (none)) + +(defun ripple-find-height ((arg0 process-drawable) (arg1 int) (arg2 vector)) + -100000000.0 + ) \ No newline at end of file diff --git a/goal_src/jak2/engine/gfx/foreground/shadow-cpu-h.gc b/goal_src/jak2/engine/gfx/foreground/shadow-cpu-h.gc index 2f93661879..274fc005c9 100644 --- a/goal_src/jak2/engine/gfx/foreground/shadow-cpu-h.gc +++ b/goal_src/jak2/engine/gfx/foreground/shadow-cpu-h.gc @@ -15,6 +15,8 @@ (shdf03) (shdf04) ;; unused (disable-draw) + (shdf06) + (shdf07) ) ;; DECOMP BEGINS @@ -30,6 +32,7 @@ (fade-start float :offset-assert 68) (dummy-2 int32 :offset-assert 72) (shadow-type int32 :offset-assert 76) + (flag-vector vector :inline :offset 64) ;; added ) :method-count-assert 9 :size-assert #x50 diff --git a/goal_src/jak2/engine/gfx/lights-h.gc b/goal_src/jak2/engine/gfx/lights-h.gc index 8495d36e89..215ace726b 100644 --- a/goal_src/jak2/engine/gfx/lights-h.gc +++ b/goal_src/jak2/engine/gfx/lights-h.gc @@ -23,9 +23,11 @@ ;; Note that the data is transposed to be faster for use in the VU code. ;; the w components are unused for lighting information - you can put whatever you want in them... (deftype vu-lights (structure) - ((direction vector 3 :inline :offset-assert 0) - (color vector 3 :inline :offset-assert 48) - (ambient vector :inline :offset-assert 96) + ((direction vector 3 :inline :offset-assert 0) + (color vector 3 :inline :offset-assert 48) + (ambient vector :inline :offset-assert 96) + (fade-int uint32 :offset 44) + (fade-flags uint32 :offset 28) ) :method-count-assert 9 :size-assert #x70 @@ -69,9 +71,10 @@ ;; hash bucket for fast "which light am I in?" checks. (deftype light-hash-bucket (structure) - ((index uint16 :offset-assert 0) - (count uint16 :offset-assert 2) + ((index uint16 :offset-assert 0) + (count uint16 :offset-assert 2) ) + :pack-me :method-count-assert 9 :size-assert #x4 :flag-assert #x900000004 @@ -85,7 +88,7 @@ (base-trans vector :inline :offset-assert 16) (axis-scale vector :inline :offset-assert 32) (dimension-array vector4w :inline :offset-assert 48) - (bucket-array pointer :offset-assert 64) + (bucket-array (inline-array light-hash-bucket) :offset-assert 64) (index-array pointer :offset-assert 68) (light-sphere-array (inline-array light-sphere) :offset-assert 72) ) diff --git a/goal_src/jak2/engine/gfx/lights.gc b/goal_src/jak2/engine/gfx/lights.gc index 74d83f6118..1c05b9155a 100644 --- a/goal_src/jak2/engine/gfx/lights.gc +++ b/goal_src/jak2/engine/gfx/lights.gc @@ -7,3 +7,52 @@ ;; DECOMP BEGINS +(define *light-hash-work* (new 'static 'light-hash-work :ones (new 'static 'vector4w :x 1 :y 1 :z 1))) + +(defun light-slerp ((arg0 light) (arg1 light) (arg2 light) (arg3 float)) + (let ((s3-0 (fmax 0.0 (fmin 1.0 arg3)))) + (vector-lerp! (-> arg0 color) (-> arg1 color) (-> arg2 color) s3-0) + (vector-deg-slerp (-> arg0 direction) (-> arg1 direction) (-> arg2 direction) s3-0) + (let ((f0-2 (-> arg1 extra x)) + (f1-2 (-> arg2 extra x)) + ) + (set! (-> arg0 extra x) (+ f0-2 (* s3-0 (- f1-2 f0-2)))) + ) + ) + arg0 + ) + +(defun light-group-slerp ((arg0 light-group) (arg1 light-group) (arg2 light-group) (arg3 float)) + (dotimes (s2-0 4) + (light-slerp (-> arg0 lights s2-0) (-> arg1 lights s2-0) (-> arg2 lights s2-0) arg3) + ) + arg0 + ) + +(defun light-group-process! ((arg0 vu-lights) (arg1 light-group) (arg2 vector) (arg3 vector)) + (rotate-y<-vector+vector arg3 arg2) + (vu-lights<-light-group! arg0 arg1) + (none) + ) + +(define *default-lights* (new 'global 'vu-lights)) + +(defun vu-lights-default! ((arg0 vu-lights)) + (set-vector! (-> arg0 ambient) 0.3 0.3 0.3 1.0) + (set-vector! (-> arg0 color 0) 1.0 1.0 1.0 1.0) + (set-vector! (-> arg0 color 1) 0.2 0.2 0.2 1.0) + (set-vector! (-> arg0 color 2) 0.0 0.0 0.0 1.0) + (set-vector! (-> arg0 direction 0) 1.0 0.0 0.0 1.0) + (set-vector! (-> arg0 direction 1) 0.0 1.0 0.0 1.0) + (set-vector! (-> arg0 direction 2) 0.0 0.0 1.0 1.0) + arg0 + ) + +;; stub +(defun light-hash-get-bucket-index ((arg0 light-hash) (arg1 vector)) + -1 + ) + +(defun add-light-sphere-to-light-group (arg0 arg1 arg2 arg3) + (the object #f) + ) diff --git a/goal_src/jak2/engine/gfx/merc/merc-h.gc b/goal_src/jak2/engine/gfx/merc/merc-h.gc index 80caf5565f..3d6170ec76 100644 --- a/goal_src/jak2/engine/gfx/merc/merc-h.gc +++ b/goal_src/jak2/engine/gfx/merc/merc-h.gc @@ -12,6 +12,19 @@ (define-extern merc-blend-shape (function process-drawable object)) (define-extern merc-eye-anim (function process-drawable none)) +(defenum effect-bits + :type uint8 + :bitfield #t + (texscroll 0) + (no-fade-out 1) + (ripple 2) + (emerc 3) ;; envmap?? + (ignore-tod-for-envmap-tint 4) ;; color thing + (force-mercneric 5) ;; some mercneric-only effect + (cross-fade 6) + (ignore-alpha 7) + ) + ;; DECOMP BEGINS (deftype ripple-merc-query (inline-array-class) @@ -151,7 +164,7 @@ (deftype mei-envmap-tint (structure) ((fade0 float :offset-assert 0) (fade1 float :offset-assert 4) - (tint uint32 :offset-assert 8) + (tint rgba :offset-assert 8) (dummy int32 :offset-assert 12) ) :method-count-assert 9 @@ -206,7 +219,7 @@ (blend-data merc-blend-data :offset-assert 8) (blend-ctrl merc-blend-ctrl :offset-assert 12) (merc-effect-version uint8 :offset-assert 16) - (effect-bits uint8 :offset-assert 17) + (effect-bits effect-bits :offset-assert 17) (frag-count uint16 :offset-assert 18) (blend-frag-count uint16 :offset-assert 20) (tri-count uint16 :offset-assert 22) diff --git a/goal_src/jak2/engine/gfx/merc/merc-vu1.gc b/goal_src/jak2/engine/gfx/merc/merc-vu1.gc index 66a6c385e0..1c0d6b02aa 100644 --- a/goal_src/jak2/engine/gfx/merc/merc-vu1.gc +++ b/goal_src/jak2/engine/gfx/merc/merc-vu1.gc @@ -7,4 +7,4 @@ ;; DECOMP BEGINS -(define merc-vu1-block (new 'static 'vu-function :length #x7e5 :qlength #x3f3)) \ No newline at end of file +(define merc-vu1-block (new 'static 'vu-function :length 0 :qlength 0)) \ No newline at end of file diff --git a/goal_src/jak2/engine/gfx/merc/merc.gc b/goal_src/jak2/engine/gfx/merc/merc.gc index a81ecbd256..872d8705e1 100644 --- a/goal_src/jak2/engine/gfx/merc/merc.gc +++ b/goal_src/jak2/engine/gfx/merc/merc.gc @@ -564,12 +564,13 @@ ) ) (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-test) a0-8) 2) (if arg2 - (the-as gs-test #x1000130) - (the-as gs-test (the-as uint #x101000130)) - ) + (set! (-> (the-as (pointer gs-zbuf) a0-8) 2) + (if arg2 + (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)) + (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1) + ) ) - (set! (-> (the-as (pointer gs-test) a0-8) 3) (new 'static 'gs-test :atst (gs-atest not-equal) :aref #x4)) + (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 zbuf-1)) (set! (-> v1-14 base) (&+ a0-8 32)) ) (let ((v1-15 (the-as object (-> dma-buf base)))) diff --git a/goal_src/jak2/engine/gfx/vu1-user-h.gc b/goal_src/jak2/engine/gfx/vu1-user-h.gc index a481104cc6..6b311c1f9b 100644 --- a/goal_src/jak2/engine/gfx/vu1-user-h.gc +++ b/goal_src/jak2/engine/gfx/vu1-user-h.gc @@ -20,6 +20,7 @@ ;; - using geometry of level 1 ;; - while the tfrag tpage is in VRAM +;; -- (defenum bucket-id :type int32 :bitfield #f @@ -47,7 +48,7 @@ (etie-s-l0-tfrag 13) ;; tie (merc-l0-tfrag 14) ;; merc (emerc-l0-tfrag 15) ;; emerc - (bucket-16 16) ;; mercneric + (gmerc-l0-tfrag 16) ;; mercneric (tie-v-l0-tfrag 17) ;; tie (tex-l1-tfrag 18) ;; tex @@ -59,7 +60,7 @@ (etie-s-l1-tfrag 24) ;; tie (merc-l1-tfrag 25) ;; merc (emerc-l1-tfrag 26) ;; emerc - (bucket-27 27) ;; mercneric + (gmerc-l1-tfrag 27) ;; mercneric (tie-v-l1-tfrag 28) ;; tie (tex-l2-tfrag 29) ;; tex @@ -71,7 +72,7 @@ (etie-s-l2-tfrag 35) ;; tie (merc-l2-tfrag 36) ;; merc (emerc-l2-tfrag 37) ;; emerc - (bucket-38 38) ;; mercneric + (gmerc-l2-tfrag 38) ;; mercneric (tie-v-l2-tfrag 39) ;; tie (tex-l3-tfrag 40) ;; tex @@ -83,7 +84,7 @@ (etie-s-l3-tfrag 46) ;; tie (merc-l3-tfrag 47) ;; merc (emerc-l3-tfrag 48) ;; emerc - (bucket-49 49) ;; mercneric + (gmerc-l3-tfrag 49) ;; mercneric (tie-v-l3-tfrag 50) ;; tie (tex-l4-tfrag 51) ;; tex @@ -95,7 +96,7 @@ (etie-s-l4-tfrag 57) ;; tie (merc-l4-tfrag 58) ;; merc (emerc-l4-tfrag 59) ;; emerc - (bucket-60 60) ;; mercneric + (gmerc-l4-tfrag 60) ;; mercneric (tie-v-l4-tfrag 61) ;; tie (tex-l5-tfrag 62) ;; tex @@ -107,7 +108,7 @@ (etie-s-l5-tfrag 68) ;; tie (merc-l5-tfrag 69) ;; merc (emerc-l5-tfrag 70) ;; emerc - (bucket-71 71) ;; mercneric + (gmerc-l5-tfrag 71) ;; mercneric (tie-v-l5-tfrag 72) ;; tie ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -122,7 +123,7 @@ (shrub-nt-l0-shrub 78) ;; shrub (merc-l0-shrub 79) ;; merc (emerc-l0-shrub 80) ;; emerc - (bucket-81 81) ;; mercneric + (gmerc-l0-shrub 81) ;; mercneric (tex-l1-shrub 82) ;; tex (shrub-l1-shrub 83) ;; shrub @@ -132,17 +133,17 @@ (shrub-nt-l1-shrub 87) ;; shrub (merc-l1-shrub 88) ;; merc (emerc-l1-shrub 89) ;; emerc - (bucket-90 90) ;; mercneric + (gmerc-l1-shrub 90) ;; mercneric (tex-l2-shrub 91) ;; tex (shrub-l2-shrub 92) ;; shrub (shrub-n-l2-shrub 93) ;; shrub - (billboard-l2-shrub 94) ;; shrub + (billboard-l2-shrub 94) ;; shrub (shrub-v-l2-shrub 95) ;; shrub (shrub-nt-l2-shrub 96) ;; shrub (merc-l2-shrub 97) ;; merc (emerc-l2-shrub 98) ;; emerc - (bucket-99 99) ;; mercneric + (gmerc-l2-shrub 99) ;; mercneric (tex-l3-shrub 100) ;; tex (shrub-l3-shrub 101) ;; shrub @@ -152,7 +153,7 @@ (shrub-nt-l3-shrub 105) ;; shrub (merc-l3-shrub 106) ;; merc (emerc-l3-shrub 107) ;; emerc - (bucket-108 108) ;; mercneric + (gmerc-l3-shrub 108) ;; mercneric (tex-l4-shrub 109) ;; tex (shrub-l4-shrub 110) ;; shrub @@ -162,7 +163,7 @@ (shrub-nt-l4-shrub 114) ;; shrub (merc-l4-shrub 115) ;; merc (emerc-l4-shrub 116) ;; emerc - (bucket-117 117) ;; mercneric + (gmerc-l4-shrub 117) ;; mercneric (tex-l5-shrub 118) ;; tex (shrub-l5-shrub 119) ;; shrub @@ -172,7 +173,7 @@ (shrub-nt-l5-shrub 123) ;; shrub (merc-l5-shrub 124) ;; merc (emerc-l5-shrub 125) ;; emerc - (bucket-126 126) ;; mercneric + (gmerc-l5-shrub 126) ;; mercneric (tex-l0-alpha 127) ;; tex (tfrag-t-l0-alpha 128) ;; tfrag @@ -180,7 +181,7 @@ (etie-t-l0-alpha 130) ;; tie (merc-l0-alpha 131) ;; merc (emerc-l0-alpha 132) ;; emerc - (bucket-133 133) ;; mercneric + (gmerc-l0-alpha 133) ;; mercneric (tfrag-st-l0-alpha 134) ;; tfrag (tie-st-l0-alpha 135) ;; tie (etie-st-l0-alpha 136) ;; tie @@ -191,7 +192,7 @@ (etie-t-l1-alpha 140) ;; tie (merc-l1-alpha 141) ;; merc (emerc-l1-alpha 142) ;; emerc - (bucket-143 143) ;; mercneric + (gmerc-l1-alpha 143) ;; mercneric (tfrag-st-l1-alpha 144) ;; tfrag (tie-st-l1-alpha 145) ;; tie (etie-st-l1-alpha 146) ;; tie @@ -202,7 +203,7 @@ (etie-t-l2-alpha 150) ;; tie (merc-l2-alpha 151) ;; merc (emerc-l2-alpha 152) ;; emerc - (bucket-153 153) ;; mercneric + (gmerc-l2-alpha 153) ;; mercneric (tfrag-st-l2-alpha 154) ;; tfrag (tie-st-l2-alpha 155) ;; tie (etie-st-l2-alpha 156) ;; tie @@ -213,7 +214,7 @@ (etie-t-l3-alpha 160) ;; tie (merc-l3-alpha 161) ;; merc (emerc-l3-alpha 162) ;; emerc - (bucket-163 163) ;; mercneric + (gmerc-l3-alpha 163) ;; mercneric (tfrag-st-l3-alpha 164) ;; tfrag (tie-st-l3-alpha 165) ;; tie (etie-st-l3-alpha 166) ;; tie @@ -224,7 +225,7 @@ (etie-t-l4-alpha 170) ;; tie (merc-l4-alpha 171) ;; merc (emerc-l4-alpha 172) ;; emerc - (bucket-173 173) ;; mercneric + (gmerc-l4-alpha 173) ;; mercneric (tfrag-st-l4-alpha 174) ;; tfrag (tie-st-l4-alpha 175) ;; tie (etie-st-l4-alpha 176) ;; tie @@ -235,7 +236,7 @@ (etie-t-l5-alpha 180) ;; tie (merc-l5-alpha 181) ;; merc (emerc-l5-alpha 182) ;; emerc - (bucket-183 183) ;; mercneric + (gmerc-l5-alpha 183) ;; mercneric (tfrag-st-l5-alpha 184) ;; tfrag (tie-st-l5-alpha 185) ;; tie (etie-st-l5-alpha 186) ;; tie @@ -243,88 +244,88 @@ (tex-lcom-tfrag 187) ;; tex (merc-lcom-tfrag 188) ;; merc (emerc-lcom-tfrag 189) ;; emerc - (bucket-190 190) ;; mercneric + (gmerc-lcom-tfrag 190) ;; mercneric (tex-lcom-shrub 191) ;; tex (merc-lcom-shrub 192) ;; merc (emerc-lcom-shrub 193) ;; emerc - (bucket-194 194) ;; mercneric + (gmerc-lcom-shrub 194) ;; mercneric (bucket-195 195) ;; shadow (tex-l0-pris 196) ;; tex (merc-l0-pris 197) ;; merc (emerc-l0-pris 198) ;; emerc - (bucket-199 199) ;; mercneric + (gmerc-l0-pris 199) ;; mercneric (tex-l1-pris 200) ;; tex (merc-l1-pris 201) ;; merc (emerc-l1-pris 202) ;; emerc - (bucket-203 203) ;; mercneric + (gmerc-l1-pris 203) ;; mercneric (tex-l2-pris 204) ;; tex (merc-l2-pris 205) ;; merc (emerc-l2-pris 206) ;; emerc - (bucket-207 207) ;; mercneric + (gmerc-l2-pris 207) ;; mercneric (tex-l3-pris 208) ;; tex (merc-l3-pris 209) ;; merc (emerc-l3-pris 210) ;; emerc - (bucket-211 211) ;; mercneric + (gmerc-l3-pris 211) ;; mercneric (tex-l4-pris 212) ;; tex (merc-l4-pris 213) ;; merc (emerc-l4-pris 214) ;; emerc - (bucket-215 215) ;; mercneric + (gmerc-l4-pris 215) ;; mercneric (tex-l5-pris 216) ;; tex (merc-l5-pris 217) ;; merc (emerc-l5-pris 218) ;; emerc - (bucket-219 219) ;; mercneric + (gmerc-l5-pris 219) ;; mercneric (tex-lcom-pris 220) ;; tex (merc-lcom-pris 221) ;; merc (emerc-lcom-pris 222) ;; emerc - (bucket-223 223) ;; mercneric + (gmerc-lcom-pris 223) ;; mercneric (tex-l0-pris2 224) ;; tex (merc-l0-pris2 225) ;; merc (emerc-l0-pris2 226) ;; emerc - (bucket-227 227) ;; mercneric + (gmerc-l0-pris2 227) ;; mercneric (tex-l1-pris2 228) ;; tex (merc-l1-pris2 229) ;; merc (emerc-l1-pris2 230) ;; emerc - (bucket-231 231) ;; mercneric + (gmerc-l1-pris2 231) ;; mercneric (tex-l2-pris2 232) ;; tex (merc-l2-pris2 233) ;; merc (emerc-l2-pris2 234) ;; emerc - (bucket-235 235) ;; mercneric + (gmerc-l2-pris2 235) ;; mercneric (tex-l3-pris2 236) ;; tex (merc-l3-pris2 237) ;; merc (emerc-l3-pris2 238) ;; emerc - (bucket-239 239) ;; mercneric + (gmerc-l3-pris2 239) ;; mercneric (tex-l4-pris2 240) ;; tex (merc-l4-pris2 241) ;; merc (emerc-l4-pris2 242) ;; emerc - (bucket-243 243) ;; mercneric + (gmerc-l4-pris2 243) ;; mercneric (tex-l5-pris2 244) ;; tex (merc-l5-pris2 245) ;; merc (emerc-l5-pris2 246) ;; emerc - (bucket-247 247) ;; mercneric + (gmerc-l5-pris2 247) ;; mercneric (tex-lcom-pris2 248) ;; tex (merc-lcom-pris2 249) ;; merc (emerc-lcom-pris2 250) ;; emerc - (bucket-251 251) ;; mercneric + (gmerc-lcom-pris2 251) ;; mercneric (tex-l0-water 252) ;; tex (merc-l0-water 253) ;; merc - (bucket-254 254) ;; mercneric + (gmerc-l0-water 254) ;; mercneric (tfrag-w-l0-water 255) ;; tfrag (tie-w-l0-water 256) (etie-w-l0-water 257) @@ -334,7 +335,7 @@ (tex-l1-water 261) ;; tex (merc-l1-water 262) ;; merc - (bucket-263 263) ;; mercneric + (gmerc-l1-water 263) ;; mercneric (tfrag-w-l1-water 264) ;; tfrag (tie-w-l1-water 265) (etie-w-l1-water 266) @@ -344,7 +345,7 @@ (tex-l2-water 270) ;; tex (merc-l2-water 271) ;; merc - (bucket-272 272) ;; mercneric + (gmerc-l2-water 272) ;; mercneric (tfrag-w-l2-water 273) ;; tfrag (tie-w-l2-water 274) (etie-w-l2-water 275) @@ -354,7 +355,7 @@ (tex-l3-water 279) ;; tex (merc-l3-water 280) ;; merc - (bucket-281 281) ;; mercneric + (gmerc-l3-water 281) ;; mercneric (tfrag-w-l3-water 282) ;; tfrag (tie-w-l3-water 283) (etie-w-l3-water 284) @@ -364,7 +365,7 @@ (tex-l4-water 288) ;; tex (merc-l4-water 289) ;; merc - (bucket-290 290) ;; mercneric + (gmerc-l4-water 290) ;; mercneric (tfrag-w-l4-water 291) ;; tfrag (tie-w-l4-water 292) (etie-w-l4-water 293) @@ -374,7 +375,7 @@ (tex-l5-water 297) ;; tex (merc-l5-water 298) ;; merc - (bucket-299 299) ;; mercneric + (gmerc-l5-water 299) ;; mercneric (tfrag-w-l5-water 300) ;; tfrag (tie-w-l5-water 301) (etie-w-l5-water 302) @@ -384,7 +385,7 @@ (tex-lcom-water 306) ;; tex (merc-lcom-water 307) ;; merc - (bucket-308 308) ;; mercneric + (gmerc-lcom-water 308) ;; mercneric (tex-lcom-sky-post 309) @@ -396,11 +397,11 @@ (bucket-314 314) ;; shadow (bucket-315 315) ;; effects (tex-all-warp 316) ;; tex - (bucket-317 317) ;; mercneric + (gmerc-warp 317) ;; mercneric (debug-no-zbuf1 318) ;; debug, no zbuf (tex-all-map 319) ;; tex - (bucket-320 320) ;; hud + (progress 320) ;; hud | progress (screen-filter 321) ;; hud letterbox, no zbuf (bucket-322 322) ;; hud (bucket-323 323) ;; hud @@ -409,6 +410,10 @@ (debug3 326) ) +(defenum bucket-id-16 + :type int16 + :copy-entries bucket-id + ) ;; bit mask to select a renderer (defenum vu1-renderer-mask :type uint64 diff --git a/goal_src/jak2/engine/level/level.gc b/goal_src/jak2/engine/level/level.gc index a1c4f8b9b0..fced4b49ed 100644 --- a/goal_src/jak2/engine/level/level.gc +++ b/goal_src/jak2/engine/level/level.gc @@ -28,7 +28,8 @@ (suspend) ) (set! *display-profile* #t) - (set! *stats-profile-bars* #t)) + ;;(set! *stats-profile-bars* #t) + ) ) ) diff --git a/goal_src/jak2/engine/math/matrix.gc b/goal_src/jak2/engine/math/matrix.gc index 700b9705a2..48efd6ad84 100644 --- a/goal_src/jak2/engine/math/matrix.gc +++ b/goal_src/jak2/engine/math/matrix.gc @@ -364,6 +364,10 @@ (.xor.vf vf18 vf18 vf18) (.xor.vf vf23 vf23 vf23) (.xor.vf vf19 vf19 vf19) + (.xor.vf vf3 vf3 vf3) + (.xor.vf vf4 vf4 vf4) + (.xor.vf vf5 vf5 vf5) + (init-vf0-vector) (nop!) (nop!) diff --git a/goal_src/jak2/engine/nav/nav-mesh.gc b/goal_src/jak2/engine/nav/nav-mesh.gc index 15d7bbabd8..bf2a34bbd5 100644 --- a/goal_src/jak2/engine/nav/nav-mesh.gc +++ b/goal_src/jak2/engine/nav/nav-mesh.gc @@ -7,3 +7,6 @@ ;; DECOMP BEGINS +(defun nav-mesh-connect-from-ent ((arg0 entity-nav-mesh)) + (none) + ) diff --git a/goal_src/jak2/engine/process-drawable/process-drawable.gc b/goal_src/jak2/engine/process-drawable/process-drawable.gc index 20059cb515..af0003490e 100644 --- a/goal_src/jak2/engine/process-drawable/process-drawable.gc +++ b/goal_src/jak2/engine/process-drawable/process-drawable.gc @@ -453,7 +453,7 @@ ) ) ) - (draw-bone-lines (-> obj process)) + ; (draw-bone-lines (-> obj process)) 0 (none) ) @@ -578,6 +578,7 @@ ) ) :code (behavior ((arg0 string)) + (format 0 "ART ERROR: ~A for ~A~%" arg0 self) (if (-> self entity) (logior! (-> self entity extra perm status) (entity-perm-status bit-1)) ) @@ -713,7 +714,7 @@ ) (set! (-> s2-0 level-index) (the-as uint (-> s3-0 index))) ) - (set! (-> s2-0 dma-add-func) nothing) + (set! (-> s2-0 dma-add-func) (the-as (function process-drawable draw-control symbol object none) nothing)) (set! (-> arg2 0) (the-as cspace-array (setup-cspace-and-add s2-0 (the-as art-joint-geo sv-16) 'process))) (set! (-> s2-0 dma-add-func) dma-add-process-drawable) (set! (-> s2-0 shadow-mask) (res-lump-value (-> arg0 entity) 'shadow-mask uint :time -1000000000.0)) diff --git a/goal_src/jak2/engine/target/target-darkjak.gc b/goal_src/jak2/engine/target/target-darkjak.gc index 64cd36088f..4b68383d01 100644 --- a/goal_src/jak2/engine/target/target-darkjak.gc +++ b/goal_src/jak2/engine/target/target-darkjak.gc @@ -1524,14 +1524,13 @@ (set! (-> v1-19 id) (the-as uint arg3)) (set! (-> v1-19 mode) 'ice) (set! (-> v1-19 damage) 15.0) - (set! (-> v1-19 penetrate-using) (the-as uint (if (and (logtest? (focus-status dark) (-> self focus-status)) - (nonzero? (-> self darkjak)) - (logtest? (-> self darkjak stage) 32) - ) - #xd0001 - #x50001 - ) - ) + (set! (-> v1-19 penetrate-using) (if (and (logtest? (focus-status dark) (-> self focus-status)) + (nonzero? (-> self darkjak)) + (logtest? (-> self darkjak stage) 32) + ) + (penetrate touch dark-skin dark-bomb dark-giant) + (penetrate touch dark-skin dark-bomb) + ) ) (set! (-> a1-6 param 1) (the-as uint v1-19)) ) diff --git a/goal_src/jak2/engine/target/target-h.gc b/goal_src/jak2/engine/target/target-h.gc index be5271caf6..f614b9528e 100644 --- a/goal_src/jak2/engine/target/target-h.gc +++ b/goal_src/jak2/engine/target/target-h.gc @@ -159,7 +159,7 @@ (define-extern target-death (state symbol target)) (define-extern *float-mods* surface) -(define-extern target-send-attack (function process symbol touching-shapes-entry int int uint symbol :behavior target)) +(define-extern target-send-attack (function process symbol touching-shapes-entry int int penetrate symbol :behavior target)) (define-extern target-powerup-effect (function symbol none :behavior target)) (define-extern target-load-wait (state target)) (define-extern target-board-start (state object target)) diff --git a/goal_src/jak2/engine/target/target-handler.gc b/goal_src/jak2/engine/target/target-handler.gc index f2fe32dcb6..706007da04 100644 --- a/goal_src/jak2/engine/target/target-handler.gc +++ b/goal_src/jak2/engine/target/target-handler.gc @@ -214,13 +214,13 @@ ) ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 711] -(defbehavior target-send-attack target ((arg0 process) (arg1 symbol) (arg2 touching-shapes-entry) (arg3 int) (arg4 int) (arg5 uint)) +(defbehavior target-send-attack target ((arg0 process) (arg1 symbol) (arg2 touching-shapes-entry) (arg3 int) (arg4 int) (arg5 penetrate)) (local-vars (sv-96 symbol) (sv-100 touching-prims-entry) (sv-128 touching-prims-entry) (sv-176 touching-prims-entry) - (sv-224 uint) + (sv-224 penetrate) (sv-240 int) (sv-256 symbol) (sv-272 symbol) @@ -279,12 +279,11 @@ (set! (-> self control send-attack-time) (-> self clock frame-counter)) (send-event self 'hit arg1 arg0 arg2) (set! arg0 (the process (and (and (logtest? (focus-status dark) (-> self focus-status)) - (nonzero? (-> self darkjak)) - (logtest? (-> self darkjak stage) 2) - ) - arg0 - ) - ) + (nonzero? (-> self darkjak)) + (logtest? (-> self darkjak stage) 2) + ) + arg0 + ) ) ) (when (the-as object arg0) (when (and s4-0 (not s3-1) (-> self control danger-mode) (zero? (logand (-> s4-0 mask) (process-mask dark-effect)))) @@ -960,7 +959,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> (the-as fact-info-target (-> self fact-override)) shield-attack-id)) 0 - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) (set! (-> self control penetrate-using) s4-3) @@ -981,7 +980,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> self darkjak attack-id)) 0 - (the-as uint #x10001) + (penetrate touch dark-skin) ) ) (else @@ -1432,7 +1431,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> (the-as fact-info-target (-> self fact-override)) shield-attack-id)) 0 - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) ) @@ -1453,7 +1452,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) (else @@ -1527,7 +1526,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) (zero? (logand (-> self focus-status) (focus-status dead hit))) ) diff --git a/goal_src/jak2/engine/target/target.gc b/goal_src/jak2/engine/target/target.gc index 90faa24615..91f452143c 100644 --- a/goal_src/jak2/engine/target/target.gc +++ b/goal_src/jak2/engine/target/target.gc @@ -2098,7 +2098,7 @@ (the-as touching-shapes-entry (-> event param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) (set! (-> self gun combo-window-start) (-> self clock frame-counter)) (let ((v0-2 (the-as object (-> self state name)))) @@ -2354,7 +2354,7 @@ (the-as touching-shapes-entry (-> event param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) ) diff --git a/goal_src/jak2/engine/ui/bigmap.gc b/goal_src/jak2/engine/ui/bigmap.gc index 513847e8ba..67cb20f388 100644 --- a/goal_src/jak2/engine/ui/bigmap.gc +++ b/goal_src/jak2/engine/ui/bigmap.gc @@ -7,3 +7,18 @@ ;; DECOMP BEGINS +;; stubs + +(defmethod bigmap-method-14 bigmap ((obj bigmap)) + (none) + ) + +(defmethod bigmap-method-15 bigmap () + (none) + ) + +(defmethod initialize bigmap ((obj bigmap)) + (format 0 "in init~%") + (none)) + +(define *bigmap* (new 'global 'bigmap)) diff --git a/goal_src/jak2/engine/ui/hud.gc b/goal_src/jak2/engine/ui/hud.gc index 8a68c5928e..07d256d376 100644 --- a/goal_src/jak2/engine/ui/hud.gc +++ b/goal_src/jak2/engine/ui/hud.gc @@ -6,3 +6,11 @@ ;; dgos: ENGINE, GAME ;; DECOMP BEGINS + +(defun hide-hud ((arg0 symbol)) + (none) + ) + +(defun hud-hidden? () + #t + ) \ No newline at end of file diff --git a/goal_src/jak2/engine/ui/progress/progress-draw.gc b/goal_src/jak2/engine/ui/progress/progress-draw.gc index 74557f015c..98d257ea3a 100644 --- a/goal_src/jak2/engine/ui/progress/progress-draw.gc +++ b/goal_src/jak2/engine/ui/progress/progress-draw.gc @@ -88,7 +88,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-2 (the-as (pointer dma-tag) a3-1) ) @@ -302,7 +302,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -326,7 +326,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -364,7 +364,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -388,7 +388,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -426,7 +426,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -450,7 +450,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -488,7 +488,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -512,7 +512,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -550,7 +550,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -574,7 +574,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -1331,7 +1331,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-1) ) @@ -2425,7 +2425,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-9 (the-as (pointer dma-tag) a3-35) ) @@ -2459,7 +2459,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-10 (the-as (pointer dma-tag) a3-36) ) @@ -2496,7 +2496,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-12 (the-as (pointer dma-tag) a3-39) ) @@ -2526,7 +2526,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-14 (the-as (pointer dma-tag) a3-41) ) @@ -2558,7 +2558,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-16 (the-as (pointer dma-tag) a3-43) ) @@ -3130,7 +3130,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s4-1 (the-as (pointer dma-tag) a3-1) ) @@ -4469,7 +4469,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s4-0 (the-as (pointer dma-tag) a3-1) ) @@ -4657,7 +4657,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-1 (the-as (pointer dma-tag) a3-1) ) @@ -4710,7 +4710,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-1) ) @@ -6832,7 +6832,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) sv-192 (the-as (pointer dma-tag) a3-6) ) @@ -6947,7 +6947,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) sv-272 (the-as (pointer dma-tag) a3-13) ) diff --git a/goal_src/jak2/engine/ui/progress/progress.gc b/goal_src/jak2/engine/ui/progress/progress.gc index cd0031ffaf..6a7d1765e9 100644 --- a/goal_src/jak2/engine/ui/progress/progress.gc +++ b/goal_src/jak2/engine/ui/progress/progress.gc @@ -1297,7 +1297,7 @@ ;; WARN: Failed store: (s.w! (+ v1-8 12) 0) at op 20 (defun end-scan ((arg0 hud-box) (arg1 float)) (with-dma-buffer-add-bucket ((s5-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (bucket-id bucket-320) + (bucket-id progress) ) (hud-box-method-13 arg0 s5-0 arg1) ) diff --git a/goal_src/jak2/engine/util/profile.gc b/goal_src/jak2/engine/util/profile.gc index 9813442471..db815efa6c 100644 --- a/goal_src/jak2/engine/util/profile.gc +++ b/goal_src/jak2/engine/util/profile.gc @@ -336,48 +336,48 @@ (defun profile-mercneric-test ((arg0 bucket-id)) "Is this a mercneric bucket?" - (or (= arg0 (bucket-id bucket-16)) - (= arg0 (bucket-id bucket-27)) - (= arg0 (bucket-id bucket-38)) - (= arg0 (bucket-id bucket-49)) - (= arg0 (bucket-id bucket-60)) - (= arg0 (bucket-id bucket-71)) - (= arg0 (bucket-id bucket-81)) - (= arg0 (bucket-id bucket-90)) - (= arg0 (bucket-id bucket-99)) - (= arg0 (bucket-id bucket-108)) - (= arg0 (bucket-id bucket-117)) - (= arg0 (bucket-id bucket-126)) - (= arg0 (bucket-id bucket-133)) - (= arg0 (bucket-id bucket-143)) - (= arg0 (bucket-id bucket-153)) - (= arg0 (bucket-id bucket-163)) - (= arg0 (bucket-id bucket-173)) - (= arg0 (bucket-id bucket-183)) - (= arg0 (bucket-id bucket-190)) - (= arg0 (bucket-id bucket-194)) - (= arg0 (bucket-id bucket-199)) - (= arg0 (bucket-id bucket-203)) - (= arg0 (bucket-id bucket-207)) - (= arg0 (bucket-id bucket-211)) - (= arg0 (bucket-id bucket-215)) - (= arg0 (bucket-id bucket-219)) - (= arg0 (bucket-id bucket-223)) - (= arg0 (bucket-id bucket-227)) - (= arg0 (bucket-id bucket-231)) - (= arg0 (bucket-id bucket-235)) - (= arg0 (bucket-id bucket-239)) - (= arg0 (bucket-id bucket-243)) - (= arg0 (bucket-id bucket-247)) - (= arg0 (bucket-id bucket-251)) - (= arg0 (bucket-id bucket-254)) - (= arg0 (bucket-id bucket-263)) - (= arg0 (bucket-id bucket-272)) - (= arg0 (bucket-id bucket-281)) - (= arg0 (bucket-id bucket-290)) - (= arg0 (bucket-id bucket-299)) - (= arg0 (bucket-id bucket-308)) - (= arg0 (bucket-id bucket-317)) + (or (= arg0 (bucket-id gmerc-l0-tfrag)) + (= arg0 (bucket-id gmerc-l1-tfrag)) + (= arg0 (bucket-id gmerc-l2-tfrag)) + (= arg0 (bucket-id gmerc-l3-tfrag)) + (= arg0 (bucket-id gmerc-l4-tfrag)) + (= arg0 (bucket-id gmerc-l5-tfrag)) + (= arg0 (bucket-id gmerc-l0-shrub)) + (= arg0 (bucket-id gmerc-l1-shrub)) + (= arg0 (bucket-id gmerc-l2-shrub)) + (= arg0 (bucket-id gmerc-l3-shrub)) + (= arg0 (bucket-id gmerc-l4-shrub)) + (= arg0 (bucket-id gmerc-l5-shrub)) + (= arg0 (bucket-id gmerc-l0-alpha)) + (= arg0 (bucket-id gmerc-l1-alpha)) + (= arg0 (bucket-id gmerc-l2-alpha)) + (= arg0 (bucket-id gmerc-l3-alpha)) + (= arg0 (bucket-id gmerc-l4-alpha)) + (= arg0 (bucket-id gmerc-l5-alpha)) + (= arg0 (bucket-id gmerc-lcom-tfrag)) + (= arg0 (bucket-id gmerc-lcom-shrub)) + (= arg0 (bucket-id gmerc-l0-pris)) + (= arg0 (bucket-id gmerc-l1-pris)) + (= arg0 (bucket-id gmerc-l2-pris)) + (= arg0 (bucket-id gmerc-l3-pris)) + (= arg0 (bucket-id gmerc-l4-pris)) + (= arg0 (bucket-id gmerc-l5-pris)) + (= arg0 (bucket-id gmerc-lcom-pris)) + (= arg0 (bucket-id gmerc-l0-pris2)) + (= arg0 (bucket-id gmerc-l1-pris2)) + (= arg0 (bucket-id gmerc-l2-pris2)) + (= arg0 (bucket-id gmerc-l3-pris2)) + (= arg0 (bucket-id gmerc-l4-pris2)) + (= arg0 (bucket-id gmerc-l5-pris2)) + (= arg0 (bucket-id gmerc-lcom-pris2)) + (= arg0 (bucket-id gmerc-l0-water)) + (= arg0 (bucket-id gmerc-l1-water)) + (= arg0 (bucket-id gmerc-l2-water)) + (= arg0 (bucket-id gmerc-l3-water)) + (= arg0 (bucket-id gmerc-l4-water)) + (= arg0 (bucket-id gmerc-l5-water)) + (= arg0 (bucket-id gmerc-lcom-water)) + (= arg0 (bucket-id gmerc-warp)) ) ) diff --git a/goal_src/jak2/game.gp b/goal_src/jak2/game.gp index 5fe89f84fb..b5ec0943d7 100644 --- a/goal_src/jak2/game.gp +++ b/goal_src/jak2/game.gp @@ -628,6 +628,10 @@ "battle.gc" "elec-gate.gc" "cty-guard-turret-button.gc" + "enemy/guards/crimson-guard-level.gc" + "enemy/guards/guard-conversation.gc" + "enemy/guards/transport-level.gc" + ) (cgo "ENGINE.CGO" "engine.gd") @@ -682,6 +686,8 @@ (copy-gos "fort-entry-gate-ag" + "crimson-guard-ag" + "com-airlock-outer-ag" ) ;;;;;;;;;;;;;;;;;;;;; @@ -804,7 +810,6 @@ (copy-gos "citizen-fat-ag" "citizen-norm-ag" - "crimson-guard-ag" "citizen-chick-ag" "hellcat-ag" "carc-ag" @@ -854,7 +859,6 @@ (copy-textures 1565 1577 1601 1614 1642) (copy-gos - "com-airlock-outer-ag" "ctyindb-vis" ) @@ -994,7 +998,6 @@ ;; (copy-gos ;; "fodder-ag" ;; "liftcat-ag" -;; "com-airlock-outer-ag" ;; "atoll-windmill-ag" ;; "turbine-ag" ;; "slider-ag" @@ -1029,7 +1032,6 @@ ;; "krew-lowres-ag" ;; "cboss-tractor-ag" ;; "krew-clone-ag" -;; "com-airlock-outer-ag" ;; "cboss-bomb-ag" ;; "cboss-elevator-ag" ;; "casboss-vis" @@ -1054,7 +1056,6 @@ ;; (copy-gos ;; "daxter-highres-ag" ;; "jak-highres-ag" -;; "com-airlock-outer-ag" ;; "air-train-ag" ;; "cpad-elevator-ag" ;; "particleman-ag" @@ -1070,9 +1071,7 @@ ;; (goal-src-sequence ;; "" ;; :deps ("$OUT/obj/los-control.o") -;; "levels/common/enemy/guards/crimson-guard-level.gc" -;; "levels/common/enemy/guards/guard-conversation.gc" -;; "levels/common/enemy/guards/transport-level.gc" +;; ;; "levels/landing_pad/roboguard-level.gc" ;; "levels/landing_pad/castle-texture.gc" ;; "levels/landing_pad/castle-obs.gc" @@ -1084,7 +1083,6 @@ ;; (copy-gos ;; "roboguard-ag" ;; "crimson-guard-ag" -;; "com-airlock-outer-ag" ;; "cas-rot-bridge-ag" ;; "cas-electric-fence-ag" ;; "cas-rot-blade-ag" @@ -1151,7 +1149,6 @@ ;; (copy-textures 2444 2445 2645 2644 2744 2791 2441) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "com-airlock-inner-ag" ;; "farm-chilirots-ag" ;; "farm-cabbage-ag" @@ -1225,7 +1222,6 @@ ;; (copy-textures 955 957 956 958 1019 1638) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "ctygenb-vis" ;; ) @@ -1284,7 +1280,6 @@ ;; (copy-textures 1565 1577 1601 1614 1642) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "ctyindb-vis" ;; ) @@ -1368,7 +1363,6 @@ ;; "crimson-guard-highres-ag" ;; "consite-bomb-elevator-ag" ;; "crimson-guard-lowres-ag" -;; "com-airlock-outer-ag" ;; "consite-silo-doors-ag" ;; "precursor-stone-ag" ;; "bomb-trigger-ag" @@ -1416,7 +1410,6 @@ ;; (copy-gos ;; "ctypal-baron-statue-broken-ag" -;; "com-airlock-outer-ag" ;; "com-airlock-inner-ag" ;; "water-anim-ctypal-ag" ;; "palace-door-ag" @@ -1447,26 +1440,24 @@ ;; "ctyport-vis" ;; ) -;; ;;;;;;;;;;;;;;;;;;;;; -;; ;; CTB -;; ;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;; +;; CTB +;;;;;;;;;;;;;;;;;;;;; -;; (cgo "CTB.DGO" "ctb.gd") +(cgo "CTB.DGO" "ctb.gd") -;; (goal-src-sequence -;; "" -;; :deps ("$OUT/obj/los-control.o") -;; "levels/city/slums/ctyslumb-part.gc" -;; ) +(goal-src-sequence + "" + :deps ("$OUT/obj/los-control.o") + "levels/city/slums/ctyslumb-part.gc" + ) -;; (copy-textures 977 1308 978 1022 1647) +(copy-textures 977 1308 978 1022 1647) -;; (copy-gos -;; "com-airlock-outer-ag" -;; "com-airlock-inner-ag" -;; "fort-entry-gate-ag" -;; "ctyslumb-vis" -;; ) +(copy-gos + "com-airlock-inner-ag" + "ctyslumb-vis" + ) ;; ;;;;;;;;;;;;;;;;;;;;; ;; ;; CTC @@ -1483,7 +1474,6 @@ ;; (copy-textures 1268 1303 1269 1023 1648) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "door-ag" ;; "ctyslumc-vis" ;; ) @@ -1680,9 +1670,6 @@ ;; (goal-src-sequence ;; "" ;; :deps ("$OUT/obj/los-control.o") -;; "levels/common/enemy/guards/crimson-guard-level.gc" -;; "levels/common/enemy/guards/guard-conversation.gc" -;; "levels/common/enemy/guards/transport-level.gc" ;; "levels/dig/dig-digger.gc" ;; "levels/dig/dig-obs.gc" ;; "levels/dig/dig1-obs.gc" @@ -1880,7 +1867,6 @@ ;; "fort-robotank-top-ag" ;; "fort-elec-switch-ag" ;; "fort-roboscreen-ag" -;; "fort-entry-gate-ag" ;; "fort-robotank-sight-ag" ;; "fordumpa-vis" ;; ) @@ -1894,9 +1880,6 @@ ;; (goal-src-sequence ;; "" ;; :deps ("$OUT/obj/los-control.o") -;; "levels/common/enemy/guards/crimson-guard-level.gc" -;; "levels/common/enemy/guards/guard-conversation.gc" -;; "levels/common/enemy/guards/transport-level.gc" ;; "levels/fortress/ammo_dump/fordumpb-obs.gc" ;; "levels/fortress/ammo_dump/fordumpb-part.gc" ;; "levels/fortress/fortress-obs.gc" @@ -1916,54 +1899,49 @@ ;; "fordumpb-vis" ;; ) -;; ;;;;;;;;;;;;;;;;;;;;; -;; ;; FEA -;; ;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;; +;; FEA +;;;;;;;;;;;;;;;;;;;;; -;; (cgo "FEA.DGO" "fea.gd") +(cgo "FEA.DGO" "fea.gd") -;; (goal-src-sequence -;; "" -;; :deps ("$OUT/obj/los-control.o") -;; "levels/common/enemy/guards/crimson-guard-level.gc" -;; "levels/common/enemy/guards/guard-conversation.gc" -;; "levels/common/enemy/guards/transport-level.gc" -;; "levels/fortress/exit/forexita-part.gc" -;; "levels/fortress/exit/forexita-obs.gc" -;; ) +(goal-src-sequence + "" + :deps ("$OUT/obj/los-control.o") + "levels/fortress/exit/forexita-part.gc" + "levels/fortress/exit/forexita-obs.gc" + ) -;; (copy-textures 1580 1583 1581) +(copy-textures 1580 1583 1581) -;; (copy-gos -;; "jak-pole+0-ag" -;; "crimson-guard-ag" -;; "fort-lift-plat-ag" -;; "forexita-vis" -;; ) +(copy-gos + "jak-pole+0-ag" + "fort-lift-plat-ag" + "forexita-vis" + ) ;; ;;;;;;;;;;;;;;;;;;;;; ;; ;; FEB ;; ;;;;;;;;;;;;;;;;;;;;; -;; (cgo "FEB.DGO" "feb.gd") +(cgo "FEB.DGO" "feb.gd") -;; (goal-src-sequence -;; "" -;; :deps ("$OUT/obj/los-control.o") -;; "engine/target/target-tube.gc" -;; "levels/fortress/fortress-obs.gc" -;; "levels/fortress/exit/forexitb-part.gc" -;; ) +(goal-src-sequence + "" + :deps ("$OUT/obj/los-control.o") + "engine/target/target-tube.gc" + "levels/fortress/fortress-obs.gc" + "levels/fortress/exit/forexitb-part.gc" + ) -;; (copy-textures 1584 1587 1585 1586 1712) +(copy-textures 1584 1587 1585 1586 1712) -;; (copy-gos -;; "jak-tube+0-ag" -;; "water-anim-fortress-ag" -;; "fort-trap-door-ag" -;; "fort-entry-gate-ag" -;; "forexitb-vis" -;; ) +(copy-gos + "jak-tube+0-ag" + "water-anim-fortress-ag" + "fort-trap-door-ag" + "forexitb-vis" + ) ;; ;;;;;;;;;;;;;;;;;;;;; ;; ;; FOB @@ -1978,7 +1956,6 @@ ;; "daxter-highres-ag" ;; "youngsamos-highres-ag" ;; "jak-highres-ag" -;; "crimson-guard-ag" ;; "crimson-guard-hover-ag" ;; "transport-ag" ;; "life-seed-ag" @@ -1995,9 +1972,6 @@ "" :deps ("$OUT/obj/los-control.o") "levels/common/enemy/spyder.gc" - "levels/common/enemy/guards/crimson-guard-level.gc" - "levels/common/enemy/guards/guard-conversation.gc" - "levels/common/enemy/guards/transport-level.gc" "levels/common/enemy/hover/hover-formation-h.gc" "levels/common/enemy/hover/hover-nav-control-h.gc" "levels/common/enemy/hover/hover-enemy-h.gc" @@ -2061,7 +2035,6 @@ ;; "fort-robotank-top-ag" ;; "fort-roboscreen-ag" ;; "fort-missile-ag" -;; "fort-entry-gate-ag" ;; "fort-robotank-sight-ag" ;; "fort-dump-bomb-a-ag" ;; "particleman-ag" @@ -2106,9 +2079,6 @@ ;; "levels/common/enemy/hover/wasp.gc" ;; "levels/common/enemy/hover/crimson-guard-hover.gc" ;; "levels/common/enemy/hover/flamer.gc" -;; "levels/common/enemy/guards/crimson-guard-level.gc" -;; "levels/common/enemy/guards/guard-conversation.gc" -;; "levels/common/enemy/guards/transport-level.gc" ;; "levels/fortress/rescue/forresca-part.gc" ;; "levels/fortress/rescue/forresca-obs.gc" ;; ) @@ -2116,9 +2086,7 @@ ;; (copy-textures 3190 3192 3191) ;; (copy-gos -;; "crimson-guard-ag" ;; "crimson-guard-hover-ag" -;; "fort-entry-gate-ag" ;; "cty-guard-turret-button-ag" ;; "fort-led-ag" ;; "forresca-vis" @@ -2145,7 +2113,6 @@ ;; (copy-gos ;; "spydroid-ag" ;; "fort-turret-ag" -;; "fort-entry-gate-ag" ;; "cty-guard-turret-button-ag" ;; "fort-elec-belt-ag" ;; "forrescb-vis" @@ -2205,7 +2172,6 @@ ;; "gun-dummy-b-ag" ;; "gun-cit-c-ag" ;; "gun-dummy-big-ag" -;; "fort-entry-gate-ag" ;; "hip-door-a-ag" ;; "yellow-barrel-ag" ;; "dark-barrel-ag" @@ -2467,21 +2433,21 @@ ;; "lcitylow" ;; ) -;; ;;;;;;;;;;;;;;;;;;;;; -;; ;; LDJAKBRN -;; ;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;; +;; LDJAKBRN +;;;;;;;;;;;;;;;;;;;;; -;; (cgo "LDJAKBRN.DGO" "ldjakbrn.gd") +(cgo "LDJAKBRN.DGO" "ldjakbrn.gd") -;; (copy-textures 2662 2657 3094) +(copy-textures 2662 2657 3094) -;; (copy-gos -;; "jak-highres-prison-ag" -;; "baron-highres-ag" -;; "prsn-daxter-plat-ag" -;; "jak-clothes-ag" -;; "ldjakbrn" -;; ) +(copy-gos + "jak-highres-prison-ag" + "baron-highres-ag" + "prsn-daxter-plat-ag" + "jak-clothes-ag" + "ldjakbrn" + ) ;; ;;;;;;;;;;;;;;;;;;;;; ;; ;; LERBRNGD @@ -3195,7 +3161,6 @@ ;; (copy-gos ;; "grunt-ag" ;; "citizen-norm-ag" -;; "crimson-guard-ag" ;; "predator-ag" ;; "flitter-ag" ;; "cara-ag" @@ -3216,7 +3181,6 @@ ;; (copy-gos ;; "roboguard-ag" ;; "citizen-norm-ag" -;; "crimson-guard-ag" ;; "citizen-chick-ag" ;; "hellcat-ag" ;; "carc-ag" @@ -3339,7 +3303,6 @@ ;; (copy-textures 1254 1256 1255 1253 1257 3470 1275) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "plat-buried-ag" ;; "plat-return-ag" ;; "water-anim-mountain-ag" @@ -3638,7 +3601,6 @@ ;; (copy-gos ;; "jak-pole+0-ag" ;; "pal-gun-turret-ag" -;; "com-airlock-outer-ag" ;; "pal-electric-fan-ag" ;; "pal-cable-nut-ag" ;; "pal-flip-step-ag" @@ -3658,9 +3620,6 @@ ;; (goal-src-sequence ;; "" ;; :deps ("$OUT/obj/los-control.o") -;; "levels/common/enemy/guards/crimson-guard-level.gc" -;; "levels/common/enemy/guards/guard-conversation.gc" -;; "levels/common/enemy/guards/transport-level.gc" ;; "levels/common/entities/sew-gunturret.gc" ;; "levels/palace/explore/palent-part.gc" ;; "levels/palace/pal-obs.gc" @@ -3670,10 +3629,8 @@ ;; (copy-gos ;; "jak-pole+0-ag" -;; "crimson-guard-ag" ;; "palent-turret-ag" ;; "pal-breakable-window-ag" -;; "com-airlock-outer-ag" ;; "pal-grind-ring-ag" ;; "pal-grind-ring-center-ag" ;; "pal-throne-door-ag" @@ -3749,7 +3706,6 @@ ;; (copy-textures 2360 2363 2361 2362 2521 2746) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "pal-prong-ag" ;; "pal-flip-step-ag" ;; "pal-lowrez-throne-ag" @@ -3772,7 +3728,6 @@ ;; (copy-textures 2371 2372 2692) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "com-airlock-inner-ag" ;; "com-elevator-ag" ;; "palshaft-vis" @@ -3835,7 +3790,6 @@ ;; "mech-ag" ;; "fodder-ag" ;; "ruins-bridge-ag" -;; "com-airlock-outer-ag" ;; "shield-gunner-ag" ;; "precipice-b-ag" ;; "ruins-precipice-ag" @@ -3922,7 +3876,6 @@ ;; (copy-textures 1133 1135 1134 3383) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "com-airlock-inner-ag" ;; "sew-elevator-ag" ;; "sewerb-vis" @@ -4243,7 +4196,6 @@ ;; (copy-textures 1372 1373 1458) ;; (copy-gos -;; "com-airlock-outer-ag" ;; "com-airlock-inner-ag" ;; "sew-elevator-ag" ;; "sewescb-vis" @@ -4456,7 +4408,6 @@ ;; "crocadog-highres-ag" ;; "kor-highres-ag" ;; "kid-highres-ag" -;; "com-airlock-outer-ag" ;; "tomb-mar-door-ag" ;; "com-elevator-ag" ;; "tombd-vis" diff --git a/goal_src/jak2/levels/city/common/ctywide-scenes.gc b/goal_src/jak2/levels/city/common/ctywide-scenes.gc index 33474d9e20..1daf67f91e 100644 --- a/goal_src/jak2/levels/city/common/ctywide-scenes.gc +++ b/goal_src/jak2/levels/city/common/ctywide-scenes.gc @@ -7,3 +7,1977 @@ ;; DECOMP BEGINS +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defpartgroup group-daxter-spit + :id 187 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 881 :flags (bit7)) (sp-item 882 :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 881 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 8.0 2.0 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.01) (meters 0.03) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.85333335 -0.85333335 1.0) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-rnd-flt spt-friction 0.93 0.03 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 882 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 32.0 4.0 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.01) (meters 0.005) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-omega 0.2048) + (sp-rnd-flt spt-vel-x (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-int spt-timer 75) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-beer-drip + :id 188 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 16) + :parts ((sp-item 883) (sp-item 884) (sp-item 885)) + ) + +;; failed to figure out what this is: +(defpart 883 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 2.0) + (sp-flt spt-y (meters -0.45)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-copy-from-other spt-g -1) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.00012499999) (meters 0.00012499999) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.6) + (sp-flt spt-accel-y 6.826667) + (sp-flt spt-friction 0.6) + (sp-int spt-timer 80) + (sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-flt spt-conerot-radius (meters 0)) + ) + ) + +;; failed to figure out what this is: +(defpart 884 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x77 :page #x45e)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0) (meters 0.015) 1.0) + (sp-rnd-flt spt-y (meters 0.015) (meters -0.015) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.01) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters -0.00066666666) 1.0) + (sp-int spt-timer 650) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 115 -1 1) + (sp-launcher-by-id spt-next-launcher 886) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 885 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x77 :page #x45e)) + (sp-flt spt-num 1.5) + (sp-rnd-flt spt-x (meters 0) (meters 0.015) 1.0) + (sp-rnd-flt spt-y (meters 0.015) (meters -0.015) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.01) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters -0.00066666666) 1.0) + (sp-int spt-timer 650) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 120 -1 1) + (sp-launcher-by-id spt-next-launcher 886) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 886 + :init-specs ((sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.01) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-omega 2.048) + (sp-rnd-flt spt-vel-x (meters -0.005) (meters 0.01) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.00066666666) (meters 0.006) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.005) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-flt spt-friction 0.95) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctywide-jak-bike-thruster + :id 189 + :duration (seconds 3) + :flags (use-local-clock unk-4) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 887 :flags (is-3d bit7)) + (sp-item 888 :flags (is-3d bit7)) + (sp-item 889 :flags (is-3d bit7)) + (sp-item 890 :flags (is-3d bit7)) + (sp-item 891 :flags (bit7)) + (sp-item 892 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 887 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 888 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 891 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -3)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 889 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 890 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 892 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -3)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctywide-errol-bike-thruster + :id 190 + :duration (seconds 3) + :flags (use-local-clock unk-4) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 893 :flags (is-3d bit7)) + (sp-item 894 :flags (is-3d bit7)) + (sp-item 895 :flags (is-3d bit7)) + (sp-item 896 :flags (is-3d bit7)) + (sp-item 897 :flags (bit7)) + (sp-item 898 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 893 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 894 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 897 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.35)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 895 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 896 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 898 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.35)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-slums-talkbox-speak + :id 191 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 2) + :rotate ((degrees 4) (degrees 0) (degrees 0)) + :parts ((sp-item 899 :flags (is-3d bit6 bit7) :period 130 :length 30) + (sp-item 899 :flags (is-3d bit6 bit7) :period 150 :length 35 :offset 5) + (sp-item 899 :flags (is-3d bit6 bit7) :period 330 :length 25 :offset 35) + (sp-item 899 :flags (is-3d bit6 bit7) :period 250 :length 60 :offset 15) + (sp-item 899 :flags (is-3d bit6 bit7) :period 465 :length 75 :offset 60) + ) + ) + +;; failed to figure out what this is: +(defpart 899 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xcb :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 0.4)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 16.0) + (sp-rnd-flt spt-vel-y (meters 0.0016666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 100) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat) + (sp-flt spt-userdata 2048.0) + (sp-int spt-next-time 50) + (sp-launcher-by-id spt-next-launcher 900) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 900 + :init-specs ((sp-flt spt-fade-a -0.32)) + ) + +;; failed to figure out what this is: +(defskelgroup skel-seal-of-mar-top seal-of-mar-top 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-help-kid-intro" + :extra #f + :info #f + :mask-to-clear #x1002000 + :entity "hal-help-kid-1" + :art-group "scenecamera" + :anim "city-help-kid-intro" + :parts 34 + :command-list '((0 + (send-event "kor-3" 'hide #t) + (send-event "kid-2" 'hide #t) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2612019.2 :y 33177.6 :z -346521.6 :w 11059.2) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 95.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2611609.5 :y 33177.6 :z -369049.6 :w 11059.2) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 139.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2613657.5 :y 33177.6 :z -392396.8 :w 12288.0)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2620211.2 :y 33177.6 :z -407552.0 :w 13107.2)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2624716.8 :y 33177.6 :z -421478.4 :w 6144.0)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2627993.5 :y 33177.6 :z -428032.0 :w 4915.2)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2630860.8 :y 33177.6 :z -401408.0 :w 9830.4)) + (fadein (frame-time-30 10)) + ) + (1250 (fma-sphere + (danger) + entity + "crimson-guard-highres" + joint + "main" + danger + (new 'static 'traffic-danger-info + :sphere (new 'static 'sphere :r 122880.0) + :notify-radius 245760.0 + :danger-level 1.0 + :flags (traffic-danger-flags tdf0) + :danger-type (traffic-danger-type tdt4) + ) + ) + ) + (2015 (fadeout (frame-time-30 5))) + (10000 (task-close! "city-help-kid-introduction") (send-event "kor-3" 'hide #f) (send-event "kid-2" 'hide #f)) + ) + :cut-list '(57 134 201 401 513 721 830 895 1041 1141 1239 1350 1531 1601 1651 1702 1801 1911 2010) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ctykora + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ctykora + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kor-highres" + :level 'ctykora + :art-group "skel-kor-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kid-highres" + :level 'ctykora + :art-group "skel-kid-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crimson-guard-highres" + :level 'ctykora + :art-group "skel-crimson-guard-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crimson-guard-lowres" + :level 'ctykora + :art-group "skel-crimson-guard-lowres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x4 + ) + (new 'static 'scene-actor + :name "crimson-guard-lowres" + :level 'ctykora + :art-group "skel-crimson-guard-lowres" + :prefix "b-" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x4 + ) + ) + :load-point-obj "ctyslumb-fort" + :end-point-obj (new 'static 'continue-point + :name "ctyslumb-start" + :level #f + :flags (continue-flags cf2) + :trans (new 'static 'vector :x 2620227.2 :y 31333.99 :z -400654.34 :w 1.0) + :quat (new 'static 'vector :y 0.9997 :w -0.0234) + :camera-trans (new 'static 'vector :x 2606159.8 :y 52533.656 :z -360011.78 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.9454 0.0 -0.3258)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0583 0.9838 -0.1693)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.3205 -0.179 -0.9301)) + ) + :on-goto #f + :vis-nick 'ctyslumb + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'ctyslumb :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctykora :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctywide :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'ctywide1 'ctywide2 'ctywide3) + ) + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #f + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-help-kid-resolution" + :extra #f + :info #f + :mask-to-clear #x1002000 + :entity "hal-help-kid-1" + :art-group "scenecamera" + :anim "city-help-kid-resolution" + :parts 12 + :command-list '((1 + (send-event "kor-3" 'hide #t) + (send-event "kid-2" 'hide #t) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2610380.8 :y 33177.6 :z -382976.0 :w 11059.2)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2613248.0 :y 33177.6 :z -367001.6 :w 13107.2)) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2622259.2 :y 33177.6 :z -384204.8 :w 8192.0) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 498.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2613657.5 :y 33177.6 :z -353075.2 :w 7372.8) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 705.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2599321.5 :y 33996.8 :z -361676.8 :w 7372.8)) + (send-event *traffic-manager* 'set-guard-target-level (unbox 0)) + (send-event *traffic-manager* 'set-max-alert-level (unbox 0)) + (send-event *traffic-manager* 'set-alert-level (unbox 0)) + (send-event *traffic-manager* 'set-alert-duration (unbox 10800000)) + (send-event *traffic-manager* 'deactivate-by-type (unbox 6)) + (send-event *traffic-manager* 'deactivate-by-type (unbox 18)) + (send-event *traffic-manager* 'deactivate-by-type (unbox 19)) + (fma-sphere + (danger) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 279.0)) + danger + (new 'static 'traffic-danger-info + :sphere (new 'static 'sphere :x 2605056.0 :y 40960.0 :z -372736.0 :r 122880.0) + :notify-radius 245760.0 + :danger-level 1.0 + :flags (traffic-danger-flags tdf0) + :danger-type (traffic-danger-type tdt4) + ) + ) + ) + (10000 (task-close! "city-help-kid-resolution") (send-event *traffic-manager* 'restore-default-settings)) + ) + :cut-list '(68 250 298 392 498 562 705 838 905 1056) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ctykora + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min 250) (298 max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ctykora + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kor-highres" + :level 'ctykora + :art-group "skel-kor-highres" + :prefix "" + :draw-frames '((min 838) (905 max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kid-highres" + :level 'ctykora + :art-group "skel-kid-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "atoll-hellcat" + :level 'ctykora + :art-group "skel-atoll-hellcat" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crimson-guard-highres" + :level 'ctykora + :art-group "skel-crimson-guard-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x2 + ) + ) + :load-point-obj "ctyslumb-fort" + :end-point-obj (new 'static 'continue-point + :name "ctyslumb-start" + :level #f + :flags (continue-flags cf2) + :trans (new 'static 'vector :x 2588147.8 :y 32754.482 :z -150693.89 :w 1.0) + :quat (new 'static 'vector :x -0.0012 :y -0.9819 :z -0.0008 :w 0.1889) + :camera-trans (new 'static 'vector :x 2593185.8 :y 51852.492 :z -107130.88 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.9935 0.0 0.113)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0149 0.9912 -0.1313)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.112 -0.1321 -0.9848)) + ) + :on-goto #f + :vis-nick 'default-level + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'ctyslumb :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctykora :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctywide :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'ctywide1 'ctywide2 'ctywide3) + ) + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-protect-blimp-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "port-turret-2" + :art-group "scenecamera" + :anim "city-protect-blimp-res" + :parts 5 + :command-list '((0 (kill "port-turret-2")) (10000 (task-close! "city-protect-blimp-resolution"))) + :cut-list '(165 210 407) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "torn-highres" + :level 'portblmp + :art-group "skel-torn-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "turret" + :level 'portblmp + :art-group "skel-turret" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-turret" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-get-hoverboard" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-55" + :art-group "scenecamera" + :anim "city-get-hoverboard" + :parts 4 + :command-list '((0 (fadein (frame-time (new 'static 'bfloat :data 10.0)))) (10000 (task-close! "forest-scouts-get-board"))) + :cut-list '(49) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "board" + :level #f + :art-group "skel-board" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyfarma-airlock-movie" + :end-point-obj "ctyfarma-airlock" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-meet-brutter-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-53" + :art-group "scenecamera" + :anim "city-meet-brutter-res" + :parts 6 + :command-list '((0 (fadein (seconds (new 'static 'bfloat :data 0.0666)))) + (303 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 303.0) (new 'static 'bfloat :data 306.0)) + ) + ) + (320 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 320.0) (new 'static 'bfloat :data 323.0)) + ) + ) + (330 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 330.0) (new 'static 'bfloat :data 332.0)) + ) + ) + (348 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 348.0) (new 'static 'bfloat :data 350.0)) + ) + ) + (357 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 357.0) (new 'static 'bfloat :data 357.5)) + ) + ) + (648 (fadeout (seconds (new 'static 'bfloat :data 0.0666)))) + (10000 (task-close! "city-meet-brutter-resolution")) + ) + :cut-list '(35 216 300 463) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'kiosk + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'kiosk + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "brutter-highres" + :level 'kiosk + :art-group "skel-brutter-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "kiosk-start" + :end-point-obj "kiosk-start" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-save-lurkers-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-53" + :art-group "scenecamera" + :anim "city-save-lurkers-intro" + :parts 12 + :command-list '((0 (fadein (seconds (new 'static 'bfloat :data 0.0666)))) + (98 (part-tracker + "group-beer-drip" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 98.0) (new 'static 'bfloat :data 157.0)) + ) + ) + (1435 (fadeout (frame-time-30 5))) + (10000 (task-close! "city-save-lurkers-introduction")) + ) + :cut-list '(60 104 158 270 352 555 606 831 844 996 1131 1271 1300 1409) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'kiosk + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'kiosk + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'kiosk + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "brutter-highres" + :level 'kiosk + :art-group "skel-brutter-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "kiosk-start" + :end-point-obj "kiosk-start" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-errol-challenge-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-70" + :art-group "scenecamera" + :anim "city-errol-challenge-res" + :parts 4 + :command-list '((0 (fadein (frame-time (new 'static 'bfloat :data 2.0))) (part-tracker + "group-ctywide-jak-bike-thruster" + entity + "bikea" + joint + "main_" + track + #t + duration + (frame-range 0 40) + ) + ) + (315 (part-tracker + "group-ctywide-errol-bike-thruster" + entity + "bikeb" + joint + "main_" + track + #t + duration + (frame-range 315 338) + ) + ) + (387 (part-tracker + "group-ctywide-errol-bike-thruster" + entity + "bikeb" + joint + "main_" + track + #t + duration + (frame-range 387 449) + ) + ) + (445 (fadeout (frame-time-30 5))) + (10000 (task-close! "city-errol-challenge-resolution")) + ) + :cut-list '(38 135 195 338 387) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'stadium + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'stadium + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "errol-highres" + :level 'lerrol + :art-group "skel-errol-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "bikea" + :level 'lwidea + :art-group "skel-bikea" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #xe + ) + (new 'static 'scene-actor + :name "bikeb" + :level 'lwidea + :art-group "skel-bikeb" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x1e + ) + ) + :load-point-obj "stadium-start" + :end-point-obj (new 'static 'continue-point + :name "stadium-start" + :level #f + :trans (new 'static 'vector :x 1132806.1 :y -16393.83 :z -1956527.8 :w 1.0) + :quat (new 'static 'vector :y -0.1582 :z -0.0002 :w 0.9873) + :camera-trans (new 'static 'vector :x 1171506.8 :y 4476.109 :z -1939225.8 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.2976 0.0 0.9546)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.1726 0.9835 -0.0538)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.9389 -0.1808 -0.2927)) + ) + :on-goto #f + :vis-nick 'stadium + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'stadium :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctywide :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctygenb :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'ctywide1 'ctywide2 'stadium1) + ) + :borrow '((stadium 0 lerrol special) (ctywide 1 lwidea special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-protect-slums-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-86" + :art-group "scenecamera" + :anim "city-protect-slums-intro" + :parts 4 + :command-list '((0 + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 3132661.8 :y 33669.12 :z -2965708.8 :w 2048000.0)) + (fadein (frame-time-30 (new 'static 'bfloat :data 5.0))) + (part-tracker + "group-slums-seal-of-mar-glow" + entity + "seal-of-mar-top" + joint + "top" + track + #t + duration + (frame-range 0 375) + ) + ) + (75 (part-tracker + "group-slums-talkbox-speak" + entity + "talk-box" + joint + "main" + track + #t + duration + (frame-range 75 360) + ) + ) + (372 (fadeout (frame-time-30 (new 'static 'bfloat :data 3.0)))) + (10000 (task-close! "city-protect-water-slums-get-seal") (task-close! "city-protect-water-slums-fight")) + ) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "seal-of-mar-top" + :level 'lprotect + :art-group "skel-seal-of-mar-top" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "talk-box" + :level #f + :art-group "skel-talk-box" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyslumc-seal-movie" + :end-point-obj "ctyslumc-slums" + :borrow '((ctywide 0 lprotect special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-escort-kid-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-13" + :art-group "scenecamera" + :anim "city-escort-kid-intro" + :parts 10 + :command-list '((0 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) update-mood-copy-ctywide) + (set! (-> gp-0 info sky) #t) + ) + ) + (let ((gp-1 (level-get *level* 'lyskdcd))) + (the-as object (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) update-mood-copy-ctywide) + (let ((v0-4 #t)) + (set! (-> gp-1 info sky) v0-4) + v0-4 + ) + ) + ) + ) + ) + ) + (send-event + *traffic-manager* + 'kill-traffic-sphere + (new 'static 'vector :x 4707533.0 :y 32768.0 :z 226918.4 :w 172032.0) + ) + (kill "parking-spot-8" store #f) + ) + (844 (part-tracker + "group-hideout-bling-bling" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 844.0) (new 'static 'bfloat :data 857.0)) + ) + ) + (10000 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-0 info sky) #f) + ) + ) + (let ((gp-1 (level-get *level* 'lyskdcd))) + (the-as + object + (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-1 info sky) #f) + #f + ) + ) + ) + ) + ) + (task-close! "city-escort-kid-introduction") + ) + ) + :cut-list '(61 171 269 361 461 563 892 1012 1093 1170 740 860 941 1010) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'lyskdcd + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'lyskdcd + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crocadog-highres" + :level 'lyskdcd + :art-group "skel-crocadog-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kid-highres" + :level 'lyskdcd + :art-group "skel-kid-highres" + :prefix "" + :draw-frames '((min 1012)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "youngsamos-highres" + :level 'lyskdcd + :art-group "skel-youngsamos-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'lyskdcd + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "escort-kid-intro" + :end-point-obj "escort-kid-intro" + :borrow '((ctywide 0 lkiddoge special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-hideout-bling-bling + :id 192 + :duration (seconds 0.017) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 901 :flags (bit6)) (sp-item 902 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 901 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 160.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 6.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 902 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.075)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 196.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "ruins-tower-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-13" + :art-group "scenecamera" + :anim "ruins-tower-intro" + :parts 11 + :command-list '((0 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) update-mood-copy-ctywide) + (set! (-> gp-0 info sky) #t) + ) + ) + (let ((gp-1 (level-get *level* 'ltrntess))) + (the-as object (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) update-mood-copy-ctywide) + (let ((v0-4 #t)) + (set! (-> gp-1 info sky) v0-4) + v0-4 + ) + ) + ) + ) + ) + ) + (send-event + *traffic-manager* + 'kill-traffic-sphere + (new 'static 'vector :x 4707533.0 :y 32768.0 :z 226918.4 :w 172032.0) + ) + ) + (917 (part-tracker + "group-hideout-knife-glint" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 917.0) (new 'static 'bfloat :data 972.0)) + ) + ) + (1140 (part-tracker + "group-hideout-knife-glint" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 1140.0) (new 'static 'bfloat :data 1240.0)) + ) + ) + (10000 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-0 info sky) #f) + ) + ) + (let ((gp-1 (level-get *level* 'ltrntess))) + (the-as + object + (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-1 info sky) #f) + #f + ) + ) + ) + ) + ) + (setting-pers music-volume mode 'abs value (new 'static 'bfloat) time (seconds 2)) + (task-close! "ruins-tower-introduction") + ) + ) + :cut-list '(150 312 541 591 636 796 852 976 1007 1131) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'ltrntess + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ltrntess + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((214 636) (796 max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ltrntess + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min 636) (796 max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "torn-highres" + :level 'ltrntess + :art-group "skel-torn-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tess-highres" + :level 'ltrntess + :art-group "skel-tess-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctysluma-tower-intro" + :end-point-obj "ctysluma-tower-intro-exit" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-hideout-knife-glint + :id 193 + :duration (seconds 0.017) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 903 :flags (bit6)) (sp-item 904 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 903 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 6.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 904 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + + + + diff --git a/goal_src/jak2/levels/common/airlock.gc b/goal_src/jak2/levels/common/airlock.gc index 216e809e6e..0d28a3ceaf 100644 --- a/goal_src/jak2/levels/common/airlock.gc +++ b/goal_src/jak2/levels/common/airlock.gc @@ -366,6 +366,42 @@ :bounds (static-spherem 0 5 0 14) ) +; ;; failed to figure out what this is: +; (let ((a0-10 (new 'static 'skeleton-group +; :name "skel-com-airlock-outer" +; :extra #f +; :info #f +; :art-group-name "com-airlock-outer" +; :bounds (new 'static 'vector :y 20480.0 :w 57344.0) +; :version #x7 +; ) +; ) +; ) +; (set! (-> a0-10 jgeo) 0) +; (set! (-> a0-10 janim) 2) +; (set! (-> a0-10 mgeo 0) 1) +; (set! (-> a0-10 lod-dist 0) 4095996000.0) +; (add-to-loading-level a0-10) +; ) + +; ;; failed to figure out what this is: +; (let ((a0-11 (new 'static 'skeleton-group +; :name "skel-com-airlock-inner" +; :extra #f +; :info #f +; :art-group-name "com-airlock-inner" +; :bounds (new 'static 'vector :y 20480.0 :w 57344.0) +; :version #x7 +; ) +; ) +; ) +; (set! (-> a0-11 jgeo) 0) +; (set! (-> a0-11 janim) 2) +; (set! (-> a0-11 mgeo 0) 1) +; (set! (-> a0-11 lod-dist 0) 4095996000.0) +; (add-to-loading-level a0-11) +; ) + (defstate close (com-airlock) :virtual #t :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) @@ -827,6 +863,7 @@ ;; WARN: Return type mismatch object vs none. (defmethod init-from-entity! com-airlock-outer ((obj com-airlock-outer) (arg0 entity-actor)) + (stack-size-set! (-> obj main-thread) 1024) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 penetrated-by) (penetrate)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) @@ -891,6 +928,7 @@ ;; WARN: Return type mismatch object vs none. (defmethod init-from-entity! com-airlock-inner ((obj com-airlock-inner) (arg0 entity-actor)) + (stack-size-set! (-> obj main-thread) 1024) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 penetrated-by) (penetrate)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) @@ -952,11 +990,22 @@ (none) ) -(defskelgroup skel-fort-entry-gate fort-entry-gate fort-entry-gate-lod0-jg fort-entry-gate-idle-ja - ((fort-entry-gate-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 10) - ) - +(let ((a0-20 (new 'static 'skeleton-group + :name "skel-fort-entry-gate" + :extra #f + :info #f + :art-group-name "fort-entry-gate" + :bounds (new 'static 'vector :y 12288.0 :w 40960.0) + :version #x7 + ) + ) + ) + (set! (-> a0-20 jgeo) 0) + (set! (-> a0-20 janim) 2) + (set! (-> a0-20 mgeo 0) 1) + (set! (-> a0-20 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-20) + ) (deftype fort-entry-gate (com-airlock) () :heap-base #x100 @@ -968,6 +1017,7 @@ ;; WARN: Return type mismatch object vs none. (defmethod init-from-entity! fort-entry-gate ((obj fort-entry-gate) (arg0 entity-actor)) + (stack-size-set! (-> obj main-thread) 1024) ;; added (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 penetrated-by) (penetrate)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) diff --git a/goal_src/jak2/levels/common/warp-gate.gc b/goal_src/jak2/levels/common/warp-gate.gc index 5f94213452..1d26887c8f 100644 --- a/goal_src/jak2/levels/common/warp-gate.gc +++ b/goal_src/jak2/levels/common/warp-gate.gc @@ -7,3 +7,2508 @@ ;; DECOMP BEGINS +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(if (not (nmember "common" *kernel-packages*)) + (set! *kernel-packages* (cons "common" *kernel-packages*)) + ) + +;; failed to figure out what this is: +(defpartgroup group-warpgate + :id 130 + :duration (seconds 0.267) + :flags (use-local-clock unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 4) (degrees 0) (degrees 0)) + :parts ((sp-item 586 :flags (is-3d launch-asap bit7)) (sp-item 587 :flags (launch-asap)) (sp-item 588 :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 586 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x13 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 4.75)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 196.0) + (sp-flt spt-fade-a -3.1875) + (sp-int spt-timer 80) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 587 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 14)) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 48.0) + (sp-flt spt-fade-a -0.8) + (sp-int spt-timer 80) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpart 588 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-x (meters 0) (meters 2) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 255.0) + (sp-flt spt-scalevel-x (meters -0.0025)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 80) + (sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-3) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-dust-plume :id 131 :bounds (static-bspherem 0 0 0 15) :parts ((sp-item 589))) + +;; failed to figure out what this is: +(defpart 589 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 10) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 106.0 16.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.033333335) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.033333335) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.04 -0.08 1.0) + (sp-flt spt-accel-y 1.3653333) + (sp-rnd-flt spt-friction 0.95 0.03 1.0) + (sp-int spt-timer 1300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-dust-hover :id 132 :bounds (static-bspherem 0 0 0 15) :parts ((sp-item 590))) + +;; failed to figure out what this is: +(defpart 590 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 5) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 106.0 16.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.033333335) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.016666668) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.04 -0.08 1.0) + (sp-flt spt-accel-y 1.3653333) + (sp-rnd-flt spt-friction 0.95 0.03 1.0) + (sp-int spt-timer 1300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-thruster + :id 133 + :linger-duration (seconds 2) + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 12) + :rotate ((degrees 8) (degrees 0) (degrees 0)) + :parts ((sp-item 591 :flags (bit6 bit7)) + (sp-item 592 :flags (bit6 bit7)) + (sp-item 593 :flags (bit7)) + (sp-item 594 :flags (bit7)) + (sp-item 595 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-thruster-off + :id 134 + :linger-duration (seconds 2) + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 12) + :rotate ((degrees 8) (degrees 0) (degrees 0)) + :parts ((sp-item 595 :fade-after (meters 120) :falloff-to (meters 90) :flags (bit7)) + (sp-item 596 :fade-after (meters 120) :falloff-to (meters 90) :flags (bit7)) + (sp-item 597 :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 591 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.4) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 64.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 409.6) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 592 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 4.8) (meters 0.6) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 64.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 2.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 409.6) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 593 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 196.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.05) (meters -0.1) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-rnd-flt spt-fade-a -0.21333334 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y 0.68266666 2.048 1.0) + (sp-rnd-flt spt-friction 0.94 0.04 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 sp-cpuinfo-flag-14) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 596 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 196.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 10.0 4.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.05) (meters -0.1) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-rnd-flt spt-fade-a -0.21333334 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y 0.68266666 2.048 1.0) + (sp-rnd-flt spt-friction 0.94 0.04 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 sp-cpuinfo-flag-14) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 597 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1.4) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 48.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 48.0 8.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 409.6) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 594 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-rnd-flt spt-num 0.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 0.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-omega 12.288 4.096 1.0) + (sp-rnd-flt spt-vel-x (meters -0.013333334) (meters 0.026666667) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.1) (meters -0.06666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.013333334) (meters 0.026666667) 1.0) + (sp-flt spt-fade-g -1.0) + (sp-flt spt-fade-a -2.56) + (sp-rnd-flt spt-accel-x 0.0 6.826667 1.0) + (sp-rnd-flt spt-friction 0.96 0.02 1.0) + (sp-int-plain-rnd spt-timer 25 24 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 sp-cpuinfo-flag-14) + (sp-func spt-func 'sparticle-motion-blur) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 595 + :init-specs ((sp-flt spt-num 0.4) + (sp-int spt-rot-x 8) + (sp-flt spt-r 1638.4) + (sp-flt spt-g 1331.2) + (sp-flt spt-b 1433.6) + (sp-rnd-flt spt-vel-y (meters -0.05) (meters -0.016666668) 1.0) + (sp-flt spt-fade-r 32.768) + (sp-flt spt-fade-g 28.671999) + (sp-flt spt-fade-b 26.623999) + (sp-rnd-flt spt-accel-x 0.0 6.826667 1.0) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 100) + (sp-cpuinfo-flags distort) + (sp-int spt-next-time 50) + (sp-launcher-by-id spt-next-launcher 598) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 598 + :init-specs ((sp-flt spt-fade-r 0.0) (sp-flt spt-fade-g 0.0) (sp-flt spt-fade-b -4.096)) + ) + +;; failed to figure out what this is: +(defpartgroup group-warp-hellcat-thruster + :id 135 + :duration (seconds 3) + :flags (use-local-clock unk-4) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 599 :flags (is-3d bit7)) + (sp-item 600 :flags (is-3d bit7)) + (sp-item 601 :flags (bit7)) + (sp-item 602 :flags (is-3d bit7)) + (sp-item 603 :flags (is-3d bit7)) + (sp-item 604 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 599 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 600 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 601 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -4.75)) + (sp-flt spt-scale-x (meters 1.75)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 602 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 603 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 604 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -4.75)) + (sp-flt spt-scale-x (meters 1.75)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defskelgroup skel-warp-gate warp-gate 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3 0 4) + :origin-joint-index 3 + ) + +;; definition of type warp-gate +(deftype warp-gate (process-drawable) + ((root-override collide-shape :offset 128) + (level-name uint32 :offset-assert 200) + (on-notice pair :offset-assert 204) + (on-activate pair :offset-assert 208) + (on-close pair :offset-assert 212) + (wait-for pair :offset-assert 216) + (continue continue-point :offset-assert 220) + (distance meters :offset-assert 224) + (anim-speed float :offset-assert 228) + (test-time time-frame :offset-assert 232) + (center vector :inline :offset-assert 240) + ) + :heap-base #x80 + :method-count-assert 26 + :size-assert #x100 + :flag-assert #x1a00800100 + (:methods + (idle () _type_ :state 20) + (use (continue-point) _type_ :state 21) + (hidden () _type_ :state 22) + (init-skel-and-collide (_type_) none 23) + (setup-fields (_type_) none 24) + (handle-notice (_type_) continue-point 25) + ) + ) + +;; definition for method 3 of type warp-gate +(defmethod inspect warp-gate ((obj warp-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tlevel-name: ~A~%" (-> obj level-name)) + (format #t "~2Ton-notice: ~A~%" (-> obj on-notice)) + (format #t "~2Ton-activate: ~A~%" (-> obj on-activate)) + (format #t "~2Ton-close: ~A~%" (-> obj on-close)) + (format #t "~2Twait-for: ~A~%" (-> obj wait-for)) + (format #t "~2Tcontinue: ~A~%" (-> obj continue)) + (format #t "~2Tdistance: (meters ~m)~%" (-> obj distance)) + (format #t "~2Tanim-speed: ~f~%" (-> obj anim-speed)) + (format #t "~2Ttest-time: ~D~%" (-> obj test-time)) + (format #t "~2Tcenter: ~`vector`P~%" (-> obj center)) + (label cfg-4) + obj + ) + +;; definition for method 25 of type warp-gate +(defmethod handle-notice warp-gate ((obj warp-gate)) + (with-pp + (let ((s5-0 (eval! + (new 'stack 'script-context (the-as basic (process->ppointer pp)) pp (the-as vector #f)) + (-> obj on-notice) + ) + ) + ) + (cond + ((= s5-0 'hide) + (logior! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) #f) + ) + (s5-0 + (logclear! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) (get-continue-by-name *game-info* (the-as string (car s5-0)))) + (set! (-> obj on-activate) (the-as pair (car (cdr s5-0)))) + (set! (-> obj wait-for) (the-as pair (car (cdr (cdr s5-0))))) + (set! (-> obj on-close) (the-as pair (car (cdr (cdr (cdr s5-0)))))) + ) + (else + (set! (-> obj continue) #f) + ) + ) + ) + (-> obj continue) + ) + ) + +;; failed to figure out what this is: +(defstate hidden (warp-gate) + :virtual #t + :code (the-as (function none :behavior warp-gate) sleep-code) + ) + +;; failed to figure out what this is: +(defstate idle (warp-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('hide) + (go-virtual hidden) + ) + (('effect) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 130) + 0 + #f + #f + #f + (-> self node-list data 4 bone transform) + :to *entity-pool* + ) + ) + ) + ) + :code (behavior () + (remove-setting! 'allow-progress) + (set! (-> self state-time) (-> self clock frame-counter)) + (update-transforms (-> self root-override)) + (until #f + (handle-notice self) + (when (and (and *target* + (and (>= (-> self distance) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + (zero? (logand (focus-status teleporting) (-> *target* focus-status))) + ) + ) + (and (-> self continue) + (not (logtest? (focus-status in-head edge-grab pole flut tube board pilot mech indax) (-> *target* focus-status)) + ) + (-> *setting-control* user-current airlock) + (not (-> *setting-control* user-current hint)) + ) + ) + (talker-surpress!) + (when (and (can-display-query? self (the-as string #f) -99.0) + (cond + ((and (-> *target* next-state) (let ((v1-30 (-> *target* next-state name))) + (or (= v1-30 'target-warp-in) (= v1-30 'target-warp-out)) + ) + ) + (set! (-> self state-time) (-> self clock frame-counter)) + #f + ) + (else + #t + ) + ) + (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.1)) + ) + (if (and (cpad-pressed? 0 triangle) (process-grab? *target* #f)) + (go-virtual use (-> self continue)) + ) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (-> self on-close) + ) + (let ((gp-0 (new + 'stack + 'font-context + *font-default-matrix* + 32 + 320 + 0.0 + (font-color default-#cddbcd) + (font-flags shadow kerning) + ) + ) + ) + (let ((v1-51 gp-0)) + (set! (-> v1-51 width) (the float (the-as float #x154))) + ) + (let ((v1-52 gp-0)) + (set! (-> v1-52 height) (the float (the-as float #x50))) + ) + (let ((v1-53 gp-0)) + (set! (-> v1-53 scale) 0.9) + ) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (game-text-id text-x182) #f) gp-0 #f 44 320) + ) + ) + ) + (cond + ((-> self continue) + (seek! (-> self anim-speed) 1.0 (* 2.0 (-> self clock seconds-per-frame))) + (setup-masks (-> self draw) 2 0) + ) + (else + (setup-masks (-> self draw) 0 2) + (seek! (-> self anim-speed) 0.0 (* 2.0 (-> self clock seconds-per-frame))) + ) + ) + (update! (-> self sound)) + (ja-post) + (suspend) + (ja :num! (loop! (-> self anim-speed))) + ) + #f + (none) + ) + ) + +;; failed to figure out what this is: +(defstate use (warp-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (the-as object (case event-type + (('effect) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 130) + 0 + #f + #f + #f + (-> self node-list data 4 bone transform) + :to *entity-pool* + ) + ) + ) + ) + ) + :exit (behavior () + (remove-setting! 'mode-name) + (remove-setting! 'interp-time) + (none) + ) + :trans (behavior () + (send-event *camera* 'joystick 0 0) + (none) + ) + :code (behavior ((arg0 continue-point)) + (local-vars (v1-38 symbol)) + (kill-current-talker (the-as symbol '()) '() 'exit) + (set-setting! 'mode-name 'cam-fixed 0 0) + (set-setting! 'interp-time 'abs 0 0) + (set! (-> self state-time) (-> self clock frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (when (not arg0) + (process-release? *target*) + (go-virtual idle) + ) + (set-setting! 'allow-progress #f 0 0) + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) #t) + (apply-settings *setting-control*) + (let ((s5-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> s5-0 from) (process->ppointer self)) + (set! (-> s5-0 num-params) 4) + (set! (-> s5-0 message) 'change-state) + (set! (-> s5-0 param 0) (the-as uint target-warp-out)) + (let ((v1-22 (new 'static 'vector))) + (set! (-> v1-22 quad) (-> self center quad)) + (set! (-> s5-0 param 1) (the-as uint v1-22)) + ) + (set! (-> s5-0 param 2) (the-as uint (target-pos 0))) + (set! (-> s5-0 param 3) (the-as uint (process->handle self))) + (send-event-function *target* s5-0) + ) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (-> self on-activate) + ) + (while (begin + (set! v1-38 (when (-> self wait-for) + (let* ((s5-1 (-> self wait-for)) + (a1-8 (car s5-1)) + ) + (while (not (null? s5-1)) + (when (not (member (level-status *level* (the-as symbol a1-8)) '(loaded active))) + (set! v1-38 #t) + (goto cfg-21) + ) + (set! s5-1 (cdr s5-1)) + (set! a1-8 (car s5-1)) + ) + ) + #f + ) + ) + (label cfg-21) + (or v1-38 (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 2))) + ) + (update! (-> self sound)) + (suspend) + (ja :num! (loop!)) + (ja-post) + ) + (if (not (logtest? (-> arg0 flags) (continue-flags cf4))) + (set-blackout-frames (seconds 0.05)) + ) + (start 'play arg0) + (let ((gp-1 (-> self clock frame-counter))) + (until (>= (- (-> self clock frame-counter) gp-1) (seconds 1)) + (suspend) + ) + ) + (while (and *target* + (and (>= 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + (zero? (logand (focus-status teleporting) (-> *target* focus-status))) + ) + ) + (suspend) + (ja :num! (loop!)) + (ja-post) + ) + (logior! (-> self mask) (process-mask actor-pause)) + (go-virtual idle) + (none) + ) + ) + +;; definition for method 23 of type warp-gate +;; WARN: Return type mismatch draw-control vs none. +(defmethod init-skel-and-collide warp-gate ((obj warp-gate)) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 penetrated-by) (penetrate)) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 3) + (set-vector! (-> v1-2 local-sphere) 0.0 12288.0 0.0 16384.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-2) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-5 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-warp-gate" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (none) + ) + +;; definition for method 24 of type warp-gate +;; INFO: Used lq/sq +;; WARN: Return type mismatch float vs none. +(defmethod setup-fields warp-gate ((obj warp-gate)) + (set! (-> obj level-name) (the-as uint (-> obj level name))) + (set! (-> obj on-notice) (res-lump-struct (-> obj entity) 'on-notice pair)) + (set! (-> obj on-activate) #f) + (set! (-> obj wait-for) #f) + (set! (-> obj continue) #f) + (set! (-> obj on-close) #f) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 130) obj)) + (set! (-> obj center quad) (-> obj root-override trans quad)) + (set! (-> obj center y) (+ 13516.8 (-> obj center y))) + (set! (-> obj sound) + (new 'process 'ambient-sound (static-sound-spec "warpgate" :fo-max 30) (-> obj root-override trans)) + ) + (set! (-> obj distance) (res-lump-float (-> obj entity) 'distance :default 20480.0)) + (none) + ) + +;; definition for function warp-gate-init +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. +(defbehavior warp-gate-init warp-gate ((arg0 entity-actor) (arg1 vector)) + (stack-size-set! (-> self main-thread) 512) + (init-skel-and-collide self) + (if arg0 + (process-drawable-from-entity! self arg0) + ) + (if arg1 + (set! (-> self root-override trans quad) (-> arg1 quad)) + ) + (logior! (-> self mask) (process-mask actor-pause)) + (setup-fields self) + (go-virtual idle) + (none) + ) + +;; definition for method 11 of type warp-gate +(defmethod init-from-entity! warp-gate ((obj warp-gate) (arg0 entity-actor)) + (warp-gate-init arg0 (the-as vector #f)) + (none) + ) + +;; definition for symbol *warp-jump-mods*, type surface +(define *warp-jump-mods* (new 'static 'surface + :name 'jump + :turnv 273066.66 + :turnvv 1820444.5 + :tiltv 65536.0 + :tiltvv 262144.0 + :transv-max 65536.0 + :target-speed 65536.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :turnvf 30.0 + :turnvvf 30.0 + :tiltvf 150.0 + :tiltvvf 15.0 + :mode 'air + :flags (surface-flag turn-to-vel turn-when-centered gun-off) + ) + ) + +;; failed to figure out what this is: +(defstate target-warp-out (target) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('death-end) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-control-status no-draw))))) + (set! (-> self draw status) (the-as draw-control-status v0-0)) + v0-0 + ) + ) + (('warp-gate) + (if (not (-> self control unknown-spool-anim00)) + 'busy + ) + ) + (else + (target-generic-event-handler proc arg1 event-type event) + ) + ) + ) + :enter (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (set! (-> self state-time) (-> self clock frame-counter)) + (logclear! (-> self control status) (collide-status on-surface on-ground touch-surface)) + (set! (-> self control mod-surface) *warp-jump-mods*) + (set! (-> self control unknown-vector37 quad) (-> arg0 quad)) + (set! (-> self control unknown-vector38 quad) (-> arg1 quad)) + (set! (-> self control unknown-vector37 y) (+ -4096.0 (-> self control unknown-vector37 y))) + (set! (-> self control unknown-word04) (the-as uint #f)) + (set! (-> self control unknown-handle02) (the-as handle arg2)) + (vector-reset! (-> self control transv)) + (logior! (-> self state-flags) (state-flags sf6)) + (set! (-> self alt-cam-pos quad) (-> arg1 quad)) + (forward-up-nopitch->quaternion + (-> self control dir-targ) + (vector-! (new 'stack-no-clear 'vector) arg1 (-> self control trans)) + (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + ) + (none) + ) + :exit (behavior () + (logclear! (-> self state-flags) (state-flags sf6)) + (none) + ) + :code (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! (-> self draw art-group data 30) :num! (seek! (ja-aframe 16.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 16.0 0))) + ) + (vector-! (-> self control transv) (-> self control unknown-vector37) (-> self control trans)) + (vector-xz-normalize! (-> self control transv) 32768.0) + (let ((v1-18 (new-stack-vector0))) + (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! v1-18 (-> self control transv) (vector-float*! v1-18 (-> self control dynam gravity-normal) f0-6)) + ) + (let* ((f0-7 (vector-length v1-18)) + (f1-1 f0-7) + (f2-4 + (- (sqrtf + (* 2.0 + (-> self control dynam gravity-length) + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector37) (-> self control trans)) + ) + ) + ) + (* 0.008333334 (- (-> self control dynam gravity-length))) + ) + ) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-4) + (vector-float*! v1-18 v1-18 (/ f0-7 f1-1)) + ) + ) + ) + (let ((v1-20 (-> self control root-prim))) + (set! (-> v1-20 prim-core collide-as) (collide-spec)) + (set! (-> v1-20 prim-core collide-with) (collide-spec)) + ) + 0 + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self trans-hook) + (lambda :behavior target + () + (let ((v1-0 (new-stack-vector0)) + (f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! v1-0 (-> self control transv) (vector-float*! v1-0 (-> self control dynam gravity-normal) f0-1)) + (let* ((f1-2 (vector-length v1-0)) + (f2-0 f1-2) + ) + (if (< f0-1 0.0) + (set! f0-1 8192.0) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-1) + (vector-float*! v1-0 v1-0 (/ f1-2 f2-0)) + ) + ) + ) + (let ((gp-1 (vector-! (new-stack-vector0) (-> self control unknown-vector37) (-> self control trans)))) + (set! (-> gp-1 y) 0.0) + (send-event *target* 'sidekick #f) + (when (and (or (< (vector-dot gp-1 (-> self control transv)) 0.0) (-> self control unknown-spool-anim00)) + (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) + ) + (vector-seek! (-> self draw color-mult) (new 'static 'vector) (* 2.0 (-> self clock seconds-per-frame))) + (set! (-> self control transv x) (* 0.95 (-> self control transv x))) + (set! (-> self control transv z) (* 0.95 (-> self control transv z))) + (when (not (-> self control unknown-spool-anim00)) + (sound-play "warpgate-tele") + (send-event (handle->process (-> self control unknown-handle02)) 'effect) + (send-event self 'draw #f) + (set! (-> self control unknown-word04) (the-as uint #t)) + ) + ) + ) + (none) + ) + ) + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (ja-aframe 40.0 0)) + :frame-num (ja-aframe 16.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 40.0 0))) + ) + (sleep-code) + (none) + ) + :post target-no-stick-post + ) + +;; failed to figure out what this is: +(defstate target-warp-in (target) + :event target-generic-event-handler + :enter (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (set! (-> self control did-move-to-pole-or-max-jump-height) (the-as float arg2)) + ((-> target-warp-out enter) arg0 arg1 arg2) + (none) + ) + :exit (-> target-warp-out exit) + :trans (behavior () + (set! (-> self control transv x) + (* 2.4 (- (-> self control unknown-vector38 x) (-> self control unknown-vector37 x))) + ) + (set! (-> self control transv z) + (* 2.4 (- (-> self control unknown-vector38 z) (-> self control unknown-vector37 z))) + ) + (if (logtest? (-> self control status) (collide-status on-surface)) + (go target-hit-ground #f) + ) + (none) + ) + :code (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (let ((a0-1 (-> self control did-move-to-pole-or-max-jump-height))) + (when a0-1 + (let ((s5-0 (res-lump-struct (the-as res-lump a0-1) 'camera-name structure))) + (when s5-0 + (logclear! (-> self state-flags) (state-flags sf6)) + (process-spawn-function + process + (lambda ((arg0 string)) + (local-vars (a1-2 event-message-block)) + (with-pp + (add-setting! 'entity-name arg0 0 0) + (until (send-event-function *camera* a1-2) + (suspend) + (set! a1-2 (new 'stack-no-clear 'event-message-block)) + (let ((v1-2 (process->ppointer pp))) + (set! (-> a1-2 from) v1-2) + ) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'intro-done?) + ) + (none) + ) + ) + s5-0 + :to self + ) + ) + ) + ) + ) + (let ((v1-13 (-> self control root-prim))) + (set! (-> self control backup-collide-as) (-> v1-13 prim-core collide-as)) + (set! (-> self control backup-collide-with) (-> v1-13 prim-core collide-with)) + ) + (let ((v1-16 (-> self control root-prim))) + (set! (-> v1-16 prim-core collide-as) (collide-spec)) + (set! (-> v1-16 prim-core collide-with) (collide-spec)) + ) + 0 + (ja-channel-set! 0) + (vector-reset! (-> self control transv)) + (move-to-point! (-> self control) (-> self control unknown-vector37)) + (let ((s5-1 (-> self clock frame-counter))) + (while (or (< (- (-> self clock frame-counter) s5-1) (seconds 1)) + (< 81920.0 (vector-vector-distance (camera-pos) (-> self control trans))) + ) + (suspend) + ) + ) + (set-heading-vec! (-> self control) (-> self control transv)) + (rot->dir-targ! (-> self control)) + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self post-hook) target-no-stick-post) + (ja-channel-set! 1) + (send-event + (if arg2 + (-> arg2 child 3) + ) + 'effect + ) + (send-event self 'draw #t) + (sound-play "warpgate-tele") + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (ja-aframe 42.0 0)) + :frame-num (ja-aframe 40.0 0) + ) + (until (ja-done? 0) + (let ((v1-59 (new-stack-vector0))) + (let ((f0-5 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! v1-59 (-> self control transv) (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-5)) + ) + (let* ((f0-6 (vector-length v1-59)) + (f1-1 f0-6) + (f2-3 + (- (sqrtf (* 4096.0 (-> self control dynam gravity-length))) + (* 0.008333334 (- (-> self control dynam gravity-length))) + ) + ) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3) + (vector-float*! v1-59 v1-59 (/ f0-6 f1-1)) + ) + ) + ) + (suspend) + (ja :num! (seek! (ja-aframe 42.0 0))) + ) + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (ja-aframe 50.0 0)) + :frame-num (ja-aframe 42.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 50.0 0))) + ) + (let ((v1-80 (-> self control root-prim))) + (set! (-> v1-80 prim-core collide-as) (-> self control backup-collide-as)) + (set! (-> v1-80 prim-core collide-with) (-> self control backup-collide-with)) + ) + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 30)) frames num-frames) -1))) + :frame-num (ja-aframe 50.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (target-falling-anim -1 (seconds 0.33)) + (none) + ) + :post target-no-move-post + ) + +;; failed to figure out what this is: +(defskelgroup skel-air-train air-train 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 -2 12.5) + :origin-joint-index 3 + ) + +;; definition of type air-train +(deftype air-train (warp-gate) + "NOTE - I guess this is why sometimes the air-train makes the warp-gate sound" + ((part-exhaust-left sparticle-launch-control :offset-assert 256) + (part-exhaust-right sparticle-launch-control :offset-assert 260) + (part-dust sparticle-launch-control :offset-assert 264) + (dust-y float :offset-assert 268) + (hover-sound sound-id :offset-assert 272) + (base-pos vector :inline :offset-assert 288) + ) + :heap-base #xb0 + :method-count-assert 26 + :size-assert #x130 + :flag-assert #x1a00b00130 + ) + +;; definition for method 3 of type air-train +(defmethod inspect air-train ((obj air-train)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type warp-gate inspect))) + (t9-0 obj) + ) + (format #t "~2Tpart-exhaust-left: ~A~%" (-> obj part-exhaust-left)) + (format #t "~2Tpart-exhaust-right: ~A~%" (-> obj part-exhaust-right)) + (format #t "~2Tpart-dust: ~A~%" (-> obj part-dust)) + (format #t "~2Tdust-y: ~f~%" (-> obj dust-y)) + (format #t "~2Thover-sound: ~D~%" (-> obj hover-sound)) + (format #t "~2Tbase-pos: #~%" (-> obj base-pos)) + (label cfg-4) + obj + ) + +;; definition for method 7 of type air-train +;; WARN: Return type mismatch warp-gate vs air-train. +(defmethod relocate air-train ((obj air-train) (arg0 int)) + (if (nonzero? (-> obj part-exhaust-left)) + (&+! (-> obj part-exhaust-left) arg0) + ) + (if (nonzero? (-> obj part-exhaust-right)) + (&+! (-> obj part-exhaust-right) arg0) + ) + (if (nonzero? (-> obj part-dust)) + (&+! (-> obj part-dust) arg0) + ) + (the-as air-train ((method-of-type warp-gate relocate) obj arg0)) + ) + +;; definition for method 10 of type air-train +(defmethod deactivate air-train ((obj air-train)) + (sound-stop (-> obj hover-sound)) + (if (nonzero? (-> obj part-exhaust-left)) + (kill-and-free-particles (-> obj part-exhaust-left)) + ) + (if (nonzero? (-> obj part-exhaust-right)) + (kill-and-free-particles (-> obj part-exhaust-right)) + ) + (if (nonzero? (-> obj part-dust)) + (kill-and-free-particles (-> obj part-dust)) + ) + ((method-of-type warp-gate deactivate) obj) + (none) + ) + +;; definition for method 23 of type air-train +;; WARN: Return type mismatch draw-control vs none. +(defmethod init-skel-and-collide air-train ((obj air-train)) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) cshape-reaction-default) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-query vector vector object) nothing) + ) + (set! (-> s5-0 penetrated-by) (penetrate)) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s5-0 total-prims) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-spec obstacle)) + (set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 69632.0) + (set! (-> s5-0 root-prim) s4-0) + ) + (let ((v1-13 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-13 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-13 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-13 prim-core action) (collide-action solid)) + (set! (-> v1-13 transform-index) 4) + (set-vector! (-> v1-13 local-sphere) 0.0 10240.0 0.0 24576.0) + ) + (let ((v1-15 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-15 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-15 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-15 prim-core action) (collide-action solid)) + (set! (-> v1-15 transform-index) 3) + (set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 53248.0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-18 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-18 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-18 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-air-train" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (none) + ) + +;; definition for method 24 of type air-train +;; INFO: Used lq/sq +;; WARN: Return type mismatch sound-id vs none. +(defmethod setup-fields air-train ((obj air-train)) + (let ((t9-0 (method-of-type warp-gate setup-fields))) + (t9-0 obj) + ) + (set! (-> obj base-pos quad) (-> obj root-override trans quad)) + (let ((v1-2 (-> obj level-name))) + (set! (-> obj dust-y) (cond + ((= v1-2 'nest) + -1105.92 + ) + ((= v1-2 'caspad) + 114647.04 + ) + (else + (the-as float #x7f800000) + ) + ) + ) + ) + (set! (-> obj part-exhaust-left) (create-launch-control (-> *part-group-id-table* 134) obj)) + (set! (-> obj part-exhaust-right) (create-launch-control (-> *part-group-id-table* 134) obj)) + (set! (-> obj part-dust) (create-launch-control (-> *part-group-id-table* 132) obj)) + (set! (-> obj root-override pause-adjust-distance) 368640.0) + (set! (-> obj hover-sound) (sound-play "air-train")) + (none) + ) + +;; failed to figure out what this is: +(defstate idle (air-train) + :virtual #t + :post (behavior () + (let ((t9-0 (-> (method-of-type warp-gate idle) post))) + (if t9-0 + ((the-as (function none) t9-0)) + ) + ) + (set! (-> self root-override trans y) + (+ (-> self base-pos y) + (* 696.32 (cos (* 66.19798 (the float (mod (-> self clock frame-counter) 990))))) + (* 450.56 (cos (* 42.25403 (the float (mod (-> self clock frame-counter) 1551))))) + ) + ) + (spawn-with-cspace (-> self part-exhaust-left) (-> self node-list data 5)) + (spawn-with-cspace (-> self part-exhaust-right) (-> self node-list data 6)) + (let ((f0-9 (-> self dust-y))) + (when (!= f0-9 (the-as float #x7f800000)) + (let ((a1-2 (new 'stack-no-clear 'vector))) + (set! (-> a1-2 quad) (-> self root-override trans quad)) + (set! (-> a1-2 y) f0-9) + (spawn (-> self part-dust) a1-2) + ) + ) + ) + (sound-play "air-train" :id (-> self hover-sound) :position (-> self root-override trans)) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate use (air-train) + :virtual #t + :code (behavior ((arg0 continue-point)) + (kill-current-talker (the-as symbol '()) '() 'exit) + (set! (-> self state-time) (-> self clock frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (when (not arg0) + (process-release? *target*) + (go-virtual idle) + ) + (set-setting! 'allow-progress #f 0 0) + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) #t) + (apply-settings *setting-control*) + (sound-stop (-> self hover-sound)) + (set! (-> self hover-sound) (new 'static 'sound-id)) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (-> self on-activate) + ) + (sleep-code) + (none) + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-air-train-in-caspad" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-air-train-in-caspad" + :parts 3 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 102) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 102) + ) + ) + (102 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 102 280) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 102 280) + ) + ) + (265 (fadeout (frame-time-30 (new 'static 'bfloat :data 15.0)))) + ) + :cut-list '(51 102 226) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'ctyport + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((102 max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train" + :end-point-obj "caspad-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-air-train-in-nest" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-air-train-in-nest" + :parts 3 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 102) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 102) + ) + ) + (102 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 102 280) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 102 280) + ) + ) + (265 (fadeout (frame-time-30 (new 'static 'bfloat :data 15.0)))) + ) + :cut-list '(51 102 226) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'ctyport + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((102 max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train" + :end-point-obj "nest-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-air-train-out" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-air-train-out" + :parts 2 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 98) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 98) + ) + ) + (98 + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 98 240) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 98 240) + ) + ) + (230 (fadeout (frame-time-30 (new 'static 'bfloat :data 10.0)))) + ) + :cut-list '(98 188) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'ctyport + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train" + :end-point-obj "ctyport-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-ashelin-drop-off" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-ashelin-drop-off" + :parts 3 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1585152.0 :y 31539.2 :z 7225344.0 :w 26624.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 9.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1570816.0 :y 31539.2 :z 7249920.0 :w 30720.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 21.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1556480.0 :y 31539.2 :z 7278592.0 :w 34816.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 48.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 1542144.0 :y 31539.2 :z 7303168.0 :w 34816.0)) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1527808.0 :y 31539.2 :z 7331840.0 :w 34816.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 208.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1499136.0 :y 31539.2 :z 7360512.0 :w 34816.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 225.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1486848.0 :y 31539.2 :z 7380992.0 :w 38912.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 233.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1451212.8 :y 31539.2 :z 7389184.0 :w 38912.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 245.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1409433.6 :y 31539.2 :z 7412531.0 :w 38912.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 245.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1518592.0 :y 31539.2 :z 7317504.0 :w 22528.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 295.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 1525350.4 :y 31539.2 :z 7272857.5 :w 17203.2)) + ) + (177 (part-tracker + "group-warp-hellcat-thruster" + entity + "hellcat" + joint + "main" + track + #t + duration + (frame-range 177 295) + ) + ) + (290 (fadeout (frame-time-30 (new 'static 'bfloat :data 10.0)))) + ) + :cut-list '(115 177) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljkdxash + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljkdxash + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ashelin-highres" + :level 'ljkdxash + :art-group "skel-ashelin-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "hellcat" + :level 'lwidea + :art-group "skel-hellcat" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train-ashelin" + :end-point-obj "ctyport-start" + :borrow '((ctywide 1 lwidea special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "caspad-air-train-in" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "air-train-3" + :art-group "scenecamera" + :anim "caspad-air-train-in" + :parts 4 + :command-list '((0 + (kill "air-train-3") + (fadein (frame-time-30 (new 'static 'bfloat :data 5.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 285) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 285) + ) + ) + (285 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 285 480) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 285 480) + ) + ) + (293 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 293 370) + ) + ) + (470 (fadeout (frame-time-30 10))) + ) + :cut-list '(93 285) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'caspad + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'caspad + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'caspad + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'caspad + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "caspad-warp" + :end-point-obj "ctyport-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "caspad-air-train-out" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "air-train-3" + :art-group "scenecamera" + :anim "caspad-air-train-out" + :parts 3 + :command-list '((0 + (kill "air-train-3") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 195) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 195) + ) + ) + (80 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 80 190) + ) + ) + (180 + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 180 295) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 180 295) + ) + ) + (285 (fadeout (frame-time-30 (new 'static 'bfloat :data 10.0)))) + (10000 (apply )) + ) + :cut-list '(180) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'caspad + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'caspad + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'caspad + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'caspad + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "caspad-warp" + :end-point-obj "caspad-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "nest-air-train-in" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-90" + :art-group "scenecamera" + :anim "nest-air-train-in" + :parts 3 + :command-list '((0 + (kill "air-train-4") + (fadein (frame-time-30 (new 'static 'bfloat :data 5.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 88) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 88) + ) + ) + (88 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 88 280) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 88 280) + ) + ) + (75 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 90 170) + ) + ) + (265 (fadeout (frame-time-30 (new 'static 'bfloat :data 15.0)))) + ) + :cut-list '(30 88) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'nestb + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min 117)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "darkjak-highres" + :level 'nestb + :art-group "skel-darkjak-highres" + :prefix "" + :draw-frames '((min 117)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'nest + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((30 88)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'nestb + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "nest-warp" + :end-point-obj "ctyport-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "nest-air-train-out" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-90" + :art-group "scenecamera" + :anim "nest-air-train-out" + :parts 3 + :command-list '((0 + (kill "air-train-4") + (fadein (frame-time-30 (new 'static 'bfloat :data 15.0))) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 242) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 242) + ) + ) + (130 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 130 296) + ) + ) + (232 + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 232 300) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 232 300) + ) + ) + (295 (fadeout (frame-time-30 (new 'static 'bfloat :data 5.0)))) + ) + :cut-list '(232) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'nestb + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "darkjak-highres" + :level 'nestb + :art-group "skel-darkjak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'nest + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'nestb + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "nest-warp" + :end-point-obj "nest-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + + + + diff --git a/goal_src/jak2/levels/fortress/exit/forexita-obs.gc b/goal_src/jak2/levels/fortress/exit/forexita-obs.gc index 7679ecdcda..8a99450d95 100644 --- a/goal_src/jak2/levels/fortress/exit/forexita-obs.gc +++ b/goal_src/jak2/levels/fortress/exit/forexita-obs.gc @@ -7,3 +7,413 @@ ;; DECOMP BEGINS +;; definition of type fort-lift-plat +(deftype fort-lift-plat (plat) + ((sound-time time-frame :offset-assert 328) + (last-val float :offset-assert 336) + ) + :heap-base #xe0 + :method-count-assert 38 + :size-assert #x154 + :flag-assert #x2600e00154 + (:methods + (plat-anim-active () _type_ :state 37) + ) + ) + +;; definition for method 3 of type fort-lift-plat +(defmethod inspect fort-lift-plat ((obj fort-lift-plat)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type plat inspect))) + (t9-0 obj) + ) + (format #t "~2Tsound-time: ~D~%" (-> obj sound-time)) + (format #t "~2Tlast-val: ~f~%" (-> obj last-val)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(let ((a0-2 (new 'static 'skeleton-group + :name "skel-fort-lift-plat" + :extra #f + :info #f + :art-group-name "fort-lift-plat" + :bounds (new 'static 'vector :y -8192.0 :z -32768.0 :w 61440.0) + :version #x7 + ) + ) + ) + (set! (-> a0-2 jgeo) 0) + (set! (-> a0-2 janim) 3) + (set! (-> a0-2 mgeo 0) 1) + (set! (-> a0-2 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-2) + ) + +;; definition for method 30 of type fort-lift-plat +(defmethod get-art-group fort-lift-plat ((obj fort-lift-plat)) + "@returns The associated [[art-group]]" + (art-group-get-by-name *level* "skel-fort-lift-plat" (the-as (pointer uint32) #f)) + ) + +;; definition for method 32 of type fort-lift-plat +;; INFO: this function exists in multiple non-identical object files +;; WARN: Return type mismatch int vs none. +;; multiply defined +; (defmethod base-plat-method-32 fort-lift-plat ((obj fort-lift-plat)) +; 0 +; (none) +; ) + +;; failed to figure out what this is: +(defstate plat-idle (fort-lift-plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior fort-lift-plat) #f) + ) + +;; failed to figure out what this is: +(defstate plat-anim-active (fort-lift-plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior fort-lift-plat) #f) + :enter (behavior () + (get-point-at-percent-along-path! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (set! (-> self last-val) 0.0) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + (none) + ) + :trans (the-as (function none :behavior fort-lift-plat) plat-trans) + :code (behavior () + (until #f + (let ((f30-0 (* (get-current-phase-no-mod (-> self sync)) (the float (+ (-> (ja-group) frames num-frames) -1))))) + (ja-no-eval :group! (ja-group) :num! (loop!) :frame-num f30-0) + (let ((f0-3 (* 0.5 (the float (+ (-> (ja-group) frames num-frames) -1))))) + (if (and (>= f30-0 f0-3) (< (-> self last-val) f0-3)) + (sound-stop (-> self sound-id)) + ) + ) + (set! (-> self last-val) f30-0) + ) + (suspend) + ) + #f + (none) + ) + :post (behavior () + (when (< (-> self sound-time) (-> self clock frame-counter)) + (sound-stop (-> self sound-id)) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + ) + (sound-play "fort-lift-plat" :id (-> self sound-id) :position (-> self root-override trans)) + (plat-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate plat-path-active (fort-lift-plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior fort-lift-plat) #f) + :enter (behavior () + (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) + (if t9-0 + (t9-0) + ) + ) + (set! (-> self last-val) 0.0) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + (none) + ) + :trans (behavior () + (set! (-> self path-pos) (get-norm! (-> self sync) 0)) + (get-point-at-percent-along-path! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (let ((f0-2 0.9999)) + (if (and (>= (-> self path-pos) f0-2) (< (-> self last-val) f0-2)) + (sound-stop (-> self sound-id)) + ) + ) + (set! (-> self last-val) (-> self path-pos)) + (plat-trans) + (none) + ) + :code (the-as (function none :behavior fort-lift-plat) sleep-code) + :post (behavior () + (when (< (-> self sound-time) (-> self clock frame-counter)) + (sound-stop (-> self sound-id)) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + ) + (sound-play "fort-lift-plat" :id (-> self sound-id) :position (-> self root-override trans)) + (plat-post) + (none) + ) + ) + +;; definition for method 27 of type fort-lift-plat +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod execute-effects fort-lift-plat ((obj fort-lift-plat)) + "Executes various ancillary tasks with the platform, such as spawning particles or playing the associated sound" + (if (nonzero? (-> obj part)) + (spawn-with-cspace (-> obj part) (-> obj node-list data 6)) + ) + (when (nonzero? (-> obj sound)) + (set! (-> obj sound trans quad) (-> obj root-override trans quad)) + (update! (-> obj sound)) + ) + (none) + ) + +;; definition for method 31 of type fort-lift-plat +;; WARN: Return type mismatch collide-shape-moving vs none. +(defmethod base-plat-method-31 fort-lift-plat ((obj fort-lift-plat)) + "TODO - collision stuff" + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) cshape-reaction-default) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-query vector vector object) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 5) 0))) + (set! (-> s5-0 total-prims) (the-as uint 6)) + (set! (-> s4-0 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> s4-0 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> s4-0 prim-core action) (collide-action solid rideable)) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 -16384.0 -49152.0 98304.0) + (set! (-> s5-0 root-prim) s4-0) + ) + (pusher-init s5-0) + (let ((v1-15 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> v1-15 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-15 prim-core action) (collide-action solid rideable)) + (set! (-> v1-15 transform-index) 7) + (set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 49152.0) + ) + (let ((v1-17 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-17 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-17 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-17 prim-core action) (collide-action solid)) + (set! (-> v1-17 transform-index) 4) + (set-vector! (-> v1-17 local-sphere) -36864.0 0.0 -16384.0 32768.0) + ) + (let ((v1-19 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-19 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-19 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-19 prim-core action) (collide-action solid)) + (set! (-> v1-19 transform-index) 4) + (set-vector! (-> v1-19 local-sphere) 36864.0 0.0 -16384.0 32768.0) + ) + (let ((v1-21 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 3) (the-as uint 0)))) + (set! (-> v1-21 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-21 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-21 prim-core action) (collide-action solid)) + (set! (-> v1-21 transform-index) 3) + (set-vector! (-> v1-21 local-sphere) -28672.0 -28672.0 -20480.0 24576.0) + ) + (let ((v1-23 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 4) (the-as uint 0)))) + (set! (-> v1-23 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-23 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-23 prim-core action) (collide-action solid)) + (set! (-> v1-23 transform-index) 3) + (set-vector! (-> v1-23 local-sphere) 28672.0 -28672.0 -20480.0 24576.0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-26 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-26 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-26 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (none) + ) + +;; definition for method 32 of type fort-lift-plat +;; INFO: this function exists in multiple non-identical object files +;; WARN: Return type mismatch sparticle-launch-control vs none. +(defmethod base-plat-method-32 fort-lift-plat ((obj fort-lift-plat)) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 618) obj)) + (none) + ) + +;; definition for method 33 of type fort-lift-plat +;; WARN: Return type mismatch sound-id vs none. +(defmethod base-plat-method-33 fort-lift-plat ((obj fort-lift-plat)) + (set! (-> obj root-override pause-adjust-distance) 327680.0) + (set! (-> obj sound-id) (new-sound-id)) + (none) + ) + +;; definition for method 10 of type fort-lift-plat +(defmethod deactivate fort-lift-plat ((obj fort-lift-plat)) + (sound-stop (-> obj sound-id)) + ((method-of-type plat deactivate) obj) + (none) + ) + +;; definition for method 36 of type fort-lift-plat +(defmethod plat-path-sync fort-lift-plat ((obj fort-lift-plat)) + "If the `sync` period is greater than `0` then transition the state to [[plat::35]] + otherwise, [[plat::34]] + + @see [[sync-eased]]" + (cond + ((logtest? (-> obj path flags) (path-control-flag not-found)) + (go (method-of-object obj plat-idle)) + ) + ((logtest? (actor-option user18) (-> obj fact options)) + (set! (-> obj path-pos) (res-lump-float (-> obj entity) 'initial-spline-pos)) + (get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (go (method-of-object obj plat-anim-active)) + ) + ((> (-> obj sync period) 0) + (let ((a0-5 (-> obj skel root-channel 0))) + (set! (-> a0-5 frame-group) (the-as art-joint-anim (-> obj draw art-group data 4))) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! a0-5 (the-as art-joint-anim (-> obj draw art-group data 4)) num-func-identity) + ) + (go (method-of-object obj plat-path-active)) + ) + (else + (go (method-of-object obj plat-idle)) + ) + ) + ) + +;; definition of type fort-claw +(deftype fort-claw (process-drawable) + ((path-u float :offset-assert 200) + (path-dest float :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xd0 + :flag-assert #x16005000d0 + (:methods + (idle () _type_ :state 20) + (pause () _type_ :state 21) + ) + ) + +;; definition for method 3 of type fort-claw +(defmethod inspect fort-claw ((obj fort-claw)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tpath-u: ~f~%" (-> obj path-u)) + (format #t "~2Tpath-dest: ~f~%" (-> obj path-dest)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(let ((a0-18 (new 'static 'skeleton-group + :name "skel-fort-claw" + :extra #f + :info #f + :art-group-name "fort-claw" + :bounds (new 'static 'vector :y -106496.0 :z -16384.0 :w 143360.0) + :max-lod 1 + :version #x7 + ) + ) + ) + (set! (-> a0-18 jgeo) 0) + (set! (-> a0-18 janim) 3) + (set! (-> a0-18 mgeo 0) 1) + (set! (-> a0-18 lod-dist 0) 81920.0) + (set! (-> a0-18 mgeo 1) 2) + (set! (-> a0-18 lod-dist 1) 4095996000.0) + (add-to-loading-level a0-18) + ) + +;; failed to figure out what this is: +(defstate idle (fort-claw) + :virtual #t + :code (the-as (function none :behavior fort-claw) sleep-code) + :post (behavior () + (let ((f30-0 (seek (-> self path-u) (-> self path-dest) (* 0.04 (-> self clock seconds-per-frame))))) + (set! (-> self path-u) f30-0) + (let ((f0-4 (-> self path-dest))) + (when (= f30-0 f0-4) + (set! (-> self path-dest) (- 1.0 f0-4)) + (go-virtual pause) + ) + ) + (get-point-at-percent-along-path! (-> self path) (-> self root trans) (ease-value-in-out f30-0 0.2) 'interp) + ) + (ja-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate pause (fort-claw) + :virtual #t + :enter (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :trans (behavior () + (if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 2)) + (go-virtual idle) + ) + (none) + ) + :code (the-as (function none :behavior fort-claw) sleep-code) + ) + +;; definition for method 11 of type fort-claw +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! fort-claw ((obj fort-claw) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-fort-claw" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj path-u) 0.0) + (set! (-> obj path-dest) 1.0) + (let ((a0-8 (-> obj skel root-channel 0))) + (set! (-> a0-8 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3))) + (set! (-> a0-8 frame-num) 0.0) + (joint-control-channel-group! a0-8 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity) + ) + (ja-post) + (go (method-of-object obj idle)) + (none) + ) + +;; failed to figure out what this is: +(set-subtask-hook! + *game-info* + 2 + 3 + (lambda () (with-pp + (until #f + (sound-play "fortress-alarm") + (let ((gp-1 (-> pp clock frame-counter))) + (until (>= (- (-> pp clock frame-counter) gp-1) (seconds 1)) + (suspend) + ) + ) + ) + (the-as object #f) + ) + ) + ) + + + + diff --git a/goal_src/jak2/levels/fortress/exit/forexita-part.gc b/goal_src/jak2/levels/fortress/exit/forexita-part.gc index 6f0d0a80d8..e979edc768 100644 --- a/goal_src/jak2/levels/fortress/exit/forexita-part.gc +++ b/goal_src/jak2/levels/fortress/exit/forexita-part.gc @@ -7,3 +7,1799 @@ ;; DECOMP BEGINS +;; definition of type forexita-part +(deftype forexita-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + +;; definition for method 3 of type forexita-part +(defmethod inspect forexita-part ((obj forexita-part)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type part-spawner inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-1 + :id 611 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2688 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2689 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2690 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2691 :fade-after (meters 40) :flags (bit6 bit7) :period 800 :length 225) + ) + ) + +;; failed to figure out what this is: +(defpart 2688 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.075)) + (sp-flt spt-y (meters 1.8)) + (sp-flt spt-z (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2689 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3)) + (sp-flt spt-y (meters -0.5)) + (sp-flt spt-z (meters -0.2)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2690 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.85)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2691 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.25)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-2 + :id 612 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2692 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 150) + (sp-item 2693 :fade-after (meters 60) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2694 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 300) + ) + ) + +;; failed to figure out what this is: +(defpart 2692 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.1)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2693 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.1)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2694 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-3 + :id 613 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2695 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 75) + (sp-item 2696 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 50) + (sp-item 2697 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 225) + (sp-item 2698 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 150) + (sp-item 2699 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 225 :offset 225) + (sp-item 2700 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2701 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2702 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300 :offset 150) + (sp-item 2703 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150 :offset 150) + (sp-item 2704 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 50) + (sp-item 2705 :fade-after (meters 60) :flags (bit6 bit7) :period 50 :length 25) + (sp-item 2706 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150) + ) + ) + +;; failed to figure out what this is: +(defpart 2695 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2696 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.575)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2697 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2698 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2699 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2700 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.2)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2701 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2702 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2703 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters -0.25)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2704 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2705 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2706 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-4 + :id 614 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2707 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 150 :offset 150) + (sp-item 2708 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 150 :offset 150) + (sp-item 2709 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 150 :offset 300) + (sp-item 2710 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2711 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 150 :offset 450) + (sp-item 2712 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 300 :offset 150) + (sp-item 2713 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 150) + (sp-item 2714 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 250) + (sp-item 2715 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 300) + (sp-item 2716 :fade-after (meters 40) :flags (bit6 bit7) :period 100 :length 50 :offset 50) + (sp-item 2717 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 500) + (sp-item 2718 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 150) + (sp-item 2719 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 550) + (sp-item 2720 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 350) + (sp-item 2721 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 200) + (sp-item 2722 :fade-after (meters 40) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2723 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 50) + (sp-item 2724 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 250) + (sp-item 2725 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 400) + (sp-item 2726 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 100) + (sp-item 2727 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 600) + ) + ) + +;; failed to figure out what this is: +(defpart 2714 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.8)) + (sp-flt spt-y (meters 0.54)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2715 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.15)) + (sp-flt spt-y (meters 0.54)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2716 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.15)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2717 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.15)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2718 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.75)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2719 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.45)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2720 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.75)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2721 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.45)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2722 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.8)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2723 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.85)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2724 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.55)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2725 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.8)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2726 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.85)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2727 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.55)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2707 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.6)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2708 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.45)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2709 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.45)) + (sp-flt spt-y (meters -0.6)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2710 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2711 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters -0.6)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2712 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.15)) + (sp-flt spt-y (meters -0.6)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2713 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.1)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-overhead-lights + :id 615 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 2728 :fade-after (meters 80) :flags (bit6)) (sp-item 2729 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2728 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 3) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -36.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2729 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 14) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -36.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-yellow-glows + :id 616 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2730 :fade-after (meters 80) :flags (bit6)) (sp-item 2731 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2730 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2731 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-claw-panel + :id 617 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2732 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2733 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 300) + (sp-item 2734 :fade-after (meters 80) :flags (bit6 bit7) :period 275 :length 300) + (sp-item 2735 :fade-after (meters 80) :flags (bit6 bit7) :period 660 :length 300) + (sp-item 2736 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-lift-plat-glow + :id 618 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2732 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2733 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 300) + (sp-item 2734 :fade-after (meters 80) :flags (bit6 bit7) :period 275 :length 300) + (sp-item 2735 :fade-after (meters 80) :flags (bit6 bit7) :period 660 :length 300) + (sp-item 2736 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + ) + ) + +;; failed to figure out what this is: +(defpart 2732 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.5)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2733 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.5)) + (sp-flt spt-y (meters -0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2734 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.6)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2735 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.6)) + (sp-flt spt-y (meters -0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2736 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-blue-lights + :id 619 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 2737 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2738 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2739 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2740 :fade-after (meters 100) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2737 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2738 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2739 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2740 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 12.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-yellow-lights + :id 620 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 2741 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2742 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2743 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2744 :fade-after (meters 100) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2741 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 12.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2742 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 10.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2743 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 10.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2744 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-l-upsideown-panel + :id 621 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2745 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2746 :fade-after (meters 80) :flags (bit6 bit7) :period 225 :length 100) + (sp-item 2747 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2748 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2749 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2750 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 50) + (sp-item 2751 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + ) + ) + +;; failed to figure out what this is: +(defpart 2745 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2746 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.95)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2747 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.75)) + (sp-flt spt-y (meters -1.8)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2748 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.8)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2749 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2750 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2751 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.2)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-l-panel + :id 622 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2752 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75) + (sp-item 2753 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 150) + (sp-item 2754 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 50) + (sp-item 2755 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 100) + (sp-item 2756 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 60) + (sp-item 2757 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2758 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 35) + (sp-item 2759 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + (sp-item 2760 :fade-after (meters 60) :flags (bit6 bit7) :period 75 :length 25) + (sp-item 2761 :fade-after (meters 40) :flags (bit6 bit7) :period 50 :length 25) + ) + ) + +;; failed to figure out what this is: +(defpart 2752 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2753 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2754 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2755 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2756 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2757 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2758 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2759 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2760 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2761 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/goal_src/jak2/levels/fortress/exit/forexitb-part.gc b/goal_src/jak2/levels/fortress/exit/forexitb-part.gc index 63b3545187..a177409cf9 100644 --- a/goal_src/jak2/levels/fortress/exit/forexitb-part.gc +++ b/goal_src/jak2/levels/fortress/exit/forexitb-part.gc @@ -7,3 +7,1800 @@ ;; DECOMP BEGINS +(deftype forexitb-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + +(defpartgroup group-forexitb-panel-1 + :id 623 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2762 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2763 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2764 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2765 :fade-after (meters 40) :flags (bit6 bit7) :period 800 :length 225) + ) + ) + +(defpart 2762 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.075)) + (sp-flt spt-y (meters 1.8)) + (sp-flt spt-z (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2763 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3)) + (sp-flt spt-y (meters -0.5)) + (sp-flt spt-z (meters -0.2)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2764 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.85)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2765 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.25)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-panel-3 + :id 624 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2766 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 75) + (sp-item 2767 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 50) + (sp-item 2768 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 225) + (sp-item 2769 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 150) + (sp-item 2770 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 225 :offset 225) + (sp-item 2771 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2772 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2773 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300 :offset 150) + (sp-item 2774 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150 :offset 150) + (sp-item 2775 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 50) + (sp-item 2776 :fade-after (meters 60) :flags (bit6 bit7) :period 50 :length 25) + (sp-item 2777 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150) + ) + ) + +;; failed to figure out what this is: +(defpart 2766 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2767 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.575)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2768 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2769 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2770 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2771 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.2)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2772 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2773 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2774 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters -0.25)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2775 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2776 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2777 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-overhead-lights + :id 625 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 2778 :fade-after (meters 80) :flags (bit6)) (sp-item 2779 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2778 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 3072.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2779 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 14) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 10.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 3072.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-yellow-glows + :id 626 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2780 :fade-after (meters 80) :flags (bit6)) (sp-item 2781 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2780 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2781 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-red-glows + :id 627 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2782 :fade-after (meters 80) :flags (bit6)) (sp-item 2783 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2782 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2783 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-blue-lights + :id 628 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 2784 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2785 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2786 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2787 :fade-after (meters 100) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2784 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2785 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2786 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2787 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 12.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-single-blue-lights-1 + :id 629 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 2788 :fade-after (meters 80) :flags (bit6) :period 300 :length 150 :offset 150)) + ) + +;; failed to figure out what this is: +(defpart 2788 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.6) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-l-upsideown-panel + :id 630 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2789 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2790 :fade-after (meters 80) :flags (bit6 bit7) :period 225 :length 100) + (sp-item 2791 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2792 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2793 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2794 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 50) + (sp-item 2795 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + ) + ) + +;; failed to figure out what this is: +(defpart 2789 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2790 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.95)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2791 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.75)) + (sp-flt spt-y (meters -1.8)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2792 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.8)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2793 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2794 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2795 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.2)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-l-panel + :id 631 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2796 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75) + (sp-item 2797 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 150) + (sp-item 2798 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 50) + (sp-item 2799 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 100) + (sp-item 2800 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 60) + (sp-item 2801 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2802 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 35) + (sp-item 2803 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + (sp-item 2804 :fade-after (meters 60) :flags (bit6 bit7) :period 75 :length 25) + (sp-item 2805 :fade-after (meters 40) :flags (bit6 bit7) :period 50 :length 25) + ) + ) + +;; failed to figure out what this is: +(defpart 2796 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2797 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2798 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2799 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2800 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2801 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2802 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2803 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2804 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2805 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-pipe-drip + :id 632 + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 2806) + (sp-item 2807) + (sp-item 2808 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2809 :flags (is-3d)) + (sp-item 2810 :flags (is-3d)) + ) + ) + +;; failed to figure out what this is: +(defpart 2806 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -0.025) (meters 0.05) 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-flt spt-z (meters -5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-z (meters 0.006666667)) + (sp-rnd-flt spt-fade-a 0.07111111 0.035555556 1.0) + (sp-int-plain-rnd spt-timer 970 4 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-int spt-next-time 450) + (sp-launcher-by-id spt-next-launcher 2811) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2811 + :init-specs ((sp-rnd-flt spt-fade-a 0.0 0.10666667 1.0) + (sp-int spt-next-time 280) + (sp-launcher-by-id spt-next-launcher 2812) + ) + ) + +;; failed to figure out what this is: +(defpart 2812 + :init-specs ((sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00033333333)) + (sp-flt spt-scalevel-y (meters 0.0033333334)) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + ) + ) + +;; failed to figure out what this is: +(defpart 2808 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters -0.2) (meters 0.4) 1.0) + (sp-flt spt-y (meters -6.5)) + (sp-rnd-flt spt-z (meters 1.2) (meters 0.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.03) (meters -0.01) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y 4.096 0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees -10.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2807 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -0.2) (meters 0.4) 1.0) + (sp-flt spt-y (meters -6.5)) + (sp-rnd-flt spt-z (meters 1.2) (meters 0.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-omega 8.192) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.03) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2813 + :init-specs ((sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-int spt-next-time 5) + (sp-launcher-by-id spt-next-launcher 2814) + ) + ) + +;; failed to figure out what this is: +(defpart 2814 + :init-specs ((sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-int-plain-rnd spt-next-time 0 449 1) + (sp-launcher-by-id spt-next-launcher 2813) + ) + ) + +;; failed to figure out what this is: +(defpart 2809 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 0.3) + (sp-rnd-flt spt-x (meters -0.2) (meters 0.4) 1.0) + (sp-rnd-flt spt-y (meters -6.5) (meters -0.25) 1.0) + (sp-rnd-flt spt-z (meters -1.6) (meters 0.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.32 -0.32 1.0) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2810 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 0.3) + (sp-rnd-flt spt-x (meters -2.2) (meters 4.4) 1.0) + (sp-rnd-flt spt-y (meters -6.5) (meters -0.25) 1.0) + (sp-rnd-flt spt-z (meters 0.6) (meters -4.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.16 -0.16 1.0) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-ceiling-light-oneoff + :id 633 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2815 :fade-after (meters 80) :flags (bit6)) (sp-item 2816 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2815 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -1)) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2816 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -1)) + (sp-rnd-flt spt-scale-x (meters 20) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 24.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-ceiling-pipe-drip2 + :id 634 + :bounds (static-bspherem 0 -12 0 64) + :parts ((sp-item 2817 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 2818 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2819 :fade-after (meters 100) :falloff-to (meters 100)) + ) + ) + +;; definition for function check-drop-level-forexitb-drop-userdata +;; INFO: Used lq/sq +(defun check-drop-level-forexitb-drop-userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (when (< (-> arg2 vector 0 y) (-> arg1 user-float)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (sp-kill-particle arg0 arg1) + (set-vector! s3-0 (-> arg2 vector 0 x) (-> arg1 user-float) (-> arg2 vector 0 z) 1.0) + (let ((t9-1 sp-launch-particles-var) + (a0-3 *sp-particle-system-2d*) + (a1-2 (-> *part-id-table* 2820)) + (a2-1 *launch-matrix*) + ) + (set! (-> a2-1 trans quad) (-> s3-0 quad)) + (t9-1 a0-3 a1-2 a2-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-2 sp-launch-particles-var) + (a0-4 *sp-particle-system-3d*) + (a1-3 (-> *part-id-table* 2821)) + (a2-2 *launch-matrix*) + ) + (set! (-> a2-2 trans quad) (-> s3-0 quad)) + (t9-2 a0-4 a1-3 a2-2 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (sparticle-motion-blur arg0 arg1 (the-as vector arg2)) + (none) + ) + +;; definition for function check-drop-level-forexitb-drop-water-userdata +;; INFO: Used lq/sq +(defun check-drop-level-forexitb-drop-water-userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (when (< (-> arg2 vector 0 y) (-> arg1 user-float)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (sp-kill-particle arg0 arg1) + (set-vector! s3-0 (-> arg2 vector 0 x) (-> arg1 user-float) (-> arg2 vector 0 z) 1.0) + (let ((t9-1 sp-launch-particles-var) + (a0-3 *sp-particle-system-2d*) + (a1-2 (-> *part-id-table* 2820)) + (a2-1 *launch-matrix*) + ) + (set! (-> a2-1 trans quad) (-> s3-0 quad)) + (t9-1 a0-3 a1-2 a2-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-2 sp-launch-particles-var) + (a0-4 *sp-particle-system-3d*) + (a1-3 (-> *part-id-table* 2822)) + (a2-2 *launch-matrix*) + ) + (set! (-> a2-2 trans quad) (-> s3-0 quad)) + (t9-2 a0-4 a1-3 a2-2 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-3 sp-launch-particles-var) + (a0-5 *sp-particle-system-2d*) + (a1-4 (-> *part-id-table* 2823)) + (a2-3 *launch-matrix*) + ) + (set! (-> a2-3 trans quad) (-> s3-0 quad)) + (t9-3 a0-5 a1-4 a2-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (sparticle-motion-blur arg0 arg1 (the-as vector arg2)) + (none) + ) + +;; failed to figure out what this is: +(defpart 2820 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-omega 8.192) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.03) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2821 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-omega 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.2) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + ) + ) + +;; failed to figure out what this is: +(defpart 2817 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2824 + :init-specs ((sp-flt spt-a 128.0) + (sp-flt spt-omega 5.12) + (sp-flt spt-fade-a 0.0) + (sp-rnd-flt spt-accel-y -27.306667 2.7306666 1.0) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + ) + ) + +;; failed to figure out what this is: +(defpart 2818 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 5.75) (meters 0.1) 1.0) + (sp-flt spt-y (meters -6.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters -0.017777778)) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 1.1333333) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -217.0) (degrees 6.0000005) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2819 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 5.75) (meters 0.1) 1.0) + (sp-flt spt-y (meters -6.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters -0.017777778)) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 1.1333333) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -94.0) (degrees 1.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-ceiling-pipe-drip1 + :id 635 + :bounds (static-bspherem 0 -12 0 64) + :parts ((sp-item 2825 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2826 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2827 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2828 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2829 :fade-after (meters 100) :falloff-to (meters 100)) + ) + ) + +;; failed to figure out what this is: +(defpart 2823 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 2.0 2.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.03) (meters -0.01) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y 4.096 0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees -10.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2829 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 5.75) (meters 0.1) 1.0) + (sp-flt spt-y (meters -6.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters -0.017777778)) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 1.1333333) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 17.0) (degrees 3.0000002) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2825 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 55.0) (degrees 80.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2826 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -55.0) (degrees -80.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2827 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 145.0) (degrees 70.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2828 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -45.0) (degrees 90.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2822 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.42666668 -0.32 1.0) + (sp-int spt-timer 225) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-random-drip-main + :id 636 + :bounds (static-bspherem 0 -12 0 64) + :parts ((sp-item 2830 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2831 :fade-after (meters 100) :falloff-to (meters 100)) + ) + ) + +;; failed to figure out what this is: +(defpart 2830 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-rnd-flt spt-x (meters 40) (meters -28) 1.0) + (sp-flt spt-y (meters -0.1)) + (sp-rnd-flt spt-z (meters 6) (meters -30) 1.0) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2831 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.2 1.0) + (sp-rnd-flt spt-x (meters -22) (meters 32) 1.0) + (sp-flt spt-y (meters -0.1)) + (sp-rnd-flt spt-z (meters 0) (meters -24) 1.0) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/goal_src/jak2/levels/fortress/fortress-obs.gc b/goal_src/jak2/levels/fortress/fortress-obs.gc index a89b987241..45fae8cdf6 100644 --- a/goal_src/jak2/levels/fortress/fortress-obs.gc +++ b/goal_src/jak2/levels/fortress/fortress-obs.gc @@ -7,3 +7,256 @@ ;; DECOMP BEGINS + +;; definition of type fort-trap-door +(deftype fort-trap-door (process-drawable) + ((root-override collide-shape-moving :offset 128) + (notify-actor entity-actor :offset-assert 200) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xcc + :flag-assert #x16005000cc + (:methods + (idle () _type_ :state 20) + (die () _type_ :state 21) + ) + ) + +;; definition for method 3 of type fort-trap-door +(defmethod inspect fort-trap-door ((obj fort-trap-door)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tnotify-actor: ~A~%" (-> obj notify-actor)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-fort-trap-door fort-trap-door 0 2 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 5)) + +;; failed to figure out what this is: +(defskelgroup skel-fort-trap-door-explode fort-trap-door 3 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 0 0 15) + ) + +;; definition for symbol *fort-trap-door-exploder-params*, type joint-exploder-static-params +(define *fort-trap-door-exploder-params* + (new 'static 'joint-exploder-static-params + :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 19 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 20 :parent-joint-index -1) + ) + :collide-spec #x1 + ) + ) + +;; failed to figure out what this is: +(defstate idle (fort-trap-door) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (the-as + object + (case event-type + (('attack) + (when (logtest? (-> (the-as attack-info (-> event param 1)) penetrate-using) (penetrate flop)) + (go-virtual die) + #f + ) + ) + ) + ) + ) + :code (the-as (function none :behavior fort-trap-door) sleep-code) + ) + +;; failed to figure out what this is: +(defstate die (fort-trap-door) + :virtual #t + :enter (behavior () + (let ((v1-1 (-> self root-override root-prim))) + (set! (-> v1-1 prim-core collide-as) (collide-spec)) + (set! (-> v1-1 prim-core collide-with) (collide-spec)) + ) + 0 + (sound-play "trapdoor") + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) (process->ppointer self)) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-6 (-> self notify-actor)) + ) + (t9-2 + (if v1-6 + (-> v1-6 extra process) + ) + a1-1 + ) + ) + ) + (none) + ) + :code (behavior () + ((lambda () + (with-pp + (sound-play "wcrate-break") + (let ((gp-1 (new 'stack 'joint-exploder-tuning (the-as uint 1)))) + (let* ((s5-1 *target*) + (a0-4 (if (type? s5-1 process-focusable) + s5-1 + ) + ) + ) + (when a0-4 + (set! (-> gp-1 fountain-rand-transv-lo quad) (-> (get-trans a0-4 0) quad)) + (set! (-> gp-1 fountain-rand-transv-lo y) (+ -16384.0 (-> gp-1 fountain-rand-transv-lo y))) + ) + ) + (set! (-> gp-1 fountain-rand-transv-hi x) 24576.0) + (set! (-> gp-1 fountain-rand-transv-hi y) 81920.0) + (set! (-> gp-1 fountain-rand-transv-hi z) 12288.0) + (set! (-> gp-1 fountain-rand-transv-hi w) 32768.0) + (process-spawn + joint-exploder + (art-group-get-by-name *level* "skel-fort-trap-door-explode" (the-as (pointer uint32) #f)) + 5 + gp-1 + *fort-trap-door-exploder-params* + :to pp + ) + ) + ) + ) + ) + (suspend) + (ja-channel-set! 0) + (let ((gp-0 (-> self clock frame-counter))) + (until (>= (- (-> self clock frame-counter) gp-0) (seconds 1)) + (suspend) + ) + ) + (send-event self 'death-end) + (while (-> self child) + (suspend) + ) + (cleanup-for-death self) + (none) + ) + :post (the-as (function none :behavior fort-trap-door) ja-post) + ) + +;; definition for method 11 of type fort-trap-door +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! fort-trap-door ((obj fort-trap-door) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 0) + (set-vector! (-> v1-2 local-sphere) 0.0 0.0 0.0 20480.0) + (set! (-> s4-0 total-prims) (the-as uint 1)) + (set! (-> s4-0 root-prim) v1-2) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-5 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root-override) (the-as collide-shape-moving s4-0)) + ) + (set! (-> (the-as collide-shape-moving (-> obj root-override)) penetrated-by) (penetrate flop)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-fort-trap-door" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (let ((a0-14 (-> obj skel root-channel 0))) + (set! (-> a0-14 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) + (set! (-> a0-14 frame-num) 0.0) + (joint-control-channel-group! a0-14 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-identity) + ) + (transform-post) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type water-anim-fortress +(deftype water-anim-fortress (water-anim) + () + :heap-base #x80 + :method-count-assert 29 + :size-assert #x100 + :flag-assert #x1d00800100 + ) + +;; definition for method 3 of type water-anim-fortress +(defmethod inspect water-anim-fortress ((obj water-anim-fortress)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type water-anim inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; definition for symbol ripple-for-water-anim-fortress, type ripple-wave-set +(define ripple-for-water-anim-fortress (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave) + ) + ) + ) + +;; definition for method 24 of type water-anim-fortress +;; WARN: Return type mismatch ripple-wave-set vs none. +(defmethod art-init! water-anim-fortress ((obj water-anim-fortress)) + "Initialize a [[water-anim]]'s [[skeleton-group]], joints and ambience." + (let ((t9-0 (method-of-type water-anim art-init!))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (set! (-> v1-2 waveform) ripple-for-water-anim-fortress) + ) + (none) + ) + + diff --git a/goal_src/jak2/levels/fortress/prison/prison-obs.gc b/goal_src/jak2/levels/fortress/prison/prison-obs.gc index ec8fc0599e..320d282c49 100644 --- a/goal_src/jak2/levels/fortress/prison/prison-obs.gc +++ b/goal_src/jak2/levels/fortress/prison/prison-obs.gc @@ -5,5 +5,888 @@ ;; name in dgo: prison-obs ;; dgos: PRI +(declare-type prsn-hang-cell process-drawable) +(define-extern prsn-hang-cell-init-by-other (function float none :behavior prsn-hang-cell)) + ;; DECOMP BEGINS +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(set! (-> *lightning-spec-id-table* 19) (new 'static 'lightning-spec + :name "lightning-darkjak-prison" + :flags (lightning-spec-flags lsf0) + :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) + :fade-start-factor 0.2 + :texture (new 'static 'texture-id :index #x84 :page #xc) + :reduction 0.42 + :num-points 12 + :box-size 1638.4 + :merge-factor 0.6 + :merge-count 2 + :radius 819.2 + :duration 30.0 + :sound (static-sound-spec "stretched-zap") + ) + ) + +;; failed to figure out what this is: +(set! (-> *lightning-spec-id-table* 20) (new 'static 'lightning-spec + :name "lightning-darkjak-prison-shock" + :flags (lightning-spec-flags lsf0) + :rand-func #x2 + :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) + :fade-start-factor 0.2 + :texture (new 'static 'texture-id :index #x84 :page #xc) + :reduction 0.42 + :num-points 32 + :box-size 4096.0 + :merge-factor 0.6 + :merge-count 2 + :radius 819.2 + :duration 30.0 + :duration-rand 150.0 + :sound #f + ) + ) + +;; definition for symbol *prsn-torture-lightning-joints*, type (array int32) +(define *prsn-torture-lightning-joints* (new 'static 'boxed-array :type int32 14 16 18 20)) + +;; definition for symbol *prsn-chair-shackle-lightning-joints*, type (array int32) +(define *prsn-chair-shackle-lightning-joints* (new 'static 'boxed-array :type int32 4 5 6 7)) + +;; definition for function dark-lightning-handler +;; INFO: Used lq/sq +;; WARN: Return type mismatch none vs object. +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 119] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 195] +(defbehavior dark-lightning-handler process-drawable ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (sv-112 sparticle-launcher) (sv-160 vector) (sv-164 vector) (sv-176 lightning-spec)) + (let ((s3-0 (new 'static 'vector4w :x -1)) + (s4-0 (new 'static 'vector4w :x -1)) + (s5-0 (command-get-process "jak-highres-prison" *target*)) + ) + (the-as + object + (cond + ((= arg2 'lightning-claw) + (let ((s1-0 (command-get-process "prsn-chair-shackle" *target*)) + (gp-1 (new 'stack-no-clear 'matrix)) + (s2-0 *prsn-torture-lightning-joints*) + (s3-1 + (rand-vu-int-range-exclude 0 (+ (-> *prsn-torture-lightning-joints* length) -1) (the-as int (-> s3-0 x))) + ) + ) + *prsn-chair-shackle-lightning-joints* + (let ((v1-7 (rand-vu-int-range-exclude + 0 + (+ (-> *prsn-chair-shackle-lightning-joints* length) -1) + (the-as int (-> s4-0 x)) + ) + ) + ) + (when s1-0 + (set! (-> s4-0 x) v1-7) + (vector<-cspace! (the-as vector (-> gp-1 vector)) (-> self node-list data 13)) + (vector<-cspace! (-> gp-1 vector 1) (-> self node-list data (-> s2-0 s3-1))) + (vector<-cspace! (-> gp-1 vector 2) (-> self node-list data (+ (-> s2-0 s3-1) 1))) + (vector<-cspace! (-> gp-1 trans) (-> (the-as process-drawable s5-0) node-list data 8)) + (dotimes (s5-1 3) + (process-spawn + lightning-tracker + :init lightning-tracker-init + (-> *lightning-spec-id-table* 19) + (the int (* 300.0 (rand-vu-float-range 1.0 2.0))) + lightning-probe-callback + #f + (+ (the-as uint gp-1) (* s5-1 16)) + (+ (the-as uint gp-1) (* (+ s5-1 1) 16)) + :to self + ) + ) + #f + ) + ) + ) + ) + ((= arg2 'lightning-needle) + (let ((gp-2 (command-get-process "prsn-chair-shackle" *target*))) + *prsn-chair-shackle-lightning-joints* + (let ((v1-38 (rand-vu-int-range-exclude + 0 + (+ (-> *prsn-chair-shackle-lightning-joints* length) -1) + (the-as int (-> s4-0 x)) + ) + ) + ) + (when gp-2 + (set! (-> s4-0 x) v1-38) + (let ((s4-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 8))) + (s5-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s5-0) node-list data 5))) + (s3-3 (get-process *default-dead-pool* lightning-tracker #x4000)) + ) + (when s3-3 + (let ((t9-17 (method-of-type lightning-tracker activate))) + (t9-17 + (the-as lightning-tracker s3-3) + self + (symbol->string (-> lightning-tracker symbol)) + (the-as pointer #x70004000) + ) + ) + (let ((s2-2 run-function-in-process) + (s1-2 s3-3) + (s0-1 lightning-tracker-init) + ) + (set! sv-176 (-> *lightning-spec-id-table* 19)) + (let ((a3-4 (the int (* 300.0 (rand-vu-float-range 1.0 2.0)))) + (t0-1 lightning-probe-callback) + ) + ((the-as (function object object object object object object object object none) s2-2) + s1-2 + s0-1 + sv-176 + a3-4 + t0-1 + gp-2 + s4-2 + s5-2 + ) + ) + ) + (-> s3-3 ppointer) + ) + ) + ) + ) + ) + ) + ((= arg2 'lightning-shackle) + (let ((gp-3 (command-get-process "prsn-chair-shackle" *target*)) + (s2-3 *prsn-torture-lightning-joints*) + (s5-3 *prsn-chair-shackle-lightning-joints*) + ) + (when gp-3 + (when (and (nonzero? (-> self skel)) (nonzero? (-> (the-as process-drawable gp-3) skel))) + (let* ((v1-52 (-> s2-3 length)) + (s1-3 (-> s5-3 length)) + (s0-2 (rand-vu-int-range-exclude 0 (+ v1-52 -1) (the-as int (-> s3-0 x)))) + (s1-4 (rand-vu-int-range-exclude 0 (+ s1-3 -1) (the-as int (-> s4-0 x)))) + ) + (set! sv-112 (-> *part-id-table* 179)) + (set! (-> s3-0 x) s0-2) + (set! (-> s4-0 x) s1-4) + (set! sv-160 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> s2-3 s0-2)))) + (set! sv-164 (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> (the-as process-drawable gp-3) node-list data (-> s5-3 s1-4)) + ) + ) + ) + (let ((s4-3 (process-spawn + lightning-tracker + :init lightning-tracker-init + (-> *lightning-spec-id-table* 19) + (the int (* 300.0 (rand-vu-float-range 1.0 2.0))) + lightning-probe-callback + self + sv-160 + sv-164 + :to gp-3 + ) + ) + ) + (when (and sv-112 s4-3) + (let ((v1-74 (get-field-spec-by-id sv-112 (sp-field-id spt-timer)))) + (if v1-74 + (set! (-> v1-74 initial-valuef) (the-as float (-> (the-as lightning-tracker (-> s4-3 0)) duration))) + ) + ) + (let ((t9-30 sp-launch-particles-var) + (a0-35 *sp-particle-system-2d*) + (a1-37 sv-112) + (a2-19 *launch-matrix*) + ) + (set! (-> a2-19 trans quad) (-> sv-160 quad)) + (t9-30 a0-35 a1-37 a2-19 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-31 sp-launch-particles-var) + (a0-36 *sp-particle-system-2d*) + (a1-38 sv-112) + (a2-20 *launch-matrix*) + ) + (set! (-> a2-20 trans quad) (-> sv-164 quad)) + (t9-31 a0-36 a1-38 a2-20 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + +;; definition of type prsn-hang-cell +(deftype prsn-hang-cell (process-drawable) + ((path-u float :offset-assert 200) + (path-du float :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 21 + :size-assert #xd0 + :flag-assert #x15005000d0 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-hang-cell +(defmethod inspect prsn-hang-cell ((obj prsn-hang-cell)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tpath-u: ~f~%" (-> obj path-u)) + (format #t "~2Tpath-du: ~f~%" (-> obj path-du)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-prsn-hang-cell prsn-hang-cell 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -9.5 0 10) + ) + +;; failed to figure out what this is: +(defstate idle (prsn-hang-cell) + :virtual #t + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (let* ((f0-2 (* (/ 1.0 (-> self path-du)) (-> self path-u))) + (f0-3 (- f0-2 (* (the float (the int (/ f0-2 1.0))) 1.0))) + ) + (ja-no-eval :group! (ja-group) :num! (loop!) :frame-num f0-3) + ) + (until #f + (suspend) + (ja :num! (loop!)) + ) + #f + (none) + ) + :post (behavior () + (seek! (-> self path-u) 1.0 (* (-> self path-du) (-> self clock seconds-per-frame))) + (when (>= (-> self path-u) 1.0) + (set! (-> self path-u) 0.0) + (set! (-> self state-time) (-> self clock frame-counter)) + ) + (get-point-at-percent-along-path! (-> self path) (-> self root trans) (-> self path-u) 'interp) + (ja-post) + (none) + ) + ) + +;; definition for method 11 of type prsn-hang-cell +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-hang-cell ((obj prsn-hang-cell) (arg0 entity-actor)) + (with-pp + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-hang-cell" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj path-du) 0.01) + (let ((f0-2 (* 300.0 (/ 1.0 (-> obj path-du)))) + (f1-3 (the float (-> pp clock frame-counter))) + ) + (set! (-> obj path-u) (/ (- f1-3 (* (the float (the int (/ f1-3 f0-2))) f0-2)) f0-2)) + ) + (let* ((f30-0 (-> obj path-u)) + (f28-0 8.0) + (f26-0 (/ 1.0 f28-0)) + ) + (dotimes (s5-2 (+ (the int f28-0) -1)) + (+! f30-0 f26-0) + (process-spawn + prsn-hang-cell + (if (>= f30-0 1.0) + (+ -1.0 f30-0) + f30-0 + ) + :to obj + ) + ) + ) + (go (method-of-object obj idle)) + (none) + ) + ) + +;; definition for function prsn-hang-cell-init-by-other +;; WARN: Return type mismatch object vs none. +(defbehavior prsn-hang-cell-init-by-other prsn-hang-cell ((arg0 float)) + (set! (-> self root) (new 'process 'trsqv)) + (initialize-skeleton + self + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-hang-cell" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self path) (new 'process 'path-control self 'path 0.0 (the-as entity #f) #f)) + (logior! (-> self path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> self path-u) arg0) + (set! (-> self path-du) 0.01) + (set! (-> self draw light-index) (the-as uint 10)) + (go-virtual idle) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup skel-warp-gate-b warp-gate-b 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3 0 4) + :origin-joint-index 3 + ) + +;; definition of type warp-gate-b +(deftype warp-gate-b (warp-gate) + () + :heap-base #x80 + :method-count-assert 26 + :size-assert #x100 + :flag-assert #x1a00800100 + ) + +;; definition for method 3 of type warp-gate-b +(defmethod inspect warp-gate-b ((obj warp-gate-b)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type warp-gate inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; definition for method 23 of type warp-gate-b +;; WARN: Return type mismatch draw-control vs none. +(defmethod init-skel-and-collide warp-gate-b ((obj warp-gate-b)) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 penetrated-by) (penetrate)) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 3) + (set-vector! (-> v1-2 local-sphere) 0.0 -12288.0 0.0 16384.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-2) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-5 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-warp-gate-b" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (none) + ) + +;; definition of type prsn-cell-door +(deftype prsn-cell-door (process-drawable) + ((frame float :offset-assert 200) + (desired float :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 21 + :size-assert #xd0 + :flag-assert #x15005000d0 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-cell-door +(defmethod inspect prsn-cell-door ((obj prsn-cell-door)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tframe: ~f~%" (-> obj frame)) + (format #t "~2Tdesired: ~f~%" (-> obj desired)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-prsn-cell-door prsn-cell-door 0 2 + ((1 (meters 999999))) + :bounds (static-spherem -2.5 3.25 0 4.25) + :origin-joint-index 3 + ) + +;; failed to figure out what this is: +(defstate idle (prsn-cell-door) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('open) + (set! (-> self desired) 1.0) + (format #t "open~%") + ) + (('close) + (set! (-> self desired) 0.0) + (format #t "close~%") + ) + ) + ) + :code (behavior () + (until #f + (cond + ((< (-> self frame) (-> self desired)) + (+! (-> self frame) (* 0.075 (-> self clock seconds-per-frame))) + ) + ((< (-> self desired) (-> self frame)) + (set! (-> self frame) (- (-> self frame) (* 0.075 (-> self clock seconds-per-frame)))) + ) + ) + (set! (-> self frame) (fmax 0.0 (fmin 1.0 (-> self frame)))) + (ja :num-func num-func-identity :frame-num (ja-aframe (-> self frame) 0)) + (suspend) + ) + #f + (none) + ) + :post (the-as (function none :behavior prsn-cell-door) transform-post) + ) + +;; definition for method 11 of type prsn-cell-door +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-cell-door ((obj prsn-cell-door) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 3) + (set-vector! (-> v1-2 local-sphere) -10240.0 13312.0 0.0 17408.0) + (set! (-> s4-0 total-prims) (the-as uint 1)) + (set! (-> s4-0 root-prim) v1-2) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-5 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-cell-door" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj frame) 0.0) + (set! (-> obj desired) 0.0) + (set! (-> obj draw light-index) (the-as uint 10)) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type prsn-vent-fan +(deftype prsn-vent-fan (process-drawable) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15005000c8 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-vent-fan +(defmethod inspect prsn-vent-fan ((obj prsn-vent-fan)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-prsn-vent-fan prsn-vent-fan 0 3 + ((1 (meters 999999))) + :bounds (static-spherem -2.5 3.25 0 4.25) + :origin-joint-index 3 + ) + +;; failed to figure out what this is: +(defstate idle (prsn-vent-fan) + :virtual #t + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior prsn-vent-fan) ja-post) + ) + +;; definition for method 11 of type prsn-vent-fan +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-vent-fan ((obj prsn-vent-fan) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-vent-fan" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type prsn-torture +(deftype prsn-torture (process-drawable) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15005000c8 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-torture +(defmethod inspect prsn-torture ((obj prsn-torture)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defstate idle (prsn-torture) + :virtual #t + :event dark-lightning-handler + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (behavior () + (transform-post) + (none) + ) + ) + +;; definition for method 11 of type prsn-torture +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-torture ((obj prsn-torture) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s4-0 penetrated-by) (penetrate)) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) + (set! (-> s4-0 total-prims) (the-as uint 10)) + (set! (-> s3-0 prim-core collide-as) (collide-spec pusher)) + (set! (-> s3-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 transform-index) 2) + (set-vector! (-> s3-0 local-sphere) 0.0 -14336.0 0.0 32768.0) + (set! (-> s4-0 root-prim) s3-0) + ) + (pusher-init s4-0) + (let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 20) (the-as uint 0)))) + (set! (-> v1-11 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-11 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-11 prim-core action) (collide-action solid)) + (set! (-> v1-11 transform-index) 3) + (set-vector! (-> v1-11 local-sphere) 0.0 -10240.0 0.0 16384.0) + ) + (let ((v1-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 13) (the-as uint 0)))) + (set! (-> v1-13 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-13 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-13 prim-core action) (collide-action solid)) + (set! (-> v1-13 transform-index) 10) + (set-vector! (-> v1-13 local-sphere) 0.0 -4096.0 0.0 10240.0) + ) + (let ((v1-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 12) (the-as uint 0)))) + (set! (-> v1-15 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-15 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-15 prim-core action) (collide-action solid)) + (set! (-> v1-15 transform-index) 11) + (set-vector! (-> v1-15 local-sphere) 0.0 -5120.0 0.0 8192.0) + ) + (let ((v1-17 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 16) (the-as uint 0)))) + (set! (-> v1-17 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-17 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-17 prim-core action) (collide-action solid)) + (set! (-> v1-17 transform-index) 24) + (set-vector! (-> v1-17 local-sphere) 0.0 4096.0 0.0 10240.0) + ) + (let ((v1-19 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 15) (the-as uint 0)))) + (set! (-> v1-19 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-19 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-19 prim-core action) (collide-action solid)) + (set! (-> v1-19 transform-index) 25) + (set-vector! (-> v1-19 local-sphere) 0.0 -2662.4 0.0 6144.0) + ) + (let ((v1-21 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 14) (the-as uint 0)))) + (set! (-> v1-21 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-21 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-21 prim-core action) (collide-action solid)) + (set! (-> v1-21 transform-index) 27) + (set-vector! (-> v1-21 local-sphere) 0.0 -819.2 0.0 4096.0) + ) + (let ((v1-23 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 19) (the-as uint 0)))) + (set! (-> v1-23 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-23 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-23 prim-core action) (collide-action solid)) + (set! (-> v1-23 transform-index) 51) + (set-vector! (-> v1-23 local-sphere) 0.0 4096.0 0.0 10240.0) + ) + (let ((v1-25 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 18) (the-as uint 0)))) + (set! (-> v1-25 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-25 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-25 prim-core action) (collide-action solid)) + (set! (-> v1-25 transform-index) 52) + (set-vector! (-> v1-25 local-sphere) 0.0 2457.6 0.0 6144.0) + ) + (let ((v1-27 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 17) (the-as uint 0)))) + (set! (-> v1-27 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-27 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-27 prim-core action) (collide-action solid)) + (set! (-> v1-27 transform-index) 54) + (set-vector! (-> v1-27 local-sphere) 0.0 819.2 0.0 4096.0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-30 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-30 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-30 prim-core collide-with)) + ) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-torture" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + (go (method-of-object obj idle)) + (none) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "fortress-save-friends-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-49" + :art-group "scenecamera" + :anim "fortress-save-friends-res" + :parts 43 + :command-list '((0 (kill "prsn-cell-door-3") (task-close! "fortress-save-friends-resolution") (fadein (frame-time-30 10))) + (75 (send-event "prsn-cell-door-2" 'open)) + (75 (send-event "prsn-cell-door-1" 'open)) + (75 (send-event "prsn-cell-door-4" 'open)) + (1143 (apply )) + (1189 (apply )) + (2427 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2445 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2463 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2485 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2507 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2549 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2550 (fadeout (frame-time-30 20))) + ) + :cut-list '(47 + 76 + 130 + 189 + 253 + 448 + 496 + 522 + 555 + 624 + 768 + 893 + 954 + 977 + 1089 + 1143 + 1189 + 1328 + 1407 + 1463 + 1603 + 1718 + 1857 + 1983 + 2146 + 2206 + 2307 + 2390 + ) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'prison + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min 2507)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'lprsncst + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min 2427)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tess-highres" + :level 'lprsncst + :art-group "skel-tess-highres" + :prefix "" + :draw-frames '((min 2445)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "samos-highres" + :level 'lprsncst + :art-group "skel-samos-highres" + :prefix "" + :draw-frames '((min 2146) (2206 2485)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "youngsamos-highres" + :level 'lprsncst + :art-group "skel-youngsamos-highres" + :prefix "" + :draw-frames '((min 2146) (2206 2463)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "prsn-cell-door" + :level 'prison + :art-group "skel-prsn-cell-door" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "prison-start" + :end-point-obj "vinroom-warp" + :borrow '((prison 0 lprsncst special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + + + + diff --git a/goal_src/jak2/levels/fortress/prison/prison-part.gc b/goal_src/jak2/levels/fortress/prison/prison-part.gc index 1594785f39..8b60287276 100644 --- a/goal_src/jak2/levels/fortress/prison/prison-part.gc +++ b/goal_src/jak2/levels/fortress/prison/prison-part.gc @@ -7,3 +7,1808 @@ ;; DECOMP BEGINS +;;-*-Lisp-*- +(in-package goal) + +;; definition of type prison-part +(deftype prison-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + +;; definition for method 3 of type prison-part +(defmethod inspect prison-part ((obj prison-part)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type part-spawner inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light-machine + :id 584 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2613 :fade-after (meters 200) :flags (bit6 bit7)) + (sp-item 2614 :fade-after (meters 200) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2613 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.25)) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 822067.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2614 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.25)) + (sp-rnd-flt spt-scale-x (meters 12) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-flt spt-a 12.0) + (sp-flt spt-omega 821248.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light + :id 585 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2615 :fade-after (meters 180) :flags (bit6)) (sp-item 2616 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2615 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 12.0 4.0 1.0) + (sp-flt spt-omega 740147.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2616 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 739328.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light-3d-backside + :id 586 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2617 :flags (is-3d bit6 bit7))) + ) + +;; failed to figure out what this is: +(defpart 2617 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.5)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 33.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light-ceiling + :id 587 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 2618 :fade-after (meters 80) :flags (bit6)) (sp-item 2619 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2618 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.25)) + (sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2619 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.25)) + (sp-rnd-flt spt-scale-x (meters 14) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-tall-vent-small + :id 588 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 18) + :rotate ((degrees -1.5555556) (degrees 0) (degrees 0)) + :parts ((sp-item 2620 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 2620 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 3.0 1.0 1.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1) 1.0) + (sp-rnd-flt spt-y (meters -2.5) (meters 5.5) 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 32.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.026666667) (meters -0.01) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.033333335) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.24) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-rnd-flt spt-friction 0.95 0.025 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 2621) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-tall-vent + :id 589 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 20) + :rotate ((degrees -1.5555556) (degrees 0) (degrees 0)) + :parts ((sp-item 2622 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 2622 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 2.5 1.0 1.0) + (sp-rnd-flt spt-x (meters -1.25) (meters 2.5) 1.0) + (sp-rnd-flt spt-y (meters -4.5) (meters 11.5) 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 32.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.026666667) (meters -0.01) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.033333335) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.24) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-rnd-flt spt-friction 0.95 0.025 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 2621) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2621 + :init-specs ((sp-rnd-flt spt-fade-a -0.04 -0.048 1.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-floor-vent + :id 590 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 16) + :parts ((sp-item 2623 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 2623 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 3.0 1.0 1.0) + (sp-rnd-flt spt-x (meters -1.5) (meters 3) 1.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3) 1.0) + (sp-rnd-flt spt-z (meters -0.5) (meters 1) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 32.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.016666668) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.24) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-rnd-flt spt-friction 0.95 0.025 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 2624) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2624 + :init-specs ((sp-rnd-flt spt-fade-a -0.06 -0.048 1.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-01-a + :id 591 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2625 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50 :offset 115) + (sp-item 2626 :fade-after (meters 60) :flags (bit6 bit7) :period 210 :length 50 :offset 155) + (sp-item 2627 :fade-after (meters 40) :flags (bit6 bit7) :period 225 :length 50 :offset 35) + (sp-item 2628 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 150) + (sp-item 2629 :fade-after (meters 40) :flags (bit6 bit7) :period 805 :length 200 :offset 350) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-01-b + :id 592 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2625 :fade-after (meters 80) :flags (bit6 bit7) :period 310 :length 100 :offset 50) + (sp-item 2626 :fade-after (meters 60) :flags (bit6 bit7) :period 335 :length 100 :offset 160) + (sp-item 2627 :fade-after (meters 40) :flags (bit6 bit7) :period 345 :length 100 :offset 225) + (sp-item 2628 :fade-after (meters 80) :flags (bit6 bit7) :period 615 :length 300 :offset 250) + (sp-item 2629 :fade-after (meters 40) :flags (bit6 bit7) :period 835 :length 225) + ) + ) + +;; failed to figure out what this is: +(defpart 2625 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2626 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.25)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2627 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2628 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2629 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.25)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-02-a + :id 593 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2630 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50) + (sp-item 2631 :fade-after (meters 40) :flags (bit6 bit7) :period 200 :length 50 :offset 50) + (sp-item 2632 :fade-after (meters 40) :flags (bit6 bit7) :period 65 :length 25 :offset 25) + (sp-item 2633 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50 :offset 100) + (sp-item 2634 :fade-after (meters 40) :flags (bit6 bit7) :period 200 :length 50 :offset 150) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-02-b + :id 594 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2630 :fade-after (meters 80) :flags (bit6 bit7) :period 275 :length 100 :offset 35) + (sp-item 2631 :fade-after (meters 60) :flags (bit6 bit7) :period 310 :length 100 :offset 115) + (sp-item 2632 :fade-after (meters 100) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2633 :fade-after (meters 80) :flags (bit6 bit7) :period 405 :length 100 :offset 205) + (sp-item 2634 :fade-after (meters 40) :flags (bit6 bit7) :period 465 :length 125 :offset 175) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-02-c + :id 595 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2630 :fade-after (meters 80) :flags (bit6 bit7) :period 50 :length 25 :offset 15) + (sp-item 2631 :fade-after (meters 60) :flags (bit6 bit7) :period 50 :length 25 :offset 35) + (sp-item 2632 :fade-after (meters 100) :flags (bit6 bit7) :period 85 :length 35 :offset 35) + (sp-item 2633 :fade-after (meters 80) :flags (bit6 bit7) :period 50 :length 25 :offset 5) + (sp-item 2634 :fade-after (meters 40) :flags (bit6 bit7) :period 500 :length 25 :offset 45) + ) + ) + +;; failed to figure out what this is: +(defpart 2630 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.3)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2631 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2632 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.23)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2633 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2634 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.3)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-03-a + :id 596 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2635 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2636 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2637 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 50) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-03-b + :id 597 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2635 :fade-after (meters 80) :flags (bit6 bit7) :period 75 :length 40) + (sp-item 2636 :fade-after (meters 80) :flags (bit6 bit7) :period 75 :length 40) + (sp-item 2637 :fade-after (meters 40) :flags (bit6 bit7) :period 75 :length 40 :offset 35) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-03-c + :id 598 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2635 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2636 :fade-after (meters 80) :flags (bit6 bit7) :period 260 :length 110 :offset 75) + (sp-item 2637 :fade-after (meters 40) :flags (bit6 bit7) :period 395 :length 125 :offset 150) + ) + ) + +;; failed to figure out what this is: +(defpart 2635 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2636 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2637 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.25)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-door + :id 599 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2638 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50) + (sp-item 2639 :fade-after (meters 40) :flags (bit6 bit7) :period 40 :length 20 :offset 25) + (sp-item 2640 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50 :offset 100) + ) + ) + +;; failed to figure out what this is: +(defpart 2638 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2639 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2640 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-01 + :id 600 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2641 :fade-after (meters 180) :flags (bit6)) (sp-item 2642 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2641 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 60.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2642 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 20.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-02 + :id 601 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2643 :fade-after (meters 180) :flags (bit6)) (sp-item 2644 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2643 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 54.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2644 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 18.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-03 + :id 602 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2645 :fade-after (meters 180) :flags (bit6)) (sp-item 2646 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2645 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 48.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2646 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 16.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-04 + :id 603 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2647 :fade-after (meters 180) :flags (bit6)) (sp-item 2648 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2647 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 42.0 3.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2648 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 14.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-05 + :id 604 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2649 :fade-after (meters 180) :flags (bit6)) (sp-item 2650 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2649 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 36.0 3.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2650 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 12.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-06 + :id 605 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2651 :fade-after (meters 180) :flags (bit6)) (sp-item 2652 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2651 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 30.0 2.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2652 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 10.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-07 + :id 606 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2653 :fade-after (meters 180) :flags (bit6)) (sp-item 2654 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2653 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 24.0 2.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2654 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-08 + :id 607 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2655 :fade-after (meters 180) :flags (bit6)) (sp-item 2656 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2655 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 18.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2656 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 6.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-09 + :id 608 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2657 :fade-after (meters 180) :flags (bit6)) (sp-item 2658 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2657 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 12.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2658 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 4.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-10 + :id 609 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2659 :fade-after (meters 180) :flags (bit6)) (sp-item 2660 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2659 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 6.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2660 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 2.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-front-door + :id 610 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2661 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50) + (sp-item 2662 :fade-after (meters 60) :flags (bit6 bit7) :period 205 :length 50 :offset 65) + (sp-item 2663 :fade-after (meters 40) :flags (bit6 bit7) :period 215 :length 50 :offset 120) + (sp-item 2664 :fade-after (meters 80) :flags (bit6 bit7) :period 235 :length 50 :offset 270) + (sp-item 2665 :fade-after (meters 60) :flags (bit6 bit7) :period 245 :length 50 :offset 30) + (sp-item 2666 :fade-after (meters 40) :flags (bit6 bit7) :period 240 :length 50 :offset 155) + (sp-item 2667 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50) + (sp-item 2668 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 350) + (sp-item 2669 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50 :offset 300) + (sp-item 2670 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 50) + (sp-item 2671 :fade-after (meters 100) :flags (bit6 bit7) :period 50 :length 25 :offset 25) + (sp-item 2672 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 250) + (sp-item 2673 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50 :offset 100) + (sp-item 2674 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 150) + (sp-item 2675 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50 :offset 200) + (sp-item 2676 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2677 :fade-after (meters 60) :flags (bit6 bit7) :period 150 :length 50 :offset 50) + (sp-item 2678 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2679 :fade-after (meters 80) :flags (bit6 bit7) :period 165 :length 50) + (sp-item 2680 :fade-after (meters 60) :flags (bit6 bit7) :period 170 :length 50 :offset 25) + (sp-item 2681 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50 :offset 35) + (sp-item 2682 :fade-after (meters 80) :flags (bit6 bit7) :period 180 :length 50 :offset 45) + (sp-item 2683 :fade-after (meters 60) :flags (bit6 bit7) :period 185 :length 50 :offset 70) + (sp-item 2684 :fade-after (meters 40) :flags (bit6 bit7) :period 190 :length 50 :offset 110) + (sp-item 2685 :fade-after (meters 80) :flags (bit6 bit7) :period 195 :length 50 :offset 160) + (sp-item 2686 :fade-after (meters 60) :flags (bit6 bit7) :period 200 :length 50 :offset 135) + (sp-item 2687 :fade-after (meters 40) :flags (bit6 bit7) :period 205 :length 50 :offset 185) + ) + ) + +;; failed to figure out what this is: +(defpart 2661 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 0.05)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2662 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2663 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters -0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2664 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 1.375)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2665 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 0.275)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2666 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 0.8)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2667 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2668 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -0.85)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2669 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -1.4)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2670 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.3)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2671 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.3)) + (sp-flt spt-y (meters -0.85)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2672 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.3)) + (sp-flt spt-y (meters -1.4)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2673 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2674 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -0.85)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2675 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -1.4)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2676 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.85)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2677 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.85)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2678 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.85)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2679 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2680 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2681 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2682 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.525)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2683 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.525)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2684 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.525)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2685 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2686 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2687 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/goalc/main.cpp b/goalc/main.cpp index 1e57af409a..72c67e5792 100644 --- a/goalc/main.cpp +++ b/goalc/main.cpp @@ -117,7 +117,7 @@ int main(int argc, char** argv) { lg::info("OpenGOAL Compiler {}.{}", versions::GOAL_VERSION_MAJOR, versions::GOAL_VERSION_MINOR); // Init REPL - ReplStatus status = ReplStatus::WANT_RELOAD; + ReplStatus status = ReplStatus::OK; std::function shutdown_callback = [&]() { return status == ReplStatus::WANT_EXIT; }; ReplServer repl_server(shutdown_callback, nrepl_port); bool repl_server_ok = repl_server.init_server(); diff --git a/goalc/regalloc/Allocator_v2.cpp b/goalc/regalloc/Allocator_v2.cpp index 1a6f3c62bc..70efea7ead 100644 --- a/goalc/regalloc/Allocator_v2.cpp +++ b/goalc/regalloc/Allocator_v2.cpp @@ -858,9 +858,17 @@ bool setup_stack_bonus_ops(const AllocationInput& input, int my_slot) { auto& var = cache->vars.at(var_idx); // loop over all possible instruction that might use this var - // bool successful = false; - // while (!successful) { + + // we may retry, so don't add bonus ops until the end ( + struct BonusToAdd { + StackOp::Op op; + int instr_idx = -1; + }; + std::vector bonus_ops; + loop_top: + bonus_ops.clear(); + for (int instr_idx = var.first_live(); instr_idx <= var.last_live(); instr_idx++) { // check out the instruction auto& op = input.instructions.at(instr_idx); @@ -945,19 +953,22 @@ loop_top: bonus.store = is_written; if (bonus.load || bonus.store) { - cache->stack_ops.at(instr_idx).ops.push_back(bonus); - if (bonus.load) { - cache->stats.num_spill_ops++; - } - if (bonus.store) { - cache->stats.num_spill_ops++; - } + bonus_ops.push_back(BonusToAdd{bonus, instr_idx}); } } // } cache->stats.num_spilled_vars++; + for (auto& op : bonus_ops) { + if (op.op.load) { + cache->stats.num_spill_ops++; + } + if (op.op.store) { + cache->stats.num_spill_ops++; + } + cache->stack_ops.at(op.instr_idx).ops.push_back(op.op); + } return true; } diff --git a/test/decompiler/reference/jak2/engine/anim/joint-exploder_REF.gc b/test/decompiler/reference/jak2/engine/anim/joint-exploder_REF.gc new file mode 100644 index 0000000000..7cc5a486db --- /dev/null +++ b/test/decompiler/reference/jak2/engine/anim/joint-exploder_REF.gc @@ -0,0 +1,934 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type joint-exploder-tuning +(deftype joint-exploder-tuning (structure) + ((explosion uint64 :offset-assert 0) + (duration time-frame :offset-assert 8) + (gravity float :offset-assert 16) + (rot-speed float :offset-assert 20) + (bounds-inflate float :offset-assert 24) + (max-probe-width float :offset-assert 28) + (max-probe-height float :offset-assert 32) + (max-probe-depth float :offset-assert 36) + (fountain-rand-transv-lo vector :inline :offset-assert 48) + (fountain-rand-transv-hi vector :inline :offset-assert 64) + (away-from-focal-pt vector :inline :offset 48) + (away-from-rand-transv-xz-lo float :offset 64) + (away-from-rand-transv-xz-hi float :offset 68) + (away-from-rand-transv-y-lo float :offset 72) + (away-from-rand-transv-y-hi float :offset 76) + (hit-xz-reaction float :offset 80) + (hit-y-reaction float :offset 84) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + (:methods + (new (symbol type uint) _type_ 0) + ) + ) + +;; definition for method 3 of type joint-exploder-tuning +(defmethod inspect joint-exploder-tuning ((obj joint-exploder-tuning)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'joint-exploder-tuning) + (format #t "~1Texplosion: ~D~%" (-> obj explosion)) + (format #t "~1Tduration: ~D~%" (-> obj duration)) + (format #t "~1Tgravity: ~f~%" (-> obj gravity)) + (format #t "~1Trot-speed: ~f~%" (-> obj rot-speed)) + (format #t "~1Tbounds-inflate: ~f~%" (-> obj bounds-inflate)) + (format #t "~1Tmax-probe-width: ~f~%" (-> obj max-probe-width)) + (format #t "~1Tmax-probe-height: ~f~%" (-> obj max-probe-height)) + (format #t "~1Tmax-probe-depth: ~f~%" (-> obj max-probe-depth)) + (format #t "~1Tfountain-rand-transv-lo: #~%" (-> obj fountain-rand-transv-lo)) + (format #t "~1Tfountain-rand-transv-hi: #~%" (-> obj fountain-rand-transv-hi)) + (format #t "~1Taway-from-focal-pt: #~%" (-> obj fountain-rand-transv-lo)) + (format #t "~1Taway-from-rand-transv-xz-lo: ~f~%" (-> obj fountain-rand-transv-hi x)) + (format #t "~1Taway-from-rand-transv-xz-hi: ~f~%" (-> obj fountain-rand-transv-hi y)) + (format #t "~1Taway-from-rand-transv-y-lo: ~f~%" (-> obj fountain-rand-transv-hi z)) + (format #t "~1Taway-from-rand-transv-y-hi: ~f~%" (-> obj fountain-rand-transv-hi w)) + (format #t "~1Thit-xz-reaction: ~f~%" (-> obj hit-xz-reaction)) + (format #t "~1Thit-y-reaction: ~f~%" (-> obj hit-y-reaction)) + (label cfg-4) + obj + ) + +;; definition of type joint-exploder-static-joint-params +(deftype joint-exploder-static-joint-params (structure) + ((joint-index int16 :offset-assert 0) + (parent-joint-index int16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +;; definition for method 3 of type joint-exploder-static-joint-params +(defmethod inspect joint-exploder-static-joint-params ((obj joint-exploder-static-joint-params)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'joint-exploder-static-joint-params) + (format #t "~1Tjoint-index: ~D~%" (-> obj joint-index)) + (format #t "~1Tparent-joint-index: ~D~%" (-> obj parent-joint-index)) + (label cfg-4) + obj + ) + +;; definition of type joint-exploder-static-params +(deftype joint-exploder-static-params (basic) + ((joints (array joint-exploder-static-joint-params) :offset-assert 4) + (collide-spec uint32 :offset-assert 8) + (art-level basic :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +;; definition for method 3 of type joint-exploder-static-params +(defmethod inspect joint-exploder-static-params ((obj joint-exploder-static-params)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~1Tjoints: ~A~%" (-> obj joints)) + (format #t "~1Tcollide-spec: ~D~%" (-> obj collide-spec)) + (format #t "~1Tart-level: ~A~%" (-> obj art-level)) + (label cfg-4) + obj + ) + +;; definition of type joint-exploder-joint +(deftype joint-exploder-joint (structure) + ((next int16 :offset-assert 0) + (prev int16 :offset-assert 2) + (joint-index int16 :offset-assert 4) + (mat matrix :inline :offset-assert 16) + (rmat matrix :inline :offset-assert 80) + (update-rmat matrix :inline :offset-assert 144) + (transv vector :inline :offset-assert 208) + (prev-pos vector :inline :offset-assert 224) + ) + :method-count-assert 9 + :size-assert #xf0 + :flag-assert #x9000000f0 + ) + +;; definition for method 3 of type joint-exploder-joint +(defmethod inspect joint-exploder-joint ((obj joint-exploder-joint)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'joint-exploder-joint) + (format #t "~1Tnext: ~D~%" (-> obj next)) + (format #t "~1Tprev: ~D~%" (-> obj prev)) + (format #t "~1Tjoint-index: ~D~%" (-> obj joint-index)) + (format #t "~1Tmat: #~%" (-> obj mat)) + (format #t "~1Trmat: #~%" (-> obj rmat)) + (format #t "~1Tupdate-rmat: #~%" (-> obj update-rmat)) + (format #t "~1Ttransv: #~%" (-> obj transv)) + (format #t "~1Tprev-pos: #~%" (-> obj prev-pos)) + (label cfg-4) + obj + ) + +;; definition of type joint-exploder-joints +(deftype joint-exploder-joints (basic) + ((num-joints int32 :offset-assert 4) + (joint joint-exploder-joint :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + (:methods + (new (symbol type joint-exploder-static-params) _type_ 0) + ) + ) + +;; definition for method 3 of type joint-exploder-joints +(defmethod inspect joint-exploder-joints ((obj joint-exploder-joints)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~1Tnum-joints: ~D~%" (-> obj num-joints)) + (format #t "~1Tjoint[0] @ #x~X~%" (-> obj joint)) + (label cfg-4) + obj + ) + +;; definition of type joint-exploder-list +(deftype joint-exploder-list (structure) + ((head int32 :offset-assert 0) + (pre-moved? symbol :offset-assert 4) + (bbox-valid? symbol :offset-assert 8) + (probeless? basic :offset-assert 12) + (bbox bounding-box :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +;; definition for method 3 of type joint-exploder-list +(defmethod inspect joint-exploder-list ((obj joint-exploder-list)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'joint-exploder-list) + (format #t "~1Thead: ~D~%" (-> obj head)) + (format #t "~1Tpre-moved?: ~A~%" (-> obj pre-moved?)) + (format #t "~1Tbbox-valid?: ~A~%" (-> obj bbox-valid?)) + (format #t "~1Tprobeless?: ~A~%" (-> obj probeless?)) + (format #t "~1Tbbox: #~%" (-> obj bbox)) + (label cfg-4) + obj + ) + +;; definition of type joint-exploder +(deftype joint-exploder (process-drawable) + ((die-if-below-y float :offset-assert 200) + (die-if-beyond-xz-dist-sqrd float :offset-assert 204) + (joints joint-exploder-joints :offset-assert 208) + (static-params joint-exploder-static-params :offset-assert 212) + (anim art-joint-anim :offset-assert 216) + (scale-vector vector :inline :offset-assert 224) + (tuning joint-exploder-tuning :inline :offset-assert 240) + (lists joint-exploder-list 5 :inline :offset-assert 336) + ) + :heap-base #x1c0 + :method-count-assert 30 + :size-assert #x240 + :flag-assert #x1e01c00240 + (:methods + (add-joint-to-list (_type_ joint-exploder-list int) int 20) + (update-bbox-for-joint (_type_ joint-exploder-list joint-exploder-joint) none 21) + (do-collision-response (_type_ joint-exploder-list) none 22) + (init-joint-list (_type_) none 23) + (remove-from-list-and-reset (_type_ joint-exploder-list int) int 24) + (final-adjust (_type_ joint-exploder-list int) int 25) + (integrate-and-kill (_type_ joint-exploder-list) none 26) + (remove-joint-from-list (_type_ joint-exploder-list int) int 27) + (adjust-bbox-for-limits-along-axis (_type_ joint-exploder-list int) joint-exploder-list 28) + (adjust-bbox-for-limits (_type_ joint-exploder-list) none 29) + ) + ) + +;; definition for method 3 of type joint-exploder +(defmethod inspect joint-exploder ((obj joint-exploder)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tdie-if-below-y: ~f~%" (-> obj die-if-below-y)) + (format #t "~2Tdie-if-beyond-xz-dist-sqrd: ~f~%" (-> obj die-if-beyond-xz-dist-sqrd)) + (format #t "~2Tjoints: ~A~%" (-> obj joints)) + (format #t "~2Tstatic-params: ~A~%" (-> obj static-params)) + (format #t "~2Tanim: ~A~%" (-> obj anim)) + (format #t "~2Tscale-vector: #~%" (-> obj scale-vector)) + (format #t "~2Ttuning: #~%" (-> obj tuning)) + (format #t "~2Tlists[5] @ #x~X~%" (-> obj lists)) + (label cfg-4) + obj + ) + +;; definition for method 5 of type joint-exploder-joints +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of joint-exploder-joints ((obj joint-exploder-joints)) + (the-as int (+ (-> obj type size) (* 240 (-> obj num-joints)))) + ) + +;; definition for method 0 of type joint-exploder-joints +(defmethod new joint-exploder-joints ((allocation symbol) (type-to-make type) (arg0 joint-exploder-static-params)) + (let* ((gp-0 (-> arg0 joints length)) + (v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 240 gp-0))))) + ) + (set! (-> v0-0 num-joints) gp-0) + v0-0 + ) + ) + +;; definition for function joint-exploder-joint-callback +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defun joint-exploder-joint-callback ((arg0 draw-control) (arg1 cspace-array) (arg2 joint-control)) + (let ((s4-0 (-> arg0 process))) + (let ((s3-0 (-> (the-as joint-exploder s4-0) joints))) + (countdown (s2-0 (-> s3-0 num-joints)) + (let* ((v1-3 (-> s3-0 joint s2-0)) + (a0-5 (-> arg1 data (-> v1-3 joint-index) bone transform)) + ) + (matrix*! a0-5 (-> v1-3 rmat) (-> v1-3 mat)) + ) + ) + ) + (let ((s4-1 (&-> s4-0 stack 96))) + (countdown (s3-1 (-> arg1 length)) + (let ((a2-2 (-> arg1 data s3-1 bone transform))) + (scale-matrix! a2-2 (the-as vector s4-1) a2-2) + ) + ) + ) + ) + (let ((s4-2 (new-stack-matrix0)) + (f30-0 (-> arg0 bounds w)) + ) + (matrix-4x4-inverse! s4-2 (-> arg1 data 0 bone transform)) + (set! (-> arg0 bounds w) 1.0) + (vector-matrix*! (-> arg0 bounds) (-> arg0 bounds) s4-2) + (set! (-> arg0 bounds w) f30-0) + ) + 0 + (none) + ) + +;; definition for method 24 of type joint-exploder +;; INFO: Used lq/sq +(defmethod remove-from-list-and-reset joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (let ((v0-0 (remove-joint-from-list obj arg0 arg1))) + (let* ((v1-1 (-> obj joints)) + (v1-2 (-> v1-1 joint arg1)) + ) + (set! (-> v1-2 mat quad 0) (the-as uint128 0)) + (set! (-> v1-2 mat vector 1 quad) (the-as uint128 0)) + (set! (-> v1-2 mat vector 2 quad) (the-as uint128 0)) + (set! (-> v1-2 mat trans quad) (-> obj root trans quad)) + ) + v0-0 + ) + ) + +;; definition for method 27 of type joint-exploder +(defmethod remove-joint-from-list joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (let* ((v1-0 (-> obj joints)) + (a2-1 (-> v1-0 joint arg1)) + (a0-4 (-> a2-1 prev)) + (v0-0 (-> a2-1 next)) + ) + (cond + ((>= a0-4 0) + (set! (-> v1-0 joint a0-4 next) v0-0) + (if (>= v0-0 0) + (set! (-> v1-0 joint v0-0 prev) a0-4) + ) + ) + (else + (set! (-> arg0 head) v0-0) + (cond + ((>= v0-0 0) + (let ((v1-2 (-> v1-0 joint v0-0))) + (set! (-> v1-2 prev) -1) + ) + ) + (else + (set! (-> arg0 bbox-valid?) #f) + ) + ) + ) + ) + v0-0 + ) + ) + +;; definition for method 20 of type joint-exploder +(defmethod add-joint-to-list joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (let* ((v1-0 (-> obj joints)) + (a3-0 (-> v1-0 joint arg1)) + (a0-4 (-> arg0 head)) + ) + (set! (-> arg0 head) arg1) + (set! (-> a3-0 prev) -1) + (set! (-> a3-0 next) a0-4) + (when (>= a0-4 0) + (set! (-> v1-0 joint a0-4 prev) arg1) + arg1 + ) + ) + ) + +;; definition for method 21 of type joint-exploder +;; INFO: Used lq/sq +(defmethod update-bbox-for-joint joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 joint-exploder-joint)) + (let ((a1-1 (-> arg1 mat trans))) + (cond + ((-> arg0 bbox-valid?) + (add-point! (-> arg0 bbox) a1-1) + ) + (else + (set! (-> arg0 bbox-valid?) #t) + (set! (-> arg0 bbox min quad) (-> a1-1 quad)) + (set! (-> arg0 bbox max quad) (-> a1-1 quad)) + ) + ) + ) + (add-point! (-> arg0 bbox) (-> arg1 prev-pos)) + (none) + ) + +;; definition for method 28 of type joint-exploder +;; INFO: Used lq/sq +(defmethod adjust-bbox-for-limits-along-axis joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (local-vars + (sv-16 int) + (sv-32 int) + (sv-48 joint-exploder-joint) + (sv-64 int) + (sv-80 joint-exploder-joint) + (sv-96 int) + (sv-112 joint-exploder-joint) + ) + (let ((s5-0 (the-as joint-exploder-list #f))) + (let ((v1-0 1)) + (until (= v1-0 5) + (let ((a0-4 (-> obj lists v1-0))) + (when (< (-> a0-4 head) 0) + (set! s5-0 a0-4) + (goto cfg-6) + ) + ) + (+! v1-0 1) + ) + ) + (label cfg-6) + (cond + (s5-0 + (set! (-> s5-0 pre-moved?) #t) + (set! (-> s5-0 bbox-valid?) #f) + ) + (else + (set! s5-0 (the-as joint-exploder-list (-> obj lists))) + ) + ) + (set! (-> arg0 bbox-valid?) #f) + (let ((s2-0 (-> obj joints))) + (set! sv-32 (-> arg0 head)) + (let ((s1-0 0) + (s0-0 0) + ) + (let ((v1-7 arg1)) + (cond + ((zero? v1-7) + (let ((f30-0 (* 0.5 (+ (-> arg0 bbox min x) (-> arg0 bbox max x))))) + (while (>= sv-32 0) + (set! sv-48 (-> s2-0 joint sv-32)) + (cond + ((>= (-> sv-48 mat trans x) f30-0) + (set! sv-16 (remove-joint-from-list obj arg0 sv-32)) + (add-joint-to-list obj s5-0 sv-32) + (set! sv-32 sv-16) + (update-bbox-for-joint obj s5-0 sv-48) + (+! s0-0 1) + ) + (else + (update-bbox-for-joint obj arg0 sv-48) + (set! sv-32 (-> sv-48 next)) + (+! s1-0 1) + ) + ) + ) + ) + ) + ((= v1-7 1) + (let ((f30-1 (* 0.5 (+ (-> arg0 bbox min y) (-> arg0 bbox max y))))) + (while (>= sv-32 0) + (set! sv-80 (-> s2-0 joint sv-32)) + (cond + ((>= (-> sv-80 mat trans y) f30-1) + (set! sv-64 (remove-joint-from-list obj arg0 sv-32)) + (add-joint-to-list obj s5-0 sv-32) + (set! sv-32 sv-64) + (update-bbox-for-joint obj s5-0 sv-80) + (+! s0-0 1) + ) + (else + (update-bbox-for-joint obj arg0 sv-80) + (set! sv-32 (-> sv-80 next)) + (+! s1-0 1) + ) + ) + ) + ) + ) + ((= v1-7 2) + (let ((f30-2 (* 0.5 (+ (-> arg0 bbox min z) (-> arg0 bbox max z))))) + (while (>= sv-32 0) + (set! sv-112 (-> s2-0 joint sv-32)) + (cond + ((>= (-> sv-112 mat trans z) f30-2) + (set! sv-96 (remove-joint-from-list obj arg0 sv-32)) + (add-joint-to-list obj s5-0 sv-32) + (set! sv-32 sv-96) + (update-bbox-for-joint obj s5-0 sv-112) + (+! s0-0 1) + ) + (else + (update-bbox-for-joint obj arg0 sv-112) + (set! sv-32 (-> sv-112 next)) + (+! s1-0 1) + ) + ) + ) + ) + ) + ) + ) + (cond + ((zero? s0-0) + (final-adjust obj arg0 arg1) + ) + ((zero? s1-0) + (if (not (-> s5-0 probeless?)) + (final-adjust obj s5-0 arg1) + ) + ) + ) + ) + ) + s5-0 + ) + ) + +;; definition for method 25 of type joint-exploder +;; INFO: Used lq/sq +;; WARN: Return type mismatch symbol vs int. +(defmethod final-adjust joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list) (arg1 int)) + (local-vars (sv-48 int) (sv-64 (inline-array joint-exploder-list)) (sv-80 joint-exploder-joint)) + (set! (-> arg0 bbox-valid?) #f) + (let ((s3-0 (-> obj joints)) + (s2-0 (-> arg0 head)) + ) + (while (>= s2-0 0) + (set! sv-80 (-> s3-0 joint s2-0)) + (let ((s1-0 (new 'stack-no-clear 'matrix)) + (s0-0 (-> arg0 bbox-valid?)) + ) + (set! (-> s1-0 vector 0 quad) (-> arg0 bbox min quad)) + (set! (-> s1-0 vector 1 quad) (-> arg0 bbox max quad)) + (update-bbox-for-joint obj arg0 sv-80) + (let* ((v1-7 arg1) + (v1-8 (cond + ((zero? v1-7) + (< (-> obj tuning max-probe-width) (- (-> arg0 bbox max x) (-> arg0 bbox min x))) + ) + ((= v1-7 1) + (< (-> obj tuning max-probe-height) (- (-> arg0 bbox max y) (-> arg0 bbox min y))) + ) + ((= v1-7 2) + (< (-> obj tuning max-probe-depth) (- (-> arg0 bbox max z) (-> arg0 bbox min z))) + ) + ) + ) + ) + (when v1-8 + (set! sv-48 (remove-joint-from-list obj arg0 s2-0)) + (set! sv-64 (-> obj lists)) + (add-joint-to-list obj (the-as joint-exploder-list sv-64) s2-0) + (set! s2-0 sv-48) + (update-bbox-for-joint obj (the-as joint-exploder-list sv-64) sv-80) + (set! (-> arg0 bbox-valid?) s0-0) + (set! (-> arg0 bbox min quad) (-> s1-0 vector 0 quad)) + (set! (-> arg0 bbox max quad) (-> s1-0 vector 1 quad)) + ) + ) + ) + ) + ) + (the-as int #f) + ) + +;; definition for method 29 of type joint-exploder +;; WARN: Return type mismatch int vs none. +(defmethod adjust-bbox-for-limits joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) + (when (and (-> arg0 bbox-valid?) (>= (-> arg0 head) 0) (not (-> arg0 probeless?))) + (let ((a2-0 -1)) + (cond + ((< (-> obj tuning max-probe-width) (- (-> arg0 bbox max x) (-> arg0 bbox min x))) + (set! a2-0 0) + ) + ((< (-> obj tuning max-probe-height) (- (-> arg0 bbox max y) (-> arg0 bbox min y))) + (set! a2-0 1) + ) + ((< (-> obj tuning max-probe-depth) (- (-> arg0 bbox max z) (-> arg0 bbox min z))) + (set! a2-0 2) + ) + ) + (when (>= a2-0 0) + (let ((a1-2 (adjust-bbox-for-limits-along-axis obj arg0 a2-0))) + (if (not (-> a1-2 probeless?)) + (adjust-bbox-for-limits obj a1-2) + ) + ) + (adjust-bbox-for-limits obj arg0) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 26 of type joint-exploder +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod integrate-and-kill joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) + (with-pp + (set! (-> arg0 bbox-valid?) #f) + (set! (-> arg0 pre-moved?) #t) + (let ((s4-0 (-> obj joints)) + (f30-0 (* (-> obj tuning gravity) (-> pp clock seconds-per-frame))) + (s3-0 (-> arg0 head)) + ) + (while (>= s3-0 0) + (let* ((s2-0 (-> s4-0 joint s3-0)) + (s1-0 (-> s2-0 mat trans)) + ) + (set! (-> s2-0 prev-pos quad) (-> s1-0 quad)) + (+! (-> s2-0 transv y) f30-0) + (vector-v+! s1-0 s1-0 (-> s2-0 transv)) + (matrix*! (-> s2-0 rmat) (-> s2-0 rmat) (-> s2-0 update-rmat)) + (cond + ((or (< (-> s1-0 y) (-> obj die-if-below-y)) + (< (-> obj die-if-beyond-xz-dist-sqrd) (vector-vector-xz-distance s1-0 (-> obj root trans))) + ) + (set! s3-0 (remove-from-list-and-reset obj arg0 s3-0)) + ) + (else + (update-bbox-for-joint obj arg0 s2-0) + (set! s3-0 (-> s2-0 next)) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +;; definition for method 22 of type joint-exploder +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod do-collision-response joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) + (let ((s5-0 (new 'stack-no-clear 'collide-query))) + (set! (-> s5-0 collide-with) (the-as collide-spec (-> obj static-params collide-spec))) + (set! (-> s5-0 ignore-process0) obj) + (set! (-> s5-0 ignore-process1) #f) + (set! (-> s5-0 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1)) + (set! (-> s5-0 action-mask) (collide-action solid)) + (mem-copy! (the-as pointer (-> s5-0 bbox)) (the-as pointer (-> arg0 bbox)) 32) + (fill-using-bounding-box *collide-cache* s5-0) + ) + (let ((s5-1 (-> obj joints)) + (v1-6 (-> arg0 head)) + ) + (while (>= v1-6 0) + (let ((s4-1 (-> s5-1 joint v1-6))) + (let ((s3-0 (-> s4-1 mat trans)) + (s2-0 (new 'stack-no-clear 'collide-query)) + ) + (vector-! (-> s2-0 move-dist) s3-0 (-> s4-1 prev-pos)) + (set! (-> s2-0 start-pos quad) (-> s4-1 prev-pos quad)) + (let ((v1-11 s2-0)) + (set! (-> v1-11 radius) 40.96) + (set! (-> v1-11 collide-with) (the-as collide-spec (-> obj static-params collide-spec))) + (set! (-> v1-11 ignore-process0) #f) + (set! (-> v1-11 ignore-process1) #f) + (set! (-> v1-11 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1)) + (set! (-> v1-11 action-mask) (collide-action solid)) + ) + (when (>= (probe-using-line-sphere *collide-cache* s2-0) 0.0) + (set! (-> s3-0 quad) (-> s2-0 best-other-tri intersect quad)) + (let* ((v1-16 (-> s4-1 transv)) + (f28-0 (sqrtf (+ (* (-> v1-16 x) (-> v1-16 x)) (* (-> v1-16 z) (-> v1-16 z))))) + ) + (vector-reflect! (-> s4-1 transv) (-> s4-1 transv) (-> s2-0 best-other-tri normal)) + (let ((f30-0 (-> s4-1 transv y))) + (set! (-> s4-1 transv y) 0.0) + (vector-normalize! (-> s4-1 transv) (* f28-0 (-> obj tuning hit-xz-reaction))) + (set! (-> s4-1 transv y) (* f30-0 (-> obj tuning hit-y-reaction))) + ) + ) + (+! (-> s3-0 y) (* 40.96 (-> s2-0 best-other-tri normal y))) + (set! (-> s3-0 w) 1.0) + (matrix-lerp! (-> s4-1 update-rmat) (-> s4-1 update-rmat) *identity-matrix* 0.5) + ) + ) + (set! v1-6 (-> s4-1 next)) + ) + ) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(defstate joint-exploder-shatter (joint-exploder) + :enter (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :trans (behavior () + (let* ((f0-1 (the float (- (-> self clock frame-counter) (-> self state-time)))) + (f1-1 (- 1.0 (/ f0-1 (the float (-> self tuning duration))))) + (f0-3 (- 1.0 (/ f0-1 (* 0.75 (the float (-> self tuning duration)))))) + ) + (if (< f0-3 0.0) + (set! f0-3 0.0) + ) + (set-vector! (-> self scale-vector) f1-1 f0-3 f1-1 1.0) + ) + (dotimes (v1-11 5) + (set! (-> self lists v1-11 pre-moved?) #f) + ) + (dotimes (gp-0 5) + (let ((s5-0 (-> self lists gp-0))) + (when (>= (-> s5-0 head) 0) + (when (not (-> s5-0 pre-moved?)) + (integrate-and-kill self s5-0) + (if (nonzero? gp-0) + (adjust-bbox-for-limits self s5-0) + ) + ) + ) + ) + ) + (let ((gp-1 (new 'stack-no-clear 'bounding-box))) + (let ((v1-29 (-> self root trans))) + (set! (-> gp-1 min quad) (-> v1-29 quad)) + (set! (-> gp-1 max quad) (-> v1-29 quad)) + ) + (dotimes (s5-1 5) + (let ((s4-0 (-> self lists s5-1))) + (if (-> s4-0 bbox-valid?) + (add-box! gp-1 (-> s4-0 bbox)) + ) + (if (nonzero? s5-1) + (do-collision-response self s4-0) + ) + ) + ) + (let ((s5-2 (-> self draw bounds))) + (vector-average! s5-2 (-> gp-1 min) (-> gp-1 max)) + (set! (-> s5-2 w) (+ (vector-vector-distance s5-2 (-> gp-1 max)) (-> self tuning bounds-inflate))) + ) + ) + 0 + (none) + ) + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (until (>= (- (-> self clock frame-counter) (-> self state-time)) (-> self tuning duration)) + (suspend) + (ja :num! (loop!)) + ) + (none) + ) + :post (the-as (function none :behavior joint-exploder) ja-post) + ) + +;; definition for method 23 of type joint-exploder +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod init-joint-list joint-exploder ((obj joint-exploder)) + (let ((gp-0 (-> obj joints))) + (dotimes (s4-0 (-> gp-0 num-joints)) + (let ((v1-2 (-> obj static-params joints s4-0)) + (s3-0 (-> gp-0 joint s4-0)) + ) + (let ((a0-6 (-> v1-2 parent-joint-index))) + (set! (-> s3-0 prev) (+ s4-0 -1)) + (set! (-> s3-0 next) (+ s4-0 1)) + (set! (-> s3-0 joint-index) (-> v1-2 joint-index)) + (cond + ((>= a0-6 0) + (if (zero? a0-6) + (set! a0-6 (-> v1-2 joint-index)) + ) + (let* ((a3-0 (-> (the-as process-drawable (-> obj parent 0)) node-list data a0-6 bone transform)) + (a2-0 (-> s3-0 mat)) + (v1-9 (-> a3-0 quad 0)) + (a0-8 (-> a3-0 quad 1)) + (a1-4 (-> a3-0 quad 2)) + (a3-1 (-> a3-0 trans quad)) + ) + (set! (-> a2-0 quad 0) v1-9) + (set! (-> a2-0 quad 1) a0-8) + (set! (-> a2-0 quad 2) a1-4) + (set! (-> a2-0 trans quad) a3-1) + ) + (matrix-identity! (-> s3-0 rmat)) + ) + (else + (let* ((a3-2 (-> obj node-list data (-> v1-2 joint-index) bone transform)) + (a2-1 (-> s3-0 mat)) + (v1-15 (-> a3-2 quad 0)) + (a0-11 (-> a3-2 quad 1)) + (a1-5 (-> a3-2 quad 2)) + (a3-3 (-> a3-2 trans quad)) + ) + (set! (-> a2-1 quad 0) v1-15) + (set! (-> a2-1 quad 1) a0-11) + (set! (-> a2-1 quad 2) a1-5) + (set! (-> a2-1 trans quad) a3-3) + ) + (matrix-identity! (-> s3-0 rmat)) + ) + ) + ) + (case (-> obj tuning explosion) + ((1) + (vector-! (-> s3-0 transv) (-> s3-0 mat trans) (-> obj tuning fountain-rand-transv-lo)) + (vector-normalize! + (-> s3-0 transv) + (rand-vu-float-range (-> obj tuning fountain-rand-transv-hi x) (-> obj tuning fountain-rand-transv-hi y)) + ) + (+! (-> s3-0 transv y) + (rand-vu-float-range (-> obj tuning fountain-rand-transv-hi z) (-> obj tuning fountain-rand-transv-hi w)) + ) + (set! (-> s3-0 transv w) 1.0) + ) + (else + (let ((s0-0 (-> obj tuning fountain-rand-transv-lo)) + (s1-1 (-> obj tuning fountain-rand-transv-hi)) + ) + (set-vector! + (-> s3-0 transv) + (rand-vu-float-range (-> s0-0 x) (-> s1-1 x)) + (rand-vu-float-range (-> s0-0 y) (-> s1-1 y)) + (rand-vu-float-range (-> s0-0 z) (-> s1-1 z)) + 1.0 + ) + ) + ) + ) + (let* ((v1-21 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> s3-0 transv) 1.0)) + (s2-4 (vector-cross! (new 'stack-no-clear 'vector) v1-21 *up-vector*)) + (s1-2 (new 'stack-no-clear 'quaternion)) + ) + (vector-normalize! s2-4 1.0) + (quaternion-vector-angle! s1-2 s2-4 (* 182.04445 (-> obj tuning rot-speed))) + (quaternion->matrix (-> s3-0 update-rmat) s1-2) + ) + ) + ) + (when (nonzero? (-> gp-0 num-joints)) + (let ((v1-32 (-> gp-0 joint (+ (-> gp-0 num-joints) -1)))) + (set! (-> v1-32 next) -1) + ) + (let ((v1-33 (-> obj lists 1))) + (set! (-> v1-33 head) 0) + (let ((s5-1 (-> v1-33 bbox))) + (let ((v1-34 (-> gp-0 joint 0 mat trans))) + (set! (-> s5-1 min quad) (-> v1-34 quad)) + (set! (-> s5-1 max quad) (-> v1-34 quad)) + ) + (dotimes (s4-1 (-> gp-0 num-joints)) + (add-point! s5-1 (the-as vector (+ (the-as uint (-> gp-0 joint 0 mat trans)) (* 240 s4-1)))) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 7 of type joint-exploder +;; WARN: Return type mismatch process-drawable vs joint-exploder. +(defmethod relocate joint-exploder ((obj joint-exploder) (arg0 int)) + (if (nonzero? (-> obj joints)) + (&+! (-> obj joints) arg0) + ) + (the-as joint-exploder ((method-of-type process-drawable relocate) obj arg0)) + ) + +;; definition for function joint-exploder-init-by-other +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. +(defbehavior joint-exploder-init-by-other joint-exploder ((arg0 skeleton-group) (arg1 int) (arg2 joint-exploder-tuning) (arg3 joint-exploder-static-params)) + (set! (-> self static-params) arg3) + (set! (-> self die-if-beyond-xz-dist-sqrd) 10485760000.0) + (mem-copy! (the-as pointer (-> self tuning)) (the-as pointer arg2) 88) + (set! (-> self joints) (new 'process 'joint-exploder-joints arg3)) + (dotimes (v1-2 5) + (let ((a0-6 (-> self lists v1-2))) + (set! (-> a0-6 head) -1) + (set! (-> a0-6 bbox-valid?) #f) + (set! (-> a0-6 pre-moved?) #f) + (set! (-> a0-6 probeless?) #f) + ) + ) + (let ((v1-5 (-> self lists))) + (set! (-> v1-5 0 probeless?) (the-as basic #t)) + ) + (set! (-> self root) (new 'process 'trsqv)) + (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) + (quaternion-copy! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat)) + (set! (-> self root scale quad) (-> (the-as process-drawable (-> self parent 0)) root scale quad)) + (when (-> arg3 art-level) + (let ((a1-6 (entity-actor-from-level-name (the-as level (-> arg3 art-level))))) + (if a1-6 + (process-entity-set! self a1-6) + ) + ) + ) + (initialize-skeleton self arg0 (the-as pair 0)) + (logior! (-> self skel status) (joint-control-status sync-math)) + (set! (-> self anim) (the-as art-joint-anim (-> self draw art-group data arg1))) + (ja-channel-set! 1) + (ja :group! (-> self anim) :num! min) + (ja-post) + (init-joint-list self) + (set! (-> self die-if-below-y) (+ -102400.0 (-> self root trans y))) + (set! (-> self skel postbind-function) joint-exploder-joint-callback) + (go joint-exploder-shatter) + (none) + ) + +;; definition for method 0 of type joint-exploder-tuning +;; WARN: Return type mismatch structure vs joint-exploder-tuning. +(defmethod new joint-exploder-tuning ((allocation symbol) (type-to-make type) (arg0 uint)) + (let ((t9-0 (method-of-type structure new)) + (v1-1 type-to-make) + ) + (-> type-to-make size) + (let ((v0-0 (the-as joint-exploder-tuning (t9-0 allocation v1-1)))) + (set! (-> v0-0 explosion) arg0) + (set! (-> v0-0 duration) (seconds 2)) + (set! (-> v0-0 gravity) -286720.0) + (set! (-> v0-0 rot-speed) 8.4) + (set! (-> v0-0 bounds-inflate) 16384.0) + (set! (-> v0-0 max-probe-width) 20480.0) + (set! (-> v0-0 max-probe-height) 24576.0) + (set! (-> v0-0 max-probe-depth) 20480.0) + (set! (-> v0-0 hit-xz-reaction) 0.75) + (set! (-> v0-0 hit-y-reaction) 0.7) + (cond + ((zero? arg0) + (set-vector! (-> v0-0 fountain-rand-transv-lo) -81920.0 20480.0 -81920.0 1.0) + (set-vector! (-> v0-0 fountain-rand-transv-hi) 81920.0 61440.0 81920.0 1.0) + ) + ((= arg0 1) + (vector-reset! (-> v0-0 fountain-rand-transv-lo)) + (set! (-> v0-0 fountain-rand-transv-hi x) 49152.0) + (set! (-> v0-0 fountain-rand-transv-hi y) 163840.0) + (set! (-> v0-0 fountain-rand-transv-hi z) 20480.0) + (set! (-> v0-0 fountain-rand-transv-hi w) 61440.0) + ) + ) + (the-as joint-exploder-tuning v0-0) + ) + ) + ) diff --git a/test/decompiler/reference/jak2/engine/collide/collide-mesh_REF.gc b/test/decompiler/reference/jak2/engine/collide/collide-mesh_REF.gc index 9b7204067c..57d8b908bf 100644 --- a/test/decompiler/reference/jak2/engine/collide/collide-mesh_REF.gc +++ b/test/decompiler/reference/jak2/engine/collide/collide-mesh_REF.gc @@ -133,138 +133,7 @@ ) ;; definition for method 11 of type collide-mesh -;; INFO: Used lq/sq -(defmethod should-push-away-test collide-mesh ((obj collide-mesh) (arg0 collide-mesh-cache-tri) (arg1 collide-tri-result) (arg2 vector) (arg3 float)) - (local-vars - (v1-0 uint128) - (a0-1 uint128) - (a1-2 uint128) - (a1-3 uint128) - (a1-4 uint128) - (a1-7 pat-surface) - (a2-1 uint128) - (a2-2 uint128) - (a2-4 float) - (a2-5 float) - (a2-7 float) - (f0-0 float) - (f2-1 float) - (f3-0 float) - (f4-0 float) - ) - (rlet ((Q :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf10 :class vf) - (vf11 :class vf) - (vf12 :class vf) - (vf13 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - (vf5 :class vf) - (vf6 :class vf) - (vf7 :class vf) - (vf8 :class vf) - (vf9 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 (new 'stack-no-clear 'spat-work))) - (nop!) - (let ((s3-0 arg0)) - (.lvf vf3 (&-> arg2 quad)) - (nop!) - (let ((s2-0 (-> obj num-tris))) - (.sub.w.vf vf12 vf3 vf3) - (nop!) - (.add.w.vf vf13 vf3 vf3) - (nop!) - (.ftoi.vf vf12 vf12) - (nop!) - (.ftoi.vf vf13 vf13) - (nop!) - (.mov v1-0 vf12) - (.svf (&-> s4-0 sphere-bbox4w min quad) vf12) - (.mov a0-1 vf13) - (.svf (&-> s4-0 sphere-bbox4w max quad) vf13) - (until (>= a2-7 f4-0) - (until (> f0-0 f2-1) - (until (>= f3-0 f2-1) - (label cfg-1) - (b! (zero? s2-0) cfg-10 :delay (set! a2-1 (-> s3-0 bbox4w min quad))) - (+! s2-0 -1) - (let ((a1-1 (-> s3-0 bbox4w max quad))) - (.pcgtw a2-2 a2-1 a0-1) - (nop!) - (.pcgtw a1-2 v1-0 a1-1) - ) - (nop!) - (.por a1-3 a2-2 a1-2) - (nop!) - (.ppach a1-4 (the-as uint128 0) a1-3) - (nop!) - (let ((a1-5 (shl (the-as int a1-4) 16))) - (nop!) - (b! (nonzero? a1-5) cfg-1 :likely-delay (set! s3-0 (+ s3-0 96))) - ) - (closest-pt-in-triangle (-> s4-0 intersect) arg2 (the-as matrix (-> s3-0 vertex)) (-> s3-0 normal)) - (.lvf vf2 (&-> s4-0 intersect quad)) - (.lvf vf3 (&-> arg2 quad)) - (.lvf vf1 (&-> s3-0 normal quad)) - (set! v1-0 (-> s4-0 sphere-bbox4w min quad)) - (set! a0-1 (-> s4-0 sphere-bbox4w max quad)) - (.sub.vf vf4 vf3 vf2) - (set! a1-7 (-> s3-0 pat)) - (.mul.vf vf5 vf4 vf1) - (.lvf vf7 (&-> s3-0 vertex 0 quad)) - (.mul.vf vf6 vf4 vf4) - (.lvf vf8 (&-> s3-0 vertex 1 quad)) - (.mov.vf vf1 vf0 :mask #b1000) - (.lvf vf9 (&-> s3-0 vertex 2 quad)) - (.add.x.vf vf5 vf5 vf5 :mask #b10) - (&+! s3-0 96) - (.add.y.vf vf6 vf6 vf6 :mask #b1) - (set! f3-0 arg3) - (.add.z.vf vf5 vf5 vf5 :mask #b10) - (.add.z.vf vf6 vf6 vf6 :mask #b1) - (.sqrt.vf Q vf6 :ftf #b0) - (.mov a2-4 vf5) - (set! f0-0 0.0) - (.wait.vf) - (let ((f1-0 (-> arg2 w))) - (.add.vf vf6 vf0 Q :mask #b1) - (.mov.vf vf10 vf6) - (b! (< (the-as int a2-4) 0) cfg-6 :likely-delay (.sub.vf vf10 vf0 vf10)) - (label cfg-6) - (.mov a2-5 vf10) - (set! f2-1 (- a2-5 f1-0)) - ) - (.div.vf Q vf0 vf6 :fsf #b11 :ftf #b0) - ) - ) - (.wait.vf) - (nop!) - (.mul.vf vf11 vf4 Q) - (set! f4-0 0.707) - (.mul.vf vf5 vf11 vf1) - (.add.y.vf vf5 vf5 vf5 :mask #b1) - (.add.z.vf vf5 vf5 vf5 :mask #b1) - (.mov a2-7 vf5) - ) - ) - ) - ) - (set! arg3 f2-1) - (.svf (&-> arg1 vertex 0 quad) vf7) - (.svf (&-> arg1 vertex 1 quad) vf8) - (.svf (&-> arg1 vertex 2 quad) vf9) - (.svf (&-> arg1 intersect quad) vf2) - (.svf (&-> arg1 normal quad) vf1) - (b! #t cfg-1 :delay (set! (-> arg1 pat) a1-7)) - (label cfg-10) - arg3 - ) - ) +;; ERROR: function was not converted to expressions. Cannot decompile. ;; definition for method 14 of type collide-mesh ;; ERROR: function was not converted to expressions. Cannot decompile. diff --git a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc index 4aed4e4cfe..9c3527c3f1 100644 --- a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc @@ -234,7 +234,7 @@ (new (symbol type collide-shape uint int) _type_ 0) (debug-draw (_type_) none 9) (add-fg-prim-using-box (_type_ collide-cache) none 10) - (add-fg-prim-using-line-sphere () none 11) + (add-fg-prim-using-line-sphere (_type_ collide-cache object) none 11) (overlaps-others-test (_type_ overlaps-others-params collide-shape-prim) symbol 12) (overlaps-others-group (_type_ overlaps-others-params collide-shape-prim-group) symbol 13) (collide-shape-prim-method-14 () none 14) diff --git a/test/decompiler/reference/jak2/engine/data/art-h_REF.gc b/test/decompiler/reference/jak2/engine/data/art-h_REF.gc index cabe0911f1..8c2ca8b70e 100644 --- a/test/decompiler/reference/jak2/engine/data/art-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/data/art-h_REF.gc @@ -563,46 +563,46 @@ ;; definition of type draw-control (deftype draw-control (basic) - ((process process-drawable :offset-assert 4) - (status draw-control-status :offset-assert 8) - (data-format draw-control-data-format :offset-assert 10) - (global-effect draw-control-global-effect :offset-assert 11) - (art-group art-group :offset-assert 12) - (jgeo art-joint-geo :offset-assert 16) - (mgeo merc-ctrl :offset-assert 20) - (dma-add-func function :offset-assert 24) - (skeleton skeleton :offset-assert 28) - (lod-set lod-set :inline :offset-assert 32) - (max-lod int8 :offset 80) - (force-lod int8 :offset-assert 81) - (cur-lod int8 :offset-assert 82) - (desired-lod int8 :offset-assert 83) - (ripple ripple-control :offset-assert 84) - (longest-edge meters :offset-assert 88) - (longest-edge? uint32 :offset 88) - (light-index uint8 :offset-assert 92) - (shadow-mask uint8 :offset-assert 93) - (level-index uint8 :offset-assert 94) - (death-draw-overlap uint8 :offset-assert 95) - (death-timer uint8 :offset-assert 96) - (death-timer-org uint8 :offset-assert 97) - (death-vertex-skip uint16 :offset-assert 98) - (death-effect uint32 :offset-assert 100) - (shadow shadow-geo :offset-assert 104) - (shadow-ctrl shadow-control :offset-assert 108) - (distance meters :offset-assert 112) - (origin vector :inline :offset-assert 128) - (bounds vector :inline :offset-assert 144) - (radius meters :offset 156) - (color-mult rgbaf :inline :offset-assert 160) - (color-emissive rgbaf :inline :offset-assert 176) - (effect-mask uint64 :offset-assert 192) - (seg-mask uint64 :offset-assert 200) - (origin-joint-index uint8 :offset-assert 208) - (shadow-joint-index uint8 :offset-assert 209) - (force-fade uint8 :offset-assert 210) - (default-texture-page uint8 :offset-assert 211) - (shadow-values uint32 :offset-assert 212) + ((process process-drawable :offset-assert 4) + (status draw-control-status :offset-assert 8) + (data-format draw-control-data-format :offset-assert 10) + (global-effect draw-control-global-effect :offset-assert 11) + (art-group art-group :offset-assert 12) + (jgeo art-joint-geo :offset-assert 16) + (mgeo merc-ctrl :offset-assert 20) + (dma-add-func (function process-drawable draw-control symbol object none) :offset-assert 24) + (skeleton skeleton :offset-assert 28) + (lod-set lod-set :inline :offset-assert 32) + (max-lod int8 :offset 80) + (force-lod int8 :offset-assert 81) + (cur-lod int8 :offset-assert 82) + (desired-lod int8 :offset-assert 83) + (ripple ripple-control :offset-assert 84) + (longest-edge meters :offset-assert 88) + (longest-edge? uint32 :offset 88) + (light-index uint8 :offset-assert 92) + (shadow-mask uint8 :offset-assert 93) + (level-index uint8 :offset-assert 94) + (death-draw-overlap uint8 :offset-assert 95) + (death-timer uint8 :offset-assert 96) + (death-timer-org uint8 :offset-assert 97) + (death-vertex-skip uint16 :offset-assert 98) + (death-effect uint32 :offset-assert 100) + (shadow shadow-geo :offset-assert 104) + (shadow-ctrl shadow-control :offset-assert 108) + (distance meters :offset-assert 112) + (origin vector :inline :offset-assert 128) + (bounds vector :inline :offset-assert 144) + (radius meters :offset 156) + (color-mult rgbaf :inline :offset-assert 160) + (color-emissive rgbaf :inline :offset-assert 176) + (effect-mask uint64 :offset-assert 192) + (seg-mask uint64 :offset-assert 200) + (origin-joint-index uint8 :offset-assert 208) + (shadow-joint-index uint8 :offset-assert 209) + (force-fade uint8 :offset-assert 210) + (default-texture-page uint8 :offset-assert 211) + (shadow-values uint32 :offset-assert 212) ) :method-count-assert 15 :size-assert #xd8 diff --git a/test/decompiler/reference/jak2/engine/game/game-h_REF.gc b/test/decompiler/reference/jak2/engine/game/game-h_REF.gc index f254073301..c3d66fe6a4 100644 --- a/test/decompiler/reference/jak2/engine/game/game-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/game-h_REF.gc @@ -295,7 +295,7 @@ (prev-state state :offset-assert 124) (id uint32 :offset-assert 128) (count uint32 :offset-assert 132) - (penetrate-using uint64 :offset-assert 136) + (penetrate-using penetrate :offset-assert 136) (damage float :offset-assert 144) (shield-damage float :offset-assert 148) (knock uint8 :offset-assert 152) diff --git a/test/decompiler/reference/jak2/engine/game/game-save_REF.gc b/test/decompiler/reference/jak2/engine/game/game-save_REF.gc index 889844e342..d9284cf716 100644 --- a/test/decompiler/reference/jak2/engine/game/game-save_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/game-save_REF.gc @@ -1946,7 +1946,7 @@ ) (when (< (mod (-> *display* real-clock frame-counter) 300) 270) (with-dma-buffer-add-bucket ((s5-3 (-> *display* frames (-> *display* on-screen) global-buf)) - (bucket-id bucket-320) + (bucket-id progress) ) (hud-sprite-method-9 (-> self icon) s5-3 (-> self level)) ) diff --git a/test/decompiler/reference/jak2/engine/gfx/foreground/bones-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/foreground/bones-h_REF.gc index e0688620e6..879a10ae56 100644 --- a/test/decompiler/reference/jak2/engine/gfx/foreground/bones-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/foreground/bones-h_REF.gc @@ -3,9 +3,9 @@ ;; definition of type bone-buffer (deftype bone-buffer (structure) - ((joint joint-anim-compressed-hdr 16 :inline :offset-assert 0) - (bone bone 16 :inline :offset-assert 1024) - (_pad uint8 2048 :offset-assert 2304) + ((joint matrix 16 :inline :offset-assert 0) + (bone bone 16 :inline :offset-assert 1024) + (output pris-mtx 16 :inline :offset-assert 2304) ) :method-count-assert 9 :size-assert #x1100 @@ -21,18 +21,18 @@ (format #t "[~8x] ~A~%" obj 'bone-buffer) (format #t "~1Tjoint[16] @ #x~X~%" (-> obj joint)) (format #t "~1Tbone[16] @ #x~X~%" (-> obj bone)) - (format #t "~1Toutput[16] @ #x~X~%" (-> obj _pad)) + (format #t "~1Toutput[16] @ #x~X~%" (-> obj output)) (label cfg-4) obj ) ;; definition of type bone-layout (deftype bone-layout (structure) - ((data uint16 8 :offset-assert 0) - (joint joint 2 :offset 0) - (bone bone 2 :offset 8) - (output uint32 2 :offset 16) - (unused uint32 2 :offset 24) + ((data uint16 8 :offset-assert 0) + (joint (inline-array matrix) 2 :offset 0) + (bone (inline-array bone) 2 :offset 8) + (output (inline-array pris-mtx) 2 :offset 16) + (unused uint32 2 :offset 24) ) :method-count-assert 9 :size-assert #x20 @@ -57,15 +57,15 @@ ;; definition of type bone-regs (deftype bone-regs (structure) - ((dma-buf basic :offset-assert 0) - (wait-count uint32 :offset-assert 4) - (in-count uint32 :offset-assert 8) - (sp-size uint32 :offset-assert 12) - (sp-bufnum uint32 :offset-assert 16) - (joint-ptr (inline-array joint) :offset-assert 20) - (bone-ptr (inline-array bone) :offset-assert 24) - (num-bones uint32 :offset-assert 28) - (mtxs uint32 :offset-assert 32) + ((dma-buf basic :offset-assert 0) + (wait-count uint32 :offset-assert 4) + (in-count uint32 :offset-assert 8) + (sp-size uint32 :offset-assert 12) + (sp-bufnum uint32 :offset-assert 16) + (joint-ptr (inline-array joint) :offset-assert 20) + (bone-ptr (inline-array bone) :offset-assert 24) + (num-bones uint32 :offset-assert 28) + (mtxs (inline-array pris-mtx) :offset-assert 32) ) :method-count-assert 9 :size-assert #x24 @@ -163,19 +163,20 @@ ;; definition of type bone-calculation (deftype bone-calculation (structure) - ((flags bone-calc-flags :offset-assert 0) - (num-bones uint16 :offset-assert 2) - (matrix-area (inline-array matrix) :offset-assert 4) - (joints (inline-array joint) :offset-assert 8) - (bones (inline-array bone) :offset-assert 12) - (ripple-scale float :offset-assert 16) - (ripple-y-scale float :offset-assert 20) - (ripple-normal-scale float :offset-assert 24) - (ripple-area (inline-array vector) :offset-assert 28) - (next bone-calculation :offset-assert 32) - (dummy-1 uint32 :offset-assert 36) - (dummy-2 uint32 :offset-assert 40) - (dummy-3 uint32 :offset-assert 44) + ((flags bone-calc-flags :offset-assert 0) + (num-bones uint16 :offset-assert 2) + (matrix-area (inline-array pris-mtx) :offset-assert 4) + (joints (inline-array joint) :offset-assert 8) + (bones (inline-array bone) :offset-assert 12) + (ripple-scale float :offset-assert 16) + (ripple-y-scale float :offset-assert 20) + (ripple-normal-scale float :offset-assert 24) + (ripple-area (inline-array vector) :offset-assert 28) + (ripple-vec vector :inline :offset 16) + (next bone-calculation :offset-assert 32) + (dummy-1 uint32 :offset-assert 36) + (dummy-2 uint32 :offset-assert 40) + (dummy-3 uint32 :offset-assert 44) ) :method-count-assert 9 :size-assert #x30 diff --git a/test/decompiler/reference/jak2/engine/gfx/foreground/bones_REF.gc b/test/decompiler/reference/jak2/engine/gfx/foreground/bones_REF.gc new file mode 100644 index 0000000000..926f53ee9e --- /dev/null +++ b/test/decompiler/reference/jak2/engine/gfx/foreground/bones_REF.gc @@ -0,0 +1,341 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type bone-calculation-list +(deftype bone-calculation-list (structure) + ((first bone-calculation :offset-assert 0) + (next bone-calculation :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +;; definition for method 3 of type bone-calculation-list +(defmethod inspect bone-calculation-list ((obj bone-calculation-list)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'bone-calculation-list) + (format #t "~1Tfirst: #~%" (-> obj first)) + (format #t "~1Tnext: #~%" (-> obj next)) + (label cfg-4) + obj + ) + +;; definition for symbol *bone-calculation-list*, type bone-calculation-list +(define *bone-calculation-list* (new 'global 'bone-calculation-list)) + +;; definition for function bone-list-init +;; WARN: Return type mismatch int vs none. +(defun bone-list-init () + (let ((v1-0 *bone-calculation-list*)) + (set! (-> v1-0 first) (the-as bone-calculation 0)) + (set! (-> v1-0 next) (the-as bone-calculation 0)) + ) + 0 + 0 + (none) + ) + +;; failed to figure out what this is: +(bone-list-init) + +;; definition for symbol bones-vu0-block, type vu-function +(define bones-vu0-block (new 'static 'vu-function :length 54 :qlength 27)) + +;; definition for function bones-set-sqwc +;; WARN: Return type mismatch int vs none. +(defun bones-set-sqwc () + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4)) + (none) + ) + +;; definition for function bones-reset-sqwc +;; WARN: Return type mismatch int vs none. +(defun bones-reset-sqwc () + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1)) + (none) + ) + +;; definition for function bones-init +;; WARN: Return type mismatch int vs none. +(defun bones-init ((arg0 dma-buffer)) + (let ((v1-1 (-> (the-as bone-memory #x70000000) work))) + (+ #x70000000 0) + (set! (-> v1-1 layout joint 0) (the-as (inline-array matrix) (-> (the-as bone-memory #x70000000) buffer))) + (set! (-> v1-1 layout joint 1) (the-as (inline-array matrix) (-> (the-as bone-memory #x70000000) buffer 1))) + (set! (-> v1-1 layout bone 0) (-> (the-as bone-memory #x70000000) buffer 0 bone)) + (set! (-> v1-1 layout bone 1) (-> (the-as bone-memory #x70000000) buffer 1 bone)) + (set! (-> v1-1 layout output 0) (-> (the-as bone-memory #x70000000) buffer 0 output)) + (set! (-> v1-1 layout output 1) (-> (the-as bone-memory #x70000000) buffer 1 output)) + ) + (let ((gp-0 *vu0-dma-list*)) + (let ((v1-2 gp-0)) + (set! (-> v1-2 base) (-> v1-2 data)) + (set! (-> v1-2 end) (&-> v1-2 data-buffer (-> v1-2 allocated-length))) + ) + (dma-buffer-add-vu-function gp-0 bones-vu0-block 0) + (let* ((v1-3 gp-0) + (a0-20 (the-as object (-> v1-3 base))) + ) + (set! (-> (the-as dma-packet a0-20) dma) (new 'static 'dma-tag :id (dma-tag-id end))) + (set! (-> (the-as (pointer uint64) a0-20) 1) (the-as uint 0)) + (set! (-> v1-3 base) (&+ (the-as pointer a0-20) 16)) + ) + (.sync.l) + (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0) + ) + 0 + (none) + ) + +;; definition for function bones-mtx-calc +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function bones-mtx-calc-execute +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +;; ERROR: Function may read a register that is not set: t0 +;; ERROR: Unsupported inline assembly instruction kind - [addiu a0, a0, 128] +;; ERROR: Unsupported inline assembly instruction kind - [addiu a1, a1, 128] +(defun bones-mtx-calc-execute () + (local-vars (v1-30 float) (a0-29 int) (a0-31 int) (t0-0 none)) + (rlet ((vf1 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf27 :class vf) + (vf28 :class vf) + (vf29 :class vf) + (vf30 :class vf) + (vf31 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + ) + (when *debug-segment* + (let ((gp-0 (-> *display* frames (-> *display* on-screen) profile-array data 0)) + (v1-7 'bones) + (s5-0 *profile-bones-color*) + ) + (when (and *dproc* *debug-segment*) + (let ((s4-0 (-> gp-0 data (-> gp-0 count)))) + (let ((s3-0 (-> gp-0 base-time))) + (set! (-> s4-0 name) v1-7) + (set! (-> s4-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-0)))) + ) + (set! (-> s4-0 depth) (the-as uint (-> gp-0 depth))) + (set! (-> s4-0 color) s5-0) + (set! (-> gp-0 segment (-> gp-0 depth)) s4-0) + ) + (+! (-> gp-0 count) 1) + (+! (-> gp-0 depth) 1) + (set! (-> gp-0 max-depth) (max (-> gp-0 max-depth) (-> gp-0 depth))) + ) + ) + 0 + ) + (let* ((v1-21 (-> *perf-stats* data 48)) + (a0-8 (-> v1-21 ctrl)) + ) + (+! (-> v1-21 count) 1) + (b! (zero? a0-8) cfg-9 :delay (nop!)) + (.mtc0 Perf 0) + (.sync.l) + (.sync.p) + (.mtpc pcr0 0) + (.mtpc pcr1 0) + (.sync.l) + (.sync.p) + (.mtc0 Perf a0-8) + ) + (.sync.l) + (.sync.p) + (label cfg-9) + 0 + (let ((v1-24 (-> (the-as bone-memory #x70000000) work))) + (+ #x70000000 0) + (set! (-> v1-24 layout joint 0) (the-as (inline-array matrix) (-> (the-as bone-memory #x70000000) buffer))) + (set! (-> v1-24 layout joint 1) (the-as (inline-array matrix) (-> (the-as bone-memory #x70000000) buffer 1))) + (set! (-> v1-24 layout bone 0) (-> (the-as bone-memory #x70000000) buffer 0 bone)) + (set! (-> v1-24 layout bone 1) (-> (the-as bone-memory #x70000000) buffer 1 bone)) + (set! (-> v1-24 layout output 0) (-> (the-as bone-memory #x70000000) buffer 0 output)) + (set! (-> v1-24 layout output 1) (-> (the-as bone-memory #x70000000) buffer 1 output)) + ) + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4)) + (let* ((v1-26 *bone-calculation-list*) + (gp-1 *identity-matrix*) + (s5-1 (-> *math-camera* camera-rot)) + (s4-1 (-> v1-26 first)) + ) + (while (nonzero? s4-1) + (let ((v1-29 (if (logtest? (-> s4-1 flags) (bone-calc-flags no-cam-rot)) + gp-1 + s5-1 + ) + ) + ) + (.lvf vf28 (&-> v1-29 quad 0)) + (.lvf vf29 (&-> v1-29 quad 1)) + (.lvf vf30 (&-> v1-29 quad 2)) + (.lvf vf31 (&-> v1-29 trans quad)) + (.lvf vf25 (&-> v1-29 quad 0)) + (.lvf vf26 (&-> v1-29 quad 1)) + (.lvf vf27 (&-> v1-29 quad 2)) + ) + (.mov v1-30 vf27) + (bones-mtx-calc + (-> s4-1 matrix-area) + (-> s4-1 joints) + (-> s4-1 bones) + (-> s4-1 num-bones) + (the-as object t0-0) + ) + (when (logtest? (-> s4-1 flags) (bone-calc-flags write-ripple-data)) + (let* ((a2-1 s4-1) + (v1-34 (-> a2-1 num-bones)) + (a0-26 (the-as pris-mtx (-> a2-1 matrix-area))) + (a1-11 (the-as pris-mtx (-> a2-1 ripple-area))) + ) + (.lvf vf1 (&-> a2-1 ripple-vec quad)) + (label cfg-15) + (.lvf vf5 (&-> a0-26 t-mtx quad 1)) + (.lvf vf6 (&-> a0-26 t-mtx trans quad)) + (.lvf vf7 (&-> a0-26 n-mtx quad 0)) + (.lvf vf8 (&-> a0-26 n-mtx quad 2)) + (.mul.x.vf vf4 vf5 vf1) + (.mul.y.vf vf5 vf5 vf1) + (let ((a3-1 (-> a0-26 t-mtx quad 0))) + (.mul.z.vf vf7 vf7 vf1) + (let ((a2-2 (-> a0-26 t-mtx quad 2))) + (.mul.z.vf vf8 vf8 vf1) + (set! (-> a1-11 t-mtx quad 0) a3-1) + (let ((a3-2 (-> a0-26 n-mtx quad 1))) + (.sub.vf vf6 vf6 vf4) + (set! (-> a1-11 t-mtx quad 2) a2-2) + (.svf (&-> a1-11 t-mtx quad 1) vf5) + (set! (-> a1-11 n-mtx quad 1) a3-2) + ) + ) + ) + (+! v1-34 -1) + (.svf (&-> a1-11 n-mtx quad 0) vf7) + (.addiu a0-26 a0-26 128) + (.svf (&-> a1-11 t-mtx trans quad) vf6) + (.addiu a1-11 a1-11 128) + (b! (nonzero? v1-34) cfg-15 :delay (s.vf! (+ a1-11 -32) vf8)) + ) + 0 + ) + (set! s4-1 (-> s4-1 next)) + ) + ) + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1)) + (bone-list-init) + (let ((v1-39 (-> *perf-stats* data 48))) + (b! (zero? (-> v1-39 ctrl)) cfg-21 :delay (nop!)) + (.mtc0 Perf 0) + (.sync.l) + (.sync.p) + (.mfpc a0-29 pcr0) + (+! (-> v1-39 accum0) a0-29) + (.mfpc a0-31 pcr1) + (+! (-> v1-39 accum1) a0-31) + ) + (label cfg-21) + 0 + (when *debug-segment* + (let ((gp-2 (-> *display* frames (-> *display* on-screen) profile-array data 0))) + (when (and *dproc* *debug-segment*) + (let* ((v1-52 (+ (-> gp-2 depth) -1)) + (s5-2 (-> gp-2 segment v1-52)) + (s4-2 (-> gp-2 base-time)) + ) + (when (>= v1-52 0) + (set! (-> s5-2 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-2)))) + (+! (-> gp-2 depth) -1) + ) + ) + ) + ) + 0 + ) + 0 + (none) + ) + ) + +;; definition (debug) for function dump-qword +;; WARN: Return type mismatch int vs none. +(defun-debug dump-qword ((arg0 qword)) + (let ((v1-0 arg0)) + (format + 0 + "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X~%" + v1-0 + (-> v1-0 data 0) + (-> v1-0 data 1) + (-> v1-0 data 2) + (-> v1-0 data 3) + ) + ) + 0 + (none) + ) + +;; definition (debug) for function dump-mem +;; WARN: Return type mismatch int vs none. +(defun-debug dump-mem ((arg0 pointer) (arg1 int)) + (dotimes (s4-0 arg1) + (format + 0 + "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X" + (&+ arg0 (* (* s4-0 4) 4)) + (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4)))) + ) + (format + 0 + " ~F ~F ~F ~F ~%" + (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4)))) + ) + ) + 0 + (none) + ) + +;; definition (debug) for function bones-debug +;; WARN: Return type mismatch int vs none. +(defun-debug bones-debug () + 0 + (none) + ) + +;; definition (debug) for function dump-bone-mem +;; WARN: Return type mismatch int vs none. +(defun-debug dump-bone-mem () + (format 0 "== joints 0 ===========~%") + (dump-mem (the-as pointer (+ 80 #x70000000)) 64) + (format 0 "== bones 0 ============~%") + (dump-mem (the-as pointer (+ 1104 #x70000000)) 80) + (format 0 "== output 0 ===========~%") + (dump-mem (the-as pointer (+ 2384 #x70000000)) 128) + (format 0 "~%~%~%") + (format 0 "== joints 1 ===========~%") + (dump-mem (the-as pointer (+ 4432 #x70000000)) 64) + (format 0 "== bones 1 ============~%") + (dump-mem (the-as pointer (+ 5456 #x70000000)) 80) + (format 0 "== output 1 ===========~%") + (dump-mem (the-as pointer (+ 6736 #x70000000)) 128) + (format 0 "========================~%~%") + 0 + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/gfx/foreground/foreground-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/foreground/foreground-h_REF.gc index d3f5b2a25c..97dc3d8593 100644 --- a/test/decompiler/reference/jak2/engine/gfx/foreground/foreground-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/foreground/foreground-h_REF.gc @@ -6,7 +6,7 @@ ((first uint32 :offset-assert 0) (next uint32 :offset-assert 4) (state generic-bucket-state :inline :offset-assert 8) - (vu1-bucket int32 :offset-assert 16) + (vu1-bucket bucket-id :offset-assert 16) ) :pack-me :method-count-assert 9 @@ -33,7 +33,7 @@ (deftype merc-chain (structure) ((first dma-packet :offset-assert 0) (patch dma-packet :offset-assert 4) - (vu1-bucket int32 :offset-assert 8) + (vu1-bucket bucket-id :offset-assert 8) ) :pack-me :method-count-assert 9 @@ -132,11 +132,11 @@ (mercneric-used uint32 :offset-assert 12) (use-isometric uint32 :offset-assert 16) (base-start dma-packet :offset-assert 20) - (joint-ptr uint32 :offset-assert 24) - (bone-ptr uint32 :offset-assert 28) + (joint-ptr (inline-array joint) :offset-assert 24) + (bone-ptr (inline-array bone) :offset-assert 28) (num-bones uint32 :offset-assert 32) - (mtxs uint32 :offset-assert 36) - (dma-buf basic :offset-assert 40) + (mtxs (inline-array pris-mtx) :offset-assert 36) + (dma-buf dma-buffer :offset-assert 40) (default-texture-index uint32 :offset-assert 44) (mercneric-chain mercneric-chain :offset-assert 48) (level-buckets foreground-level-buckets :offset-assert 52) @@ -174,7 +174,7 @@ ;; definition of type foreground-work (deftype foreground-work (structure) ((regs foreground-regs :inline :offset-assert 0) - (draw-index-map uint16 7 :offset 64) + (draw-index-map uint8 7 :offset 64) (grid foreground-bucket-grid :inline :offset-assert 80) (bounds sphere :inline :offset-assert 2464) (lights vu-lights :inline :offset-assert 2480) @@ -242,6 +242,7 @@ ;; definition of type merc-effect-bucket-info (deftype merc-effect-bucket-info (structure) ((color-fade rgba :offset-assert 0) + (alpha uint8 :offset 3) (merc-path uint8 :offset-assert 4) (ignore-alpha uint8 :offset-assert 5) (disable-draw uint8 :offset-assert 6) diff --git a/test/decompiler/reference/jak2/engine/gfx/lights-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/lights-h_REF.gc index 1c0c461216..07133a036b 100644 --- a/test/decompiler/reference/jak2/engine/gfx/lights-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/lights-h_REF.gc @@ -3,9 +3,11 @@ ;; definition of type vu-lights (deftype vu-lights (structure) - ((direction vector 3 :inline :offset-assert 0) - (color vector 3 :inline :offset-assert 48) - (ambient vector :inline :offset-assert 96) + ((direction vector 3 :inline :offset-assert 0) + (color vector 3 :inline :offset-assert 48) + (ambient vector :inline :offset-assert 96) + (fade-int uint32 :offset 44) + (fade-flags uint32 :offset 28) ) :method-count-assert 9 :size-assert #x70 @@ -107,6 +109,7 @@ ((index uint16 :offset-assert 0) (count uint16 :offset-assert 2) ) + :pack-me :method-count-assert 9 :size-assert #x4 :flag-assert #x900000004 @@ -127,16 +130,16 @@ ;; definition of type light-hash (deftype light-hash (basic) - ((num-lights uint16 :offset-assert 4) - (num-indices uint16 :offset-assert 6) - (num-buckets uint16 :offset-assert 8) - (bucket-step uint8 2 :offset-assert 10) - (base-trans vector :inline :offset-assert 16) - (axis-scale vector :inline :offset-assert 32) - (dimension-array vector4w :inline :offset-assert 48) - (bucket-array pointer :offset-assert 64) - (index-array pointer :offset-assert 68) - (light-sphere-array (inline-array light-sphere) :offset-assert 72) + ((num-lights uint16 :offset-assert 4) + (num-indices uint16 :offset-assert 6) + (num-buckets uint16 :offset-assert 8) + (bucket-step uint8 2 :offset-assert 10) + (base-trans vector :inline :offset-assert 16) + (axis-scale vector :inline :offset-assert 32) + (dimension-array vector4w :inline :offset-assert 48) + (bucket-array (inline-array light-hash-bucket) :offset-assert 64) + (index-array pointer :offset-assert 68) + (light-sphere-array (inline-array light-sphere) :offset-assert 72) ) :method-count-assert 9 :size-assert #x4c diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc index 04d7e10b37..312cfbcc34 100644 --- a/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc @@ -291,10 +291,10 @@ ;; definition of type mei-envmap-tint (deftype mei-envmap-tint (structure) - ((fade0 float :offset-assert 0) - (fade1 float :offset-assert 4) - (tint uint32 :offset-assert 8) - (dummy int32 :offset-assert 12) + ((fade0 float :offset-assert 0) + (fade1 float :offset-assert 4) + (tint rgba :offset-assert 8) + (dummy int32 :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 @@ -412,7 +412,7 @@ (blend-data merc-blend-data :offset-assert 8) (blend-ctrl merc-blend-ctrl :offset-assert 12) (merc-effect-version uint8 :offset-assert 16) - (effect-bits uint8 :offset-assert 17) + (effect-bits effect-bits :offset-assert 17) (frag-count uint16 :offset-assert 18) (blend-frag-count uint16 :offset-assert 20) (tri-count uint16 :offset-assert 22) diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc index 9add29b2d1..ec4fdeeb35 100644 --- a/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc @@ -213,7 +213,6 @@ ) ;; definition for method 3 of type merc-fragment-control -;; INFO: this function exists in multiple non-identical object files (defmethod inspect merc-fragment-control ((obj merc-fragment-control)) (format #t "[~8x] ~A~%" obj 'merc-fragment-control) (format #t "~Tunsigned-four-count: ~D~%" (-> obj unsigned-four-count)) @@ -270,7 +269,6 @@ ) ;; definition for method 3 of type merc-ctrl -;; INFO: this function exists in multiple non-identical object files (defmethod inspect merc-ctrl ((obj merc-ctrl)) (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tname: ~A~%" (-> obj name)) @@ -614,21 +612,23 @@ (let* ((v1-14 dma-buf) (a0-8 (-> v1-14 base)) ) - (set! (-> (the-as (pointer gs-test) a0-8) 0) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) + (set! (-> (the-as (pointer gs-test) a0-8) 0) + (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) ) (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-test) a0-8) 2) (if arg2 - (the-as gs-test #x1000130) - (the-as gs-test (the-as uint #x101000130)) - ) + (set! (-> (the-as (pointer gs-zbuf) a0-8) 2) + (if arg2 + (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)) + (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1) + ) ) - (set! (-> (the-as (pointer gs-test) a0-8) 3) (new 'static 'gs-test :atst (gs-atest not-equal) :aref #x4)) + (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 zbuf-1)) (set! (-> v1-14 base) (&+ a0-8 32)) ) (let ((v1-15 (the-as object (-> dma-buf base)))) diff --git a/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc index 2ee789e803..c5b6ce9467 100644 --- a/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc +++ b/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc @@ -716,7 +716,7 @@ ) (set! (-> s2-0 level-index) (the-as uint (-> s3-0 index))) ) - (set! (-> s2-0 dma-add-func) nothing) + (set! (-> s2-0 dma-add-func) (the-as (function process-drawable draw-control symbol object none) nothing)) (set! (-> arg2 0) (setup-cspace-and-add s2-0 (the-as art-joint-geo sv-16) 'process)) (set! (-> s2-0 dma-add-func) dma-add-process-drawable) (set! (-> s2-0 shadow-mask) (res-lump-value (-> arg0 entity) 'shadow-mask uint :time -1000000000.0)) diff --git a/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc b/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc index 675efaf505..91ca5483e0 100644 --- a/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc @@ -1527,14 +1527,13 @@ (set! (-> v1-19 id) (the-as uint arg3)) (set! (-> v1-19 mode) 'ice) (set! (-> v1-19 damage) 15.0) - (set! (-> v1-19 penetrate-using) (the-as uint (if (and (logtest? (focus-status dark) (-> self focus-status)) - (nonzero? (-> self darkjak)) - (logtest? (-> self darkjak stage) 32) - ) - #xd0001 - #x50001 - ) - ) + (set! (-> v1-19 penetrate-using) (if (and (logtest? (focus-status dark) (-> self focus-status)) + (nonzero? (-> self darkjak)) + (logtest? (-> self darkjak stage) 32) + ) + (penetrate touch dark-skin dark-bomb dark-giant) + (penetrate touch dark-skin dark-bomb) + ) ) (set! (-> a1-6 param 1) (the-as uint v1-19)) ) diff --git a/test/decompiler/reference/jak2/engine/target/target-handler_REF.gc b/test/decompiler/reference/jak2/engine/target/target-handler_REF.gc index bcb966d8cd..377679ddd3 100644 --- a/test/decompiler/reference/jak2/engine/target/target-handler_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-handler_REF.gc @@ -219,13 +219,13 @@ ;; WARN: Stack slot offset 96 signed mismatch ;; WARN: Stack slot offset 96 signed mismatch ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 711] -(defbehavior target-send-attack target ((arg0 process) (arg1 symbol) (arg2 touching-shapes-entry) (arg3 int) (arg4 int) (arg5 uint)) +(defbehavior target-send-attack target ((arg0 process) (arg1 symbol) (arg2 touching-shapes-entry) (arg3 int) (arg4 int) (arg5 penetrate)) (local-vars (sv-96 symbol) (sv-100 touching-prims-entry) (sv-128 touching-prims-entry) (sv-176 touching-prims-entry) - (sv-224 uint) + (sv-224 penetrate) (sv-240 int) (sv-256 symbol) (sv-272 symbol) @@ -966,7 +966,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> (the-as fact-info-target (-> self fact-override)) shield-attack-id)) 0 - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) (set! (-> self control penetrate-using) s4-3) @@ -987,7 +987,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> self darkjak attack-id)) 0 - (the-as uint #x10001) + (penetrate touch dark-skin) ) ) (else @@ -1441,7 +1441,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> (the-as fact-info-target (-> self fact-override)) shield-attack-id)) 0 - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) ) @@ -1462,7 +1462,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) (else @@ -1538,7 +1538,7 @@ (the-as touching-shapes-entry (-> arg3 param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) (zero? (logand (-> self focus-status) (focus-status dead hit))) ) diff --git a/test/decompiler/reference/jak2/engine/target/target_REF.gc b/test/decompiler/reference/jak2/engine/target/target_REF.gc index 99ab9b2517..f27a405960 100644 --- a/test/decompiler/reference/jak2/engine/target/target_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target_REF.gc @@ -2122,7 +2122,7 @@ (the-as touching-shapes-entry (-> event param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) (set! (-> self gun combo-window-start) (-> self clock frame-counter)) (let ((v0-2 (the-as object (-> self state name)))) @@ -2380,7 +2380,7 @@ (the-as touching-shapes-entry (-> event param 0)) (the-as int (-> self control target-attack-id)) (the-as int (-> self control attack-count)) - (the-as uint (-> self control penetrate-using)) + (-> self control penetrate-using) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/ui/progress/progress-draw_REF.gc b/test/decompiler/reference/jak2/engine/ui/progress/progress-draw_REF.gc index 3cb7ca73ce..f1e25f1929 100644 --- a/test/decompiler/reference/jak2/engine/ui/progress/progress-draw_REF.gc +++ b/test/decompiler/reference/jak2/engine/ui/progress/progress-draw_REF.gc @@ -86,7 +86,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-2 (the-as (pointer dma-tag) a3-1) ) @@ -309,7 +309,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -335,7 +335,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -375,7 +375,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -401,7 +401,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -441,7 +441,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -467,7 +467,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -507,7 +507,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -533,7 +533,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -573,7 +573,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-0) ) @@ -599,7 +599,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-0) ) @@ -1379,7 +1379,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-0 (the-as (pointer dma-tag) a3-1) ) @@ -2580,7 +2580,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-9 (the-as (pointer dma-tag) a3-35) ) @@ -2614,7 +2614,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-10 (the-as (pointer dma-tag) a3-36) ) @@ -2651,7 +2651,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-12 (the-as (pointer dma-tag) a3-39) ) @@ -2681,7 +2681,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-14 (the-as (pointer dma-tag) a3-41) ) @@ -2713,7 +2713,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s2-16 (the-as (pointer dma-tag) a3-43) ) @@ -3305,7 +3305,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s4-1 (the-as (pointer dma-tag) a3-1) ) @@ -5050,7 +5050,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s4-0 (the-as (pointer dma-tag) a3-1) ) @@ -5259,7 +5259,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) gp-1 (the-as (pointer dma-tag) a3-1) ) @@ -5313,7 +5313,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) s5-1 (the-as (pointer dma-tag) a3-1) ) @@ -7587,7 +7587,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) sv-192 (the-as (pointer dma-tag) a3-6) ) @@ -7702,7 +7702,7 @@ ) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id bucket-320) + (bucket-id progress) sv-272 (the-as (pointer dma-tag) a3-13) ) diff --git a/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc b/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc index dfefd7bde4..4897c285a3 100644 --- a/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc +++ b/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc @@ -1400,7 +1400,7 @@ ;; WARN: Failed store: (s.w! (+ v1-8 12) 0) at op 20 (defun end-scan ((arg0 hud-box) (arg1 float)) (with-dma-buffer-add-bucket ((s5-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (bucket-id bucket-320) + (bucket-id progress) ) (hud-box-method-13 arg0 s5-0 arg1) ) diff --git a/test/decompiler/reference/jak2/engine/util/profile_REF.gc b/test/decompiler/reference/jak2/engine/util/profile_REF.gc index d474503ecb..eceaf9eefa 100644 --- a/test/decompiler/reference/jak2/engine/util/profile_REF.gc +++ b/test/decompiler/reference/jak2/engine/util/profile_REF.gc @@ -355,48 +355,48 @@ ;; definition for function profile-mercneric-test (defun profile-mercneric-test ((arg0 bucket-id)) - (or (= arg0 (bucket-id bucket-16)) - (= arg0 (bucket-id bucket-27)) - (= arg0 (bucket-id bucket-38)) - (= arg0 (bucket-id bucket-49)) - (= arg0 (bucket-id bucket-60)) - (= arg0 (bucket-id bucket-71)) - (= arg0 (bucket-id bucket-81)) - (= arg0 (bucket-id bucket-90)) - (= arg0 (bucket-id bucket-99)) - (= arg0 (bucket-id bucket-108)) - (= arg0 (bucket-id bucket-117)) - (= arg0 (bucket-id bucket-126)) - (= arg0 (bucket-id bucket-133)) - (= arg0 (bucket-id bucket-143)) - (= arg0 (bucket-id bucket-153)) - (= arg0 (bucket-id bucket-163)) - (= arg0 (bucket-id bucket-173)) - (= arg0 (bucket-id bucket-183)) - (= arg0 (bucket-id bucket-190)) - (= arg0 (bucket-id bucket-194)) - (= arg0 (bucket-id bucket-199)) - (= arg0 (bucket-id bucket-203)) - (= arg0 (bucket-id bucket-207)) - (= arg0 (bucket-id bucket-211)) - (= arg0 (bucket-id bucket-215)) - (= arg0 (bucket-id bucket-219)) - (= arg0 (bucket-id bucket-223)) - (= arg0 (bucket-id bucket-227)) - (= arg0 (bucket-id bucket-231)) - (= arg0 (bucket-id bucket-235)) - (= arg0 (bucket-id bucket-239)) - (= arg0 (bucket-id bucket-243)) - (= arg0 (bucket-id bucket-247)) - (= arg0 (bucket-id bucket-251)) - (= arg0 (bucket-id bucket-254)) - (= arg0 (bucket-id bucket-263)) - (= arg0 (bucket-id bucket-272)) - (= arg0 (bucket-id bucket-281)) - (= arg0 (bucket-id bucket-290)) - (= arg0 (bucket-id bucket-299)) - (= arg0 (bucket-id bucket-308)) - (= arg0 (bucket-id bucket-317)) + (or (= arg0 (bucket-id gmerc-l0-tfrag)) + (= arg0 (bucket-id gmerc-l1-tfrag)) + (= arg0 (bucket-id gmerc-l2-tfrag)) + (= arg0 (bucket-id gmerc-l3-tfrag)) + (= arg0 (bucket-id gmerc-l4-tfrag)) + (= arg0 (bucket-id gmerc-l5-tfrag)) + (= arg0 (bucket-id gmerc-l0-shrub)) + (= arg0 (bucket-id gmerc-l1-shrub)) + (= arg0 (bucket-id gmerc-l2-shrub)) + (= arg0 (bucket-id gmerc-l3-shrub)) + (= arg0 (bucket-id gmerc-l4-shrub)) + (= arg0 (bucket-id gmerc-l5-shrub)) + (= arg0 (bucket-id gmerc-l0-alpha)) + (= arg0 (bucket-id gmerc-l1-alpha)) + (= arg0 (bucket-id gmerc-l2-alpha)) + (= arg0 (bucket-id gmerc-l3-alpha)) + (= arg0 (bucket-id gmerc-l4-alpha)) + (= arg0 (bucket-id gmerc-l5-alpha)) + (= arg0 (bucket-id gmerc-lcom-tfrag)) + (= arg0 (bucket-id gmerc-lcom-shrub)) + (= arg0 (bucket-id gmerc-l0-pris)) + (= arg0 (bucket-id gmerc-l1-pris)) + (= arg0 (bucket-id gmerc-l2-pris)) + (= arg0 (bucket-id gmerc-l3-pris)) + (= arg0 (bucket-id gmerc-l4-pris)) + (= arg0 (bucket-id gmerc-l5-pris)) + (= arg0 (bucket-id gmerc-lcom-pris)) + (= arg0 (bucket-id gmerc-l0-pris2)) + (= arg0 (bucket-id gmerc-l1-pris2)) + (= arg0 (bucket-id gmerc-l2-pris2)) + (= arg0 (bucket-id gmerc-l3-pris2)) + (= arg0 (bucket-id gmerc-l4-pris2)) + (= arg0 (bucket-id gmerc-l5-pris2)) + (= arg0 (bucket-id gmerc-lcom-pris2)) + (= arg0 (bucket-id gmerc-l0-water)) + (= arg0 (bucket-id gmerc-l1-water)) + (= arg0 (bucket-id gmerc-l2-water)) + (= arg0 (bucket-id gmerc-l3-water)) + (= arg0 (bucket-id gmerc-l4-water)) + (= arg0 (bucket-id gmerc-l5-water)) + (= arg0 (bucket-id gmerc-lcom-water)) + (= arg0 (bucket-id gmerc-warp)) ) ) diff --git a/test/decompiler/reference/jak2/levels/city/common/ctywide-scenes_REF.gc b/test/decompiler/reference/jak2/levels/city/common/ctywide-scenes_REF.gc new file mode 100644 index 0000000000..95a65dbf33 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/city/common/ctywide-scenes_REF.gc @@ -0,0 +1,1974 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defpartgroup group-daxter-spit + :id 187 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 881 :flags (bit7)) (sp-item 882 :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 881 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 8.0 2.0 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.01) (meters 0.03) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.85333335 -0.85333335 1.0) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-rnd-flt spt-friction 0.93 0.03 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 882 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 32.0 4.0 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.01) (meters 0.005) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-omega 0.2048) + (sp-rnd-flt spt-vel-x (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-int spt-timer 75) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-beer-drip + :id 188 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 16) + :parts ((sp-item 883) (sp-item 884) (sp-item 885)) + ) + +;; failed to figure out what this is: +(defpart 883 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 2.0) + (sp-flt spt-y (meters -0.45)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-copy-from-other spt-g -1) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.00012499999) (meters 0.00012499999) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.6) + (sp-flt spt-accel-y 6.826667) + (sp-flt spt-friction 0.6) + (sp-int spt-timer 80) + (sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-flt spt-conerot-radius (meters 0)) + ) + ) + +;; failed to figure out what this is: +(defpart 884 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x77 :page #x45e)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0) (meters 0.015) 1.0) + (sp-rnd-flt spt-y (meters 0.015) (meters -0.015) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.01) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters -0.00066666666) 1.0) + (sp-int spt-timer 650) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 115 -1 1) + (sp-launcher-by-id spt-next-launcher 886) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 885 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x77 :page #x45e)) + (sp-flt spt-num 1.5) + (sp-rnd-flt spt-x (meters 0) (meters 0.015) 1.0) + (sp-rnd-flt spt-y (meters 0.015) (meters -0.015) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.01) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters -0.00066666666) 1.0) + (sp-int spt-timer 650) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 120 -1 1) + (sp-launcher-by-id spt-next-launcher 886) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 886 + :init-specs ((sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.01) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-omega 2.048) + (sp-rnd-flt spt-vel-x (meters -0.005) (meters 0.01) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.00066666666) (meters 0.006) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.005) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-flt spt-friction 0.95) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctywide-jak-bike-thruster + :id 189 + :duration (seconds 3) + :flags (use-local-clock unk-4) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 887 :flags (is-3d bit7)) + (sp-item 888 :flags (is-3d bit7)) + (sp-item 889 :flags (is-3d bit7)) + (sp-item 890 :flags (is-3d bit7)) + (sp-item 891 :flags (bit7)) + (sp-item 892 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 887 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 888 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 891 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -3)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 889 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 890 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.9)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 892 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -3)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctywide-errol-bike-thruster + :id 190 + :duration (seconds 3) + :flags (use-local-clock unk-4) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 893 :flags (is-3d bit7)) + (sp-item 894 :flags (is-3d bit7)) + (sp-item 895 :flags (is-3d bit7)) + (sp-item 896 :flags (is-3d bit7)) + (sp-item 897 :flags (bit7)) + (sp-item 898 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 893 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 894 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 897 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.35)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 895 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 896 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.25)) + (sp-flt spt-scale-x (meters 0.3)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 1)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 898 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.15)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters -2.35)) + (sp-flt spt-scale-x (meters 0.625)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-slums-talkbox-speak + :id 191 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 2) + :rotate ((degrees 4) (degrees 0) (degrees 0)) + :parts ((sp-item 899 :flags (is-3d bit6 bit7) :period 130 :length 30) + (sp-item 899 :flags (is-3d bit6 bit7) :period 150 :length 35 :offset 5) + (sp-item 899 :flags (is-3d bit6 bit7) :period 330 :length 25 :offset 35) + (sp-item 899 :flags (is-3d bit6 bit7) :period 250 :length 60 :offset 15) + (sp-item 899 :flags (is-3d bit6 bit7) :period 465 :length 75 :offset 60) + ) + ) + +;; failed to figure out what this is: +(defpart 899 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xcb :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 0.4)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 16.0) + (sp-rnd-flt spt-vel-y (meters 0.0016666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 100) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat) + (sp-flt spt-userdata 2048.0) + (sp-int spt-next-time 50) + (sp-launcher-by-id spt-next-launcher 900) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 900 + :init-specs ((sp-flt spt-fade-a -0.32)) + ) + +;; failed to figure out what this is: +(defskelgroup skel-seal-of-mar-top seal-of-mar-top 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-help-kid-intro" + :extra #f + :info #f + :mask-to-clear #x1002000 + :entity "hal-help-kid-1" + :art-group "scenecamera" + :anim "city-help-kid-intro" + :parts 34 + :command-list '((0 + (send-event "kor-3" 'hide #t) + (send-event "kid-2" 'hide #t) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2612019.2 :y 33177.6 :z -346521.6 :w 11059.2) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 95.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2611609.5 :y 33177.6 :z -369049.6 :w 11059.2) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 139.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2613657.5 :y 33177.6 :z -392396.8 :w 12288.0)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2620211.2 :y 33177.6 :z -407552.0 :w 13107.2)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2624716.8 :y 33177.6 :z -421478.4 :w 6144.0)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2627993.5 :y 33177.6 :z -428032.0 :w 4915.2)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2630860.8 :y 33177.6 :z -401408.0 :w 9830.4)) + (fadein (frame-time-30 10)) + ) + (1250 (fma-sphere + (danger) + entity + "crimson-guard-highres" + joint + "main" + danger + (new 'static 'traffic-danger-info + :sphere (new 'static 'sphere :r 122880.0) + :notify-radius 245760.0 + :danger-level 1.0 + :flags (traffic-danger-flags tdf0) + :danger-type (traffic-danger-type tdt4) + ) + ) + ) + (2015 (fadeout (frame-time-30 5))) + (10000 (task-close! "city-help-kid-introduction") (send-event "kor-3" 'hide #f) (send-event "kid-2" 'hide #f)) + ) + :cut-list '(57 134 201 401 513 721 830 895 1041 1141 1239 1350 1531 1601 1651 1702 1801 1911 2010) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ctykora + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ctykora + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kor-highres" + :level 'ctykora + :art-group "skel-kor-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kid-highres" + :level 'ctykora + :art-group "skel-kid-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crimson-guard-highres" + :level 'ctykora + :art-group "skel-crimson-guard-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crimson-guard-lowres" + :level 'ctykora + :art-group "skel-crimson-guard-lowres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x4 + ) + (new 'static 'scene-actor + :name "crimson-guard-lowres" + :level 'ctykora + :art-group "skel-crimson-guard-lowres" + :prefix "b-" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x4 + ) + ) + :load-point-obj "ctyslumb-fort" + :end-point-obj (new 'static 'continue-point + :name "ctyslumb-start" + :level #f + :flags (continue-flags cf2) + :trans (new 'static 'vector :x 2620227.2 :y 31333.99 :z -400654.34 :w 1.0) + :quat (new 'static 'vector :y 0.9997 :w -0.0234) + :camera-trans (new 'static 'vector :x 2606159.8 :y 52533.656 :z -360011.78 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.9454 0.0 -0.3258)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0583 0.9838 -0.1693)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.3205 -0.179 -0.9301)) + ) + :on-goto #f + :vis-nick 'ctyslumb + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'ctyslumb :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctykora :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctywide :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'ctywide1 'ctywide2 'ctywide3) + ) + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #f + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-help-kid-resolution" + :extra #f + :info #f + :mask-to-clear #x1002000 + :entity "hal-help-kid-1" + :art-group "scenecamera" + :anim "city-help-kid-resolution" + :parts 12 + :command-list '((1 + (send-event "kor-3" 'hide #t) + (send-event "kid-2" 'hide #t) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2610380.8 :y 33177.6 :z -382976.0 :w 11059.2)) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2613248.0 :y 33177.6 :z -367001.6 :w 13107.2)) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2622259.2 :y 33177.6 :z -384204.8 :w 8192.0) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 498.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 2613657.5 :y 33177.6 :z -353075.2 :w 7372.8) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 705.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 2599321.5 :y 33996.8 :z -361676.8 :w 7372.8)) + (send-event *traffic-manager* 'set-guard-target-level (unbox 0)) + (send-event *traffic-manager* 'set-max-alert-level (unbox 0)) + (send-event *traffic-manager* 'set-alert-level (unbox 0)) + (send-event *traffic-manager* 'set-alert-duration (unbox 10800000)) + (send-event *traffic-manager* 'deactivate-by-type (unbox 6)) + (send-event *traffic-manager* 'deactivate-by-type (unbox 18)) + (send-event *traffic-manager* 'deactivate-by-type (unbox 19)) + (fma-sphere + (danger) + duration + (frame-range (new 'static 'bfloat :data 1.0) (new 'static 'bfloat :data 279.0)) + danger + (new 'static 'traffic-danger-info + :sphere (new 'static 'sphere :x 2605056.0 :y 40960.0 :z -372736.0 :r 122880.0) + :notify-radius 245760.0 + :danger-level 1.0 + :flags (traffic-danger-flags tdf0) + :danger-type (traffic-danger-type tdt4) + ) + ) + ) + (10000 (task-close! "city-help-kid-resolution") (send-event *traffic-manager* 'restore-default-settings)) + ) + :cut-list '(68 250 298 392 498 562 705 838 905 1056) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ctykora + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min 250) (298 max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ctykora + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kor-highres" + :level 'ctykora + :art-group "skel-kor-highres" + :prefix "" + :draw-frames '((min 838) (905 max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kid-highres" + :level 'ctykora + :art-group "skel-kid-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "atoll-hellcat" + :level 'ctykora + :art-group "skel-atoll-hellcat" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crimson-guard-highres" + :level 'ctykora + :art-group "skel-crimson-guard-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x2 + ) + ) + :load-point-obj "ctyslumb-fort" + :end-point-obj (new 'static 'continue-point + :name "ctyslumb-start" + :level #f + :flags (continue-flags cf2) + :trans (new 'static 'vector :x 2588147.8 :y 32754.482 :z -150693.89 :w 1.0) + :quat (new 'static 'vector :x -0.0012 :y -0.9819 :z -0.0008 :w 0.1889) + :camera-trans (new 'static 'vector :x 2593185.8 :y 51852.492 :z -107130.88 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.9935 0.0 0.113)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0149 0.9912 -0.1313)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.112 -0.1321 -0.9848)) + ) + :on-goto #f + :vis-nick 'default-level + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'ctyslumb :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctykora :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctywide :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'ctywide1 'ctywide2 'ctywide3) + ) + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-protect-blimp-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "port-turret-2" + :art-group "scenecamera" + :anim "city-protect-blimp-res" + :parts 5 + :command-list '((0 (kill "port-turret-2")) (10000 (task-close! "city-protect-blimp-resolution"))) + :cut-list '(165 210 407) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "torn-highres" + :level 'portblmp + :art-group "skel-torn-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "turret" + :level 'portblmp + :art-group "skel-turret" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-turret" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-get-hoverboard" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-55" + :art-group "scenecamera" + :anim "city-get-hoverboard" + :parts 4 + :command-list '((0 (fadein (frame-time (new 'static 'bfloat :data 10.0)))) (10000 (task-close! "forest-scouts-get-board"))) + :cut-list '(49) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "board" + :level #f + :art-group "skel-board" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyfarma-airlock-movie" + :end-point-obj "ctyfarma-airlock" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-meet-brutter-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-53" + :art-group "scenecamera" + :anim "city-meet-brutter-res" + :parts 6 + :command-list '((0 (fadein (seconds (new 'static 'bfloat :data 0.0666)))) + (303 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 303.0) (new 'static 'bfloat :data 306.0)) + ) + ) + (320 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 320.0) (new 'static 'bfloat :data 323.0)) + ) + ) + (330 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 330.0) (new 'static 'bfloat :data 332.0)) + ) + ) + (348 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 348.0) (new 'static 'bfloat :data 350.0)) + ) + ) + (357 (part-tracker + "group-daxter-spit" + entity + "sidekick-highres" + joint + "tongueMaster" + track + #t + duration + (frame-range (new 'static 'bfloat :data 357.0) (new 'static 'bfloat :data 357.5)) + ) + ) + (648 (fadeout (seconds (new 'static 'bfloat :data 0.0666)))) + (10000 (task-close! "city-meet-brutter-resolution")) + ) + :cut-list '(35 216 300 463) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'kiosk + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'kiosk + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "brutter-highres" + :level 'kiosk + :art-group "skel-brutter-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "kiosk-start" + :end-point-obj "kiosk-start" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-save-lurkers-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-53" + :art-group "scenecamera" + :anim "city-save-lurkers-intro" + :parts 12 + :command-list '((0 (fadein (seconds (new 'static 'bfloat :data 0.0666)))) + (98 (part-tracker + "group-beer-drip" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 98.0) (new 'static 'bfloat :data 157.0)) + ) + ) + (1435 (fadeout (frame-time-30 5))) + (10000 (task-close! "city-save-lurkers-introduction")) + ) + :cut-list '(60 104 158 270 352 555 606 831 844 996 1131 1271 1300 1409) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'kiosk + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'kiosk + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'kiosk + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "brutter-highres" + :level 'kiosk + :art-group "skel-brutter-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "kiosk-start" + :end-point-obj "kiosk-start" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-errol-challenge-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-70" + :art-group "scenecamera" + :anim "city-errol-challenge-res" + :parts 4 + :command-list '((0 (fadein (frame-time (new 'static 'bfloat :data 2.0))) (part-tracker + "group-ctywide-jak-bike-thruster" + entity + "bikea" + joint + "main_" + track + #t + duration + (frame-range 0 40) + ) + ) + (315 (part-tracker + "group-ctywide-errol-bike-thruster" + entity + "bikeb" + joint + "main_" + track + #t + duration + (frame-range 315 338) + ) + ) + (387 (part-tracker + "group-ctywide-errol-bike-thruster" + entity + "bikeb" + joint + "main_" + track + #t + duration + (frame-range 387 449) + ) + ) + (445 (fadeout (frame-time-30 5))) + (10000 (task-close! "city-errol-challenge-resolution")) + ) + :cut-list '(38 135 195 338 387) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'stadium + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'stadium + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "errol-highres" + :level 'lerrol + :art-group "skel-errol-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "bikea" + :level 'lwidea + :art-group "skel-bikea" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #xe + ) + (new 'static 'scene-actor + :name "bikeb" + :level 'lwidea + :art-group "skel-bikeb" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + :no-draw-seg #x1e + ) + ) + :load-point-obj "stadium-start" + :end-point-obj (new 'static 'continue-point + :name "stadium-start" + :level #f + :trans (new 'static 'vector :x 1132806.1 :y -16393.83 :z -1956527.8 :w 1.0) + :quat (new 'static 'vector :y -0.1582 :z -0.0002 :w 0.9873) + :camera-trans (new 'static 'vector :x 1171506.8 :y 4476.109 :z -1939225.8 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.2976 0.0 0.9546)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.1726 0.9835 -0.0538)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.9389 -0.1808 -0.2927)) + ) + :on-goto #f + :vis-nick 'stadium + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'stadium :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctywide :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'ctygenb :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'ctywide1 'ctywide2 'stadium1) + ) + :borrow '((stadium 0 lerrol special) (ctywide 1 lwidea special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-protect-slums-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-86" + :art-group "scenecamera" + :anim "city-protect-slums-intro" + :parts 4 + :command-list '((0 + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 3132661.8 :y 33669.12 :z -2965708.8 :w 2048000.0)) + (fadein (frame-time-30 (new 'static 'bfloat :data 5.0))) + (part-tracker + "group-slums-seal-of-mar-glow" + entity + "seal-of-mar-top" + joint + "top" + track + #t + duration + (frame-range 0 375) + ) + ) + (75 (part-tracker + "group-slums-talkbox-speak" + entity + "talk-box" + joint + "main" + track + #t + duration + (frame-range 75 360) + ) + ) + (372 (fadeout (frame-time-30 (new 'static 'bfloat :data 3.0)))) + (10000 (task-close! "city-protect-water-slums-get-seal") (task-close! "city-protect-water-slums-fight")) + ) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "seal-of-mar-top" + :level 'lprotect + :art-group "skel-seal-of-mar-top" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "talk-box" + :level #f + :art-group "skel-talk-box" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyslumc-seal-movie" + :end-point-obj "ctyslumc-slums" + :borrow '((ctywide 0 lprotect special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-escort-kid-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-13" + :art-group "scenecamera" + :anim "city-escort-kid-intro" + :parts 10 + :command-list '((0 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) update-mood-copy-ctywide) + (set! (-> gp-0 info sky) #t) + ) + ) + (let ((gp-1 (level-get *level* 'lyskdcd))) + (the-as object (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) update-mood-copy-ctywide) + (let ((v0-4 #t)) + (set! (-> gp-1 info sky) v0-4) + v0-4 + ) + ) + ) + ) + ) + ) + (send-event + *traffic-manager* + 'kill-traffic-sphere + (new 'static 'vector :x 4707533.0 :y 32768.0 :z 226918.4 :w 172032.0) + ) + (kill "parking-spot-8" store #f) + ) + (844 (part-tracker + "group-hideout-bling-bling" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 844.0) (new 'static 'bfloat :data 857.0)) + ) + ) + (10000 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-0 info sky) #f) + ) + ) + (let ((gp-1 (level-get *level* 'lyskdcd))) + (the-as + object + (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-1 info sky) #f) + #f + ) + ) + ) + ) + ) + (task-close! "city-escort-kid-introduction") + ) + ) + :cut-list '(61 171 269 361 461 563 892 1012 1093 1170 740 860 941 1010) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'lyskdcd + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'lyskdcd + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crocadog-highres" + :level 'lyskdcd + :art-group "skel-crocadog-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "kid-highres" + :level 'lyskdcd + :art-group "skel-kid-highres" + :prefix "" + :draw-frames '((min 1012)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "youngsamos-highres" + :level 'lyskdcd + :art-group "skel-youngsamos-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'lyskdcd + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "escort-kid-intro" + :end-point-obj "escort-kid-intro" + :borrow '((ctywide 0 lkiddoge special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-hideout-bling-bling + :id 192 + :duration (seconds 0.017) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 901 :flags (bit6)) (sp-item 902 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 901 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 160.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 6.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 902 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.075)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 196.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "ruins-tower-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-13" + :art-group "scenecamera" + :anim "ruins-tower-intro" + :parts 11 + :command-list '((0 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) update-mood-copy-ctywide) + (set! (-> gp-0 info sky) #t) + ) + ) + (let ((gp-1 (level-get *level* 'ltrntess))) + (the-as object (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) update-mood-copy-ctywide) + (let ((v0-4 #t)) + (set! (-> gp-1 info sky) v0-4) + v0-4 + ) + ) + ) + ) + ) + ) + (send-event + *traffic-manager* + 'kill-traffic-sphere + (new 'static 'vector :x 4707533.0 :y 32768.0 :z 226918.4 :w 172032.0) + ) + ) + (917 (part-tracker + "group-hideout-knife-glint" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 917.0) (new 'static 'bfloat :data 972.0)) + ) + ) + (1140 (part-tracker + "group-hideout-knife-glint" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range (new 'static 'bfloat :data 1140.0) (new 'static 'bfloat :data 1240.0)) + ) + ) + (10000 + (apply ,(lambda () + (let ((gp-0 (level-get *level* 'hideout))) + (when gp-0 + (clear-mood-context (-> gp-0 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) + ) + (set! (-> gp-0 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-0 info sky) #f) + ) + ) + (let ((gp-1 (level-get *level* 'ltrntess))) + (the-as + object + (when gp-1 + (clear-mood-context (-> gp-1 mood-context)) + (if #f + ((the-as (function mood-context symbol) #f) (-> gp-1 mood-context)) + ) + (set! (-> gp-1 mood-func) (the-as (function mood-context float int none) update-mood-hideout)) + (set! (-> gp-1 info sky) #f) + #f + ) + ) + ) + ) + ) + (setting-pers music-volume mode 'abs value (new 'static 'bfloat) time (seconds 2)) + (task-close! "ruins-tower-introduction") + ) + ) + :cut-list '(150 312 541 591 636 796 852 976 1007 1131) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'ltrntess + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ltrntess + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((214 636) (796 max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ltrntess + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min 636) (796 max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "torn-highres" + :level 'ltrntess + :art-group "skel-torn-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tess-highres" + :level 'ltrntess + :art-group "skel-tess-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctysluma-tower-intro" + :end-point-obj "ctysluma-tower-intro-exit" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-hideout-knife-glint + :id 193 + :duration (seconds 0.017) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 903 :flags (bit6)) (sp-item 904 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 903 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 6.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 904 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + + + + diff --git a/test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc b/test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc new file mode 100644 index 0000000000..09e77faae4 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc @@ -0,0 +1,2505 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(if (not (nmember "common" *kernel-packages*)) + (set! *kernel-packages* (cons "common" *kernel-packages*)) + ) + +;; failed to figure out what this is: +(defpartgroup group-warpgate + :id 130 + :duration (seconds 0.267) + :flags (use-local-clock unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 4) (degrees 0) (degrees 0)) + :parts ((sp-item 586 :flags (is-3d launch-asap bit7)) (sp-item 587 :flags (launch-asap)) (sp-item 588 :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 586 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x13 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 4.75)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 196.0) + (sp-flt spt-fade-a -3.1875) + (sp-int spt-timer 80) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 587 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 14)) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 48.0) + (sp-flt spt-fade-a -0.8) + (sp-int spt-timer 80) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpart 588 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-x (meters 0) (meters 2) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 255.0) + (sp-flt spt-scalevel-x (meters -0.0025)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 80) + (sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-3) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-dust-plume :id 131 :bounds (static-bspherem 0 0 0 15) :parts ((sp-item 589))) + +;; failed to figure out what this is: +(defpart 589 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 10) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 106.0 16.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.033333335) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.033333335) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.04 -0.08 1.0) + (sp-flt spt-accel-y 1.3653333) + (sp-rnd-flt spt-friction 0.95 0.03 1.0) + (sp-int spt-timer 1300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-dust-hover :id 132 :bounds (static-bspherem 0 0 0 15) :parts ((sp-item 590))) + +;; failed to figure out what this is: +(defpart 590 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 5) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 106.0 16.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.033333335) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.016666668) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.04 -0.08 1.0) + (sp-flt spt-accel-y 1.3653333) + (sp-rnd-flt spt-friction 0.95 0.03 1.0) + (sp-int spt-timer 1300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-thruster + :id 133 + :linger-duration (seconds 2) + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 12) + :rotate ((degrees 8) (degrees 0) (degrees 0)) + :parts ((sp-item 591 :flags (bit6 bit7)) + (sp-item 592 :flags (bit6 bit7)) + (sp-item 593 :flags (bit7)) + (sp-item 594 :flags (bit7)) + (sp-item 595 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-airtrain-thruster-off + :id 134 + :linger-duration (seconds 2) + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 12) + :rotate ((degrees 8) (degrees 0) (degrees 0)) + :parts ((sp-item 595 :fade-after (meters 120) :falloff-to (meters 90) :flags (bit7)) + (sp-item 596 :fade-after (meters 120) :falloff-to (meters 90) :flags (bit7)) + (sp-item 597 :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 591 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.4) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 64.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 409.6) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 592 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 4.8) (meters 0.6) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 64.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 2.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 409.6) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 593 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 196.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.05) (meters -0.1) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-rnd-flt spt-fade-a -0.21333334 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y 0.68266666 2.048 1.0) + (sp-rnd-flt spt-friction 0.94 0.04 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 sp-cpuinfo-flag-14) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 596 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 1) (meters 1) 1.0) + (sp-flt spt-r 196.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 10.0 4.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.05) (meters -0.1) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.006666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-rnd-flt spt-fade-a -0.21333334 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y 0.68266666 2.048 1.0) + (sp-rnd-flt spt-friction 0.94 0.04 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 sp-cpuinfo-flag-14) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 597 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1.4) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 48.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 48.0 8.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 409.6) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 594 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-rnd-flt spt-num 0.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 0.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-omega 12.288 4.096 1.0) + (sp-rnd-flt spt-vel-x (meters -0.013333334) (meters 0.026666667) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.1) (meters -0.06666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.013333334) (meters 0.026666667) 1.0) + (sp-flt spt-fade-g -1.0) + (sp-flt spt-fade-a -2.56) + (sp-rnd-flt spt-accel-x 0.0 6.826667 1.0) + (sp-rnd-flt spt-friction 0.96 0.02 1.0) + (sp-int-plain-rnd spt-timer 25 24 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 sp-cpuinfo-flag-14) + (sp-func spt-func 'sparticle-motion-blur) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 595 + :init-specs ((sp-flt spt-num 0.4) + (sp-int spt-rot-x 8) + (sp-flt spt-r 1638.4) + (sp-flt spt-g 1331.2) + (sp-flt spt-b 1433.6) + (sp-rnd-flt spt-vel-y (meters -0.05) (meters -0.016666668) 1.0) + (sp-flt spt-fade-r 32.768) + (sp-flt spt-fade-g 28.671999) + (sp-flt spt-fade-b 26.623999) + (sp-rnd-flt spt-accel-x 0.0 6.826667 1.0) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 100) + (sp-cpuinfo-flags distort) + (sp-int spt-next-time 50) + (sp-launcher-by-id spt-next-launcher 598) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 598 + :init-specs ((sp-flt spt-fade-r 0.0) (sp-flt spt-fade-g 0.0) (sp-flt spt-fade-b -4.096)) + ) + +;; failed to figure out what this is: +(defpartgroup group-warp-hellcat-thruster + :id 135 + :duration (seconds 3) + :flags (use-local-clock unk-4) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 599 :flags (is-3d bit7)) + (sp-item 600 :flags (is-3d bit7)) + (sp-item 601 :flags (bit7)) + (sp-item 602 :flags (is-3d bit7)) + (sp-item 603 :flags (is-3d bit7)) + (sp-item 604 :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 599 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 600 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 601 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -4.75)) + (sp-flt spt-scale-x (meters 1.75)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 602 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 603 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x90 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -5.15)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-int spt-rot-x 4) + (sp-flt spt-rot-z (degrees 90.0)) + (sp-flt spt-scale-y (meters 2)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 96.0 1.0) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 128.0 64.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 604 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.45)) + (sp-flt spt-y (meters 1.1)) + (sp-flt spt-z (meters -4.75)) + (sp-flt spt-scale-x (meters 1.75)) + (sp-flt spt-rot-x 102.4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer 5) + (sp-cpuinfo-flags glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defskelgroup skel-warp-gate warp-gate 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3 0 4) + :origin-joint-index 3 + ) + +;; definition of type warp-gate +(deftype warp-gate (process-drawable) + ((root-override collide-shape :offset 128) + (level-name uint32 :offset-assert 200) + (on-notice pair :offset-assert 204) + (on-activate pair :offset-assert 208) + (on-close pair :offset-assert 212) + (wait-for pair :offset-assert 216) + (continue continue-point :offset-assert 220) + (distance meters :offset-assert 224) + (anim-speed float :offset-assert 228) + (test-time time-frame :offset-assert 232) + (center vector :inline :offset-assert 240) + ) + :heap-base #x80 + :method-count-assert 26 + :size-assert #x100 + :flag-assert #x1a00800100 + (:methods + (idle () _type_ :state 20) + (use (continue-point) _type_ :state 21) + (hidden () _type_ :state 22) + (init-skel-and-collide (_type_) none 23) + (setup-fields (_type_) none 24) + (handle-notice (_type_) continue-point 25) + ) + ) + +;; definition for method 3 of type warp-gate +(defmethod inspect warp-gate ((obj warp-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tlevel-name: ~A~%" (-> obj level-name)) + (format #t "~2Ton-notice: ~A~%" (-> obj on-notice)) + (format #t "~2Ton-activate: ~A~%" (-> obj on-activate)) + (format #t "~2Ton-close: ~A~%" (-> obj on-close)) + (format #t "~2Twait-for: ~A~%" (-> obj wait-for)) + (format #t "~2Tcontinue: ~A~%" (-> obj continue)) + (format #t "~2Tdistance: (meters ~m)~%" (-> obj distance)) + (format #t "~2Tanim-speed: ~f~%" (-> obj anim-speed)) + (format #t "~2Ttest-time: ~D~%" (-> obj test-time)) + (format #t "~2Tcenter: ~`vector`P~%" (-> obj center)) + (label cfg-4) + obj + ) + +;; definition for method 25 of type warp-gate +(defmethod handle-notice warp-gate ((obj warp-gate)) + (with-pp + (let ((s5-0 (eval! + (new 'stack 'script-context (the-as basic (process->ppointer pp)) pp (the-as vector #f)) + (-> obj on-notice) + ) + ) + ) + (cond + ((= s5-0 'hide) + (logior! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) #f) + ) + (s5-0 + (logclear! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) (get-continue-by-name *game-info* (the-as string (car s5-0)))) + (set! (-> obj on-activate) (the-as pair (car (cdr s5-0)))) + (set! (-> obj wait-for) (the-as pair (car (cdr (cdr s5-0))))) + (set! (-> obj on-close) (the-as pair (car (cdr (cdr (cdr s5-0)))))) + ) + (else + (set! (-> obj continue) #f) + ) + ) + ) + (-> obj continue) + ) + ) + +;; failed to figure out what this is: +(defstate hidden (warp-gate) + :virtual #t + :code (the-as (function none :behavior warp-gate) sleep-code) + ) + +;; failed to figure out what this is: +(defstate idle (warp-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('hide) + (go-virtual hidden) + ) + (('effect) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 130) + 0 + #f + #f + #f + (-> self node-list data 4 bone transform) + :to *entity-pool* + ) + ) + ) + ) + :code (behavior () + (remove-setting! 'allow-progress) + (set! (-> self state-time) (-> self clock frame-counter)) + (update-transforms (-> self root-override)) + (until #f + (handle-notice self) + (when (and (and *target* + (and (>= (-> self distance) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + (zero? (logand (focus-status teleporting) (-> *target* focus-status))) + ) + ) + (and (-> self continue) + (not (logtest? (focus-status in-head edge-grab pole flut tube board pilot mech indax) (-> *target* focus-status)) + ) + (-> *setting-control* user-current airlock) + (not (-> *setting-control* user-current hint)) + ) + ) + (talker-surpress!) + (when (and (can-display-query? self (the-as string #f) -99.0) + (cond + ((and (-> *target* next-state) (let ((v1-30 (-> *target* next-state name))) + (or (= v1-30 'target-warp-in) (= v1-30 'target-warp-out)) + ) + ) + (set! (-> self state-time) (-> self clock frame-counter)) + #f + ) + (else + #t + ) + ) + (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.1)) + ) + (if (and (cpad-pressed? 0 triangle) (process-grab? *target* #f)) + (go-virtual use (-> self continue)) + ) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (-> self on-close) + ) + (let ((gp-0 (new + 'stack + 'font-context + *font-default-matrix* + 32 + 320 + 0.0 + (font-color default-#cddbcd) + (font-flags shadow kerning) + ) + ) + ) + (let ((v1-51 gp-0)) + (set! (-> v1-51 width) (the float (the-as float #x154))) + ) + (let ((v1-52 gp-0)) + (set! (-> v1-52 height) (the float (the-as float #x50))) + ) + (let ((v1-53 gp-0)) + (set! (-> v1-53 scale) 0.9) + ) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (game-text-id text-x182) #f) gp-0 #f 44 320) + ) + ) + ) + (cond + ((-> self continue) + (seek! (-> self anim-speed) 1.0 (* 2.0 (-> self clock seconds-per-frame))) + (setup-masks (-> self draw) 2 0) + ) + (else + (setup-masks (-> self draw) 0 2) + (seek! (-> self anim-speed) 0.0 (* 2.0 (-> self clock seconds-per-frame))) + ) + ) + (update! (-> self sound)) + (ja-post) + (suspend) + (ja :num! (loop! (-> self anim-speed))) + ) + #f + (none) + ) + ) + +;; failed to figure out what this is: +(defstate use (warp-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (the-as object (case event-type + (('effect) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 130) + 0 + #f + #f + #f + (-> self node-list data 4 bone transform) + :to *entity-pool* + ) + ) + ) + ) + ) + :exit (behavior () + (remove-setting! 'mode-name) + (remove-setting! 'interp-time) + (none) + ) + :trans (behavior () + (send-event *camera* 'joystick 0 0) + (none) + ) + :code (behavior ((arg0 continue-point)) + (local-vars (v1-38 symbol)) + (kill-current-talker (the-as symbol '()) '() 'exit) + (set-setting! 'mode-name 'cam-fixed 0 0) + (set-setting! 'interp-time 'abs 0 0) + (set! (-> self state-time) (-> self clock frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (when (not arg0) + (process-release? *target*) + (go-virtual idle) + ) + (set-setting! 'allow-progress #f 0 0) + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) #t) + (apply-settings *setting-control*) + (let ((s5-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> s5-0 from) (process->ppointer self)) + (set! (-> s5-0 num-params) 4) + (set! (-> s5-0 message) 'change-state) + (set! (-> s5-0 param 0) (the-as uint target-warp-out)) + (let ((v1-22 (new 'static 'vector))) + (set! (-> v1-22 quad) (-> self center quad)) + (set! (-> s5-0 param 1) (the-as uint v1-22)) + ) + (set! (-> s5-0 param 2) (the-as uint (target-pos 0))) + (set! (-> s5-0 param 3) (the-as uint (process->handle self))) + (send-event-function *target* s5-0) + ) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (-> self on-activate) + ) + (while (begin + (set! v1-38 (when (-> self wait-for) + (let* ((s5-1 (-> self wait-for)) + (a1-8 (car s5-1)) + ) + (while (not (null? s5-1)) + (when (not (member (level-status *level* (the-as symbol a1-8)) '(loaded active))) + (set! v1-38 #t) + (goto cfg-21) + ) + (set! s5-1 (cdr s5-1)) + (set! a1-8 (car s5-1)) + ) + ) + #f + ) + ) + (label cfg-21) + (or v1-38 (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 2))) + ) + (update! (-> self sound)) + (suspend) + (ja :num! (loop!)) + (ja-post) + ) + (if (not (logtest? (-> arg0 flags) (continue-flags cf4))) + (set-blackout-frames (seconds 0.05)) + ) + (start 'play arg0) + (let ((gp-1 (-> self clock frame-counter))) + (until (>= (- (-> self clock frame-counter) gp-1) (seconds 1)) + (suspend) + ) + ) + (while (and *target* + (and (>= 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + (zero? (logand (focus-status teleporting) (-> *target* focus-status))) + ) + ) + (suspend) + (ja :num! (loop!)) + (ja-post) + ) + (logior! (-> self mask) (process-mask actor-pause)) + (go-virtual idle) + (none) + ) + ) + +;; definition for method 23 of type warp-gate +;; WARN: Return type mismatch draw-control vs none. +(defmethod init-skel-and-collide warp-gate ((obj warp-gate)) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 penetrated-by) (penetrate)) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 3) + (set-vector! (-> v1-2 local-sphere) 0.0 12288.0 0.0 16384.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-2) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-5 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-warp-gate" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (none) + ) + +;; definition for method 24 of type warp-gate +;; INFO: Used lq/sq +;; WARN: Return type mismatch float vs none. +(defmethod setup-fields warp-gate ((obj warp-gate)) + (set! (-> obj level-name) (the-as uint (-> obj level name))) + (set! (-> obj on-notice) (res-lump-struct (-> obj entity) 'on-notice pair)) + (set! (-> obj on-activate) #f) + (set! (-> obj wait-for) #f) + (set! (-> obj continue) #f) + (set! (-> obj on-close) #f) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 130) obj)) + (set! (-> obj center quad) (-> obj root-override trans quad)) + (set! (-> obj center y) (+ 13516.8 (-> obj center y))) + (set! (-> obj sound) + (new 'process 'ambient-sound (static-sound-spec "warpgate" :fo-max 30) (-> obj root-override trans)) + ) + (set! (-> obj distance) (res-lump-float (-> obj entity) 'distance :default 20480.0)) + (none) + ) + +;; definition for function warp-gate-init +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. +(defbehavior warp-gate-init warp-gate ((arg0 entity-actor) (arg1 vector)) + (stack-size-set! (-> self main-thread) 512) + (init-skel-and-collide self) + (if arg0 + (process-drawable-from-entity! self arg0) + ) + (if arg1 + (set! (-> self root-override trans quad) (-> arg1 quad)) + ) + (logior! (-> self mask) (process-mask actor-pause)) + (setup-fields self) + (go-virtual idle) + (none) + ) + +;; definition for method 11 of type warp-gate +(defmethod init-from-entity! warp-gate ((obj warp-gate) (arg0 entity-actor)) + (warp-gate-init arg0 (the-as vector #f)) + (none) + ) + +;; definition for symbol *warp-jump-mods*, type surface +(define *warp-jump-mods* (new 'static 'surface + :name 'jump + :turnv 273066.66 + :turnvv 1820444.5 + :tiltv 65536.0 + :tiltvv 262144.0 + :transv-max 65536.0 + :target-speed 65536.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :turnvf 30.0 + :turnvvf 30.0 + :tiltvf 150.0 + :tiltvvf 15.0 + :mode 'air + :flags (surface-flag turn-to-vel turn-when-centered gun-off) + ) + ) + +;; failed to figure out what this is: +(defstate target-warp-out (target) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('death-end) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-control-status no-draw))))) + (set! (-> self draw status) (the-as draw-control-status v0-0)) + v0-0 + ) + ) + (('warp-gate) + (if (not (-> self control unknown-spool-anim00)) + 'busy + ) + ) + (else + (target-generic-event-handler proc arg1 event-type event) + ) + ) + ) + :enter (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (set! (-> self state-time) (-> self clock frame-counter)) + (logclear! (-> self control status) (collide-status on-surface on-ground touch-surface)) + (set! (-> self control mod-surface) *warp-jump-mods*) + (set! (-> self control unknown-vector37 quad) (-> arg0 quad)) + (set! (-> self control unknown-vector38 quad) (-> arg1 quad)) + (set! (-> self control unknown-vector37 y) (+ -4096.0 (-> self control unknown-vector37 y))) + (set! (-> self control unknown-word04) (the-as uint #f)) + (set! (-> self control unknown-handle02) (the-as handle arg2)) + (vector-reset! (-> self control transv)) + (logior! (-> self state-flags) (state-flags sf6)) + (set! (-> self alt-cam-pos quad) (-> arg1 quad)) + (forward-up-nopitch->quaternion + (-> self control dir-targ) + (vector-! (new 'stack-no-clear 'vector) arg1 (-> self control trans)) + (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + ) + (none) + ) + :exit (behavior () + (logclear! (-> self state-flags) (state-flags sf6)) + (none) + ) + :code (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! (-> self draw art-group data 30) :num! (seek! (ja-aframe 16.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 16.0 0))) + ) + (vector-! (-> self control transv) (-> self control unknown-vector37) (-> self control trans)) + (vector-xz-normalize! (-> self control transv) 32768.0) + (let ((v1-18 (new-stack-vector0))) + (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! v1-18 (-> self control transv) (vector-float*! v1-18 (-> self control dynam gravity-normal) f0-6)) + ) + (let* ((f0-7 (vector-length v1-18)) + (f1-1 f0-7) + (f2-4 + (- (sqrtf + (* 2.0 + (-> self control dynam gravity-length) + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector37) (-> self control trans)) + ) + ) + ) + (* 0.008333334 (- (-> self control dynam gravity-length))) + ) + ) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-4) + (vector-float*! v1-18 v1-18 (/ f0-7 f1-1)) + ) + ) + ) + (let ((v1-20 (-> self control root-prim))) + (set! (-> v1-20 prim-core collide-as) (collide-spec)) + (set! (-> v1-20 prim-core collide-with) (collide-spec)) + ) + 0 + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self trans-hook) + (lambda :behavior target + () + (let ((v1-0 (new-stack-vector0)) + (f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! v1-0 (-> self control transv) (vector-float*! v1-0 (-> self control dynam gravity-normal) f0-1)) + (let* ((f1-2 (vector-length v1-0)) + (f2-0 f1-2) + ) + (if (< f0-1 0.0) + (set! f0-1 8192.0) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-1) + (vector-float*! v1-0 v1-0 (/ f1-2 f2-0)) + ) + ) + ) + (let ((gp-1 (vector-! (new-stack-vector0) (-> self control unknown-vector37) (-> self control trans)))) + (set! (-> gp-1 y) 0.0) + (send-event *target* 'sidekick #f) + (when (and (or (< (vector-dot gp-1 (-> self control transv)) 0.0) (-> self control unknown-spool-anim00)) + (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) + ) + (vector-seek! (-> self draw color-mult) (new 'static 'vector) (* 2.0 (-> self clock seconds-per-frame))) + (set! (-> self control transv x) (* 0.95 (-> self control transv x))) + (set! (-> self control transv z) (* 0.95 (-> self control transv z))) + (when (not (-> self control unknown-spool-anim00)) + (sound-play "warpgate-tele") + (send-event (handle->process (-> self control unknown-handle02)) 'effect) + (send-event self 'draw #f) + (set! (-> self control unknown-word04) (the-as uint #t)) + ) + ) + ) + (none) + ) + ) + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (ja-aframe 40.0 0)) + :frame-num (ja-aframe 16.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 40.0 0))) + ) + (sleep-code) + (none) + ) + :post target-no-stick-post + ) + +;; failed to figure out what this is: +(defstate target-warp-in (target) + :event target-generic-event-handler + :enter (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (set! (-> self control did-move-to-pole-or-max-jump-height) (the-as float arg2)) + ((-> target-warp-out enter) arg0 arg1 arg2) + (none) + ) + :exit (-> target-warp-out exit) + :trans (behavior () + (set! (-> self control transv x) + (* 2.4 (- (-> self control unknown-vector38 x) (-> self control unknown-vector37 x))) + ) + (set! (-> self control transv z) + (* 2.4 (- (-> self control unknown-vector38 z) (-> self control unknown-vector37 z))) + ) + (if (logtest? (-> self control status) (collide-status on-surface)) + (go target-hit-ground #f) + ) + (none) + ) + :code (behavior ((arg0 vector) (arg1 vector) (arg2 target)) + (let ((a0-1 (-> self control did-move-to-pole-or-max-jump-height))) + (when a0-1 + (let ((s5-0 (res-lump-struct (the-as res-lump a0-1) 'camera-name structure))) + (when s5-0 + (logclear! (-> self state-flags) (state-flags sf6)) + (process-spawn-function + process + (lambda ((arg0 string)) + (local-vars (a1-2 event-message-block)) + (with-pp + (add-setting! 'entity-name arg0 0 0) + (until (send-event-function *camera* a1-2) + (suspend) + (set! a1-2 (new 'stack-no-clear 'event-message-block)) + (let ((v1-2 (process->ppointer pp))) + (set! (-> a1-2 from) v1-2) + ) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'intro-done?) + ) + (none) + ) + ) + s5-0 + :to self + ) + ) + ) + ) + ) + (let ((v1-13 (-> self control root-prim))) + (set! (-> self control backup-collide-as) (-> v1-13 prim-core collide-as)) + (set! (-> self control backup-collide-with) (-> v1-13 prim-core collide-with)) + ) + (let ((v1-16 (-> self control root-prim))) + (set! (-> v1-16 prim-core collide-as) (collide-spec)) + (set! (-> v1-16 prim-core collide-with) (collide-spec)) + ) + 0 + (ja-channel-set! 0) + (vector-reset! (-> self control transv)) + (move-to-point! (-> self control) (-> self control unknown-vector37)) + (let ((s5-1 (-> self clock frame-counter))) + (while (or (< (- (-> self clock frame-counter) s5-1) (seconds 1)) + (< 81920.0 (vector-vector-distance (camera-pos) (-> self control trans))) + ) + (suspend) + ) + ) + (set-heading-vec! (-> self control) (-> self control transv)) + (rot->dir-targ! (-> self control)) + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self post-hook) target-no-stick-post) + (ja-channel-set! 1) + (send-event + (if arg2 + (-> arg2 child 3) + ) + 'effect + ) + (send-event self 'draw #t) + (sound-play "warpgate-tele") + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (ja-aframe 42.0 0)) + :frame-num (ja-aframe 40.0 0) + ) + (until (ja-done? 0) + (let ((v1-59 (new-stack-vector0))) + (let ((f0-5 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! v1-59 (-> self control transv) (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-5)) + ) + (let* ((f0-6 (vector-length v1-59)) + (f1-1 f0-6) + (f2-3 + (- (sqrtf (* 4096.0 (-> self control dynam gravity-length))) + (* 0.008333334 (- (-> self control dynam gravity-length))) + ) + ) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3) + (vector-float*! v1-59 v1-59 (/ f0-6 f1-1)) + ) + ) + ) + (suspend) + (ja :num! (seek! (ja-aframe 42.0 0))) + ) + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (ja-aframe 50.0 0)) + :frame-num (ja-aframe 42.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 50.0 0))) + ) + (let ((v1-80 (-> self control root-prim))) + (set! (-> v1-80 prim-core collide-as) (-> self control backup-collide-as)) + (set! (-> v1-80 prim-core collide-with) (-> self control backup-collide-with)) + ) + (ja-no-eval :group! (-> self draw art-group data 30) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 30)) frames num-frames) -1))) + :frame-num (ja-aframe 50.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (target-falling-anim -1 (seconds 0.33)) + (none) + ) + :post target-no-move-post + ) + +;; failed to figure out what this is: +(defskelgroup skel-air-train air-train 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 -2 12.5) + :origin-joint-index 3 + ) + +;; definition of type air-train +(deftype air-train (warp-gate) + "NOTE - I guess this is why sometimes the air-train makes the warp-gate sound" + ((part-exhaust-left sparticle-launch-control :offset-assert 256) + (part-exhaust-right sparticle-launch-control :offset-assert 260) + (part-dust sparticle-launch-control :offset-assert 264) + (dust-y float :offset-assert 268) + (hover-sound sound-id :offset-assert 272) + (base-pos vector :inline :offset-assert 288) + ) + :heap-base #xb0 + :method-count-assert 26 + :size-assert #x130 + :flag-assert #x1a00b00130 + ) + +;; definition for method 3 of type air-train +(defmethod inspect air-train ((obj air-train)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type warp-gate inspect))) + (t9-0 obj) + ) + (format #t "~2Tpart-exhaust-left: ~A~%" (-> obj part-exhaust-left)) + (format #t "~2Tpart-exhaust-right: ~A~%" (-> obj part-exhaust-right)) + (format #t "~2Tpart-dust: ~A~%" (-> obj part-dust)) + (format #t "~2Tdust-y: ~f~%" (-> obj dust-y)) + (format #t "~2Thover-sound: ~D~%" (-> obj hover-sound)) + (format #t "~2Tbase-pos: #~%" (-> obj base-pos)) + (label cfg-4) + obj + ) + +;; definition for method 7 of type air-train +;; WARN: Return type mismatch warp-gate vs air-train. +(defmethod relocate air-train ((obj air-train) (arg0 int)) + (if (nonzero? (-> obj part-exhaust-left)) + (&+! (-> obj part-exhaust-left) arg0) + ) + (if (nonzero? (-> obj part-exhaust-right)) + (&+! (-> obj part-exhaust-right) arg0) + ) + (if (nonzero? (-> obj part-dust)) + (&+! (-> obj part-dust) arg0) + ) + (the-as air-train ((method-of-type warp-gate relocate) obj arg0)) + ) + +;; definition for method 10 of type air-train +(defmethod deactivate air-train ((obj air-train)) + (sound-stop (-> obj hover-sound)) + (if (nonzero? (-> obj part-exhaust-left)) + (kill-and-free-particles (-> obj part-exhaust-left)) + ) + (if (nonzero? (-> obj part-exhaust-right)) + (kill-and-free-particles (-> obj part-exhaust-right)) + ) + (if (nonzero? (-> obj part-dust)) + (kill-and-free-particles (-> obj part-dust)) + ) + ((method-of-type warp-gate deactivate) obj) + (none) + ) + +;; definition for method 23 of type air-train +;; WARN: Return type mismatch draw-control vs none. +(defmethod init-skel-and-collide air-train ((obj air-train)) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) cshape-reaction-default) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-query vector vector object) nothing) + ) + (set! (-> s5-0 penetrated-by) (penetrate)) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s5-0 total-prims) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-spec obstacle)) + (set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 69632.0) + (set! (-> s5-0 root-prim) s4-0) + ) + (let ((v1-13 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-13 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-13 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-13 prim-core action) (collide-action solid)) + (set! (-> v1-13 transform-index) 4) + (set-vector! (-> v1-13 local-sphere) 0.0 10240.0 0.0 24576.0) + ) + (let ((v1-15 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-15 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-15 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-15 prim-core action) (collide-action solid)) + (set! (-> v1-15 transform-index) 3) + (set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 53248.0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-18 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-18 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-18 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-air-train" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (none) + ) + +;; definition for method 24 of type air-train +;; INFO: Used lq/sq +;; WARN: Return type mismatch sound-id vs none. +(defmethod setup-fields air-train ((obj air-train)) + (let ((t9-0 (method-of-type warp-gate setup-fields))) + (t9-0 obj) + ) + (set! (-> obj base-pos quad) (-> obj root-override trans quad)) + (let ((v1-2 (-> obj level-name))) + (set! (-> obj dust-y) (cond + ((= v1-2 'nest) + -1105.92 + ) + ((= v1-2 'caspad) + 114647.04 + ) + (else + (the-as float #x7f800000) + ) + ) + ) + ) + (set! (-> obj part-exhaust-left) (create-launch-control (-> *part-group-id-table* 134) obj)) + (set! (-> obj part-exhaust-right) (create-launch-control (-> *part-group-id-table* 134) obj)) + (set! (-> obj part-dust) (create-launch-control (-> *part-group-id-table* 132) obj)) + (set! (-> obj root-override pause-adjust-distance) 368640.0) + (set! (-> obj hover-sound) (sound-play "air-train")) + (none) + ) + +;; failed to figure out what this is: +(defstate idle (air-train) + :virtual #t + :post (behavior () + (let ((t9-0 (-> (method-of-type warp-gate idle) post))) + (if t9-0 + ((the-as (function none) t9-0)) + ) + ) + (set! (-> self root-override trans y) + (+ (-> self base-pos y) + (* 696.32 (cos (* 66.19798 (the float (mod (-> self clock frame-counter) 990))))) + (* 450.56 (cos (* 42.25403 (the float (mod (-> self clock frame-counter) 1551))))) + ) + ) + (spawn-with-cspace (-> self part-exhaust-left) (-> self node-list data 5)) + (spawn-with-cspace (-> self part-exhaust-right) (-> self node-list data 6)) + (let ((f0-9 (-> self dust-y))) + (when (!= f0-9 (the-as float #x7f800000)) + (let ((a1-2 (new 'stack-no-clear 'vector))) + (set! (-> a1-2 quad) (-> self root-override trans quad)) + (set! (-> a1-2 y) f0-9) + (spawn (-> self part-dust) a1-2) + ) + ) + ) + (sound-play "air-train" :id (-> self hover-sound) :position (-> self root-override trans)) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate use (air-train) + :virtual #t + :code (behavior ((arg0 continue-point)) + (kill-current-talker (the-as symbol '()) '() 'exit) + (set! (-> self state-time) (-> self clock frame-counter)) + (logclear! (-> self mask) (process-mask actor-pause)) + (when (not arg0) + (process-release? *target*) + (go-virtual idle) + ) + (set-setting! 'allow-progress #f 0 0) + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) #t) + (apply-settings *setting-control*) + (sound-stop (-> self hover-sound)) + (set! (-> self hover-sound) (new 'static 'sound-id)) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (-> self on-activate) + ) + (sleep-code) + (none) + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-air-train-in-caspad" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-air-train-in-caspad" + :parts 3 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 102) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 102) + ) + ) + (102 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 102 280) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 102 280) + ) + ) + (265 (fadeout (frame-time-30 (new 'static 'bfloat :data 15.0)))) + ) + :cut-list '(51 102 226) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'ctyport + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((102 max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train" + :end-point-obj "caspad-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-air-train-in-nest" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-air-train-in-nest" + :parts 3 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 102) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 102) + ) + ) + (102 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 102 280) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 102 280) + ) + ) + (265 (fadeout (frame-time-30 (new 'static 'bfloat :data 15.0)))) + ) + :cut-list '(51 102 226) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'ctyport + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((102 max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train" + :end-point-obj "nest-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "city-air-train-out" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-air-train-out" + :parts 2 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 98) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 98) + ) + ) + (98 + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 98 240) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 98 240) + ) + ) + (230 (fadeout (frame-time-30 (new 'static 'bfloat :data 10.0)))) + ) + :cut-list '(98 188) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljakdax + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljakdax + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'ctyport + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train" + :end-point-obj "ctyport-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "city-ashelin-drop-off" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-87" + :art-group "scenecamera" + :anim "city-ashelin-drop-off" + :parts 3 + :command-list '((0 + (kill "air-train-1") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1585152.0 :y 31539.2 :z 7225344.0 :w 26624.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 9.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1570816.0 :y 31539.2 :z 7249920.0 :w 30720.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 21.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1556480.0 :y 31539.2 :z 7278592.0 :w 34816.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 48.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 1542144.0 :y 31539.2 :z 7303168.0 :w 34816.0)) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1527808.0 :y 31539.2 :z 7331840.0 :w 34816.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 208.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1499136.0 :y 31539.2 :z 7360512.0 :w 34816.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 225.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1486848.0 :y 31539.2 :z 7380992.0 :w 38912.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 233.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1451212.8 :y 31539.2 :z 7389184.0 :w 38912.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 245.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1409433.6 :y 31539.2 :z 7412531.0 :w 38912.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 245.0)) + ) + (fma-sphere + (nav kill-once) + sphere + (new 'static 'vector :x 1518592.0 :y 31539.2 :z 7317504.0 :w 22528.0) + duration + (frame-range (new 'static 'bfloat) (new 'static 'bfloat :data 295.0)) + ) + (fma-sphere (nav kill-once) sphere (new 'static 'vector :x 1525350.4 :y 31539.2 :z 7272857.5 :w 17203.2)) + ) + (177 (part-tracker + "group-warp-hellcat-thruster" + entity + "hellcat" + joint + "main" + track + #t + duration + (frame-range 177 295) + ) + ) + (290 (fadeout (frame-time-30 (new 'static 'bfloat :data 10.0)))) + ) + :cut-list '(115 177) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'ljkdxash + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'ljkdxash + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ashelin-highres" + :level 'ljkdxash + :art-group "skel-ashelin-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "hellcat" + :level 'lwidea + :art-group "skel-hellcat" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ctyport-air-train-ashelin" + :end-point-obj "ctyport-start" + :borrow '((ctywide 1 lwidea special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "caspad-air-train-in" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "air-train-3" + :art-group "scenecamera" + :anim "caspad-air-train-in" + :parts 4 + :command-list '((0 + (kill "air-train-3") + (fadein (frame-time-30 (new 'static 'bfloat :data 5.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 285) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 285) + ) + ) + (285 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 285 480) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 285 480) + ) + ) + (293 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 293 370) + ) + ) + (470 (fadeout (frame-time-30 10))) + ) + :cut-list '(93 285) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'caspad + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'caspad + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'caspad + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'caspad + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "caspad-warp" + :end-point-obj "ctyport-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "caspad-air-train-out" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "air-train-3" + :art-group "scenecamera" + :anim "caspad-air-train-out" + :parts 3 + :command-list '((0 + (kill "air-train-3") + (fadein (frame-time-30 (new 'static 'bfloat :data 10.0))) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 195) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 195) + ) + ) + (80 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 80 190) + ) + ) + (180 + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 180 295) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 180 295) + ) + ) + (285 (fadeout (frame-time-30 (new 'static 'bfloat :data 10.0)))) + (10000 (apply )) + ) + :cut-list '(180) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'caspad + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'caspad + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'caspad + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'caspad + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "caspad-warp" + :end-point-obj "caspad-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "nest-air-train-in" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-90" + :art-group "scenecamera" + :anim "nest-air-train-in" + :parts 3 + :command-list '((0 + (kill "air-train-4") + (fadein (frame-time-30 (new 'static 'bfloat :data 5.0))) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 88) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 88) + ) + ) + (88 + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 88 280) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 88 280) + ) + ) + (75 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 90 170) + ) + ) + (265 (fadeout (frame-time-30 (new 'static 'bfloat :data 15.0)))) + ) + :cut-list '(30 88) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'nestb + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min 117)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "darkjak-highres" + :level 'nestb + :art-group "skel-darkjak-highres" + :prefix "" + :draw-frames '((min 117)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'nest + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((30 88)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'nestb + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "nest-warp" + :end-point-obj "ctyport-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +;; failed to figure out what this is: +(scene-method-16 (new 'static 'scene + :name "nest-air-train-out" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-90" + :art-group "scenecamera" + :anim "nest-air-train-out" + :parts 3 + :command-list '((0 + (kill "air-train-4") + (fadein (frame-time-30 (new 'static 'bfloat :data 15.0))) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 0 242) + ) + (part-tracker + "group-airtrain-thruster" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 0 242) + ) + ) + (130 (part-tracker + "group-airtrain-dust-plume" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 130 296) + ) + ) + (232 + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_l" + track + #t + duration + (frame-range 232 300) + ) + (part-tracker + "group-airtrain-thruster-off" + entity + "air-train" + joint + "thruster_r" + track + #t + duration + (frame-range 232 300) + ) + ) + (295 (fadeout (frame-time-30 (new 'static 'bfloat :data 5.0)))) + ) + :cut-list '(232) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'nestb + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "darkjak-highres" + :level 'nestb + :art-group "skel-darkjak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "air-train" + :level 'nest + :art-group "skel-air-train" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'nestb + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "nest-warp" + :end-point-obj "nest-warp" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + + + + diff --git a/test/decompiler/reference/jak2/levels/fortress/exit/forexita-obs_REF.gc b/test/decompiler/reference/jak2/levels/fortress/exit/forexita-obs_REF.gc new file mode 100644 index 0000000000..a82a463565 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/fortress/exit/forexita-obs_REF.gc @@ -0,0 +1,381 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type fort-lift-plat +(deftype fort-lift-plat (plat) + ((sound-time time-frame :offset-assert 328) + (last-val float :offset-assert 336) + ) + :heap-base #xe0 + :method-count-assert 38 + :size-assert #x154 + :flag-assert #x2600e00154 + (:methods + (plat-anim-active () _type_ :state 37) + ) + ) + +;; definition for method 3 of type fort-lift-plat +(defmethod inspect fort-lift-plat ((obj fort-lift-plat)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type plat inspect))) + (t9-0 obj) + ) + (format #t "~2Tsound-time: ~D~%" (-> obj sound-time)) + (format #t "~2Tlast-val: ~f~%" (-> obj last-val)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-fort-lift-plat fort-lift-plat 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 -2 -8 15) + ) + +;; definition for method 30 of type fort-lift-plat +(defmethod get-art-group fort-lift-plat ((obj fort-lift-plat)) + "@returns The associated [[art-group]]" + (art-group-get-by-name *level* "skel-fort-lift-plat" (the-as (pointer uint32) #f)) + ) + +;; definition for method 32 of type fort-lift-plat +;; INFO: this function exists in multiple non-identical object files +;; WARN: Return type mismatch int vs none. +(defmethod base-plat-method-32 fort-lift-plat ((obj fort-lift-plat)) + 0 + (none) + ) + +;; failed to figure out what this is: +(defstate plat-idle (fort-lift-plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior fort-lift-plat) #f) + ) + +;; failed to figure out what this is: +(defstate plat-anim-active (fort-lift-plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior fort-lift-plat) #f) + :enter (behavior () + (get-point-at-percent-along-path! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (set! (-> self last-val) 0.0) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + (none) + ) + :trans (the-as (function none :behavior fort-lift-plat) plat-trans) + :code (behavior () + (until #f + (let ((f30-0 (* (get-current-phase-no-mod (-> self sync)) (the float (+ (-> (ja-group) frames num-frames) -1))))) + (ja-no-eval :group! (ja-group) :num! (loop!) :frame-num f30-0) + (let ((f0-3 (* 0.5 (the float (+ (-> (ja-group) frames num-frames) -1))))) + (if (and (>= f30-0 f0-3) (< (-> self last-val) f0-3)) + (sound-stop (-> self sound-id)) + ) + ) + (set! (-> self last-val) f30-0) + ) + (suspend) + ) + #f + (none) + ) + :post (behavior () + (when (< (-> self sound-time) (-> self clock frame-counter)) + (sound-stop (-> self sound-id)) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + ) + (sound-play "fort-lift-plat" :id (-> self sound-id) :position (-> self root-override trans)) + (plat-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate plat-path-active (fort-lift-plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior fort-lift-plat) #f) + :enter (behavior () + (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) + (if t9-0 + (t9-0) + ) + ) + (set! (-> self last-val) 0.0) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + (none) + ) + :trans (behavior () + (set! (-> self path-pos) (get-norm! (-> self sync) 0)) + (get-point-at-percent-along-path! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (let ((f0-2 0.9999)) + (if (and (>= (-> self path-pos) f0-2) (< (-> self last-val) f0-2)) + (sound-stop (-> self sound-id)) + ) + ) + (set! (-> self last-val) (-> self path-pos)) + (plat-trans) + (none) + ) + :code (the-as (function none :behavior fort-lift-plat) sleep-code) + :post (behavior () + (when (< (-> self sound-time) (-> self clock frame-counter)) + (sound-stop (-> self sound-id)) + (set! (-> self sound-time) (get-timeframe-offset! (-> self sync) 0)) + ) + (sound-play "fort-lift-plat" :id (-> self sound-id) :position (-> self root-override trans)) + (plat-post) + (none) + ) + ) + +;; definition for method 27 of type fort-lift-plat +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod execute-effects fort-lift-plat ((obj fort-lift-plat)) + "Executes various ancillary tasks with the platform, such as spawning particles or playing the associated sound" + (if (nonzero? (-> obj part)) + (spawn-with-cspace (-> obj part) (-> obj node-list data 6)) + ) + (when (nonzero? (-> obj sound)) + (set! (-> obj sound trans quad) (-> obj root-override trans quad)) + (update! (-> obj sound)) + ) + (none) + ) + +;; definition for method 31 of type fort-lift-plat +;; WARN: Return type mismatch collide-shape-moving vs none. +(defmethod base-plat-method-31 fort-lift-plat ((obj fort-lift-plat)) + "TODO - collision stuff" + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) cshape-reaction-default) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-query vector vector object) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 5) 0))) + (set! (-> s5-0 total-prims) (the-as uint 6)) + (set! (-> s4-0 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> s4-0 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> s4-0 prim-core action) (collide-action solid rideable)) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 -16384.0 -49152.0 98304.0) + (set! (-> s5-0 root-prim) s4-0) + ) + (pusher-init s5-0) + (let ((v1-15 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> v1-15 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-15 prim-core action) (collide-action solid rideable)) + (set! (-> v1-15 transform-index) 7) + (set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 49152.0) + ) + (let ((v1-17 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-17 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-17 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-17 prim-core action) (collide-action solid)) + (set! (-> v1-17 transform-index) 4) + (set-vector! (-> v1-17 local-sphere) -36864.0 0.0 -16384.0 32768.0) + ) + (let ((v1-19 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-19 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-19 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-19 prim-core action) (collide-action solid)) + (set! (-> v1-19 transform-index) 4) + (set-vector! (-> v1-19 local-sphere) 36864.0 0.0 -16384.0 32768.0) + ) + (let ((v1-21 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 3) (the-as uint 0)))) + (set! (-> v1-21 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-21 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-21 prim-core action) (collide-action solid)) + (set! (-> v1-21 transform-index) 3) + (set-vector! (-> v1-21 local-sphere) -28672.0 -28672.0 -20480.0 24576.0) + ) + (let ((v1-23 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 4) (the-as uint 0)))) + (set! (-> v1-23 prim-core collide-as) (collide-spec obstacle camera-blocker pusher)) + (set! (-> v1-23 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-23 prim-core action) (collide-action solid)) + (set! (-> v1-23 transform-index) 3) + (set-vector! (-> v1-23 local-sphere) 28672.0 -28672.0 -20480.0 24576.0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-26 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-26 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-26 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (none) + ) + +;; definition for method 32 of type fort-lift-plat +;; INFO: this function exists in multiple non-identical object files +;; WARN: Return type mismatch sparticle-launch-control vs none. +(defmethod base-plat-method-32 fort-lift-plat ((obj fort-lift-plat)) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 618) obj)) + (none) + ) + +;; definition for method 33 of type fort-lift-plat +;; WARN: Return type mismatch sound-id vs none. +(defmethod base-plat-method-33 fort-lift-plat ((obj fort-lift-plat)) + (set! (-> obj root-override pause-adjust-distance) 327680.0) + (set! (-> obj sound-id) (new-sound-id)) + (none) + ) + +;; definition for method 10 of type fort-lift-plat +(defmethod deactivate fort-lift-plat ((obj fort-lift-plat)) + (sound-stop (-> obj sound-id)) + ((method-of-type plat deactivate) obj) + (none) + ) + +;; definition for method 36 of type fort-lift-plat +(defmethod plat-path-sync fort-lift-plat ((obj fort-lift-plat)) + "If the `sync` period is greater than `0` then transition the state to [[plat::35]] + otherwise, [[plat::34]] + + @see [[sync-eased]]" + (cond + ((logtest? (-> obj path flags) (path-control-flag not-found)) + (go (method-of-object obj plat-idle)) + ) + ((logtest? (actor-option user18) (-> obj fact options)) + (set! (-> obj path-pos) (res-lump-float (-> obj entity) 'initial-spline-pos)) + (get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (go (method-of-object obj plat-anim-active)) + ) + ((> (-> obj sync period) 0) + (let ((a0-5 (-> obj skel root-channel 0))) + (set! (-> a0-5 frame-group) (the-as art-joint-anim (-> obj draw art-group data 4))) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! a0-5 (the-as art-joint-anim (-> obj draw art-group data 4)) num-func-identity) + ) + (go (method-of-object obj plat-path-active)) + ) + (else + (go (method-of-object obj plat-idle)) + ) + ) + ) + +;; definition of type fort-claw +(deftype fort-claw (process-drawable) + ((path-u float :offset-assert 200) + (path-dest float :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xd0 + :flag-assert #x16005000d0 + (:methods + (idle () _type_ :state 20) + (pause () _type_ :state 21) + ) + ) + +;; definition for method 3 of type fort-claw +(defmethod inspect fort-claw ((obj fort-claw)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tpath-u: ~f~%" (-> obj path-u)) + (format #t "~2Tpath-dest: ~f~%" (-> obj path-dest)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-fort-claw fort-claw 0 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 -26 -4 35) + ) + +;; failed to figure out what this is: +(defstate idle (fort-claw) + :virtual #t + :code (the-as (function none :behavior fort-claw) sleep-code) + :post (behavior () + (let ((f30-0 (seek (-> self path-u) (-> self path-dest) (* 0.04 (-> self clock seconds-per-frame))))) + (set! (-> self path-u) f30-0) + (let ((f0-4 (-> self path-dest))) + (when (= f30-0 f0-4) + (set! (-> self path-dest) (- 1.0 f0-4)) + (go-virtual pause) + ) + ) + (get-point-at-percent-along-path! (-> self path) (-> self root trans) (ease-value-in-out f30-0 0.2) 'interp) + ) + (ja-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate pause (fort-claw) + :virtual #t + :enter (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :trans (behavior () + (if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 2)) + (go-virtual idle) + ) + (none) + ) + :code (the-as (function none :behavior fort-claw) sleep-code) + ) + +;; definition for method 11 of type fort-claw +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! fort-claw ((obj fort-claw) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-fort-claw" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj path-u) 0.0) + (set! (-> obj path-dest) 1.0) + (let ((a0-8 (-> obj skel root-channel 0))) + (set! (-> a0-8 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3))) + (set! (-> a0-8 frame-num) 0.0) + (joint-control-channel-group! a0-8 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity) + ) + (ja-post) + (go (method-of-object obj idle)) + (none) + ) + +;; failed to figure out what this is: +(set-subtask-hook! + *game-info* + 2 + 3 + (lambda () (with-pp + (until #f + (sound-play "fortress-alarm") + (let ((gp-1 (-> pp clock frame-counter))) + (until (>= (- (-> pp clock frame-counter) gp-1) (seconds 1)) + (suspend) + ) + ) + ) + (the-as object #f) + ) + ) + ) diff --git a/test/decompiler/reference/jak2/levels/fortress/exit/forexita-part_REF.gc b/test/decompiler/reference/jak2/levels/fortress/exit/forexita-part_REF.gc new file mode 100644 index 0000000000..b3986abf66 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/fortress/exit/forexita-part_REF.gc @@ -0,0 +1,1799 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type forexita-part +(deftype forexita-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + +;; definition for method 3 of type forexita-part +(defmethod inspect forexita-part ((obj forexita-part)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type part-spawner inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-1 + :id 611 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2688 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2689 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2690 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2691 :fade-after (meters 40) :flags (bit6 bit7) :period 800 :length 225) + ) + ) + +;; failed to figure out what this is: +(defpart 2688 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.075)) + (sp-flt spt-y (meters 1.8)) + (sp-flt spt-z (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2689 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3)) + (sp-flt spt-y (meters -0.5)) + (sp-flt spt-z (meters -0.2)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2690 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.85)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2691 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.25)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-2 + :id 612 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2692 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 150) + (sp-item 2693 :fade-after (meters 60) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2694 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 300) + ) + ) + +;; failed to figure out what this is: +(defpart 2692 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.1)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2693 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.1)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2694 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-3 + :id 613 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2695 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 75) + (sp-item 2696 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 50) + (sp-item 2697 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 225) + (sp-item 2698 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 150) + (sp-item 2699 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 225 :offset 225) + (sp-item 2700 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2701 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2702 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300 :offset 150) + (sp-item 2703 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150 :offset 150) + (sp-item 2704 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 50) + (sp-item 2705 :fade-after (meters 60) :flags (bit6 bit7) :period 50 :length 25) + (sp-item 2706 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150) + ) + ) + +;; failed to figure out what this is: +(defpart 2695 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2696 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.575)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2697 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2698 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2699 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2700 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.2)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2701 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2702 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2703 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters -0.25)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2704 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2705 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2706 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-panel-4 + :id 614 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2707 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 150 :offset 150) + (sp-item 2708 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 150 :offset 150) + (sp-item 2709 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 150 :offset 300) + (sp-item 2710 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2711 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 150 :offset 450) + (sp-item 2712 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 300 :offset 150) + (sp-item 2713 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 150) + (sp-item 2714 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 250) + (sp-item 2715 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 300) + (sp-item 2716 :fade-after (meters 40) :flags (bit6 bit7) :period 100 :length 50 :offset 50) + (sp-item 2717 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 500) + (sp-item 2718 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 150) + (sp-item 2719 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 550) + (sp-item 2720 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 350) + (sp-item 2721 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 200) + (sp-item 2722 :fade-after (meters 40) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2723 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 50) + (sp-item 2724 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 250) + (sp-item 2725 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 400) + (sp-item 2726 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 50 :offset 100) + (sp-item 2727 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 50 :offset 600) + ) + ) + +;; failed to figure out what this is: +(defpart 2714 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.8)) + (sp-flt spt-y (meters 0.54)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2715 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.15)) + (sp-flt spt-y (meters 0.54)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2716 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.15)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2717 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.15)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2718 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.75)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2719 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.45)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2720 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.75)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2721 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.45)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2722 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.8)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2723 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.85)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2724 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.55)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2725 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.8)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2726 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.85)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2727 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.55)) + (sp-flt spt-y (meters -0.775)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2707 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.6)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2708 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.45)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2709 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.45)) + (sp-flt spt-y (meters -0.6)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2710 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2711 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters -0.6)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2712 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.15)) + (sp-flt spt-y (meters -0.6)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2713 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -2.1)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-overhead-lights + :id 615 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 2728 :fade-after (meters 80) :flags (bit6)) (sp-item 2729 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2728 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 3) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -36.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2729 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 14) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -36.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-yellow-glows + :id 616 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2730 :fade-after (meters 80) :flags (bit6)) (sp-item 2731 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2730 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2731 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-claw-panel + :id 617 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2732 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2733 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 300) + (sp-item 2734 :fade-after (meters 80) :flags (bit6 bit7) :period 275 :length 300) + (sp-item 2735 :fade-after (meters 80) :flags (bit6 bit7) :period 660 :length 300) + (sp-item 2736 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-lift-plat-glow + :id 618 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2732 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2733 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 300) + (sp-item 2734 :fade-after (meters 80) :flags (bit6 bit7) :period 275 :length 300) + (sp-item 2735 :fade-after (meters 80) :flags (bit6 bit7) :period 660 :length 300) + (sp-item 2736 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + ) + ) + +;; failed to figure out what this is: +(defpart 2732 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.5)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2733 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.5)) + (sp-flt spt-y (meters -0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2734 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.6)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2735 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.6)) + (sp-flt spt-y (meters -0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2736 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-blue-lights + :id 619 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 2737 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2738 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2739 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2740 :fade-after (meters 100) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2737 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2738 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2739 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2740 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 12.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-yellow-lights + :id 620 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 2741 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2742 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2743 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2744 :fade-after (meters 100) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2741 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 12.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2742 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 10.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2743 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 10.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2744 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 200.0 55.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1228.8) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-l-upsideown-panel + :id 621 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2745 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2746 :fade-after (meters 80) :flags (bit6 bit7) :period 225 :length 100) + (sp-item 2747 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2748 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2749 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2750 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 50) + (sp-item 2751 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + ) + ) + +;; failed to figure out what this is: +(defpart 2745 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2746 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.95)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2747 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.75)) + (sp-flt spt-y (meters -1.8)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2748 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.8)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2749 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2750 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2751 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.2)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexita-l-panel + :id 622 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2752 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75) + (sp-item 2753 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 150) + (sp-item 2754 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 50) + (sp-item 2755 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 100) + (sp-item 2756 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 60) + (sp-item 2757 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2758 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 35) + (sp-item 2759 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + (sp-item 2760 :fade-after (meters 60) :flags (bit6 bit7) :period 75 :length 25) + (sp-item 2761 :fade-after (meters 40) :flags (bit6 bit7) :period 50 :length 25) + ) + ) + +;; failed to figure out what this is: +(defpart 2752 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2753 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2754 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2755 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2756 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2757 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2758 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2759 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2760 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2761 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/test/decompiler/reference/jak2/levels/fortress/exit/forexitb-part_REF.gc b/test/decompiler/reference/jak2/levels/fortress/exit/forexitb-part_REF.gc new file mode 100644 index 0000000000..f6b86ea4e7 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/fortress/exit/forexitb-part_REF.gc @@ -0,0 +1,1816 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type forexitb-part +(deftype forexitb-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + +;; definition for method 3 of type forexitb-part +(defmethod inspect forexitb-part ((obj forexitb-part)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type part-spawner inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-panel-1 + :id 623 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2762 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2763 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2764 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300) + (sp-item 2765 :fade-after (meters 40) :flags (bit6 bit7) :period 800 :length 225) + ) + ) + +;; failed to figure out what this is: +(defpart 2762 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.075)) + (sp-flt spt-y (meters 1.8)) + (sp-flt spt-z (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2763 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3)) + (sp-flt spt-y (meters -0.5)) + (sp-flt spt-z (meters -0.2)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2764 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.85)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2765 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.25)) + (sp-flt spt-y (meters 1.5)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-panel-3 + :id 624 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2766 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 75) + (sp-item 2767 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 50) + (sp-item 2768 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 225) + (sp-item 2769 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 150) + (sp-item 2770 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 225 :offset 225) + (sp-item 2771 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2772 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2773 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300 :offset 150) + (sp-item 2774 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150 :offset 150) + (sp-item 2775 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 50) + (sp-item 2776 :fade-after (meters 60) :flags (bit6 bit7) :period 50 :length 25) + (sp-item 2777 :fade-after (meters 80) :flags (bit6 bit7) :period 450 :length 150) + ) + ) + +;; failed to figure out what this is: +(defpart 2766 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.35)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2767 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.575)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2768 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2769 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2770 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters 0.2)) + (sp-flt spt-z (meters 0)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2771 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.2)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2772 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.9)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2773 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.1)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2774 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -1.7)) + (sp-flt spt-y (meters -0.25)) + (sp-flt spt-z (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2775 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2776 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2777 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -3.05)) + (sp-flt spt-y (meters -3.5)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-overhead-lights + :id 625 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 2778 :fade-after (meters 80) :flags (bit6)) (sp-item 2779 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2778 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 3072.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2779 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 14) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 10.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 3072.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-yellow-glows + :id 626 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2780 :fade-after (meters 80) :flags (bit6)) (sp-item 2781 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2780 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2781 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-red-glows + :id 627 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2782 :fade-after (meters 80) :flags (bit6)) (sp-item 2783 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2782 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2783 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-blue-lights + :id 628 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 2784 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2785 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2786 :fade-after (meters 80) :flags (bit6 bit7)) + (sp-item 2787 :fade-after (meters 100) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2784 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 20.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2785 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2786 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 1.2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2787 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 12.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-single-blue-lights-1 + :id 629 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 2788 :fade-after (meters 80) :flags (bit6) :period 300 :length 150 :offset 150)) + ) + +;; failed to figure out what this is: +(defpart 2788 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.6) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-l-upsideown-panel + :id 630 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2789 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2790 :fade-after (meters 80) :flags (bit6 bit7) :period 225 :length 100) + (sp-item 2791 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100) + (sp-item 2792 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2793 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2794 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 50) + (sp-item 2795 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + ) + ) + +;; failed to figure out what this is: +(defpart 2789 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2790 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.95)) + (sp-flt spt-y (meters -2.35)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2791 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.75)) + (sp-flt spt-y (meters -1.8)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2792 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.8)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2793 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2794 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2795 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.2)) + (sp-flt spt-y (meters 0.25)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-l-panel + :id 631 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2796 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75) + (sp-item 2797 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 150) + (sp-item 2798 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 50) + (sp-item 2799 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 75 :offset 100) + (sp-item 2800 :fade-after (meters 60) :flags (bit6 bit7) :period 100 :length 60) + (sp-item 2801 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2802 :fade-after (meters 60) :flags (bit6 bit7) :period 125 :length 35) + (sp-item 2803 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50) + (sp-item 2804 :fade-after (meters 60) :flags (bit6 bit7) :period 75 :length 25) + (sp-item 2805 :fade-after (meters 40) :flags (bit6 bit7) :period 50 :length 25) + ) + ) + +;; failed to figure out what this is: +(defpart 2796 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2797 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -2.15)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2798 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.55)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2799 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -1.75)) + (sp-flt spt-z (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2800 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2801 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 1.75)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.7) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2802 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2803 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2804 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.7)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2805 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.45)) + (sp-flt spt-y (meters -1.5)) + (sp-flt spt-z (meters 1)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-pipe-drip + :id 632 + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 2806) + (sp-item 2807) + (sp-item 2808 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2809 :flags (is-3d)) + (sp-item 2810 :flags (is-3d)) + ) + ) + +;; failed to figure out what this is: +(defpart 2806 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -0.025) (meters 0.05) 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-flt spt-z (meters -5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-z (meters 0.006666667)) + (sp-rnd-flt spt-fade-a 0.07111111 0.035555556 1.0) + (sp-int-plain-rnd spt-timer 970 4 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-int spt-next-time 450) + (sp-launcher-by-id spt-next-launcher 2811) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2811 + :init-specs ((sp-rnd-flt spt-fade-a 0.0 0.10666667 1.0) + (sp-int spt-next-time 280) + (sp-launcher-by-id spt-next-launcher 2812) + ) + ) + +;; failed to figure out what this is: +(defpart 2812 + :init-specs ((sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00033333333)) + (sp-flt spt-scalevel-y (meters 0.0033333334)) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + ) + ) + +;; failed to figure out what this is: +(defpart 2808 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters -0.2) (meters 0.4) 1.0) + (sp-flt spt-y (meters -6.5)) + (sp-rnd-flt spt-z (meters 1.2) (meters 0.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.03) (meters -0.01) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y 4.096 0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees -10.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2807 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -0.2) (meters 0.4) 1.0) + (sp-flt spt-y (meters -6.5)) + (sp-rnd-flt spt-z (meters 1.2) (meters 0.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-omega 8.192) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.03) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2813 + :init-specs ((sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-int spt-next-time 5) + (sp-launcher-by-id spt-next-launcher 2814) + ) + ) + +;; failed to figure out what this is: +(defpart 2814 + :init-specs ((sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-int-plain-rnd spt-next-time 0 449 1) + (sp-launcher-by-id spt-next-launcher 2813) + ) + ) + +;; failed to figure out what this is: +(defpart 2809 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 0.3) + (sp-rnd-flt spt-x (meters -0.2) (meters 0.4) 1.0) + (sp-rnd-flt spt-y (meters -6.5) (meters -0.25) 1.0) + (sp-rnd-flt spt-z (meters -1.6) (meters 0.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.32 -0.32 1.0) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2810 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 0.3) + (sp-rnd-flt spt-x (meters -2.2) (meters 4.4) 1.0) + (sp-rnd-flt spt-y (meters -6.5) (meters -0.25) 1.0) + (sp-rnd-flt spt-z (meters 0.6) (meters -4.4) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.16 -0.16 1.0) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-ceiling-light-oneoff + :id 633 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2815 :fade-after (meters 80) :flags (bit6)) (sp-item 2816 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2815 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -1)) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2816 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -1)) + (sp-rnd-flt spt-scale-x (meters 20) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 24.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-ceiling-pipe-drip2 + :id 634 + :bounds (static-bspherem 0 -12 0 64) + :parts ((sp-item 2817 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 2818 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2819 :fade-after (meters 100) :falloff-to (meters 100)) + ) + ) + +;; definition for function check-drop-level-forexitb-drop-userdata +;; INFO: Used lq/sq +(defun check-drop-level-forexitb-drop-userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (when (< (-> arg2 vector 0 y) (-> arg1 user-float)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (sp-kill-particle arg0 arg1) + (set-vector! s3-0 (-> arg2 vector 0 x) (-> arg1 user-float) (-> arg2 vector 0 z) 1.0) + (let ((t9-1 sp-launch-particles-var) + (a0-3 *sp-particle-system-2d*) + (a1-2 (-> *part-id-table* 2820)) + (a2-1 *launch-matrix*) + ) + (set! (-> a2-1 trans quad) (-> s3-0 quad)) + (t9-1 a0-3 a1-2 a2-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-2 sp-launch-particles-var) + (a0-4 *sp-particle-system-3d*) + (a1-3 (-> *part-id-table* 2821)) + (a2-2 *launch-matrix*) + ) + (set! (-> a2-2 trans quad) (-> s3-0 quad)) + (t9-2 a0-4 a1-3 a2-2 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (sparticle-motion-blur arg0 arg1 (the-as vector arg2)) + (none) + ) + +;; definition for function check-drop-level-forexitb-drop-water-userdata +;; INFO: Used lq/sq +(defun check-drop-level-forexitb-drop-water-userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (when (< (-> arg2 vector 0 y) (-> arg1 user-float)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (sp-kill-particle arg0 arg1) + (set-vector! s3-0 (-> arg2 vector 0 x) (-> arg1 user-float) (-> arg2 vector 0 z) 1.0) + (let ((t9-1 sp-launch-particles-var) + (a0-3 *sp-particle-system-2d*) + (a1-2 (-> *part-id-table* 2820)) + (a2-1 *launch-matrix*) + ) + (set! (-> a2-1 trans quad) (-> s3-0 quad)) + (t9-1 a0-3 a1-2 a2-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-2 sp-launch-particles-var) + (a0-4 *sp-particle-system-3d*) + (a1-3 (-> *part-id-table* 2822)) + (a2-2 *launch-matrix*) + ) + (set! (-> a2-2 trans quad) (-> s3-0 quad)) + (t9-2 a0-4 a1-3 a2-2 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-3 sp-launch-particles-var) + (a0-5 *sp-particle-system-2d*) + (a1-4 (-> *part-id-table* 2823)) + (a2-3 *launch-matrix*) + ) + (set! (-> a2-3 trans quad) (-> s3-0 quad)) + (t9-3 a0-5 a1-4 a2-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (sparticle-motion-blur arg0 arg1 (the-as vector arg2)) + (none) + ) + +;; failed to figure out what this is: +(defpart 2820 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-omega 8.192) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.03) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2821 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-omega 0.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.2) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + ) + ) + +;; failed to figure out what this is: +(defpart 2817 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2824 + :init-specs ((sp-flt spt-a 128.0) + (sp-flt spt-omega 5.12) + (sp-flt spt-fade-a 0.0) + (sp-rnd-flt spt-accel-y -27.306667 2.7306666 1.0) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + ) + ) + +;; failed to figure out what this is: +(defpart 2818 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 5.75) (meters 0.1) 1.0) + (sp-flt spt-y (meters -6.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters -0.017777778)) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 1.1333333) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -217.0) (degrees 6.0000005) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2819 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 5.75) (meters 0.1) 1.0) + (sp-flt spt-y (meters -6.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters -0.017777778)) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 1.1333333) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -94.0) (degrees 1.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-ceiling-pipe-drip1 + :id 635 + :bounds (static-bspherem 0 -12 0 64) + :parts ((sp-item 2825 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2826 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2827 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2828 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2829 :fade-after (meters 100) :falloff-to (meters 100)) + ) + ) + +;; failed to figure out what this is: +(defpart 2823 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 2.0 2.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.03) (meters -0.01) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-rnd-flt spt-accel-y 4.096 0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 2813) + (sp-rnd-flt spt-conerot-x (degrees -10.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 180.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2829 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-x (meters 5.75) (meters 0.1) 1.0) + (sp-flt spt-y (meters -6.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters -0.017777778)) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 1.1333333) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int spt-next-time 225) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 17.0) (degrees 3.0000002) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2825 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 55.0) (degrees 80.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2826 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -55.0) (degrees -80.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2827 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 145.0) (degrees 70.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2828 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-x (meters 6)) + (sp-flt spt-y (meters -10.15)) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees -45.0) (degrees 90.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2822 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-fade-a -0.42666668 -0.32 1.0) + (sp-int spt-timer 225) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 10 0 0 #xc0c900 #xc02600 #xc03300 #xc02c00) + ) + (sp-func spt-func 'sparticle-texture-animate) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-forexitb-random-drip-main + :id 636 + :bounds (static-bspherem 0 -12 0 64) + :parts ((sp-item 2830 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2831 :fade-after (meters 100) :falloff-to (meters 100)) + ) + ) + +;; failed to figure out what this is: +(defpart 2830 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-rnd-flt spt-x (meters 40) (meters -28) 1.0) + (sp-flt spt-y (meters -0.1)) + (sp-rnd-flt spt-z (meters 6) (meters -30) 1.0) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-rnd-flt spt-userdata 25804.8 1638.4 1.0) + (sp-func spt-func 'check-drop-level-forexitb-drop-water-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2831 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.2 1.0) + (sp-rnd-flt spt-x (meters -22) (meters 32) 1.0) + (sp-flt spt-y (meters -0.1)) + (sp-rnd-flt spt-z (meters 0) (meters -24) 1.0) + (sp-flt spt-scale-x (meters 0)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-copy-from-other spt-b -2) + (sp-flt spt-a 128.0) + (sp-flt spt-vel-z (meters 0)) + (sp-flt spt-scalevel-x (meters 0.00044444445)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.93 0.02 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 33587.2) + (sp-func spt-func 'check-drop-level-forexitb-drop-userdata) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 2824) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/test/decompiler/reference/jak2/levels/fortress/fortress-obs_REF.gc b/test/decompiler/reference/jak2/levels/fortress/fortress-obs_REF.gc new file mode 100644 index 0000000000..cb87c3f76b --- /dev/null +++ b/test/decompiler/reference/jak2/levels/fortress/fortress-obs_REF.gc @@ -0,0 +1,257 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type fort-trap-door +(deftype fort-trap-door (process-drawable) + ((root-override collide-shape-moving :offset 128) + (notify-actor entity-actor :offset-assert 200) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xcc + :flag-assert #x16005000cc + (:methods + (idle () _type_ :state 20) + (die () _type_ :state 21) + ) + ) + +;; definition for method 3 of type fort-trap-door +(defmethod inspect fort-trap-door ((obj fort-trap-door)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tnotify-actor: ~A~%" (-> obj notify-actor)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-fort-trap-door fort-trap-door 0 2 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 5)) + +;; failed to figure out what this is: +(defskelgroup skel-fort-trap-door-explode fort-trap-door 3 5 + ((4 (meters 999999))) + :bounds (static-spherem 0 0 0 15) + ) + +;; definition for symbol *fort-trap-door-exploder-params*, type joint-exploder-static-params +(define *fort-trap-door-exploder-params* + (new 'static 'joint-exploder-static-params + :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 19 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 20 :parent-joint-index -1) + ) + :collide-spec #x1 + ) + ) + +;; failed to figure out what this is: +(defstate idle (fort-trap-door) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (the-as + object + (case event-type + (('attack) + (when (logtest? (-> (the-as attack-info (-> event param 1)) penetrate-using) (penetrate flop)) + (go-virtual die) + #f + ) + ) + ) + ) + ) + :code (the-as (function none :behavior fort-trap-door) sleep-code) + ) + +;; failed to figure out what this is: +(defstate die (fort-trap-door) + :virtual #t + :enter (behavior () + (let ((v1-1 (-> self root-override root-prim))) + (set! (-> v1-1 prim-core collide-as) (collide-spec)) + (set! (-> v1-1 prim-core collide-with) (collide-spec)) + ) + 0 + (sound-play "trapdoor") + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) (process->ppointer self)) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-6 (-> self notify-actor)) + ) + (t9-2 + (if v1-6 + (-> v1-6 extra process) + ) + a1-1 + ) + ) + ) + (none) + ) + :code (behavior () + ((lambda () + (with-pp + (sound-play "wcrate-break") + (let ((gp-1 (new 'stack 'joint-exploder-tuning (the-as uint 1)))) + (let* ((s5-1 *target*) + (a0-4 (if (type? s5-1 process-focusable) + s5-1 + ) + ) + ) + (when a0-4 + (set! (-> gp-1 fountain-rand-transv-lo quad) (-> (get-trans a0-4 0) quad)) + (set! (-> gp-1 fountain-rand-transv-lo y) (+ -16384.0 (-> gp-1 fountain-rand-transv-lo y))) + ) + ) + (set! (-> gp-1 fountain-rand-transv-hi x) 24576.0) + (set! (-> gp-1 fountain-rand-transv-hi y) 81920.0) + (set! (-> gp-1 fountain-rand-transv-hi z) 12288.0) + (set! (-> gp-1 fountain-rand-transv-hi w) 32768.0) + (process-spawn + joint-exploder + (art-group-get-by-name *level* "skel-fort-trap-door-explode" (the-as (pointer uint32) #f)) + 5 + gp-1 + *fort-trap-door-exploder-params* + :to pp + ) + ) + ) + ) + ) + (suspend) + (ja-channel-set! 0) + (let ((gp-0 (-> self clock frame-counter))) + (until (>= (- (-> self clock frame-counter) gp-0) (seconds 1)) + (suspend) + ) + ) + (send-event self 'death-end) + (while (-> self child) + (suspend) + ) + (cleanup-for-death self) + (none) + ) + :post (the-as (function none :behavior fort-trap-door) ja-post) + ) + +;; definition for method 11 of type fort-trap-door +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! fort-trap-door ((obj fort-trap-door) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 0) + (set-vector! (-> v1-2 local-sphere) 0.0 0.0 0.0 20480.0) + (set! (-> s4-0 total-prims) (the-as uint 1)) + (set! (-> s4-0 root-prim) v1-2) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-5 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root-override) (the-as collide-shape-moving s4-0)) + ) + (set! (-> (the-as collide-shape-moving (-> obj root-override)) penetrated-by) (penetrate flop)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-fort-trap-door" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (let ((a0-14 (-> obj skel root-channel 0))) + (set! (-> a0-14 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) + (set! (-> a0-14 frame-num) 0.0) + (joint-control-channel-group! a0-14 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-identity) + ) + (transform-post) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type water-anim-fortress +(deftype water-anim-fortress (water-anim) + () + :heap-base #x80 + :method-count-assert 29 + :size-assert #x100 + :flag-assert #x1d00800100 + ) + +;; definition for method 3 of type water-anim-fortress +(defmethod inspect water-anim-fortress ((obj water-anim-fortress)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type water-anim inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; definition for symbol ripple-for-water-anim-fortress, type ripple-wave-set +(define ripple-for-water-anim-fortress (new 'static 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave (new 'static 'inline-array ripple-wave 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave) + ) + ) + ) + +;; definition for method 24 of type water-anim-fortress +;; WARN: Return type mismatch ripple-wave-set vs none. +(defmethod art-init! water-anim-fortress ((obj water-anim-fortress)) + "Initialize a [[water-anim]]'s [[skeleton-group]], joints and ambience." + (let ((t9-0 (method-of-type water-anim art-init!))) + (t9-0 obj) + ) + (let ((v1-2 (new 'process 'ripple-control))) + (set! (-> obj draw ripple) v1-2) + (set-vector! (-> obj draw color-mult) 0.01 0.45 0.5 0.75) + (set! (-> v1-2 global-scale) 3072.0) + (set! (-> v1-2 close-fade-dist) 163840.0) + (set! (-> v1-2 far-fade-dist) 245760.0) + (set! (-> v1-2 waveform) ripple-for-water-anim-fortress) + ) + (none) + ) + + + + diff --git a/test/decompiler/reference/jak2/levels/fortress/prison/prison-obs_REF.gc b/test/decompiler/reference/jak2/levels/fortress/prison/prison-obs_REF.gc new file mode 100644 index 0000000000..536f6f9957 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/fortress/prison/prison-obs_REF.gc @@ -0,0 +1,879 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(set! (-> *lightning-spec-id-table* 19) (new 'static 'lightning-spec + :name "lightning-darkjak-prison" + :flags (lightning-spec-flags lsf0) + :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) + :fade-start-factor 0.2 + :texture (new 'static 'texture-id :index #x84 :page #xc) + :reduction 0.42 + :num-points 12 + :box-size 1638.4 + :merge-factor 0.6 + :merge-count 2 + :radius 819.2 + :duration 30.0 + :sound (static-sound-spec "stretched-zap") + ) + ) + +;; failed to figure out what this is: +(set! (-> *lightning-spec-id-table* 20) (new 'static 'lightning-spec + :name "lightning-darkjak-prison-shock" + :flags (lightning-spec-flags lsf0) + :rand-func #x2 + :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) + :fade-start-factor 0.2 + :texture (new 'static 'texture-id :index #x84 :page #xc) + :reduction 0.42 + :num-points 32 + :box-size 4096.0 + :merge-factor 0.6 + :merge-count 2 + :radius 819.2 + :duration 30.0 + :duration-rand 150.0 + :sound #f + ) + ) + +;; definition for symbol *prsn-torture-lightning-joints*, type (array int32) +(define *prsn-torture-lightning-joints* (new 'static 'boxed-array :type int32 14 16 18 20)) + +;; definition for symbol *prsn-chair-shackle-lightning-joints*, type (array int32) +(define *prsn-chair-shackle-lightning-joints* (new 'static 'boxed-array :type int32 4 5 6 7)) + +;; definition for function dark-lightning-handler +;; INFO: Used lq/sq +;; WARN: Return type mismatch none vs object. +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 119] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 195] +(defbehavior dark-lightning-handler process-drawable ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (sv-112 sparticle-launcher) (sv-160 vector) (sv-164 vector) (sv-176 lightning-spec)) + (let ((s3-0 (new 'static 'vector4w :x -1)) + (s4-0 (new 'static 'vector4w :x -1)) + (s5-0 (command-get-process "jak-highres-prison" *target*)) + ) + (the-as + object + (cond + ((= arg2 'lightning-claw) + (let ((s1-0 (command-get-process "prsn-chair-shackle" *target*)) + (gp-1 (new 'stack-no-clear 'matrix)) + (s2-0 *prsn-torture-lightning-joints*) + (s3-1 + (rand-vu-int-range-exclude 0 (+ (-> *prsn-torture-lightning-joints* length) -1) (the-as int (-> s3-0 x))) + ) + ) + *prsn-chair-shackle-lightning-joints* + (let ((v1-7 (rand-vu-int-range-exclude + 0 + (+ (-> *prsn-chair-shackle-lightning-joints* length) -1) + (the-as int (-> s4-0 x)) + ) + ) + ) + (when s1-0 + (set! (-> s4-0 x) v1-7) + (vector<-cspace! (the-as vector (-> gp-1 vector)) (-> self node-list data 13)) + (vector<-cspace! (-> gp-1 vector 1) (-> self node-list data (-> s2-0 s3-1))) + (vector<-cspace! (-> gp-1 vector 2) (-> self node-list data (+ (-> s2-0 s3-1) 1))) + (vector<-cspace! (-> gp-1 trans) (-> (the-as process-drawable s5-0) node-list data 8)) + (dotimes (s5-1 3) + (process-spawn + lightning-tracker + :init lightning-tracker-init + (-> *lightning-spec-id-table* 19) + (the int (* 300.0 (rand-vu-float-range 1.0 2.0))) + lightning-probe-callback + #f + (+ (the-as uint gp-1) (* s5-1 16)) + (+ (the-as uint gp-1) (* (+ s5-1 1) 16)) + :to self + ) + ) + #f + ) + ) + ) + ) + ((= arg2 'lightning-needle) + (let ((gp-2 (command-get-process "prsn-chair-shackle" *target*))) + *prsn-chair-shackle-lightning-joints* + (let ((v1-38 (rand-vu-int-range-exclude + 0 + (+ (-> *prsn-chair-shackle-lightning-joints* length) -1) + (the-as int (-> s4-0 x)) + ) + ) + ) + (when gp-2 + (set! (-> s4-0 x) v1-38) + (let ((s4-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 8))) + (s5-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s5-0) node-list data 5))) + (s3-3 (get-process *default-dead-pool* lightning-tracker #x4000)) + ) + (when s3-3 + (let ((t9-17 (method-of-type lightning-tracker activate))) + (t9-17 + (the-as lightning-tracker s3-3) + self + (symbol->string (-> lightning-tracker symbol)) + (the-as pointer #x70004000) + ) + ) + (let ((s2-2 run-function-in-process) + (s1-2 s3-3) + (s0-1 lightning-tracker-init) + ) + (set! sv-176 (-> *lightning-spec-id-table* 19)) + (let ((a3-4 (the int (* 300.0 (rand-vu-float-range 1.0 2.0)))) + (t0-1 lightning-probe-callback) + ) + ((the-as (function object object object object object object object object none) s2-2) + s1-2 + s0-1 + sv-176 + a3-4 + t0-1 + gp-2 + s4-2 + s5-2 + ) + ) + ) + (-> s3-3 ppointer) + ) + ) + ) + ) + ) + ) + ((= arg2 'lightning-shackle) + (let ((gp-3 (command-get-process "prsn-chair-shackle" *target*)) + (s2-3 *prsn-torture-lightning-joints*) + (s5-3 *prsn-chair-shackle-lightning-joints*) + ) + (when gp-3 + (when (and (nonzero? (-> self skel)) (nonzero? (-> (the-as process-drawable gp-3) skel))) + (let* ((v1-52 (-> s2-3 length)) + (s1-3 (-> s5-3 length)) + (s0-2 (rand-vu-int-range-exclude 0 (+ v1-52 -1) (the-as int (-> s3-0 x)))) + (s1-4 (rand-vu-int-range-exclude 0 (+ s1-3 -1) (the-as int (-> s4-0 x)))) + ) + (set! sv-112 (-> *part-id-table* 179)) + (set! (-> s3-0 x) s0-2) + (set! (-> s4-0 x) s1-4) + (set! sv-160 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> s2-3 s0-2)))) + (set! sv-164 (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> (the-as process-drawable gp-3) node-list data (-> s5-3 s1-4)) + ) + ) + ) + (let ((s4-3 (process-spawn + lightning-tracker + :init lightning-tracker-init + (-> *lightning-spec-id-table* 19) + (the int (* 300.0 (rand-vu-float-range 1.0 2.0))) + lightning-probe-callback + self + sv-160 + sv-164 + :to gp-3 + ) + ) + ) + (when (and sv-112 s4-3) + (let ((v1-74 (get-field-spec-by-id sv-112 (sp-field-id spt-timer)))) + (if v1-74 + (set! (-> v1-74 initial-valuef) (the-as float (-> (the-as lightning-tracker (-> s4-3 0)) duration))) + ) + ) + (let ((t9-30 sp-launch-particles-var) + (a0-35 *sp-particle-system-2d*) + (a1-37 sv-112) + (a2-19 *launch-matrix*) + ) + (set! (-> a2-19 trans quad) (-> sv-160 quad)) + (t9-30 a0-35 a1-37 a2-19 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + (let ((t9-31 sp-launch-particles-var) + (a0-36 *sp-particle-system-2d*) + (a1-38 sv-112) + (a2-20 *launch-matrix*) + ) + (set! (-> a2-20 trans quad) (-> sv-164 quad)) + (t9-31 a0-36 a1-38 a2-20 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + +;; definition of type prsn-hang-cell +(deftype prsn-hang-cell (process-drawable) + ((path-u float :offset-assert 200) + (path-du float :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 21 + :size-assert #xd0 + :flag-assert #x15005000d0 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-hang-cell +(defmethod inspect prsn-hang-cell ((obj prsn-hang-cell)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tpath-u: ~f~%" (-> obj path-u)) + (format #t "~2Tpath-du: ~f~%" (-> obj path-du)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-prsn-hang-cell prsn-hang-cell 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 -9.5 0 10) + ) + +;; failed to figure out what this is: +(defstate idle (prsn-hang-cell) + :virtual #t + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (let* ((f0-2 (* (/ 1.0 (-> self path-du)) (-> self path-u))) + (f0-3 (- f0-2 (* (the float (the int (/ f0-2 1.0))) 1.0))) + ) + (ja-no-eval :group! (ja-group) :num! (loop!) :frame-num f0-3) + ) + (until #f + (suspend) + (ja :num! (loop!)) + ) + #f + (none) + ) + :post (behavior () + (seek! (-> self path-u) 1.0 (* (-> self path-du) (-> self clock seconds-per-frame))) + (when (>= (-> self path-u) 1.0) + (set! (-> self path-u) 0.0) + (set! (-> self state-time) (-> self clock frame-counter)) + ) + (get-point-at-percent-along-path! (-> self path) (-> self root trans) (-> self path-u) 'interp) + (ja-post) + (none) + ) + ) + +;; definition for method 11 of type prsn-hang-cell +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-hang-cell ((obj prsn-hang-cell) (arg0 entity-actor)) + (with-pp + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-hang-cell" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj path-du) 0.01) + (let ((f0-2 (* 300.0 (/ 1.0 (-> obj path-du)))) + (f1-3 (the float (-> pp clock frame-counter))) + ) + (set! (-> obj path-u) (/ (- f1-3 (* (the float (the int (/ f1-3 f0-2))) f0-2)) f0-2)) + ) + (let* ((f30-0 (-> obj path-u)) + (f28-0 8.0) + (f26-0 (/ 1.0 f28-0)) + ) + (dotimes (s5-2 (+ (the int f28-0) -1)) + (+! f30-0 f26-0) + (process-spawn + prsn-hang-cell + (if (>= f30-0 1.0) + (+ -1.0 f30-0) + f30-0 + ) + :to obj + ) + ) + ) + (go (method-of-object obj idle)) + (none) + ) + ) + +;; definition for function prsn-hang-cell-init-by-other +;; WARN: Return type mismatch object vs none. +(defbehavior prsn-hang-cell-init-by-other prsn-hang-cell ((arg0 float)) + (set! (-> self root) (new 'process 'trsqv)) + (initialize-skeleton + self + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-hang-cell" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self path) (new 'process 'path-control self 'path 0.0 (the-as entity #f) #f)) + (logior! (-> self path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> self path-u) arg0) + (set! (-> self path-du) 0.01) + (set! (-> self draw light-index) (the-as uint 10)) + (go-virtual idle) + (none) + ) + +;; failed to figure out what this is: +(defskelgroup skel-warp-gate-b warp-gate-b 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 3 0 4) + :origin-joint-index 3 + ) + +;; definition of type warp-gate-b +(deftype warp-gate-b (warp-gate) + () + :heap-base #x80 + :method-count-assert 26 + :size-assert #x100 + :flag-assert #x1a00800100 + ) + +;; definition for method 3 of type warp-gate-b +(defmethod inspect warp-gate-b ((obj warp-gate-b)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type warp-gate inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; definition for method 23 of type warp-gate-b +;; WARN: Return type mismatch draw-control vs none. +(defmethod init-skel-and-collide warp-gate-b ((obj warp-gate-b)) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s5-0 penetrated-by) (penetrate)) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 3) + (set-vector! (-> v1-2 local-sphere) 0.0 -12288.0 0.0 16384.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-2) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-5 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root-override) s5-0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-warp-gate-b" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (none) + ) + +;; definition of type prsn-cell-door +(deftype prsn-cell-door (process-drawable) + ((frame float :offset-assert 200) + (desired float :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 21 + :size-assert #xd0 + :flag-assert #x15005000d0 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-cell-door +(defmethod inspect prsn-cell-door ((obj prsn-cell-door)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tframe: ~f~%" (-> obj frame)) + (format #t "~2Tdesired: ~f~%" (-> obj desired)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-prsn-cell-door prsn-cell-door 0 2 + ((1 (meters 999999))) + :bounds (static-spherem -2.5 3.25 0 4.25) + :origin-joint-index 3 + ) + +;; failed to figure out what this is: +(defstate idle (prsn-cell-door) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('open) + (set! (-> self desired) 1.0) + (format #t "open~%") + ) + (('close) + (set! (-> self desired) 0.0) + (format #t "close~%") + ) + ) + ) + :code (behavior () + (until #f + (cond + ((< (-> self frame) (-> self desired)) + (+! (-> self frame) (* 0.075 (-> self clock seconds-per-frame))) + ) + ((< (-> self desired) (-> self frame)) + (set! (-> self frame) (- (-> self frame) (* 0.075 (-> self clock seconds-per-frame)))) + ) + ) + (set! (-> self frame) (fmax 0.0 (fmin 1.0 (-> self frame)))) + (ja :num-func num-func-identity :frame-num (ja-aframe (-> self frame) 0)) + (suspend) + ) + #f + (none) + ) + :post (the-as (function none :behavior prsn-cell-door) transform-post) + ) + +;; definition for method 11 of type prsn-cell-door +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-cell-door ((obj prsn-cell-door) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 3) + (set-vector! (-> v1-2 local-sphere) -10240.0 13312.0 0.0 17408.0) + (set! (-> s4-0 total-prims) (the-as uint 1)) + (set! (-> s4-0 root-prim) v1-2) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-5 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-cell-door" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj frame) 0.0) + (set! (-> obj desired) 0.0) + (set! (-> obj draw light-index) (the-as uint 10)) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type prsn-vent-fan +(deftype prsn-vent-fan (process-drawable) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15005000c8 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-vent-fan +(defmethod inspect prsn-vent-fan ((obj prsn-vent-fan)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defskelgroup skel-prsn-vent-fan prsn-vent-fan 0 3 + ((1 (meters 999999))) + :bounds (static-spherem -2.5 3.25 0 4.25) + :origin-joint-index 3 + ) + +;; failed to figure out what this is: +(defstate idle (prsn-vent-fan) + :virtual #t + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior prsn-vent-fan) ja-post) + ) + +;; definition for method 11 of type prsn-vent-fan +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-vent-fan ((obj prsn-vent-fan) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-vent-fan" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type prsn-torture +(deftype prsn-torture (process-drawable) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15005000c8 + (:methods + (idle () _type_ :state 20) + ) + ) + +;; definition for method 3 of type prsn-torture +(defmethod inspect prsn-torture ((obj prsn-torture)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defstate idle (prsn-torture) + :virtual #t + :event (the-as + (function process int symbol event-message-block object :behavior prsn-torture) + dark-lightning-handler + ) + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (behavior () + (transform-post) + (none) + ) + ) + +;; definition for method 11 of type prsn-torture +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! prsn-torture ((obj prsn-torture) (arg0 entity-actor)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s4-0 penetrated-by) (penetrate)) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) + (set! (-> s4-0 total-prims) (the-as uint 10)) + (set! (-> s3-0 prim-core collide-as) (collide-spec pusher)) + (set! (-> s3-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 transform-index) 2) + (set-vector! (-> s3-0 local-sphere) 0.0 -14336.0 0.0 32768.0) + (set! (-> s4-0 root-prim) s3-0) + ) + (pusher-init s4-0) + (let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 20) (the-as uint 0)))) + (set! (-> v1-11 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-11 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-11 prim-core action) (collide-action solid)) + (set! (-> v1-11 transform-index) 3) + (set-vector! (-> v1-11 local-sphere) 0.0 -10240.0 0.0 16384.0) + ) + (let ((v1-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 13) (the-as uint 0)))) + (set! (-> v1-13 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-13 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-13 prim-core action) (collide-action solid)) + (set! (-> v1-13 transform-index) 10) + (set-vector! (-> v1-13 local-sphere) 0.0 -4096.0 0.0 10240.0) + ) + (let ((v1-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 12) (the-as uint 0)))) + (set! (-> v1-15 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-15 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-15 prim-core action) (collide-action solid)) + (set! (-> v1-15 transform-index) 11) + (set-vector! (-> v1-15 local-sphere) 0.0 -5120.0 0.0 8192.0) + ) + (let ((v1-17 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 16) (the-as uint 0)))) + (set! (-> v1-17 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-17 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-17 prim-core action) (collide-action solid)) + (set! (-> v1-17 transform-index) 24) + (set-vector! (-> v1-17 local-sphere) 0.0 4096.0 0.0 10240.0) + ) + (let ((v1-19 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 15) (the-as uint 0)))) + (set! (-> v1-19 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-19 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-19 prim-core action) (collide-action solid)) + (set! (-> v1-19 transform-index) 25) + (set-vector! (-> v1-19 local-sphere) 0.0 -2662.4 0.0 6144.0) + ) + (let ((v1-21 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 14) (the-as uint 0)))) + (set! (-> v1-21 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-21 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-21 prim-core action) (collide-action solid)) + (set! (-> v1-21 transform-index) 27) + (set-vector! (-> v1-21 local-sphere) 0.0 -819.2 0.0 4096.0) + ) + (let ((v1-23 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 19) (the-as uint 0)))) + (set! (-> v1-23 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-23 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-23 prim-core action) (collide-action solid)) + (set! (-> v1-23 transform-index) 51) + (set-vector! (-> v1-23 local-sphere) 0.0 4096.0 0.0 10240.0) + ) + (let ((v1-25 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 18) (the-as uint 0)))) + (set! (-> v1-25 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-25 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-25 prim-core action) (collide-action solid)) + (set! (-> v1-25 transform-index) 52) + (set-vector! (-> v1-25 local-sphere) 0.0 2457.6 0.0 6144.0) + ) + (let ((v1-27 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 17) (the-as uint 0)))) + (set! (-> v1-27 prim-core collide-as) (collide-spec pusher)) + (set! (-> v1-27 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-27 prim-core action) (collide-action solid)) + (set! (-> v1-27 transform-index) 54) + (set-vector! (-> v1-27 local-sphere) 0.0 819.2 0.0 4096.0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-30 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-30 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-30 prim-core collide-with)) + ) + (set! (-> obj root) s4-0) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-prsn-torture" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + (go (method-of-object obj idle)) + (none) + ) + +;; failed to figure out what this is: +(scene-method-16 + (new 'static 'scene + :name "fortress-save-friends-res" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-49" + :art-group "scenecamera" + :anim "fortress-save-friends-res" + :parts 43 + :command-list '((0 (kill "prsn-cell-door-3") (task-close! "fortress-save-friends-resolution") (fadein (frame-time-30 10))) + (75 (send-event "prsn-cell-door-2" 'open)) + (75 (send-event "prsn-cell-door-1" 'open)) + (75 (send-event "prsn-cell-door-4" 'open)) + (1143 (apply )) + (1189 (apply )) + (2427 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2445 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2463 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2485 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2507 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2549 (send-event "warp-gate-b-1" 'effect) (sound-play "warpgate-mov")) + (2550 (fadeout (frame-time-30 20))) + ) + :cut-list '(47 + 76 + 130 + 189 + 253 + 448 + 496 + 522 + 555 + 624 + 768 + 893 + 954 + 977 + 1089 + 1143 + 1189 + 1328 + 1407 + 1463 + 1603 + 1718 + 1857 + 1983 + 2146 + 2206 + 2307 + 2390 + ) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'prison + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min 2507)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'lprsncst + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min 2427)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tess-highres" + :level 'lprsncst + :art-group "skel-tess-highres" + :prefix "" + :draw-frames '((min 2445)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "samos-highres" + :level 'lprsncst + :art-group "skel-samos-highres" + :prefix "" + :draw-frames '((min 2146) (2206 2485)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "youngsamos-highres" + :level 'lprsncst + :art-group "skel-youngsamos-highres" + :prefix "" + :draw-frames '((min 2146) (2206 2463)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "prsn-cell-door" + :level 'prison + :art-group "skel-prsn-cell-door" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "prison-start" + :end-point-obj "vinroom-warp" + :borrow '((prison 0 lprsncst special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) diff --git a/test/decompiler/reference/jak2/levels/fortress/prison/prison-part_REF.gc b/test/decompiler/reference/jak2/levels/fortress/prison/prison-part_REF.gc new file mode 100644 index 0000000000..7b475dd125 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/fortress/prison/prison-part_REF.gc @@ -0,0 +1,1805 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type prison-part +(deftype prison-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + +;; definition for method 3 of type prison-part +(defmethod inspect prison-part ((obj prison-part)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type part-spawner inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light-machine + :id 584 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2613 :fade-after (meters 200) :flags (bit6 bit7)) + (sp-item 2614 :fade-after (meters 200) :flags (bit6 bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 2613 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.25)) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 822067.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2614 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.25)) + (sp-rnd-flt spt-scale-x (meters 12) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-flt spt-a 12.0) + (sp-flt spt-omega 821248.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light + :id 585 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2615 :fade-after (meters 180) :flags (bit6)) (sp-item 2616 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2615 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 12.0 4.0 1.0) + (sp-flt spt-omega 740147.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2616 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees 17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 739328.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 5120.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light-3d-backside + :id 586 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2617 :flags (is-3d bit6 bit7))) + ) + +;; failed to figure out what this is: +(defpart 2617 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.5)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 33.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-3) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-light-ceiling + :id 587 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 2618 :fade-after (meters 80) :flags (bit6)) (sp-item 2619 :fade-after (meters 100) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2618 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.25)) + (sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 2619 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.25)) + (sp-rnd-flt spt-scale-x (meters 14) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -5.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-flt spt-omega 411648.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-tall-vent-small + :id 588 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 18) + :rotate ((degrees -1.5555556) (degrees 0) (degrees 0)) + :parts ((sp-item 2620 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 2620 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 3.0 1.0 1.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1) 1.0) + (sp-rnd-flt spt-y (meters -2.5) (meters 5.5) 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 32.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.026666667) (meters -0.01) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.033333335) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.24) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-rnd-flt spt-friction 0.95 0.025 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 2621) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-tall-vent + :id 589 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 20) + :rotate ((degrees -1.5555556) (degrees 0) (degrees 0)) + :parts ((sp-item 2622 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 2622 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 2.5 1.0 1.0) + (sp-rnd-flt spt-x (meters -1.25) (meters 2.5) 1.0) + (sp-rnd-flt spt-y (meters -4.5) (meters 11.5) 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 32.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.026666667) (meters -0.01) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.033333335) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.24) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-rnd-flt spt-friction 0.95 0.025 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 2621) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2621 + :init-specs ((sp-rnd-flt spt-fade-a -0.04 -0.048 1.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-floor-vent + :id 590 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 16) + :parts ((sp-item 2623 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7))) + ) + +;; failed to figure out what this is: +(defpart 2623 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 3.0 1.0 1.0) + (sp-rnd-flt spt-x (meters -1.5) (meters 3) 1.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3) 1.0) + (sp-rnd-flt spt-z (meters -0.5) (meters 1) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 32.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-x (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.016666668) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.24) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-rnd-flt spt-friction 0.95 0.025 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 2624) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2624 + :init-specs ((sp-rnd-flt spt-fade-a -0.06 -0.048 1.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-01-a + :id 591 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2625 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50 :offset 115) + (sp-item 2626 :fade-after (meters 60) :flags (bit6 bit7) :period 210 :length 50 :offset 155) + (sp-item 2627 :fade-after (meters 40) :flags (bit6 bit7) :period 225 :length 50 :offset 35) + (sp-item 2628 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 150) + (sp-item 2629 :fade-after (meters 40) :flags (bit6 bit7) :period 805 :length 200 :offset 350) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-01-b + :id 592 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2625 :fade-after (meters 80) :flags (bit6 bit7) :period 310 :length 100 :offset 50) + (sp-item 2626 :fade-after (meters 60) :flags (bit6 bit7) :period 335 :length 100 :offset 160) + (sp-item 2627 :fade-after (meters 40) :flags (bit6 bit7) :period 345 :length 100 :offset 225) + (sp-item 2628 :fade-after (meters 80) :flags (bit6 bit7) :period 615 :length 300 :offset 250) + (sp-item 2629 :fade-after (meters 40) :flags (bit6 bit7) :period 835 :length 225) + ) + ) + +;; failed to figure out what this is: +(defpart 2625 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2626 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.25)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2627 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2628 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2629 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.25)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-02-a + :id 593 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2630 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50) + (sp-item 2631 :fade-after (meters 40) :flags (bit6 bit7) :period 200 :length 50 :offset 50) + (sp-item 2632 :fade-after (meters 40) :flags (bit6 bit7) :period 65 :length 25 :offset 25) + (sp-item 2633 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50 :offset 100) + (sp-item 2634 :fade-after (meters 40) :flags (bit6 bit7) :period 200 :length 50 :offset 150) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-02-b + :id 594 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2630 :fade-after (meters 80) :flags (bit6 bit7) :period 275 :length 100 :offset 35) + (sp-item 2631 :fade-after (meters 60) :flags (bit6 bit7) :period 310 :length 100 :offset 115) + (sp-item 2632 :fade-after (meters 100) :flags (bit6 bit7) :period 100 :length 50) + (sp-item 2633 :fade-after (meters 80) :flags (bit6 bit7) :period 405 :length 100 :offset 205) + (sp-item 2634 :fade-after (meters 40) :flags (bit6 bit7) :period 465 :length 125 :offset 175) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-02-c + :id 595 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2630 :fade-after (meters 80) :flags (bit6 bit7) :period 50 :length 25 :offset 15) + (sp-item 2631 :fade-after (meters 60) :flags (bit6 bit7) :period 50 :length 25 :offset 35) + (sp-item 2632 :fade-after (meters 100) :flags (bit6 bit7) :period 85 :length 35 :offset 35) + (sp-item 2633 :fade-after (meters 80) :flags (bit6 bit7) :period 50 :length 25 :offset 5) + (sp-item 2634 :fade-after (meters 40) :flags (bit6 bit7) :period 500 :length 25 :offset 45) + ) + ) + +;; failed to figure out what this is: +(defpart 2630 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.3)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2631 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-flt spt-y (meters 0.1)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2632 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.23)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.1)) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2633 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2634 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.3)) + (sp-flt spt-y (meters -0.125)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-03-a + :id 596 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2635 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2636 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2637 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 50) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-03-b + :id 597 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2635 :fade-after (meters 80) :flags (bit6 bit7) :period 75 :length 40) + (sp-item 2636 :fade-after (meters 80) :flags (bit6 bit7) :period 75 :length 40) + (sp-item 2637 :fade-after (meters 40) :flags (bit6 bit7) :period 75 :length 40 :offset 35) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-03-c + :id 598 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2635 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100) + (sp-item 2636 :fade-after (meters 80) :flags (bit6 bit7) :period 260 :length 110 :offset 75) + (sp-item 2637 :fade-after (meters 40) :flags (bit6 bit7) :period 395 :length 125 :offset 150) + ) + ) + +;; failed to figure out what this is: +(defpart 2635 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2636 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.05)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2637 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.25)) + (sp-flt spt-y (meters 0)) + (sp-flt spt-z (meters 0.05)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-small-door + :id 599 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2638 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50) + (sp-item 2639 :fade-after (meters 40) :flags (bit6 bit7) :period 40 :length 20 :offset 25) + (sp-item 2640 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50 :offset 100) + ) + ) + +;; failed to figure out what this is: +(defpart 2638 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2639 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.2)) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2640 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-flt spt-y (meters 0.4)) + (sp-flt spt-z (meters 0.15)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-01 + :id 600 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2641 :fade-after (meters 180) :flags (bit6)) (sp-item 2642 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2641 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 60.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2642 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 20.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-02 + :id 601 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2643 :fade-after (meters 180) :flags (bit6)) (sp-item 2644 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2643 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 54.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2644 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 18.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-03 + :id 602 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2645 :fade-after (meters 180) :flags (bit6)) (sp-item 2646 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2645 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 48.0 4.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2646 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 16.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-04 + :id 603 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2647 :fade-after (meters 180) :flags (bit6)) (sp-item 2648 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2647 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 42.0 3.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2648 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 14.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-05 + :id 604 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2649 :fade-after (meters 180) :flags (bit6)) (sp-item 2650 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2649 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 36.0 3.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2650 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 12.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-06 + :id 605 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2651 :fade-after (meters 180) :flags (bit6)) (sp-item 2652 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2651 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 30.0 2.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2652 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 10.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-07 + :id 606 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2653 :fade-after (meters 180) :flags (bit6)) (sp-item 2654 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2653 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 24.0 2.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2654 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 8.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-08 + :id 607 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2655 :fade-after (meters 180) :flags (bit6)) (sp-item 2656 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2655 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 18.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2656 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 6.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-09 + :id 608 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2657 :fade-after (meters 180) :flags (bit6)) (sp-item 2658 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2657 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 12.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2658 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 4.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-fade-to-black-lights-10 + :id 609 + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 2659 :fade-after (meters 180) :flags (bit6)) (sp-item 2660 :fade-after (meters 180) :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 2659 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 192.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 6.0 1.0 1.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 2660 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.1) 1.0) + (sp-flt spt-rot-z (degrees 62.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 2.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-prison-console-front-door + :id 610 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 2661 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 50) + (sp-item 2662 :fade-after (meters 60) :flags (bit6 bit7) :period 205 :length 50 :offset 65) + (sp-item 2663 :fade-after (meters 40) :flags (bit6 bit7) :period 215 :length 50 :offset 120) + (sp-item 2664 :fade-after (meters 80) :flags (bit6 bit7) :period 235 :length 50 :offset 270) + (sp-item 2665 :fade-after (meters 60) :flags (bit6 bit7) :period 245 :length 50 :offset 30) + (sp-item 2666 :fade-after (meters 40) :flags (bit6 bit7) :period 240 :length 50 :offset 155) + (sp-item 2667 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50) + (sp-item 2668 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 350) + (sp-item 2669 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50 :offset 300) + (sp-item 2670 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 50) + (sp-item 2671 :fade-after (meters 100) :flags (bit6 bit7) :period 50 :length 25 :offset 25) + (sp-item 2672 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 250) + (sp-item 2673 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50 :offset 100) + (sp-item 2674 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 50 :offset 150) + (sp-item 2675 :fade-after (meters 100) :flags (bit6 bit7) :period 400 :length 50 :offset 200) + (sp-item 2676 :fade-after (meters 80) :flags (bit6 bit7) :period 150 :length 50) + (sp-item 2677 :fade-after (meters 60) :flags (bit6 bit7) :period 150 :length 50 :offset 50) + (sp-item 2678 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 50 :offset 100) + (sp-item 2679 :fade-after (meters 80) :flags (bit6 bit7) :period 165 :length 50) + (sp-item 2680 :fade-after (meters 60) :flags (bit6 bit7) :period 170 :length 50 :offset 25) + (sp-item 2681 :fade-after (meters 40) :flags (bit6 bit7) :period 175 :length 50 :offset 35) + (sp-item 2682 :fade-after (meters 80) :flags (bit6 bit7) :period 180 :length 50 :offset 45) + (sp-item 2683 :fade-after (meters 60) :flags (bit6 bit7) :period 185 :length 50 :offset 70) + (sp-item 2684 :fade-after (meters 40) :flags (bit6 bit7) :period 190 :length 50 :offset 110) + (sp-item 2685 :fade-after (meters 80) :flags (bit6 bit7) :period 195 :length 50 :offset 160) + (sp-item 2686 :fade-after (meters 60) :flags (bit6 bit7) :period 200 :length 50 :offset 135) + (sp-item 2687 :fade-after (meters 40) :flags (bit6 bit7) :period 205 :length 50 :offset 185) + ) + ) + +;; failed to figure out what this is: +(defpart 2661 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 0.05)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2662 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters -0.45)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2663 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters -0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2664 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 1.375)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2665 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 0.275)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2666 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.4)) + (sp-flt spt-y (meters 0.8)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 24.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2667 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2668 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -0.85)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2669 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-y (meters -1.4)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2670 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.3)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2671 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.3)) + (sp-flt spt-y (meters -0.85)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2672 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.3)) + (sp-flt spt-y (meters -1.4)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2673 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -0.3)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2674 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -0.85)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2675 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.9)) + (sp-flt spt-y (meters -1.4)) + (sp-flt spt-z (meters 0.3)) + (sp-rnd-flt spt-scale-x (meters 0.8) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 30.0 4.0 1.0) + (sp-flt spt-omega 412467.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2676 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.85)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2677 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.85)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2678 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.85)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2679 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2680 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2681 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.1)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2682 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.525)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2683 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.525)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2684 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.525)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2685 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 0.55)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 330547.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2686 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 0.95)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 2687 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.9)) + (sp-flt spt-y (meters 1.35)) + (sp-flt spt-z (meters 0.275)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 204.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 4.0 1.0) + (sp-flt spt-omega 166707.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/test/decompiler/test_VuDisasm.cpp b/test/decompiler/test_VuDisasm.cpp index c24a88ee62..cddfa1a574 100644 --- a/test/decompiler/test_VuDisasm.cpp +++ b/test/decompiler/test_VuDisasm.cpp @@ -135,6 +135,21 @@ TEST(VuDisasm, BonesVu0) { EXPECT_EQ(disasm.to_string(prog), get_expected("bones-vu0")); } +TEST(VuDisasm, BonesVu0_Jak2) { + auto data = get_test_data("jak2/bones-vu0"); + VuDisassembler disasm(VuDisassembler::VuKind::VU0); + auto prog = disasm.disassemble(data.data(), data.size() * 4, false); + EXPECT_EQ(disasm.to_string(prog), get_expected("jak2/bones-vu0")); +} + +TEST(VuDisasm, ForegroundVu0_Jak2) { + auto data = get_test_data("jak2/foreground-vu0"); + VuDisassembler disasm(VuDisassembler::VuKind::VU0); + auto prog = disasm.disassemble(data.data(), data.size() * 4, false); + // fmt::print("{}\n", disasm.to_string(prog)); + EXPECT_EQ(disasm.to_string(prog), get_expected("jak2/foreground-vu0")); +} + TEST(VuDisasm, ShadowVu0) { auto data = get_test_data("shadow-vu0"); VuDisassembler disasm(VuDisassembler::VuKind::VU0); diff --git a/test/decompiler/vu_reference/jak2/bones-vu0-result.txt b/test/decompiler/vu_reference/jak2/bones-vu0-result.txt new file mode 100644 index 0000000000..f99cbd1137 --- /dev/null +++ b/test/decompiler/vu_reference/jak2/bones-vu0-result.txt @@ -0,0 +1,54 @@ + nop | mulax.xyzw ACC, vf05, vf01 + nop | madday.xyzw ACC, vf06, vf01 + nop | maddaz.xyzw ACC, vf07, vf01 + nop | maddw.xyzw vf13, vf08, vf01 + nop | mulax.xyzw ACC, vf05, vf02 + nop | madday.xyzw ACC, vf06, vf02 + nop | maddaz.xyzw ACC, vf07, vf02 + nop | maddw.xyzw vf14, vf08, vf02 + nop | mulax.xyzw ACC, vf05, vf03 + nop | madday.xyzw ACC, vf06, vf03 + nop | maddaz.xyzw ACC, vf07, vf03 + nop | maddw.xyzw vf15, vf08, vf03 + nop | mulax.xyzw ACC, vf05, vf04 + nop | madday.xyzw ACC, vf06, vf04 + nop | maddaz.xyzw ACC, vf07, vf04 + nop | maddw.xyzw vf16, vf08, vf04 + nop | opmula.xyz ACC, vf14, vf15 + nop | opmsub.xyz vf09, vf15, vf14 + nop | opmula.xyz ACC, vf15, vf13 + nop | opmsub.xyz vf10, vf13, vf15 + nop | opmula.xyz ACC, vf13, vf14 + nop | mul.xyz vf12, vf13, vf09 + nop | opmsub.xyz vf11, vf14, vf13 + nop | mulax.xyzw ACC, vf28, vf13 + nop | madday.xyzw ACC, vf29, vf13 + nop | maddaz.xyzw ACC, vf30, vf13 + nop | maddw.xyzw vf13, vf31, vf13 + nop | mulax.w ACC, vf00, vf12 + nop | madday.w ACC, vf00, vf12 + nop | maddz.w vf12, vf00, vf12 + nop | mulax.xyzw ACC, vf28, vf14 + nop | madday.xyzw ACC, vf29, vf14 + nop | maddaz.xyzw ACC, vf30, vf14 + div Q, vf00.w, vf12.w | maddw.xyzw vf14, vf31, vf14 + nop | mulax.xyzw ACC, vf28, vf15 + nop | madday.xyzw ACC, vf29, vf15 + nop | maddaz.xyzw ACC, vf30, vf15 + nop | maddw.xyzw vf15, vf31, vf15 + nop | mulax.xyzw ACC, vf28, vf16 + nop | madday.xyzw ACC, vf29, vf16 + nop | maddaz.xyzw ACC, vf30, vf16 + nop | maddw.xyzw vf16, vf31, vf16 + nop | mul.xyzw vf09, vf09, Q + nop | mul.xyzw vf10, vf10, Q + nop | mul.xyzw vf11, vf11, Q + nop | mulax.xyzw ACC, vf25, vf09 + nop | madday.xyzw ACC, vf26, vf09 + nop | maddz.xyzw vf09, vf27, vf09 + nop | mulax.xyzw ACC, vf25, vf10 + nop | madday.xyzw ACC, vf26, vf10 + nop | maddz.xyzw vf10, vf27, vf10 + nop | mulax.xyzw ACC, vf25, vf11 + nop | madday.xyzw ACC, vf26, vf11 :e + nop | maddz.xyzw vf11, vf27, vf11 diff --git a/test/decompiler/vu_reference/jak2/bones-vu0.txt b/test/decompiler/vu_reference/jak2/bones-vu0.txt new file mode 100644 index 0000000000..b5f34a3e0a --- /dev/null +++ b/test/decompiler/vu_reference/jak2/bones-vu0.txt @@ -0,0 +1,110 @@ + .word 0x80000030 + .word 0x1e129bc + .word 0x80000030 + .word 0x1e130bd + .word 0x80000030 + .word 0x1e138be + .word 0x80000030 + .word 0x1e1434b + .word 0x80000030 + .word 0x1e229bc + .word 0x80000030 + .word 0x1e230bd + .word 0x80000030 + .word 0x1e238be + .word 0x80000030 + .word 0x1e2438b + .word 0x80000030 + .word 0x1e329bc + .word 0x80000030 + .word 0x1e330bd + .word 0x80000030 + .word 0x1e338be + .word 0x80000030 + .word 0x1e343cb + .word 0x80000030 + .word 0x1e429bc + .word 0x80000030 + .word 0x1e430bd + .word 0x80000030 + .word 0x1e438be + .word 0x80000030 + .word 0x1e4440b + .word 0x80000030 + .word 0x1cf72fe + .word 0x80000030 + .word 0x1ce7a6e + .word 0x80000030 + .word 0x1cd7afe + .word 0x80000030 + .word 0x1cf6aae + .word 0x80000030 + .word 0x1ce6afe + .word 0x80000030 + .word 0x1c96b2a + .word 0x80000030 + .word 0x1cd72ee + .word 0x80000030 + .word 0x1ede1bc + .word 0x80000030 + .word 0x1ede8bd + .word 0x80000030 + .word 0x1edf0be + .word 0x80000030 + .word 0x1edfb4b + .word 0x80000030 + .word 0x2c01bc + .word 0x80000030 + .word 0x2c00bd + .word 0x80000030 + .word 0x2c030a + .word 0x80000030 + .word 0x1eee1bc + .word 0x80000030 + .word 0x1eee8bd + .word 0x80000030 + .word 0x1eef0be + .word 0x81ec03bc + .word 0x1eefb8b + .word 0x80000030 + .word 0x1efe1bc + .word 0x80000030 + .word 0x1efe8bd + .word 0x80000030 + .word 0x1eff0be + .word 0x80000030 + .word 0x1effbcb + .word 0x80000030 + .word 0x1f0e1bc + .word 0x80000030 + .word 0x1f0e8bd + .word 0x80000030 + .word 0x1f0f0be + .word 0x80000030 + .word 0x1f0fc0b + .word 0x80000030 + .word 0x1e04a5c + .word 0x80000030 + .word 0x1e0529c + .word 0x80000030 + .word 0x1e05adc + .word 0x80000030 + .word 0x1e9c9bc + .word 0x80000030 + .word 0x1e9d0bd + .word 0x80000030 + .word 0x1e9da4a + .word 0x80000030 + .word 0x1eac9bc + .word 0x80000030 + .word 0x1ead0bd + .word 0x80000030 + .word 0x1eada8a + .word 0x80000030 + .word 0x1ebc9bc + .word 0x80000030 + .word 0x41ebd0bd + .word 0x80000030 + .word 0x1ebdaca + + diff --git a/test/decompiler/vu_reference/jak2/foreground-vu0-result.txt b/test/decompiler/vu_reference/jak2/foreground-vu0-result.txt new file mode 100644 index 0000000000..9cfab21357 --- /dev/null +++ b/test/decompiler/vu_reference/jak2/foreground-vu0-result.txt @@ -0,0 +1,9 @@ + nop | mulax.xyzw ACC, vf01, vf04 + nop | madday.xyzw ACC, vf02, vf04 + nop | maddz.xyzw vf07, vf03, vf04 + nop | mulax.xyzw ACC, vf01, vf05 + nop | madday.xyzw ACC, vf02, vf05 + nop | maddz.xyzw vf08, vf03, vf05 + nop | mulax.xyzw ACC, vf01, vf06 + nop | madday.xyzw ACC, vf02, vf06 :e + nop | maddz.xyzw vf09, vf03, vf06 diff --git a/test/decompiler/vu_reference/jak2/foreground-vu0.txt b/test/decompiler/vu_reference/jak2/foreground-vu0.txt new file mode 100644 index 0000000000..5c9d9be771 --- /dev/null +++ b/test/decompiler/vu_reference/jak2/foreground-vu0.txt @@ -0,0 +1,18 @@ + .word 0x80000030 + .word 0x1e409bc + .word 0x80000030 + .word 0x1e410bd + .word 0x80000030 + .word 0x1e419ca + .word 0x80000030 + .word 0x1e509bc + .word 0x80000030 + .word 0x1e510bd + .word 0x80000030 + .word 0x1e51a0a + .word 0x80000030 + .word 0x1e609bc + .word 0x80000030 + .word 0x41e610bd + .word 0x80000030 + .word 0x1e61a4a \ No newline at end of file diff --git a/test/offline/config/jak2/config.jsonc b/test/offline/config/jak2/config.jsonc index 9600bf4c9f..94bacb4db7 100644 --- a/test/offline/config/jak2/config.jsonc +++ b/test/offline/config/jak2/config.jsonc @@ -9,6 +9,8 @@ "DGO/PALOUT.DGO", "DGO/CTA.DGO", "DGO/FOR.DGO", + "DGO/PRI.DGO", + "DGO/FEA.DGO", "DGO/FEB.DGO" ], @@ -194,7 +196,9 @@ "entity-lookup-part-group", "process-drawable-shock-skel-effect", // stack array - "target-send-attack" + "target-send-attack", + "bones-mtx-calc-execute", // asm + "(method 32 fort-lift-plat)" // multiply defined ], "skip_compile_states": {