diff --git a/.gitignore b/.gitignore index 2008dbc83b..c5ce8c560b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,10 @@ savestate-out/ failures/ ee-results.json +# graphics debug +debug_out/* +gfx_dumps/* + # game stuff game_config/* imgui.ini diff --git a/CMakeLists.txt b/CMakeLists.txt index 31f51600c7..03ef536a0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,8 @@ if(UNIX) -Woverloaded-virtual \ -Wredundant-decls \ -Wshadow \ - -Wsign-promo") + -Wsign-promo \ + -fdiagnostics-color=always") else() set(CMAKE_CXX_FLAGS "/EHsc") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10000000") diff --git a/common/math/Vector.h b/common/math/Vector.h index 250c2561e0..c5c11497fe 100644 --- a/common/math/Vector.h +++ b/common/math/Vector.h @@ -78,6 +78,21 @@ class Vector { return result; } + Vector& operator+=(const Vector& other) { + for (int i = 0; i < Size; i++) { + m_data[i] += other[i]; + } + return *this; + } + + Vector elementwise_multiply(const Vector& other) const { + Vector result; + for (int i = 0; i < Size; i++) { + result[i] = m_data[i] * other[i]; + } + return result; + } + Vector operator-(const Vector& other) const { Vector result; for (int i = 0; i < Size; i++) { @@ -114,6 +129,13 @@ class Vector { return result; } + Vector& operator*=(const T& val) { + for (int i = 0; i < Size; i++) { + m_data[i] *= val; + } + return *this; + } + Vector cross(const Vector& other) const { static_assert(Size == 3, "Size for cross"); Vector result = {y() * other.z() - z() * other.y(), z() * other.x() - x() * other.z(), @@ -150,6 +172,34 @@ class Vector { T m_data[Size]; }; +// column major +template +struct Matrix { + Matrix() = default; + + static Matrix zero() { + Matrix result; + for (auto& x : result.m_data) { + x = 0; + } + return result; + } + + const T& operator()(int r, int c) const { return m_data[c + r * Cols]; } + T& operator()(int r, int c) { return m_data[r + c * Rows]; } + + Vector col(int c) const { + Vector result; + for (int i = 0; i < Rows; i++) { + result[i] = m_data[c * Rows + i]; + } + return result; + } + + private: + T m_data[Rows * Cols]; +}; + template using Vector2 = Vector; @@ -165,4 +215,6 @@ using Vector4f = Vector4; using Vector2d = Vector2; using Vector3d = Vector3; using Vector4d = Vector4; + +using Matrix4f = Matrix; } // namespace math diff --git a/common/texture/texture_conversion.h b/common/texture/texture_conversion.h index 66e4c72df8..727985c095 100644 --- a/common/texture/texture_conversion.h +++ b/common/texture/texture_conversion.h @@ -207,9 +207,12 @@ inline u32 rgba16_to_rgba32(u32 in) { u32 r = (in & 0b11111) * ratio; u32 g = ((in >> 5) & 0b11111) * ratio; u32 b = ((in >> 10) & 0b11111) * ratio; - u32 a = (in & 0x8000) * 0x1FE00; - return a | (b << 16) | (g << 8) | r; + // rgba has only 1 bit for a and how it gets converted depends on the value of ta1. + // for now, it looks like they always use 0x80, so this is fine. + u32 a = (in & 0x8000) ? 0x80 : 0; + + return (a << 24) | (b << 16) | (g << 8) | r; } // texture format enums diff --git a/common/util/BitUtils.h b/common/util/BitUtils.h index d8d6d319e0..a850625888 100644 --- a/common/util/BitUtils.h +++ b/common/util/BitUtils.h @@ -64,3 +64,23 @@ std::optional get_power_of_two(T in) { bool integer_fits(s64 in, int size, bool is_signed); u32 float_as_u32(float x); + +template +T align16(T in) { + return (in + 15) & (~T(15)); +} + +template +T align8(T in) { + return (in + 7) & (~T(7)); +} + +template +T align4(T in) { + return (in + 3) & (~T(3)); +} + +template +T align64(T in) { + return (in + 63) & (~T(63)); +} \ No newline at end of file diff --git a/common/util/Serializer.h b/common/util/Serializer.h new file mode 100644 index 0000000000..c71d5d7955 --- /dev/null +++ b/common/util/Serializer.h @@ -0,0 +1,219 @@ +#pragma once + +#include "common/util/assert.h" +#include +#include +#include + +/*! + * The Serializer is a tool to load or save data from a buffer. + * It's currently used to save graphics dumps, but could also be used for savestates in the future. + * + * The serializer can be constructed in either a "save" or a "load" mode, for saving or loading. + * When saving, it copies stuff into a buffer. + * When loading, it copies stuff out of this buffer. This will only work if you do things in + * exactly the same order. To make this easier, most of the commonly used functions can work for + * either saving or loading, so you can have a method like + * + * void MyObject::serialize(Serializer& ser) { + * ser.from_ptr(&m_foo); + * ser.from_ptr(&m_bar); + * } + * + * and it will work for either saving or loading. + * + * Methods that are named like "save_" can only be used in save mode. + * + * Methods like "from_ptr" can work in either save or load mode, and will work in either. + * In general, you can only use most of these on POD, and saving more complicated data structures + * requires special handling. + */ +class Serializer { + public: + /*! + * Construct a serializer in writing mode. This saves data from the program into a buffer that can + * later be accessed with get_save_result. + */ + Serializer() : m_writing(true) { + const size_t initial_size = 32; + m_data = (u8*)malloc(initial_size); + m_size = initial_size; + } + + /*! + * Construct a serializer that reads from the given data. + * The data is copied to an internal buffer managed by the serializer, there is no need to keep + * the input data around. + */ + Serializer(const u8* data, size_t size) : m_size(size), m_writing(false) { + m_data = (u8*)malloc(size); + memcpy(m_data, data, size); + } + + // don't allow copying, assigning, or move constructing. + Serializer(const Serializer& other) = delete; + Serializer& operator=(const Serializer& other) = delete; + Serializer(Serializer&& other) = delete; + + // move assignment is supported. + Serializer& operator=(Serializer&& other) noexcept { + if (this == &other) { + return *this; + } + + m_data = other.m_data; + m_size = other.m_size; + m_offset = other.m_offset; + m_writing = other.m_writing; + + other.m_data = nullptr; + other.m_size = 0; + + return *this; + } + + ~Serializer() { free(m_data); } + + /*! + * Save or load the thing pointed to by ptr. + * T must be POD. + */ + template + void from_ptr(T* ptr) { + read_or_write(ptr, sizeof(T)); + } + + /*! + * Save or load size bytes from ptr. + */ + void from_raw_data(void* ptr, size_t size) { read_or_write(ptr, size); } + + /*! + * Load a T. T should be POD. + */ + template + T load() { + assert(!m_writing); + T result; + read_or_write(&result, sizeof(T)); + return result; + } + + /*! + * Save a T. T should be POD. + */ + template + void save(const T& thing) { + assert(m_writing); + read_or_write(const_cast(&thing), sizeof(T)); + } + + /*! + * Save or load a string. + */ + void from_str(std::string* str) { + // size, then data. + if (is_loading()) { + str->resize(load()); + } else { + save(str->size()); + } + from_raw_data(str->data(), str->size()); + } + + /*! + * Save a std::string. This is just so you can save a const string without needing to copy or do a + * const_cast. + */ + void save_str(const std::string* str) { + assert(is_saving()); + // safe, we're saving, so from_str will only read. + from_str(const_cast(str)); + } + + /*! + * Load a std::string and return it. + */ + std::string load_string() { + assert(is_loading()); + std::string s; + from_str(&s); + return s; + } + + /*! + * Save or load a vector of POD. This won't work on vectors of vectors, for example. + */ + template + void from_pod_vector(std::vector* vec) { + if (is_saving()) { + save(vec->size()); + } else { + vec->resize(load()); + } + from_raw_data(vec->data(), vec->size()); + } + + /*! + * Are we saving? + */ + bool is_saving() const { return m_writing; } + + /*! + * Are we loading? + */ + bool is_loading() const { return !m_writing; } + + /*! + * Reset a load back to the beginning. + */ + void reset_load() { + assert(is_loading()); + m_offset = 0; + } + + /*! + * Get the result of the save. This is a view of the buffer owned by the Serializer. + */ + std::pair get_save_result() { + assert(m_writing); + return {m_data, m_offset}; + } + + /*! + * Have we reached the end of the load? + */ + bool get_load_finished() const { + assert(!m_writing); + return m_offset == m_size; + } + + /*! + * Size of buffer, in bytes. + */ + size_t data_size() const { return m_size; } + + private: + /*! + * Main function to read and write the buffer. + */ + void read_or_write(void* data, size_t size) { + if (m_writing) { + // if we would overflow, just resize the buffer. + if (m_offset + size > m_size) { + m_data = (u8*)realloc(m_data, (m_offset + size) * 2); + } + memcpy(m_data + m_offset, data, size); + } else { + // if we would overflow, it's an error. + assert(m_offset + size <= m_size); + memcpy(data, m_data + m_offset, size); + } + m_offset += size; + } + + u8* m_data = nullptr; + size_t m_size = 0; + size_t m_offset = 0; + bool m_writing = false; +}; \ No newline at end of file diff --git a/common/util/compress.cpp b/common/util/compress.cpp index 89c6a94136..fde9d39f47 100644 --- a/common/util/compress.cpp +++ b/common/util/compress.cpp @@ -6,12 +6,16 @@ #include "common/util/assert.h" namespace compression { + +/*! + * Compress data with zstd. There is an 8-byte header containing the decompressed data's size. + */ std::vector compress_zstd(const void* data, size_t size) { auto max_compressed = ZSTD_compressBound(size); std::vector result(sizeof(size_t) + max_compressed); memcpy(result.data(), &size, sizeof(size_t)); - auto compressed_size = ZSTD_compress(result.data() + sizeof(size_t), max_compressed, data, size, - ZSTD_CLEVEL_DEFAULT); + auto compressed_size = + ZSTD_compress(result.data() + sizeof(size_t), max_compressed, data, size, 1); if (ZSTD_isError(compressed_size)) { printf("ZSTD error: %s\n", ZSTD_getErrorName(compressed_size)); assert(false); @@ -20,6 +24,10 @@ std::vector compress_zstd(const void* data, size_t size) { return result; } +/*! + * Decompress data with zstd. The first 8-bytes of the data should be a header containing the + * decompressed data's size. + */ std::vector decompress_zstd(const void* data, size_t size) { assert(size >= sizeof(size_t)); size_t decompressed_size; @@ -37,4 +45,4 @@ std::vector decompress_zstd(const void* data, size_t size) { assert(decomp_size == decompressed_size); return result; } -} // namespace compression \ No newline at end of file +} // namespace compression diff --git a/decompiler/CMakeLists.txt b/decompiler/CMakeLists.txt index e19801f7e0..d4f804c449 100644 --- a/decompiler/CMakeLists.txt +++ b/decompiler/CMakeLists.txt @@ -62,6 +62,7 @@ add_library( util/data_decompile.cpp util/DataParser.cpp util/DecompilerTypeSystem.cpp + util/sparticle_decompile.cpp util/TP_Type.cpp VuDisasm/VuDisassembler.cpp diff --git a/decompiler/Disasm/OpcodeInfo.cpp b/decompiler/Disasm/OpcodeInfo.cpp index de13ecadc6..9620a2310b 100644 --- a/decompiler/Disasm/OpcodeInfo.cpp +++ b/decompiler/Disasm/OpcodeInfo.cpp @@ -302,12 +302,13 @@ void init_opcode_info() { drd_srs_srt(def(IK::PCPYLD, "pcpyld").gpr128()); // Parallel Copy Lower Doubleword drd_srs_srt(def(IK::PMADDH, "pmaddh").gpr128()); // Parallel Multiply-Add Halfword drd_srs_srt(def(IK::PMULTH, "pmulth").gpr128()); // Parallel Multiply Halfword - drd_srs_srt(def(IK::PEXEW, "pexew").gpr128()); // Parallel Exchange Even Word drd_srs_srt(def(IK::PINTEH, "pinteh").gpr128()); // Parallel Interleave Even Halfword drd_srs_srt(def(IK::PAND, "pand").gpr128()); // Parallel And drd_srs_srt(def(IK::POR, "por").gpr128()); // Parallel Or drd_srs_srt(def(IK::PNOR, "pnor").gpr128()); // Parallel Not Or + def(IK::PEXEW, "pexew").gpr128().dst_gpr(FT::RD).src_gpr(FT::RT); // Parallel Exchange Even Word + drd_srt_ssa(def(IK::PSLLW, "psllw").gpr128()); // Parallel Shift Left Logical Word drd_srt_ssa(def(IK::PSLLH, "psllh").gpr128()); // Parallel Shift Left Logical Halfword drd_srt_ssa(def(IK::PSRAW, "psraw").gpr128()); // Parallel Shift Right Arithmetic Word diff --git a/decompiler/Function/CfgVtx.cpp b/decompiler/Function/CfgVtx.cpp index 390ef4c9bc..88a3f999ed 100644 --- a/decompiler/Function/CfgVtx.cpp +++ b/decompiler/Function/CfgVtx.cpp @@ -59,6 +59,18 @@ void CfgVtx::replace_succ_and_check(CfgVtx* old_succ, CfgVtx* new_succ) { assert(replaced); } +void CfgVtx::remove_pred(CfgVtx* to_remove) { + bool found = false; + for (auto it = pred.begin(); it != pred.end(); it++) { + if (*it == to_remove) { + pred.erase(it); + found = true; + break; + } + } + assert(found); +} + /*! * Replace references to old_preds with a single new_pred. * Doesn't insert duplicates. @@ -477,7 +489,15 @@ bool ControlFlowGraph::is_while_loop(CfgVtx* b0, CfgVtx* b1, CfgVtx* b2) { if (!b0 || !b1 || !b2) return false; + bool debug = b0->to_string() == "Seq CONDNE104 ... Block 18100"; + + if (debug) { + fmt::print("try while: {} | {} | {}\n", b0->to_string(), b1->to_string(), b2->to_string()); + } + if (b0->end_branch.asm_branch || b1->end_branch.asm_branch) { + if (debug) + fmt::print("reject 1 {} {}\n", b0->end_branch.asm_branch, b1->end_branch.asm_branch); return false; } @@ -1101,10 +1121,19 @@ bool ControlFlowGraph::clean_up_asm_branches() { return true; } - if (!b0->end_branch.asm_branch) { + if (!b0->end_branch.asm_branch || !b0->end_branch.has_branch) { return true; } + if (b1->succ_branch == b1) { + // asm branch to yourself. just remove it. + b1->succ_branch = nullptr; + b1->end_branch.has_branch = false; + b1->remove_pred(b1); + replaced = true; + return false; + } + // don't want to combine two with an incoming edge in between. if (b1->pred.size() > 1) { return true; @@ -2094,6 +2123,10 @@ bool ControlFlowGraph::find_cond_n_else() { return true; } + if (prev_condition->end_branch.asm_branch) { + return true; + } + // prev_body should fall through to end todo - this was wrong? if (prev_body->succ_ft != end_block) { printf("reject 7\n"); diff --git a/decompiler/Function/CfgVtx.h b/decompiler/Function/CfgVtx.h index 12064a1975..0e5d981194 100644 --- a/decompiler/Function/CfgVtx.h +++ b/decompiler/Function/CfgVtx.h @@ -127,6 +127,8 @@ class CfgVtx { void replace_succ_and_check(CfgVtx* old_succ, CfgVtx* new_succ); void replace_preds_with_and_check(std::vector old_preds, CfgVtx* new_pred); + void remove_pred(CfgVtx* to_remove); + std::string links_to_string(); }; diff --git a/decompiler/Function/Function.cpp b/decompiler/Function/Function.cpp index 87724139aa..c85c39fd45 100644 --- a/decompiler/Function/Function.cpp +++ b/decompiler/Function/Function.cpp @@ -8,6 +8,7 @@ #include "TypeInspector.h" #include "decompiler/IR/IR.h" #include "decompiler/IR2/Form.h" +#include "common/util/BitUtils.h" namespace decompiler { namespace { @@ -30,18 +31,6 @@ Register get_expected_fpr_backup(int n, int total) { return fpr_backups.at((total - 1) - n); } -uint32_t align16(uint32_t in) { - return (in + 15) & (~15); -} - -uint32_t align8(uint32_t in) { - return (in + 7) & (~7); -} - -uint32_t align4(uint32_t in) { - return (in + 3) & (~3); -} - } // namespace Function::Function(int _start_word, int _end_word) : start_word(_start_word), end_word(_end_word) { diff --git a/decompiler/IR2/AtomicOpTypeAnalysis.cpp b/decompiler/IR2/AtomicOpTypeAnalysis.cpp index 953889c453..a2a33e6172 100644 --- a/decompiler/IR2/AtomicOpTypeAnalysis.cpp +++ b/decompiler/IR2/AtomicOpTypeAnalysis.cpp @@ -6,6 +6,7 @@ #include "decompiler/util/DecompilerTypeSystem.h" #include "decompiler/IR2/bitfields.h" #include "common/type_system/state.h" +#include "common/util/BitUtils.h" namespace decompiler { @@ -319,6 +320,7 @@ TP_Type get_stack_type_at_constant_offset(int offset, throw std::runtime_error( fmt::format("Failed to find a stack variable or structure at offset {}", offset)); } + } // namespace /*! @@ -601,9 +603,16 @@ TP_Type SimpleExpression::get_type_int2(const TypeState& input, if (m_kind == Kind::ADD && tc(dts, TypeSpec("structure"), arg0_type) && arg1_type.is_integer_constant()) { auto type_info = dts.ts.lookup_type(arg0_type.typespec()); + + // get next in memory, allow this as &+ if ((u64)type_info->get_size_in_memory() == arg1_type.get_integer_constant()) { return TP_Type::make_from_ts(arg0_type.typespec()); } + + // also allow it, if 16-byte aligned stride. + if ((u64)align16(type_info->get_size_in_memory()) == arg1_type.get_integer_constant()) { + return TP_Type::make_from_ts(arg0_type.typespec()); + } } if (tc(dts, TypeSpec("structure"), arg1_type) && !m_args[0].is_int() && @@ -663,6 +672,11 @@ TP_Type SimpleExpression::get_type_int2(const TypeState& input, } } + // allow shifting stuff for setting bitfields + if (m_kind == Kind::LEFT_SHIFT) { + return TP_Type::make_from_ts("int"); + } + throw std::runtime_error(fmt::format("Cannot get_type_int2: {}, args {} and {}", to_form(env.file->labels, env).print(), arg0_type.print(), arg1_type.print())); diff --git a/decompiler/ObjectFile/LinkedObjectFileCreation.cpp b/decompiler/ObjectFile/LinkedObjectFileCreation.cpp index f8ce125c0f..2a4454b4cb 100644 --- a/decompiler/ObjectFile/LinkedObjectFileCreation.cpp +++ b/decompiler/ObjectFile/LinkedObjectFileCreation.cpp @@ -10,6 +10,7 @@ #include "decompiler/config.h" #include "decompiler/util/DecompilerTypeSystem.h" #include "common/link_types.h" +#include "common/util/BitUtils.h" namespace decompiler { // There are three link versions: @@ -197,14 +198,6 @@ static uint32_t c_symlink3(LinkedObjectFile& f, return link_ptr + 1; } -static uint32_t align64(uint32_t in) { - return (in + 63) & (~63); -} - -static uint32_t align16(uint32_t in) { - return (in + 15) & (~15); -} - /*! * Process link data for a "V4" or "V2" object file. * In reality a V4 seems to be just a V2 object, but with the link data after the real data. diff --git a/decompiler/VuDisasm/VuDisassembler.cpp b/decompiler/VuDisasm/VuDisassembler.cpp index e59527b2c2..eee9270792 100644 --- a/decompiler/VuDisasm/VuDisassembler.cpp +++ b/decompiler/VuDisasm/VuDisassembler.cpp @@ -126,7 +126,7 @@ VuDisassembler::VuDisassembler() { add_op(VuInstrK::MUL, "mul").iemdt().dst_mask().dss_fd_fs_ft(); add_op(VuInstrK::MULq, "mul").iemdt().dst_mask().dst_vfd().src_vfs().src_q().vft_zero(); add_op(VuInstrK::SUB, "sub").iemdt().dst_mask().dss_fd_fs_ft(); - add_op(VuInstrK::MSUBbc, "msub").iemdt().dst_mask().dss_fd_fs_ft(); + add_op(VuInstrK::MSUBbc, "msub").iemdt().dst_mask().dss_fd_fs_ft().bc(); add_op(VuInstrK::MADDA, "madda").iemdt().dst_mask().dst_acc().src_vfs().src_vft(); add_op(VuInstrK::MULA, "mula").iemdt().dst_mask().dst_acc().src_vfs().src_vft(); add_op(VuInstrK::MINIbc, "mini").iemdt().dst_mask().bc().dss_fd_fs_ft(); diff --git a/decompiler/analysis/mips2c.cpp b/decompiler/analysis/mips2c.cpp index 17a9892304..97a6936e01 100644 --- a/decompiler/analysis/mips2c.cpp +++ b/decompiler/analysis/mips2c.cpp @@ -1,12 +1,31 @@ - #include #include "mips2c.h" +#include "common/util/print_float.h" #include "decompiler/Disasm/InstructionMatching.h" #include "decompiler/Function/Function.h" #include "decompiler/ObjectFile/LinkedObjectFile.h" +/*! + * Mips2C: + * The mips2c analysis pass converts mips assembly into C code. It is a very literal translation. + * This relies on the helper functions in mips2c_private.h header. + * + * We generate a "link" function and an "execute" function. The "link" function performs symbol + * table lookups and saves the address of the slots in a cache structure used during runtime. It + * also allocates a stub function on the GOAL heap that jumps to the C++ function in the proper way. + * + * The "link" function should be called by the linker when the appropriate object file is linked. + * It should happen after GOAL linking, but before executing the top-level segment. + * This _only_ allocates a function, but doesn't set the symbol. + * You have to do that yourself, in the top level. + * This order seems weird and annoying, but it makes sure that we get the order of allocations + * right. It's likely that nothing depends on this, but better to be safe. + * + * The "execute" function is the function that should be called from GOAL. + */ + namespace decompiler { ////////////////////// @@ -45,6 +64,10 @@ Register make_vf(int idx) { return Register(Reg::VF, idx); } +/*! + * Convert a GOAL symbol name to a valid C++ variable name. + * dashes become underscores, and !/?/ * are dropped. + */ std::string goal_to_c_name(const std::string& name) { std::string result; for (auto c : name) { @@ -61,6 +84,9 @@ std::string goal_to_c_name(const std::string& name) { return result; } +/*! + * Convert a decompiler function name to a valid C++ variable name. + */ std::string goal_to_c_function_name(const FunctionName& name) { switch (name.kind) { case FunctionName::FunctionKind::GLOBAL: @@ -70,11 +96,17 @@ std::string goal_to_c_function_name(const FunctionName& name) { } } +/*! + * Convert a decompiler register into the name of the register constant in mips2c_private.h + */ const char* reg_to_name(const InstructionAtom& atom) { assert(atom.is_reg()); return atom.get_reg().to_charp(); } +/*! + * A line of code in the mips2c function output. Just code + end of line comment. + */ struct Mips2C_Line { std::string code; std::string comment; @@ -85,14 +117,32 @@ struct Mips2C_Line { : code(_code), comment(_comment) {} }; +/*! + * Mips2C output. Contains the execute and link function. + * This is built up in the order of MIPS instructions/labels/comments using the output_* functions. + * The output is built by write_to_string. + */ struct Mips2C_Output { + /*! + * Add a label at the current line. + */ void output_label(int block_idx) { lines.push_back(fmt::format("\nblock_{}:", block_idx)); } + + /*! + * Add a full line comment at the current line. Includes "//" automatically + */ void output_line_comment(const std::string& text) { lines.emplace_back("// " + text); } + /*! + * Output code and comment for an instruction. + */ void output_instr(const std::string& instr, const std::string& comment) { lines.emplace_back(instr, comment); } + /*! + * Convert the output to a string. + */ std::string write_to_string(const FunctionName& goal_func_name) const { std::string name = goal_to_c_function_name(goal_func_name); std::string result = "//--------------------------MIPS2C---------------------\n"; @@ -103,6 +153,7 @@ struct Mips2C_Output { result += "namespace Mips2C {\n"; result += fmt::format("namespace {} {{\n", name); + // definition of the symbol cache. if (!symbol_cache.empty()) { result += "struct Cache {\n"; for (auto& sym : symbol_cache) { @@ -111,9 +162,23 @@ struct Mips2C_Output { result += "} cache;\n\n"; } + // definition of the function + // the mips2c_call function will build and pass an ExecutionContext result += "u64 execute(void* ctxt) {\n"; result += " auto* c = (ExecutionContext*)ctxt;\n"; - result += " bool bc = false;"; + + // the branch condition (for delay slots) + result += " bool bc = false;\n"; + + // the function call address (for jalr delay slots) + result += " u32 call_addr = 0;\n"; + + if (needs_cop1_bc) { + // the cop1 branch flag (separate from delay slot bc). + result += " bool cop1_bc = false;\n"; + } + + // add all lines for (auto& line : lines) { result += " "; result += line.code; @@ -130,14 +195,17 @@ struct Mips2C_Output { result += '\n'; } + // return! result += "end_of_function:\n return c->gprs[v0].du64[0];\n"; result += "}\n\n"; // link function: result += "void link() {\n"; + // lookup all symbols for (auto& sym : symbol_cache) { result += fmt::format(" cache.{} = intern_from_c(\"{}\").c();\n", goal_to_c_name(sym), sym); } + // this adds us to a table for lookup later, and also allocates our trampoline. result += fmt::format(" gLinkedFunctionTable.reg(\"{}\", execute);\n", goal_func_name.to_string()); result += "}\n\n"; @@ -145,6 +213,7 @@ struct Mips2C_Output { result += fmt::format("}} // namespace {}\n", name); result += "} // namespace Mips2C\n"; + // reminder to the user to add a callback to the link function in the linker. result += fmt::format("// add {}::link to the link callback table for the object file.\n", name); result += "// FWD DEC:\n"; @@ -152,24 +221,31 @@ struct Mips2C_Output { return result; } + /*! + * Adds name to the symbol cache, if it's not there already. + */ void require_symbol(const std::string& name) { symbol_cache.insert(name); } std::vector lines; std::set symbol_cache; + bool needs_cop1_bc = false; }; +/*! + * Basic block used for mips2c. + */ struct M2C_Block { - int idx = -1; - int succ_branch = -1; - int succ_ft = -1; - std::vector pred; + int idx = -1; // block idx + int succ_branch = -1; // block idx if we take the branch + int succ_ft = -1; // block idx if we don't take the branch (or there is none) + std::vector pred; // block idx of predecessors - int start_instr = -1; - int end_instr = -1; + int start_instr = -1; // first instruction idx + int end_instr = -1; // last instruction idx (not inclusive) - bool has_branch = false; - bool branch_likely = false; - bool branch_always = false; + bool has_branch = false; // ends in a branch instruction? + bool branch_likely = false; // that branch is likely branch? + bool branch_always = false; // that branch is always taken? bool has_pred(int pidx) const { for (auto p : pred) { @@ -181,6 +257,9 @@ struct M2C_Block { } }; +/*! + * Make second_idx be a fallthrough of first_idx. + */ void link_fall_through(int first_idx, int second_idx, std::vector& blocks) { auto& first = blocks.at(first_idx); auto& second = blocks.at(second_idx); @@ -198,6 +277,9 @@ void link_fall_through(int first_idx, int second_idx, std::vector& bl } } +/*! + * Make second_idx be the branch destination of first_idx. + */ void link_branch(int first_idx, int second_idx, std::vector& blocks) { auto& first = blocks.at(first_idx); auto& second = blocks.at(second_idx); @@ -210,6 +292,9 @@ void link_branch(int first_idx, int second_idx, std::vector& blocks) } } +/*! + * Make second_idx be the fall through of a likely branch (after the delay slot) + */ void link_fall_through_likely(int first_idx, int second_idx, std::vector& blocks) { auto& first = blocks.at(first_idx); auto& second = blocks.at(second_idx); @@ -236,7 +321,9 @@ void link_fall_through_likely(int first_idx, int second_idx, std::vector setup_preds_and_succs(const Function& func, const LinkedObjectFile& file) { +std::vector setup_preds_and_succs(const Function& func, + const LinkedObjectFile& file, + std::unordered_set& likely_delay_slot_blocks) { // create m2c blocks std::vector blocks; blocks.resize(func.basic_blocks.size()); @@ -249,7 +336,13 @@ std::vector setup_preds_and_succs(const Function& func, const LinkedO // set up succ / pred for (int i = 0; i < int(func.basic_blocks.size()); i++) { auto& b = func.basic_blocks[i]; - assert(!blocks.at(i).branch_always); + if (blocks.at(i).branch_always) { + // likely branch, already set up. + assert(likely_delay_slot_blocks.count(i)); + continue; + } else { + assert(!likely_delay_slot_blocks.count(i)); + } bool not_last = (i + 1) < int(func.basic_blocks.size()); if (b.end_word == b.start_word) { @@ -306,7 +399,8 @@ std::vector setup_preds_and_succs(const Function& func, const LinkedO delay_block.branch_likely = false; delay_block.branch_always = true; delay_block.has_branch = true; - // delay_block.kind = CfgVtx::DelaySlotKind::NO_DELAY; + auto inserted = likely_delay_slot_blocks.insert(i + 1).second; + assert(inserted); link_branch(i + 1, block_target, blocks); } else { @@ -320,11 +414,9 @@ std::vector setup_preds_and_succs(const Function& func, const LinkedO int idx = b.end_word - 2; assert(idx >= b.start_word); auto& branch_candidate = func.instructions.at(idx); - // auto& delay_slot_candidate = func.instructions.at(idx + 1); if (is_branch(branch_candidate, false)) { blocks.at(i).has_branch = true; blocks.at(i).branch_likely = false; - // blocks.at(i).kind = get_delay_slot(delay_slot_candidate); bool branch_always = is_always_branch(branch_candidate); // need to find block target @@ -337,10 +429,6 @@ std::vector setup_preds_and_succs(const Function& func, const LinkedO int offset = label.offset / 4 - func.start_word; assert(offset >= 0); - // the order here matters when there are zero size blocks. Unclear what the best answer - // is. - // i think in end it doesn't actually matter?? - // for (int j = 0; j < int(func.basic_blocks.size()); j++) { for (int j = int(func.basic_blocks.size()); j-- > 0;) { if (func.basic_blocks[j].start_word == offset) { block_target = j; @@ -373,6 +461,9 @@ std::vector setup_preds_and_succs(const Function& func, const LinkedO return blocks; } +/*! + * Does the given block require a label in front of it? + */ bool block_requires_label(const Function* f, const std::vector& blocks, size_t block_idx) { @@ -388,26 +479,46 @@ bool block_requires_label(const Function* f, if (block.pred.size() == 1 && block_idx > 0 && block.pred.front() == (int)block_idx - 1 && blocks.at(block_idx - 1).succ_ft == (int)block_idx) { - // the only way to get to this block is to fall through. + // the only way to get to this block is to fall through, no need for a label. return false; } return true; } +namespace { +// hack counter for total number of unknown instruction. TODO remove int g_unknown = 0; +} // namespace + +/*! + * Complain about an unknown instruction. + */ Mips2C_Line handle_unknown(const std::string& instr_str) { g_unknown++; + lg::warn("mips2c unknown: {}", instr_str); return fmt::format("// Unknown instr: {}", instr_str); } Mips2C_Line handle_generic_load(const Instruction& i0, const std::string& instr_str) { - if (i0.get_src(1).is_reg(rsp())) { - return handle_unknown(instr_str); - } else { - return {fmt::format("c->{}({}, {}, {});", i0.op_name_to_string(), reg_to_name(i0.get_dst(0)), - i0.get_src(0).get_imm(), reg_to_name(i0.get_src(1))), + return {fmt::format("c->{}({}, {}, {});", i0.op_name_to_string(), reg_to_name(i0.get_dst(0)), + i0.get_src(0).get_imm(), reg_to_name(i0.get_src(1))), + instr_str}; +} + +Mips2C_Line handle_lwc1(const Instruction& i0, + const std::string& instr_str, + const LinkedObjectFile* file) { + if (i0.get_src(0).is_label() && i0.get_src(1).is_reg(Register(Reg::GPR, Reg::FP))) { + auto& label = file->labels.at(i0.get_src(0).get_label()); + auto& word = file->words_by_seg.at(label.target_segment).at(label.offset / 4); + assert(word.kind == LinkedWord::PLAIN_DATA); + float f; + memcpy(&f, &word.data, 4); + return {fmt::format("c->fprs[{}] = {};", reg_to_name(i0.get_dst(0)), float_to_string(f)), instr_str}; + } else { + return handle_generic_load(i0, instr_str); } } @@ -428,13 +539,9 @@ Mips2C_Line handle_lw(Mips2C_Output& out, const Instruction& i0, const std::stri Mips2C_Line handle_generic_store(Mips2C_Output& /*out*/, const Instruction& i0, const std::string& instr_str) { - if (i0.get_src(2).is_reg(Register(Reg::GPR, Reg::SP))) { - return handle_unknown(instr_str); - } else { - return {fmt::format("c->{}({}, {}, {});", i0.op_name_to_string(), reg_to_name(i0.get_src(0)), - i0.get_src(1).get_imm(), reg_to_name(i0.get_src(2))), - instr_str}; - } + return {fmt::format("c->{}({}, {}, {});", i0.op_name_to_string(), reg_to_name(i0.get_src(0)), + i0.get_src(1).get_imm(), reg_to_name(i0.get_src(2))), + instr_str}; } Mips2C_Line handle_generic_op2_u16(const Instruction& i0, const std::string& instr_str) { @@ -528,10 +635,12 @@ Mips2C_Line handle_generic_op2(const Instruction& i0, Mips2C_Line handle_or(const Instruction& i0, const std::string& instr_str) { if (is_gpr_3(i0, InstructionKind::OR, {}, rs7(), rr0())) { // set reg_dest to #f : or reg_dest, s7, r0 - return handle_unknown(instr_str); + return { + fmt::format("c->mov64({}, {});", reg_to_name(i0.get_dst(0)), reg_to_name(i0.get_src(0))), + instr_str}; } else if (is_gpr_3(i0, InstructionKind::OR, {}, rr0(), rr0())) { // set reg_dest to 0 : or reg_dest, r0, r0 - return handle_unknown(instr_str); + return {fmt::format("c->gprs[{}].du64[0] = 0;", reg_to_name(i0.get_dst(0))), instr_str}; } else if (is_gpr_3(i0, InstructionKind::OR, {}, {}, rr0())) { // set dst to src : or dst, src, r0 return { @@ -589,6 +698,25 @@ Mips2C_Line handle_non_likely_branch_bc(const Instruction& i0, const std::string return {fmt::format("bc = ((s64){}) < 0;", reg64_or_zero(i0.get_src(0))), instr_str}; case InstructionKind::BGTZ: return {fmt::format("bc = ((s64){}) > 0;", reg64_or_zero(i0.get_src(0))), instr_str}; + case InstructionKind::BGEZ: + return {fmt::format("bc = ((s64){}) >= 0;", reg64_or_zero(i0.get_src(0))), instr_str}; + case InstructionKind::BLEZ: + return {fmt::format("bc = ((s64){}) <= 0;", reg64_or_zero(i0.get_src(0))), instr_str}; + case InstructionKind::BC1F: + return {fmt::format("bc = !cop1_bc;"), instr_str}; + default: + return handle_unknown(instr_str); + } +} + +Mips2C_Line handle_likely_branch_bc(const Instruction& i0, const std::string& instr_str) { + switch (i0.kind) { + case InstructionKind::BLTZL: + return {fmt::format("((s64){}) < 0", reg64_or_zero(i0.get_src(0))), instr_str}; + case InstructionKind::BNEL: + return {fmt::format("((s64){}) != ((s64){})", reg64_or_zero(i0.get_src(0)), + reg64_or_zero(i0.get_src(1))), + instr_str}; default: return handle_unknown(instr_str); } @@ -601,6 +729,29 @@ Mips2C_Line handle_vdiv(const Instruction& i0, const std::string& instr_string) instr_string}; } +Mips2C_Line handle_vsqrt(const Instruction& i0, const std::string& instr_string) { + return {fmt::format("c->vsqrt({}, BC::{});", reg_to_name(i0.get_src(0)), + "xyzw"[i0.get_src(1).get_vf_field()]), + instr_string}; +} + +Mips2C_Line handle_vrxor(const Instruction& i0, const std::string& instr_string) { + return {fmt::format("c->vrxor({}, BC::{});", reg_to_name(i0.get_src(0)), i0.cop2_bc_to_char()), + instr_string}; +} + +Mips2C_Line handle_vrget(const Instruction& i0, const std::string& instr_string) { + return {fmt::format("c->vrget(DEST::{}, {});", dest_to_char(i0.cop2_dest), + reg_to_name(i0.get_dst(0))), + instr_string}; +} + +Mips2C_Line handle_vrnext(const Instruction& i0, const std::string& instr_string) { + return {fmt::format("c->vrnext(DEST::{}, {});", dest_to_char(i0.cop2_dest), + reg_to_name(i0.get_dst(0))), + instr_string}; +} + Mips2C_Line handle_por(const Instruction& i0, const std::string& instr_string) { if (is_gpr_3(i0, InstructionKind::POR, {}, {}, rr0())) { return {fmt::format("c->mov128_gpr_gpr({}, {});", reg_to_name(i0.get_dst(0)), @@ -611,10 +762,22 @@ Mips2C_Line handle_por(const Instruction& i0, const std::string& instr_string) { } } +Mips2C_Line handle_lui(const Instruction& i0, const std::string& instr_string) { + return {fmt::format("c->lui({}, {});", reg_to_name(i0.get_dst(0)), i0.get_src(0).get_imm()), + instr_string}; +} + +Mips2C_Line handle_clts(const Instruction& i0, const std::string& instr_string) { + return {fmt::format("cop1_bc = c->fprs[{}] < c->fprs[{}];", reg_to_name(i0.get_src(0)), + reg_to_name(i0.get_src(1))), + instr_string}; +} + Mips2C_Line handle_normal_instr(Mips2C_Output& output, const Instruction& i0, const std::string& instr_str, - int& unknown_count) { + int& unknown_count, + const LinkedObjectFile* file) { switch (i0.kind) { case InstructionKind::LW: return handle_lw(output, i0, instr_str); @@ -622,12 +785,24 @@ Mips2C_Line handle_normal_instr(Mips2C_Output& output, case InstructionKind::LWU: case InstructionKind::LQ: case InstructionKind::LQC2: + case InstructionKind::LH: + case InstructionKind::LHU: + case InstructionKind::LD: return handle_generic_load(i0, instr_str); + case InstructionKind::LWC1: + return handle_lwc1(i0, instr_str, file); case InstructionKind::SQ: case InstructionKind::SQC2: + case InstructionKind::SH: + case InstructionKind::SD: + case InstructionKind::SWC1: return handle_generic_store(output, i0, instr_str); case InstructionKind::VADD_BC: return handle_generic_op3_bc_mask(i0, instr_str, "vadd_bc"); + case InstructionKind::VMINI_BC: + return handle_generic_op3_bc_mask(i0, instr_str, "vmini_bc"); + case InstructionKind::VMAX_BC: + return handle_generic_op3_bc_mask(i0, instr_str, "vmax_bc"); case InstructionKind::VSUB_BC: return handle_generic_op3_bc_mask(i0, instr_str, "vsub_bc"); case InstructionKind::VMUL_BC: @@ -646,21 +821,43 @@ Mips2C_Line handle_normal_instr(Mips2C_Output& output, return handle_generic_op2_mask(i0, instr_str, "vmove"); case InstructionKind::VITOF0: return handle_generic_op2_mask(i0, instr_str, "vitof0"); + case InstructionKind::VFTOI0: + return handle_generic_op2_mask(i0, instr_str, "vftoi0"); case InstructionKind::VFTOI4: return handle_generic_op2_mask(i0, instr_str, "vftoi4"); + case InstructionKind::VADDQ: + return handle_generic_op2_mask(i0, instr_str, "vaddq"); case InstructionKind::ANDI: case InstructionKind::ORI: case InstructionKind::SRA: + case InstructionKind::DSLL: + case InstructionKind::DSLL32: + case InstructionKind::DSRA: + case InstructionKind::DSRA32: return handle_generic_op2_u16(i0, instr_str); case InstructionKind::SLL: return handle_sll(i0, instr_str); case InstructionKind::DADDU: + case InstructionKind::DSUBU: case InstructionKind::ADDU: case InstructionKind::PEXTLH: case InstructionKind::PEXTLB: case InstructionKind::MOVN: + case InstructionKind::PEXTUW: + case InstructionKind::PCPYUD: case InstructionKind::MOVZ: + case InstructionKind::MULT3: + case InstructionKind::PMINW: + case InstructionKind::PMAXW: return handle_generic_op3(i0, instr_str, {}); + case InstructionKind::MULS: + return handle_generic_op3(i0, instr_str, "muls"); + case InstructionKind::ADDS: + return handle_generic_op3(i0, instr_str, "adds"); + case InstructionKind::SUBS: + return handle_generic_op3(i0, instr_str, "subs"); + case InstructionKind::XOR: + return handle_generic_op3(i0, instr_str, "xor_"); case InstructionKind::AND: return handle_generic_op3(i0, instr_str, "and_"); // and isn't allowed in C++ case InstructionKind::DADDIU: @@ -678,6 +875,14 @@ Mips2C_Line handle_normal_instr(Mips2C_Output& output, return handle_generic_op3_bc_mask(i0, instr_str, "vmadd_bc"); case InstructionKind::VDIV: return handle_vdiv(i0, instr_str); + case InstructionKind::VSQRT: + return handle_vsqrt(i0, instr_str); + case InstructionKind::VRXOR: + return handle_vrxor(i0, instr_str); + case InstructionKind::VRGET: + return handle_vrget(i0, instr_str); + case InstructionKind::VRNEXT: + return handle_vrnext(i0, instr_str); case InstructionKind::POR: return handle_por(i0, instr_str); case InstructionKind::VMULQ: @@ -686,6 +891,21 @@ Mips2C_Line handle_normal_instr(Mips2C_Output& output, return {"// nop", instr_str}; case InstructionKind::MFC1: return handle_generic_op2(i0, instr_str, "mfc1"); + case InstructionKind::MTC1: + return handle_generic_op2(i0, instr_str, "mtc1"); + case InstructionKind::CVTWS: + return handle_generic_op2(i0, instr_str, "cvtws"); + case InstructionKind::CVTSW: + return handle_generic_op2(i0, instr_str, "cvtsw"); + case InstructionKind::PEXEW: + return handle_generic_op2(i0, instr_str, "pexew"); + case InstructionKind::SQRTS: + return handle_generic_op2(i0, instr_str, "sqrts"); + case InstructionKind::LUI: + return handle_lui(i0, instr_str); + case InstructionKind::CLTS: + output.needs_cop1_bc = true; + return handle_clts(i0, instr_str); default: unknown_count++; return handle_unknown(instr_str); @@ -697,17 +917,20 @@ Mips2C_Line handle_normal_instr(Mips2C_Output& output, void run_mips2c(Function* f) { g_unknown = 0; auto* file = f->ir2.env.file; - auto blocks = setup_preds_and_succs(*f, *file); + std::unordered_set likely_delay_blocks; + auto blocks = setup_preds_and_succs(*f, *file, likely_delay_blocks); Mips2C_Output output; int unknown_count = 0; for (size_t block_idx = 0; block_idx < blocks.size(); block_idx++) { const auto& block = blocks[block_idx]; - // fmt::print("block {}: {} to {}\n", block_idx, block.start_instr, block.end_instr); + + if (likely_delay_blocks.count(block_idx)) { + continue; + } + if (block_requires_label(f, blocks, block_idx)) { output.output_label(block_idx); - } else { - // output.comment_line("block {}",) } for (int i = block.start_instr; i < block.end_instr; i++) { @@ -717,7 +940,22 @@ void run_mips2c(Function* f) { if (is_branch(instr, {})) { if (block.branch_likely) { - output.lines.push_back(handle_unknown(instr_str)); + auto branch_line = handle_likely_branch_bc(instr, instr_str); + output.lines.emplace_back(fmt::format("if ({}) {{", branch_line.code), + branch_line.comment); + // next block should be the delay slot + assert((int)block_idx + 1 == block.succ_branch); + auto& delay_block = blocks.at(block.succ_branch); + assert(delay_block.end_instr - delay_block.start_instr == 1); // only 1 instr. + auto& delay_instr = f->instructions.at(delay_block.start_instr); + auto delay_instr_str = delay_instr.to_string(file->labels); + auto delay_instr_line = + handle_normal_instr(output, delay_instr, delay_instr_str, unknown_count, file); + output.lines.emplace_back(fmt::format(" {}", delay_instr_line.code), + delay_instr_line.comment); + assert(delay_block.succ_ft == -1); + output.lines.emplace_back(fmt::format(" goto block_{};", delay_block.succ_branch), ""); + output.lines.emplace_back("}", ""); } else { if (is_always_branch(instr)) { // skip the branch ins. @@ -728,7 +966,7 @@ void run_mips2c(Function* f) { auto& delay_i = f->instructions.at(i); auto delay_i_str = delay_i.to_string(file->labels); output.lines.push_back( - handle_normal_instr(output, delay_i, delay_i_str, unknown_count)); + handle_normal_instr(output, delay_i, delay_i_str, unknown_count, file)); assert(i + 1 == block.end_instr); // then the goto output.lines.emplace_back(fmt::format("goto block_{};", block.succ_branch), @@ -742,7 +980,7 @@ void run_mips2c(Function* f) { auto& delay_i = f->instructions.at(i); auto delay_i_str = delay_i.to_string(file->labels); output.lines.push_back( - handle_normal_instr(output, delay_i, delay_i_str, unknown_count)); + handle_normal_instr(output, delay_i, delay_i_str, unknown_count, file)); assert(i + 1 == block.end_instr); // then the goto output.lines.emplace_back(fmt::format("if (bc) {{goto block_{};}}", block.succ_branch), @@ -757,15 +995,27 @@ void run_mips2c(Function* f) { i++; auto& delay_i = f->instructions.at(i); auto delay_i_str = delay_i.to_string(file->labels); - output.lines.push_back(handle_normal_instr(output, delay_i, delay_i_str, unknown_count)); - assert(i + 1 == block.end_instr); + output.lines.push_back( + handle_normal_instr(output, delay_i, delay_i_str, unknown_count, file)); + // then the goto output.lines.emplace_back(fmt::format("goto end_of_function;", block.succ_branch), "return\n"); + } else if (instr.kind == InstructionKind::JALR) { + assert(instr.get_dst(0).is_reg(Register(Reg::GPR, Reg::RA))); + assert(i < block.end_instr - 1); + output.lines.emplace_back( + fmt::format("call_addr = c->gprs[{}].du32[0];", reg_to_name(instr.get_src(0))), + "function call:"); + i++; + auto& delay_i = f->instructions.at(i); + auto delay_i_str = delay_i.to_string(file->labels); + output.lines.push_back( + handle_normal_instr(output, delay_i, delay_i_str, unknown_count, file)); + output.lines.emplace_back("c->jalr(call_addr);", instr_str); } else { - output.lines.push_back(handle_normal_instr(output, instr, instr_str, unknown_count)); + output.lines.push_back(handle_normal_instr(output, instr, instr_str, unknown_count, file)); } - // fmt::print("I: {}\n", instr_str); assert(output.lines.size() > old_line_count); } diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index fa838630d7..04f4bbcac4 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -213,6 +213,7 @@ (stmod 5) ;; set mode register (mskpath3 6) ;; set path 3 mask (mark 7) ;; set mark register + (pc-port 8) ;; special tag for PC Port data. (flushe 16) ;; wait for end of microprogram (flush 17) ;; wait for end of microprogram and transfer (path1/path2) (flusha 19) ;; wait for end of microprogram and transfer (path1/path2/path3) @@ -547,7 +548,7 @@ ;; merc1 61 ;; generic1 62 (depth-cue 64) - (bucket-65 65) + (pre-sprite-textures 65) ;; common (sprite 66) ;; debug spheres? 67 (debug-draw0 67) @@ -1019,7 +1020,7 @@ (ogre-end #x600) (ogre-buzzer #x601) (ogre-boss #x603) - + (assistant-voicebox-intro-ogre-race #x605) (sidekick-speech-hint-ogre-race #x61c) @@ -5091,7 +5092,7 @@ (debug-print-entities (_type_ symbol type) none 13) (debug-draw-actors (_type_ symbol) none 14) (dummy-15 (_type_) object 15) - (dummy-16 (_type_) int 16) + (level-update (_type_) int 16) (level-get-target-inside (_type_) level 17) (alloc-levels! (_type_ symbol) int 18) (load-commands-set! (_type_ pair) pair 19) @@ -10106,6 +10107,7 @@ :method-count-assert 10 :size-assert #x68 :flag-assert #xa00000068 + ;; field handle is likely a value type (:methods (dummy-9 (_type_ attack-info) none 9) ) @@ -11874,8 +11876,8 @@ (texture-remap-table (pointer uint64) :offset-assert 52) (texture-remap-table-len int32 :offset-assert 56) - (unk-data-1 pointer :offset-assert 60) - (unk-data-1-len int32 :offset-assert 64) + (texture-ids (pointer texture-id) :offset-assert 60) + (texture-page-count int32 :offset-assert 64) (unk-zero-0 basic :offset-assert 68) @@ -13443,11 +13445,99 @@ ;; Containing DGOs - ['GAME', 'ENGINE'] ;; Version - 3 +(defenum sp-field-id + :type uint16 + + (misc-fields-start 0) + (spt-texture 1) + (spt-anim 2) + (spt-anim-speed 3) + (spt-birth-func 4) + (spt-joint/refpoint 5) + (spt-num 6) + (spt-sound 7) + (misc-fields-end 8) + + (sprite-fields-start 9) + (spt-x 10) + (spt-y 11) + (spt-z 12) + (spt-scale-x 13) + (spt-rot-x 14) + (spt-rot-y 15) + (spt-rot-z 16) + (spt-scale-y 17) + (spt-r 18) + (spt-g 19) + (spt-b 20) + (spt-a 21) + (sprite-fields-end 22) + + (cpu-fields-start 23) + (spt-omega 24) + (spt-vel-x 25) + (spt-vel-y 26) + (spt-vel-z 27) + (spt-scalevel-x 28) + (spt-rotvel-x 29) + (spt-rotvel-y 30) + (spt-rotvel-z 31) + (spt-scalevel-y 32) + (spt-fade-r 33) + (spt-fade-g 34) + (spt-fade-b 35) + (spt-fade-a 36) + (spt-accel-x 37) + (spt-accel-y 38) + (spt-accel-z 39) + (spt-dummy 40) + (spt-quat-x 41) + (spt-quat-y 42) + (spt-quat-z 43) + (spt-quad-w 44) + (spt-friction 45) + (spt-timer 46) + (spt-flags 47) + (spt-userdata 48) + (spt-func 49) + (spt-next-time 50) + (spt-next-launcher 51) + (cpu-fields-end 52) + + (launch-fields-start 53) + (spt-launchrot-x 54) + (spt-launchrot-y 55) + (spt-launchrot-z 56) + (spt-launchrot-w 57) + (spt-conerot-x 58) + (spt-conerot-y 59) + (spt-conerot-z 60) + (spt-conerot-w 61) + (spt-conerot-radius 62) + (spt-rotate-y 63) + (launch-fields-end 64) + + (spt-scale 65) + (spt-scalevel 66) + (spt-end 67) + ) + +(defenum sp-flag + :type uint16 + (plain-v1 0) ;; just a plain signed integer. No random crap. + (float-with-rand 1) + (int-with-rand 2) + (copy-from-other-field 3) + (plain-v2 4) + (from-pointer 5) + (part-by-id 6) + ) + ;; - Types (deftype sp-field-init-spec (structure) - ((field uint16 :offset-assert 0) - (flags uint16 :offset-assert 2) + ((field sp-field-id :offset-assert 0) + (flags sp-flag :offset-assert 2) (initial-valuef float :offset-assert 4) (random-rangef float :offset-assert 8) (random-multf float :offset-assert 12) @@ -13476,11 +13566,20 @@ :flag-assert #x900000010 ) +(defenum sp-group-item-flag + :bitfield #t + :type uint16 + (is-3d 0) + (bit1 1) + (start-dead 2) + (launch-asap 3) + ) + (deftype sparticle-group-item (structure) ((launcher uint32 :offset-assert 0) (fade-after meters :offset-assert 4) (falloff-to meters :offset-assert 8) - (flags uint16 :offset-assert 12) + (flags sp-group-item-flag :offset-assert 12) (period uint16 :offset-assert 14) (length uint16 :offset-assert 16) (offset uint16 :offset-assert 18) @@ -13492,13 +13591,23 @@ :flag-assert #x90000001c ) +(defenum sp-launch-state-flags + :bitfield #t + :type uint16 + (launcher-active 0) ;; active + (particles-active 1) ;; wants to launch + (bit2 2) + ) + +(declare-type sparticle-cpuinfo structure) + (deftype sparticle-launch-state (structure) ((group-item sparticle-group-item :offset-assert 0) - (flags uint16 :offset-assert 4) + (flags sp-launch-state-flags :offset-assert 4) (randomize uint16 :offset-assert 6) (origin vector :offset-assert 8) (sprite3d sprite-vec-data-3d :offset-assert 12) - (sprite basic :offset-assert 16) + (sprite sparticle-cpuinfo :offset-assert 16) (offset uint32 :offset-assert 20) (accum float :offset-assert 24) (spawn-time uint32 :offset-assert 28) @@ -13513,12 +13622,20 @@ :flag-assert #x900000020 ) +(defenum sp-group-flag + :bitfield #t + :type uint16 + (use-local-clock 0) + (always-draw 1) + (screen-space 2) + ) + (deftype sparticle-launch-group (basic) ((length int16 :offset-assert 4) (duration uint16 :offset-assert 6) (linger-duration uint16 :offset-assert 8) - (flags uint16 :offset-assert 10) - (name basic :offset-assert 12) + (flags sp-group-flag :offset-assert 10) + (name string :offset-assert 12) (launcher (inline-array sparticle-group-item) :offset-assert 16) (bounds sphere :inline :offset-assert 32) ) @@ -13546,10 +13663,10 @@ :flag-assert #xe00000040 (:methods (initialize (_type_ sparticle-launch-group process) none 9) - (dummy-10 () none 10) - (dummy-11 (_type_ vector) none 11) - (deactivate (_type_) none 12) - (dummy-13 () none 13) + (is-visible? (_type_ vector) symbol 10) + (spawn (_type_ vector) object 11) + (kill-and-free-particles (_type_) none 12) + (kill-particles (_type_) none 13) ) ) @@ -13564,6 +13681,28 @@ ;; - Types +(defenum sp-cpuinfo-flag + :bitfield #t + :type uint32 + (bit0 0) + (bit2 2) ;; cleared after an aux has its func set to add-to-sprite-aux-lst + (bit3 3) + (ready-to-launch 6) ;; maybe just just death? + (bit7 7) + (aux-list 8) ;; prevents relaunch, adds to aux + (bit9 9) + (level0 10) + (level1 11) + (bit12 12) ;; required to relaunch + (bit13 13) + (bit14 14) + (use-global-acc 16) + (launch-along-z 17) + (left-multiply-quat 18) + (right-multiply-quat 19) + (set-conerot 20) + ) + (deftype sparticle-cpuinfo (structure) ((sprite sprite-vec-data-2d :offset-assert 0) (adgif adgif-shader :offset-assert 4) @@ -13580,7 +13719,7 @@ (scalevely float :offset 44) (friction float :offset-assert 96) (timer int32 :offset-assert 100) - (flags uint32 :offset-assert 104) + (flags sp-cpuinfo-flag :offset-assert 104) (user-int32 int32 :offset-assert 108) (user-uint32 uint32 :offset 108) (user-float float :score 100 :offset 108) @@ -13617,8 +13756,8 @@ (deftype sparticle-system (basic) ((blocks int32 2 :offset-assert 4) - (length uint32 2 :offset-assert 12) - (num-alloc uint32 2 :offset-assert 20) + (length int32 2 :offset-assert 12) + (num-alloc int32 2 :offset-assert 20) (is-3d basic :offset-assert 28) (flags uint32 :offset-assert 32) (alloc-table (pointer uint64) :offset-assert 36) @@ -15312,7 +15451,7 @@ (define-extern sprite-add-2d-chunk (function sprite-array-2d int int dma-buffer int none)) (define-extern sprite-setup-frame-data (function sprite-frame-data int none)) (define-extern clear-sprite-aux-list (function none)) -(define-extern add-to-sprite-aux-list function) ;; it's a callback. +(define-extern add-to-sprite-aux-list (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none)) ;; it's a callback. (define-extern sprite-set-3d-quaternion! (function sprite-vec-data-3d quaternion quaternion)) (define-extern sprite-get-3d-quaternion! (function quaternion sprite-vec-data-3d quaternion)) (define-extern sprite-draw (function display none)) @@ -16384,25 +16523,25 @@ ;; - Types -; (deftype sparticle-birthinfo (structure) -; ((sprite uint32 :offset-assert 0) -; (anim int32 :offset-assert 4) -; (anim-speed float :offset-assert 8) -; (birth-func basic :offset-assert 12) -; (joint-ppoint int32 :offset-assert 16) -; (num-to-birth float :offset-assert 20) -; (sound basic :offset-assert 24) -; (dataf UNKNOWN 1 :offset-assert 0) -; (data UNKNOWN 1 :offset-assert 0) -; ) -; :method-count-assert 9 -; :size-assert #x1c -; :flag-assert #x90000001c -; ) +(deftype sparticle-birthinfo (structure) + ((sprite uint32 :offset-assert 0) + (anim int32 :offset-assert 4) + (anim-speed float :offset-assert 8) + (birth-func basic :offset-assert 12) + (joint-ppoint int32 :offset-assert 16) + (num-to-birth float :offset-assert 20) + (sound basic :offset-assert 24) + (dataf float 1 :offset 0) + (data uint32 1 :offset 0) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) (deftype sp-queued-launch-particles (structure) - ((sp-system basic :offset-assert 0) - (sp-launcher basic :offset-assert 4) + ((sp-system sparticle-system :offset-assert 0) + (sp-launcher sparticle-launcher :offset-assert 4) (pos vector :inline :offset-assert 16) ) :method-count-assert 9 @@ -16410,66 +16549,70 @@ :flag-assert #x900000020 ) -; (deftype sp-launch-queue (basic) -; ((in-use int32 :offset-assert 4) -; (queue UNKNOWN 32 :offset-assert 16) -; ) -; :method-count-assert 9 -; :size-assert #x410 -; :flag-assert #x900000410 -; ) +(deftype sp-launch-queue (basic) + ((in-use int32 :offset-assert 4) + (queue sp-queued-launch-particles 32 :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x410 + :flag-assert #x900000410 + ) -; (deftype particle-adgif-cache (basic) -; ((used int32 :offset-assert 4) -; (last uint16 :offset-assert 8) -; (lastgif adgif-shader :offset-assert 12) -; (tidhash UNKNOWN 80 :offset-assert 16) -; (spadgif UNKNOWN 80 :offset-assert 176) -; ) -; :method-count-assert 9 -; :size-assert #x19b0 -; :flag-assert #x9000019b0 -; ) +(deftype particle-adgif-cache (basic) + ((used int32 :offset-assert 4) + (last uint16 :offset-assert 8) + (lastgif adgif-shader :offset-assert 12) + (tidhash uint16 80 :offset-assert 16) + (spadgif adgif-shader 80 :inline :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #x19b0 + :flag-assert #x9000019b0 + ) ;; - Functions -(define-extern sphere-in-view-frustum? (function vector symbol)) +(define-extern sphere-in-view-frustum? (function sphere symbol)) (define-extern kill-all-particles-with-key (function sparticle-launch-control none)) -(define-extern sp-relaunch-setup-fields function) -(define-extern sp-init-fields! function) -(define-extern sp-launch-particles-var (function sparticle-system sparticle-launcher vector symbol symbol float none)) ;; asm - ret not confirmed -(define-extern sp-get-particle function) -(define-extern particle-adgif function) + +(define-extern sp-relaunch-setup-fields (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none)) + +;; data, field-inits, start field idx, end field idx, bool? +(define-extern sp-init-fields! (function object (inline-array sp-field-init-spec) sp-field-id sp-field-id symbol object)) + +(define-extern sp-launch-particles-var (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none)) ;; asm - ret not confirmed +(define-extern sp-get-particle (function sparticle-system int sparticle-launch-state sparticle-cpuinfo)) +(define-extern particle-adgif (function adgif-shader texture-id none)) (define-extern lookup-part-group-by-name (function string basic)) -(define-extern lookup-part-group-pointer-by-name function) +(define-extern lookup-part-group-pointer-by-name (function string (pointer sparticle-launch-group))) (define-extern unlink-part-group-by-heap (function kheap int)) -(define-extern particle-setup-adgif function) -(define-extern sp-queue-launch function) -(define-extern sp-adjust-launch function) -(define-extern sp-euler-convert function) -(define-extern sp-rotate-system function) -(define-extern sp-launch-particles-death function) -(define-extern sp-clear-queue function) -(define-extern sp-relaunch-particle-2d function) -(define-extern sp-relaunch-particle-3d function) -(define-extern sparticle-track-root function) -(define-extern sparticle-track-root-prim function) -(define-extern birth-func-copy-rot-color function) -(define-extern birth-func-copy2-rot-color function) -(define-extern birth-func-copy-omega-to-z function) -(define-extern birth-func-random-next-time function) +(define-extern particle-setup-adgif (function adgif-shader texture-id none)) +(define-extern sp-queue-launch (function sparticle-system sparticle-launcher vector int)) +(define-extern sp-adjust-launch (function sparticle-launchinfo sparticle-cpuinfo (inline-array sp-field-init-spec) none)) +(define-extern sp-euler-convert (function sparticle-launchinfo sparticle-cpuinfo none)) +(define-extern sp-rotate-system (function sparticle-launchinfo sparticle-cpuinfo transformq none)) +(define-extern sp-launch-particles-death (function sparticle-system sparticle-launcher sparticle-launchinfo none)) +(define-extern sp-clear-queue (function none)) +(define-extern sp-relaunch-particle-2d (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none)) +(define-extern sp-relaunch-particle-3d (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none)) +(define-extern sparticle-track-root (function object sparticle-cpuinfo vector none)) +(define-extern sparticle-track-root-prim (function object sparticle-cpuinfo vector none)) +(define-extern birth-func-copy-rot-color (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)) +(define-extern birth-func-copy2-rot-color (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)) +(define-extern birth-func-copy-omega-to-z (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)) +(define-extern birth-func-random-next-time (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)) ;; - Unknowns -;;(define-extern *global-toggle* object) ;; unknown type +(define-extern *global-toggle* int) ;; unknown type (define-extern *part-id-table* (array sparticle-launcher)) (define-extern *particle-300hz-timer* int) -;;(define-extern *sp-launch-queue* object) ;; unknown type -;;(define-extern *death-adgif* object) ;; unknown type +(define-extern *sp-launch-queue* sp-launch-queue) +(define-extern *death-adgif* adgif-shader) ;; guess (define-extern *part-group-id-table* (array sparticle-launch-group)) -;;(define-extern *sp-launcher-lock* object) ;; unknown type +(define-extern *sp-launcher-lock* symbol) (define-extern *sp-launcher-enable* symbol) -;;(define-extern *particle-adgif-cache* object) ;; unknown type +(define-extern *particle-adgif-cache* particle-adgif-cache) ;; ---------------------- @@ -16480,31 +16623,31 @@ ;; - Functions -(define-extern all-particles-60-to-50 function) -(define-extern all-particles-50-to-60 function) -(define-extern sp-process-particle-system function) -(define-extern forall-particles-runner function) -(define-extern sparticle-60-to-50 function) -(define-extern sparticle-50-to-60 function) -(define-extern forall-particles function) +(define-extern all-particles-60-to-50 (function none)) +(define-extern all-particles-50-to-60 (function none)) +(define-extern sp-process-particle-system (function sparticle-system int sprite-array-2d none)) +(define-extern forall-particles-runner (function (function sparticle-system sparticle-cpuinfo pointer none) sparticle-system none)) +(define-extern sparticle-60-to-50 (function sparticle-system sparticle-cpuinfo pointer none)) +(define-extern sparticle-50-to-60 (function sparticle-system sparticle-cpuinfo pointer none)) +(define-extern forall-particles (function function symbol symbol none)) (define-extern sparticle-kill-it-level0 (function sparticle-system sparticle-cpuinfo none)) (define-extern sparticle-kill-it-level1 (function sparticle-system sparticle-cpuinfo none)) (define-extern forall-particles-with-key (function sparticle-launch-control (function sparticle-system sparticle-cpuinfo none) symbol symbol none)) (define-extern sparticle-kill-it (function sparticle-system sparticle-cpuinfo none)) (define-extern forall-particles-with-key-runner (function sparticle-launch-control (function sparticle-system sparticle-cpuinfo none) sparticle-system none)) -(define-extern sp-get-approx-alloc-size function) -(define-extern sp-process-block function) -(define-extern sp-copy-to-spr function) -(define-extern sp-process-block-3d function) -(define-extern sp-process-block-2d function) -(define-extern sp-copy-from-spr function) -(define-extern sp-free-particle function) -(define-extern sp-particle-copy! function) -(define-extern sp-get-block-size function) +(define-extern sp-get-approx-alloc-size (function sparticle-system int int)) +(define-extern sp-process-block (function sparticle-system int sprite-array-2d int none)) +(define-extern sp-copy-to-spr (function int pointer int none)) +(define-extern sp-process-block-3d (function sparticle-system int int int int symbol none)) +(define-extern sp-process-block-2d (function sparticle-system int int int int symbol none)) +(define-extern sp-copy-from-spr (function int pointer int none)) +(define-extern sp-free-particle (function sparticle-system int sparticle-cpuinfo sprite-vec-data-2d none)) +(define-extern sp-particle-copy! (function sparticle-cpuinfo sparticle-cpuinfo none)) +(define-extern sp-get-block-size (function sparticle-system int int)) (define-extern sp-kill-particle (function sparticle-system sparticle-cpuinfo none)) -(define-extern sp-orbiter function) +(define-extern sp-orbiter (function sparticle-system sparticle-cpuinfo vector none)) (define-extern memcpy function) -(define-extern kill-all-particles-in-level (function int)) +(define-extern kill-all-particles-in-level (function level int)) (define-extern set-particle-frame-time (function int none)) (define-extern process-particles (function none)) diff --git a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc index 46de186ff4..4ef50e3f07 100644 --- a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc @@ -114,7 +114,6 @@ "cspace<-parented-transformq-joint!", // sprite - "add-to-sprite-aux-list", // fine, but don't know types yet. // merc-blend-shape "setup-blerc-chains-for-one-fragment", // F: asm branching @@ -211,16 +210,12 @@ "draw-inline-array-instance-tie", // sparticle-launcher - "(method 11 sparticle-launch-control)", // BUG: cfg ir - "sp-launch-particles-var", - "particle-adgif", "sp-init-fields!", // sparticle "memcpy", "sp-process-block-3d", "sp-process-block-2d", - "sp-get-particle", // mood BUG "update-mood-lava", // BUG: @@ -503,7 +498,10 @@ "unpack-comp-huf":[2, 4, 5, 6, 7, 8, 9], "blerc-execute":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "(method 11 fact-info-target)":[42], - "(code format-card auto-save)":[3, 4, 5, 6, 7, 8] + "(code format-card auto-save)":[3, 4, 5, 6, 7, 8], + "particle-adgif":[0, 1, 2, 3, 4, 5, 7], + "sp-launch-particles-var":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], + "(method 11 sparticle-launch-control)": [ 27, 28, 35, 46, 48, 49, 77] }, // Sometimes the game might use format strings that are fetched dynamically, @@ -542,7 +540,11 @@ }, "mips2c_functions_by_name":[ - "draw-string" + "sp-init-fields!", + "particle-adgif", + "sp-launch-particles-var", + "sp-process-block-2d", + "sp-process-block-3d" ] } diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index 48df6c008a..61a93bf762 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -611,6 +611,9 @@ "hint-control": [ ["L45", "(array task-hint-control-group)"] ], + "sparticle-launcher": [ + ["L192", "adgif-shader"] + ], // please do not add things after this entry! git is dumb. "object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": [] diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index 03fc731a29..035f002f2d 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -1892,5 +1892,60 @@ "ambient-type-sound": [[32, "sound-spec"]], "ambient-type-sound-loop": [[16, "sound-spec"]], + "sp-relaunch-particle-3d": [ + [16, "quaternion"], + [32, "vector"], + [48, "quaternion"] + ], + + "sp-adjust-launch": [ + [16, "sparticle-launchinfo"], + [64, "matrix"], + [128, "vector"], + [144, "matrix"] + ], + + "(method 10 sparticle-launch-control)":[ + [16, "vector"] + ], + + "sparticle-50-to-60":[ + [16, "quaternion"] + ], + + + "sparticle-60-to-50":[ + [16, "quaternion"] + ], + + "sp-orbiter":[ + [16, "vector"], + [32, "vector"], + [48, "matrix"] + ], + + "sp-euler-convert":[ + [16, "vector"], + [32, "quaternion"] + ], + + "sp-rotate-system": [ + [16, "matrix"], + [80, "quaternion"] + ], + + "sp-launch-particles-death": [ + [16, "sprite-vec-data-2d"] // TODO this is probably wrong. + ], + + "birth-func-copy-rot-color": [ + [16, "vector"] + ], + + "birth-func-copy2-rot-color": [ + [16, "vector"], + [32, "vector"] + ], + "placeholder-do-not-add-below!": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 0c1103744d..d80fef0b79 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -3178,6 +3178,34 @@ ["_stack_", 112, "res-tag"], [57, "v0", "symbol"] ], + "forall-particles-runner": [ + [[19,28], "s4", "sparticle-cpuinfo"], + [34, "s4", "pointer"], + [35, "s3", "pointer"] + ], + + "(method 2 sparticle-cpuinfo)": [ + [14, "f0", "float"] + ], + + "sp-kill-particle": [ + [7, "a1", "uint"], + [7, "v1", "uint"] + ], + + "sparticle-track-root":[ + [2, "v1", "process-drawable"] + ], + + "sparticle-track-root-prim":[ + [2, "v1", "process-drawable"], + [3, "v1", "collide-shape"] + ], + + "sp-orbiter":[ + [[73, 82], "v1", "sprite-vec-data-2d"] + ], + "placeholder-do-not-add-below": [] } diff --git a/decompiler/data/game_text.cpp b/decompiler/data/game_text.cpp index cebc44e544..96c47a4568 100644 --- a/decompiler/data/game_text.cpp +++ b/decompiler/data/game_text.cpp @@ -6,6 +6,7 @@ #include "game_text.h" #include "decompiler/ObjectFile/ObjectFileDB.h" #include "common/goos/Reader.h" +#include "common/util/BitUtils.h" namespace decompiler { namespace { @@ -23,10 +24,6 @@ DecompilerLabel get_label(ObjectFileData& data, const LinkedWord& word) { return data.linked_data.labels.at(word.label_id); } -int align16(int in) { - return (in + 15) & ~15; -} - } // namespace /* @@ -76,7 +73,7 @@ GameTextResult process_game_text(ObjectFileData& data) { assert(group_name == "common"); // remember that we read these bytes auto group_start = (group_label.offset / 4) - 1; - for (int j = 0; j < align16(8 + 1 + group_name.length()) / 4; j++) { + for (int j = 0; j < align16(8 + 1 + (int)group_name.length()) / 4; j++) { read_words.at(group_start + j)++; } @@ -106,7 +103,7 @@ GameTextResult process_game_text(ObjectFileData& data) { // remember what we read (-1 for the type tag) auto string_start = (text_label.offset / 4) - 1; // 8 for type tag and length fields, 1 for null char. - for (int j = 0; j < align16(8 + 1 + text.length()) / 4; j++) { + for (int j = 0; j < align16(8 + 1 + (int)text.length()) / 4; j++) { read_words.at(string_start + j)++; } } diff --git a/decompiler/util/data_decompile.cpp b/decompiler/util/data_decompile.cpp index d8df32246a..9af3e05006 100644 --- a/decompiler/util/data_decompile.cpp +++ b/decompiler/util/data_decompile.cpp @@ -9,6 +9,7 @@ #include "decompiler/ObjectFile/LinkedObjectFile.h" #include "decompiler/IR2/Form.h" #include "decompiler/analysis/final_output.h" +#include "decompiler/util/sparticle_decompile.h" namespace decompiler { @@ -186,7 +187,7 @@ goos::Object decompile_at_label(const TypeSpec& type, } if (ts.tc(TypeSpec("structure"), type)) { - return decompile_structure(type, label, labels, words, ts, file); + return decompile_structure(type, label, labels, words, ts, file, true); } if (type == TypeSpec("pair")) { @@ -473,7 +474,15 @@ goos::Object decompile_structure(const TypeSpec& type, const std::vector& labels, const std::vector>& words, const TypeSystem& ts, - const LinkedObjectFile* file) { + const LinkedObjectFile* file, + bool use_fancy_macros) { + if (use_fancy_macros && type == TypeSpec("sp-field-init-spec")) { + return decompile_sparticle_field_init(type, label, labels, words, ts, file); + } + + if (use_fancy_macros && type == TypeSpec("sparticle-group-item")) { + return decompile_sparticle_group_item(type, label, labels, words, ts, file); + } // first step, get type info and words TypeSpec actual_type = type; auto uncast_type_info = ts.lookup_type(actual_type); @@ -823,7 +832,6 @@ goos::Object decompile_structure(const TypeSpec& type, return pretty_print::build_list(result_def); } -namespace { goos::Object bitfield_defs_print(const TypeSpec& type, const std::vector& defs) { std::vector result; @@ -843,8 +851,6 @@ goos::Object bitfield_defs_print(const TypeSpec& type, return pretty_print::build_list(result); } -} // namespace - goos::Object decompile_value(const TypeSpec& type, const std::vector& bytes, const TypeSystem& ts) { diff --git a/decompiler/util/data_decompile.h b/decompiler/util/data_decompile.h index 1788e6d00b..64f66962ac 100644 --- a/decompiler/util/data_decompile.h +++ b/decompiler/util/data_decompile.h @@ -39,7 +39,8 @@ goos::Object decompile_structure(const TypeSpec& actual_type, const std::vector& labels, const std::vector>& words, const TypeSystem& ts, - const LinkedObjectFile* file); + const LinkedObjectFile* file, + bool use_fancy_macros); goos::Object decompile_pair(const DecompilerLabel& label, const std::vector& labels, const std::vector>& words, @@ -105,5 +106,6 @@ std::vector decompile_bitfield_enum_from_int(const TypeSpec& type, const TypeSystem& ts, u64 value); std::string decompile_int_enum_from_int(const TypeSpec& type, const TypeSystem& ts, u64 value); - +goos::Object bitfield_defs_print(const TypeSpec& type, + const std::vector& defs); } // namespace decompiler diff --git a/decompiler/util/sparticle_decompile.cpp b/decompiler/util/sparticle_decompile.cpp new file mode 100644 index 0000000000..783dd53d6c --- /dev/null +++ b/decompiler/util/sparticle_decompile.cpp @@ -0,0 +1,622 @@ +#include "sparticle_decompile.h" +#include "decompiler/util/data_decompile.h" +#include "common/goos/PrettyPrinter.h" +#include "common/util/print_float.h" + +namespace decompiler { +// sparticle fields. +// should match the enum in the game. +enum class FieldId { + MISC_FIELDS_START = 0, + SPT_TEXTURE = 1, + SPT_ANIM = 2, + SPT_ANIM_SPEED = 3, + SPT_BIRTH_FUNC = 4, + SPT_JOINT_REFPOINT = 5, + SPT_NUM = 6, + SPT_SOUND = 7, + MISC_FIELDS_END = 8, + SPRITE_FIELDS_START = 9, + SPT_X = 10, + SPT_Y = 11, + SPT_Z = 12, + SPT_SCALE_X = 13, + SPT_ROT_X = 14, + SPT_ROT_Y = 15, + SPT_ROT_Z = 16, + SPT_SCALE_Y = 17, + SPT_R = 18, + SPT_G = 19, + SPT_B = 20, + SPT_A = 21, + SPRITE_FIELDS_END = 22, + CPU_FIELDS_START = 23, + SPT_OMEGA = 24, + SPT_VEL_X = 25, + SPT_VEL_Y = 26, + SPT_VEL_Z = 27, + SPT_SCALEVEL_X = 28, + SPT_ROTVEL_X = 29, + SPT_ROTVEL_Y = 30, + SPT_ROTVEL_Z = 31, + SPT_SCALEVEL_Y = 32, + SPT_FADE_R = 33, + SPT_FADE_G = 34, + SPT_FADE_B = 35, + SPT_FADE_A = 36, + SPT_ACCEL_X = 37, + SPT_ACCEL_Y = 38, + SPT_ACCEL_Z = 39, + SPT_DUMMY = 40, + SPT_QUAT_X = 41, + SPT_QUAT_Y = 42, + SPT_QUAT_Z = 43, + SPT_QUAD_W = 44, + SPT_FRICTION = 45, + SPT_TIMER = 46, + SPT_FLAGS = 47, + SPT_USERDATA = 48, + SPT_FUNC = 49, + SPT_NEXT_TIME = 50, + SPT_NEXT_LAUNCHER = 51, + CPU_FIELDS_END = 52, + LAUNCH_FIELDS_START = 53, + SPT_LAUNCHROT_X = 54, + SPT_LAUNCHROT_Y = 55, + SPT_LAUNCHROT_Z = 56, + SPT_LAUNCHROT_W = 57, + SPT_CONEROT_X = 58, + SPT_CONEROT_Y = 59, + SPT_CONEROT_Z = 60, + SPT_CONEROT_W = 61, + SPT_CONEROT_RADIUS = 62, + SPT_ROTATE_Y = 63, + LAUNCH_FIELDS_END = 64, + SPT_SCALE = 65, + SPT_SCALEVEL = 66, + SPT_END = 67, +}; + +// flag vals: +// 0: timer, flags, end +// 1: texture, float, random-rangef +// 3: integer +// 6: next launcher + +// flag bits +// 2: number is an integer +// 4: launcher index + +enum class FieldKind { + FLOAT, + TEXTURE_ID, + FLOAT_WITH_RAND, + METER_WITH_RAND, + DEGREES_WITH_RAND, + // INT_WITH_RAND, + PLAIN_INT, + PLAIN_INT_WITH_RANDS, + CPUINFO_FLAGS, + END_FLAG, + LAUNCHER_BY_ID, + NO_FANCY_DECOMP, + FUNCTION, + USERDATA, + INVALID +}; + +struct SparticleFieldDecomp { + bool known = false; // error if we try to decomp one that isn't known + FieldKind kind = FieldKind::INVALID; +}; + +const SparticleFieldDecomp field_kinds[68] = { + {false}, // MISC_FIELDS_START = 0 + {true, FieldKind::TEXTURE_ID}, // SPT_TEXTURE = 1 + {false}, // SPT_ANIM = 2 + {false}, // SPT_ANIM_SPEED = 3 + {true, FieldKind::FUNCTION}, // SPT_BIRTH_FUNC = 4 + {false}, // SPT_JOINT/REFPOINT = 5 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_NUM = 6 + {false}, // SPT_SOUND = 7 + {false}, // MISC_FIELDS_END = 8 + {false}, // SPRITE_FIELDS_START = 9 + {true, FieldKind::METER_WITH_RAND}, // SPT_X = 10 + {true, FieldKind::METER_WITH_RAND}, // SPT_Y = 11 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_Z = 12 + {true, FieldKind::METER_WITH_RAND}, // SPT_SCALE_X = 13 + {true, FieldKind::PLAIN_INT}, // SPT_ROT_X = 14 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_ROT_Y = 15 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_ROT_Z = 16 + {true, FieldKind::METER_WITH_RAND}, // SPT_SCALE_Y = 17 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_R = 18 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_G = 19 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_B = 20 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_A = 21 + {false}, // SPRITE_FIELDS_END = 22 + {false}, // CPU_FIELDS_START = 23 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_OMEGA = 24 + {true, FieldKind::METER_WITH_RAND}, // SPT_VEL_X = 25 (likely m/s) + {true, FieldKind::METER_WITH_RAND}, // SPT_VEL_Y = 26 + {true, FieldKind::METER_WITH_RAND}, // SPT_VEL_Z = 27 + {true, FieldKind::METER_WITH_RAND}, // SPT_SCALEVEL_X = 28 + {false}, // SPT_ROTVEL_X = 29 + {false}, // SPT_ROTVEL_Y = 30 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_ROTVEL_Z = 31 + {true, FieldKind::METER_WITH_RAND}, // SPT_SCALEVEL_Y = 32 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_FADE_R = 33 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_FADE_G = 34 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_FADE_B = 35 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_FADE_A = 36 + {false}, // SPT_ACCEL_X = 37 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_ACCEL_Y = 38 + {false}, // SPT_ACCEL_Z = 39 + {false}, // SPT_DUMMY = 40 + {false}, // SPT_QUAT_X = 41 + {false}, // SPT_QUAT_Y = 42 + {false}, // SPT_QUAT_Z = 43 + {false}, // SPT_QUAD_W = 44 + {true, FieldKind::FLOAT_WITH_RAND}, // SPT_FRICTION = 45 + {true, FieldKind::PLAIN_INT_WITH_RANDS}, // SPT_TIMER = 46 + {true, FieldKind::CPUINFO_FLAGS}, // SPT_FLAGS = 47 + {true, FieldKind::USERDATA}, // SPT_USERDATA = 48 + {true, FieldKind::FUNCTION}, // SPT_FUNC = 49 + {true, FieldKind::PLAIN_INT_WITH_RANDS}, // SPT_NEXT_TIME = 50 + {true, FieldKind::LAUNCHER_BY_ID}, // SPT_NEXT_LAUNCHER = 51 + {false}, // CPU_FIELDS_END = 52 + {false}, // LAUNCH_FIELDS_START = 53 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_LAUNCHROT_X = 54 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_LAUNCHROT_Y = 55 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_LAUNCHROT_Z = 56 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_LAUNCHROT_W = 57 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_CONEROT_X = 58 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_CONEROT_Y = 59 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_CONEROT_Z = 60 + {false}, // SPT_CONEROT_W = 61 + {true, FieldKind::METER_WITH_RAND}, // SPT_CONEROT_RADIUS = 62 + {true, FieldKind::DEGREES_WITH_RAND}, // SPT_ROTATE_Y = 63 + {false}, // LAUNCH_FIELDS_END = 64 + {false}, // SPT_SCALE = 65 + {false}, // SPT_SCALEVEL = 66 + {true, FieldKind::END_FLAG}, // SPT_END = 67 + +}; + +std::string make_flags_str(const std::vector& flags) { + if (flags.empty()) { + return ""; + } + std::string result = " :flags ("; + for (auto& x : flags) { + result += x; + result += ' '; + } + result.pop_back(); + result += ')'; + return result; +} + +goos::Object decompile_sparticle_tex_field_init(const std::vector& words, + const TypeSystem& ts, + const std::string& field_name, + const std::string& flag_name) { + assert(words.at(1).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).data == 0); + assert(words.at(3).kind == LinkedWord::PLAIN_DATA); + assert(words.at(3).data == 0); + assert(flag_name == "plain-v1"); + + auto tex_id_type = TypeSpec("texture-id"); + auto tex_id_str = bitfield_defs_print( + tex_id_type, decompile_bitfield_from_int(tex_id_type, ts, words.at(1).data)); + + return pretty_print::to_symbol(fmt::format("(sp-tex {} {})", field_name, tex_id_str.print())); +} + +float word_as_float(const LinkedWord& w) { + assert(w.kind == LinkedWord::PLAIN_DATA); + float v; + memcpy(&v, &w.data, 4); + return v; +} + +s32 word_as_s32(const LinkedWord& w) { + assert(w.kind == LinkedWord::PLAIN_DATA); + return w.data; +} + +goos::Object decompile_sparticle_func(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + assert(words.at(1).kind == LinkedWord::SYM_PTR); + assert(words.at(2).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).data == 0); + assert(words.at(3).kind == LinkedWord::PLAIN_DATA); + assert(words.at(3).data == 0); + assert(flag_name == "from-pointer"); + return pretty_print::to_symbol( + fmt::format("(sp-func {} '{})", field_name, words.at(1).symbol_name)); +} + +goos::Object decompile_sparticle_end(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + assert(words.at(1).kind == LinkedWord::PLAIN_DATA); + assert(words.at(1).data == 0); + assert(words.at(2).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).data == 0); + assert(words.at(3).kind == LinkedWord::PLAIN_DATA); + assert(words.at(3).data == 0); + assert(flag_name == "plain-v1"); + assert(field_name == "spt-end"); + return pretty_print::to_symbol("(sp-end)"); +} + +goos::Object decompile_sparticle_int_with_rand_to_float(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + assert(flag_name == "int-with-rand"); + + return pretty_print::to_symbol(fmt::format("(sp-rnd-int {} {} {} {})", field_name, + word_as_s32(words.at(1)), word_as_s32(words.at(2)), + float_to_string(word_as_float(words.at(3))))); +} + +goos::Object decompile_sparticle_float_with_rand_init(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + if (flag_name == "int-with-rand") { + return decompile_sparticle_int_with_rand_to_float(words, field_name, flag_name); + } + assert(flag_name == "float-with-rand"); + + float range = word_as_float(words.at(2)); + float mult = word_as_float(words.at(3)); + + if (range == 0.f && mult == 1.f) { + return pretty_print::to_symbol( + fmt::format("(sp-flt {} {})", field_name, float_to_string(word_as_float(words.at(1))))); + } else { + return pretty_print::to_symbol(fmt::format("(sp-rnd-flt {} {} {} {})", field_name, + float_to_string(word_as_float(words.at(1))), + float_to_string(range), float_to_string(mult))); + } +} + +goos::Object decompile_sparticle_userdata(const std::vector& words, + const std::string& field_name, + const std::string& flag_name, + const goos::Object& original) { + if (flag_name == "int-with-rand" || flag_name == "float-with-rand") { + return decompile_sparticle_float_with_rand_init(words, field_name, flag_name); + } else { + return original; + } +} +goos::Object decompile_sparticle_int_init(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + assert(words.at(1).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).data == 0); + assert(words.at(3).kind == LinkedWord::PLAIN_DATA); + assert(words.at(3).data == 1); + assert(flag_name == "plain-v1"); + return pretty_print::to_symbol( + fmt::format("(sp-int {} {})", field_name, word_as_s32(words.at(1)))); +} + +goos::Object decompile_sparticle_int_with_rand_init(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + assert(flag_name == "plain-v1"); + if (word_as_s32(words.at(2)) == 0 && word_as_s32(words.at(3)) == 1) { + return decompile_sparticle_int_init(words, field_name, flag_name); + } + return pretty_print::to_symbol(fmt::format("(sp-int-plain-rnd {} {} {} {})", field_name, + word_as_s32(words.at(1)), word_as_s32(words.at(2)), + word_as_s32(words.at(3)))); +} + +goos::Object decompile_sparticle_launcher_by_id(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + assert(words.at(1).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).data == 0); + assert(words.at(3).kind == LinkedWord::PLAIN_DATA); + assert(words.at(3).data == 0); + assert(flag_name == "part-by-id"); + return pretty_print::to_symbol( + fmt::format("(sp-launcher-by-id {} {})", field_name, word_as_s32(words.at(1)))); +} + +goos::Object decompile_sparticle_flags(const std::vector& words, + const TypeSystem& ts, + const std::string& field_name, + const std::string& flag_name) { + assert(flag_name == "plain-v1"); + assert(field_name == "spt-flags"); + assert(words.at(3).kind == LinkedWord::PLAIN_DATA); + assert(words.at(3).data == 1); + assert(words.at(2).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).data == 0); + auto flag_def = + decompile_bitfield_enum_from_int(TypeSpec("sp-cpuinfo-flag"), ts, word_as_s32(words.at(1))); + std::string result = "(sp-cpuinfo-flags"; + for (const auto& def : flag_def) { + result += ' '; + result += def; + } + result += ')'; + return pretty_print::to_symbol(result); +} + +goos::Object decompile_sparticle_from_other(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + assert(words.at(1).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).kind == LinkedWord::PLAIN_DATA); + assert(words.at(2).data == 0); + assert(words.at(3).kind == LinkedWord::PLAIN_DATA); + assert(words.at(3).data == 1); + assert(flag_name == "copy-from-other-field"); + return pretty_print::to_symbol( + fmt::format("(sp-copy-from-other {} {})", field_name, word_as_s32(words.at(1)))); +} + +goos::Object decompile_sparticle_float_meters_with_rand_init(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + if (flag_name == "int-with-rand") { + return pretty_print::to_symbol( + fmt::format("(sp-rnd-int-flt {} (meters {}) {} {})", field_name, + float_to_string(word_as_float(words.at(1)) / METER_LENGTH), + word_as_s32(words.at(2)), float_to_string(word_as_float(words.at(3))))); + } + assert(flag_name == "float-with-rand"); + + float range = word_as_float(words.at(2)); + float mult = word_as_float(words.at(3)); + + if (range == 0.f && mult == 1.f) { + return pretty_print::to_symbol( + fmt::format("(sp-flt {} (meters {}))", field_name, + float_to_string(word_as_float(words.at(1)) / METER_LENGTH))); + } else { + return pretty_print::to_symbol( + fmt::format("(sp-rnd-flt {} (meters {}) (meters {}) {})", field_name, + float_to_string(word_as_float(words.at(1)) / METER_LENGTH), + float_to_string(word_as_float(words.at(2)) / METER_LENGTH), + float_to_string(word_as_float(words.at(3))))); + } +} + +goos::Object decompile_sparticle_float_degrees_with_rand_init(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + if (flag_name == "int-with-rand") { + return pretty_print::to_symbol( + fmt::format("(sp-rnd-int-flt {} (degrees {}) {} {})", field_name, + float_to_string(word_as_float(words.at(1)) / DEGREES_LENGTH), + word_as_s32(words.at(2)), float_to_string(word_as_float(words.at(3))))); + } + assert(flag_name == "float-with-rand"); + float range = word_as_float(words.at(2)); + float mult = word_as_float(words.at(3)); + if (range == 0.f && mult == 1.f) { + return pretty_print::to_symbol( + fmt::format("(sp-flt {} (degrees {}))", field_name, + float_to_string(word_as_float(words.at(1)) / DEGREES_LENGTH))); + } else { + return pretty_print::to_symbol( + fmt::format("(sp-rnd-flt {} (degrees {}) (degrees {}) {})", field_name, + float_to_string(word_as_float(words.at(1)) / DEGREES_LENGTH), + float_to_string(word_as_float(words.at(2)) / DEGREES_LENGTH), + float_to_string(word_as_float(words.at(3))))); + } +} + +goos::Object decompile_sparticle_group_item(const TypeSpec& type, + const DecompilerLabel& label, + const std::vector& labels, + const std::vector>& words, + const TypeSystem& ts, + const LinkedObjectFile* file) { + auto normal = decompile_structure(type, label, labels, words, ts, file, false); + fmt::print("Doing: {}\n", normal.print()); + auto uncast_type_info = ts.lookup_type(type); + auto type_info = dynamic_cast(uncast_type_info); + if (!type_info) { + throw std::runtime_error(fmt::format("Type {} wasn't a structure type.", type.print())); + } + assert(type_info->get_size_in_memory() == 0x1c); + + // get words for real + auto offset_location = label.offset - type_info->get_offset(); + int word_count = (type_info->get_size_in_memory() + 3) / 4; + std::vector obj_words; + obj_words.insert(obj_words.begin(), + words.at(label.target_segment).begin() + (offset_location / 4), + words.at(label.target_segment).begin() + (offset_location / 4) + word_count); + + // 0 launcher + // 4 fade-after (meters) + // 8 falloff-to (meters) + // flags, period + // length, offset + // hour-mask + // binding + + s32 launcher = word_as_s32(obj_words.at(0)); + float fade_after_meters = word_as_float(obj_words.at(1)) / METER_LENGTH; + float falloff_to_meters = word_as_float(obj_words.at(2)) / METER_LENGTH; + u32 fp = word_as_s32(obj_words.at(3)); + u16 flags = fp & 0xffff; + u16 period = fp >> 16; + u32 lo = word_as_s32(obj_words.at(4)); + u16 length = lo & 0xffff; + u16 offset = lo >> 16; + u32 hour_mask = word_as_s32(obj_words.at(5)); + u32 binding = word_as_s32(obj_words.at(6)); + + std::string result = + fmt::format("(sp-item {}", launcher); // use decimal, so it matches array idx + + if (fade_after_meters != 0.0) { + result += fmt::format(" :fade-after (meters {})", float_to_string(fade_after_meters)); + } + + if (falloff_to_meters != 0.0) { + result += fmt::format(" :falloff-to (meters {})", float_to_string(falloff_to_meters)); + } + + if (flags) { + auto things = decompile_bitfield_enum_from_int(TypeSpec("sp-group-item-flag"), ts, flags); + result += " :flags ("; + for (auto& thing : things) { + result += thing; + result += ' '; + } + result.pop_back(); + result += ')'; + } + + if (period) { + result += fmt::format(" :period {}", period); + } + + if (length) { + result += fmt::format(" :length {}", length); + } + + if (offset) { + result += fmt::format(" :offset {}", offset); + } + + if (hour_mask) { + result += fmt::format(" :hour-mask #b{:b}", hour_mask); + } + + if (binding) { + result += fmt::format(" :binding {}", binding); + } + + result += ')'; + fmt::print("Result: {}\n", result); + return pretty_print::to_symbol(result); +} + +goos::Object decompile_sparticle_field_init(const TypeSpec& type, + const DecompilerLabel& label, + const std::vector& labels, + const std::vector>& words, + const TypeSystem& ts, + const LinkedObjectFile* file) { + auto normal = decompile_structure(type, label, labels, words, ts, file, false); + fmt::print("Doing: {}\n", normal.print()); + auto uncast_type_info = ts.lookup_type(type); + auto type_info = dynamic_cast(uncast_type_info); + if (!type_info) { + throw std::runtime_error(fmt::format("Type {} wasn't a structure type.", type.print())); + } + assert(type_info->get_size_in_memory() == 16); + + // get words for real + auto offset_location = label.offset - type_info->get_offset(); + int word_count = (type_info->get_size_in_memory() + 3) / 4; + std::vector obj_words; + obj_words.insert(obj_words.begin(), + words.at(label.target_segment).begin() + (offset_location / 4), + words.at(label.target_segment).begin() + (offset_location / 4) + word_count); + + assert(obj_words.at(0).kind == LinkedWord::PLAIN_DATA); + u16 field_id = obj_words.at(0).data & 0xffff; + u16 flags = obj_words.at(0).data >> 16; + + assert(field_id <= (u32)FieldId::SPT_END); + auto field_name = decompile_int_enum_from_int(TypeSpec("sp-field-id"), ts, field_id); + const auto& field_info = field_kinds[field_id]; + if (!field_info.known) { + throw std::runtime_error("Unknown sparticle field: " + field_name); + } + + auto flag_name = decompile_int_enum_from_int(TypeSpec("sp-flag"), ts, flags); + goos::Object result; + + if (flag_name == "copy-from-other-field") { + result = decompile_sparticle_from_other(obj_words, field_name, flag_name); + } else { + switch (field_info.kind) { + case FieldKind::TEXTURE_ID: + result = decompile_sparticle_tex_field_init(obj_words, ts, field_name, flag_name); + break; + case FieldKind::FLOAT_WITH_RAND: + result = decompile_sparticle_float_with_rand_init(obj_words, field_name, flag_name); + break; + case FieldKind::METER_WITH_RAND: + result = decompile_sparticle_float_meters_with_rand_init(obj_words, field_name, flag_name); + break; + case FieldKind::DEGREES_WITH_RAND: + result = decompile_sparticle_float_degrees_with_rand_init(obj_words, field_name, flag_name); + break; + // case FieldKind::INT_WITH_RAND: + // result = decompile_sparticle_int_with_rand_init(obj_words, field_name, flag_name); + // break; + case FieldKind::PLAIN_INT_WITH_RANDS: + result = decompile_sparticle_int_with_rand_init(obj_words, field_name, flag_name); + break; + case FieldKind::PLAIN_INT: + result = decompile_sparticle_int_init(obj_words, field_name, flag_name); + break; + case FieldKind::CPUINFO_FLAGS: + result = decompile_sparticle_flags(obj_words, ts, field_name, flag_name); + break; + case FieldKind::END_FLAG: + result = decompile_sparticle_end(obj_words, field_name, flag_name); + break; + case FieldKind::LAUNCHER_BY_ID: + result = decompile_sparticle_launcher_by_id(obj_words, field_name, flag_name); + break; + case FieldKind::NO_FANCY_DECOMP: + result = normal; + break; + case FieldKind::FUNCTION: + result = decompile_sparticle_func(obj_words, field_name, flag_name); + break; + case FieldKind::USERDATA: + result = decompile_sparticle_userdata(obj_words, field_name, flag_name, normal); + break; + default: + assert(false); + } + } + + fmt::print("Result: {}\n\n", result.print()); + return result; +} +} // namespace decompiler + +/* +(deftype sp-field-init-spec (structure) + ((field sp-field-id :offset-assert 0) + (flags sp-flag :offset-assert 2) + (initial-valuef float :offset-assert 4) + (random-rangef float :offset-assert 8) + (random-multf float :offset-assert 12) + (initial-value int32 :offset 4) + (random-range int32 :offset 8) + (random-mult int32 :offset 12) + (sym symbol :offset 4) ;; moved + (func function :offset 4) + (tex uint32 :offset 4) + (pntr pointer :offset 4) + ;; gap + (sound basic :offset 4) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + */ \ No newline at end of file diff --git a/decompiler/util/sparticle_decompile.h b/decompiler/util/sparticle_decompile.h new file mode 100644 index 0000000000..7f5fbaa71a --- /dev/null +++ b/decompiler/util/sparticle_decompile.h @@ -0,0 +1,21 @@ +#pragma once + +#include "common/goos/Object.h" +#include "common/type_system/TypeSpec.h" +#include "decompiler/Disasm/DecompilerLabel.h" +#include "decompiler/ObjectFile/LinkedObjectFile.h" + +namespace decompiler { +goos::Object decompile_sparticle_field_init(const TypeSpec& type, + const DecompilerLabel& label, + const std::vector& labels, + const std::vector>& words, + const TypeSystem& ts, + const LinkedObjectFile* file); +goos::Object decompile_sparticle_group_item(const TypeSpec& type, + const DecompilerLabel& label, + const std::vector& labels, + const std::vector>& words, + const TypeSystem& ts, + const LinkedObjectFile* file); +} // namespace decompiler diff --git a/docs/markdown/progress-notes/changelog.md b/docs/markdown/progress-notes/changelog.md index c9324c651b..e6913beb26 100644 --- a/docs/markdown/progress-notes/changelog.md +++ b/docs/markdown/progress-notes/changelog.md @@ -203,4 +203,5 @@ - It is now a warning to redefine a constant. - Fix a bug where the size of static boxed arrays was only `length` and not `allocated-length` - It is now possible to call a method on a forward declared type. The forward declared type must be a basic. -- Using `->` on a plain `pointer` or `inline-array` now generates an error instead of crashing the compiler \ No newline at end of file +- Using `->` on a plain `pointer` or `inline-array` now generates an error instead of crashing the compiler +- It is now possible to use a macro to provide a static inline array element definition \ No newline at end of file diff --git a/docs/scratch/init-fields.asm b/docs/scratch/init-fields.asm new file mode 100644 index 0000000000..86dadf1cdc --- /dev/null +++ b/docs/scratch/init-fields.asm @@ -0,0 +1,326 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function sp-init-fields! +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;BAD PROLOGUE +;; Warnings: +;; INFO: Flagged as asm by config +;; INFO: Assembly Function + +# inputs: a0 output-data (multiple types) +# a1 init-spec-array +# a2 start-field-idx +# a3 end-field-idx (not inclusive, not that it matters?) +# t0 usually #f. + + +## Initialize +B0: +L155: + or v1, a0, r0 + or v1, a2, r0 + or v1, a3, r0 + or v1, t0, r0 + sll r0, r0, 0 + daddiu a2, a2, 1 # actual first field to care about. + or v0, a1, r0 # v0 = current field? + +## Loop to advance our init spec until we hit a field >= our minimum +B1: +L156: + lh a1, 0(v0) # a1 = field-id + sll r0, r0, 0 + dsubu a1, a1, a2 # + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + bltzl a1, L156 +B2: + daddiu v0, v0, 16 + +## If our range is size 0 (or negative), exit early, we have no fields to initialize +B3: + dsubu a1, a2, a3 + sll r0, r0, 0 + bgez a1, L169 + sll r0, r0, 0 + + +# LOOP TOP: +# v0 = init-spec, a2 = field to init, +B4: +L157: + lh a1, 0(v0) + sll r0, r0, 0 + bne a1, a2, L167 # jump to end if field doesn't match spec. + vrget.xyzw vf1 + +B5: + vsqrt Q, vf1.x + lh a1, 2(v0) # a1 = flags + vaddq.x vf2, vf0, Q # more random? + lw t2, 8(v0) # t2 = random-range (float or int possible here) + addiu v1, r0, 7 + beq a2, v1, L159 # spt-sound + addiu t1, r0, 1 + +B6: + beq a1, t1, L160 # flags = 1. + addiu t1, r0, 2 + +B7: + beq a1, t1, L162 # flags = 2. + addiu t1, r0, 3 + +B8: + beq a1, t1, L163 # flags = 3 + addiu t1, r0, 5 + +B9: + beq a1, t1, L164 # flags = 5 + addiu t1, r0, 6 + +B10: + beq a1, t1, L165 # flags = 6 + addiu t1, r0, 4 + +B11: + beq a1, t1, L166 # flags = 4 + sll r0, r0, 0 + +B12: + beq t2, r0, L158 # flags = 0 + sll r0, r0, 0 + +B13: + vrxorw vf2 # other flags + lw t1, 12(v0) + vrnext.xyzw vf1 + lw t3, 4(v0) + vsubw.xyzw vf1, vf1, vf0 + sll r0, r0, 0 + qmtc2.i vf2, t2 + sll r0, r0, 0 + vitof0.xyzw vf2, vf2 + sll r0, r0, 0 + vmul.xyzw vf1, vf1, vf2 + sll r0, r0, 0 + vftoi0.xyzw vf1, vf1 + sll r0, r0, 0 + qmfc2.i t2, vf1 + sll r0, r0, 0 + mult3 t2, t2, t1 + sll r0, r0, 0 + daddu t2, t2, t3 + daddiu a2, a2, 1 + sw t2, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B14: + jr ra + sll r0, r0, 0 + +B15: +L158: # flags = 0 + lw t3, 4(v0) ## int32 + daddiu a2, a2, 1 + sw t3, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B16: + jr ra + sll r0, r0, 0 + +B17: +L159: ## special case for sound. + lw t3, 4(v0) + daddiu a2, a2, 1 + sw t3, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B18: + jr ra + sll r0, r0, 0 + +B19: +L160: ## flags = 1 + beq t2, r0, L161 # skip if range = 0 + vrxorw vf2 + +B20: + vrnext.xyzw vf1 + lw t1, 12(v0) ## t1 = multiplier + vsubw.xyzw vf1, vf1, vf0 + lw t3, 4(v0) ## t3 = initial-value + qmtc2.i vf2, t2 + sll r0, r0, 0 + vmul.xyzw vf1, vf1, vf2 + sll r0, r0, 0 + qmtc2.i vf2, t1 + sll r0, r0, 0 + vmul.xyzw vf1, vf1, vf2 + sll r0, r0, 0 + qmtc2.i vf2, t3 + sll r0, r0, 0 + vadd.xyzw vf1, vf1, vf2 + sll r0, r0, 0 + qmfc2.i t2, vf1 + daddiu a2, a2, 1 + sw t2, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B21: + jr ra + sll r0, r0, 0 + +B22: +L161: + lw t3, 4(v0) + daddiu a2, a2, 1 + sw t3, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B23: + jr ra + sll r0, r0, 0 + +B24: +L162: + beq t2, r0, L161 ## flags = 2 + vrxorw vf2 + +B25: + vrnext.xyzw vf1 + lw t1, 12(v0) + vsubw.xyzw vf1, vf1, vf0 + daddiu t2, t2, 1 + qmtc2.i vf2, t2 + lw t3, 4(v0) + vitof0.xyzw vf2, vf2 + sll r0, r0, 0 + vmul.xyzw vf1, vf1, vf2 + sll r0, r0, 0 + vftoi0.xyzw vf1, vf1 + sll r0, r0, 0 + vitof0.xyzw vf1, vf1 + sll r0, r0, 0 + qmtc2.i vf2, t1 + sll r0, r0, 0 + vmul.xyzw vf1, vf1, vf2 + sll r0, r0, 0 + qmtc2.i vf2, t3 + sll r0, r0, 0 + vadd.xyzw vf1, vf1, vf2 + sll r0, r0, 0 + qmfc2.i t2, vf1 + daddiu a2, a2, 1 + sw t2, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B26: + jr ra + sll r0, r0, 0 + +B27: +L163: ## flags = 3 + lw t1, 4(v0) # t1 = init-val + sll r0, r0, 0 + dsll t1, t1, 2 # val * 4 + sll r0, r0, 0 + daddu t1, t1, a0 # t1 = dest + val*4 + sll r0, r0, 0 + lw t3, 0(t1) + daddiu a2, a2, 1 + sw t3, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B28: + jr ra + sll r0, r0, 0 + +B29: +L164: ## flags = 5 + lw t1, 4(v0) + sll r0, r0, 0 + lw t3, 0(t1) + daddiu a2, a2, 1 + sw t3, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B30: + jr ra + sll r0, r0, 0 + +B31: +L165: + lw t1, *part-id-table*(s7) ## flags = 6 + sll r0, r0, 0 + lw t3, 4(v0) + sll r0, r0, 0 + dsll t3, t3, 2 + daddiu t1, t1, 12 + daddu t3, t3, t1 + sll r0, r0, 0 + lw t2, 0(t3) + daddiu a2, a2, 1 + sw t2, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B32: + jr ra + sll r0, r0, 0 + +B33: +L166: + lw t3, 4(v0) ## flags = 4 + daddiu a2, a2, 1 + sw t3, 0(a0) + daddiu a0, a0, 4 + bne a2, a3, L157 + daddiu v0, v0, 16 + +B34: + jr ra + sll r0, r0, 0 + +B35: +L167: + bnel t0, s7, L168 +B36: + sw r0, 0(a0) + +B37: +L168: + daddiu a2, a2, 1 + daddiu a0, a0, 4 + bne a2, a3, L157 + sll r0, r0, 0 + +B38: +L169: + jr ra + sll r0, r0, 0 + + jr ra + daddu sp, sp, r0 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 diff --git a/docs/scratch/sprite_vu1.txt b/docs/scratch/sprite_vu1.txt new file mode 100644 index 0000000000..a6283136dd --- /dev/null +++ b/docs/scratch/sprite_vu1.txt @@ -0,0 +1,1025 @@ +;; Packets: + +;; run the distorters + + +;; setup the gs registers +;; - ate 1 +;; - atst >= +;; - aref 38 +;; - afail 1 +;; - zte 1 +;; - ztst >= +;; - texture clamp + +;; upload the program + +;; upload the frame data (41 qw's) + +;; mscalf 0. with flushe + +;; base/offset (0, 400) + +;; matrix data upload 0 + +;; 3d all + +;; 2d all (group 0's) + +;; shadow + +;; nop fluhse + +;; matrix 1 + +;; add 2d all + + +;;;; Program memory +;; 0: sprite init +;; 3: 2d group0 +;; 109: 2d group1 +;; 211: 3d and shadow + +;;;;; Data memory + +;; 0 : header +;; 1 : vector data +;; 145: adgif data +;; 400: header (2nd buffer) +;; ... +;; 800: giftag building zone. +;; 900: matrix +;; 904: hvdf offset +;; 905+: user matrices +;; 980: frame data. + + +------------------------------------------------------ +;; Initialization + lq.xyzw vf29, 996(vi00) | nop ;; vf29 = hmge-scale + lq.xyzw vf31, 997(vi00) | nop :e ;; vf31 = (pfog0 deg2rad min-scale inv-area) + iaddiu vi15, vi00, 0x320 | nop ;; vi15 = 800 +------------------------------------------------------ +;;2D - group 0 + +;; vi02: vec-data-ptr +;; vi03: adgif-data-ptr +;; vi04: num-sprites +;; vi08: group idx (giftag selector) + +;; vf01 vector0 (position) +;; vf02: main-matrix * vector0 +;; vf03: main-matrix * vector0 .* hmge-scale +;; vf04: (?, ?, rot_rad^2, ?) +;; vf05 vector1 () +;; vf06: adgif +;; vf07: adgif +;; vf08: adgif +;; vf09: adgif +;; vf11 vector2 +;; vf12 fog: (min, max, max-scale) +;; vf25 main matrix +;; vf26 ^ +;; vf27 ^ +;; vf28 ^ +;; vf29: hmge-scale +;; vf30 hvdf offset +;; vf31 (pfog0, deg2rad, min-scale, inv-area) + + +;; first, set up the double buffer. here vi02 points to the block data. + xtop vi02 | nop + nop | nop + ilwr.x vi04, vi02 | nop ;; vi04 = num-sprites (from header) + iaddi vi02, vi02, 0x1 | nop ;; inc past header. vi02 now vector data + iaddiu vi03, vi02, 0x90 | nop ;; vi03 = adgif data +;; Block Loop Top +;; load the constants that we want to keep always. +L1: + ilw.y vi08, 1(vi02) | nop ;; should be 0 or 1, pick between sprite-2d-giftag/sprite-2d-giftag-2 + + lq.xyzw vf25, 900(vi00) | nop ;; load the main matrix. + lq.xyzw vf26, 901(vi00) | nop + lq.xyzw vf27, 902(vi00) | nop + lq.xyzw vf28, 903(vi00) | nop + lq.xyzw vf30, 904(vi00) | nop ;; hvdf offset + + lqi.xyzw vf01, vi02 | nop ;; vector 0 (px, py, pz, sx) + lqi.xyzw vf05, vi02 | nop ;; vector 1 (flag, matrix?, ) + lqi.xyzw vf11, vi02 | nop ;; vector 2 + + ;; load fog consts, matrix multiply vf01. + lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00 ;; just add offset, w != 1. + nop | maddax.xyzw ACC, vf25, vf01 ;; normal matrix multiplication + nop | madday.xyzw ACC, vf26, vf01 + nop | maddz.xyzw vf02, vf27, vf01 + + ;; set w = 1 in vf05 ;; vf01.z = sy + move.w vf05, vf00 | addw.z vf01, vf00, vf05 + nop | nop + + ;; Q = pfog / pos_mul.w vf05.z = deg2rad * rot (woo! this actually makes sense!) + div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31 + ;; ;; scale with hmge + nop | mul.xyzw vf03, vf02, vf29 + nop | nop + nop | nop + ;; vf04.z = rot^2 + nop | mulz.z vf04, vf05, vf05 + ;; sincos-01 ;; clip! + lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03 + ;; vi06 = 1 + iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11 ;; SETS FLAGS for FMAND + + ;; kicking loop. +L2: +;; vi05 = kickplace ;; multiply scales by by Q. + ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q +;; adgif vf15 = rot^3 + lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04 +;; vf16 = sincos23 taylor series for sine and cosine begins, result in acc.zw + lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14 +;; vi01 = 1 when a = 0. scale position by Q + fmand vi01, vi06 | mul.xyz vf02, vf02, Q +;; reject a=0's vf01.x = vf01.z (which is sy) + ibne vi00, vi01, L5 | addz.x vf01, vf00, vf01 +;; load first adgif. more taylor series + lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04 +;; more sincos more taylor series + lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14 +;; load 2nd adgifs add offset + lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30 +;; load 3rd adgif vf01.x = vf01.x * vf01.w (which is sy * sx) + lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01 +;; store first adgif more taylor series + sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04 +;; more sincos more taylor series + lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14 +;; store adgif saturate fog (against min) + sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12 +;; store adgif saturate scales (not the sx*sy though) + sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31 +;; store adgif more taylor series + sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04 +;; more sincos more taylor series + lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14 +;; load 4th adgif vf01.x *= inv-area + lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31 +;; load 5th last adgif saturate fog (against max) + lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12 +;; load gt or gt2 saturate scales (against max) + lq.xyzw vf08, 999(vi08) | miniz.zw vf01, vf01, vf12 +;; load flag done with the taylor series (ugh) + ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14 +;; next vector0? saturate sx*sy*inv-area? + lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00 +;; + nop | suby.w vf02, vf10, vf12 + lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01 + fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00 + lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23 + fmand vi09, vi06 | nop + ibne vi00, vi09, L6 | nop + lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23 +L3: + lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11 + lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23 + lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05 + lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05 + sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05 + lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05 + move.w vf24, vf00 | addw.z vf23, vf00, vf24 + div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01 + ibne vi00, vi01, L4 | muly.z vf24, vf24, vf31 + ilw.y vi08, -2(vi02) | mulz.xyzw vf13, vf13, vf01 + sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29 + sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00 + sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19 + lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19 + lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00 + lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20 + lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20 + sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00 + sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21 + sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21 + sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00 + nop | maddax.xyzw ACC, vf12, vf22 + nop | maddy.xyzw vf22, vf13, vf22 + lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19 + lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20 + move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21 + move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22 + sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24 + sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03 + sq.xyzw vf21, 6(vi05) | nop + sq.xyzw vf22, 8(vi05) | nop + xgkick vi15 | nop + iaddi vi04, vi04, -0x1 | nop + iaddiu vi01, vi00, 0x672 | nop + ibne vi00, vi04, L2 | nop + isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11 + nop | nop :e + nop | nop +L4: + iaddi vi04, vi04, -0x1 | nop + iaddi vi02, vi02, -0x3 | nop + ibne vi00, vi04, L1 | nop + nop | nop + nop | nop :e + nop | nop +L5: + iaddi vi04, vi04, -0x1 | nop ;; decrement sprite count + iaddi vi03, vi03, 0x4 | nop ;; skip remaining 4 adgifs. + ibne vi00, vi04, L1 | nop ;; if we have remainig sprites, try again. + nop | nop + nop | nop :e + nop | nop +L6: + b L3 | nop + lq.xyzw vf08, 1000(vi00) | nop +-------------------------------------- + xtop vi02 | nop + nop | nop + ilwr.x vi04, vi02 | nop + iaddi vi02, vi02, 0x1 | nop + iaddiu vi03, vi02, 0x90 | nop +L7: + ilw.y vi08, 1(vi02) | nop + lq.xyzw vf25, 900(vi00) | nop + lq.xyzw vf26, 901(vi00) | nop + lq.xyzw vf27, 902(vi00) | nop + lq.xyzw vf28, 903(vi00) | nop + lq.xyzw vf30, 904(vi08) | nop + lqi.xyzw vf01, vi02 | nop + lqi.xyzw vf05, vi02 | nop + lqi.xyzw vf11, vi02 | nop + lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00 + ilw.y vi08, 1(vi02) | maddax.xyzw ACC, vf25, vf01 + nop | madday.xyzw ACC, vf26, vf01 + nop | maddz.xyzw vf02, vf27, vf01 + move.w vf05, vf00 | addw.z vf01, vf00, vf05 + nop | nop + div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31 + nop | mul.xyzw vf03, vf02, vf29 + nop | nop + nop | nop + nop | mulz.z vf04, vf05, vf05 + lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03 + iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11 +L8: + ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q + lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04 + lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14 + fmand vi01, vi06 | mul.xyz vf02, vf02, Q + ibne vi00, vi01, L10 | addz.x vf01, vf00, vf01 + lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04 + lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14 + lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30 + lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01 + sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04 + lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14 + sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12 + sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31 + sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04 + lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14 + lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31 + lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12 + lq.xyzw vf08, 1000(vi00) | nop + ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14 + lq.xyzw vf30, 904(vi08) | nop + lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00 + lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01 + fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00 + lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23 + lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23 + lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11 + lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23 + lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05 + lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05 + sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05 + lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05 + move.w vf24, vf00 | addw.z vf23, vf00, vf24 + div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01 + ibne vi00, vi01, L9 | muly.z vf24, vf24, vf31 + ilw.y vi08, 1(vi02) | mulz.xyzw vf13, vf13, vf01 + sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29 + sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00 + sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19 + lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19 + lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00 + lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20 + lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20 + sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00 + sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21 + sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21 + sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00 + nop | maddax.xyzw ACC, vf12, vf22 + nop | maddy.xyzw vf22, vf13, vf22 + lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19 + lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20 + move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21 + move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22 + sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24 + sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03 + sq.xyzw vf21, 6(vi05) | nop + sq.xyzw vf22, 8(vi05) | nop + xgkick vi15 | nop + iaddi vi04, vi04, -0x1 | nop + iaddiu vi01, vi00, 0x672 | nop + ibne vi00, vi04, L8 | nop + isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11 + nop | nop :e + nop | nop +L9: + iaddi vi04, vi04, -0x1 | nop + iaddi vi02, vi02, -0x3 | nop + ibne vi00, vi04, L7 | nop + nop | nop + nop | nop :e + nop | nop +L10: + iaddi vi04, vi04, -0x1 | nop + iaddi vi03, vi03, 0x4 | nop + ibne vi00, vi04, L7 | nop + nop | nop + nop | nop :e + nop | nop +----------------------------------------------- + lq.xyzw vf25, 900(vi00) | nop + lq.xyzw vf26, 901(vi00) | nop + lq.xyzw vf27, 902(vi00) | nop + lq.xyzw vf28, 903(vi00) | nop + lq.xyzw vf30, 904(vi00) | nop + xtop vi02 | nop + nop | nop + ilwr.x vi04, vi02 | nop + iaddi vi02, vi02, 0x1 | nop + iaddiu vi03, vi02, 0x90 | nop + lq.xyzw vf23, 1020(vi00) | nop + iaddi vi06, vi00, 0x1 | nop +L11: + lq.xyzw vf06, 1(vi02) | nop + lq.xyzw vf07, 2(vi02) | nop + iaddi vi01, vi00, 0x2 | nop + nop | nop + nop | mul.xyzw vf05, vf06, vf06 + nop | addw.y vf08, vf00, vf06 + nop | subw.w vf06, vf06, vf06 + nop | adda.xyzw ACC, vf07, vf07 + nop | addy.x vf05, vf05, vf05 + nop | nop + nop | nop + fmand vi01, vi06 | nop + ibne vi00, vi01, L15 | addz.x vf05, vf05, vf05 + nop | nop + nop | nop + nop | nop + nop | subx.w vf05, vf00, vf05 + nop | nop + nop | nop + nop | nop + sqrt Q, vf05.w | nop + nop | nop + nop | nop + nop | nop + nop | nop + nop | nop + nop | nop + nop | addq.w vf06, vf06, Q + nop | nop + nop | nop + nop | nop + nop | add.xyzw vf13, vf06, vf06 + nop | addw.x vf09, vf00, vf06 + nop | addz.y vf09, vf00, vf06 + nop | suby.z vf09, vf00, vf06 + nop | subw.w vf09, vf00, vf00 + nop | subz.x vf10, vf00, vf06 + nop | addw.y vf10, vf00, vf06 + nop | addx.z vf10, vf00, vf06 + nop | subw.w vf10, vf00, vf00 + nop | addy.x vf11, vf00, vf06 + nop | subx.y vf11, vf00, vf06 + nop | addw.z vf11, vf00, vf06 + nop | subw.w vf11, vf00, vf00 +L12: + lq.xyzw vf12, 0(vi02) | opmula.xyz ACC, vf13, vf09 + lq.xyzw vf07, 2(vi02) | opmsub.xyz vf09, vf09, vf13 + iaddi vi02, vi02, 0x3 | opmula.xyz ACC, vf13, vf10 + lq.xyzw vf06, 1(vi02) | opmsub.xyz vf10, vf10, vf13 + ior vi05, vi15, vi00 | opmula.xyz ACC, vf13, vf11 + lq.xyzw vf01, 998(vi00) | opmsub.xyz vf11, vf11, vf13 + lqi.xyzw vf02, vi03 | addw.x vf09, vf09, vf00 + lqi.xyzw vf03, vi03 | addw.y vf10, vf10, vf00 + lqi.xyzw vf04, vi03 | addw.z vf11, vf11, vf00 + sqi.xyzw vf01, vi05 | mul.xyzw vf05, vf06, vf06 + move.w vf12, vf00 | mulw.xyzw vf09, vf09, vf12 + iaddi vi06, vi00, 0x1 | muly.xyzw vf11, vf11, vf08 + lq.xyzw vf14, 992(vi00) | adda.xyzw ACC, vf07, vf07 + lq.xyzw vf15, 993(vi00) | ftoi0.xyzw vf07, vf07 + lq.xyzw vf16, 994(vi00) | addw.y vf08, vf00, vf06 + lq.xyzw vf17, 995(vi00) | subw.w vf06, vf06, vf06 + fmand vi01, vi06 | mulax.xyzw ACC, vf09, vf14 + ibne vi00, vi01, L14 | madday.xyzw ACC, vf10, vf14 + sq.xyzw vf07, 7(vi05) | maddaz.xyzw ACC, vf11, vf14 + sq.xyzw vf07, 10(vi05) | maddw.xyzw vf14, vf12, vf00 + sqi.xyzw vf02, vi05 | addy.x vf05, vf05, vf05 + sq.xyzw vf07, 12(vi05) | mulax.xyzw ACC, vf09, vf15 + sq.xyzw vf07, 15(vi05) | madday.xyzw ACC, vf10, vf15 + sqi.xyzw vf03, vi05 | maddaz.xyzw ACC, vf11, vf15 + sqi.xyzw vf04, vi05 | addz.x vf05, vf05, vf05 + lqi.xyzw vf01, vi03 | maddw.xyzw vf15, vf12, vf00 + lqi.xyzw vf02, vi03 | mulax.xyzw ACC, vf09, vf16 + lq.xyzw vf03, 1008(vi00) | madday.xyzw ACC, vf10, vf16 + nop | subx.w vf05, vf00, vf05 + sqi.xyzw vf01, vi05 | maddaz.xyzw ACC, vf11, vf16 + sqi.xyzw vf02, vi05 | maddw.xyzw vf16, vf12, vf00 + sqi.xyzw vf03, vi05 | mulax.xyzw ACC, vf09, vf17 + sqrt Q, vf05.w | madday.xyzw ACC, vf10, vf17 + nop | maddaz.xyzw ACC, vf11, vf17 + nop | maddw.xyzw vf17, vf12, vf00 + lq.xyzw vf18, 988(vi00) | mulax.xyzw ACC, vf25, vf14 + lq.xyzw vf19, 989(vi00) | madday.xyzw ACC, vf26, vf14 + lq.xyzw vf20, 990(vi00) | maddaz.xyzw ACC, vf27, vf14 + lq.xyzw vf21, 991(vi00) | maddw.xyzw vf14, vf28, vf00 + nop | addq.w vf06, vf06, Q + nop | mulax.xyzw ACC, vf25, vf15 + nop | madday.xyzw ACC, vf26, vf15 + nop | maddaz.xyzw ACC, vf27, vf15 + div Q, vf31.x, vf14.w | mul.xyzw vf09, vf14, vf29 + nop | maddw.xyzw vf15, vf28, vf00 + nop | mulax.xyzw ACC, vf25, vf16 + nop | madday.xyzw ACC, vf26, vf16 + nop | maddaz.xyzw ACC, vf27, vf16 + nop | mul.xyzw vf10, vf15, vf29 + nop | maddw.xyzw vf16, vf28, vf00 + div Q, vf31.x, vf15.w | mul.xyz vf14, vf14, Q + nop | mul.xyzw vf18, vf18, Q + nop | mulax.xyzw ACC, vf25, vf17 + nop | madday.xyzw ACC, vf26, vf17 + nop | maddaz.xyzw ACC, vf27, vf17 + sq.xyzw vf18, 0(vi05) | mul.xyzw vf11, vf16, vf29 + nop | maddw.xyzw vf17, vf28, vf00 + div Q, vf31.x, vf16.w | mul.xyz vf15, vf15, Q + nop | mul.xyzw vf19, vf19, Q + nop | add.xyzw vf14, vf14, vf30 + nop | add.xyzw vf15, vf15, vf30 + nop | mul.xyzw vf12, vf17, vf29 + sq.xyzw vf19, 3(vi05) | clipw.xyz vf09, vf09 + nop | clipw.xyz vf10, vf10 + div Q, vf31.x, vf17.w | mul.xyz vf16, vf16, Q + nop | mul.xyzw vf20, vf20, Q + nop | clipw.xyz vf11, vf11 + nop | clipw.xyz vf12, vf12 + nop | add.xyzw vf16, vf16, vf30 + sq.xyzw vf20, 6(vi05) | maxx.w vf14, vf14, vf23 + nop | maxx.w vf15, vf15, vf23 + fcand vi01, 0x410410 | mul.xyz vf17, vf17, Q + ibne vi00, vi01, L13 | mul.xyzw vf21, vf21, Q + fcand vi01, 0xffffff | maxx.w vf16, vf16, vf23 + ibne vi00, vi01, L16 | miniy.w vf14, vf14, vf23 + nop | add.xyzw vf17, vf17, vf30 + sq.xyzw vf21, 9(vi05) | miniy.w vf15, vf15, vf23 + nop | miniy.w vf16, vf16, vf23 + nop | ftoi4.xyzw vf14, vf14 + nop | maxx.w vf17, vf17, vf23 + nop | ftoi4.xyzw vf15, vf15 + nop | ftoi4.xyzw vf16, vf16 + sq.xyzw vf14, 2(vi05) | add.xyzw vf13, vf06, vf06 + nop | miniy.w vf17, vf17, vf23 + sq.xyzw vf15, 5(vi05) | addw.x vf09, vf00, vf06 + sq.xyzw vf16, 8(vi05) | addz.y vf09, vf00, vf06 + nop | suby.z vf09, vf00, vf06 + nop | ftoi4.xyzw vf17, vf17 + nop | subw.w vf09, vf00, vf00 + nop | subz.x vf10, vf00, vf06 + nop | addw.y vf10, vf00, vf06 + sq.xyzw vf17, 11(vi05) | addx.z vf10, vf00, vf06 + xgkick vi15 | subw.w vf10, vf00, vf00 + iaddi vi04, vi04, -0x1 | addy.x vf11, vf00, vf06 + iaddiu vi01, vi00, 0x672 | subx.y vf11, vf00, vf06 + ibne vi00, vi04, L12 | addw.z vf11, vf00, vf06 + isub vi15, vi01, vi15 | subw.w vf11, vf00, vf00 + nop | nop :e + nop | nop +L13: + iaddi vi04, vi04, -0x1 | nop + nop | nop + ibne vi00, vi04, L11 | nop + nop | nop + nop | nop :e + nop | nop +L14: + iaddi vi04, vi04, -0x1 | nop + iaddi vi03, vi03, 0x2 | nop + ibne vi00, vi04, L11 | nop + nop | nop + nop | nop :e + nop | nop +L15: + iaddi vi04, vi04, -0x1 | nop + iaddi vi03, vi03, 0x5 | nop + ibne vi00, vi04, L11 | nop + iaddi vi02, vi02, 0x3 | nop + nop | nop :e + nop | nop +L16: + fcor vi01, 0x7df7df | nop + ibne vi00, vi01, L13 | nop + fcor vi01, 0xdf7df7 | nop + ibne vi00, vi01, L13 | nop + fcor vi01, 0xefbefb | nop + ibne vi00, vi01, L13 | nop + fcor vi01, 0xf7df7d | nop + ibne vi00, vi01, L13 | nop + fcor vi01, 0xfbefbe | nop + ibne vi00, vi01, L13 | nop + ior vi07, vi05, vi00 | nop + nop | itof0.xyzw vf07, vf07 + sq.xyzw vf09, 2(vi07) | nop + sq.xyzw vf10, 5(vi07) | nop + sq.xyzw vf11, 8(vi07) | nop + sq.xyzw vf12, 11(vi07) | nop + sq.xyzw vf09, 14(vi07) | nop + lq.xyzw vf18, 988(vi00) | nop + lq.xyzw vf19, 989(vi00) | nop + lq.xyzw vf20, 990(vi00) | nop + lq.xyzw vf21, 991(vi00) | nop + sq.xyzw vf18, 0(vi07) | nop + sq.xyzw vf19, 3(vi07) | nop + sq.xyzw vf20, 6(vi07) | nop + sq.xyzw vf21, 9(vi07) | nop + sq.xyzw vf18, 12(vi07) | nop + sq.xyzw vf07, 1(vi07) | nop + sq.xyzw vf07, 4(vi07) | nop + sq.xyzw vf07, 7(vi07) | nop + sq.xyzw vf07, 10(vi07) | nop + sq.xyzw vf07, 13(vi07) | nop + iaddi vi09, vi00, 0x4 | nop + bal vi11, L18 | nop + nop | nop + lq.xyzw vf01, 1014(vi00) | nop + ibeq vi00, vi09, L13 | nop + iaddiu vi10, vi09, 0x4000 | nop + iaddiu vi10, vi10, 0x4000 | nop + sqd.xyzw vf01, vi05 | nop + iswr.x vi10, vi05 | nop + iaddi vi05, vi05, 0x1 | nop + lq.xyzw vf29, 1015(vi00) | nop +L17: + lqi.xyzw vf17, vi05 | nop + lqi.xyzw vf20, vi05 | nop + lqi.xyzw vf14, vi05 | nop + nop | nop + nop | nop + nop | nop + div Q, vf00.w, vf14.w | mul.xyzw vf14, vf14, vf29 + nop | nop + nop | nop + nop | nop + nop | nop + nop | nop + nop | nop + nop | mul.xyz vf14, vf14, Q + nop | mul.xyzw vf17, vf17, Q + nop | nop + nop | nop + nop | add.xyzw vf14, vf14, vf30 + nop | nop + nop | nop + nop | nop + nop | maxx.w vf14, vf14, vf23 + nop | nop + nop | nop + nop | nop + nop | miniy.w vf14, vf14, vf23 + nop | nop + nop | nop + nop | ftoi0.xyzw vf20, vf20 + nop | ftoi4.xyzw vf14, vf14 + nop | nop + sq.xyzw vf17, -3(vi05) | nop + sq.xyzw vf20, -2(vi05) | nop + sq.xyzw vf14, -1(vi05) | nop + iaddi vi09, vi09, -0x1 | nop + nop | nop + ibne vi00, vi09, L17 | nop + nop | nop + lq.xyzw vf29, 996(vi00) | nop + xgkick vi15 | nop + iaddi vi04, vi04, -0x1 | nop + iaddiu vi01, vi00, 0x672 | nop + ibne vi00, vi04, L11 | nop + isub vi15, vi01, vi15 | nop + nop | nop :e + nop | nop +L18: + ior vi08, vi07, vi00 | nop + lq.xyzw vf14, 2(vi07) | nop + ior vi10, vi09, vi00 | nop + lq.xyzw vf17, 0(vi07) | nop + lq.xyzw vf20, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14 +L19: + lq.xyzw vf15, 2(vi07) | nop + lq.xyzw vf18, 0(vi07) | nop + lq.xyzw vf21, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | nop + nop | clipw.xyz vf15, vf15 + nop | nop + nop | nop + nop | nop + fcor vi01, 0xfff7df | nop + ibne vi00, vi01, L30 | nop + fcand vi01, 0x20 | nop + ibne vi00, vi01, L31 | nop + fcand vi01, 0x800 | nop + ibne vi00, vi01, L32 | nop + nop | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop +L20: + move.xyzw vf17, vf18 | nop + iaddi vi09, vi09, -0x1 | nop + move.xyzw vf20, vf21 | nop + ibne vi00, vi09, L19 | nop + move.xyzw vf14, vf15 | nop + lq.xyzw vf17, 0(vi05) | nop + lq.xyzw vf20, 1(vi05) | nop + lq.xyzw vf14, 2(vi05) | nop + ior vi07, vi05, vi00 | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop + ibeq vi00, vi10, L29 | nop + ior vi09, vi10, vi00 | nop + ior vi08, vi07, vi00 | nop + lq.xyzw vf14, 2(vi07) | nop + ior vi10, vi09, vi00 | nop + lq.xyzw vf17, 0(vi07) | nop + lq.xyzw vf20, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14 +L21: + lq.xyzw vf15, 2(vi07) | nop + lq.xyzw vf18, 0(vi07) | nop + lq.xyzw vf21, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | nop + nop | clipw.xyz vf15, vf15 + nop | nop + nop | nop + nop | nop + fcor vi01, 0xfffdf7 | nop + ibne vi00, vi01, L33 | nop + fcand vi01, 0x8 | nop + ibne vi00, vi01, L34 | nop + fcand vi01, 0x200 | nop + ibne vi00, vi01, L35 | nop + nop | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop +L22: + move.xyzw vf17, vf18 | nop + iaddi vi09, vi09, -0x1 | nop + move.xyzw vf20, vf21 | nop + ibne vi00, vi09, L21 | nop + move.xyzw vf14, vf15 | nop + lq.xyzw vf17, 0(vi05) | nop + lq.xyzw vf20, 1(vi05) | nop + lq.xyzw vf14, 2(vi05) | nop + ior vi07, vi05, vi00 | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop + ibeq vi00, vi10, L29 | nop + ior vi09, vi10, vi00 | nop + ior vi08, vi07, vi00 | nop + lq.xyzw vf14, 2(vi07) | nop + ior vi10, vi09, vi00 | nop + lq.xyzw vf17, 0(vi07) | nop + lq.xyzw vf20, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14 +L23: + lq.xyzw vf15, 2(vi07) | nop + lq.xyzw vf18, 0(vi07) | nop + lq.xyzw vf21, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | nop + nop | clipw.xyz vf15, vf15 + nop | nop + nop | nop + nop | nop + fcor vi01, 0xfffefb | nop + ibne vi00, vi01, L36 | nop + fcand vi01, 0x4 | nop + ibne vi00, vi01, L37 | nop + fcand vi01, 0x100 | nop + ibne vi00, vi01, L38 | nop + nop | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop +L24: + move.xyzw vf17, vf18 | nop + iaddi vi09, vi09, -0x1 | nop + move.xyzw vf20, vf21 | nop + ibne vi00, vi09, L23 | nop + move.xyzw vf14, vf15 | nop + lq.xyzw vf17, 0(vi05) | nop + lq.xyzw vf20, 1(vi05) | nop + lq.xyzw vf14, 2(vi05) | nop + ior vi07, vi05, vi00 | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop + ibeq vi00, vi10, L29 | nop + ior vi09, vi10, vi00 | nop + ior vi08, vi07, vi00 | nop + lq.xyzw vf14, 2(vi07) | nop + ior vi10, vi09, vi00 | nop + lq.xyzw vf17, 0(vi07) | nop + lq.xyzw vf20, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14 +L25: + lq.xyzw vf15, 2(vi07) | nop + lq.xyzw vf18, 0(vi07) | nop + lq.xyzw vf21, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | nop + nop | clipw.xyz vf15, vf15 + nop | nop + nop | nop + nop | nop + fcor vi01, 0xffff7d | nop + ibne vi00, vi01, L39 | nop + fcand vi01, 0x2 | nop + ibne vi00, vi01, L40 | nop + fcand vi01, 0x80 | nop + ibne vi00, vi01, L41 | nop + nop | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop +L26: + move.xyzw vf17, vf18 | nop + iaddi vi09, vi09, -0x1 | nop + move.xyzw vf20, vf21 | nop + ibne vi00, vi09, L25 | nop + move.xyzw vf14, vf15 | nop + lq.xyzw vf17, 0(vi05) | nop + lq.xyzw vf20, 1(vi05) | nop + lq.xyzw vf14, 2(vi05) | nop + ior vi07, vi05, vi00 | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop + ibeq vi00, vi10, L29 | nop + ior vi09, vi10, vi00 | nop + ior vi08, vi07, vi00 | nop + lq.xyzw vf14, 2(vi07) | nop + ior vi10, vi09, vi00 | nop + lq.xyzw vf17, 0(vi07) | nop + lq.xyzw vf20, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14 +L27: + lq.xyzw vf15, 2(vi07) | nop + lq.xyzw vf18, 0(vi07) | nop + lq.xyzw vf21, 1(vi07) | nop + iaddi vi07, vi07, 0x3 | nop + nop | clipw.xyz vf15, vf15 + nop | nop + nop | nop + nop | nop + fcor vi01, 0xffffbe | nop + ibne vi00, vi01, L42 | nop + fcand vi01, 0x1 | nop + ibne vi00, vi01, L43 | nop + fcand vi01, 0x40 | nop + ibne vi00, vi01, L44 | nop + nop | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop +L28: + move.xyzw vf17, vf18 | nop + iaddi vi09, vi09, -0x1 | nop + move.xyzw vf20, vf21 | nop + ibne vi00, vi09, L27 | nop + move.xyzw vf14, vf15 | nop + lq.xyzw vf17, 0(vi05) | nop + lq.xyzw vf20, 1(vi05) | nop + lq.xyzw vf14, 2(vi05) | nop + ior vi07, vi05, vi00 | nop + sqi.xyzw vf17, vi08 | nop + sqi.xyzw vf20, vi08 | nop + sqi.xyzw vf14, vi08 | nop + ibeq vi00, vi10, L29 | nop + ior vi09, vi10, vi00 | nop +L29: + jr vi11 | nop + nop | nop +L30: + b L20 | nop + iaddi vi10, vi10, -0x1 | nop +L31: + sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14 + sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17 + sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20 + ibeq vi07, vi08, L20 | nop + nop | addz.w vf13, vf16, vf16 + nop | addw.z vf13, vf14, vf14 + div Q, vf13.z, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | sub.xyzw vf19, vf17, vf19 + nop | sub.xyzw vf22, vf20, vf22 + nop | sub.xyzw vf16, vf14, vf16 + iaddi vi10, vi10, 0x1 | nop + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L20 | nop + sqi.xyzw vf16, vi08 | nop +L32: + nop | sub.xyzw vf16, vf14, vf15 + nop | sub.xyzw vf19, vf17, vf18 + nop | sub.xyzw vf22, vf20, vf21 + nop | addz.w vf13, vf16, vf16 + nop | addw.z vf13, vf15, vf15 + div Q, vf13.z, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | sub.xyzw vf19, vf18, vf19 + nop | sub.xyzw vf22, vf21, vf22 + nop | sub.xyzw vf16, vf15, vf16 + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L20 | nop + sqi.xyzw vf16, vi08 | nop +L33: + b L22 | nop + iaddi vi10, vi10, -0x1 | nop +L34: + sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14 + sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17 + sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20 + ibeq vi07, vi08, L22 | nop + nop | addy.w vf13, vf16, vf16 + nop | addw.y vf13, vf14, vf14 + div Q, vf13.y, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | sub.xyzw vf19, vf17, vf19 + nop | sub.xyzw vf22, vf20, vf22 + nop | sub.xyzw vf16, vf14, vf16 + iaddi vi10, vi10, 0x1 | nop + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L22 | nop + sqi.xyzw vf16, vi08 | nop +L35: + nop | sub.xyzw vf16, vf14, vf15 + nop | sub.xyzw vf19, vf17, vf18 + nop | sub.xyzw vf22, vf20, vf21 + nop | addy.w vf13, vf16, vf16 + nop | addw.y vf13, vf15, vf15 + div Q, vf13.y, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | sub.xyzw vf19, vf18, vf19 + nop | sub.xyzw vf22, vf21, vf22 + nop | sub.xyzw vf16, vf15, vf16 + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L22 | nop + sqi.xyzw vf16, vi08 | nop +L36: + b L24 | nop + iaddi vi10, vi10, -0x1 | nop +L37: + sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14 + sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17 + sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20 + ibeq vi07, vi08, L24 | nop + nop | suby.w vf13, vf16, vf16 + nop | subw.y vf13, vf14, vf14 + div Q, vf13.y, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | add.xyzw vf19, vf17, vf19 + nop | add.xyzw vf22, vf20, vf22 + nop | add.xyzw vf16, vf14, vf16 + iaddi vi10, vi10, 0x1 | nop + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L24 | nop + sqi.xyzw vf16, vi08 | nop +L38: + nop | sub.xyzw vf16, vf14, vf15 + nop | sub.xyzw vf19, vf17, vf18 + nop | sub.xyzw vf22, vf20, vf21 + nop | suby.w vf13, vf16, vf16 + nop | subw.y vf13, vf15, vf15 + div Q, vf13.y, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | add.xyzw vf19, vf18, vf19 + nop | add.xyzw vf22, vf21, vf22 + nop | add.xyzw vf16, vf15, vf16 + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L24 | nop + sqi.xyzw vf16, vi08 | nop +L39: + b L26 | nop + iaddi vi10, vi10, -0x1 | nop +L40: + sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14 + sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17 + sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20 + ibeq vi07, vi08, L26 | nop + nop | addx.w vf13, vf16, vf16 + nop | addw.x vf13, vf14, vf14 + div Q, vf13.x, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | sub.xyzw vf19, vf17, vf19 + nop | sub.xyzw vf22, vf20, vf22 + nop | sub.xyzw vf16, vf14, vf16 + iaddi vi10, vi10, 0x1 | nop + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L26 | nop + sqi.xyzw vf16, vi08 | nop +L41: + nop | sub.xyzw vf16, vf14, vf15 + nop | sub.xyzw vf19, vf17, vf18 + nop | sub.xyzw vf22, vf20, vf21 + nop | addx.w vf13, vf16, vf16 + nop | addw.x vf13, vf15, vf15 + div Q, vf13.x, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | sub.xyzw vf19, vf18, vf19 + nop | sub.xyzw vf22, vf21, vf22 + nop | sub.xyzw vf16, vf15, vf16 + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L26 | nop + sqi.xyzw vf16, vi08 | nop +L42: + b L28 | nop + iaddi vi10, vi10, -0x1 | nop +L43: + sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14 + sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17 + sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20 + ibeq vi07, vi08, L28 | nop + nop | subx.w vf13, vf16, vf16 + nop | subw.x vf13, vf14, vf14 + div Q, vf13.x, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | add.xyzw vf19, vf17, vf19 + nop | add.xyzw vf22, vf20, vf22 + nop | add.xyzw vf16, vf14, vf16 + iaddi vi10, vi10, 0x1 | nop + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L28 | nop + sqi.xyzw vf16, vi08 | nop +L44: + nop | sub.xyzw vf16, vf14, vf15 + nop | sub.xyzw vf19, vf17, vf18 + nop | sub.xyzw vf22, vf20, vf21 + nop | subx.w vf13, vf16, vf16 + nop | subw.x vf13, vf15, vf15 + div Q, vf13.x, vf13.w | nop + waitq | nop + nop | mul.xyzw vf19, vf19, Q + nop | mul.xyzw vf22, vf22, Q + nop | mul.xyzw vf16, vf16, Q + nop | add.xyzw vf19, vf18, vf19 + nop | add.xyzw vf22, vf21, vf22 + nop | add.xyzw vf16, vf15, vf16 + sqi.xyzw vf19, vi08 | nop + sqi.xyzw vf22, vi08 | nop + b L28 | nop + sqi.xyzw vf16, vi08 | nop diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index 0eee1117cf..92e481118d 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -60,6 +60,8 @@ set(RUNTIME_SOURCE kernel/ksound.cpp mips2c/mips2c_table.cpp mips2c/functions/draw_string.cpp + mips2c/functions/sparticle.cpp + mips2c/functions/sparticle_launcher.cpp mips2c/functions/test_func.cpp overlord/dma.cpp overlord/fake_iso.cpp @@ -82,9 +84,12 @@ set(RUNTIME_SOURCE graphics/dma/dma_copy.cpp graphics/dma/gs.cpp graphics/opengl_renderer/BucketRenderer.cpp + graphics/opengl_renderer/debug_gui.cpp graphics/opengl_renderer/DirectRenderer.cpp graphics/opengl_renderer/OpenGLRenderer.cpp graphics/opengl_renderer/Shader.cpp + graphics/opengl_renderer/SpriteRenderer.cpp + graphics/opengl_renderer/TextureUploadHandler.cpp graphics/texture/TextureConverter.cpp graphics/texture/TexturePool.cpp graphics/pipelines/opengl.cpp diff --git a/game/fake_iso.txt b/game/fake_iso.txt index 92999e9522..31fb17476b 100644 --- a/game/fake_iso.txt +++ b/game/fake_iso.txt @@ -10,6 +10,10 @@ TWEAKVAL.MUS resources/TWEAKVAL.MUS VAGDIR.AYB resources/VAGDIR.AYB SCREEN1.USA resources/SCREEN1.USA 0COMMON.TXT out/iso/0COMMON.TXT +1COMMON.TXT out/iso/1COMMON.TXT +2COMMON.TXT out/iso/2COMMON.TXT +3COMMON.TXT out/iso/3COMMON.TXT +4COMMON.TXT out/iso/4COMMON.TXT 5COMMON.TXT out/iso/5COMMON.TXT 0TEST.TXT out/iso/0TEST.TXT VI1.DGO out/iso/VI1.DGO diff --git a/game/graphics/dma/dma.cpp b/game/graphics/dma/dma.cpp index 2094a0e39a..a87a75447d 100644 --- a/game/graphics/dma/dma.cpp +++ b/game/graphics/dma/dma.cpp @@ -21,9 +21,10 @@ std::string VifCode::print() { case Kind::NOP: result = "NOP"; break; - case Kind::STCYCL: - result = "STCYCL"; - break; + case Kind::STCYCL: { + VifCodeStcycl stcycl(immediate); + result = fmt::format("STCYCL cl: {} wl: {}", stcycl.cl, stcycl.wl); + } break; case Kind::OFFSET: result = "OFFSET"; break; @@ -48,7 +49,6 @@ std::string VifCode::print() { case Kind::FLUSH: result = "FLUSH"; break; - case Kind::FLUSHA: result = "FLUSHA"; break; @@ -81,7 +81,8 @@ std::string VifCode::print() { break; default: fmt::print("Unhandled vif code {}", (int)kind); - assert(false); + result = "???"; + // assert(false); break; } // TODO: the rest of the VIF code. diff --git a/game/graphics/dma/dma.h b/game/graphics/dma/dma.h index a269bbf630..7517279fb2 100644 --- a/game/graphics/dma/dma.h +++ b/game/graphics/dma/dma.h @@ -10,6 +10,15 @@ #include "common/util/assert.h" #include "common/common_types.h" +struct DmaStats { + double sync_time_ms = 0; + int num_tags = 0; + int num_data_bytes = 0; + int num_chunks = 0; + int num_copied_bytes = 0; + int num_fixups = 0; +}; + struct DmaTag { enum class Kind : u8 { REFE = 0, @@ -45,6 +54,7 @@ struct VifCode { BASE = 0b11, ITOP = 0b100, STMOD = 0b101, + PC_PORT = 0b1000, // not a valid PS2 VIF code, but we use this to signal PC-PORT specific stuff MSK3PATH = 0b110, MARK = 0b111, FLUSHE = 0b10000, @@ -59,7 +69,8 @@ struct VifCode { MPG = 0b1001010, DIRECT = 0b1010000, DIRECTHL = 0b1010001, - UNPACK_MASK = 0b1100000 // unpack is a bunch of commands. + UNPACK_MASK = 0b1100000, // unpack is a bunch of commands. + UNPACK_V4_32 = 0b1101100, }; VifCode(u32 value) { @@ -76,3 +87,25 @@ struct VifCode { std::string print(); }; + +struct VifCodeStcycl { + explicit VifCodeStcycl(const VifCode& code) { + cl = code.immediate & 0xff; + wl = (code.immediate >> 8); + } + + u16 cl; + u16 wl; +}; + +struct VifCodeUnpack { + explicit VifCodeUnpack(const VifCode& code) { + addr_qw = code.immediate & 0b1111111111; + is_unsigned = (code.immediate & (1 << 14)); + use_tops_flag = (code.immediate & (1 << 15)); + } + + u16 addr_qw; + bool is_unsigned; // only care for 8/16 bit data. + bool use_tops_flag; // uses double buffering +}; \ No newline at end of file diff --git a/game/graphics/dma/dma_chain_read.h b/game/graphics/dma/dma_chain_read.h index 00114a7ab7..f472f57266 100644 --- a/game/graphics/dma/dma_chain_read.h +++ b/game/graphics/dma/dma_chain_read.h @@ -28,6 +28,9 @@ struct DmaTransfer { u32 vif0() const { return transferred_tag & 0xffffffff; } u32 vif1() const { return (transferred_tag >> 32) & 0xffffffff; } + + VifCode vifcode0() const { return VifCode(vif0()); } + VifCode vifcode1() const { return VifCode(vif1()); } }; class DmaFollower { diff --git a/game/graphics/dma/dma_copy.cpp b/game/graphics/dma/dma_copy.cpp index 4fd570caa7..6e3dfda236 100644 --- a/game/graphics/dma/dma_copy.cpp +++ b/game/graphics/dma/dma_copy.cpp @@ -1,7 +1,9 @@ +#include "common/goal_constants.h" #include "game/graphics/dma/dma_chain_read.h" #include "dma_copy.h" #include "third-party/fmt/core.h" +#include "common/util/Timer.h" /*! * Convert a DMA chain to an array of bytes that can be directly fed to VIF. @@ -27,6 +29,11 @@ std::vector flatten_dma(const DmaFollower& in) { return result; } +void FixedChunkDmaCopier::serialize_last_result(Serializer& serializer) { + serializer.from_ptr(&m_result.start_offset); + serializer.from_pod_vector(&m_result.data); +} + FixedChunkDmaCopier::FixedChunkDmaCopier(u32 main_memory_size) : m_main_memory_size(main_memory_size), m_chunk_count(main_memory_size / chunk_size) { assert(chunk_size * m_chunk_count == m_main_memory_size); // make sure the memory size is valid. @@ -35,15 +42,20 @@ FixedChunkDmaCopier::FixedChunkDmaCopier(u32 main_memory_size) } const DmaData& FixedChunkDmaCopier::run(const void* memory, u32 offset, bool verify) { + Timer timer; + m_input_offset = offset; + m_input_data = memory; std::fill(m_chunk_mask.begin(), m_chunk_mask.end(), false); m_fixups.clear(); m_result.data.clear(); + m_result.stats = DmaStats(); m_result.start_offset = 0; DmaFollower dma(memory, offset); while (!dma.ended()) { auto tag_offset = dma.current_tag_offset(); auto tag = dma.current_tag(); + m_result.stats.num_tags++; // first, make sure we get this tag: u32 tag_chunk_idx = tag_offset / chunk_size; @@ -51,6 +63,7 @@ const DmaData& FixedChunkDmaCopier::run(const void* memory, u32 offset, bool ver m_chunk_mask.at(tag_chunk_idx) = true; if (tag.addr) { + assert(tag.addr > EE_MAIN_MEM_LOW_PROTECT); u32 addr_chunk_idx = tag.addr / chunk_size; u32 addr_offset_in_chunk = tag.addr % chunk_size; // next, make sure that we get the address (if applicable) @@ -66,6 +79,7 @@ const DmaData& FixedChunkDmaCopier::run(const void* memory, u32 offset, bool ver auto transfer = dma.read_and_advance(); if (transfer.size_bytes) { + m_result.stats.num_data_bytes += transfer.size_bytes; u32 initial_chunk = transfer.data_offset / chunk_size; m_chunk_mask.at(initial_chunk) = true; s32 bytes_remaining = transfer.size_bytes; @@ -89,6 +103,9 @@ const DmaData& FixedChunkDmaCopier::run(const void* memory, u32 offset, bool ver } m_result.data.resize(current_out_chunk * chunk_size); + m_result.stats.num_chunks = current_out_chunk; + m_result.stats.num_copied_bytes = m_result.data.size(); + m_result.stats.num_fixups = m_fixups.size(); // copy for (u32 chunk_idx = 0; chunk_idx < m_chunk_mask.size(); chunk_idx++) { @@ -119,5 +136,6 @@ const DmaData& FixedChunkDmaCopier::run(const void* memory, u32 offset, bool ver } } + m_result.stats.sync_time_ms = timer.getMs(); return m_result; } \ No newline at end of file diff --git a/game/graphics/dma/dma_copy.h b/game/graphics/dma/dma_copy.h index fff89a06b6..e0dd12851f 100644 --- a/game/graphics/dma/dma_copy.h +++ b/game/graphics/dma/dma_copy.h @@ -4,10 +4,12 @@ #include "common/common_types.h" #include "game/graphics/dma/dma_chain_read.h" +#include "common/util/Serializer.h" struct DmaData { u32 start_offset = 0; std::vector data; + DmaStats stats; }; /*! @@ -21,8 +23,14 @@ class FixedChunkDmaCopier { FixedChunkDmaCopier(u32 main_memory_size); const DmaData& run(const void* memory, u32 offset, bool verify = false); + + void serialize_last_result(Serializer& serializer); + const DmaData& get_last_result() const { return m_result; } + const void* get_last_input_data() const { return m_input_data; } + u32 get_last_input_offset() const { return m_input_offset; } + private: struct Fixup { u32 source_chunk; @@ -36,6 +44,9 @@ class FixedChunkDmaCopier { u32 m_chunk_count = 0; std::vector m_chunk_mask; DmaData m_result; + + u32 m_input_offset = 0; + const void* m_input_data = nullptr; }; /*! diff --git a/game/graphics/dma/gs.cpp b/game/graphics/dma/gs.cpp index 1411bccd93..48af4a4f25 100644 --- a/game/graphics/dma/gs.cpp +++ b/game/graphics/dma/gs.cpp @@ -348,4 +348,8 @@ std::string GsTex0::print() const { return fmt::format( "tbp0: {} tbw: {} psm: {} tw: {} th: {} tcc: {} tfx: {} cbp: {} cpsm: {} csm: {}\n", tbp0(), tbw(), psm(), tw(), th(), tcc(), tfx(), cbp(), cpsm(), csm()); +} + +std::string GsPrim::print() const { + return fmt::format("0x{:x}, kind {}\n", data, kind()); } \ No newline at end of file diff --git a/game/graphics/dma/gs.h b/game/graphics/dma/gs.h index 9f3cd650f3..7c50d04490 100644 --- a/game/graphics/dma/gs.h +++ b/game/graphics/dma/gs.h @@ -54,10 +54,15 @@ struct GifTag { std::string print() const; GifTag(const u8* ptr) { memcpy(data, ptr, 16); } + GifTag() = default; u64 data[2]; }; +struct AdGif { + GifTag giftag[5]; +}; + std::string reg_descriptor_name(GifTag::RegisterDescriptor reg); enum class GsRegisterAddress : u8 { @@ -247,6 +252,8 @@ struct GsPrim { bool operator==(const GsPrim& other) const { return data == other.data; } bool operator!=(const GsPrim& other) const { return data != other.data; } + + std::string print() const; }; struct GsTex0 { diff --git a/game/graphics/opengl_renderer/BucketRenderer.h b/game/graphics/opengl_renderer/BucketRenderer.h index b9e8fc351a..a1ec0b1e27 100644 --- a/game/graphics/opengl_renderer/BucketRenderer.h +++ b/game/graphics/opengl_renderer/BucketRenderer.h @@ -12,7 +12,13 @@ enum class BucketId { BUCKET0 = 0, BUCKET1 = 1, + TFRAG_TEX_LEVEL0 = 5, + SHRUB_TEX_LEVEL0 = 19, + ALPHA_TEX_LEVEL0 = 31, + PRIS_TEX_LEVEL0 = 48, + WATER_TEX_LEVEL0 = 57, // ... + PRE_SPRITE_TEX = 65, // maybe it's just common textures? SPRITE = 66, DEBUG_DRAW_0 = 67, DEBUG_DRAW_1 = 68, @@ -31,6 +37,10 @@ struct SharedRenderState { u32 buckets_base = 0; // address of buckets array. u32 next_bucket = 0; // address of next bucket that we haven't started rendering in buckets u32 default_regs_buffer = 0; // address of the default regs chain. + + void* ee_main_memory = nullptr; + u32 offset_of_s7; + bool dump_playback = false; }; /*! @@ -44,7 +54,8 @@ class BucketRenderer { virtual ~BucketRenderer() = default; bool& enabled() { return m_enabled; } virtual bool empty() const { return false; } - virtual void draw_debug_window() {} + virtual void draw_debug_window() = 0; + virtual void serialize(Serializer&) {} protected: std::string m_name; @@ -60,4 +71,5 @@ class EmptyBucketRenderer : public BucketRenderer { EmptyBucketRenderer(const std::string& name, BucketId my_id); void render(DmaFollower& dma, SharedRenderState* render_state) override; bool empty() const override { return true; } + void draw_debug_window() override {} }; \ No newline at end of file diff --git a/game/graphics/opengl_renderer/DirectRenderer.cpp b/game/graphics/opengl_renderer/DirectRenderer.cpp index aa6f7c8a3b..72b7b66a41 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.cpp +++ b/game/graphics/opengl_renderer/DirectRenderer.cpp @@ -5,8 +5,8 @@ #include "game/graphics/pipelines/opengl.h" #include "third-party/imgui/imgui.h" -DirectRenderer::DirectRenderer(const std::string& name, BucketId my_id, int batch_size) - : BucketRenderer(name, my_id), m_prim_buffer(batch_size) { +DirectRenderer::DirectRenderer(const std::string& name, BucketId my_id, int batch_size, Mode mode) + : BucketRenderer(name, my_id), m_prim_buffer(batch_size), m_mode(mode) { glGenBuffers(1, &m_ogl.vertex_buffer); glGenBuffers(1, &m_ogl.color_buffer); glGenBuffers(1, &m_ogl.st_buffer); @@ -35,9 +35,6 @@ DirectRenderer::~DirectRenderer() { * Render from a DMA bucket. */ void DirectRenderer::render(DmaFollower& dma, SharedRenderState* render_state) { - m_triangles = 0; - m_draw_calls = 0; - // if we're rendering from a bucket, we should start off we a totally reset state: reset_state(); setup_common_state(render_state); @@ -66,11 +63,32 @@ void DirectRenderer::draw_debug_window() { ImGui::Checkbox("Wireframe", &m_debug_state.wireframe); ImGui::SameLine(); ImGui::Checkbox("No-texture", &m_debug_state.disable_texture); + ImGui::SameLine(); + ImGui::Checkbox("red", &m_debug_state.red); + ImGui::SameLine(); + ImGui::Checkbox("always", &m_debug_state.always_draw); + + if (m_mode == Mode::SPRITE_CPU) { + ImGui::Checkbox("draw1", &m_sprite_mode.do_first_draw); + ImGui::SameLine(); + ImGui::Checkbox("draw2", &m_sprite_mode.do_second_draw); + } + ImGui::Text("Triangles: %d", m_triangles); ImGui::SameLine(); ImGui::Text("Draws: %d", m_draw_calls); } +float u32_to_float(u32 in) { + double x = (double)in / UINT32_MAX; + return x; +} + +float u32_to_sc(u32 in) { + float flt = u32_to_float(in); + return (flt - 0.5) * 16.0; +} + void DirectRenderer::flush_pending(SharedRenderState* render_state) { if (m_prim_buffer.vert_count == 0) { return; @@ -92,6 +110,11 @@ void DirectRenderer::flush_pending(SharedRenderState* render_state) { m_test_state_needs_gl_update = false; } + if (m_texture_state.needs_gl_update) { + update_gl_texture(render_state); + m_texture_state.needs_gl_update = false; + } + if (m_debug_state.wireframe) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); } else { @@ -103,9 +126,16 @@ void DirectRenderer::flush_pending(SharedRenderState* render_state) { render_state->shaders[ShaderId::DIRECT_BASIC].activate(); } + if (m_debug_state.red) { + render_state->shaders[ShaderId::DEBUG_RED].activate(); + glDisable(GL_BLEND); + } + // hacks - // glEnable(GL_DEPTH_TEST); - // glDepthFunc(GL_ALWAYS); + if (m_debug_state.always_draw) { + glDisable(GL_DEPTH_TEST); + glDepthFunc(GL_ALWAYS); + } GLuint vao; glGenVertexArrays(1, &vao); @@ -157,10 +187,30 @@ void DirectRenderer::flush_pending(SharedRenderState* render_state) { glActiveTexture(GL_TEXTURE0); } // assert(false); - glDrawArrays(GL_TRIANGLES, 0, m_prim_buffer.vert_count); + + int draw_count = 0; + if (m_mode == Mode::SPRITE_CPU) { + assert(m_texture_state.tcc); + assert(m_prim_gl_state.texture_enable); + if (m_sprite_mode.do_first_draw) { + glDrawArrays(GL_TRIANGLES, 0, m_prim_buffer.vert_count); + draw_count++; + } + if (m_sprite_mode.do_second_draw) { + render_state->shaders[ShaderId::SPRITE_CPU_AFAIL].activate(); + glDepthMask(GL_FALSE); + glDrawArrays(GL_TRIANGLES, 0, m_prim_buffer.vert_count); + glDepthMask(GL_TRUE); + draw_count++; + } + } else { + glDrawArrays(GL_TRIANGLES, 0, m_prim_buffer.vert_count); + draw_count++; + } + glBindVertexArray(0); - m_triangles += m_prim_buffer.vert_count / 3; - m_draw_calls++; + m_triangles += draw_count * (m_prim_buffer.vert_count / 3); + m_draw_calls += draw_count; m_prim_buffer.vert_count = 0; glDeleteVertexArrays(1, &vao); @@ -170,7 +220,15 @@ void DirectRenderer::update_gl_prim(SharedRenderState* render_state) { // currently gouraud is handled in setup. const auto& state = m_prim_gl_state; if (state.texture_enable) { - render_state->shaders[ShaderId::DIRECT_BASIC_TEXTURED].activate(); + if (m_texture_state.tcc) { + if (m_mode == Mode::SPRITE_CPU) { + render_state->shaders[ShaderId::SPRITE_CPU].activate(); + } else { + render_state->shaders[ShaderId::DIRECT_BASIC_TEXTURED].activate(); + } + } else { + render_state->shaders[ShaderId::DIRECT_BASIC_TEXTURED_TCC0].activate(); + } update_gl_texture(render_state); } else { render_state->shaders[ShaderId::DIRECT_BASIC].activate(); @@ -209,9 +267,9 @@ void DirectRenderer::update_gl_texture(SharedRenderState* render_state) { glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, tex->gpu_texture); - // TODO these wrappings are probably wrong. - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + // Note: CLAMP and CLAMP_TO_EDGE are different... + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glUniform1i( @@ -227,14 +285,24 @@ void DirectRenderer::update_gl_blend() { glEnable(GL_BLEND); // s, d glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } else if (state.a == GsAlpha::BlendMode::SOURCE && + state.b == GsAlpha::BlendMode::ZERO_OR_FIXED && + state.c == GsAlpha::BlendMode::SOURCE && state.d == GsAlpha::BlendMode::DEST) { + // (Cs - 0) * As + Cd + // Cs * As + (1) * CD + glEnable(GL_BLEND); + // s, d + glBlendFunc(GL_SRC_ALPHA, GL_ONE); } else { - fmt::print("unsupported blend\n"); + lg::error("unsupported blend: a {} b {} c {} d {}\n", (int)state.a, (int)state.b, (int)state.c, + (int)state.d); assert(false); } } void DirectRenderer::update_gl_test() { const auto& state = m_test_state; + glEnable(GL_DEPTH_TEST); if (state.zte) { switch (state.ztst) { case GsTest::ZTest::NEVER: @@ -263,6 +331,12 @@ void DirectRenderer::update_gl_test() { if (state.alpha_test_enable) { assert(false); } + + if (state.depth_writes) { + glDepthMask(GL_TRUE); + } else { + glDepthMask(GL_FALSE); + } } void DirectRenderer::setup_common_state(SharedRenderState* /*render_state*/) { @@ -345,9 +419,10 @@ void DirectRenderer::render_gif(const u8* data, u32 size, SharedRenderState* ren u32 offset = 0; while (!eop) { + assert(offset < size); GifTag tag(data + offset); offset += 16; - // fmt::print("Tag: {}\n", tag.print()); + // fmt::print("Tag at offset {}: {}\n", offset, tag.print()); // unpack registers. // faster to do it once outside of the nloop loop. @@ -377,6 +452,12 @@ void DirectRenderer::render_gif(const u8* data, u32 size, SharedRenderState* ren case GifTag::RegisterDescriptor::XYZF2: handle_xyzf2_packed(data + offset, render_state); break; + case GifTag::RegisterDescriptor::PRIM: + handle_prim_packed(data + offset, render_state); + break; + case GifTag::RegisterDescriptor::TEX0_1: + handle_tex0_1_packed(data + offset, render_state); + break; default: fmt::print("Register {} is not supported in packed mode yet\n", reg_descriptor_name(reg_desc[reg])); @@ -430,7 +511,7 @@ void DirectRenderer::handle_ad(const u8* data, SharedRenderState* render_state) switch (addr) { case GsRegisterAddress::ZBUF_1: - handle_zbuf1(value); + handle_zbuf1(value, render_state); break; case GsRegisterAddress::TEST_1: handle_test1(value, render_state); @@ -466,6 +547,9 @@ void DirectRenderer::handle_ad(const u8* data, SharedRenderState* render_state) case GsRegisterAddress::TEX0_1: handle_tex0_1(value, render_state); break; + case GsRegisterAddress::MIPTBP1_1: + // TODO this has the address of different mip levels. + break; default: fmt::print("Address {} is not supported\n", register_address_name(addr)); assert(false); @@ -475,19 +559,26 @@ void DirectRenderer::handle_ad(const u8* data, SharedRenderState* render_state) void DirectRenderer::handle_tex1_1(u64 val) { GsTex1 reg(val); // for now, we aren't going to handle mipmapping. I don't think it's used with direct. - assert(reg.mxl() == 0); + // assert(reg.mxl() == 0); // if that's true, we can ignore LCM, MTBA, L, K // MMAG/MMIN specify texture filtering. For now, assume always linear assert(reg.mmag() == true); - assert(reg.mmin() == 1); + if (!(reg.mmin() == 1 || reg.mmin() == 4)) { // with mipmap off, both of these are linear + // lg::error("unsupported mmin"); + } - // fmt::print("{}\n", reg.print()); + // +} + +void DirectRenderer::handle_tex0_1_packed(const u8* data, SharedRenderState* render_state) { + u64 val; + memcpy(&val, data, sizeof(u64)); + handle_tex0_1(val, render_state); } void DirectRenderer::handle_tex0_1(u64 val, SharedRenderState* render_state) { GsTex0 reg(val); - // fmt::print("{}\n", reg.print()); // update tbp if (m_texture_state.current_register != reg) { @@ -496,6 +587,10 @@ void DirectRenderer::handle_tex0_1(u64 val, SharedRenderState* render_state) { m_texture_state.using_mt4hh = reg.psm() == GsTex0::PSM::PSMT4HH; m_prim_gl_state_needs_gl_update = true; m_texture_state.current_register = reg; + if (m_texture_state.tcc != reg.tcc()) { + m_texture_state.needs_gl_update = true; + } + m_texture_state.tcc = reg.tcc(); } // tbw: assume they got it right @@ -503,8 +598,6 @@ void DirectRenderer::handle_tex0_1(u64 val, SharedRenderState* render_state) { // tw: assume they got it right // th: assume they got it right - // these mean that the texture is multiplied, and uses the alpha from the clut. - assert(reg.tcc() == 1); assert(reg.tfx() == GsTex0::TextureFunction::MODULATE); // cbp: assume they got it right @@ -518,7 +611,7 @@ void DirectRenderer::handle_texa(u64 val) { // rgba16 isn't used so this doesn't matter? // but they use sane defaults anyway assert(reg.ta0() == 0); - assert(reg.ta1() == 0x80); + assert(reg.ta1() == 0x80); // note: check rgba16_to_rgba32 if this changes. assert(reg.aem() == false); } @@ -537,11 +630,6 @@ void DirectRenderer::handle_rgbaq_packed(const u8* data) { m_prim_building.rgba_reg[3] = data[12]; } -float u32_to_float(u32 in) { - double x = (double)in / UINT32_MAX; - return x * 2 - 1; -} - void DirectRenderer::handle_xyzf2_packed(const u8* data, SharedRenderState* render_state) { u32 x, y; memcpy(&x, data, 4); @@ -550,6 +638,7 @@ void DirectRenderer::handle_xyzf2_packed(const u8* data, SharedRenderState* rend u64 upper; memcpy(&upper, data + 8, 8); u32 z = (upper >> 4) & 0xffffff; + u8 f = (upper >> 36); bool adc = upper & (1ull << 47); assert(!adc); @@ -557,21 +646,28 @@ void DirectRenderer::handle_xyzf2_packed(const u8* data, SharedRenderState* rend handle_xyzf2_common(x, y, z, f, render_state); } -void debug_print_vtx(const math::Vector& vtx) { - fmt::print("{} {}\n", u32_to_float(vtx.x()), u32_to_float(vtx.y())); -} - -void DirectRenderer::handle_zbuf1(u64 val) { +void DirectRenderer::handle_zbuf1(u64 val, SharedRenderState* render_state) { // note: we can basically ignore this. There's a single z buffer that's always configured the same // way - 24-bit, at offset 448. GsZbuf x(val); - assert(x.zmsk()); // note: not sure if this ever changes or not. assert(x.psm() == TextureFormat::PSMZ24); assert(x.zbp() == 448); + + bool write = !x.zmsk(); + // assert(write); + + if (write != m_test_state.depth_writes) { + flush_pending(render_state); + m_test_state_needs_gl_update = true; + m_test_state.depth_writes = !write; + } } void DirectRenderer::handle_test1(u64 val, SharedRenderState* render_state) { GsTest reg(val); + assert(!reg.alpha_test_enable()); + assert(!reg.date()); + assert(!(val & 1)); if (m_test_state.current_register != reg) { flush_pending(render_state); m_test_state.from_register(reg); @@ -596,6 +692,12 @@ void DirectRenderer::handle_clamp1(u64 val) { assert(val == 0b101); // clamp s and t. } +void DirectRenderer::handle_prim_packed(const u8* data, SharedRenderState* render_state) { + u64 val; + memcpy(&val, data, sizeof(u64)); + handle_prim(val, render_state); +} + void DirectRenderer::handle_prim(u64 val, SharedRenderState* render_state) { if (m_prim_building.tri_strip_startup) { m_prim_building.tri_strip_startup = 0; @@ -629,15 +731,16 @@ void DirectRenderer::handle_xyzf2_common(u32 x, u32 z, u8 f, SharedRenderState* render_state) { + assert(z < (1 << 24)); (void)f; // TODO: do something with this. if (m_prim_buffer.is_full()) { flush_pending(render_state); } - // assert(f == 0); + // assert(f == 0); m_prim_building.building_st.at(m_prim_building.building_idx) = m_prim_building.st_reg; m_prim_building.building_rgba.at(m_prim_building.building_idx) = m_prim_building.rgba_reg; - m_prim_building.building_vert.at(m_prim_building.building_idx) = {x << 16, y << 16, z}; + m_prim_building.building_vert.at(m_prim_building.building_idx) = {x << 16, y << 16, z << 8}; m_prim_building.building_idx++; switch (m_prim_building.kind) { @@ -694,6 +797,22 @@ void DirectRenderer::handle_xyzf2_common(u32 x, } } break; + + case GsPrim::Kind::TRI_FAN: { + if (m_prim_building.tri_strip_startup < 2) { + m_prim_building.tri_strip_startup++; + } else { + if (m_prim_building.building_idx == 2) { + // nothing. + } else if (m_prim_building.building_idx == 3) { + m_prim_building.building_idx = 1; + } + for (int i = 0; i < 3; i++) { + m_prim_buffer.push(m_prim_building.building_rgba[i], m_prim_building.building_vert[i], + m_prim_building.building_st[i]); + } + } + } break; case GsPrim::Kind::LINE: { if (m_prim_building.building_idx == 2) { math::Vector pt0 = m_prim_building.building_vert[0].cast(); @@ -729,11 +848,9 @@ void DirectRenderer::handle_xyzf2_common(u32 x, } void DirectRenderer::handle_xyzf2(u64 val, SharedRenderState* render_state) { - // m_prim_buffer.rgba_u8[m_prim_buffer.vert_count] = m_prim_building.rgba; - u32 x = val & 0xffff; u32 y = (val >> 16) & 0xffff; - u32 z = (val >> 32) & 0xfffff; + u32 z = (val >> 32) & 0xffffff; u32 f = (val >> 56) & 0xff; handle_xyzf2_common(x, y, z, f, render_state); @@ -752,6 +869,9 @@ void DirectRenderer::reset_state() { m_texture_state = TextureState(); m_prim_building = PrimBuildState(); + + m_triangles = 0; + m_draw_calls = 0; } void DirectRenderer::TestState::from_register(GsTest reg) { diff --git a/game/graphics/opengl_renderer/DirectRenderer.h b/game/graphics/opengl_renderer/DirectRenderer.h index 42587c9c6e..9b6c9099f1 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.h +++ b/game/graphics/opengl_renderer/DirectRenderer.h @@ -18,7 +18,12 @@ */ class DirectRenderer : public BucketRenderer { public: - DirectRenderer(const std::string& name, BucketId my_id, int batch_size); + // specializations of direct renderer to handle certain outputs. + enum class Mode { + NORMAL, // use for general debug drawing, font. + SPRITE_CPU // use for sprites (does the appropriate alpha test) + }; + DirectRenderer(const std::string& name, BucketId my_id, int batch_size, Mode mode); ~DirectRenderer(); void render(DmaFollower& dma, SharedRenderState* render_state) override; @@ -46,19 +51,23 @@ class DirectRenderer : public BucketRenderer { */ void flush_pending(SharedRenderState* render_state); + void draw_debug_window() override; + private: void handle_ad(const u8* data, SharedRenderState* render_state); - void handle_zbuf1(u64 val); + void handle_zbuf1(u64 val, SharedRenderState* render_state); void handle_test1(u64 val, SharedRenderState* render_state); void handle_alpha1(u64 val, SharedRenderState* render_state); void handle_pabe(u64 val); void handle_clamp1(u64 val); void handle_prim(u64 val, SharedRenderState* render_state); + void handle_prim_packed(const u8* data, SharedRenderState* render_state); void handle_rgbaq(u64 val); void handle_xyzf2(u64 val, SharedRenderState* render_state); void handle_st_packed(const u8* data); void handle_rgbaq_packed(const u8* data); void handle_xyzf2_packed(const u8* data, SharedRenderState* render_state); + void handle_tex0_1_packed(const u8* data, SharedRenderState* render_state); void handle_tex0_1(u64 val, SharedRenderState* render_state); void handle_tex1_1(u64 val); void handle_texa(u64 val); @@ -70,8 +79,6 @@ class DirectRenderer : public BucketRenderer { void update_gl_test(); void update_gl_texture(SharedRenderState* render_state); - void draw_debug_window() override; - struct TestState { void from_register(GsTest reg); @@ -86,6 +93,8 @@ class DirectRenderer : public BucketRenderer { bool zte = true; GsTest::ZTest ztst = GsTest::ZTest::GEQUAL; + bool depth_writes = true; + } m_test_state; struct BlendState { @@ -120,6 +129,8 @@ class DirectRenderer : public BucketRenderer { GsTex0 current_register; u32 texture_base_ptr = 0; bool using_mt4hh = false; + bool tcc = false; + bool needs_gl_update = true; } m_texture_state; // state set through the prim/rgbaq register that doesn't require changing GL stuff @@ -163,6 +174,8 @@ class DirectRenderer : public BucketRenderer { struct { bool disable_texture = false; bool wireframe = false; + bool red = false; + bool always_draw = false; } m_debug_state; int m_triangles = 0; @@ -171,4 +184,11 @@ class DirectRenderer : public BucketRenderer { bool m_prim_gl_state_needs_gl_update = true; bool m_test_state_needs_gl_update = true; bool m_blend_state_needs_gl_update = true; + + struct SpriteMode { + bool do_first_draw = true; + bool do_second_draw = true; + } m_sprite_mode; + + Mode m_mode; }; diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.cpp b/game/graphics/opengl_renderer/OpenGLRenderer.cpp index c8658457e3..e89f013bdc 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.cpp +++ b/game/graphics/opengl_renderer/OpenGLRenderer.cpp @@ -3,6 +3,8 @@ #include "common/log/log.h" #include "game/graphics/pipelines/opengl.h" #include "game/graphics/opengl_renderer/DirectRenderer.h" +#include "game/graphics/opengl_renderer/SpriteRenderer.h" +#include "game/graphics/opengl_renderer/TextureUploadHandler.h" #include "third-party/imgui/imgui.h" // for the vif callback @@ -51,13 +53,18 @@ OpenGLRenderer::OpenGLRenderer(std::shared_ptr texture_pool) * Construct bucket renderers. We can specify different renderers for different buckets */ void OpenGLRenderer::init_bucket_renderers() { - // For example, set up bucket 0: init_bucket_renderer("bucket0", BucketId::BUCKET0); - - // TODO what the heck is drawing to debug-draw-0 on init? - init_bucket_renderer("sprite", BucketId::SPRITE, 102); - init_bucket_renderer("debug-draw-0", BucketId::DEBUG_DRAW_0, 102); - init_bucket_renderer("debug-draw-1", BucketId::DEBUG_DRAW_1, 102); + init_bucket_renderer("tfrag-tex-0", BucketId::TFRAG_TEX_LEVEL0); + init_bucket_renderer("shrub-tex-0", BucketId::SHRUB_TEX_LEVEL0); + init_bucket_renderer("alpha-tex-0", BucketId::ALPHA_TEX_LEVEL0); + init_bucket_renderer("pris-tex-0", BucketId::PRIS_TEX_LEVEL0); + init_bucket_renderer("water-tex-0", BucketId::WATER_TEX_LEVEL0); + init_bucket_renderer("pre-sprite-tex", BucketId::PRE_SPRITE_TEX); + init_bucket_renderer("sprite", BucketId::SPRITE); + init_bucket_renderer("debug-draw-0", BucketId::DEBUG_DRAW_0, 102, + DirectRenderer::Mode::NORMAL); + init_bucket_renderer("debug-draw-1", BucketId::DEBUG_DRAW_1, 102, + DirectRenderer::Mode::NORMAL); // for now, for any unset renderers, just set them to an EmptyBucketRenderer. for (size_t i = 0; i < m_bucket_renderers.size(); i++) { @@ -70,15 +77,34 @@ void OpenGLRenderer::init_bucket_renderers() { /*! * Main render function. This is called from the gfx loop with the chain passed from the game. */ -void OpenGLRenderer::render(DmaFollower dma, int window_width_px, int window_height_px) { +void OpenGLRenderer::render(DmaFollower dma, + int window_width_px, + int window_height_px, + bool draw_debug_window, + bool dump_playback) { + m_render_state.dump_playback = dump_playback; + m_render_state.ee_main_memory = dump_playback ? nullptr : g_ee_main_mem; + m_render_state.offset_of_s7 = offset_of_s7(); setup_frame(window_width_px, window_height_px); + m_render_state.texture_pool->remove_garbage_textures(); // draw_test_triangle(); // render the buckets! dispatch_buckets(dma); - draw_renderer_selection_window(); - // add a profile bar for the imgui stuff - vif_interrupt_callback(); + if (draw_debug_window) { + draw_renderer_selection_window(); + // add a profile bar for the imgui stuff + if (!m_render_state.dump_playback) { + vif_interrupt_callback(); + } + } +} + +void OpenGLRenderer::serialize(Serializer& ser) { + m_render_state.texture_pool->serialize(ser); + for (auto& renderer : m_bucket_renderers) { + renderer->serialize(ser); + } } void OpenGLRenderer::draw_renderer_selection_window() { @@ -87,15 +113,17 @@ void OpenGLRenderer::draw_renderer_selection_window() { auto renderer = m_bucket_renderers[i].get(); if (renderer && !renderer->empty()) { ImGui::PushID(i); - if (ImGui::CollapsingHeader(renderer->name_and_id().c_str())) { + if (ImGui::TreeNode(renderer->name_and_id().c_str())) { ImGui::Checkbox("Enable", &renderer->enabled()); renderer->draw_debug_window(); + ImGui::TreePop(); } ImGui::PopID(); } } - if (ImGui::CollapsingHeader("Texture Pool")) { + if (ImGui::TreeNode("Texture Pool")) { m_render_state.texture_pool->draw_debug_window(); + ImGui::TreePop(); } ImGui::End(); } @@ -105,8 +133,10 @@ void OpenGLRenderer::draw_renderer_selection_window() { */ void OpenGLRenderer::setup_frame(int window_width_px, int window_height_px) { glViewport(0, 0, window_width_px, window_height_px); - glClearColor(0.5, 0.5, 0.5, 0.0); - glClear(GL_COLOR_BUFFER_BIT); + glClearColor(0.5, 0.5, 0.5, 1.0); + glClearDepth(0.0); + glDepthMask(GL_TRUE); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glDisable(GL_BLEND); } @@ -144,12 +174,14 @@ void OpenGLRenderer::dispatch_buckets(DmaFollower dma) { // loop over the buckets! for (int bucket_id = 0; bucket_id < (int)BucketId::MAX_BUCKETS; bucket_id++) { auto& renderer = m_bucket_renderers[bucket_id]; - // fmt::print("render bucket {} with {}\n", bucket_id, renderer->name_and_id()); renderer->render(dma, &m_render_state); // should have ended at the start of the next chain assert(dma.current_tag_offset() == m_render_state.next_bucket); m_render_state.next_bucket += 16; - vif_interrupt_callback(); + + if (!m_render_state.dump_playback) { + vif_interrupt_callback(); + } } // TODO ending data. diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.h b/game/graphics/opengl_renderer/OpenGLRenderer.h index 853889daa0..161565dce8 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.h +++ b/game/graphics/opengl_renderer/OpenGLRenderer.h @@ -10,7 +10,12 @@ class OpenGLRenderer { public: OpenGLRenderer(std::shared_ptr texture_pool); - void render(DmaFollower dma, int window_width_px, int window_height_px); + void render(DmaFollower dma, + int window_width_px, + int window_height_px, + bool draw_debug_window, + bool dump_playback); + void serialize(Serializer& ser); private: void setup_frame(int window_width_px, int window_height_px); @@ -18,7 +23,6 @@ class OpenGLRenderer { void dispatch_buckets(DmaFollower dma); void init_bucket_renderers(); void draw_renderer_selection_window(); - void draw_texture_window(); template void init_bucket_renderer(const std::string& name, BucketId id, Args&&... args) { diff --git a/game/graphics/opengl_renderer/Shader.cpp b/game/graphics/opengl_renderer/Shader.cpp index a8d73fa858..444cc17f27 100644 --- a/game/graphics/opengl_renderer/Shader.cpp +++ b/game/graphics/opengl_renderer/Shader.cpp @@ -66,5 +66,9 @@ void Shader::activate() { ShaderLibrary::ShaderLibrary() { at(ShaderId::TEST_SHADER) = {"test_shader"}; at(ShaderId::DIRECT_BASIC) = {"direct_basic"}; + at(ShaderId::DIRECT_BASIC_TEXTURED_TCC0) = {"direct_basic_textured_tcc0"}; at(ShaderId::DIRECT_BASIC_TEXTURED) = {"direct_basic_textured"}; + at(ShaderId::DEBUG_RED) = {"debug_red"}; + at(ShaderId::SPRITE_CPU) = {"sprite_cpu"}; + at(ShaderId::SPRITE_CPU_AFAIL) = {"sprite_cpu_afail"}; } \ No newline at end of file diff --git a/game/graphics/opengl_renderer/Shader.h b/game/graphics/opengl_renderer/Shader.h index 629628b801..3bd9ac558f 100644 --- a/game/graphics/opengl_renderer/Shader.h +++ b/game/graphics/opengl_renderer/Shader.h @@ -21,7 +21,16 @@ class Shader { }; // note: update the constructor in Shader.cpp -enum class ShaderId { TEST_SHADER = 0, DIRECT_BASIC = 1, DIRECT_BASIC_TEXTURED = 2, MAX_SHADERS }; +enum class ShaderId { + TEST_SHADER = 0, + DIRECT_BASIC = 1, + DIRECT_BASIC_TEXTURED = 2, + DIRECT_BASIC_TEXTURED_TCC0 = 3, + DEBUG_RED = 4, + SPRITE_CPU = 5, + SPRITE_CPU_AFAIL = 6, + MAX_SHADERS +}; class ShaderLibrary { public: diff --git a/game/graphics/opengl_renderer/SpriteRenderer.cpp b/game/graphics/opengl_renderer/SpriteRenderer.cpp new file mode 100644 index 0000000000..686078b76e --- /dev/null +++ b/game/graphics/opengl_renderer/SpriteRenderer.cpp @@ -0,0 +1,769 @@ +#include "third-party/fmt/core.h" +#include "third-party/imgui/imgui.h" +#include "SpriteRenderer.h" + +namespace { +/*! + * Make sure that the DMA Transfer is a VIF unpack (copy data to VIF memory) with the given + * setup. This is for a transfer with STCYCL followed by UNPACK. + */ +bool verify_unpack_with_stcycl(const DmaTransfer& transfer, + VifCode::Kind unpack_kind, + u16 cl, + u16 wl, + u32 qwc, + u32 addr, + bool usn, + bool flg) { + if (transfer.size_bytes != qwc * 16) { + fmt::print("verify_unpack: bad size {} vs {}\n", transfer.size_bytes, qwc * 16); + return false; + } + + if (transfer.vifcode0().kind != VifCode::Kind::STCYCL) { + fmt::print("verify_unpack: bad vifcode 0\n"); + return false; + } + + if (transfer.vifcode1().kind != unpack_kind) { + fmt::print("verify_unpack: bad vifcode 1\n"); + return false; + } + + VifCodeStcycl stcycl(transfer.vifcode0()); + VifCodeUnpack unpack(transfer.vifcode1()); + + if (stcycl.cl != cl || stcycl.wl != wl) { + fmt::print("verify_unpack: bad cl/wl {}/{} vs {}/{}\n", stcycl.cl, stcycl.wl, cl, wl); + return false; + } + + if (unpack.addr_qw != addr || unpack.use_tops_flag != flg || unpack.is_unsigned != usn) { + fmt::print("verify_unpack: bad unpack {}/{}/{} vs {}/{}/{}", unpack.addr_qw, + unpack.use_tops_flag, unpack.is_unsigned, addr, flg, usn); + return false; + } + + if (transfer.vifcode1().num != qwc) { + fmt::print("verify_unpack: bad num {} vs {}\n", transfer.vifcode1().num, qwc); + return false; + } + + return true; +} + +/*! + * Make sure that the DMA transfer is a VIF unpack with the given setup. + * This is for when there's just an UNPACK. + */ +bool verify_unpack_no_stcycl(const DmaTransfer& transfer, + VifCode::Kind unpack_kind, + u32 qwc, + u32 addr, + bool usn, + bool flg) { + if (transfer.size_bytes != qwc * 16) { + fmt::print("verify_unpack: bad size {} vs {}\n", transfer.size_bytes, qwc * 16); + return false; + } + + if (transfer.vifcode0().kind != VifCode::Kind::NOP) { + fmt::print("verify_unpack: bad vifcode 0\n"); + return false; + } + + if (transfer.vifcode1().kind != unpack_kind) { + fmt::print("verify_unpack: bad vifcode 1\n"); + return false; + } + + VifCodeUnpack unpack(transfer.vifcode1()); + + if (unpack.addr_qw != addr || unpack.use_tops_flag != flg || unpack.is_unsigned != usn) { + fmt::print("verify_unpack: bad unpack {}/{}/{} vs {}/{}/{}", unpack.addr_qw, + unpack.use_tops_flag, unpack.is_unsigned, addr, flg, usn); + return false; + } + + if (transfer.vifcode1().num != qwc) { + fmt::print("verify_unpack: bad num {} vs {}\n", transfer.vifcode1().num, qwc); + return false; + } + + return true; +} + +/*! + * Verify the DMA transfer is a VIF unpack (with no STCYCL tag). + * Then, unpack the data to dst. + */ +void unpack_to_no_stcycl(void* dst, + const DmaTransfer& transfer, + VifCode::Kind unpack_kind, + u32 size_bytes, + u32 addr, + bool usn, + bool flg) { + bool ok = verify_unpack_no_stcycl(transfer, unpack_kind, size_bytes / 16, addr, usn, flg); + assert(ok); + assert((size_bytes & 0xf) == 0); + memcpy(dst, transfer.data, size_bytes); +} + +/*! + * Does the next DMA transfer look like it could be the start of a 2D group? + */ +bool looks_like_2d_chunk_start(const DmaFollower& dma) { + return dma.current_tag().qwc == 1 && dma.current_tag().kind == DmaTag::Kind::CNT; +} + +/*! + * Read the header. Asserts if it's bad. + * Returns the number of sprites. + * Advances 1 dma transfer + */ +u32 process_sprite_chunk_header(DmaFollower& dma) { + auto transfer = dma.read_and_advance(); + // note that flg = true, this should use double buffering + bool ok = verify_unpack_with_stcycl(transfer, VifCode::Kind::UNPACK_V4_32, 4, 4, 1, + SpriteDataMem::Header, false, true); + assert(ok); + u32 header[4]; + memcpy(header, transfer.data, 16); + assert(header[0] <= SpriteRenderer::SPRITES_PER_CHUNK); + return header[0]; +} +} // namespace + +SpriteRenderer::SpriteRenderer(const std::string& name, BucketId my_id) + : BucketRenderer(name, my_id), + m_sprite_renderer(fmt::format("{}.sprites", name), + my_id, + 100, + DirectRenderer::Mode::SPRITE_CPU), + m_direct_renderer(fmt::format("{}.direct", name), my_id, 100, DirectRenderer::Mode::NORMAL) {} + +/*! + * Run the sprite distorter. Currently nothing uses sprite-distorter so this just skips through + * the table upload stuff that runs every frame, even if there are no sprites. + */ +void SpriteRenderer::render_distorter(DmaFollower& dma, SharedRenderState* render_state) { + // Next thing should be the sprite-distorter setup + m_direct_renderer.reset_state(); + while (dma.current_tag().qwc != 7) { + auto direct_data = dma.read_and_advance(); + m_direct_renderer.render_vif(direct_data.vif0(), direct_data.vif1(), direct_data.data, + direct_data.size_bytes, render_state); + } + m_direct_renderer.flush_pending(render_state); + auto sprite_distorter_direct_setup = dma.read_and_advance(); + assert(sprite_distorter_direct_setup.vifcode0().kind == VifCode::Kind::NOP); + assert(sprite_distorter_direct_setup.vifcode1().kind == VifCode::Kind::DIRECT); + assert(sprite_distorter_direct_setup.vifcode1().immediate == 7); + memcpy(m_sprite_distorter_setup, sprite_distorter_direct_setup.data, 7 * 16); + + // Next thing should be the sprite-distorter tables + auto sprite_distorter_tables = dma.read_and_advance(); + assert(sprite_distorter_tables.size_bytes == 0x8b * 16); + assert(sprite_distorter_tables.vifcode0().kind == VifCode::Kind::STCYCL); + VifCodeStcycl distorter_table_transfer(sprite_distorter_tables.vifcode0()); + assert(distorter_table_transfer.cl == 4); + assert(distorter_table_transfer.wl == 4); + // TODO: check unpack cmd (vif1) + + // TODO: do something with the table + + // next would be the program, but we don't have it. + + // TODO: next is the sprite-distorter (currently not used) +} + +/*! + * Handle DMA data that does the per-frame setup. + * This should get the dma chain immediately after the call to sprite-draw-distorters. + * It ends right before the sprite-add-matrix-data for the 3d's + */ +void SpriteRenderer::handle_sprite_frame_setup(DmaFollower& dma) { + // first is some direct data + auto direct_data = dma.read_and_advance(); + assert(direct_data.size_bytes == 3 * 16); + memcpy(m_sprite_direct_setup, direct_data.data, 3 * 16); + + // next would be the program, but it's 0 size on the PC and isn't sent. + + // next is the "frame data" + auto frame_data = dma.read_and_advance(); + assert(frame_data.size_bytes == (int)sizeof(SpriteFrameData)); // very cool + assert(frame_data.vifcode0().kind == VifCode::Kind::STCYCL); + VifCodeStcycl frame_data_stcycl(frame_data.vifcode0()); + assert(frame_data_stcycl.cl == 4); + assert(frame_data_stcycl.wl == 4); + assert(frame_data.vifcode1().kind == VifCode::Kind::UNPACK_V4_32); + VifCodeUnpack frame_data_unpack(frame_data.vifcode1()); + assert(frame_data_unpack.addr_qw == SpriteDataMem::FrameData); + assert(frame_data_unpack.use_tops_flag == false); + memcpy(&m_frame_data, frame_data.data, sizeof(SpriteFrameData)); + + // next, a MSCALF. + auto mscalf = dma.read_and_advance(); + assert(mscalf.size_bytes == 0); + assert(mscalf.vifcode0().kind == VifCode::Kind::MSCALF); + assert(mscalf.vifcode0().immediate == SpriteProgMem::Init); + assert(mscalf.vifcode1().kind == VifCode::Kind::FLUSHE); + + // next base and offset + auto base_offset = dma.read_and_advance(); + assert(base_offset.size_bytes == 0); + assert(base_offset.vifcode0().kind == VifCode::Kind::BASE); + assert(base_offset.vifcode0().immediate == SpriteDataMem::Buffer0); + assert(base_offset.vifcode1().kind == VifCode::Kind::OFFSET); + assert(base_offset.vifcode1().immediate == SpriteDataMem::Buffer1); +} + +void SpriteRenderer::render_3d(DmaFollower& dma) { + // one time matrix data + auto matrix_data = dma.read_and_advance(); + assert(matrix_data.size_bytes == sizeof(Sprite3DMatrixData)); + + bool unpack_ok = verify_unpack_with_stcycl(matrix_data, VifCode::Kind::UNPACK_V4_32, 4, 4, 5, + SpriteDataMem::Matrix, false, false); + assert(unpack_ok); + static_assert(sizeof(m_3d_matrix_data) == 5 * 16); + memcpy(&m_3d_matrix_data, matrix_data.data, sizeof(m_3d_matrix_data)); + // TODO +} + +void SpriteRenderer::render_2d_group0(DmaFollower& dma) { + (void)dma; + // TODO +} + +void SpriteRenderer::render_fake_shadow(DmaFollower& dma) { + // TODO + // nop + flushe + auto nop_flushe = dma.read_and_advance(); + assert(nop_flushe.vifcode0().kind == VifCode::Kind::NOP); + assert(nop_flushe.vifcode1().kind == VifCode::Kind::FLUSHE); +} + +/*! + * Handle DMA data for group1 2d's (HUD) + */ +void SpriteRenderer::render_2d_group1(DmaFollower& dma, SharedRenderState* render_state) { + // one time matrix data upload + auto mat_upload = dma.read_and_advance(); + bool mat_ok = verify_unpack_with_stcycl(mat_upload, VifCode::Kind::UNPACK_V4_32, 4, 4, 80, + SpriteDataMem::Matrix, false, false); + assert(mat_ok); + assert(mat_upload.size_bytes == sizeof(m_hud_matrix_data)); + memcpy(&m_hud_matrix_data, mat_upload.data, sizeof(m_hud_matrix_data)); + + // loop through chunks. + while (looks_like_2d_chunk_start(dma)) { + m_debug_stats.blocks_2d_grp1++; + // 4 packets per chunk + + // first is the header + u32 sprite_count = process_sprite_chunk_header(dma); + m_debug_stats.count_2d_grp1 += sprite_count; + + // second is the vector data + u32 expected_vec_size = sizeof(SpriteVecData2d) * sprite_count; + auto vec_data = dma.read_and_advance(); + assert(expected_vec_size <= sizeof(m_vec_data_2d)); + unpack_to_no_stcycl(&m_vec_data_2d, vec_data, VifCode::Kind::UNPACK_V4_32, expected_vec_size, + SpriteDataMem::Vector, false, true); + + // third is the adgif data + u32 expected_adgif_size = sizeof(AdGif) * sprite_count; + auto adgif_data = dma.read_and_advance(); + assert(expected_adgif_size <= sizeof(m_adgif)); + unpack_to_no_stcycl(&m_adgif, adgif_data, VifCode::Kind::UNPACK_V4_32, expected_adgif_size, + SpriteDataMem::Adgif, false, true); + + // fourth is the actual run!!!!! + auto run = dma.read_and_advance(); + assert(run.vifcode0().kind == VifCode::Kind::NOP); + assert(run.vifcode1().kind == VifCode::Kind::MSCAL); + assert(run.vifcode1().immediate == SpriteProgMem::Sprites2dHud); + if (m_enabled) { + do_2d_group1_block_cpu(sprite_count, render_state); + } + } +} + +void SpriteRenderer::render(DmaFollower& dma, SharedRenderState* render_state) { + m_debug_stats = {}; + // First thing should be a NEXT with two nops. this is a jump from buckets to sprite data + auto data0 = dma.read_and_advance(); + assert(data0.vif1() == 0); + assert(data0.vif0() == 0); + assert(data0.size_bytes == 0); + + if (dma.current_tag().kind == DmaTag::Kind::CALL) { + // sprite renderer didn't run, let's just get out of here. + for (int i = 0; i < 4; i++) { + dma.read_and_advance(); + } + assert(dma.current_tag_offset() == render_state->next_bucket); + return; + } + + // First is the distorter + render_distorter(dma, render_state); + + // next, sprite frame setup. + handle_sprite_frame_setup(dma); + + // 3d sprites + render_3d(dma); + + // 2d draw + render_2d_group0(dma); + + // shadow draw + render_fake_shadow(dma); + + // 2d draw (HUD) + m_sprite_renderer.reset_state(); + render_2d_group1(dma, render_state); + m_sprite_renderer.flush_pending(render_state); + + // TODO finish this up. + // fmt::print("next bucket is 0x{}\n", render_state->next_bucket); + while (dma.current_tag_offset() != render_state->next_bucket) { + // auto tag = dma.current_tag(); + // fmt::print("@ 0x{:x} tag: {}", dma.current_tag_offset(), tag.print()); + auto data = dma.read_and_advance(); + VifCode code(data.vif0()); + // fmt::print(" vif: {}\n", code.print()); + if (code.kind == VifCode::Kind::NOP) { + // fmt::print(" vif: {}\n", VifCode(data.vif1()).print()); + } + } +} + +void SpriteRenderer::draw_debug_window() { + ImGui::Separator(); + ImGui::Text("2D Group 1 (HUD) blocks: %d sprites: %d", m_debug_stats.blocks_2d_grp1, + m_debug_stats.count_2d_grp1); + ImGui::Checkbox("Extra Debug", &m_extra_debug); + if (ImGui::TreeNode("direct")) { + m_sprite_renderer.draw_debug_window(); + ImGui::TreePop(); + } +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Render (for real) + +namespace { +Vector4f matrix_transform(const Matrix4f& mat, const Vector4f& pt) { + // mulaw.xyzw ACC, vf28, vf00 + // maddax.xyzw ACC, vf25, vf01 + // madday.xyzw ACC, vf26, vf01 + // maddz.xyzw vf02, vf27, vf01 + return mat.col(3) + (mat.col(0) * pt[0]) + (mat.col(1) * pt[1]) + (mat.col(2) * pt[2]); +} + +bool clip_xyz_plus_minus(const Vector4f& pt) { + float pw = std::abs(pt.w()); + float mw = -pw; + for (int i = 0; i < 3; i++) { + if (pt[i] > pw) { + return true; + } + if (pt[i] < mw) { + return true; + } + } + return false; +} + +void imgui_vec(const Vector4f& vec, const char* name = nullptr, int indent = 0) { + std::string spacing(indent, ' '); + if (name) { + ImGui::Text("%s%s: %f, %f, %f, %f", spacing.c_str(), name, vec.x(), vec.y(), vec.z(), vec.w()); + } else { + ImGui::Text("%s%f, %f, %f, %f", spacing.c_str(), vec.x(), vec.y(), vec.z(), vec.w()); + } +} +} // namespace + +/*! + * Render the sprites! + * This is a somewhat inefficient way to do it: + * The VU program is (poorly) translated to C, then the gs packet is sent to a DirectRenderer. + * In the future we should make a sprite-specific renderer which would have some benefits: + * - do this math on the GPU + * - special case the primitive buffer stuff + */ +void SpriteRenderer::do_2d_group1_block_cpu(u32 count, SharedRenderState* render_state) { + if (m_extra_debug) { + ImGui::Begin("Sprite Extra Debug"); + } + + // set up double buffering + // xtop vi02 | nop + // nop | nop + // load sprite count from header + // vi04 = count + // ilwr.x vi04, vi02 | nop + // vi02 = m_vec_data_2d + // iaddi vi02, vi02, 0x1 | nop + // vi03 = m_adgif + // iaddiu vi03, vi02, 0x90 | nop + + // this VU program uses "software pipelining" + // it's a little bit tricky to use software pipelining in a case like + // this where sometimes you want to reject a sprite entirely and jump ahead + // so sometimes they reset back to L7 on rejection. + + // The approach in this translation is to assume we loop back to L7 every time + // and not worry about the pipeline stuff that shows up in L8 and on. + // you can enter from L7 at anytime, they are not assumed to only run on the first go. + // (though if their implementation has bugs we will not replicate them correctly...) + + Matrix4f camera_matrix = m_hud_matrix_data.matrix; // vf25, vf26, vf27, vf28 + + for (u32 sprite_idx = 0; sprite_idx < count; sprite_idx++) { + if (m_extra_debug) { + ImGui::Text("Sprite: %d", sprite_idx); + } + SpriteHud2DPacket packet; + memset(&packet, 0, sizeof(packet)); + // L7 (prologue, and early abort) + // ilw.y vi08, 1(vi02) | nop vi08 = matrix + u32 offset_selector = m_vec_data_2d[sprite_idx].matrix(); + + // moved this out of the loop. + // lq.xyzw vf25, 900(vi00) | nop vf25 = cam_mat + // lq.xyzw vf26, 901(vi00) | nop + // lq.xyzw vf27, 902(vi00) | nop + // lq.xyzw vf28, 903(vi00) | nop + // lq.xyzw vf30, 904(vi08) | nop vf30 = hvdf_offset + // vf30 + Vector4f hvdf_offset = offset_selector == 0 ? m_hud_matrix_data.hvdf_offset + : m_hud_matrix_data.user_hvdf[offset_selector - 1]; + + // lqi.xyzw vf01, vi02 | nop + Vector4f pos_vf01 = m_vec_data_2d[sprite_idx].xyz_sx; + // lqi.xyzw vf05, vi02 | nop + Vector4f flags_vf05 = m_vec_data_2d[sprite_idx].flag_rot_sy; + // lqi.xyzw vf11, vi02 | nop + Vector4f color_vf11 = m_vec_data_2d[sprite_idx].rgba; + + // multiplications from the right column + Vector4f transformed_pos_vf02 = matrix_transform(camera_matrix, pos_vf01); + + Vector4f scales_vf01 = pos_vf01; // now used for something else. + // lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00 + // vf12 is fog consts + Vector4f fog_consts_vf12(m_frame_data.fog_min, m_frame_data.fog_max, m_frame_data.max_scale, + m_frame_data.bonus); + // ilw.y vi08, 1(vi02) | maddax.xyzw ACC, vf25, vf01 + // load offset selector for the next round. + // nop | madday.xyzw ACC, vf26, vf01 + // nop | maddz.xyzw vf02, vf27, vf01 + + // move.w vf05, vf00 | addw.z vf01, vf00, vf05 + // scales_vf01.z = sy + scales_vf01.z() = flags_vf05.w(); // start building the scale vector + flags_vf05.w() = 1.f; // what are we building in flags right now?? + + // nop | nop + // div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31 + float Q = m_frame_data.pfog0 / transformed_pos_vf02.w(); + flags_vf05.z() *= m_frame_data.deg_to_rad; + // nop | mul.xyzw vf03, vf02, vf29 + Vector4f scaled_pos_vf03 = transformed_pos_vf02.elementwise_multiply(m_frame_data.hmge_scale); + // nop | nop + // nop | nop + // nop | mulz.z vf04, vf05, vf05 (ts) + // fmt::print("rot is {} degrees\n", flags_vf05.z() * 360.0 / (2.0 * M_PI)); + + // the load is for rotation stuff, + // lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03 (used for fcand) + // iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11 (used for fmand) + + // upcoming fcand with 0x3f, that checks all of them. + bool fcand_result = clip_xyz_plus_minus(scaled_pos_vf03); + bool fmand_result = color_vf11.w() == 0; // (really w+w, but I don't think it matters?) + + // L8: + // xgkick double buffer setup + // ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q + scales_vf01.z() *= Q; // sy + scales_vf01.w() *= Q; // sx + + // lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04 (ts) + auto adgif_vf06 = m_frame_data.adgif_giftag; + + // lq.xyzw vf14, 1002(vi00) ts| mula.xyzw ACC, vf05, vf14 (ts) + + // fmand vi01, vi06 | mul.xyz vf02, vf02, Q + transformed_pos_vf02.x() *= Q; + transformed_pos_vf02.y() *= Q; + transformed_pos_vf02.z() *= Q; + + // if (m_extra_debug) { + // imgui_vec(transformed_pos_vf02, "scaled xf"); + // } + + // ibne vi00, vi01, L10 | addz.x vf01, vf00, vf01 + scales_vf01.x() = scales_vf01.z(); // = sy + if (fmand_result) { + if (m_extra_debug) { + ImGui::TextColored(ImVec4(0.8, 0.2, 0.2, 1.0), "fmand reject"); + ImGui::Separator(); + } + continue; // reject! + } + + // lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04 (ts) + // vf07 is first use adgif + + // lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14 (ts both) + + // lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30 + // vf08 is second user adgif + Vector4f offset_pos_vf10 = transformed_pos_vf02 + hvdf_offset; + // if (m_extra_debug) { + // ImGui::Text("sel %d", offset_selector); + // //ImGui::Text("hvdf off z: %f tf/w z: %f", hvdf_offset.z(), transformed_pos_vf02.z()); + // imgui_vec(hvdf_offset, "hvdf"); + // imgui_vec(transformed_pos_vf02, "tf'd"); + // } + + // lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01 + // vf09 is third user adgif + scales_vf01.x() *= scales_vf01.w(); // x = sx * sy + + // sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04 (ts) + // FIRST ADGIF IS adgif_vf06 + packet.adgif_giftag = adgif_vf06; + + // lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14 (ts both) + + // sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12 + // SECOND ADGIF is first user + // just do all 5 now. + packet.user_adgif = m_adgif[sprite_idx]; + + offset_pos_vf10.w() = std::max(offset_pos_vf10.w(), m_frame_data.fog_max); + + // sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31 + // THIRD ADGIF is second user + scales_vf01.z() = std::max(scales_vf01.z(), m_frame_data.min_scale); + scales_vf01.w() = std::max(scales_vf01.w(), m_frame_data.min_scale); + + // sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04 (ts) + // FOURTH ADGIF is third user + + // lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14 (ts both) + + // lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31 + // vf06 is fourth user adgif + scales_vf01.x() *= m_frame_data.inv_area; // x = sx * sy * inv_area (area ratio) + + // lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12 + // vf07 is fifth user adgif + offset_pos_vf10.w() = std::min(offset_pos_vf10.w(), m_frame_data.fog_min); + + // lq.xyzw vf08, 1000(vi00) | nop + // vf08 is 2d giftag 2 + + // ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14 + auto flag_vi07 = m_vec_data_2d[sprite_idx].flag(); + Vector4f vf05_sincos(0, 0, std::sin(flags_vf05.z()), std::cos(flags_vf05.z())); + + // lq.xyzw vf30, 904(vi08) | nop + // pipline + + // lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00 + // pipeline + scales_vf01.x() = std::min(scales_vf01.x(), 1.f); + + // lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01 + // pipeline + color_vf11.w() *= scales_vf01.x(); // is this right? doesn't this stall?? + + // fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00 + // already computed pipeline + + // lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23 (pipeline) + Vector4f basis_x_vf17 = m_frame_data.basis_x; + + // lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23 (pipeline) + Vector4f basis_y_vf18 = m_frame_data.basis_y; + + assert(flag_vi07 == 0); + Vector4f* xy_array = m_frame_data.xy_array + flag_vi07; + // lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11 + Vector4f xy0_vf19 = xy_array[0]; + math::Vector color_integer_vf11 = color_vf11.cast(); + + // lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23 (pipeline) + Vector4f xy1_vf20 = xy_array[1]; + + // lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05 + Vector4f xy2_vf21 = xy_array[2]; + Vector4f acc = basis_x_vf17 * vf05_sincos.w(); + + // lq.xyzw vf22, 983(vi07) | msubz.xyzw vf12, vf18, vf05 + Vector4f xy3_vf22 = xy_array[3]; + Vector4f vf12_rotated = acc - (basis_y_vf18 * vf05_sincos.z()); + // sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05 + // EIGHTH is color integer + packet.color = color_integer_vf11; + + acc = basis_x_vf17 * vf05_sincos.z(); + + // lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05 + // (pipeline) + Vector4f vf13_rotated_trans = acc + basis_y_vf18 * vf05_sincos.w(); + + // move.w vf24, vf00 | addw.z vf23, vf00, vf24 (pipeline both) + + // div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01 + // (pipeline) + vf12_rotated *= scales_vf01.w(); + + // ibne vi00, vi01, L9 | muly.z vf24, vf24, vf31 (pipeline) + if (fcand_result) { + if (m_extra_debug) { + ImGui::TextColored(ImVec4(0.8, 0.2, 0.2, 1.0), "fcand reject"); + ImGui::Separator(); + } + continue; // reject (could move earlier) + } + + // ilw.y vi08, 1(vi02) | mulz.xyzw vf13, vf13, vf01 + // (pipeline) + vf13_rotated_trans *= scales_vf01.z(); + + // LEFT OFF HERE! + + // sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29 + // FIFTH is fourth user + + // sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00 + // SIXTH is fifth user + acc = offset_pos_vf10; + + // sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19 + // SEVENTH is giftag2 + packet.sprite_giftag = m_frame_data.sprite_2d_giftag2; + acc += vf12_rotated * xy0_vf19.x(); + + // lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19 + Vector4f st0_vf06 = m_frame_data.st_array[0]; + xy0_vf19 = acc + vf13_rotated_trans * xy0_vf19.y(); + + // lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00 + Vector4f st1_vf07 = m_frame_data.st_array[1]; + acc = offset_pos_vf10; + + // lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20 + Vector4f st2_vf08 = m_frame_data.st_array[2]; + acc += vf12_rotated * xy1_vf20.x(); + + // lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20 + Vector4f st3_vf09 = m_frame_data.st_array[3]; + xy1_vf20 = acc + vf13_rotated_trans * xy1_vf20.y(); + + // sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00 + // NINTH is st0 + packet.st0 = st0_vf06; + acc = offset_pos_vf10; + + // sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21 + // ELEVEN is st1 + packet.st1 = st1_vf07; + acc += vf12_rotated * xy2_vf21.x(); + + // sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21 + // THIRTEEN is st2 + packet.st2 = st2_vf08; + xy2_vf21 = acc + vf13_rotated_trans * xy2_vf21.y(); + + // sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00 + // FIFTEEN is st3 + packet.st3 = st3_vf09; + acc = offset_pos_vf10; + + // nop | maddax.xyzw ACC, vf12, vf22 + acc += vf12_rotated * xy3_vf22.x(); + + // nop | maddy.xyzw vf22, vf13, vf22 + xy3_vf22 = acc + vf13_rotated_trans * xy3_vf22.y(); + + // lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19 + // (pipeline) + auto xy0_vf19_int = (xy0_vf19 * 16.f).cast(); + + // lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20 + // (pipeline) + auto xy1_vf20_int = (xy1_vf20 * 16.f).cast(); + + // move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21 + // (pipeline) + auto xy2_vf21_int = (xy2_vf21 * 16.f).cast(); + + // move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22 + // (pipeline) + auto xy3_vf22_int = (xy3_vf22 * 16.f).cast(); + + if (m_extra_debug) { + u32 zi = xy3_vf22_int.z() >> 4; + ImGui::Text("z (int): 0x%08x %s", zi, zi >= (1 << 24) ? "bad" : ""); + ImGui::Text("z (flt): %f", (double)(((u32)zi) << 8) / UINT32_MAX); + } + + // sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24 (pipeline) + // TENTH is xy0int + packet.xy0 = xy0_vf19_int; + // sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03 (pipeline) + // TWELVE is xy1int + packet.xy1 = xy1_vf20_int; + // sq.xyzw vf21, 6(vi05) | nop + // FOURTEEN is xy2int + packet.xy2 = xy2_vf21_int; + // sq.xyzw vf22, 8(vi05) | nop + // SIXTEEN is xy3int + packet.xy3 = xy3_vf22_int; + + m_sprite_renderer.render_gif((const u8*)&packet, sizeof(packet), render_state); + if (m_extra_debug) { + imgui_vec(vf12_rotated, "vf12", 2); + imgui_vec(vf13_rotated_trans, "vf13", 2); + ImGui::Separator(); + } + + // xgkick vi15 | nop + // iaddi vi04, vi04, -0x1 | nop + // iaddiu vi01, vi00, 0x672 | nop + // ibne vi00, vi04, L8 | nop + // isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11 + // nop | nop :e + // nop | nop + // L9: + // iaddi vi04, vi04, -0x1 | nop + // iaddi vi02, vi02, -0x3 | nop + // ibne vi00, vi04, L7 | nop + // nop | nop + // nop | nop :e + // nop | nop + // L10: + // iaddi vi04, vi04, -0x1 | nop + // iaddi vi03, vi03, 0x4 | nop + // ibne vi00, vi04, L7 | nop + // nop | nop + // nop | nop :e + // nop | nop + } + + if (m_extra_debug) { + ImGui::End(); + } +} \ No newline at end of file diff --git a/game/graphics/opengl_renderer/SpriteRenderer.h b/game/graphics/opengl_renderer/SpriteRenderer.h new file mode 100644 index 0000000000..2fe6852b62 --- /dev/null +++ b/game/graphics/opengl_renderer/SpriteRenderer.h @@ -0,0 +1,180 @@ +#pragma once + +#include "game/graphics/opengl_renderer/BucketRenderer.h" +#include "game/graphics/opengl_renderer/DirectRenderer.h" +#include "game/graphics/dma/gs.h" +#include "common/math/Vector.h" + +using math::Matrix4f; +using math::Vector4f; + +/*! + * GOAL sprite-frame-data, all the data that's uploaded once per frame for the sprite system. + */ +struct SpriteFrameData { + Vector4f xy_array[8]; + Vector4f st_array[4]; + Vector4f xyz_array[4]; + Vector4f hmge_scale; + float pfog0; + float deg_to_rad; + float min_scale; + float inv_area; + GifTag adgif_giftag; + GifTag sprite_2d_giftag; + GifTag sprite_2d_giftag2; + Vector4f sincos[5]; + Vector4f basis_x; + Vector4f basis_y; + GifTag sprite_3d_giftag; + AdGif screen_shader; + GifTag clipped_giftag; + Vector4f inv_hmge_scale; + Vector4f stq_offset; + Vector4f stq_scale; + Vector4f rgba_plain; + GifTag warp_giftag; + float fog_min; + float fog_max; + float max_scale; + float bonus; +}; + +/*! + * "Matrix Data" for 3D sprites. This is shared for all 3D sprites + */ +struct Sprite3DMatrixData { + Matrix4f camera; + Vector4f hvdf_offset; +}; + +/*! + * "Matrix Data" for 2D screen space sprites. These are shared for all 2D HUD sprites + */ +struct SpriteHudMatrixData { + Matrix4f matrix; + + // the "matrix" field is an index into these 76 quadwords + Vector4f hvdf_offset; + Vector4f user_hvdf[75]; +}; + +/*! + * The "vector data" (sprite-vec-data-2d). Each sprite has its own vector data. + */ +struct SpriteVecData2d { + Vector4f xyz_sx; // position + x scale + Vector4f flag_rot_sy; // flags, rotation, and scale y + Vector4f rgba; // color + + float sx() const { return xyz_sx.w(); } + + // for HUD, this is the hvdf offset index + s32 flag() { + s32 result; + memcpy(&result, &flag_rot_sy.x(), sizeof(s32)); + return result; + } + + // unused for HUD + s32 matrix() { + s32 result; + memcpy(&result, &flag_rot_sy.y(), sizeof(s32)); + return result; + } + + // rotation in degrees + float rot() const { return flag_rot_sy.z(); } + + // scale y. + float sy() const { return flag_rot_sy.w(); } +}; + +/*! + * The layout of VU1 data memory, in quadword addresses + * The lower 800 qw's hold two buffers for double buffering drawing/loading. + */ +enum SpriteDataMem { + // these three can have an offset of 0 or 400 depending on which buffer + Header = 0, // number of sprites (updated per chunk) + Vector = 1, // vector data (updated per chunk) + Adgif = 145, // adgifs (updated per chunk) + + // offset of first buffer + Buffer0 = 0, + // offset of second buffer + Buffer1 = 400, + + GiftagBuilding = 800, // used to store gs packets for xgkicking + // matrix data (different depending on group) + Matrix = 900, + // frame data (same for the whole frame) + FrameData = 980 +}; + +/*! + * The GS packet built by the sprite renderer. + */ +struct SpriteHud2DPacket { + GifTag adgif_giftag; // starts the adgif shader. 0 + AdGif user_adgif; // the adgif shader 16 + GifTag sprite_giftag; // 96 + math::Vector color; + Vector4f st0; + math::Vector xy0; + Vector4f st1; + math::Vector xy1; + Vector4f st2; + math::Vector xy2; + Vector4f st3; + math::Vector xy3; +}; + +/*! + * The layout of VU1 code memory + */ +enum SpriteProgMem { + Init = 0, // the sprite initialization program. runs once per frame. + Sprites2dGrp0 = 3, // world space 2d sprites + Sprites2dHud = 109, // hud sprites + Sprites3d = 211 // 3d sprites +}; + +static_assert(offsetof(SpriteFrameData, hmge_scale) == 256); +static_assert(sizeof(SpriteFrameData) == 0x290, "SpriteFrameData size"); + +class SpriteRenderer : public BucketRenderer { + public: + SpriteRenderer(const std::string& name, BucketId my_id); + void render(DmaFollower& dma, SharedRenderState* render_state) override; + void draw_debug_window() override; + static constexpr int SPRITES_PER_CHUNK = 48; + + private: + void render_distorter(DmaFollower& dma, SharedRenderState* render_state); + void handle_sprite_frame_setup(DmaFollower& dma); + void render_3d(DmaFollower& dma); + void render_2d_group0(DmaFollower& dma); + void render_fake_shadow(DmaFollower& dma); + void render_2d_group1(DmaFollower& dma, SharedRenderState* render_state); + void do_2d_group1_block_cpu(u32 count, SharedRenderState* render_state); + + u8 m_sprite_distorter_setup[7 * 16]; // direct data + u8 m_sprite_direct_setup[3 * 16]; + SpriteFrameData m_frame_data; // qwa: 980 + Sprite3DMatrixData m_3d_matrix_data; + SpriteHudMatrixData m_hud_matrix_data; + + SpriteVecData2d m_vec_data_2d[SPRITES_PER_CHUNK]; + AdGif m_adgif[SPRITES_PER_CHUNK]; + + struct DebugStats { + int blocks_2d_grp1 = 0; + int count_2d_grp1 = 0; + } m_debug_stats; + + bool m_extra_debug = false; + + DirectRenderer m_sprite_renderer; + DirectRenderer m_direct_renderer; +}; diff --git a/game/graphics/opengl_renderer/TextureUploadHandler.cpp b/game/graphics/opengl_renderer/TextureUploadHandler.cpp new file mode 100644 index 0000000000..a27bdf574d --- /dev/null +++ b/game/graphics/opengl_renderer/TextureUploadHandler.cpp @@ -0,0 +1,249 @@ +#include "third-party/fmt/core.h" +#include "third-party/imgui/imgui.h" + +#include "TextureUploadHandler.h" +#include "game/graphics/pipelines/opengl.h" + +TextureUploadHandler::TextureUploadHandler(const std::string& name, BucketId my_id) + : BucketRenderer(name, my_id) {} + +void TextureUploadHandler::render(DmaFollower& dma, SharedRenderState* render_state) { + m_stats = {}; + + // this is the data we get from the PC Port modification. + struct TextureUpload { + u64 page; + s64 mode; + }; + + std::vector uploads; + + // loop through all data, grabbing buckets + while (dma.current_tag_offset() != render_state->next_bucket) { + auto dma_tag = dma.current_tag(); + auto data = dma.read_and_advance(); + if (data.size_bytes == 0 && data.vif0() == 0 && data.vif1() == 0) { + continue; + } + + if (data.size_bytes == 16 && data.vifcode0().kind == VifCode::Kind::PC_PORT && + data.vif1() == 3) { + TextureUpload upload_data; + memcpy(&upload_data, data.data, sizeof(upload_data)); + uploads.push_back(upload_data); + + continue; + } + + if (dma_tag.kind == DmaTag::Kind::CALL) { + dma.read_and_advance(); // call + dma.read_and_advance(); // cnt + dma.read_and_advance(); // ret + // on next + assert(dma.current_tag_offset() == render_state->next_bucket); + } + } + + // if we're replaying a graphics dump, don't try to read ee memory + // TODO, we might still want to grab stuff from the cache + if (render_state->dump_playback) { + return; + } + + // NOTE: we don't actually copy the textures in the dma chain copying because they aren't + // reference by DMA tag. So there's the potential for race conditions if the game gets messed + // up and corrupts the texture memory. + const u8* ee_mem = (const u8*)render_state->ee_main_memory; + + // The logic here is a bit confusing. It works around an issue where higher LODs are uploaded + // before their CLUT in some cases. + if (uploads.size() == 2 && uploads[0].mode == 2 && uploads[1].mode == -2 && + uploads[0].page == uploads[1].page) { + bool has_segment[3] = {true, true, true}; + if (!try_to_populate_from_cache(uploads[0].page, has_segment, render_state)) { + // couldn't find this texture in cache, need to convert it + populate_cache(render_state->texture_pool->convert_textures( + ee_mem + uploads[0].page, -2, ee_mem, render_state->offset_of_s7), + render_state); + populate_cache(render_state->texture_pool->convert_textures( + ee_mem + uploads[0].page, 2, ee_mem, render_state->offset_of_s7), + render_state); + // after conversion, we should be able to populate the texture pool. + bool ok = try_to_populate_from_cache(uploads[0].page, has_segment, render_state); + assert(ok); + } + + } else if (uploads.size() == 1 && uploads[0].mode == -1) { + // look at the texture page and determine if we have it in cache. + bool has_segment[3] = {true, true, true}; + if (!try_to_populate_from_cache(uploads[0].page, has_segment, render_state)) { + populate_cache(render_state->texture_pool->convert_textures( + ee_mem + uploads[0].page, -1, ee_mem, render_state->offset_of_s7), + render_state); + bool ok = try_to_populate_from_cache(uploads[0].page, has_segment, render_state); + assert(ok); + } + + } else if (uploads.size() == 1 && uploads[0].mode == -2) { + bool has_segment[3] = {true, true, true}; + if (!try_to_populate_from_cache(uploads[0].page, has_segment, render_state)) { + populate_cache(render_state->texture_pool->convert_textures( + ee_mem + uploads[0].page, -2, ee_mem, render_state->offset_of_s7), + render_state); + bool ok = try_to_populate_from_cache(uploads[0].page, has_segment, render_state); + assert(ok); + } + + } else if (uploads.empty()) { + // do nothing. + } else { + fmt::print("unhandled upload sequence in {}:\n", m_name); + for (auto& upload : uploads) { + fmt::print(" page: 0x{:x} mode: {}\n", upload.page, upload.mode); + } + assert(false); + } +} + +void TextureUploadHandler::draw_debug_window() { + ImGui::Text("Textures this frame: %d", m_stats.textures_provided); + ImGui::Text("Textures converted: %d", m_stats.textures_converted); + ImGui::Text("Textures replaced: %d", m_stats.textures_evicted); +} + +namespace { +const char* goal_string(u32 ptr, const u8* memory_base) { + if (ptr == 0) { + assert(false); + } + return (const char*)(memory_base + ptr + 4); +} +} // namespace + +/*! + * Try to set an entry in the texture pool from a cached texture for the given page (GOAL pointer). + */ +bool TextureUploadHandler::try_to_populate_from_cache(u64 page, + const bool with_seg[3], + SharedRenderState* render_state) { + auto old_tex_provided = m_stats.textures_provided; + const u8* ee_mem = (const u8*)render_state->ee_main_memory; + auto tpage = ee_mem + page; + GoalTexturePage texture_page; + memcpy(&texture_page, tpage, sizeof(GoalTexturePage)); + + // loop over all textures in the page + for (int tex_idx = 0; tex_idx < texture_page.length; tex_idx++) { + // we might have some invalid textures, for whatever reason. The PS2 side checks for this. + GoalTexture tex; + if (texture_page.try_copy_texture_description(&tex, tex_idx, ee_mem, tpage, + render_state->offset_of_s7)) { + // loop over all mip levels of this texture + for (int mip_idx = 0; mip_idx < tex.num_mips; mip_idx++) { + // only grab mip levels that we requested (we don't want to overwrite vram that the engine + // expects us to not touch) + if (with_seg[tex.segment_of_mip(mip_idx)]) { + m_stats.textures_provided++; + + // lookup the texture by name! + auto it = m_tex_cache.find(goal_string(tex.name_ptr, ee_mem)); + if (it == m_tex_cache.end() || !it->second.at(mip_idx)) { + // failed to find it, reject the entire page load + m_stats.textures_provided = old_tex_provided; + return false; + } else { + // found it! Set it in the pool (just setting a pointer) + render_state->texture_pool->set_texture(tex.dest[mip_idx], it->second.at(mip_idx)); + } + } + } + } + } + return true; +} + +/*! + * Cache the given textures and set in pool + */ +void TextureUploadHandler::populate_cache( + const std::vector>& textures, + SharedRenderState* render_state) { + for (auto& tex : textures) { + // disable automatic GC of these textures. We need this - even if the texture becomes evicted + // from PS2 VRAM, we want to hold on to the conversion. Now this cache will be responsible for + // managing this texture. + tex->do_gc = false; + m_stats.textures_provided++; + m_stats.textures_converted++; + // put in pool too + render_state->texture_pool->set_texture(tex->dest, tex); + auto it = m_tex_cache.find(tex->name); + if (it != m_tex_cache.end()) { + if (it->second.at(tex->mip_level)) { + // replacing an existing, don't forget to kill the original. + m_stats.textures_evicted++; + render_state->texture_pool->discard(it->second.at(tex->mip_level)); + } + it->second.at(tex->mip_level) = tex; + } else { + std::vector> recs(7); // max mip + recs.at(tex->mip_level) = tex; + m_tex_cache.insert({tex->name, std::move(recs)}); + } + } +} + +/*! + * Unload any cached textures from GPU. + * Remove all textures from this cache. + * Set do_gc on all textures, as they may be in use in the pool and we may need them. + * + * Effectively, this will require all textures to re-converted and re-uploaded next time they are + * uploaded from the game. + */ +void TextureUploadHandler::evict_all() { + for (auto& e : m_tex_cache) { + for (auto& x : e.second) { + if (x) { + if (x->on_gpu) { + x->unload_from_gpu(); + } + x->do_gc = true; + } + } + } + m_tex_cache = {}; +} + +void TextureUploadHandler::serialize(Serializer& ser) { + if (ser.is_saving()) { + ser.save(m_tex_cache.size()); + for (auto& entry : m_tex_cache) { + ser.save_str(&entry.first); + ser.save(entry.second.size()); + for (auto& x : entry.second) { + if (x) { + ser.save(1); + x->serialize(ser); + } else { + ser.save(0); + } + } + } + } else { + evict_all(); + auto size = ser.load(); + for (size_t i = 0; i < size; i++) { + auto str = ser.load_string(); + std::vector> recs(ser.load()); + for (auto& x : recs) { + if (ser.load()) { + x = std::make_shared(); + x->serialize(ser); + x->on_gpu = false; + } + } + m_tex_cache.insert({str, std::move(recs)}); + } + } +} diff --git a/game/graphics/opengl_renderer/TextureUploadHandler.h b/game/graphics/opengl_renderer/TextureUploadHandler.h new file mode 100644 index 0000000000..abcfc760d8 --- /dev/null +++ b/game/graphics/opengl_renderer/TextureUploadHandler.h @@ -0,0 +1,36 @@ +#pragma once + +#include "game/graphics/opengl_renderer/BucketRenderer.h" +#include "game/graphics/texture/TexturePool.h" + +/*! + * The TextureUploadHandler receives textures uploads in the DMA chain and updates the TexturePool. + * It will attempt to cache textures when possible as converting and uploading them to the GPU is + * pretty expensive. + * + * Note that the PC Port sends a somewhat simplified texture upload message and this can't handle + * any arbitrary PS2 texture transfer. We rely on the texture metadata in GOAL to simplify this. + */ +class TextureUploadHandler : public BucketRenderer { + public: + TextureUploadHandler(const std::string& name, BucketId my_id); + void render(DmaFollower& dma, SharedRenderState* render_state) override; + void draw_debug_window() override; + void serialize(Serializer& ser) override; + + private: + void evict_all(); + bool try_to_populate_from_cache(u64 page, + const bool with_seg[3], + SharedRenderState* render_state); + void populate_cache(const std::vector>& textures, + SharedRenderState* render_state); + std::unordered_map>> m_tex_cache; + + struct { + u32 textures_provided = 0; + u32 textures_converted = 0; + u32 textures_evicted = 0; + + } m_stats; +}; diff --git a/game/graphics/opengl_renderer/debug_gui.cpp b/game/graphics/opengl_renderer/debug_gui.cpp new file mode 100644 index 0000000000..4032a3db8b --- /dev/null +++ b/game/graphics/opengl_renderer/debug_gui.cpp @@ -0,0 +1,108 @@ + +#include "debug_gui.h" +#include +#include "third-party/imgui/imgui.h" + +void FrameTimeRecorder::finish_frame() { + m_frame_times[m_idx++] = m_timer.getMs(); + if (m_idx == SIZE) { + m_idx = 0; + } +} + +void FrameTimeRecorder::start_frame() { + m_timer.start(); +} + +void FrameTimeRecorder::draw_window(const DmaStats& dma_stats) { + auto* p_open = &m_open; + ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoDecoration | + ImGuiWindowFlags_AlwaysAutoResize | + ImGuiWindowFlags_NoSavedSettings | + ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav; + + const float PAD = 10.0f; + const ImGuiViewport* viewport = ImGui::GetMainViewport(); + ImVec2 work_pos = viewport->WorkPos; // Use work area to avoid menu-bar/task-bar, if any! + ImVec2 work_size = viewport->WorkSize; + ImVec2 window_pos, window_pos_pivot; + window_pos.x = (work_pos.x + work_size.x - PAD); + window_pos.y = (work_pos.y + work_size.y - PAD); + window_pos_pivot.x = 1.0f; + window_pos_pivot.y = 1.0f; + ImGui::SetNextWindowPos(window_pos, ImGuiCond_Always, window_pos_pivot); + + ImGui::SetNextWindowBgAlpha(0.35f); // Transparent background + if (ImGui::Begin("Frame Timing", p_open, window_flags)) { + ImGui::Text("DMA: sync ms %.1f, tc %4d, sz %3d KB, ch %d", dma_stats.sync_time_ms, + dma_stats.num_tags, (dma_stats.num_data_bytes) / (1 << 10), dma_stats.num_chunks); + float worst = 0, total = 0; + for (auto x : m_frame_times) { + worst = std::max(x, worst); + total += x; + } + if (total / SIZE > 17.) { + ImGui::TextColored(ImVec4(1.0, 0.3, 0.3, 1.0), "avg: %.1f", total / SIZE); + } else { + ImGui::Text("avg: %.1f", total / SIZE); + } + ImGui::SameLine(); + if (worst > 17.) { + ImGui::TextColored(ImVec4(1.0, 0.3, 0.3, 1.0), "worst: %.1f", worst); + } else { + ImGui::Text("worst: %.1f", worst); + } + + ImGui::Separator(); + ImGui::PlotLines( + "0-20ms", + [](void* data, int idx) { + auto* me = (FrameTimeRecorder*)data; + return me->m_frame_times[(me->m_idx + idx) % SIZE]; + }, + (void*)this, SIZE, 0, nullptr, 0, 20., ImVec2(300, 40)); + + ImGui::Checkbox("Run", &m_play); + ImGui::SameLine(); + if (ImGui::Button("Single Frame Advance")) { + m_single_frame = true; + } + } + ImGui::End(); +} + +void OpenGlDebugGui::start_frame() { + m_frame_timer.start_frame(); +} + +void OpenGlDebugGui::finish_frame() { + m_frame_timer.finish_frame(); +} + +void OpenGlDebugGui::draw(const DmaStats& dma_stats) { + if (ImGui::BeginMainMenuBar()) { + if (ImGui::BeginMenu("Windows")) { + ImGui::MenuItem("Frame Time Plot", nullptr, &m_draw_frame_time); + ImGui::MenuItem("Render Debug", nullptr, &m_draw_debug); + ImGui::EndMenu(); + } + + if (ImGui::BeginMenu("Gfx Dump")) { + ImGui::MenuItem("Dump Next Frame!", nullptr, &m_want_save); + bool old_replay = m_want_replay; + ImGui::MenuItem("Load Saved Dump", nullptr, &m_want_replay); + if (!old_replay && m_want_replay) { + m_want_dump_load = true; + } + ImGui::Separator(); + + ImGui::InputText("Filename", m_dump_save_name, 12); + ImGui::EndMenu(); + } + } + ImGui::EndMainMenuBar(); + + if (m_draw_frame_time) { + m_frame_timer.draw_window(dma_stats); + } +} \ No newline at end of file diff --git a/game/graphics/opengl_renderer/debug_gui.h b/game/graphics/opengl_renderer/debug_gui.h new file mode 100644 index 0000000000..50901979e3 --- /dev/null +++ b/game/graphics/opengl_renderer/debug_gui.h @@ -0,0 +1,57 @@ +#pragma once + +/*! + * @file debug_gui.h + * The debug menu-bar and frame timing window + */ + +#include "common/util/Timer.h" +#include "game/graphics/dma/dma.h" + +class FrameTimeRecorder { + public: + static constexpr int SIZE = 60 * 5; + + void finish_frame(); + void start_frame(); + void draw_window(const DmaStats& dma_stats); + bool should_advance_frame() { + if (m_single_frame) { + m_single_frame = false; + return true; + } + return m_play; + } + + private: + float m_frame_times[SIZE] = {0}; + int m_idx = 0; + Timer m_timer; + bool m_open = true; + + bool m_play = true; + bool m_single_frame = false; +}; + +class OpenGlDebugGui { + public: + void start_frame(); + void finish_frame(); + void draw(const DmaStats& dma_stats); + bool should_draw_render_debug() const { return m_draw_debug; } + bool& want_save() { return m_want_save; } + bool& want_dump_replay() { return m_want_replay; } + bool& want_dump_load() { return m_want_dump_load; } + const char* dump_name() const { return m_dump_save_name; } + + bool should_advance_frame() { return m_frame_timer.should_advance_frame(); } + + private: + FrameTimeRecorder m_frame_timer; + bool m_draw_frame_time = false; + bool m_draw_debug = false; + bool m_want_save = false; + bool m_want_replay = false; + bool m_want_dump_load = false; + char m_dump_save_name[256] = "dump.bin"; +}; \ No newline at end of file diff --git a/game/graphics/opengl_renderer/shaders/debug_red.frag b/game/graphics/opengl_renderer/shaders/debug_red.frag new file mode 100644 index 0000000000..5ad70477e5 --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/debug_red.frag @@ -0,0 +1,11 @@ +// Debug shader for drawing things in red. Uses the same conventions as direct_basic, see there for more details + +#version 330 core + +out vec4 color; + +in vec4 fragment_color; + +void main() { + color = fragment_color; +} diff --git a/game/graphics/opengl_renderer/shaders/debug_red.vert b/game/graphics/opengl_renderer/shaders/debug_red.vert new file mode 100644 index 0000000000..717eef2008 --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/debug_red.vert @@ -0,0 +1,12 @@ +// Debug shader for drawing things in red. Uses the same conventions as direct_basic, see there for more details + +#version 330 core + +layout (location = 0) in vec3 position_in; + +out vec4 fragment_color; + +void main() { + gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z, 1.0); + fragment_color = vec4(1.0, 0, 0, 0.7); +} \ No newline at end of file diff --git a/game/graphics/opengl_renderer/shaders/direct_basic.vert b/game/graphics/opengl_renderer/shaders/direct_basic.vert index 44adb20d02..12e56d112a 100644 --- a/game/graphics/opengl_renderer/shaders/direct_basic.vert +++ b/game/graphics/opengl_renderer/shaders/direct_basic.vert @@ -1,3 +1,5 @@ +// Shader for the DirectRenderer. Inputs are RGBA + position. + #version 330 core layout (location = 0) in vec3 position_in; @@ -6,6 +8,7 @@ layout (location = 1) in vec4 rgba_in; out vec4 fragment_color; void main() { + // Note: position.y is multiplied by 32 instead of 16 to undo the half-height for interlacing stuff. gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z, 1.0); fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w + 0.5); } \ No newline at end of file diff --git a/game/graphics/opengl_renderer/shaders/direct_basic_textured_tcc0.frag b/game/graphics/opengl_renderer/shaders/direct_basic_textured_tcc0.frag new file mode 100644 index 0000000000..322f8ed786 --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/direct_basic_textured_tcc0.frag @@ -0,0 +1,13 @@ +#version 330 core + +out vec4 color; + +in vec4 fragment_color; +in vec2 tex_coord; +uniform sampler2D tex_T0; + +void main() { + vec4 T0 = texture(tex_T0, tex_coord); + T0.w = 1.0; + color = fragment_color * T0 * 2.0; +} diff --git a/game/graphics/opengl_renderer/shaders/direct_basic_textured_tcc0.vert b/game/graphics/opengl_renderer/shaders/direct_basic_textured_tcc0.vert new file mode 100644 index 0000000000..89764e331c --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/direct_basic_textured_tcc0.vert @@ -0,0 +1,14 @@ +#version 330 core + +layout (location = 0) in vec3 position_in; +layout (location = 1) in vec4 rgba_in; +layout (location = 2) in vec2 tex_coord_in; + +out vec4 fragment_color; +out vec2 tex_coord; + +void main() { + gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z, 1.0); + fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.a * 2); + tex_coord = tex_coord_in; +} \ No newline at end of file diff --git a/game/graphics/opengl_renderer/shaders/sprite_cpu.frag b/game/graphics/opengl_renderer/shaders/sprite_cpu.frag new file mode 100644 index 0000000000..96f1d16f83 --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/sprite_cpu.frag @@ -0,0 +1,16 @@ +#version 330 core + +out vec4 color; + +in vec4 fragment_color; +in vec2 tex_coord; +uniform sampler2D tex_T0; + +void main() { + vec4 T0 = texture(tex_T0, tex_coord); + vec4 tex_color = fragment_color * T0 * 2.0; + if (tex_color.a <= 38./255.) { + discard; + } + color = tex_color; +} diff --git a/game/graphics/opengl_renderer/shaders/sprite_cpu.vert b/game/graphics/opengl_renderer/shaders/sprite_cpu.vert new file mode 100644 index 0000000000..500a6e8703 --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/sprite_cpu.vert @@ -0,0 +1,14 @@ +#version 330 core + +layout (location = 0) in vec3 position_in; +layout (location = 1) in vec4 rgba_in; +layout (location = 2) in vec2 tex_coord_in; + +out vec4 fragment_color; +out vec2 tex_coord; + +void main() { + gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z, 1.0); + fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w * 2.); + tex_coord = tex_coord_in; +} \ No newline at end of file diff --git a/game/graphics/opengl_renderer/shaders/sprite_cpu_afail.frag b/game/graphics/opengl_renderer/shaders/sprite_cpu_afail.frag new file mode 100644 index 0000000000..46c2494127 --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/sprite_cpu_afail.frag @@ -0,0 +1,16 @@ +#version 330 core + +out vec4 color; + +in vec4 fragment_color; +in vec2 tex_coord; +uniform sampler2D tex_T0; + +void main() { + vec4 T0 = texture(tex_T0, tex_coord); + vec4 tex_color = fragment_color * T0 * 2.0; + if (tex_color.a > 38./255.) { + discard; + } + color = tex_color; +} diff --git a/game/graphics/opengl_renderer/shaders/sprite_cpu_afail.vert b/game/graphics/opengl_renderer/shaders/sprite_cpu_afail.vert new file mode 100644 index 0000000000..500a6e8703 --- /dev/null +++ b/game/graphics/opengl_renderer/shaders/sprite_cpu_afail.vert @@ -0,0 +1,14 @@ +#version 330 core + +layout (location = 0) in vec3 position_in; +layout (location = 1) in vec4 rgba_in; +layout (location = 2) in vec2 tex_coord_in; + +out vec4 fragment_color; +out vec2 tex_coord; + +void main() { + gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z, 1.0); + fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w * 2.); + tex_coord = tex_coord_in; +} \ No newline at end of file diff --git a/game/graphics/pipelines/opengl.cpp b/game/graphics/pipelines/opengl.cpp index 4a9c0388d4..e61677c566 100644 --- a/game/graphics/pipelines/opengl.cpp +++ b/game/graphics/pipelines/opengl.cpp @@ -22,6 +22,10 @@ #include "common/log/log.h" #include "common/goal_constants.h" #include "game/runtime.h" +#include "common/util/Timer.h" +#include "game/graphics/opengl_renderer/debug_gui.h" +#include "common/util/FileUtil.h" +#include "common/util/compress.h" namespace { @@ -34,6 +38,7 @@ struct GraphicsData { std::mutex dma_mutex; std::condition_variable dma_cv; u64 frame_idx = 0; + u64 frame_idx_of_input_data = 0; bool has_data_to_render = false; FixedChunkDmaCopier dma_copier; @@ -43,6 +48,15 @@ struct GraphicsData { // temporary opengl renderer OpenGLRenderer ogl_renderer; + OpenGlDebugGui debug_gui; + + Serializer loaded_dump; + + void serialize(Serializer& ser) { + dma_copier.serialize_last_result(ser); + ogl_renderer.serialize(ser); + } + GraphicsData() : dma_copier(EE_MAIN_MEM_SIZE), texture_pool(std::make_shared()), @@ -137,6 +151,7 @@ static std::shared_ptr gl_make_main_display(int width, glfwSwapInterval(settings.vsync); SetDisplayCallbacks(window); + Pad::initialize(); if (HasError()) { lg::error("gl_make_main_display error"); @@ -175,18 +190,26 @@ static void gl_kill_display(GfxDisplay* display) { glfwDestroyWindow(display->window_glfw); } -static void gl_render_display(GfxDisplay* display) { - GLFWwindow* window = display->window_glfw; +void make_gfx_dump() { + Timer ser_timer; + Serializer ser; - // poll events - glfwPollEvents(); - glfwMakeContextCurrent(window); + // save the dma chain and renderer state + g_gfx_data->serialize(ser); + auto result = ser.get_save_result(); + Timer compression_timer; + auto compressed = compression::compress_zstd(result.first, result.second); + lg::info("Serialized graphics state in {:.1f} ms, {:.3f} MB, compressed {:.3f} MB {:.1f} ms", + ser_timer.getMs(), ((double)result.second) / (1 << 20), + ((double)compressed.size() / (1 << 20)), compression_timer.getMs()); - // imgui start of frame - ImGui_ImplOpenGL3_NewFrame(); - ImGui_ImplGlfw_NewFrame(); - ImGui::NewFrame(); + file_util::create_dir_if_needed(file_util::get_file_path({"gfx_dumps"})); + file_util::write_binary_file( + file_util::get_file_path({"gfx_dumps", g_gfx_data->debug_gui.dump_name()}), compressed.data(), + compressed.size()); +} +void render_game_frame(int width, int height) { // wait for a copied chain. bool got_chain = false; { @@ -199,11 +222,21 @@ static void gl_render_display(GfxDisplay* display) { // render that chain. if (got_chain) { + // g_gfx_data->ogl_renderer.render(DmaFollower(g_gfx_data->dma_copier.get_last_input_data(), + // g_gfx_data->dma_copier.get_last_input_offset()), + // width, height); + + // we want to serialize before rendering + if (g_gfx_data->debug_gui.want_save()) { + make_gfx_dump(); + g_gfx_data->debug_gui.want_save() = false; + } + auto& chain = g_gfx_data->dma_copier.get_last_result(); - int width, height; - glfwGetFramebufferSize(window, &width, &height); + g_gfx_data->frame_idx_of_input_data = g_gfx_data->frame_idx; g_gfx_data->ogl_renderer.render(DmaFollower(chain.data.data(), chain.start_offset), width, - height); + height, g_gfx_data->debug_gui.should_draw_render_debug(), + false); } // before vsync, mark the chain as rendered. @@ -214,16 +247,65 @@ static void gl_render_display(GfxDisplay* display) { g_gfx_data->has_data_to_render = false; g_gfx_data->sync_cv.notify_all(); } +} + +void render_dump_frame(int width, int height) { + Timer deser_timer; + if (g_gfx_data->debug_gui.want_dump_load()) { + auto data = file_util::read_binary_file( + file_util::get_file_path({"gfx_dumps", g_gfx_data->debug_gui.dump_name()})); + auto decompressed = compression::decompress_zstd(data.data(), data.size()); + g_gfx_data->loaded_dump = Serializer(decompressed.data(), decompressed.size()); + } + + g_gfx_data->loaded_dump.reset_load(); + g_gfx_data->serialize(g_gfx_data->loaded_dump); + + if (g_gfx_data->debug_gui.want_dump_load()) { + lg::info("Loaded and deserialized graphics state in {:.1f} ms, {:.3f} MB", deser_timer.getMs(), + ((double)g_gfx_data->loaded_dump.data_size()) / (1 << 20)); + } + g_gfx_data->debug_gui.want_dump_load() = false; + + auto& chain = g_gfx_data->dma_copier.get_last_result(); + g_gfx_data->ogl_renderer.render(DmaFollower(chain.data.data(), chain.start_offset), width, height, + g_gfx_data->debug_gui.should_draw_render_debug(), true); +} + +static void gl_render_display(GfxDisplay* display) { + GLFWwindow* window = display->window_glfw; + + // poll events + glfwPollEvents(); + glfwMakeContextCurrent(window); + Pad::update_gamepads(); + + // imgui start of frame + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); + + int width, height; + glfwGetFramebufferSize(window, &width, &height); + + if (g_gfx_data->debug_gui.want_dump_replay()) { + render_dump_frame(width, height); + } else if (g_gfx_data->debug_gui.should_advance_frame()) { + render_game_frame(width, height); + } // render imgui + g_gfx_data->debug_gui.draw(g_gfx_data->dma_copier.get_last_result().stats); ImGui::Render(); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); // actual vsync + g_gfx_data->debug_gui.finish_frame(); glfwSwapBuffers(window); + g_gfx_data->debug_gui.start_frame(); // toggle even odd and wake up engine waiting on vsync. - { + if (!g_gfx_data->debug_gui.want_dump_replay()) { std::unique_lock lock(g_gfx_data->sync_mutex); g_gfx_data->frame_idx++; @@ -247,7 +329,7 @@ u32 gl_vsync() { } std::unique_lock lock(g_gfx_data->sync_mutex); - auto init_frame = g_gfx_data->frame_idx; + auto init_frame = g_gfx_data->frame_idx_of_input_data; g_gfx_data->sync_cv.wait(lock, [=] { return g_gfx_data->frame_idx > init_frame; }); return g_gfx_data->frame_idx & 1; @@ -290,9 +372,7 @@ void gl_send_chain(const void* data, u32 offset) { // The renderers should just operate on DMA chains, so eliminating this step in the future may // be easy. - // Timer copy_timer; g_gfx_data->dma_copier.run(data, offset); - // fmt::print("copy took {:.3f}ms\n", copy_timer.getMs()); g_gfx_data->has_data_to_render = true; g_gfx_data->dma_cv.notify_all(); @@ -300,7 +380,8 @@ void gl_send_chain(const void* data, u32 offset) { } void gl_texture_upload_now(const u8* tpage, int mode, u32 s7_ptr) { - if (g_gfx_data) { + // block + if (g_gfx_data && !g_gfx_data->debug_gui.want_dump_replay()) { // just pass it to the texture pool. // the texture pool will take care of locking. // we don't want to lock here for the entire duration of the conversion. @@ -309,7 +390,7 @@ void gl_texture_upload_now(const u8* tpage, int mode, u32 s7_ptr) { } void gl_texture_relocate(u32 destination, u32 source, u32 format) { - if (g_gfx_data) { + if (g_gfx_data && !g_gfx_data->debug_gui.want_dump_replay()) { g_gfx_data->texture_pool->relocate(destination, source, format); } } diff --git a/game/graphics/texture/TextureConverter.cpp b/game/graphics/texture/TextureConverter.cpp index 597d697191..58c18243f5 100644 --- a/game/graphics/texture/TextureConverter.cpp +++ b/game/graphics/texture/TextureConverter.cpp @@ -174,4 +174,8 @@ void TextureConverter::download_rgba8888(u8* result, } assert(out_offset == expected_size_bytes); +} + +void TextureConverter::serialize(Serializer& ser) { + ser.from_pod_vector(&m_vram); } \ No newline at end of file diff --git a/game/graphics/texture/TextureConverter.h b/game/graphics/texture/TextureConverter.h index f571e3c510..a553764053 100644 --- a/game/graphics/texture/TextureConverter.h +++ b/game/graphics/texture/TextureConverter.h @@ -3,6 +3,7 @@ #include #include "common/common_types.h" +#include "common/util/Serializer.h" class TextureConverter { public: @@ -17,6 +18,7 @@ class TextureConverter { u32 clut_psm, u32 clut_vram_addr, u32 expected_size_bytes); + void serialize(Serializer& ser); private: std::vector m_vram; diff --git a/game/graphics/texture/TexturePool.cpp b/game/graphics/texture/TexturePool.cpp index b8d86c05b6..d656d1483f 100644 --- a/game/graphics/texture/TexturePool.cpp +++ b/game/graphics/texture/TexturePool.cpp @@ -1,3 +1,5 @@ +#include + #include "TexturePool.h" #include "third-party/fmt/core.h" @@ -14,8 +16,9 @@ // this simply converts the PS2 format textures loaded by the game, then puts them into the PC // port texture pool. -constexpr bool dump_textures_to_file = false; +// constexpr bool dump_textures_to_file = false; +namespace { const char empty_string[] = ""; const char* goal_string(u32 ptr, const u8* memory_base) { if (ptr == 0) { @@ -24,71 +27,237 @@ const char* goal_string(u32 ptr, const u8* memory_base) { return (const char*)(memory_base + ptr + 4); } -struct GoalTexture { - s16 w; - s16 h; - u8 num_mips; - u8 tex1_control; - u8 psm; - u8 mip_shift; - u16 clutpsm; - u16 dest[7]; - u16 clut_dest; - u8 width[7]; - u32 name_ptr; - u32 size; - float uv_dist; - u32 masks[3]; +} // namespace - s32 segment_of_mip(s32 mip) const { - if (2 >= num_mips) { - return num_mips - mip - 1; +std::string GoalTexturePage::print() const { + return fmt::format("Tpage id {} textures {} seg0 {} {} seg1 {} {} seg2 {} {}\n", id, length, + segment[0].size, segment[0].dest, segment[1].size, segment[1].dest, + segment[2].size, segment[2].dest); +} + +void TextureRecord::serialize(Serializer& ser) { + ser.from_str(&page_name); + ser.from_str(&name); + ser.from_ptr(&mip_level); + ser.from_ptr(&psm); + ser.from_ptr(&cpsm); + ser.from_ptr(&w); + ser.from_ptr(&h); + ser.from_ptr(&data_segment); + ser.from_ptr(&on_gpu); + ser.from_ptr(&do_gc); + ser.from_ptr(&gpu_texture); + ser.from_ptr(&dest); + ser.from_pod_vector(&data); + ser.from_ptr(&min_a_zero); + ser.from_ptr(&max_a_zero); + ser.from_ptr(&min_a_nonzero); + ser.from_ptr(&max_a_nonzero); +} + +void TextureData::serialize(Serializer& ser) { + if (ser.is_saving()) { + if (normal_texture) { + ser.save(1); // has it. + normal_texture->serialize(ser); } else { - return std::max(0, 2 - mip); + ser.save(0); + } + + if (mt4hh_texture) { + ser.save(1); // has it. + mt4hh_texture->serialize(ser); + } else { + ser.save(0); + } + } else { + u8 has_normal = ser.load(); + if (has_normal) { + normal_texture = std::make_shared(); + normal_texture->serialize(ser); + // after deserializing, nothing is on the GPU + normal_texture->on_gpu = false; + // there will be a duplicate copy of this texture in the bucket, we want this one to be gc'd + normal_texture->do_gc = true; + } else { + normal_texture.reset(); + } + + u8 has_mt4 = ser.load(); + if (has_mt4) { + mt4hh_texture = std::make_shared(); + mt4hh_texture->serialize(ser); + mt4hh_texture->on_gpu = false; + mt4hh_texture->do_gc = true; + } else { + mt4hh_texture.reset(); } } -}; +} -static_assert(sizeof(GoalTexture) == 60, "GoalTexture size"); -static_assert(offsetof(GoalTexture, clutpsm) == 8); -static_assert(offsetof(GoalTexture, clut_dest) == 24); +void TexturePool::serialize(Serializer& ser) { + m_tex_converter.serialize(ser); -struct GoalTexturePage { - struct Seg { - u32 block_data_ptr; - u32 size; - u32 dest; - }; - u32 file_info_ptr; - u32 name_ptr; - u32 id; - s32 length; // texture count - u32 mip0_size; - u32 size; - Seg segment[3]; - u32 pad[16]; - // start of array. - - std::string print() const { - return fmt::format("Tpage id {} textures {} seg0 {} {} seg1 {} {} seg2 {} {}\n", id, length, - segment[0].size, segment[0].dest, segment[1].size, segment[1].dest, - segment[2].size, segment[2].dest); + if (ser.is_loading()) { + remove_garbage_textures(); + unload_all_textures(); } + for (auto& tex : m_textures) { + tex.serialize(ser); + } +} - bool try_copy_texture_description(GoalTexture* dest, - int idx, - const u8* memory_base, - const u8* tpage, - u32 s7_ptr) { - u32 ptr; - memcpy(&ptr, tpage + sizeof(GoalTexturePage) + 4 * idx, 4); - if (ptr == s7_ptr) { - return false; +void TexturePool::unload_all_textures() { + for (auto& tex : m_textures) { + if (tex.normal_texture && tex.normal_texture->on_gpu) { + tex.normal_texture->unload_from_gpu(); + } + + if (tex.mt4hh_texture && tex.mt4hh_texture->on_gpu) { + tex.mt4hh_texture->unload_from_gpu(); } - memcpy(dest, memory_base + ptr, sizeof(GoalTexture)); - return true; } -}; +} + +void TextureRecord::unload_from_gpu() { + assert(on_gpu); + GLuint tex_id = gpu_texture; + glBindTexture(GL_TEXTURE_2D, tex_id); + glDeleteTextures(1, &tex_id); + on_gpu = false; + gpu_texture = -1; +} + +std::vector> TexturePool::convert_textures(const u8* tpage, + int mode, + const u8* memory_base, + u32 s7_ptr) { + Timer timer; + std::vector> result; + + bool dump_textures_to_file = false; + // extract the texture-page object. This is just a description of the page data. + GoalTexturePage texture_page; + memcpy(&texture_page, tpage, sizeof(GoalTexturePage)); + + bool has_segment[3] = {true, true, true}; + + u32 sizes[3] = {texture_page.segment[0].size, texture_page.segment[1].size, + texture_page.segment[2].size}; + if (mode == -1) { + // I don't really understand what's going on here with the size. + // the sizes given aren't the actual sizes in memory, so if you just use that, you get the + // wrong answer. I solved this in the decompiler by using the size of the actual data, but we + // don't really have that here. + u32 size = ((sizes[0] + sizes[1] + sizes[2] + 255) / 256) * 256; + + m_tex_converter.upload(memory_base + texture_page.segment[0].block_data_ptr, + texture_page.segment[0].dest, size); + + } else if (mode == 2) { + // dump_textures_to_file = true; + has_segment[0] = false; + has_segment[1] = false; + u32 size = ((sizes[2] + 255) / 256) * 256; + + // dest is in 4-byte vram words + m_tex_converter.upload(memory_base + texture_page.segment[2].block_data_ptr, + texture_page.segment[2].dest, size); + } else if (mode == -2) { + has_segment[2] = false; + // I don't really understand what's going on here with the size. + // the selector texture the hud page will be missing the clut unless I make this bigger. + u32 size = ((sizes[0] + sizes[1] + 2047) / 256) * 256; + m_tex_converter.upload(memory_base + texture_page.segment[0].block_data_ptr, + texture_page.segment[0].dest, size); + } else { + // no reason to skip this, other than + lg::error("TexturePool skipping upload now with mode {}.", mode); + return {}; + } + + // loop over all texture in the tpage and download them. + for (int tex_idx = 0; tex_idx < texture_page.length; tex_idx++) { + GoalTexture tex; + if (texture_page.try_copy_texture_description(&tex, tex_idx, memory_base, tpage, s7_ptr)) { + // each texture may have multiple mip levels. + for (int mip_idx = 0; mip_idx < tex.num_mips; mip_idx++) { + if (has_segment[tex.segment_of_mip(mip_idx)]) { + u32 ww = tex.w >> mip_idx; + u32 hh = tex.h >> mip_idx; + u32 size_bytes = ww * hh * 4; + + auto texture_record = std::make_shared(); + texture_record->page_name = goal_string(texture_page.name_ptr, memory_base); + texture_record->name = goal_string(tex.name_ptr, memory_base); + texture_record->mip_level = mip_idx; + texture_record->w = ww; + texture_record->h = hh; + texture_record->data_segment = tex.segment_of_mip(mip_idx); + texture_record->data.resize(size_bytes); + texture_record->psm = tex.psm; + texture_record->cpsm = tex.clutpsm; + texture_record->dest = tex.dest[mip_idx]; + + m_tex_converter.download_rgba8888(texture_record->data.data(), tex.dest[mip_idx], + tex.width[mip_idx], ww, hh, tex.psm, tex.clutpsm, + tex.clut_dest, size_bytes); + + u8 max_a_zero = 0; + u8 min_a_zero = 255; + u8 max_a_nonzero = 0; + u8 min_a_nonzero = 255; + for (u32 i = 0; i < ww * hh; i++) { + u8 r = texture_record->data[i * 4 + 0]; + u8 g = texture_record->data[i * 4 + 1]; + u8 b = texture_record->data[i * 4 + 2]; + u8 a = texture_record->data[i * 4 + 3]; + if (r || g || b) { + max_a_nonzero = std::max(max_a_nonzero, a); + min_a_nonzero = std::min(min_a_nonzero, a); + } else { + max_a_zero = std::max(max_a_zero, a); + min_a_zero = std::min(min_a_zero, a); + } + } + texture_record->max_a_zero = max_a_zero; + texture_record->min_a_zero = min_a_zero; + texture_record->max_a_nonzero = max_a_nonzero; + texture_record->min_a_nonzero = min_a_nonzero; + + if (texture_record->name == "selector" || texture_record->name == "next") { + fmt::print("{}: {} {} {} {}\n", texture_record->name, tex.psm, tex.clutpsm, + tex.clut_dest * 256 / 4, + texture_page.segment[0].dest + ((sizes[0] + sizes[1] + 255) / 256) * 256); + } + + fmt::print("TEX: {} nz ({}, {}) z ({}, {}0\n", texture_record->name, + texture_record->min_a_nonzero, texture_record->max_a_nonzero, + texture_record->min_a_zero, texture_record->max_a_zero); + + // Debug output. + if (dump_textures_to_file) { + const char* tpage_name = goal_string(texture_page.name_ptr, memory_base); + const char* tex_name = goal_string(tex.name_ptr, memory_base); + file_util::create_dir_if_needed( + file_util::get_file_path({"debug_out", "textures", tpage_name})); + file_util::write_rgba_png( + fmt::format( + file_util::get_file_path({"debug_out", "textures", tpage_name, "{}-{}-{}.png"}), + tex_idx, tex_name, mip_idx), + texture_record->data.data(), ww, hh); + } + result.push_back(std::move(texture_record)); + } + } + } else { + // texture was #f, skip it. + } + } + + fmt::print("upload now took {:.2f} ms\n", timer.getMs()); + return result; +} /*! * Handle a GOAL texture-page object being uploaded to VRAM. @@ -104,93 +273,31 @@ struct GoalTexturePage { * multiple frames. */ void TexturePool::handle_upload_now(const u8* tpage, int mode, const u8* memory_base, u32 s7_ptr) { - Timer timer; - - // extract the texture-page object. This is just a description of the page data. - GoalTexturePage texture_page; - memcpy(&texture_page, tpage, sizeof(GoalTexturePage)); - - u32 sizes[3] = {texture_page.segment[0].size, texture_page.segment[1].size, - texture_page.segment[2].size}; - if (mode == -1) { - // I don't really understand what's going on here with the size. - // the sizes given aren't the actual sizes in memory, so if you just use that, you get the - // wrong answer. I solved this in the decompiler by using the size of the actual data, but we - // don't really have that here. - u32 size = ((sizes[0] + sizes[1] + sizes[2] + 255) / 256) * 256; - m_tex_converter.upload(memory_base + texture_page.segment[0].block_data_ptr, - texture_page.segment[0].dest, size); - - } else { - // no reason to skip this, other than - lg::error("TexturePool skipping upload now with mode {}.", mode); - return; + auto textures = convert_textures(tpage, mode, memory_base, s7_ptr); + for (auto& tex : textures) { + set_texture(tex->dest, tex); } - - // loop over all texture in the tpage and download them. - for (int tex_idx = 0; tex_idx < texture_page.length; tex_idx++) { - GoalTexture tex; - if (texture_page.try_copy_texture_description(&tex, tex_idx, memory_base, tpage, s7_ptr)) { - // each texture may have multiple mip levels. - for (int mip_idx = 0; mip_idx < tex.num_mips; mip_idx++) { - u32 ww = tex.w >> mip_idx; - u32 hh = tex.h >> mip_idx; - u32 size_bytes = ww * hh * 4; - - auto texture_record = std::make_unique(); - texture_record->page_name = goal_string(texture_page.name_ptr, memory_base); - texture_record->name = goal_string(tex.name_ptr, memory_base); - texture_record->mip_level = mip_idx; - texture_record->w = ww; - texture_record->h = hh; - texture_record->data_segment = tex.segment_of_mip(mip_idx); - texture_record->data.resize(size_bytes); - - m_tex_converter.download_rgba8888(texture_record->data.data(), tex.dest[mip_idx], - tex.width[mip_idx], ww, hh, tex.psm, tex.clutpsm, - tex.clut_dest, size_bytes); - - // Debug output. - if (dump_textures_to_file) { - const char* tpage_name = goal_string(texture_page.name_ptr, memory_base); - const char* tex_name = goal_string(tex.name_ptr, memory_base); - file_util::create_dir_if_needed( - file_util::get_file_path({"debug_out", "textures", tpage_name})); - file_util::write_rgba_png( - fmt::format( - file_util::get_file_path({"debug_out", "textures", tpage_name, "{}-{}-{}.png"}), - tex_idx, tex_name, mip_idx), - texture_record->data.data(), ww, hh); - } - if (tex.psm == 44) { - set_mt4hh_texture(tex.dest[mip_idx], std::move(texture_record)); - } else { - set_texture(tex.dest[mip_idx], std::move(texture_record)); - } - } - } else { - // texture was #f, skip it. - } - } - - fmt::print("upload now took {:.2f} ms\n", timer.getMs()); } /*! * Store a texture in the pool. Location is specified like TBP. */ -void TexturePool::set_texture(u32 location, std::unique_ptr&& record) { - if (m_textures.at(location).normal_texture) { - m_garbage_textures.push_back(std::move(m_textures[location].normal_texture)); +void TexturePool::set_texture(u32 location, std::shared_ptr record) { + if (record->psm == 44) { + if (m_textures.at(location).mt4hh_texture) { + if (record->do_gc && m_textures.at(location).mt4hh_texture != record) { + m_garbage_textures.push_back(std::move(m_textures[location].mt4hh_texture)); + } + } + m_textures[location].mt4hh_texture = std::move(record); + } else { + if (m_textures.at(location).normal_texture) { + if (record->do_gc && m_textures.at(location).normal_texture != record) { + m_garbage_textures.push_back(std::move(m_textures[location].normal_texture)); + } + } + m_textures[location].normal_texture = std::move(record); } - m_textures[location].normal_texture = std::move(record); -} - -void TexturePool::set_mt4hh_texture(u32 location, std::unique_ptr&& record) { - if (m_textures.at(location).mt4hh_texture) { - m_garbage_textures.push_back(std::move(m_textures[location].mt4hh_texture)); - } - m_textures[location].mt4hh_texture = std::move(record); } /*! @@ -210,14 +317,23 @@ void TexturePool::draw_debug_window() { int id = 0; int total_vram_bytes = 0; int total_textures = 0; + int total_displayed_textures = 0; int total_uploaded_textures = 0; + ImGui::Text("GC %d on GPU %d", m_most_recent_gc_count, m_most_recent_gc_count_gpu); + ImGui::InputText("texture search", m_regex_input, sizeof(m_regex_input)); + std::regex regex(m_regex_input[0] ? m_regex_input : ".*"); + for (auto& record : m_textures) { if (record.normal_texture) { - ImGui::PushID(id++); - auto& tex = *record.normal_texture; - draw_debug_for_tex(tex.name, tex); - ImGui::PopID(); total_textures++; + auto& tex = *record.normal_texture; + if (std::regex_search(tex.name, regex)) { + ImGui::PushID(id++); + draw_debug_for_tex(tex.name, tex); + ImGui::PopID(); + total_displayed_textures++; + } + if (tex.on_gpu) { total_vram_bytes += tex.w * tex.h * 4; // todo, if we support other formats total_uploaded_textures++; @@ -225,25 +341,33 @@ void TexturePool::draw_debug_window() { } if (record.mt4hh_texture) { - ImGui::PushID(id++); - auto& tex = *record.mt4hh_texture; - draw_debug_for_tex(tex.name, tex); - ImGui::PopID(); total_textures++; + auto& tex = *record.mt4hh_texture; + if (std::regex_search(tex.name, regex)) { + ImGui::PushID(id++); + draw_debug_for_tex(tex.name, tex); + ImGui::PopID(); + total_displayed_textures++; + } + if (tex.on_gpu) { total_vram_bytes += tex.w * tex.h * 4; // todo, if we support other formats total_uploaded_textures++; } } } - ImGui::Text("Total Textures: %d Uploaded: %d VRAM: %.3f MB", total_textures, - total_uploaded_textures, (float)total_vram_bytes / (1024 * 1024)); + ImGui::Text("Total Textures: %d Uploaded: %d Shown: %d VRAM: %.3f MB", total_textures, + total_uploaded_textures, total_displayed_textures, + (float)total_vram_bytes / (1024 * 1024)); } void TexturePool::draw_debug_for_tex(const std::string& name, TextureRecord& tex) { - if (ImGui::CollapsingHeader(name.c_str())) { - ImGui::Text("Page: %s Size: %d x %d mip %d On GPU? %d", tex.page_name.c_str(), tex.w, tex.h, - tex.mip_level, tex.on_gpu); + if (tex.on_gpu) { + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(0.3, 0.8, 0.3, 1.0)); + } + if (ImGui::TreeNode(name.c_str())) { + ImGui::Text("P: %s sz: %d x %d mip %d GPU? %d psm %d cpsm %d", tex.page_name.c_str(), tex.w, + tex.h, tex.mip_level, tex.on_gpu, tex.psm, tex.cpsm); if (tex.on_gpu) { ImGui::Image((void*)tex.gpu_texture, ImVec2(tex.w, tex.h)); } else { @@ -251,6 +375,11 @@ void TexturePool::draw_debug_for_tex(const std::string& name, TextureRecord& tex upload_to_gpu(&tex); } } + ImGui::TreePop(); + ImGui::Separator(); + } + if (tex.on_gpu) { + ImGui::PopStyleColor(); } } @@ -267,10 +396,28 @@ void TexturePool::upload_to_gpu(TextureRecord* tex) { // we have to set these, imgui won't do it automatically glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, tex->gpu_texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); tex->on_gpu = true; +} + +void TexturePool::remove_garbage_textures() { + m_most_recent_gc_count = m_garbage_textures.size(); + m_most_recent_gc_count_gpu = 0; + + for (auto& t : m_garbage_textures) { + if (t->on_gpu) { + m_most_recent_gc_count_gpu++; + t->unload_from_gpu(); + } + } + m_garbage_textures.clear(); +} + +void TexturePool::discard(std::shared_ptr tex) { + assert(!tex->do_gc); + m_garbage_textures.push_back(tex); } \ No newline at end of file diff --git a/game/graphics/texture/TexturePool.h b/game/graphics/texture/TexturePool.h index 02b7012d47..65c017d079 100644 --- a/game/graphics/texture/TexturePool.h +++ b/game/graphics/texture/TexturePool.h @@ -5,28 +5,108 @@ #include #include "common/common_types.h" #include "game/graphics/texture/TextureConverter.h" +#include "common/util/Serializer.h" struct TextureRecord { std::string page_name; std::string name; u8 mip_level; + u8 psm = -1; + u8 cpsm = -1; u16 w, h; - std::vector data; u8 data_segment; - u64 gpu_texture = 0; bool on_gpu = false; + bool do_gc = true; + std::vector data; + u64 gpu_texture = 0; + u32 dest = -1; + + u8 min_a_zero, max_a_zero, min_a_nonzero, max_a_nonzero; + + void unload_from_gpu(); + + void serialize(Serializer& ser); }; struct TextureData { - std::unique_ptr normal_texture; - std::unique_ptr mt4hh_texture; + std::shared_ptr normal_texture; + std::shared_ptr mt4hh_texture; + + void serialize(Serializer& ser); +}; + +struct GoalTexture { + s16 w; + s16 h; + u8 num_mips; + u8 tex1_control; + u8 psm; + u8 mip_shift; + u16 clutpsm; + u16 dest[7]; + u16 clut_dest; + u8 width[7]; + u32 name_ptr; + u32 size; + float uv_dist; + u32 masks[3]; + + s32 segment_of_mip(s32 mip) const { + if (2 >= num_mips) { + return num_mips - mip - 1; + } else { + return std::max(0, 2 - mip); + } + } +}; + +static_assert(sizeof(GoalTexture) == 60, "GoalTexture size"); +static_assert(offsetof(GoalTexture, clutpsm) == 8); +static_assert(offsetof(GoalTexture, clut_dest) == 24); + +struct GoalTexturePage { + struct Seg { + u32 block_data_ptr; + u32 size; + u32 dest; + }; + u32 file_info_ptr; + u32 name_ptr; + u32 id; + s32 length; // texture count + u32 mip0_size; + u32 size; + Seg segment[3]; + u32 pad[16]; + // start of array. + + std::string print() const; + + bool try_copy_texture_description(GoalTexture* dest, + int idx, + const u8* memory_base, + const u8* tpage, + u32 s7_ptr) { + u32 ptr; + memcpy(&ptr, tpage + sizeof(GoalTexturePage) + 4 * idx, 4); + if (ptr == s7_ptr) { + return false; + } + memcpy(dest, memory_base + ptr, sizeof(GoalTexture)); + return true; + } }; class TexturePool { public: void handle_upload_now(const u8* tpage, int mode, const u8* memory_base, u32 s7_ptr); - void set_texture(u32 location, std::unique_ptr&& record); - void set_mt4hh_texture(u32 location, std::unique_ptr&& record); + + std::vector> convert_textures(const u8* tpage, + int mode, + const u8* memory_base, + u32 s7_ptr); + + void set_texture(u32 location, std::shared_ptr record); void draw_debug_window(); TextureRecord* lookup(u32 location) { if (m_textures.at(location).normal_texture) { @@ -48,7 +128,13 @@ class TexturePool { void relocate(u32 destination, u32 source, u32 format); + void remove_garbage_textures(); + void discard(std::shared_ptr tex); + + void serialize(Serializer& ser); + private: + void unload_all_textures(); void draw_debug_for_tex(const std::string& name, TextureRecord& tex); TextureConverter m_tex_converter; @@ -57,5 +143,10 @@ class TexturePool { // textures that the game overwrote, but may be still allocated on the GPU. // TODO: free these periodically. - std::vector> m_garbage_textures; + std::vector> m_garbage_textures; + + char m_regex_input[256] = ""; + + int m_most_recent_gc_count = 0; + int m_most_recent_gc_count_gpu = 0; }; diff --git a/game/kernel/asm_funcs.asm b/game/kernel/asm_funcs.asm index 543e889351..a108796455 100644 --- a/game/kernel/asm_funcs.asm +++ b/game/kernel/asm_funcs.asm @@ -137,7 +137,12 @@ _mips2c_call_linux: mov [rsp + 144], r9 ;; arg5 mov [rsp + 160], r10 ;; arg6 mov [rsp + 176], r11 ;; arg7 - mov [rsp + 464], rsp ;; mip2c code's MIPS stack + mov [rsp + 352], r13 ;; s6 (pp) + mov [rsp + 368], r14 ;; s7 (st) + + mov rdi, rsp + sub rdi, r15 + mov [rsp + 464], rdi ;; mip2c code's MIPS stack mov rdi, rsp @@ -205,7 +210,12 @@ _mips2c_call_windows: mov [rsp + 144], r9 ;; arg5 mov [rsp + 160], r10 ;; arg6 mov [rsp + 176], r11 ;; arg7 - mov [rsp + 464], rsp ;; mip2c code's MIPS stack + mov [rsp + 352], r13 ;; s6 (pp) + mov [rsp + 368], r14 ;; s7 (st) + + mov rdi, rsp + sub rdi, r15 + mov [rsp + 464], rdi ;; mip2c code's MIPS stack mov rcx, rsp @@ -343,6 +353,47 @@ _call_goal_asm_linux: pop r13 ret +global _call_goal8_asm_linux + +_call_goal8_asm_linux: + ;; x86 saved registers we need to modify for GOAL should be saved + push r13 + push r14 + push r15 + + ;; RDI - first arg (func) + ;; RSI - second arg (arg array) + ;; RDX - third arg (0) + ;; RCX - pp (goes in r13) + ;; R8 - st (goes in r14) + ;; R9 - off (goes in r15) + + ;; set GOAL function pointer + mov r13, rcx + ;; st + mov r14, r8 + ;; offset + mov r15, r9 + ;; move function to temp + mov rax, rdi + ;; extract arguments + mov rdi, [rsi + 0] ;; 0 + mov rdx, [rsi + 16] ;; 2 + mov rcx, [rsi + 24] ;; 3 + mov r8, [rsi + 32] ;; 4 + mov r9, [rsi + 40] ;; 5 + mov r10, [rsi + 48] ;; 6 + mov r11, [rsi + 56] ;; 7 + mov rsi, [rsi + 8] ;; 1 (do this last) + ;; call GOAL by function pointer + call rax + + ;; retore x86 registers. + pop r15 + pop r14 + pop r13 + ret + ;; Call goal, but switch stacks. global _call_goal_on_stack_asm_linux @@ -448,6 +499,74 @@ _call_goal_asm_win32: ret +global _call_goal8_asm_win32 + +_call_goal8_asm_win32: + push rdx ; 8 + push rbx ; 16 + push rbp ; 24 + push rsi ; 32 + push rdi ; 40 + push r8 ; 48 + push r9 ; 56 + push r10 ; 64 + push r11 ; 72 + push r12 ; 80 + push r13 ; 88 + push r14 ; 96 + push r15 ; 104 + + sub rsp, 16 + movups [rsp], xmm6 + sub rsp, 16 + movups [rsp], xmm7 + + ;; mov rdi, rcx ;; rdi is GOAL first argument, rcx is windows first argument + ;; mov rsi, rdx ;; rsi is GOAL second argument, rdx is windows second argument + ;; mov rdx, r8 ;; rdx is GOAL third argument, r8 is windows third argument + ;; mov r13, r9 ;; r13 is GOAL fp, r9 is windows fourth argument + ;; mov r15, [rsp + 184] ;; symbol table + ;; mov r14, [rsp + 176] ;; offset + + ;; call r13 + + mov r13, r9 ;; pp + mov r15, [rsp + 184] ;; symbol table + mov r14, [rsp + 176] ;; offset + mov rax, rcx ;; func temp + mov rsi, rdx ;; arg table + mov rdi, [rsi + 0] ;; 0 + mov rdx, [rsi + 16] ;; 2 + mov rcx, [rsi + 24] ;; 3 + mov r8, [rsi + 32] ;; 4 + mov r9, [rsi + 40] ;; 5 + mov r10, [rsi + 48] ;; 6 + mov r11, [rsi + 56] ;; 7 + mov rsi, [rsi + 8] ;; 1 (do this last) + ;; call GOAL by function pointer + call rax + + movups xmm7, [rsp] + add rsp, 16 + movups xmm6, [rsp] + add rsp, 16 + + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop rdi + pop rsi + pop rbp + pop rbx + pop rdx + + ret + global _call_goal_on_stack_asm_win32 _call_goal_on_stack_asm_win32: diff --git a/game/kernel/kmachine.cpp b/game/kernel/kmachine.cpp index 73843caade..64a023e66c 100644 --- a/game/kernel/kmachine.cpp +++ b/game/kernel/kmachine.cpp @@ -748,6 +748,13 @@ void vif_interrupt_callback() { } } +/*! + * Added in PC port. + */ +u32 offset_of_s7() { + return s7.offset; +} + /*! * Final initialization of the system after the kernel is loaded. * This is called from InitHeapAndSymbol at the very end. diff --git a/game/kernel/kmachine.h b/game/kernel/kmachine.h index 092f8696b3..b78a1e00a1 100644 --- a/game/kernel/kmachine.h +++ b/game/kernel/kmachine.h @@ -128,3 +128,4 @@ struct FileStream { // static_assert(offsetof(CpadInfo, new_pad) == 76, "cpad type offset"); void vif_interrupt_callback(); +u32 offset_of_s7(); \ No newline at end of file diff --git a/game/mips2c/functions/sparticle.cpp b/game/mips2c/functions/sparticle.cpp new file mode 100644 index 0000000000..97ee17525d --- /dev/null +++ b/game/mips2c/functions/sparticle.cpp @@ -0,0 +1,689 @@ +// clang-format off +//--------------------------MIPS2C--------------------- +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/kscheme.h" +namespace Mips2C { +namespace sp_process_block_3d { +struct Cache { + void* sp_frame_time; // *sp-frame-time* + void* quaternion; // quaternion*! + void* sp_free_particle; // sp-free-particle + void* sp_relaunch_particle_3d; // sp-relaunch-particle-3d +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + u32 call_addr = 0; + bool cop1_bc = false; + c->daddiu(sp, sp, -160); // daddiu sp, sp, -160 + c->sd(ra, 0, sp); // sd ra, 0(sp) + c->sd(fp, 8, sp); // sd fp, 8(sp) + c->mov64(fp, t9); // or fp, t9, r0 + c->sq(s0, 48, sp); // sq s0, 48(sp) + c->sq(s1, 64, sp); // sq s1, 64(sp) + c->sq(s2, 80, sp); // sq s2, 80(sp) + c->sq(s3, 96, sp); // sq s3, 96(sp) + c->sq(s4, 112, sp); // sq s4, 112(sp) + c->sq(s5, 128, sp); // sq s5, 128(sp) + c->sq(gp, 144, sp); // sq gp, 144(sp) + c->mov64(gp, a0); // or gp, a0, r0 + c->mov64(s5, a1); // or s5, a1, r0 + c->mov64(s4, a2); // or s4, a2, r0 + c->mov64(s0, a3); // or s0, a3, r0 + c->mov64(s3, t0); // or s3, t0, r0 + c->mov64(s2, t1); // or s2, t1, r0 + c->daddiu(s1, sp, 16); // daddiu s1, sp, 16 + c->sq(r0, 0, s1); // sq r0, 0(s1) + c->load_symbol(v1, cache.sp_frame_time); // lw v1, *sp-frame-time*(s7) + c->lqc2(vf16, 0, v1); // lqc2 vf16, 0(v1) + c->mov128_gpr_vf(v1, vf16); // qmfc2.i v1, vf16 + c->andi(v1, v1, 255); // andi v1, v1, 255 + c->sq(v1, 32, sp); // sq v1, 32(sp) + // nop // sll r0, r0, 0 + + block_1: + c->lw(v1, 128, s5); // lw v1, 128(s5) + bc = c->sgpr64(v1) == c->sgpr64(s7); // beq v1, s7, L83 + // nop // sll r0, r0, 0 + if (bc) {goto block_34;} // branch non-likely + + bc = c->sgpr64(s2) == c->sgpr64(s7); // beq s2, s7, L71 + c->lw(v1, 104, s5); // lw v1, 104(s5) + if (bc) {goto block_8;} // branch non-likely + + c->andi(v1, v1, 8192); // andi v1, v1, 8192 + bc = c->sgpr64(v1) != 0; // bne v1, r0, L71 + // nop // sll r0, r0, 0 + if (bc) {goto block_8;} // branch non-likely + + c->lw(v1, 100, s5); // lw v1, 100(s5) + c->addiu(a0, r0, -1); // addiu a0, r0, -1 + bc = c->sgpr64(v1) == c->sgpr64(a0); // beq v1, a0, L70 + // nop // sll r0, r0, 0 + if (bc) {goto block_6;} // branch non-likely + + bc = c->sgpr64(v1) == 0; // beq v1, r0, L82 + // nop // sll r0, r0, 0 + if (bc) {goto block_33;} // branch non-likely + + + block_6: + c->lw(a0, 104, s5); // lw a0, 104(s5) + c->andi(v1, a0, 64); // andi v1, a0, 64 + c->xor_(a0, a0, v1); // xor a0, a0, v1 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L83 + c->sw(a0, 104, s5); // sw a0, 104(s5) + if (bc) {goto block_34;} // branch non-likely + + c->lw(v1, 124, s5); // lw v1, 124(s5) + //beq r0, r0, L83 // beq r0, r0, L83 + c->sw(v1, 44, s4); // sw v1, 44(s4) + goto block_34; // branch always + + + block_8: + c->lw(v1, 100, s5); // lw v1, 100(s5) + c->addiu(a0, r0, -1); // addiu a0, r0, -1 + bc = c->sgpr64(v1) == c->sgpr64(a0); // beq v1, a0, L72 + c->lq(a0, 32, sp); // lq a0, 32(sp) + if (bc) {goto block_11;} // branch non-likely + + c->dsubu(a0, v1, a0); // dsubu a0, v1, a0 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L82 + c->pmaxw(v1, a0, r0); // pmaxw v1, a0, r0 + if (bc) {goto block_33;} // branch non-likely + + c->sw(v1, 100, s5); // sw v1, 100(s5) + + block_11: + c->lw(a0, 104, s5); // lw a0, 104(s5) + c->andi(v1, a0, 64); // andi v1, a0, 64 + c->xor_(a0, a0, v1); // xor a0, a0, v1 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L73 + c->sw(a0, 104, s5); // sw a0, 104(s5) + if (bc) {goto block_13;} // branch non-likely + + c->lw(v1, 124, s5); // lw v1, 124(s5) + c->sw(v1, 44, s4); // sw v1, 44(s4) + + block_13: + c->lw(t9, 112, s5); // lw t9, 112(s5) + bc = c->sgpr64(t9) == 0; // beq t9, r0, L74 + // nop // sll r0, r0, 0 + if (bc) {goto block_15;} // branch non-likely + + c->daddiu(sp, sp, -96); // daddiu sp, sp, -96 + c->sq(gp, 0, sp); // sq gp, 0(sp) + c->sq(s5, 16, sp); // sq s5, 16(sp) + c->sq(s4, 32, sp); // sq s4, 32(sp) + c->sq(s0, 48, sp); // sq s0, 48(sp) + c->sq(s3, 64, sp); // sq s3, 64(sp) + c->mov64(a0, gp); // or a0, gp, r0 + c->mov64(a1, s5); // or a1, s5, r0 + c->mov64(a2, s4); // or a2, s4, r0 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sq(s2, 80, sp); // sq s2, 80(sp) + c->jalr(call_addr); // jalr ra, t9 + c->lq(gp, 0, sp); // lq gp, 0(sp) + c->lq(s5, 16, sp); // lq s5, 16(sp) + c->lq(s4, 32, sp); // lq s4, 32(sp) + c->lq(s0, 48, sp); // lq s0, 48(sp) + c->lq(s3, 64, sp); // lq s3, 64(sp) + c->lq(s2, 80, sp); // lq s2, 80(sp) + c->daddiu(sp, sp, 96); // daddiu sp, sp, 96 + + block_15: + c->lw(a1, 120, s5); // lw a1, 120(s5) + c->lw(v1, 116, s5); // lw v1, 116(s5) + bc = c->sgpr64(a1) == 0; // beq a1, r0, L75 + c->lq(a0, 32, sp); // lq a0, 32(sp) + if (bc) {goto block_18;} // branch non-likely + + c->dsubu(v1, v1, a0); // dsubu v1, v1, a0 + bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L75 + c->sw(v1, 116, s5); // sw v1, 116(s5) + if (bc) {goto block_18;} // branch non-likely + + c->daddiu(sp, sp, -96); // daddiu sp, sp, -96 + c->sq(gp, 0, sp); // sq gp, 0(sp) + c->sq(s5, 16, sp); // sq s5, 16(sp) + c->sq(s4, 32, sp); // sq s4, 32(sp) + c->sq(s0, 48, sp); // sq s0, 48(sp) + c->sq(s3, 64, sp); // sq s3, 64(sp) + c->sq(s2, 80, sp); // sq s2, 80(sp) + c->mov64(a0, gp); // or a0, gp, r0 + c->mov64(a3, s4); // or a3, s4, r0 + c->mov64(a2, s5); // or a2, s5, r0 + c->load_symbol(t9, cache.sp_relaunch_particle_3d);// lw t9, sp-relaunch-particle-3d(s7) + call_addr = c->gprs[t9].du32[0]; // function call: + c->sll(v0, ra, 0); // sll v0, ra, 0 + c->jalr(call_addr); // jalr ra, t9 + c->lq(gp, 0, sp); // lq gp, 0(sp) + c->lq(s5, 16, sp); // lq s5, 16(sp) + c->lq(s4, 32, sp); // lq s4, 32(sp) + c->lq(s0, 48, sp); // lq s0, 48(sp) + c->lq(s3, 64, sp); // lq s3, 64(sp) + c->lq(s2, 80, sp); // lq s2, 80(sp) + c->daddiu(sp, sp, 96); // daddiu sp, sp, 96 + + block_18: + c->lqc2(vf8, 0, s4); // lqc2 vf8, 0(s4) + c->lqc2(vf9, 16, s4); // lqc2 vf9, 16(s4) + c->lqc2(vf10, 32, s4); // lqc2 vf10, 32(s4) + c->lqc2(vf11, 16, s5); // lqc2 vf11, 16(s5) + c->lqc2(vf12, 32, s5); // lqc2 vf12, 32(s5) + c->lqc2(vf13, 48, s5); // lqc2 vf13, 48(s5) + c->lqc2(vf14, 64, s5); // lqc2 vf14, 64(s5) + c->lwc1(f0, 96, s5); // lwc1 f0, 96(s5) + c->mfc1(v1, f0); // mfc1 v1, f0 + c->vmul_bc(DEST::xyzw, BC::z, vf14, vf14, vf16); // vmulz.xyzw vf14, vf14, vf16 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L76 + c->vadd(DEST::xyz, vf11, vf11, vf14); // vadd.xyz vf11, vf11, vf14 + if (bc) {goto block_20;} // branch non-likely + + c->mov128_vf_gpr(vf15, v1); // qmtc2.i vf15, v1 + c->vsub_bc(DEST::w, BC::x, vf15, vf0, vf15); // vsubx.w vf15, vf0, vf15 + c->vmul_bc(DEST::xyzw, BC::w, vf15, vf15, vf16); // vmulw.xyzw vf15, vf15, vf16 + c->vsub_bc(DEST::w, BC::w, vf15, vf0, vf15); // vsubw.w vf15, vf0, vf15 + c->vmul_bc(DEST::xyz, BC::w, vf11, vf11, vf15); // vmulw.xyz vf11, vf11, vf15 + + block_20: + c->vmul_bc(DEST::xyzw, BC::y, vf17, vf11, vf16); // vmuly.xyzw vf17, vf11, vf16 + c->vmul_bc(DEST::xyzw, BC::y, vf18, vf12, vf16); // vmuly.xyzw vf18, vf12, vf16 + c->vmul_bc(DEST::xyzw, BC::y, vf19, vf13, vf16); // vmuly.xyzw vf19, vf13, vf16 + c->vadd(DEST::xyzw, vf8, vf8, vf17); // vadd.xyzw vf8, vf8, vf17 + c->vadd_bc(DEST::w, BC::w, vf9, vf9, vf18); // vaddw.w vf9, vf9, vf18 + c->vadd(DEST::xyzw, vf10, vf10, vf19); // vadd.xyzw vf10, vf10, vf19 + c->vmax_bc(DEST::xyzw, BC::x, vf10, vf10, vf0); // vmaxx.xyzw vf10, vf10, vf0 + c->sqc2(vf11, 16, s5); // sqc2 vf11, 16(s5) + c->sqc2(vf8, 0, s4); // sqc2 vf8, 0(s4) + c->sqc2(vf9, 16, s4); // sqc2 vf9, 16(s4) + c->sqc2(vf10, 32, s4); // sqc2 vf10, 32(s4) + c->mov64(v1, s1); // or v1, s1, r0 + c->mov64(a0, s4); // or a0, s4, r0 + c->lwc1(f0, 16, a0); // lwc1 f0, 16(a0) + c->lwc1(f1, 20, a0); // lwc1 f1, 20(a0) + c->lwc1(f3, 24, a0); // lwc1 f3, 24(a0) + c->swc1(f0, 0, v1); // swc1 f0, 0(v1) + c->swc1(f1, 4, v1); // swc1 f1, 4(v1) + c->swc1(f3, 8, v1); // swc1 f3, 8(v1) + c->fprs[f2] = 1.0; // lwc1 f2, L157(fp) + c->muls(f3, f3, f3); // mul.s f3, f3, f3 + c->subs(f2, f2, f3); // sub.s f2, f2, f3 + c->muls(f1, f1, f1); // mul.s f1, f1, f1 + c->subs(f1, f2, f1); // sub.s f1, f2, f1 + c->muls(f0, f0, f0); // mul.s f0, f0, f0 + c->subs(f0, f1, f0); // sub.s f0, f1, f0 + c->sqrts(f0, f0); // sqrt.s f0, f0 + c->swc1(f0, 12, v1); // swc1 f0, 12(v1) + c->mfc1(a0, f0); // mfc1 a0, f0 + c->load_symbol(v1, cache.sp_frame_time); // lw v1, *sp-frame-time*(s7) + c->lwc1(f0, 0, v1); // lwc1 f0, 0(v1) + c->mfc1(v1, f0); // mfc1 v1, f0 + c->andi(v1, v1, 255); // andi v1, v1, 255 + c->daddiu(v1, v1, -10); // daddiu v1, v1, -10 + bc = ((s64)c->sgpr64(v1)) < 0; // bltz v1, L77 + // nop // sll r0, r0, 0 + if (bc) {goto block_22;} // branch non-likely + + c->load_symbol(t9, cache.quaternion); // lw t9, quaternion*!(s7) + c->mov64(a0, s1); // or a0, s1, r0 + c->mov64(a1, s1); // or a1, s1, r0 + c->daddiu(a2, s5, 80); // daddiu a2, s5, 80 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sll(v0, ra, 0); // sll v0, ra, 0 + c->jalr(call_addr); // jalr ra, t9 + + block_22: + c->load_symbol(t9, cache.quaternion); // lw t9, quaternion*!(s7) + c->mov64(a0, s1); // or a0, s1, r0 + c->mov64(a1, s1); // or a1, s1, r0 + c->daddiu(a2, s5, 80); // daddiu a2, s5, 80 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sll(v0, ra, 0); // sll v0, ra, 0 + c->jalr(call_addr); // jalr ra, t9 + c->mov64(a0, s4); // or a0, s4, r0 + c->mov64(v1, s1); // or v1, s1, r0 + c->lwc1(f0, 12, v1); // lwc1 f0, 12(v1) + c->mtc1(f1, r0); // mtc1 f1, r0 + cop1_bc = c->fprs[f0] < c->fprs[f1]; // c.lt.s f0, f1 + bc = !cop1_bc; // bc1f L78 + // nop // sll r0, r0, 0 + if (bc) {goto block_24;} // branch non-likely + + c->lqc2(vf1, 16, a0); // lqc2 vf1, 16(a0) + c->lqc2(vf2, 0, v1); // lqc2 vf2, 0(v1) + c->vsub(DEST::xyz, vf1, vf0, vf2); // vsub.xyz vf1, vf0, vf2 + c->sqc2(vf1, 16, a0); // sqc2 vf1, 16(a0) + c->mov128_gpr_vf(a0, vf1); // qmfc2.i a0, vf1 + //beq r0, r0, L79 // beq r0, r0, L79 + // nop // sll r0, r0, 0 + goto block_25; // branch always + + + block_24: + c->lqc2(vf1, 16, a0); // lqc2 vf1, 16(a0) + c->lqc2(vf2, 0, v1); // lqc2 vf2, 0(v1) + c->vadd(DEST::xyz, vf1, vf0, vf2); // vadd.xyz vf1, vf0, vf2 + c->sqc2(vf1, 16, a0); // sqc2 vf1, 16(a0) + c->mov128_gpr_vf(a0, vf1); // qmfc2.i a0, vf1 + + block_25: + c->mov128_gpr_vf(v1, vf10); // qmfc2.i v1, vf10 + c->lw(a0, 104, s5); // lw a0, 104(s5) + c->andi(a1, a0, 2); // andi a1, a0, 2 + bc = c->sgpr64(a1) == 0; // beq a1, r0, L80 + c->andi(a1, a0, 4); // andi a1, a0, 4 + if (bc) {goto block_28;} // branch non-likely + + bc = c->sgpr64(v1) != 0; // bne v1, r0, L80 + c->pextuw(a2, v1, r0); // pextuw a2, v1, r0 + if (bc) {goto block_28;} // branch non-likely + + bc = c->sgpr64(a2) == 0; // beq a2, r0, L82 + // nop // sll r0, r0, 0 + if (bc) {goto block_33;} // branch non-likely + + + block_28: + bc = c->sgpr64(a1) == 0; // beq a1, r0, L81 + c->andi(a0, a0, 1); // andi a0, a0, 1 + if (bc) {goto block_30;} // branch non-likely + + c->pcpyud(v1, v1, r0); // pcpyud v1, v1, r0 + c->pexew(v1, v1); // pexew v1, v1 + bc = ((s64)c->sgpr64(v1)) <= 0; // blez v1, L82 + // nop // sll r0, r0, 0 + if (bc) {goto block_33;} // branch non-likely + + + block_30: + bc = c->sgpr64(a0) == 0; // beq a0, r0, L83 + // nop // sll r0, r0, 0 + if (bc) {goto block_34;} // branch non-likely + + c->mov128_gpr_vf(v1, vf8); // qmfc2.i v1, vf8 + c->pcpyud(v1, v1, r0); // pcpyud v1, v1, r0 + c->pexew(v1, v1); // pexew v1, v1 + bc = ((s64)c->sgpr64(v1)) < 0; // bltz v1, L82 + c->mov128_gpr_vf(v1, vf9); // qmfc2.i v1, vf9 + if (bc) {goto block_33;} // branch non-likely + + c->pcpyud(v1, v1, r0); // pcpyud v1, v1, r0 + c->pexew(v1, v1); // pexew v1, v1 + bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L83 + // nop // sll r0, r0, 0 + if (bc) {goto block_34;} // branch non-likely + + + block_33: + c->load_symbol(t9, cache.sp_free_particle); // lw t9, sp-free-particle(s7) + c->mov64(a0, gp); // or a0, gp, r0 + c->mov64(a1, s0); // or a1, s0, r0 + c->mov64(a2, s5); // or a2, s5, r0 + c->mov64(a3, s4); // or a3, s4, r0 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sll(v0, ra, 0); // sll v0, ra, 0 + c->jalr(call_addr); // jalr ra, t9 + + block_34: + c->daddiu(s3, s3, -1); // daddiu s3, s3, -1 + c->daddiu(s5, s5, 144); // daddiu s5, s5, 144 + c->daddiu(s4, s4, 48); // daddiu s4, s4, 48 + bc = c->sgpr64(s3) != 0; // bne s3, r0, L69 + c->daddiu(s0, s0, 1); // daddiu s0, s0, 1 + if (bc) {goto block_1;} // branch non-likely + + c->mov64(v0, s0); // or v0, s0, r0 + c->ld(ra, 0, sp); // ld ra, 0(sp) + c->ld(fp, 8, sp); // ld fp, 8(sp) + c->lq(gp, 144, sp); // lq gp, 144(sp) + c->lq(s5, 128, sp); // lq s5, 128(sp) + c->lq(s4, 112, sp); // lq s4, 112(sp) + c->lq(s3, 96, sp); // lq s3, 96(sp) + c->lq(s2, 80, sp); // lq s2, 80(sp) + c->lq(s1, 64, sp); // lq s1, 64(sp) + c->lq(s0, 48, sp); // lq s0, 48(sp) + //jr ra // jr ra + c->daddiu(sp, sp, 160); // daddiu sp, sp, 160 + 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.sp_frame_time = intern_from_c("*sp-frame-time*").c(); + cache.quaternion = intern_from_c("quaternion*!").c(); + cache.sp_free_particle = intern_from_c("sp-free-particle").c(); + cache.sp_relaunch_particle_3d = intern_from_c("sp-relaunch-particle-3d").c(); + gLinkedFunctionTable.reg("sp-process-block-3d", execute, 256); +} + +} // namespace sp_process_block_3d +} // namespace Mips2C + +//--------------------------MIPS2C--------------------- +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/kscheme.h" +namespace Mips2C { +namespace sp_process_block_2d { +struct Cache { + void* sp_frame_time; // *sp-frame-time* + void* sp_free_particle; // sp-free-particle + void* sp_orbiter; // sp-orbiter + void* sp_relaunch_particle_2d; // sp-relaunch-particle-2d +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + u32 call_addr = 0; + 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(gp, a0); // or gp, a0, r0 + c->mov64(s5, a1); // or s5, a1, r0 + c->mov64(s4, a2); // or s4, a2, r0 + c->mov64(s1, a3); // or s1, a3, r0 + c->mov64(s3, t0); // or s3, t0, r0 + c->mov64(s2, t1); // or s2, t1, r0 + c->load_symbol(v1, cache.sp_frame_time); // lw v1, *sp-frame-time*(s7) + c->lqc2(vf9, 0, v1); // lqc2 vf9, 0(v1) + c->mov128_gpr_vf(v1, vf9); // qmfc2.i v1, vf9 + c->andi(s0, v1, 255); // andi s0, v1, 255 + + block_1: + c->lw(v1, 128, s5); // lw v1, 128(s5) + bc = c->sgpr64(v1) == c->sgpr64(s7); // beq v1, s7, L97 + // nop // sll r0, r0, 0 + if (bc) {goto block_31;} // branch non-likely + + bc = c->sgpr64(s2) == c->sgpr64(s7); // beq s2, s7, L87 + c->lw(v1, 104, s5); // lw v1, 104(s5) + if (bc) {goto block_8;} // branch non-likely + + c->andi(v1, v1, 8192); // andi v1, v1, 8192 + bc = c->sgpr64(v1) != 0; // bne v1, r0, L87 + // nop // sll r0, r0, 0 + if (bc) {goto block_8;} // branch non-likely + + c->lw(v1, 100, s5); // lw v1, 100(s5) + c->addiu(a0, r0, -1); // addiu a0, r0, -1 + bc = c->sgpr64(v1) == c->sgpr64(a0); // beq v1, a0, L86 + // nop // sll r0, r0, 0 + if (bc) {goto block_6;} // branch non-likely + + bc = c->sgpr64(v1) == 0; // beq v1, r0, L96 + // nop // sll r0, r0, 0 + if (bc) {goto block_30;} // branch non-likely + + + block_6: + c->lw(a0, 104, s5); // lw a0, 104(s5) + c->andi(v1, a0, 64); // andi v1, a0, 64 + c->xor_(a0, a0, v1); // xor a0, a0, v1 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L97 + c->sw(a0, 104, s5); // sw a0, 104(s5) + if (bc) {goto block_31;} // branch non-likely + + c->lw(v1, 124, s5); // lw v1, 124(s5) + //beq r0, r0, L97 // beq r0, r0, L97 + c->sw(v1, 44, s4); // sw v1, 44(s4) + goto block_31; // branch always + + + block_8: + c->lw(v1, 100, s5); // lw v1, 100(s5) + c->addiu(a0, r0, -1); // addiu a0, r0, -1 + bc = c->sgpr64(v1) == c->sgpr64(a0); // beq v1, a0, L88 + c->dsubu(a0, v1, s0); // dsubu a0, v1, s0 + if (bc) {goto block_11;} // branch non-likely + + bc = c->sgpr64(v1) == 0; // beq v1, r0, L96 + c->pmaxw(v1, a0, r0); // pmaxw v1, a0, r0 + if (bc) {goto block_30;} // branch non-likely + + c->sw(v1, 100, s5); // sw v1, 100(s5) + + block_11: + c->lw(a0, 104, s5); // lw a0, 104(s5) + c->andi(v1, a0, 64); // andi v1, a0, 64 + c->xor_(a0, a0, v1); // xor a0, a0, v1 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L89 + c->sw(a0, 104, s5); // sw a0, 104(s5) + if (bc) {goto block_13;} // branch non-likely + + c->lw(v1, 124, s5); // lw v1, 124(s5) + c->sw(v1, 44, s4); // sw v1, 44(s4) + + block_13: + c->lw(t9, 112, s5); // lw t9, 112(s5) + bc = c->sgpr64(t9) == 0; // beq t9, r0, L90 + // nop // sll r0, r0, 0 + if (bc) {goto block_15;} // branch non-likely + + c->daddiu(sp, sp, -80); // daddiu sp, sp, -80 + c->sq(gp, 0, sp); // sq gp, 0(sp) + c->sq(s5, 16, sp); // sq s5, 16(sp) + c->sq(s4, 32, sp); // sq s4, 32(sp) + c->sq(s1, 48, sp); // sq s1, 48(sp) + c->mov64(a0, gp); // or a0, gp, r0 + c->mov64(a1, s5); // or a1, s5, r0 + c->mov64(a2, s4); // or a2, s4, r0 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sq(s3, 64, sp); // sq s3, 64(sp) + c->jalr(call_addr); // jalr ra, t9 + c->lq(gp, 0, sp); // lq gp, 0(sp) + c->lq(s5, 16, sp); // lq s5, 16(sp) + c->lq(s4, 32, sp); // lq s4, 32(sp) + c->lq(s1, 48, sp); // lq s1, 48(sp) + c->lq(s3, 64, sp); // lq s3, 64(sp) + c->daddiu(sp, sp, 80); // daddiu sp, sp, 80 + + block_15: + c->lw(a1, 120, s5); // lw a1, 120(s5) + c->lw(v1, 116, s5); // lw v1, 116(s5) + bc = c->sgpr64(a1) == 0; // beq a1, r0, L91 + c->dsubu(a0, v1, s0); // dsubu a0, v1, s0 + if (bc) {goto block_18;} // branch non-likely + + c->daddiu(v1, a0, -1); // daddiu v1, a0, -1 + bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L91 + c->sw(a0, 116, s5); // sw a0, 116(s5) + if (bc) {goto block_18;} // branch non-likely + + c->daddiu(sp, sp, -96); // daddiu sp, sp, -96 + c->sq(gp, 0, sp); // sq gp, 0(sp) + c->sq(s5, 16, sp); // sq s5, 16(sp) + c->sq(s4, 32, sp); // sq s4, 32(sp) + c->sq(s1, 48, sp); // sq s1, 48(sp) + c->sq(s3, 64, sp); // sq s3, 64(sp) + c->sq(s2, 80, sp); // sq s2, 80(sp) + c->mov64(a0, gp); // or a0, gp, r0 + c->mov64(a3, s4); // or a3, s4, r0 + c->mov64(a2, s5); // or a2, s5, r0 + c->load_symbol(t9, cache.sp_relaunch_particle_2d);// lw t9, sp-relaunch-particle-2d(s7) + call_addr = c->gprs[t9].du32[0]; // function call: + c->sll(v0, ra, 0); // sll v0, ra, 0 + c->jalr(call_addr); // jalr ra, t9 + c->lq(gp, 0, sp); // lq gp, 0(sp) + c->lq(s5, 16, sp); // lq s5, 16(sp) + c->lq(s4, 32, sp); // lq s4, 32(sp) + c->lq(s1, 48, sp); // lq s1, 48(sp) + c->lq(s3, 64, sp); // lq s3, 64(sp) + c->lq(s2, 80, sp); // lq s2, 80(sp) + c->daddiu(sp, sp, 96); // daddiu sp, sp, 96 + + block_18: + c->lqc2(vf1, 0, s4); // lqc2 vf1, 0(s4) + c->lqc2(vf2, 16, s4); // lqc2 vf2, 16(s4) + c->lqc2(vf3, 32, s4); // lqc2 vf3, 32(s4) + c->lqc2(vf4, 16, s5); // lqc2 vf4, 16(s5) + c->lqc2(vf5, 32, s5); // lqc2 vf5, 32(s5) + c->lqc2(vf6, 48, s5); // lqc2 vf6, 48(s5) + c->lqc2(vf7, 64, s5); // lqc2 vf7, 64(s5) + c->lwc1(f0, 96, s5); // lwc1 f0, 96(s5) + c->mfc1(v1, f0); // mfc1 v1, f0 + c->vmul_bc(DEST::xyzw, BC::z, vf7, vf7, vf9); // vmulz.xyzw vf7, vf7, vf9 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L92 + c->vadd(DEST::xyz, vf4, vf4, vf7); // vadd.xyz vf4, vf4, vf7 + if (bc) {goto block_20;} // branch non-likely + + c->mov128_vf_gpr(vf8, v1); // qmtc2.i vf8, v1 + c->vsub_bc(DEST::w, BC::x, vf8, vf0, vf8); // vsubx.w vf8, vf0, vf8 + c->vmul_bc(DEST::xyzw, BC::w, vf8, vf8, vf9); // vmulw.xyzw vf8, vf8, vf9 + c->vsub_bc(DEST::w, BC::w, vf8, vf0, vf8); // vsubw.w vf8, vf0, vf8 + c->vmul_bc(DEST::xyz, BC::w, vf4, vf4, vf8); // vmulw.xyz vf4, vf4, vf8 + + block_20: + c->vmul_bc(DEST::xyzw, BC::y, vf10, vf4, vf9); // vmuly.xyzw vf10, vf4, vf9 + c->vmul_bc(DEST::xyzw, BC::y, vf11, vf5, vf9); // vmuly.xyzw vf11, vf5, vf9 + c->vmul_bc(DEST::xyzw, BC::y, vf12, vf6, vf9); // vmuly.xyzw vf12, vf6, vf9 + c->vadd(DEST::xyzw, vf1, vf1, vf10); // vadd.xyzw vf1, vf1, vf10 + c->vadd(DEST::zw, vf2, vf2, vf11); // vadd.zw vf2, vf2, vf11 + c->vadd(DEST::xyzw, vf3, vf3, vf12); // vadd.xyzw vf3, vf3, vf12 + c->vmax_bc(DEST::xyzw, BC::x, vf3, vf3, vf0); // vmaxx.xyzw vf3, vf3, vf0 + c->sqc2(vf4, 16, s5); // sqc2 vf4, 16(s5) + c->sqc2(vf1, 0, s4); // sqc2 vf1, 0(s4) + c->sqc2(vf2, 16, s4); // sqc2 vf2, 16(s4) + c->sqc2(vf3, 32, s4); // sqc2 vf3, 32(s4) + c->lwc1(f0, 24, s4); // lwc1 f0, 24(s4) + c->cvtws(f0, f0); // cvt.w.s f0, f0 + c->mfc1(v1, f0); // mfc1 v1, f0 + c->dsll32(v1, v1, 16); // dsll32 v1, v1, 16 + c->dsra32(v1, v1, 16); // dsra32 v1, v1, 16 + c->mtc1(f0, v1); // mtc1 f0, v1 + c->cvtsw(f0, f0); // cvt.s.w f0, f0 + c->swc1(f0, 24, s4); // swc1 f0, 24(s4) + c->lw(v1, 104, s5); // lw v1, 104(s5) + c->andi(v1, v1, 128); // andi v1, v1, 128 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L93 + c->load_symbol(t9, cache.sp_orbiter); // lw t9, sp-orbiter(s7) + if (bc) {goto block_22;} // branch non-likely + + c->daddiu(sp, sp, -96); // daddiu sp, sp, -96 + c->sq(gp, 0, sp); // sq gp, 0(sp) + c->sq(s5, 16, sp); // sq s5, 16(sp) + c->sq(s4, 32, sp); // sq s4, 32(sp) + c->sq(s1, 48, sp); // sq s1, 48(sp) + c->sq(s3, 64, sp); // sq s3, 64(sp) + c->mov64(a0, gp); // or a0, gp, r0 + c->mov64(a1, s5); // or a1, s5, r0 + c->mov64(a2, s4); // or a2, s4, r0 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sq(s2, 80, sp); // sq s2, 80(sp) + c->jalr(call_addr); // jalr ra, t9 + c->lq(gp, 0, sp); // lq gp, 0(sp) + c->lq(s5, 16, sp); // lq s5, 16(sp) + c->lq(s4, 32, sp); // lq s4, 32(sp) + c->lq(s1, 48, sp); // lq s1, 48(sp) + c->lq(s3, 64, sp); // lq s3, 64(sp) + c->lq(s2, 80, sp); // lq s2, 80(sp) + c->daddiu(sp, sp, 96); // daddiu sp, sp, 96 + + block_22: + c->lq(v1, 32, s4); // lq v1, 32(s4) + c->lw(a0, 104, s5); // lw a0, 104(s5) + c->andi(a1, a0, 2); // andi a1, a0, 2 + bc = c->sgpr64(a1) == 0; // beq a1, r0, L94 + c->andi(a1, a0, 4); // andi a1, a0, 4 + if (bc) {goto block_25;} // branch non-likely + + bc = c->sgpr64(v1) != 0; // bne v1, r0, L94 + c->pextuw(t4, v1, r0); // pextuw t4, v1, r0 + if (bc) {goto block_25;} // branch non-likely + + bc = c->sgpr64(t4) == 0; // beq t4, r0, L96 + // nop // sll r0, r0, 0 + if (bc) {goto block_30;} // branch non-likely + + + block_25: + bc = c->sgpr64(a1) == 0; // beq a1, r0, L95 + c->andi(a0, a0, 1); // andi a0, a0, 1 + if (bc) {goto block_27;} // branch non-likely + + c->pcpyud(t4, v1, r0); // pcpyud t4, v1, r0 + c->pexew(t4, t4); // pexew t4, r0, t4 + bc = ((s64)c->sgpr64(t4)) <= 0; // blez t4, L96 + // nop // sll r0, r0, 0 + if (bc) {goto block_30;} // branch non-likely + + + block_27: + bc = c->sgpr64(a0) == 0; // beq a0, r0, L97 + // nop // sll r0, r0, 0 + if (bc) {goto block_31;} // branch non-likely + + c->mov128_gpr_vf(v1, vf1); // qmfc2.i v1, vf1 + c->pcpyud(v1, v1, r0); // pcpyud v1, v1, r0 + c->pexew(v1, v1); // pexew v1, r0, v1 + bc = ((s64)c->sgpr64(v1)) < 0; // bltz v1, L96 + c->mov128_gpr_vf(v1, vf2); // qmfc2.i v1, vf2 + if (bc) {goto block_30;} // branch non-likely + + c->pcpyud(v1, v1, r0); // pcpyud v1, v1, r0 + c->pexew(v1, v1); // pexew v1, r0, v1 + bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L97 + // nop // sll r0, r0, 0 + if (bc) {goto block_31;} // branch non-likely + + block_30: + c->load_symbol(t9, cache.sp_free_particle); // lw t9, sp-free-particle(s7) + c->mov64(a0, gp); // or a0, gp, r0 + c->mov64(a1, s1); // or a1, s1, r0 + c->mov64(a2, s5); // or a2, s5, r0 + c->mov64(a3, s4); // or a3, s4, r0 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sll(v0, ra, 0); // sll v0, ra, 0 + c->jalr(call_addr); // jalr ra, t9 + + block_31: + c->daddiu(s3, s3, -1); // daddiu s3, s3, -1 + c->daddiu(s5, s5, 144); // daddiu s5, s5, 144 + c->daddiu(s4, s4, 48); // daddiu s4, s4, 48 + bc = c->sgpr64(s3) != 0; // bne s3, r0, L85 + c->daddiu(s1, s1, 1); // daddiu s1, s1, 1 + if (bc) {goto block_1;} // branch non-likely + + c->mov64(v0, s1); // or v0, s1, 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 + // nop // sll r0, r0, 0 + end_of_function: + return c->gprs[v0].du64[0]; +} + +void link() { + cache.sp_frame_time = intern_from_c("*sp-frame-time*").c(); + cache.sp_free_particle = intern_from_c("sp-free-particle").c(); + cache.sp_orbiter = intern_from_c("sp-orbiter").c(); + cache.sp_relaunch_particle_2d = intern_from_c("sp-relaunch-particle-2d").c(); + gLinkedFunctionTable.reg("sp-process-block-2d", execute, 256); +} + +} // namespace sp_process_block_2d +} // namespace Mips2C diff --git a/game/mips2c/functions/sparticle_launcher.cpp b/game/mips2c/functions/sparticle_launcher.cpp new file mode 100644 index 0000000000..95bf01b67e --- /dev/null +++ b/game/mips2c/functions/sparticle_launcher.cpp @@ -0,0 +1,1173 @@ +//--------------------------MIPS2C--------------------- +// clang-format off +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/kscheme.h" +namespace Mips2C { +namespace sp_init_fields { +struct Cache { + void* part_id_table; // *part-id-table* +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + c->mov64(v1, a0); // or v1, a0, r0 + c->mov64(v1, a2); // or v1, a2, r0 + c->mov64(v1, a3); // or v1, a3, r0 + c->mov64(v1, t0); // or v1, t0, r0 + // nop // sll r0, r0, 0 + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->mov64(v0, a1); // or v0, a1, r0 + + block_1: + c->lh(a1, 0, v0); // lh a1, 0(v0) + // nop // sll r0, r0, 0 + c->dsubu(a1, a1, a2); // dsubu a1, a1, a2 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + if (((s64)c->sgpr64(a1)) < 0) { // bltzl a1, L156 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + goto block_1; + } + + c->dsubu(a1, a2, a3); // dsubu a1, a2, a3 + // nop // sll r0, r0, 0 + bc = ((s64)c->sgpr64(a1)) >= 0; // bgez a1, L169 + // nop // sll r0, r0, 0 + if (bc) {goto block_38;} // branch non-likely + + + block_4: + c->lh(a1, 0, v0); // lh a1, 0(v0) + // nop // sll r0, r0, 0 + bc = c->sgpr64(a1) != c->sgpr64(a2); // bne a1, a2, L167 + c->vrget(DEST::xyzw, vf1); // vrget.xyzw vf1 + if (bc) {goto block_35;} // branch non-likely + + c->vsqrt(vf1, BC::x); // vsqrt Q, vf1.x + c->lh(a1, 2, v0); // lh a1, 2(v0) + c->vaddq(DEST::x, vf2, vf0); // vaddq.x vf2, vf0, Q + c->lw(t2, 8, v0); // lw t2, 8(v0) + c->addiu(v1, r0, 7); // addiu v1, r0, 7 + bc = c->sgpr64(a2) == c->sgpr64(v1); // beq a2, v1, L159 + c->addiu(t1, r0, 1); // addiu t1, r0, 1 + if (bc) {goto block_17;} // branch non-likely + + bc = c->sgpr64(a1) == c->sgpr64(t1); // beq a1, t1, L160 + c->addiu(t1, r0, 2); // addiu t1, r0, 2 + if (bc) {goto block_19;} // branch non-likely + + bc = c->sgpr64(a1) == c->sgpr64(t1); // beq a1, t1, L162 + c->addiu(t1, r0, 3); // addiu t1, r0, 3 + if (bc) {goto block_24;} // branch non-likely + + bc = c->sgpr64(a1) == c->sgpr64(t1); // beq a1, t1, L163 + c->addiu(t1, r0, 5); // addiu t1, r0, 5 + if (bc) {goto block_27;} // branch non-likely + + bc = c->sgpr64(a1) == c->sgpr64(t1); // beq a1, t1, L164 + c->addiu(t1, r0, 6); // addiu t1, r0, 6 + if (bc) {goto block_29;} // branch non-likely + + bc = c->sgpr64(a1) == c->sgpr64(t1); // beq a1, t1, L165 + c->addiu(t1, r0, 4); // addiu t1, r0, 4 + if (bc) {goto block_31;} // branch non-likely + + bc = c->sgpr64(a1) == c->sgpr64(t1); // beq a1, t1, L166 + // nop // sll r0, r0, 0 + if (bc) {goto block_33;} // branch non-likely + + bc = c->sgpr64(t2) == 0; // beq t2, r0, L158 + // nop // sll r0, r0, 0 + if (bc) {goto block_15;} // branch non-likely + + c->vrxor(vf2, BC::w); // vrxorw vf2 + c->lw(t1, 12, v0); // lw t1, 12(v0) + c->vrnext(DEST::xyzw, vf1); // vrnext.xyzw vf1 + c->lw(t3, 4, v0); // lw t3, 4(v0) + c->vsub_bc(DEST::xyzw, BC::w, vf1, vf1, vf0); // vsubw.xyzw vf1, vf1, vf0 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf2, t2); // qmtc2.i vf2, t2 + // nop // sll r0, r0, 0 + c->vitof0(DEST::xyzw, vf2, vf2); // vitof0.xyzw vf2, vf2 + // nop // sll r0, r0, 0 + c->vmul(DEST::xyzw, vf1, vf1, vf2); // vmul.xyzw vf1, vf1, vf2 + // nop // sll r0, r0, 0 + c->vftoi0(DEST::xyzw, vf1, vf1); // vftoi0.xyzw vf1, vf1 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(t2, vf1); // qmfc2.i t2, vf1 + // nop // sll r0, r0, 0 + c->mult3(t2, t2, t1); // mult3 t2, t2, t1 + // nop // sll r0, r0, 0 + c->daddu(t2, t2, t3); // daddu t2, t2, t3 + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t2, 0, a0); // sw t2, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_15: + c->lw(t3, 4, v0); // lw t3, 4(v0) + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t3, 0, a0); // sw t3, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_17: + c->lw(t3, 4, v0); // lw t3, 4(v0) + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t3, 0, a0); // sw t3, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_19: + bc = c->sgpr64(t2) == 0; // beq t2, r0, L161 + c->vrxor(vf2, BC::w); // vrxorw vf2 + if (bc) {goto block_22;} // branch non-likely + + c->vrnext(DEST::xyzw, vf1); // vrnext.xyzw vf1 + c->lw(t1, 12, v0); // lw t1, 12(v0) + c->vsub_bc(DEST::xyzw, BC::w, vf1, vf1, vf0); // vsubw.xyzw vf1, vf1, vf0 + c->lw(t3, 4, v0); // lw t3, 4(v0) + c->mov128_vf_gpr(vf2, t2); // qmtc2.i vf2, t2 + // nop // sll r0, r0, 0 + c->vmul(DEST::xyzw, vf1, vf1, vf2); // vmul.xyzw vf1, vf1, vf2 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf2, t1); // qmtc2.i vf2, t1 + // nop // sll r0, r0, 0 + c->vmul(DEST::xyzw, vf1, vf1, vf2); // vmul.xyzw vf1, vf1, vf2 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf2, t3); // qmtc2.i vf2, t3 + // nop // sll r0, r0, 0 + c->vadd(DEST::xyzw, vf1, vf1, vf2); // vadd.xyzw vf1, vf1, vf2 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(t2, vf1); // qmfc2.i t2, vf1 + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t2, 0, a0); // sw t2, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_22: + c->lw(t3, 4, v0); // lw t3, 4(v0) + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t3, 0, a0); // sw t3, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_24: + bc = c->sgpr64(t2) == 0; // beq t2, r0, L161 + c->vrxor(vf2, BC::w); // vrxorw vf2 + if (bc) {goto block_22;} // branch non-likely + + c->vrnext(DEST::xyzw, vf1); // vrnext.xyzw vf1 + c->lw(t1, 12, v0); // lw t1, 12(v0) + c->vsub_bc(DEST::xyzw, BC::w, vf1, vf1, vf0); // vsubw.xyzw vf1, vf1, vf0 + c->daddiu(t2, t2, 1); // daddiu t2, t2, 1 + c->mov128_vf_gpr(vf2, t2); // qmtc2.i vf2, t2 + c->lw(t3, 4, v0); // lw t3, 4(v0) + c->vitof0(DEST::xyzw, vf2, vf2); // vitof0.xyzw vf2, vf2 + // nop // sll r0, r0, 0 + c->vmul(DEST::xyzw, vf1, vf1, vf2); // vmul.xyzw vf1, vf1, vf2 + // nop // sll r0, r0, 0 + c->vftoi0(DEST::xyzw, vf1, vf1); // vftoi0.xyzw vf1, vf1 + // nop // sll r0, r0, 0 + c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf2, t1); // qmtc2.i vf2, t1 + // nop // sll r0, r0, 0 + c->vmul(DEST::xyzw, vf1, vf1, vf2); // vmul.xyzw vf1, vf1, vf2 + // nop // sll r0, r0, 0 + c->mov128_vf_gpr(vf2, t3); // qmtc2.i vf2, t3 + // nop // sll r0, r0, 0 + c->vadd(DEST::xyzw, vf1, vf1, vf2); // vadd.xyzw vf1, vf1, vf2 + // nop // sll r0, r0, 0 + c->mov128_gpr_vf(t2, vf1); // qmfc2.i t2, vf1 + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t2, 0, a0); // sw t2, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_27: + c->lw(t1, 4, v0); // lw t1, 4(v0) + // nop // sll r0, r0, 0 + c->dsll(t1, t1, 2); // dsll t1, t1, 2 + // nop // sll r0, r0, 0 + c->daddu(t1, t1, a0); // daddu t1, t1, a0 + // nop // sll r0, r0, 0 + c->lw(t3, 0, t1); // lw t3, 0(t1) + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t3, 0, a0); // sw t3, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_29: + c->lw(t1, 4, v0); // lw t1, 4(v0) + // nop // sll r0, r0, 0 + c->lw(t3, 0, t1); // lw t3, 0(t1) + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t3, 0, a0); // sw t3, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_31: + c->load_symbol(t1, cache.part_id_table); // lw t1, *part-id-table*(s7) + // nop // sll r0, r0, 0 + c->lw(t3, 4, v0); // lw t3, 4(v0) + // nop // sll r0, r0, 0 + c->dsll(t3, t3, 2); // dsll t3, t3, 2 + c->daddiu(t1, t1, 12); // daddiu t1, t1, 12 + c->daddu(t3, t3, t1); // daddu t3, t3, t1 + // nop // sll r0, r0, 0 + c->lw(t2, 0, t3); // lw t2, 0(t3) + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t2, 0, a0); // sw t2, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_33: + c->lw(t3, 4, v0); // lw t3, 4(v0) + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->sw(t3, 0, a0); // sw t3, 0(a0) + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + c->daddiu(v0, v0, 16); // daddiu v0, v0, 16 + if (bc) {goto block_4;} // branch non-likely + + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_35: + if (((s64)c->sgpr64(t0)) != ((s64)c->sgpr64(s7))) {// bnel t0, s7, L168 + c->sw(r0, 0, a0); // sw r0, 0(a0) + goto block_37; + } + + block_37: + c->daddiu(a2, a2, 1); // daddiu a2, a2, 1 + c->daddiu(a0, a0, 4); // daddiu a0, a0, 4 + bc = c->sgpr64(a2) != c->sgpr64(a3); // bne a2, a3, L157 + // nop // sll r0, r0, 0 + if (bc) {goto block_4;} // branch non-likely + + + block_38: + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + //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.part_id_table = intern_from_c("*part-id-table*").c(); + gLinkedFunctionTable.reg("sp-init-fields!", execute, 0); +} + +} // namespace sp_init_fields +} // namespace Mips2C + +//--------------------------MIPS2C--------------------- +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/kscheme.h" +namespace Mips2C { +namespace particle_adgif { +struct Cache { + void* particle_adgif_cache; // *particle-adgif-cache* + void* particle_setup_adgif; // particle-setup-adgif +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + u32 call_addr = 0; + c->mov64(v1, a0); // or v1, a0, r0 + c->mov64(v1, a1); // or v1, a1, r0 + // nop // sll r0, r0, 0 + c->dsra(a3, a1, 20); // dsra a3, a1, 20 + c->load_symbol(t1, cache.particle_adgif_cache); // lw t1, *particle-adgif-cache*(s7) + c->dsra(t0, a1, 8); // dsra t0, a1, 8 + c->lw(t2, 0, t1); // lw t2, 0(t1) + c->xor_(a3, a3, t0); // xor a3, a3, t0 + c->lhu(v1, 4, t1); // lhu v1, 4(t1) + c->andi(a3, a3, 65535); // andi a3, a3, 65535 + c->lw(t4, 8, t1); // lw t4, 8(t1) + bc = c->sgpr64(v1) == c->sgpr64(a3); // beq v1, a3, L151 + c->daddiu(t3, t1, 12); // daddiu t3, t1, 12 + if (bc) {goto block_6;} // branch non-likely + + bc = c->sgpr64(t2) == 0; // beq t2, r0, L150 + c->daddiu(t4, t1, 172); // daddiu t4, t1, 172 + if (bc) {goto block_4;} // branch non-likely + + + block_2: + c->lhu(v1, 0, t3); // lhu v1, 0(t3) + c->daddiu(t3, t3, 2); // daddiu t3, t3, 2 + // nop // sll r0, r0, 0 + // nop // sll r0, r0, 0 + bc = c->sgpr64(v1) == c->sgpr64(a3); // beq v1, a3, L151 + c->daddiu(t2, t2, -1); // daddiu t2, t2, -1 + if (bc) {goto block_6;} // branch non-likely + + bc = c->sgpr64(t2) != 0; // bne t2, r0, L149 + c->daddiu(t4, t4, 80); // daddiu t4, t4, 80 + if (bc) {goto block_2;} // branch non-likely + + + block_4: + c->daddiu(sp, sp, -16); // daddiu sp, sp, -16 + c->lw(v1, 0, t1); // lw v1, 0(t1) + c->daddiu(v1, v1, -80); // daddiu v1, v1, -80 + c->sw(a0, 0, sp); // sw a0, 0(sp) + bc = c->sgpr64(v1) == 0; // beq v1, r0, L152 + c->daddiu(v1, v1, 81); // daddiu v1, v1, 81 + if (bc) {goto block_7;} // branch non-likely + + c->sh(a3, 0, t3); // sh a3, 0(t3) + // nop // sll r0, r0, 0 + c->sw(t4, 4, sp); // sw t4, 4(sp) + c->mov64(a0, t4); // or a0, t4, r0 + c->load_symbol(t9, cache.particle_setup_adgif); // lw t9, particle-setup-adgif(s7) + // nop // sll r0, r0, 0 + c->sw(ra, 8, sp); // sw ra, 8(sp) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + c->sw(v1, 0, t1); // sw v1, 0(t1) + c->jalr(call_addr); // jalr ra, t9 + c->lw(a0, 0, sp); // lw a0, 0(sp) + // nop // sll r0, r0, 0 + c->lw(t4, 4, sp); // lw t4, 4(sp) + // nop // sll r0, r0, 0 + c->lw(ra, 8, sp); // lw ra, 8(sp) + c->daddiu(sp, sp, 16); // daddiu sp, sp, 16 + + block_6: + c->lqc2(vf16, 0, t4); // lqc2 vf16, 0(t4) + c->lqc2(vf17, 16, t4); // lqc2 vf17, 16(t4) + c->lqc2(vf18, 32, t4); // lqc2 vf18, 32(t4) + c->lqc2(vf19, 48, t4); // lqc2 vf19, 48(t4) + c->lqc2(vf20, 64, t4); // lqc2 vf20, 64(t4) + c->sqc2(vf16, 0, a0); // sqc2 vf16, 0(a0) + c->sqc2(vf17, 16, a0); // sqc2 vf17, 16(a0) + c->sqc2(vf18, 32, a0); // sqc2 vf18, 32(a0) + c->sqc2(vf19, 48, a0); // sqc2 vf19, 48(a0) + c->sqc2(vf20, 64, a0); // sqc2 vf20, 64(a0) + c->sw(t4, 8, t1); // sw t4, 8(t1) + c->sh(a3, 4, t1); // sh a3, 4(t1) + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + + block_7: + c->sw(t4, 4, sp); // sw t4, 4(sp) + // nop // sll r0, r0, 0 + c->load_symbol(t9, cache.particle_setup_adgif); // lw t9, particle-setup-adgif(s7) + // nop // sll r0, r0, 0 + c->sw(ra, 8, sp); // sw ra, 8(sp) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->lw(t4, 4, sp); // lw t4, 4(sp) + // nop // sll r0, r0, 0 + c->lw(ra, 8, sp); // lw ra, 8(sp) + c->daddiu(sp, sp, 16); // daddiu sp, sp, 16 + //jr ra // jr ra + // nop // sll r0, r0, 0 + goto end_of_function; // return + + //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 + end_of_function: + return c->gprs[v0].du64[0]; +} + +void link() { + cache.particle_adgif_cache = intern_from_c("*particle-adgif-cache*").c(); + cache.particle_setup_adgif = intern_from_c("particle-setup-adgif").c(); + gLinkedFunctionTable.reg("particle-adgif", execute, 128); +} + +} // namespace particle_adgif +} // namespace Mips2C + +//--------------------------MIPS2C--------------------- +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/kscheme.h" +namespace Mips2C { +namespace sp_launch_particles_var { +struct Cache { + void* level; // *level* + void* sp_launcher_enable; // *sp-launcher-enable* + void* sp_launcher_lock; // *sp-launcher-lock* + void* time_of_day_context; // *time-of-day-context* + void* add_to_sprite_aux_list; // add-to-sprite-aux-list + void* cos; // cos + void* new_sound_id; // new-sound-id + void* particle_adgif; // particle-adgif + void* quaternion_axis_angle; // quaternion-axis-angle! + void* sin; // sin + void* sound_play_by_spec; // sound-play-by-spec + void* sp_adjust_launch; // sp-adjust-launch + void* sp_euler_convert; // sp-euler-convert + void* sp_get_particle; // sp-get-particle + void* sp_init_fields; // sp-init-fields! + void* sp_queue_launch; // sp-queue-launch + void* sp_rotate_system; // sp-rotate-system +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + bool bc = false; + u32 call_addr = 0; + c->mov64(v1, a0); // or v1, a0, r0 + c->mov64(v1, a1); // or v1, a1, r0 + c->mov64(v1, a2); // or v1, a2, r0 + c->mov64(v1, a3); // or v1, a3, r0 + c->mov64(v1, t0); // or v1, t0, r0 + c->mov64(v1, t1); // or v1, t1, r0 + // nop // sll r0, r0, 0 + c->daddiu(sp, sp, -256); // daddiu sp, sp, -256 + // nop // sll r0, r0, 0 + c->load_symbol(v1, cache.sp_launcher_enable); // lw v1, *sp-launcher-enable*(s7) + c->sw(ra, 0, sp); // sw ra, 0(sp) + bc = c->sgpr64(v1) == c->sgpr64(s7); // beq v1, s7, L106 + c->sq(s0, 16, sp); // sq s0, 16(sp) + if (bc) {goto block_6;} // branch non-likely + + c->load_symbol(v1, cache.sp_launcher_lock); // lw v1, *sp-launcher-lock*(s7) + c->sq(s1, 32, sp); // sq s1, 32(sp) + bc = c->sgpr64(v1) == c->sgpr64(s7); // beq v1, s7, L108 + c->sq(s2, 48, sp); // sq s2, 48(sp) + if (bc) {goto block_8;} // branch non-likely + + bc = c->sgpr64(a3) != c->sgpr64(s7); // bne a3, s7, L107 + c->lui(v1, 16256); // lui v1, 16256 + if (bc) {goto block_7;} // branch non-likely + + bc = c->sgpr64(t0) != c->sgpr64(s7); // bne t0, s7, L107 + // nop // sll r0, r0, 0 + if (bc) {goto block_7;} // branch non-likely + + bc = c->sgpr64(t1) != c->sgpr64(v1); // bne t1, v1, L107 + // nop // sll r0, r0, 0 + if (bc) {goto block_7;} // branch non-likely + + c->load_symbol(t9, cache.sp_queue_launch); // lw t9, sp-queue-launch(s7) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->lw(ra, 0, sp); // lw ra, 0(sp) + // nop // sll r0, r0, 0 + + block_6: + //jr ra // jr ra + c->daddiu(sp, sp, 256); // daddiu sp, sp, 256 + goto end_of_function; // return + + + block_7: + c->sd(r0, 2, r0); // sd r0, 2(r0) + // nop // sll r0, r0, 0 + + block_8: + c->sq(s3, 176, sp); // sq s3, 176(sp) + // nop // sll r0, r0, 0 + c->sq(s4, 192, sp); // sq s4, 192(sp) + // nop // sll r0, r0, 0 + c->sq(s5, 208, sp); // sq s5, 208(sp) + // nop // sll r0, r0, 0 + c->sq(s6, 224, sp); // sq s6, 224(sp) + // nop // sll r0, r0, 0 + c->lqc2(vf30, 0, a2); // lqc2 vf30, 0(a2) + c->mtc1(f1, t1); // mtc1 f1, t1 + c->sqc2(vf30, 64, sp); // sqc2 vf30, 64(sp) + c->lui(v1, 17279); // lui v1, 17279 + c->mov64(s3, a0); // or s3, a0, r0 + c->mov128_vf_gpr(vf31, v1); // qmtc2.i vf31, v1 + c->mov64(s4, a1); // or s4, a1, r0 + c->lw(s6, 24, s3); // lw s6, 24(s3) + c->mov64(s0, a3); // or s0, a3, r0 + c->mov64(s1, t0); // or s1, t0, r0 + c->lw(a1, 8, a1); // lw a1, 8(a1) + c->daddiu(a0, sp, 96); // daddiu a0, sp, 96 + c->addiu(a2, r0, 0); // addiu a2, r0, 0 + c->addiu(a3, r0, 8); // addiu a3, r0, 8 + c->load_symbol(t9, cache.sp_init_fields); // lw t9, sp-init-fields!(s7) + c->daddiu(t0, s7, 8); // daddiu t0, s7, 8 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->sw(v0, 12, sp); // sw v0, 12(sp) + // nop // sll r0, r0, 0 + c->lwc1(f2, 116, sp); // lwc1 f2, 116(sp) + // nop // sll r0, r0, 0 + bc = c->sgpr64(s0) == c->sgpr64(s7); // beq s0, s7, L109 + c->muls(f1, f2, f1); // mul.s f1, f2, f1 + if (bc) {goto block_11;} // branch non-likely + + c->lwc1(f2, 24, s0); // lwc1 f2, 24(s0) + // nop // sll r0, r0, 0 + c->adds(f2, f2, f1); // add.s f2, f2, f1 + // nop // sll r0, r0, 0 + c->swc1(f2, 24, s0); // swc1 f2, 24(s0) + // nop // sll r0, r0, 0 + c->cvtws(f2, f2); // cvt.w.s f2, f2 + // nop // sll r0, r0, 0 + c->mfc1(v1, f2); // mfc1 v1, f2 + // nop // sll r0, r0, 0 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L132 + // nop // sll r0, r0, 0 + if (bc) {goto block_66;} // branch non-likely + + //beq r0, r0, L110 // beq r0, r0, L110 + // nop // sll r0, r0, 0 + goto block_12; // branch always + + + block_11: + // nop // sll r0, r0, 0 + c->lwc1(f2, 0, s4); // lwc1 f2, 0(s4) + // nop // sll r0, r0, 0 + c->adds(f2, f2, f1); // add.s f2, f2, f1 + // nop // sll r0, r0, 0 + c->swc1(f2, 0, s4); // swc1 f2, 0(s4) + // nop // sll r0, r0, 0 + c->cvtws(f2, f2); // cvt.w.s f2, f2 + // nop // sll r0, r0, 0 + c->mfc1(v1, f2); // mfc1 v1, f2 + // nop // sll r0, r0, 0 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L132 + // nop // sll r0, r0, 0 + if (bc) {goto block_66;} // branch non-likely + + + block_12: + c->addiu(a1, r0, 0); // addiu a1, r0, 0 + c->mov64(a2, s7); // or a2, s7, r0 + bc = c->sgpr64(s1) == c->sgpr64(s7); // beq s1, s7, L111 + c->lw(v1, 12, s1); // lw v1, 12(s1) + if (bc) {goto block_15;} // branch non-likely + + bc = c->sgpr64(v1) == c->sgpr64(s7); // beq v1, s7, L111 + c->lh(v1, 6, v1); // lh v1, 6(v1) + if (bc) {goto block_15;} // branch non-likely + + c->andi(a0, v1, 4); // andi a0, v1, 4 + c->addiu(a3, r0, 1); // addiu a3, r0, 1 + c->movn(a1, a3, a0); // movn a1, a3, a0 + c->andi(a0, v1, 8); // andi a0, v1, 8 + c->movn(a2, s0, a0); // movn a2, s0, a0 + // nop // sll r0, r0, 0 + + block_15: + c->load_symbol(t9, cache.sp_get_particle); // lw t9, sp-get-particle(s7) + c->mov64(a0, s3); // or a0, s3, r0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + bc = c->sgpr64(v0) == c->sgpr64(s7); // beq v0, s7, L132 + c->mov64(s2, v0); // or s2, v0, r0 + if (bc) {goto block_66;} // branch non-likely + + c->daddiu(a0, sp, 128); // daddiu a0, sp, 128 + c->lw(a1, 12, sp); // lw a1, 12(sp) + c->addiu(a2, r0, 9); // addiu a2, r0, 9 + c->addiu(a3, r0, 22); // addiu a3, r0, 22 + c->load_symbol(t9, cache.sp_init_fields); // lw t9, sp-init-fields!(s7) + c->daddiu(t0, s7, 8); // daddiu t0, s7, 8 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->daddiu(a0, s2, 12); // daddiu a0, s2, 12 + c->mov64(a1, v0); // or a1, v0, r0 + c->addiu(a2, r0, 23); // addiu a2, r0, 23 + c->addiu(a3, r0, 52); // addiu a3, r0, 52 + call_addr = c->gprs[t9].du32[0]; // function call: + c->daddiu(t0, s7, 8); // daddiu t0, s7, 8 + c->jalr(call_addr); // jalr ra, t9 + c->sw(v0, 80, sp); // sw v0, 80(sp) + // nop // sll r0, r0, 0 + c->lw(s5, 104, s2); // lw s5, 104(s2) + // nop // sll r0, r0, 0 + bc = c->sgpr64(s6) != c->sgpr64(s7); // bne s6, s7, L114 + // nop // sll r0, r0, 0 + if (bc) {goto block_23;} // branch non-likely + + bc = c->sgpr64(s1) == c->sgpr64(s7); // beq s1, s7, L112 + c->lw(v1, 12, s1); // lw v1, 12(s1) + if (bc) {goto block_21;} // branch non-likely + + bc = c->sgpr64(v1) == c->sgpr64(s7); // beq v1, s7, L112 + c->lh(v1, 6, v1); // lh v1, 6(v1) + if (bc) {goto block_21;} // branch non-likely + + c->andi(v1, v1, 4); // andi v1, v1, 4 + c->mov64(a0, s5); // or a0, s5, r0 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L112 + c->lw(v1, 28, s1); // lw v1, 28(s1) + if (bc) {goto block_21;} // branch non-likely + + c->andi(a0, a0, 256); // andi a0, a0, 256 + c->addiu(a1, r0, 1); // addiu a1, r0, 1 + c->movn(v1, a1, a0); // movn v1, a1, a0 + // nop // sll r0, r0, 0 + //beq r0, r0, L113 // beq r0, r0, L113 + c->sw(v1, 148, sp); // sw v1, 148(sp) + goto block_22; // branch always + + + block_21: + c->andi(v1, s5, 16384); // andi v1, s5, 16384 + // nop // sll r0, r0, 0 + c->dsra(v1, v1, 14); // dsra v1, v1, 14 + // nop // sll r0, r0, 0 + c->sw(v1, 148, sp); // sw v1, 148(sp) + // nop // sll r0, r0, 0 + + block_22: + c->lwc1(f2, 152, sp); // lwc1 f2, 152(sp) + // nop // sll r0, r0, 0 + c->cvtws(f2, f2); // cvt.w.s f2, f2 + // nop // sll r0, r0, 0 + c->mfc1(v1, f2); // mfc1 v1, f2 + // nop // sll r0, r0, 0 + c->dsll32(v1, v1, 16); // dsll32 v1, v1, 16 + // nop // sll r0, r0, 0 + c->dsra32(v1, v1, 16); // dsra32 v1, v1, 16 + // nop // sll r0, r0, 0 + c->mtc1(f2, v1); // mtc1 f2, v1 + // nop // sll r0, r0, 0 + c->cvtsw(f2, f2); // cvt.s.w f2, f2 + // nop // sll r0, r0, 0 + c->swc1(f2, 152, sp); // swc1 f2, 152(sp) + // nop // sll r0, r0, 0 + + block_23: + c->andi(v1, s5, 256); // andi v1, s5, 256 + c->lqc2(vf4, 160, sp); // lqc2 vf4, 160(sp) + bc = c->sgpr64(v1) != 0; // bne v1, r0, L115 + c->vmini_bc(DEST::xyz, BC::x, vf4, vf4, vf31); // vminix.xyz vf4, vf4, vf31 + if (bc) {goto block_25;} // branch non-likely + + c->sqc2(vf4, 160, sp); // sqc2 vf4, 160(sp) + // nop // sll r0, r0, 0 + + block_25: + bc = c->sgpr64(s1) == c->sgpr64(s7); // beq s1, s7, L116 + c->andi(v1, s5, 128); // andi v1, s5, 128 + if (bc) {goto block_28;} // branch non-likely + + bc = c->sgpr64(v1) == 0; // beq v1, r0, L116 + c->lw(a0, 128, sp); // lw a0, 128(sp) + if (bc) {goto block_28;} // branch non-likely + + c->load_symbol(t9, cache.cos); // lw t9, cos(s7) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->mov64(a1, v0); // or a1, v0, r0 + c->lw(a0, 128, sp); // lw a0, 128(sp) + c->load_symbol(t9, cache.sin); // lw t9, sin(s7) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->ori(v1, r0, 32768); // ori v1, r0, 32768 + c->dsll(v1, v1, 16); // dsll v1, v1, 16 + c->lw(a0, 136, sp); // lw a0, 136(sp) + c->xor_(a3, v0, v1); // xor a3, v0, v1 + c->sw(a0, 8, s2); // sw a0, 8(s2) + c->gprs[a2].du64[0] = 0; // or a2, r0, r0 + c->lw(t0, 132, sp); // lw t0, 132(sp) + c->load_symbol(t9, cache.quaternion_axis_angle); // lw t9, quaternion-axis-angle!(s7) + c->daddiu(a0, s2, 80); // daddiu a0, s2, 80 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->lw(v1, 16, s0); // lw v1, 16(s0) + // nop // sll r0, r0, 0 + c->lw(v1, 0, v1); // lw v1, 0(v1) + // nop // sll r0, r0, 0 + c->sw(v1, 108, s2); // sw v1, 108(s2) + // nop // sll r0, r0, 0 + + block_28: + c->sw(s7, 136, s2); // sw s7, 136(s2) + // nop // sll r0, r0, 0 + bc = c->sgpr64(s0) == c->sgpr64(s7); // beq s0, s7, L120 + c->lw(a0, 0, s0); // lw a0, 0(s0) + if (bc) {goto block_37;} // branch non-likely + + c->lw(a1, 24, a0); // lw a1, 24(a0) + // nop // sll r0, r0, 0 + bc = c->sgpr64(a1) == 0; // beq a1, r0, L120 + // nop // sll r0, r0, 0 + if (bc) {goto block_37;} // branch non-likely + + c->lw(a2, 0, s1); // lw a2, 0(s1) + c->daddiu(a3, s1, 60); // daddiu a3, s1, 60 + + block_31: + c->lw(v1, 0, a3); // lw v1, 0(a3) + c->daddiu(a2, a2, -1); // daddiu a2, a2, -1 + c->lw(v1, 0, v1); // lw v1, 0(v1) + // nop // sll r0, r0, 0 + bc = c->sgpr64(v1) != c->sgpr64(a1); // bne v1, a1, L119 + c->lh(v1, 4, a3); // lh v1, 4(a3) + if (bc) {goto block_36;} // branch non-likely + + c->andi(a0, v1, 1); // andi a0, v1, 1 + c->ori(v1, v1, 1); // ori v1, v1, 1 + bc = c->sgpr64(a0) != 0; // bne a0, r0, L119 + // nop // sll r0, r0, 0 + if (bc) {goto block_36;} // branch non-likely + + c->sh(v1, 4, a3); // sh v1, 4(a3) + // nop // sll r0, r0, 0 + c->lw(v1, 0, s2); // lw v1, 0(s2) + // nop // sll r0, r0, 0 + c->sw(v1, 8, a3); // sw v1, 8(a3) + c->mov64(a0, s7); // or a0, s7, r0 + if (((s64)c->sgpr64(s6)) != ((s64)c->sgpr64(s7))) {// bnel s6, s7, L118 + c->lw(a0, 0, s2); // lw a0, 0(s2) + goto block_35; + } + + block_35: + c->sw(a0, 12, a3); // sw a0, 12(a3) + // nop // sll r0, r0, 0 + c->sw(s2, 16, a3); // sw s2, 16(a3) + // nop // sll r0, r0, 0 + c->sw(a3, 136, s2); // sw a3, 136(s2) + // nop // sll r0, r0, 0 + //beq r0, r0, L120 // beq r0, r0, L120 + // nop // sll r0, r0, 0 + goto block_37; // branch always + + + block_36: + bc = c->sgpr64(a2) != 0; // bne a2, r0, L117 + c->daddiu(a3, a3, 32); // daddiu a3, a3, 32 + if (bc) {goto block_31;} // branch non-likely + + + block_37: + c->lw(a2, 80, sp); // lw a2, 80(sp) + c->daddiu(a0, sp, 128); // daddiu a0, sp, 128 + c->lh(v1, 0, a2); // lh v1, 0(a2) + c->mov64(a1, s2); // or a1, s2, r0 + c->load_symbol(t9, cache.sp_adjust_launch); // lw t9, sp-adjust-launch(s7) + c->daddiu(v1, v1, -64); // daddiu v1, v1, -64 + bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L121 + // nop // sll r0, r0, 0 + if (bc) {goto block_39;} // branch non-likely + + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + + block_39: + bc = c->sgpr64(s6) == c->sgpr64(s7); // beq s6, s7, L122 + // nop // sll r0, r0, 0 + if (bc) {goto block_41;} // branch non-likely + + c->load_symbol(t9, cache.sp_euler_convert); // lw t9, sp-euler-convert(s7) + c->daddiu(a0, sp, 128); // daddiu a0, sp, 128 + call_addr = c->gprs[t9].du32[0]; // function call: + c->mov64(a1, s2); // or a1, s2, r0 + c->jalr(call_addr); // jalr ra, t9 + + block_41: + bc = c->sgpr64(s0) == c->sgpr64(s7); // beq s0, s7, L123 + c->lw(a2, 12, s0); // lw a2, 12(s0) + if (bc) {goto block_45;} // branch non-likely + + bc = c->sgpr64(a2) == c->sgpr64(s7); // beq a2, s7, L123 + c->daddiu(a0, sp, 128); // daddiu a0, sp, 128 + if (bc) {goto block_45;} // branch non-likely + + bc = c->sgpr64(a2) == 0; // beq a2, r0, L123 + c->mov64(a1, s2); // or a1, s2, r0 + if (bc) {goto block_45;} // branch non-likely + + c->load_symbol(t9, cache.sp_rotate_system); // lw t9, sp-rotate-system(s7) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + + block_45: + c->lqc2(vf4, 128, sp); // lqc2 vf4, 128(sp) + // nop // sll r0, r0, 0 + c->vadd(DEST::xyz, vf4, vf4, vf30); // vadd.xyz vf4, vf4, vf30 + c->lw(a0, 4, s2); // lw a0, 4(s2) + c->lw(a1, 96, sp); // lw a1, 96(sp) + // nop // sll r0, r0, 0 + c->load_symbol(t9, cache.particle_adgif); // lw t9, particle-adgif(s7) + // nop // sll r0, r0, 0 + c->sqc2(vf4, 128, sp); // sqc2 vf4, 128(sp) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->lw(a2, 4, s2); // lw a2, 4(s2) + c->lui(a3, 256); // lui a3, 256 + c->lw(v1, 64, a2); // lw v1, 64(a2) + c->andi(a0, s5, 32); // andi a0, s5, 32 + c->addiu(a1, r0, 134); // addiu a1, r0, 134 + // nop // sll r0, r0, 0 + c->movn(v1, a1, a0); // movn v1, a1, a0 + c->andi(a0, s5, 16); // andi a0, s5, 16 + c->addiu(a1, r0, 66); // addiu a1, r0, 66 + // nop // sll r0, r0, 0 + c->movn(v1, a1, a0); // movn v1, a1, a0 + c->andi(a0, s5, 8); // andi a0, s5, 8 + c->addiu(a1, r0, 72); // addiu a1, r0, 72 + // nop // sll r0, r0, 0 + c->movn(v1, a1, a0); // movn v1, a1, a0 + c->andi(a0, s5, 512); // andi a0, s5, 512 + c->sw(v1, 64, a2); // sw v1, 64(a2) + c->ori(a1, a3, 448); // ori a1, a3, 448 + if (((s64)c->sgpr64(a0)) != ((s64)0)) { // bnel a0, r0, L124 + c->sd(a1, 48, a2); // sd a1, 48(a2) + goto block_47; + } + + block_47: + c->lw(t9, 108, sp); // lw t9, 108(sp) + c->mov64(a1, s2); // or a1, s2, r0 + c->mov64(a0, s3); // or a0, s3, r0 + c->mov64(t0, s0); // or t0, s0, r0 + bc = c->sgpr64(t9) == 0; // beq t9, r0, L125 + c->daddiu(a2, sp, 128); // daddiu a2, sp, 128 + if (bc) {goto block_49;} // branch non-likely + + call_addr = c->gprs[t9].du32[0]; // function call: + c->mov64(a3, s4); // or a3, s4, r0 + c->jalr(call_addr); // jalr ra, t9 + + block_49: + c->lw(a0, 120, sp); // lw a0, 120(sp) + // nop // sll r0, r0, 0 + c->lwc1(f2, 4, s4); // lwc1 f2, 4(s4) + c->lui(a1, 16256); // lui a1, 16256 + bc = c->sgpr64(a0) == 0; // beq a0, r0, L126 + // nop // sll r0, r0, 0 + if (bc) {goto block_52;} // branch non-likely + + c->lwc1(f3, 4, a0); // lwc1 f3, 4(a0) + // nop // sll r0, r0, 0 + c->adds(f2, f2, f3); // add.s f2, f2, f3 + // nop // sll r0, r0, 0 + c->swc1(f2, 4, s4); // swc1 f2, 4(s4) + c->mtc1(f3, a1); // mtc1 f3, a1 + c->subs(f2, f2, f3); // sub.s f2, f2, f3 + // nop // sll r0, r0, 0 + c->mfc1(a1, f2); // mfc1 a1, f2 + // nop // sll r0, r0, 0 + bc = ((s64)c->sgpr64(a1)) < 0; // bltz a1, L126 + c->load_symbol(t9, cache.new_sound_id); // lw t9, new-sound-id(s7) + if (bc) {goto block_52;} // branch non-likely + + c->sw(a1, 4, s4); // sw a1, 4(s4) + // nop // sll r0, r0, 0 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + c->lw(a0, 120, sp); // lw a0, 120(sp) + c->mov64(a1, v0); // or a1, v0, r0 + c->load_symbol(t9, cache.sound_play_by_spec); // lw t9, sound-play-by-spec(s7) + c->daddiu(a2, sp, 64); // daddiu a2, sp, 64 + call_addr = c->gprs[t9].du32[0]; // function call: + // nop // sll r0, r0, 0 + c->jalr(call_addr); // jalr ra, t9 + + block_52: + c->addiu(a0, r0, 4); // addiu a0, r0, 4 + c->andi(v1, s5, 256); // andi v1, s5, 256 + bc = c->sgpr64(v1) == 0; // beq v1, r0, L127 + c->dsubu(a0, r0, a0); // dsubu a0, r0, a0 + if (bc) {goto block_54;} // branch non-likely + + c->load_symbol(v1, cache.add_to_sprite_aux_list); // lw v1, add-to-sprite-aux-list(s7) + c->daddiu(a0, a0, -1); // daddiu a0, a0, -1 + c->sw(v1, 112, s2); // sw v1, 112(s2) + c->and_(s5, s5, a0); // and s5, s5, a0 + c->sw(r0, 172, sp); // sw r0, 172(sp) + // nop // sll r0, r0, 0 + c->sw(r0, 60, s2); // sw r0, 60(s2) + // nop // sll r0, r0, 0 + c->lw(v1, 144, sp); // lw v1, 144(sp) + c->addiu(a0, r0, 3); // addiu a0, r0, 3 + c->pmaxw(v1, v1, a0); // pmaxw v1, v1, a0 + c->addiu(a0, r0, 11); // addiu a0, r0, 11 + c->pminw(v1, v1, a0); // pminw v1, v1, a0 + // nop // sll r0, r0, 0 + c->sw(v1, 144, sp); // sw v1, 144(sp) + // nop // sll r0, r0, 0 + + block_54: + c->load_symbol(a0, cache.level); // lw a0, *level*(s7) + // nop // sll r0, r0, 0 + c->lw(v1, 124, a0); // lw v1, 124(a0) + // nop // sll r0, r0, 0 + c->dsubu(v1, s4, v1); // dsubu v1, s4, v1 + // nop // sll r0, r0, 0 + bc = ((s64)c->sgpr64(v1)) < 0; // bltz v1, L128 + // nop // sll r0, r0, 0 + if (bc) {goto block_57;} // branch non-likely + + c->lw(v1, 128, a0); // lw v1, 128(a0) + // nop // sll r0, r0, 0 + c->dsubu(v1, s4, v1); // dsubu v1, s4, v1 + // nop // sll r0, r0, 0 + bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L128 + // nop // sll r0, r0, 0 + if (bc) {goto block_57;} // branch non-likely + + //beq r0, r0, L129 // beq r0, r0, L129 + c->ori(s5, s5, 1024); // ori s5, s5, 1024 + goto block_60; // branch always + + + block_57: + c->lw(v1, 2732, a0); // lw v1, 2732(a0) + // nop // sll r0, r0, 0 + c->dsubu(v1, s4, v1); // dsubu v1, s4, v1 + // nop // sll r0, r0, 0 + bc = ((s64)c->sgpr64(v1)) < 0; // bltz v1, L129 + // nop // sll r0, r0, 0 + if (bc) {goto block_60;} // branch non-likely + + c->lw(v1, 2736, a0); // lw v1, 2736(a0) + // nop // sll r0, r0, 0 + c->dsubu(v1, s4, v1); // dsubu v1, s4, v1 + // nop // sll r0, r0, 0 + bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L129 + // nop // sll r0, r0, 0 + if (bc) {goto block_60;} // branch non-likely + + c->ori(s5, s5, 2048); // ori s5, s5, 2048 + // nop // sll r0, r0, 0 + + block_60: + c->andi(v1, s5, 4352); // andi v1, s5, 4352 + c->addiu(a0, r0, 4096); // addiu a0, r0, 4096 + bc = c->sgpr64(v1) != c->sgpr64(a0); // bne v1, a0, L130 + c->load_symbol(a0, cache.time_of_day_context); // lw a0, *time-of-day-context*(s7) + if (bc) {goto block_62;} // branch non-likely + + c->lqc2(vf4, 108, a0); // lqc2 vf4, 108(a0) + // nop // sll r0, r0, 0 + c->lqc2(vf5, 160, sp); // lqc2 vf5, 160(sp) + // nop // sll r0, r0, 0 + c->lqc2(vf6, 48, s2); // lqc2 vf6, 48(s2) + // nop // sll r0, r0, 0 + c->vmul(DEST::xyz, vf5, vf5, vf4); // vmul.xyz vf5, vf5, vf4 + // nop // sll r0, r0, 0 + c->vmul(DEST::xyz, vf6, vf6, vf4); // vmul.xyz vf6, vf6, vf4 + // nop // sll r0, r0, 0 + c->sqc2(vf5, 160, sp); // sqc2 vf5, 160(sp) + // nop // sll r0, r0, 0 + c->sqc2(vf6, 48, s2); // sqc2 vf6, 48(s2) + // nop // sll r0, r0, 0 + + block_62: + c->mov64(v1, s1); // or v1, s1, r0 + c->dsubu(a0, s1, s7); // dsubu a0, s1, s7 + c->movz(v1, r0, a0); // movz v1, r0, a0 + // nop // sll r0, r0, 0 + c->sw(v1, 132, s2); // sw v1, 132(s2) + // nop // sll r0, r0, 0 + c->lw(v1, 0, s2); // lw v1, 0(s2) + // nop // sll r0, r0, 0 + c->lqc2(vf4, 128, sp); // lqc2 vf4, 128(sp) + // nop // sll r0, r0, 0 + c->lqc2(vf5, 144, sp); // lqc2 vf5, 144(sp) + // nop // sll r0, r0, 0 + c->lqc2(vf6, 160, sp); // lqc2 vf6, 160(sp) + // nop // sll r0, r0, 0 + c->sqc2(vf4, 0, v1); // sqc2 vf4, 0(v1) + // nop // sll r0, r0, 0 + c->sqc2(vf5, 16, v1); // sqc2 vf5, 16(v1) + // nop // sll r0, r0, 0 + c->vsub_bc(DEST::w, BC::w, vf6, vf0, vf0); // vsubw.w vf6, vf0, vf0 + // nop // sll r0, r0, 0 + c->sqc2(vf6, 32, v1); // sqc2 vf6, 32(v1) + // nop // sll r0, r0, 0 + c->ori(s5, s5, 64); // ori s5, s5, 64 + c->lw(a0, 172, sp); // lw a0, 172(sp) + c->sw(s5, 104, s2); // sw s5, 104(s2) + // nop // sll r0, r0, 0 + c->sw(a0, 124, s2); // sw a0, 124(s2) + // nop // sll r0, r0, 0 + bc = c->sgpr64(s0) == c->sgpr64(s7); // beq s0, s7, L131 + c->lui(v1, 16256); // lui v1, 16256 + if (bc) {goto block_65;} // branch non-likely + + c->lwc1(f2, 24, s0); // lwc1 f2, 24(s0) + c->mtc1(f3, v1); // mtc1 f3, v1 + c->subs(f2, f2, f3); // sub.s f2, f2, f3 + // nop // sll r0, r0, 0 + c->swc1(f2, 24, s0); // swc1 f2, 24(s0) + c->cvtws(f2, f2); // cvt.w.s f2, f2 + c->mfc1(v1, f2); // mfc1 v1, f2 + // nop // sll r0, r0, 0 + bc = c->sgpr64(v1) != 0; // bne v1, r0, L110 + // nop // sll r0, r0, 0 + if (bc) {goto block_12;} // branch non-likely + + //beq r0, r0, L132 // beq r0, r0, L132 + // nop // sll r0, r0, 0 + goto block_66; // branch always + + + block_65: + c->lwc1(f2, 0, s4); // lwc1 f2, 0(s4) + c->mtc1(f3, v1); // mtc1 f3, v1 + c->subs(f2, f2, f3); // sub.s f2, f2, f3 + // nop // sll r0, r0, 0 + c->swc1(f2, 0, s4); // swc1 f2, 0(s4) + c->cvtws(f2, f2); // cvt.w.s f2, f2 + c->mfc1(v1, f2); // mfc1 v1, f2 + // nop // sll r0, r0, 0 + bc = c->sgpr64(v1) != 0; // bne v1, r0, L110 + // nop // sll r0, r0, 0 + if (bc) {goto block_12;} // branch non-likely + + + block_66: + c->lw(ra, 0, sp); // lw ra, 0(sp) + // nop // sll r0, r0, 0 + c->lq(s0, 16, sp); // lq s0, 16(sp) + // nop // sll r0, r0, 0 + c->lq(s1, 32, sp); // lq s1, 32(sp) + // nop // sll r0, r0, 0 + c->lq(s2, 48, sp); // lq s2, 48(sp) + // nop // sll r0, r0, 0 + c->lq(s3, 176, sp); // lq s3, 176(sp) + // nop // sll r0, r0, 0 + c->lq(s4, 192, sp); // lq s4, 192(sp) + // nop // sll r0, r0, 0 + c->lq(s5, 208, sp); // lq s5, 208(sp) + // nop // sll r0, r0, 0 + c->lq(s6, 224, sp); // lq s6, 224(sp) + // nop // sll r0, r0, 0 + //jr ra // jr ra + c->daddiu(sp, sp, 256); // daddiu sp, sp, 256 + goto end_of_function; // return + + //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 + end_of_function: + return c->gprs[v0].du64[0]; +} + +void link() { + cache.level = intern_from_c("*level*").c(); + cache.sp_launcher_enable = intern_from_c("*sp-launcher-enable*").c(); + cache.sp_launcher_lock = intern_from_c("*sp-launcher-lock*").c(); + cache.time_of_day_context = intern_from_c("*time-of-day-context*").c(); + cache.add_to_sprite_aux_list = intern_from_c("add-to-sprite-aux-list").c(); + cache.cos = intern_from_c("cos").c(); + cache.new_sound_id = intern_from_c("new-sound-id").c(); + cache.particle_adgif = intern_from_c("particle-adgif").c(); + cache.quaternion_axis_angle = intern_from_c("quaternion-axis-angle!").c(); + cache.sin = intern_from_c("sin").c(); + cache.sound_play_by_spec = intern_from_c("sound-play-by-spec").c(); + cache.sp_adjust_launch = intern_from_c("sp-adjust-launch").c(); + cache.sp_euler_convert = intern_from_c("sp-euler-convert").c(); + cache.sp_get_particle = intern_from_c("sp-get-particle").c(); + cache.sp_init_fields = intern_from_c("sp-init-fields!").c(); + cache.sp_queue_launch = intern_from_c("sp-queue-launch").c(); + cache.sp_rotate_system = intern_from_c("sp-rotate-system").c(); + gLinkedFunctionTable.reg("sp-launch-particles-var", execute, 512); +} + +} // namespace sp_launch_particles_var +} // namespace Mips2C diff --git a/game/mips2c/functions/test_func.cpp b/game/mips2c/functions/test_func.cpp index 1ea7492f18..0a15c880ba 100644 --- a/game/mips2c/functions/test_func.cpp +++ b/game/mips2c/functions/test_func.cpp @@ -15,4 +15,54 @@ u64 execute(void* ctxt) { return 0; } } // namespace test_func -} // namespace Mips2C \ No newline at end of file +} // namespace Mips2C + +//--------------------------MIPS2C--------------------- +#include "game/mips2c/mips2c_private.h" +#include "game/kernel/kscheme.h" +#include "game/kernel/kprint.h" +namespace Mips2C { +namespace goal_call_test { +struct Cache { + void* goal_check_function; +} cache; + +u64 execute(void* ctxt) { + auto* c = (ExecutionContext*)ctxt; + u32 call_addr = 0; + 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->load_symbol(t9, cache.goal_check_function); + call_addr = c->gprs[t9].du32[0]; // function call: + c->sll(v0, ra, 0); // sll v0, ra, 0 + c->jalr(call_addr); // jalr ra, t9 + + 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) + c->daddiu(sp, sp, 128); // daddiu sp, sp, 128 + goto end_of_function; // return + +end_of_function: + return c->gprs[v0].du64[0]; +} + +void link() { + cache.goal_check_function = intern_from_c("goal_check_function").c(); +} + +} // namespace goal_call_test +} // namespace Mips2C diff --git a/game/mips2c/mips2c_private.h b/game/mips2c/mips2c_private.h index 5d808d5a6c..3331dcc51e 100644 --- a/game/mips2c/mips2c_private.h +++ b/game/mips2c/mips2c_private.h @@ -1,15 +1,23 @@ #pragma once #include +#include #include "common/common_types.h" #include "game/mips2c/mips2c_table.h" +#include "common/util/assert.h" +#include "third-party/fmt/core.h" // This file contains utility functions for code generated by the mips2c pass. // This is only useful for extern u8* g_ee_main_mem; +extern "C" { +u64 _call_goal8_asm_linux(void* func, u64* arg_array, u64 zero, u64 pp, u64 st, void* off); +u64 _call_goal8_asm_win32(void* func, u64* arg_array, u64 zero, u64 pp, u64 st, void* off); +} + namespace Mips2C { // nicknames for GPRs @@ -198,12 +206,28 @@ struct ExecutionContext { memcpy(&vfs[vf], g_ee_main_mem + gpr_src(gpr).du32[0] + offset, 16); } + void lwc1(int dst, int offset, int gpr) { + memcpy(&fprs[dst], g_ee_main_mem + gpr_src(gpr).du32[0] + offset, 4); + } + void lw(int dst, int offset, int src) { s32 val; memcpy(&val, g_ee_main_mem + gpr_src(src).du32[0] + offset, 4); gprs[dst].ds64[0] = val; } + void lh(int dst, int offset, int src) { + s16 val; + memcpy(&val, g_ee_main_mem + gpr_src(src).du32[0] + offset, 2); + gprs[dst].ds64[0] = val; + } + + void lhu(int dst, int offset, int src) { + u16 val; + memcpy(&val, g_ee_main_mem + gpr_src(src).du32[0] + offset, 2); + gprs[dst].du64[0] = val; + } + void lwu(int dst, int offset, int src) { u32 val; memcpy(&val, g_ee_main_mem + gpr_src(src).du32[0] + offset, 4); @@ -214,11 +238,38 @@ struct ExecutionContext { memcpy(&gprs[dst].du64[0], g_ee_main_mem + gpr_addr(src) + offset, 16); } + void ld(int dst, int offset, int src) { + memcpy(&gprs[dst].du64[0], g_ee_main_mem + gpr_addr(src) + offset, 8); + } + void sw(int src, int offset, int addr) { auto s = gpr_src(src); memcpy(g_ee_main_mem + gpr_addr(addr) + offset, &s.du32[0], 4); } + void jalr(u32 addr) { + // u64 _call_goal8_asm_linux(u64 func, u64* arg_array, u64 zero, u64 pp, u64 st, u64 off); + u64 args[8] = {gprs[a0].du64[0], gprs[a1].du64[0], gprs[a2].du64[0], gprs[a3].du64[0], + gprs[t0].du64[0], gprs[t1].du64[0], gprs[t2].du64[0], gprs[t3].du64[0]}; +#ifdef __linux__ + gprs[v0].du64[0] = _call_goal8_asm_linux(g_ee_main_mem + addr, args, 0, gprs[s6].du64[0], + gprs[s7].du64[0], g_ee_main_mem); +#elif _WIN32 + gprs[v0].du64[0] = _call_goal8_asm_win32(g_ee_main_mem + addr, args, 0, gprs[s6].du64[0], + gprs[s7].du64[0], g_ee_main_mem); +#endif + } + + void sh(int src, int offset, int addr) { + auto s = gpr_src(src); + memcpy(g_ee_main_mem + gpr_addr(addr) + offset, &s.du32[0], 2); + } + + void sd(int src, int offset, int addr) { + auto s = gpr_src(src); + memcpy(g_ee_main_mem + gpr_addr(addr) + offset, &s.du32[0], 8); + } + void sq(int src, int offset, int addr) { auto s = gpr_src(src); memcpy(g_ee_main_mem + gpr_addr(addr) + offset, &s.du32[0], 16); @@ -226,9 +277,14 @@ struct ExecutionContext { void sqc2(int src, int offset, int addr) { auto s = vf_src(src); + assert(((gpr_addr(addr) + offset) & 0xf) == 0); memcpy(g_ee_main_mem + gpr_addr(addr) + offset, &s.du32[0], 16); } + void swc1(int src, int offset, int addr) { + memcpy(g_ee_main_mem + gpr_addr(addr) + offset, &fprs[src], 4); + } + void vadd_bc(DEST mask, BC bc, int dest, int src0, int src1) { auto s0 = vf_src(src0); auto s1 = vf_src(src1); @@ -240,6 +296,52 @@ struct ExecutionContext { } } + void vmini_bc(DEST mask, BC bc, int dest, int src0, int src1) { + auto s0 = vf_src(src0); + auto s1 = vf_src(src1); + + for (int i = 0; i < 4; i++) { + if ((u64)mask & (1 << i)) { + vfs[dest].f[i] = std::min(s0.f[i], s1.f[(int)bc]); + } + } + } + + void vmax_bc(DEST mask, BC bc, int dest, int src0, int src1) { + auto s0 = vf_src(src0); + auto s1 = vf_src(src1); + + for (int i = 0; i < 4; i++) { + if ((u64)mask & (1 << i)) { + vfs[dest].f[i] = std::max(s0.f[i], s1.f[(int)bc]); + } + } + } + + void pextuw(int dst, int src0, int src1) { + auto s0 = gpr_src(src0); + auto s1 = gpr_src(src1); + gprs[dst].du32[0] = s1.du32[2]; + gprs[dst].du32[1] = s0.du32[2]; + gprs[dst].du32[2] = s1.du32[3]; + gprs[dst].du32[3] = s0.du32[3]; + } + + void pcpyud(int dst, int src0, int src1) { + auto s0 = gpr_src(src0); + auto s1 = gpr_src(src1); + gprs[dst].du64[0] = s0.du64[1]; + gprs[dst].du64[1] = s1.du64[1]; + } + + void pexew(int dst, int src) { + auto s = gpr_src(src); + gprs[dst].du32[0] = s.du32[2]; + gprs[dst].du32[1] = s.du32[1]; + gprs[dst].du32[2] = s.du32[0]; + gprs[dst].du32[3] = s.du32[3]; + } + void vsub_bc(DEST mask, BC bc, int dest, int src0, int src1) { auto s0 = vf_src(src0); auto s1 = vf_src(src1); @@ -332,6 +434,10 @@ struct ExecutionContext { Q = vf_src(src0).f[(int)bc0] / vf_src(src1).f[(int)bc1]; } + void vsqrt(int src, BC bc) { Q = std::sqrt(std::abs(vf_src(src).f[(int)bc])); } + + void sqrts(int src, int dst) { fprs[dst] = std::sqrt(std::abs(fprs[src])); } + void vmulq(DEST mask, int dst, int src) { auto s0 = vf_src(src); for (int i = 0; i < 4; i++) { @@ -341,6 +447,36 @@ struct ExecutionContext { } } + void vrget(DEST mask, int dst) { + float r = gRng.R; + for (int i = 0; i < 4; i++) { + if ((u64)mask & (1 << i)) { + vfs[dst].f[i] = r; + } + } + } + + void vrxor(int src, BC bc) { gRng.rxor(vf_src(src).du32[(int)bc]); } + + void vaddq(DEST mask, int dst, int src) { + auto s = vf_src(src); + for (int i = 0; i < 4; i++) { + if ((u64)mask & (1 << i)) { + vfs[dst].f[i] = s.f[i] + Q; + } + } + } + + void vrnext(DEST mask, int dst) { + gRng.advance(); + float r = gRng.R; + for (int i = 0; i < 4; i++) { + if ((u64)mask & (1 << i)) { + vfs[dst].f[i] = r; + } + } + } + void mov64(int dest, int src) { gprs[dest].ds64[0] = gpr_src(src).du64[0]; } void vmove(DEST mask, int dest, int src) { @@ -358,7 +494,11 @@ struct ExecutionContext { gprs[dst].ds64[0] = value_signed; } + void dsra(int dst, int src, int sa) { gprs[dst].ds64[0] = gpr_src(src).ds64[0] >> sa; } + void dsra32(int dst, int src, int sa) { gprs[dst].ds64[0] = gpr_src(src).ds64[0] >> (32 + sa); } void sra(int dst, int src, int sa) { gprs[dst].ds64[0] = gpr_src(src).ds32[0] >> sa; } + void dsll(int dst, int src0, int sa) { gprs[dst].du64[0] = gpr_src(src0).du64[0] << sa; } + void dsll32(int dst, int src0, int sa) { gprs[dst].du64[0] = gpr_src(src0).du64[0] << (32 + sa); } void daddu(int dst, int src0, int src1) { gprs[dst].du64[0] = sgpr64(src0) + sgpr64(src1); } void daddiu(int dst, int src0, s64 imm) { gprs[dst].du64[0] = sgpr64(src0) + imm; } @@ -367,11 +507,19 @@ struct ExecutionContext { gprs[dst].ds64[0] = temp; } + void lui(int dst, u32 src) { + s32 val = (src << 16); + gprs[dst].ds64[0] = val; + } + void addu(int dst, int src0, int src1) { s32 temp = sgpr64(src0) + sgpr64(src1); gprs[dst].ds64[0] = temp; } + void dsubu(int dst, int src0, int src1) { gprs[dst].du64[0] = sgpr64(src0) - sgpr64(src1); } + void xor_(int dst, int src0, int src1) { gprs[dst].du64[0] = sgpr64(src0) ^ sgpr64(src1); } + void movz(int dst, int src0, int src1) { if (sgpr64(src1) == 0) { gprs[dst].du64[0] = sgpr64(src0); @@ -384,6 +532,12 @@ struct ExecutionContext { } } + void mult3(int dst, int src0, int src1) { + u32 result = gpr_src(src0).du32[0] * gpr_src(src1).du32[0]; + s32 sresult = result; + gprs[dst].ds64[0] = sresult; + } + void andi(int dest, int src, u64 imm) { gprs[dest].du64[0] = gpr_src(src).du64[0] & imm; } void ori(int dest, int src, u64 imm) { gprs[dest].du64[0] = gpr_src(src).du64[0] | imm; } void and_(int dest, int src0, int src1) { @@ -431,6 +585,22 @@ struct ExecutionContext { gprs[dst].du64[1] = s0.du64[1] | s1.du64[1]; } + void pmaxw(int dst, int src0, int src1) { + auto s0 = gpr_src(src0); + auto s1 = gpr_src(src1); + for (int i = 0; i < 4; i++) { + gprs[dst].ds32[i] = std::max(s0.ds32[i], s1.ds32[i]); + } + } + + void pminw(int dst, int src0, int src1) { + auto s0 = gpr_src(src0); + auto s1 = gpr_src(src1); + for (int i = 0; i < 4; i++) { + gprs[dst].ds32[i] = std::min(s0.ds32[i], s1.ds32[i]); + } + } + void mov128_vf_gpr(int dst, int src) { vfs[dst] = gpr_src(src); } void mov128_gpr_vf(int dst, int src) { gprs[dst] = vf_src(src); } void mov128_gpr_gpr(int dst, int src) { gprs[dst] = gpr_src(src); } @@ -453,11 +623,42 @@ struct ExecutionContext { } } + void vftoi0(DEST mask, int dst, int src) { + auto s = vf_src(src); + for (int i = 0; i < 4; i++) { + if ((u64)mask & (1 << i)) { + vfs[dst].ds32[i] = s.f[i]; + } + } + } + void mfc1(int dst, int src) { s32 val; memcpy(&val, &fprs[src], 4); gprs[dst].ds64[0] = val; } + + void mtc1(int dst, int src) { + u32 val = gpr_src(src).du32[0]; + memcpy(&fprs[dst], &val, 4); + } + + void muls(int dst, int src0, int src1) { fprs[dst] = fprs[src0] * fprs[src1]; } + void adds(int dst, int src0, int src1) { fprs[dst] = fprs[src0] + fprs[src1]; } + void subs(int dst, int src0, int src1) { fprs[dst] = fprs[src0] - fprs[src1]; } + + void cvtws(int dst, int src) { + // float to int + s32 value = fprs[src]; + memcpy(&fprs[dst], &value, 4); + } + + void cvtsw(int dst, int src) { + // int to float + s32 value; + memcpy(&value, &fprs[src], 4); + fprs[dst] = value; + } }; } // namespace Mips2C \ No newline at end of file diff --git a/game/mips2c/mips2c_table.cpp b/game/mips2c/mips2c_table.cpp index b31fa283f6..eba75deb71 100644 --- a/game/mips2c/mips2c_table.cpp +++ b/game/mips2c/mips2c_table.cpp @@ -16,9 +16,33 @@ namespace draw_string { extern void link(); } +namespace sp_init_fields { +extern void link(); +} + +namespace particle_adgif { +extern void link(); +} + +namespace sp_launch_particles_var { +extern void link(); +} + +namespace sp_process_block_3d { +extern void link(); +} + +namespace sp_process_block_2d { +extern void link(); +} + LinkedFunctionTable gLinkedFunctionTable; +Rng gRng; std::unordered_map> gMips2CLinkCallbacks = { - {"font", {draw_string::link}}}; + {"font", {draw_string::link}}, + {"sparticle-launcher", + {sp_init_fields::link, particle_adgif::link, sp_launch_particles_var::link}}, + {"sparticle", {sp_process_block_3d::link, sp_process_block_2d::link}}}; void LinkedFunctionTable::reg(const std::string& name, u64 (*exec)(void*), u32 stack_size) { const auto& it = m_executes.insert({name, {exec, Ptr()}}); diff --git a/game/mips2c/mips2c_table.h b/game/mips2c/mips2c_table.h index b8fca0169d..d4d9d7593f 100644 --- a/game/mips2c/mips2c_table.h +++ b/game/mips2c/mips2c_table.h @@ -3,6 +3,7 @@ #include #include #include +#include #include "game/kernel/Ptr.h" #include "common/common_types.h" @@ -26,4 +27,44 @@ class LinkedFunctionTable { extern std::unordered_map> gMips2CLinkCallbacks; extern LinkedFunctionTable gLinkedFunctionTable; +struct Rng { + Rng() { init(); } + float R = 0.; + + u32 R_u32() { + u32 result; + memcpy(&result, &R, 4); + return result; + } + + float from23_bits(float in) { + u32 val; + memcpy(&val, &in, 4); + val = 0x3F800000 | (0x0007FFFFF & val); + memcpy(&in, &val, 4); + return in; + } + + float from23_bits(u32 val) { + val = 0x3F800000 | (0x0007FFFFF & val); + float out; + memcpy(&out, &val, 4); + return out; + } + + void init(float rinit = 1.418091058731079f) { R = from23_bits(rinit); } + + void advance() { + u32 r32 = R_u32(); + u32 x = 1 & (r32 >> 4); + u32 y = 1 & (r32 >> 22); + r32 <<= 1; + r32 = r32 ^ x ^ y; + R = from23_bits(r32); + } + + void rxor(u32 in) { R = from23_bits(in ^ R_u32()); } +}; + +extern Rng gRng; } // namespace Mips2C \ No newline at end of file diff --git a/game/runtime.cpp b/game/runtime.cpp index 93c34153cc..e6213656f2 100644 --- a/game/runtime.cpp +++ b/game/runtime.cpp @@ -253,12 +253,12 @@ void dmac_runner(SystemThreadInterface& iface) { iface.initialization_complete(); while (!iface.get_want_exit() && !VM::vm_want_exit()) { - for (int i = 0; i < 10; ++i) { - if (VM::dmac_ch[i]->chcr.str) { - // lg::info("DMA detected on channel {}, clearing", i); - VM::dmac_ch[i]->chcr.str = 0; - } - } + // for (int i = 0; i < 10; ++i) { + // if (VM::dmac_ch[i]->chcr.str) { + // // lg::info("DMA detected on channel {}, clearing", i); + // VM::dmac_ch[i]->chcr.str = 0; + // } + // } // avoid running the DMAC on full blast (this does not sync to its clockrate) std::this_thread::sleep_for(std::chrono::microseconds(50)); } @@ -318,7 +318,7 @@ u32 exec_runtime(int argc, char** argv) { // TODO also sync this up with how the game actually renders things (this is just a placeholder) if (enable_display) { Gfx::Init(); - Gfx::Loop([&tm]() { return !tm.all_threads_exiting(); }); + Gfx::Loop([]() { return !MasterExit; }); Gfx::Exit(); } diff --git a/game/sce/libpad.cpp b/game/sce/libpad.cpp index 0979d9c8f2..ed6707f830 100644 --- a/game/sce/libpad.cpp +++ b/game/sce/libpad.cpp @@ -63,7 +63,7 @@ static const Pad::Button libpad_PadPressureButtons[] = { // returns buffer size (32) or 0 on error. int scePadRead(int port, int /*slot*/, u8* rdata) { auto cpad = (CPadInfo*)(rdata); - Gfx::poll_events(); + // Gfx::poll_events(); cpad->valid = 0; // success diff --git a/game/system/newpad.cpp b/game/system/newpad.cpp index 312cd1eabd..5b0b559e96 100644 --- a/game/system/newpad.cpp +++ b/game/system/newpad.cpp @@ -21,6 +21,8 @@ namespace Pad { std::unordered_map g_key_status; std::unordered_map g_buffered_key_status; +bool g_gamepad_buttons[(int)Button::Max] = {0}; + // input mode for controller mapping InputModeStatus input_mode = InputModeStatus::Disabled; u64 input_mode_pad = 0; @@ -101,6 +103,10 @@ int IsPressed(MappingInfo& mapping, Button button, int pad = 0) { if (CheckPadIdx(pad) == -1) { return 0; } + + if (g_gamepad_buttons[(int)button]) { + return 1; + } auto key = mapping.pad_mapping[pad][(int)button]; if (key == -1) return 0; @@ -175,4 +181,62 @@ u64 input_mode_get_index() { return input_mode_index; } +/* +******************************** +* Gamepad Support +******************************** +*/ + +struct GamepadState { + int gamepad_idx = -1; +} g_gamepads; + +void initialize() { + for (int i = GLFW_JOYSTICK_1; i <= GLFW_JOYSTICK_LAST; i++) { + if (glfwJoystickPresent(i) && glfwJoystickIsGamepad(i)) { + g_gamepads.gamepad_idx = i; + lg::info("Using joystick {}: {}, {}", i, glfwGetJoystickName(i), glfwGetGamepadName(i)); + break; + } + } + if (g_gamepads.gamepad_idx == -1) { + lg::info("No joysticks found."); + } +} + +void update_gamepads() { + if (g_gamepads.gamepad_idx == -1) { + return; + } + + if (!glfwJoystickPresent(g_gamepads.gamepad_idx)) { + g_gamepads.gamepad_idx = -1; + lg::info("Gamepad has been disconnected"); + return; + } + + GLFWgamepadstate state; + glfwGetGamepadState(g_gamepads.gamepad_idx, &state); + + constexpr std::pair gamepad_map[] = { + {Button::Select, GLFW_GAMEPAD_BUTTON_BACK}, + {Button::L3, GLFW_GAMEPAD_BUTTON_LEFT_THUMB}, + {Button::R3, GLFW_GAMEPAD_BUTTON_RIGHT_THUMB}, + {Button::Start, GLFW_GAMEPAD_BUTTON_START}, + {Button::Up, GLFW_GAMEPAD_BUTTON_DPAD_UP}, + {Button::Right, GLFW_GAMEPAD_BUTTON_DPAD_RIGHT}, + {Button::Down, GLFW_GAMEPAD_BUTTON_DPAD_DOWN}, + {Button::Left, GLFW_GAMEPAD_BUTTON_DPAD_LEFT}, + {Button::L1, GLFW_GAMEPAD_BUTTON_LEFT_BUMPER}, + {Button::R1, GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER}, + {Button::Triangle, GLFW_GAMEPAD_BUTTON_TRIANGLE}, + {Button::Circle, GLFW_GAMEPAD_BUTTON_CIRCLE}, + {Button::X, GLFW_GAMEPAD_BUTTON_CROSS}, + {Button::Square, GLFW_GAMEPAD_BUTTON_SQUARE}}; + + for (const auto& [button, idx] : gamepad_map) { + g_gamepad_buttons[(int)button] = state.buttons[idx]; + } +} + }; // namespace Pad diff --git a/game/system/newpad.h b/game/system/newpad.h index 489e9077c9..aee5d81986 100644 --- a/game/system/newpad.h +++ b/game/system/newpad.h @@ -82,4 +82,7 @@ u64 input_mode_get(); u64 input_mode_get_key(); u64 input_mode_get_index(); +void initialize(); +void update_gamepads(); + } // namespace Pad diff --git a/goal_src/engine/ambient/weather-part.gc b/goal_src/engine/ambient/weather-part.gc index ae3e9e67a5..399c32f77e 100644 --- a/goal_src/engine/ambient/weather-part.gc +++ b/goal_src/engine/ambient/weather-part.gc @@ -12,76 +12,76 @@ :length 66 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-rain-screend-drop-real" :launcher (new 'static 'inline-array sparticle-group-item 66 - (new 'static 'sparticle-group-item :launcher #x12 :binding #x13) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x15 :binding #x16) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) + (sp-item 18 :binding 19) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 21 :binding 22) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 65536.0) ) @@ -96,98 +96,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3dcccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value -963641344 - :random-range #x47100000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -968884224 - :random-range #x46c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46200000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x442aaaab - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1085485875 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 10 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 0.1) + (sp-rnd-flt spt-x (meters -4.5) (meters 9.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-flt spt-scale-x (meters 2.5)) + (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-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 12.0) + (sp-flt spt-scalevel-x (meters 0.16666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -198,90 +123,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200900) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x43088889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1085485875 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1070677186 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x10e - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 15 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 24) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.5)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 20.0) + (sp-flt spt-scalevel-x (meters 0.033333335)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 24) + (sp-end) ) ) ) @@ -292,25 +150,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x41888889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1115125623 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-scalevel-x (meters 0.004166667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.06666667) + (sp-end) ) ) ) @@ -321,76 +164,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x454ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x454ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-value #x40c22e45 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value #x42888889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-value #x40422e45 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1070677186 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x10e - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x100 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 30 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 25) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-num 1.0) + (sp-int spt-rot-x 12) + (sp-flt spt-r 4096.0) + (sp-flt spt-g 3276.8) + (sp-flt spt-b 3276.8) + (sp-flt spt-fade-r 6.068148) + (sp-flt spt-fade-g 68.26667) + (sp-flt spt-fade-b 3.034074) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 25) + (sp-end) ) ) ) @@ -401,13 +188,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1063004405 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-g -5.1200004) + (sp-end) ) ) ) @@ -418,98 +200,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3dcccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value -963641344 - :random-range #x47100000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -968884224 - :random-range #x46c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x44888889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1085485875 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 10 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 0.1) + (sp-rnd-flt spt-x (meters -4.5) (meters 9.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-flt spt-scale-x (meters 4.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-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 12.0) + (sp-flt spt-scalevel-x (meters 0.26666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -520,90 +227,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200900) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46266666 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x43888889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1085485875 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1070677186 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x10e - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 15 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 26) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 20.0) + (sp-flt spt-scalevel-x (meters 0.06666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 26) + (sp-end) ) ) ) @@ -614,25 +254,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x42088889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1115125623 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-scalevel-x (meters 0.008333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.06666667) + (sp-end) ) ) ) @@ -643,76 +268,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-value 24 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x45cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x45cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-value #x41422e45 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value #x43088889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-value #x40c22e45 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1070677186 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x10e - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x100 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 30 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 27) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-num 1.0) + (sp-int spt-rot-x 24) + (sp-flt spt-r 12288.0) + (sp-flt spt-g 6553.6) + (sp-flt spt-b 6553.6) + (sp-flt spt-fade-r 12.136296) + (sp-flt spt-fade-g 136.53334) + (sp-flt spt-fade-b 6.068148) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 27) + (sp-end) ) ) ) @@ -723,13 +292,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1054615797 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-g -10.240001) + (sp-end) ) ) ) @@ -741,13 +305,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x2 + :flags (sp-group-flag always-draw) :name "group-stars" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x1c) - (new 'static 'sparticle-group-item :launcher #x1d) - (new 'static 'sparticle-group-item :launcher #x1e) + (sp-item 28) + (sp-item 29) + (sp-item 30) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -759,98 +323,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x48200000 - :random-range #x48200000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3eda740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 60 - :random-range #xef - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 31) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value -964876334 - :random-range #x46fd27d2 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x48800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x4b9c4000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 40.0) (meters 40.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 256.0) + (sp-flt spt-b 256.0) + (sp-flt spt-a 0.0) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 60 239 1) + (sp-launcher-by-id spt-next-launcher 31) + (sp-rnd-flt spt-conerot-x (degrees -89.0) (degrees 178.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 1440.0) 1.0) + (sp-flt spt-conerot-radius (meters 5000.0)) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -861,18 +351,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x1c9c254 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 32) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 29999700) + (sp-launcher-by-id spt-next-launcher 32) + (sp-end) ) ) ) @@ -883,13 +365,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1092979698 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.42666668) + (sp-end) ) ) ) @@ -900,98 +377,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x48200000 - :random-range #x48200000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3eda740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 60 - :random-range #xef - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 31) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x45aaaaab - :random-range #x4627d27d - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x49000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x4b9c4000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 40.0) (meters 40.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 256.0) + (sp-flt spt-b 256.0) + (sp-flt spt-a 0.0) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 60 239 1) + (sp-launcher-by-id spt-next-launcher 31) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 59.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 2880.0) 1.0) + (sp-flt spt-conerot-radius (meters 5000.0)) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1002,98 +405,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x48200000 - :random-range #x48200000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3eda740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 60 - :random-range #xef - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 31) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x462aaaab - :random-range #x45a4fa50 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x49800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x4b9c4000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 40.0) (meters 40.0) 1.0) + (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-flt spt-a 0.0) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 60 239 1) + (sp-launcher-by-id spt-next-launcher 31) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 29.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 5760.0) 1.0) + (sp-flt spt-conerot-radius (meters 5000.0)) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1104,114 +433,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value #x47200000 - :random-range #x47200000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x46000000 - :random-range #x47600000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x444ccccd - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #xe :initial-value 4 :random-mult 1) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value -1037838582 - :random-range -1051036658 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1017482226 - :random-range #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3f5a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x5dc - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x5004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 75 - :random-range 74 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 35) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters 10.0) (meters 10.0) 1.0) + (sp-rnd-flt spt-y (meters 2.0) (meters 14.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (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-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters -0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a 0.85333335) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int-plain-rnd spt-next-time 75 74 1) + (sp-launcher-by-id spt-next-launcher 35) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1222,111 +464,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x47a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x444ccccd - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #xe :initial-value 4 :random-mult 1) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value -1037838582 - :random-range -1051036658 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1017482226 - :random-range #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3f5a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x5dc - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x5004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 75 - :random-range 74 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 35) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 0.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 20.0) 1.0) + (sp-flt spt-y (meters 16.0)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (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-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters -0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a 0.85333335) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int-plain-rnd spt-next-time 75 74 1) + (sp-launcher-by-id spt-next-launcher 35) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1337,18 +495,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x4b0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value 36) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 1200) + (sp-launcher-by-id spt-next-launcher 36) + (sp-end) ) ) ) @@ -1359,13 +509,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1084591090 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.85333335) + (sp-end) ) ) ) @@ -1385,33 +530,27 @@ ) ) ) - (set! - (-> *part-id-table* 34 init-specs 1 initial-value) - (the-as int (- 1.0 f0-0)) - ) - (set! - (-> *part-id-table* 33 init-specs 1 initial-value) - (the-as int (* 4.0 f0-0)) - ) + (set! (-> *part-id-table* 34 init-specs 1 initial-valuef) (- 1.0 f0-0)) + (set! (-> *part-id-table* 33 init-specs 1 initial-valuef) (* 4.0 f0-0)) ) (set! - (-> *part-id-table* 33 init-specs 19 initial-value) - (the-as int (+ 32768.0 (vector-y-angle (-> arg0 control transv)))) + (-> *part-id-table* 33 init-specs 19 initial-valuef) + (+ 32768.0 (vector-y-angle (-> arg0 control transv))) ) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 34) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 33) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -1425,100 +564,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200400) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3fc00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x47a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x42f5c28f - :random-range #x42f5c28f - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x45000000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42480000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42a00000 - :random-range #x425c0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42480000 - :random-range #x42480000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value -1014462327 - :random-range -1006073719 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'check-drop-level-rain - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 1.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 20.0) 1.0) + (sp-flt spt-y (meters 16.0)) + (sp-rnd-flt spt-scale-x (meters 0.03) (meters 0.03) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.5) 1.0) + (sp-flt spt-r 50.0) + (sp-rnd-flt spt-g 80.0 55.0 1.0) + (sp-rnd-flt spt-b 50.0 50.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.06666667) (meters -0.13333334) 1.0) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit2 bit14) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-drop-level-rain) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1529,90 +591,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200400) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40900000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x47a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x42f5c28f - :random-range #x42f5c28f - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x45000000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42480000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42a00000 - :random-range #x425c0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42480000 - :random-range #x42480000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value -1014462327 - :random-range -1022850935 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 4.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 20.0) 1.0) + (sp-flt spt-y (meters 16.0)) + (sp-rnd-flt spt-scale-x (meters 0.03) (meters 0.03) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.5) 1.0) + (sp-flt spt-r 50.0) + (sp-rnd-flt spt-g 80.0 55.0 1.0) + (sp-rnd-flt spt-b 50.0 50.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.06666667) (meters -0.033333335) 1.0) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1623,97 +616,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200900) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x2 - :random-range 1 - :random-mult #x40000000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x434ccccd - :random-range #x4399999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42dc0000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x41da740e - :random-range #x425a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1084591090 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1070677186 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x96 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x458e38e4 - :random-range #x45e38e39 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-rnd-int spt-num 0 1 2.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.075) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 110.0 32.0 1.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-rnd-flt spt-conerot-x (degrees 25.000002) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1724,102 +642,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201e00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x42a3d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45800000 - :random-range #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xf - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42dc0000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42c00000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x41da740e - :random-range #x41da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1093874483 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x78 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.02)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 110.0 32.0 1.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 16.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-flt spt-fade-a -0.4) + (sp-int spt-timer 120) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1834,16 +673,16 @@ *sp-particle-system-2d* (-> *part-id-table* 39) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) (sp-launch-particles-var *sp-particle-system-3d* (-> *part-id-table* 40) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -1892,53 +731,29 @@ ) ) ) - (set! - (-> *part-id-table* 37 init-specs 4 initial-value) - (the-as int f28-0) - ) - (set! - (-> *part-id-table* 37 init-specs 4 random-range) - (the-as int f28-0) - ) - (set! - (-> *part-id-table* 38 init-specs 4 initial-value) - (the-as int f28-0) - ) - (set! - (-> *part-id-table* 38 init-specs 4 random-range) - (the-as int f28-0) - ) - (set! - (-> *part-id-table* 37 init-specs 5 initial-value) - (the-as int f30-0) - ) - (set! - (-> *part-id-table* 37 init-specs 5 random-range) - (the-as int f30-0) - ) - (set! - (-> *part-id-table* 38 init-specs 5 initial-value) - (the-as int f30-0) - ) - (set! - (-> *part-id-table* 38 init-specs 5 random-range) - (the-as int f30-0) - ) + (set! (-> *part-id-table* 37 init-specs 4 initial-valuef) f28-0) + (set! (-> *part-id-table* 37 init-specs 4 random-rangef) f28-0) + (set! (-> *part-id-table* 38 init-specs 4 initial-valuef) f28-0) + (set! (-> *part-id-table* 38 init-specs 4 random-rangef) f28-0) + (set! (-> *part-id-table* 37 init-specs 5 initial-valuef) f30-0) + (set! (-> *part-id-table* 37 init-specs 5 random-rangef) f30-0) + (set! (-> *part-id-table* 38 init-specs 5 initial-valuef) f30-0) + (set! (-> *part-id-table* 38 init-specs 5 random-rangef) f30-0) ) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 37) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 38) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -1957,30 +772,30 @@ (the-as int (-> self water-drip-time)) ) (set! - (-> *part-id-table* 21 init-specs 1 initial-value) - (the-as int (-> self water-drip-mult)) + (-> *part-id-table* 21 init-specs 1 initial-valuef) + (-> self water-drip-mult) ) (set! - (-> *part-id-table* 18 init-specs 1 initial-value) - (the-as int (* 0.9 (-> self water-drip-mult))) + (-> *part-id-table* 18 init-specs 1 initial-valuef) + (* 0.9 (-> self water-drip-mult)) ) (set! - (-> *part-id-table* 22 init-specs 11 initial-value) - (the-as int (* -2.7306666 (-> self water-drip-speed))) + (-> *part-id-table* 22 init-specs 11 initial-valuef) + (* -2.7306666 (-> self water-drip-speed)) ) (set! - (-> *part-id-table* 23 init-specs 8 initial-value) - (the-as int (* -2.7306666 (-> self water-drip-speed))) + (-> *part-id-table* 23 init-specs 8 initial-valuef) + (* -2.7306666 (-> self water-drip-speed)) ) (set! - (-> *part-id-table* 19 init-specs 11 initial-value) - (the-as int (* -2.7306666 (-> self water-drip-speed))) + (-> *part-id-table* 19 init-specs 11 initial-valuef) + (* -2.7306666 (-> self water-drip-speed)) ) (set! - (-> *part-id-table* 20 init-specs 8 initial-value) - (the-as int (* -2.7306666 (-> self water-drip-speed))) + (-> *part-id-table* 20 init-specs 8 initial-valuef) + (* -2.7306666 (-> self water-drip-speed)) ) - (dummy-11 (-> self water-drip) *zero-vector*) + (spawn (-> self water-drip) *zero-vector*) ) 0 (none) @@ -2051,13 +866,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x2 + :flags (sp-group-flag always-draw) :name "group-sun" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x79e) - (new 'static 'sparticle-group-item :launcher #x79f) - (new 'static 'sparticle-group-item :launcher #x7a0) + (sp-item 1950) + (sp-item 1951) + (sp-item 1952) ) :bounds (new 'static 'sphere :w 286720.0) ) @@ -2069,70 +884,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200400) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4a960000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x500c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1200.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 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit12 bit14) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2143,82 +907,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x203500) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4b2f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x4b098000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1055808844 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2800.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 2200.0)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 32.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees -0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 1.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2229,82 +932,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x203500) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4b098000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x4b2f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value #x4111a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-value #x40000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2200.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 2800.0)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 32.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees 0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 2.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2316,13 +958,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x2 + :flags (sp-group-flag always-draw) :name "group-green-sun" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x7b6) - (new 'static 'sparticle-group-item :launcher #x7b7) - (new 'static 'sparticle-group-item :launcher #x7b8) + (sp-item 1974) + (sp-item 1975) + (sp-item 1976) ) :bounds (new 'static 'sphere :w 286720.0) ) @@ -2334,68 +976,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200400) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4a160000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-value #x40800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 600.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 0.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 4.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2406,80 +999,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x203500) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4aaf0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x4a898000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1055808844 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-value #x40a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1400.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 1100.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees -0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 5.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2490,80 +1024,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x203500) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4a898000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x4aaf0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value #x4111a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-value #x40c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1100.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 1400.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees 0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 6.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) + + + + diff --git a/goal_src/engine/camera/math-camera.gc b/goal_src/engine/camera/math-camera.gc index 3c53a02e98..71c74f5cde 100644 --- a/goal_src/engine/camera/math-camera.gc +++ b/goal_src/engine/camera/math-camera.gc @@ -190,6 +190,15 @@ (set! (-> math-cam guard z) 1.0) (set! (-> math-cam guard w) 1.0) (set! (-> math-cam isometric data 14) (- 16777215.0 hvdf-z)) + ;; PC HACK! + ;; for whatever reason, the font render ends up computing a depth #x1000000 instead of + ;; #xffffffff, which overflows the 24-bit z buffer. + ;; cheating this by 1 bit seems to fix it. + (#when PC_PORT + ;; #x4b002032 -> #x4b002031 + (-! (-> math-cam isometric data 14) 1.) + ) + ) (set! (-> math-cam isometric data 15) fog-at-near-plane) @@ -277,6 +286,8 @@ math-cam ) + + (defmethod new math-camera ((allocation symbol) (type-to-make type)) (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> gp-0 d) 1024.0) diff --git a/goal_src/engine/dma/dma-h.gc b/goal_src/engine/dma/dma-h.gc index e4efd3599a..146b83ff24 100644 --- a/goal_src/engine/dma/dma-h.gc +++ b/goal_src/engine/dma/dma-h.gc @@ -266,7 +266,7 @@ ;; merc1 61 ;; generic1 62 (depth-cue 64) - (bucket-65 65) + (pre-sprite-textures 65) ;; always common (sprite 66) ;; debug spheres? 67 (debug-draw0 67) @@ -341,6 +341,7 @@ (stmod 5) ;; set mode register (mskpath3 6) ;; set path 3 mask (mark 7) ;; set mark register + (pc-port 8) ;; special tag for PC Port data. (flushe 16) ;; wait for end of microprogram (flush 17) ;; wait for end of microprogram and transfer (path1/path2) (flusha 19) ;; wait for end of microprogram and transfer (path1/path2/path3) diff --git a/goal_src/engine/draw/drawable-h.gc b/goal_src/engine/draw/drawable-h.gc index fa79b8c50e..10173172d0 100644 --- a/goal_src/engine/draw/drawable-h.gc +++ b/goal_src/engine/draw/drawable-h.gc @@ -40,3 +40,4 @@ (declare-type process-drawable process) (define-extern process-drawable-art-error (state string process-drawable)) (define-extern foreground-engine-execute (function engine display-frame int int none)) +(define-extern sphere-in-view-frustum? (function sphere symbol)) diff --git a/goal_src/engine/draw/drawable.gc b/goal_src/engine/draw/drawable.gc index 4fe5c5e268..8a14992297 100644 --- a/goal_src/engine/draw/drawable.gc +++ b/goal_src/engine/draw/drawable.gc @@ -5,6 +5,38 @@ ;; name in dgo: drawable ;; dgos: GAME, ENGINE +(defun sphere-in-view-frustum? ((arg0 sphere)) + (local-vars (r0-0 uint128) (v1-1 uint128) (v1-2 uint128) (v1-3 uint128)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (set! r0-0 (the uint128 0)) + (let ((v1-0 *math-camera*)) + (.lvf vf6 (&-> arg0 quad)) + (.lvf vf1 (&-> v1-0 plane 0 quad)) + (.lvf vf2 (&-> v1-0 plane 1 quad)) + (.lvf vf3 (&-> v1-0 plane 2 quad)) + (.lvf vf4 (&-> v1-0 plane 3 quad)) + ) + (.mul.x.vf acc vf1 vf6) + (.add.mul.y.vf acc vf2 vf6 acc) + (.add.mul.z.vf acc vf3 vf6 acc) + (.sub.mul.w.vf vf5 vf4 vf0 acc) + (.add.w.vf vf5 vf5 vf6) + (.mov v1-1 vf5) + (.pcgtw v1-2 r0-0 v1-1) + (.ppach v1-3 r0-0 v1-2) + (zero? (the-as int v1-3)) + ) + ) + (defun real-main-draw-hook () (when *slow-frame-rate* (dotimes (v1-2 #xc3500) @@ -17,10 +49,111 @@ ) ) "Function to be executed to set up for engine dma" + (set! *vu1-enable-user* *vu1-enable-user-menu*) + (set! *texture-enable-user* *texture-enable-user-menu*) + ;; todo debug memory + ;; todo shrub matrix + ;; todo generic init + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; texture uploads + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ;; tfrag + + (when (logtest? *texture-enable-user* 1) + (dotimes (gp-1 (-> *level* length)) + (let ((a1-2 (-> *level* level gp-1))) + (if (= (-> a1-2 status) 'active) + (add-tex-to-dma! *texture-pool* a1-2 0) + ) + ) + ) + ) + + ;; pris + + (when (logtest? *texture-enable-user* 2) + (dotimes (gp-2 (-> *level* length)) + (let ((a1-3 (-> *level* level gp-2))) + (if (= (-> a1-3 status) 'active) + (add-tex-to-dma! *texture-pool* a1-3 1) + ) + ) + ) + ) + + ;; shrub + + (when (logtest? *texture-enable-user* 4) + (dotimes (gp-3 (-> *level* length)) + (let ((a1-4 (-> *level* level gp-3))) + (if (= (-> a1-4 status) 'active) + (add-tex-to-dma! *texture-pool* a1-4 2) + ) + ) + ) + ) + + ;; alpha and common. + (when (logtest? *texture-enable-user* 8) + (let ((uploaded-common #f)) + (dotimes (gp-4 (-> *level* length)) + (let ((a1-5 (-> *level* level gp-4))) + (when (= (-> a1-5 status) 'active) + (add-tex-to-dma! *texture-pool* a1-5 3) + (when (not uploaded-common) + (upload-one-common! *texture-pool* (-> *level* level0)) + (set! uploaded-common #t) + ) + ) + ) + ) + (when (not uploaded-common) + (upload-one-common! *texture-pool* (-> *level* level0)) + #t + ) + ) + ) + + ;; water. + (when (logtest? *texture-enable-user* 16) + (dotimes (gp-5 (-> *level* length)) + (let ((a1-8 (-> *level* level gp-5))) + (if (= (-> a1-8 status) 'active) + (add-tex-to-dma! *texture-pool* a1-8 4) + ) + ) + ) + ) + + ;; texture common + ;; sky + ;; tod update + ;; closest + ;; ocean + ;; merc + ;; init bg + ;; exec bg + ;; finish bg + ;; stats + ;; fg engine + ;; bones + ;; gmerc + ;; shadow + ;; eyes + (when (logtest? #x10000 *vu1-enable-user*) + (swap-fake-shadow-buffers) + (sprite-draw *display*) + ) ;; lots more in this function. (when *debug-segment* (debug-draw-actors *level* *display-actor-marks*) + ;; collide-shape-debug ) + ;; boundaries + ;; method15 level + ;; collide stats ) (defun main-draw-hook () @@ -542,5 +675,4 @@ (none) ) -(define-extern sphere-in-view-frustum? (function vector symbol)) diff --git a/goal_src/engine/draw/process-drawable.gc b/goal_src/engine/draw/process-drawable.gc index 61e759b7a2..9dc225c29a 100644 --- a/goal_src/engine/draw/process-drawable.gc +++ b/goal_src/engine/draw/process-drawable.gc @@ -26,3 +26,22 @@ (define-extern anim-loop (function symbol)) ;; TODO - for bouncer (define-extern ja-min? (function int symbol)) + + +(defun vector<-cspace! ((arg0 vector) (arg1 cspace)) + (rlet ((Q :class vf) + (vf0 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (.lvf vf2 (&-> (-> arg1 bone) transform vector 3 quad)) + (.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11) + (.wait.vf) + (.mul.vf vf2 vf2 Q :mask #b111) + (.nop.vf) + (.nop.vf) + (.mov.vf vf2 vf0 :mask #b1000) + (.svf (&-> arg0 quad) vf2) + arg0 + ) + ) \ No newline at end of file diff --git a/goal_src/engine/game/game-save.gc b/goal_src/engine/game/game-save.gc index 1f8bed040c..3dc22513d7 100644 --- a/goal_src/engine/game/game-save.gc +++ b/goal_src/engine/game/game-save.gc @@ -1613,82 +1613,36 @@ ;; used for the flashing auto-save icon, I think. (set! (-> *part-group-id-table* 656) - (new 'static 'sparticle-launch-group - :length 1 - :duration #xbb8 - :linger-duration #x5dc - :flags #x4 - :name "group-part-save-icon" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #xa66) - ) - :bounds (new 'static 'sphere :w 409600.0) - ) - ) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag screen-space) + :name "group-part-save-icon" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2662)) + :bounds (new 'static 'sphere :w 409600.0) + ) + ) -;; todo floats/ints for these values. (set! (-> *part-id-table* 2662) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x1cf06b00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 5 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x2204 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) - ) - ) - ) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 11 + (sp-tex spt-texture (new 'static 'texture-id :index #x6b :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.5)) + (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-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) + ) + ) + ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; auto-save process @@ -1731,7 +1685,7 @@ "Deactivate the auto-save process." ;; kill the particles (if (nonzero? (-> obj part)) - (deactivate (-> obj part)) + (kill-and-free-particles (-> obj part)) ) ;; and do a normal deactivate. ((method-of-type process deactivate) obj) @@ -1870,7 +1824,7 @@ (set! (-> gp-2 vector4w w) (the-as int (-> *math-camera* hvdf-off w))) ) ) - (dummy-11 (-> self part) *zero-vector*) + (spawn (-> self part) *zero-vector*) ) ) (none) diff --git a/goal_src/engine/game/main.gc b/goal_src/engine/game/main.gc index 491182e193..91a6fb32fa 100644 --- a/goal_src/engine/game/main.gc +++ b/goal_src/engine/game/main.gc @@ -684,15 +684,22 @@ ;; console buffers (set! *stdcon* (clear *stdcon0*)) - ;; here it is: + ;; <--------------------------- SWAP DISPLAY! + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (swap-display disp) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ;; teleport stuff + ;; perf stats + + (process-particles) + - ;; swap display ;; particles ;; vif0 collid ;; swap sound ;; str play - ;; level update + (level-update *level*) ;; also updates settings. ;; run mc ;; auto save check ;; suspend diff --git a/goal_src/engine/game/projectiles.gc b/goal_src/engine/game/projectiles.gc index d5c8903186..1128b14781 100644 --- a/goal_src/engine/game/projectiles.gc +++ b/goal_src/engine/game/projectiles.gc @@ -328,196 +328,40 @@ :name "group-yellow-eco-fireball" :launcher (new 'static 'inline-array sparticle-group-item 34 - (new 'static 'sparticle-group-item - :launcher #x15d - :flags #x8 - :binding #x15e - ) - (new 'static 'sparticle-group-item - :launcher #x15e - :flags #xc - :binding #x15f - ) - (new 'static 'sparticle-group-item - :launcher #x15f - :flags #xc - :binding #x160 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) + (sp-item 349 :flags (launch-asap) :binding 350) + (sp-item 350 :flags (start-dead launch-asap) :binding 351) + (sp-item 351 :flags (start-dead launch-asap) :binding 352) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) ) :bounds (new 'static 'sphere :w 12288.0) ) @@ -529,46 +373,15 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 9 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4223d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x4b0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 8 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-root-prim - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.01)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit3) + (sp-func spt-func 'sparticle-track-root-prim) + (sp-end) ) ) ) @@ -579,94 +392,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x46800000 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x2 - :initial-value -1009093618 - :random-range 1 - :random-mult #x445a740e - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -1030643020 - :random-range 1 - :random-mult #x4311a2b4 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x4b0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x8c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-y (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-z 0.0) + (sp-flt spt-scale-x (meters 5.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 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 32.0) + (sp-rnd-int-flt spt-vel-x (meters -0.10666667) 1 873.81335) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.4) 1 145.63556) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -677,93 +418,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45c00000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-value #x43e696f2 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -1034259442 - :random-range 1 - :random-mult #x42da740e - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x4b0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x8c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-flt spt-z 0.0) + (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 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 64.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-flt spt-vel-x (meters 0.11259259)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -774,88 +444,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45c00000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1029449974 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -1034259442 - :random-range 1 - :random-mult #x42da740e - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1082130432 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 54 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (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 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.02)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -866,142 +469,30 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 24 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f000000 - :random-range #x3f000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -1018377011 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4499999a - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42c80000 - :random-range #x41e00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x41a3d70a - :random-range #x423f258c - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1066512368 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1093874483 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1127835636 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1093552360 - :random-range -1080211118 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f6e147b - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 30 - :random-range #x12b - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 90 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x162 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-flt spt-y (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.011666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.4) + (sp-flt spt-fade-a -0.024242423) + (sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0) + (sp-flt spt-friction 0.93) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 354) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.3)) + (sp-end) ) ) ) @@ -1012,12 +503,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r 0.0) + (sp-end) ) ) ) @@ -1033,35 +520,26 @@ "group-part-yellow-eco-fireball-launcher" :launcher (new 'static 'inline-array sparticle-group-item 20 - (new 'static 'sparticle-group-item :launcher #x163 :flags #x8) - (new 'static 'sparticle-group-item - :launcher #x164 - :flags #x2 - :period #x276 - :length #xf - ) - (new 'static 'sparticle-group-item :launcher #x165 :flags #x8) - (new 'static 'sparticle-group-item - :launcher #x166 - :flags #x8 - :binding #x167 - ) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) + (sp-item 355 :flags (launch-asap)) + (sp-item 356 :flags (bit1) :period 630 :length 15) + (sp-item 357 :flags (launch-asap)) + (sp-item 358 :flags (launch-asap) :binding 359) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 24576.0) ) @@ -1073,84 +551,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1014462327 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -955145548 - :random-range 1 - :random-mult #x4791a2b4 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 8.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-flt spt-g 128.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.06666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -204.8) 1 74565.41) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1161,128 +576,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value -988178022 - :random-range #x4599999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -988178022 - :random-range #x4599999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value -988178022 - :random-range #x4599999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45c00000 - :random-range #x45400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42c80000 - :random-range #x41e00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x4191a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1034259442 - :random-range #x42da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1106140492 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1106140492 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1114910875 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x1c2 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-x (meters -0.6) (meters 1.2) 1.0) + (sp-rnd-flt spt-y (meters -0.6) (meters 1.2) 1.0) + (sp-rnd-flt spt-z -2457.6 4915.2 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.75) 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 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.0044444446)) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.14222223) + (sp-flt spt-fade-a -0.14222223) + (sp-flt spt-accel-y -0.06826667) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1293,118 +607,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x41400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4499999a - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42c80000 - :random-range #x41e00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-range #x435a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1054615797 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1081571191 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1103754399 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1065151889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f7d70a4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-range 59 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x46aaaaab - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-value #x46800000 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.0025000002)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-flt spt-friction 0.99) + (sp-int-plain-rnd spt-timer 60 59 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1415,117 +637,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x41c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4499999a - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42c80000 - :random-range #x41e00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-range #x435a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1054615797 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1081571191 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1103754399 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1065151889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f7d70a4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-range 59 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 24.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.0025000002)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-flt spt-friction 0.99) + (sp-int-plain-rnd spt-timer 60 59 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1536,74 +667,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x41800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x42a3d70a - :random-range #x425a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1073540497 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f7d70a4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x14a - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x468e38e4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-value #x46800000 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 16.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-accel-y -2.048) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 330) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1614,73 +690,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x42a3d70a - :random-range #x425a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1073540497 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f7d70a4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x14a - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-accel-y -2.048) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 330) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1691,126 +713,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value #x43cccccd - :random-range #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4499999a - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42c80000 - :random-range #x41e00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-value #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1066512368 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -1034259442 - :random-range 1 - :random-mult #x42da740e - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1098348407 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1102669812 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 90 - :random-range #xef - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x8c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 409.6 819.2 1.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (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-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-flt spt-vel-x (meters 0.10666667)) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 90 239 1) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -1822,34 +745,14 @@ :length 4 :duration #x258 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-part-yellow-eco-fireball-hit" :launcher (new 'static 'inline-array sparticle-group-item 4 - (new 'static 'sparticle-group-item - :launcher #x80b - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x80c - :fade-after (meters 80.0) - :falloff-to (meters 80.0) - :period #x258 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x80d - :period #x258 - :length #x14 - ) - (new 'static 'sparticle-group-item - :launcher #x80e - :fade-after (meters 120.0) - :falloff-to (meters 120.0) - :period #x258 - :length #x14 - ) + (sp-item 2059 :period 600 :length 5) + (sp-item 2060 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2061 :period 600 :length 20) + (sp-item 2062 :fade-after (meters 120.0) :falloff-to (meters 120.0) :period 600 :length 20) ) :bounds (new 'static 'sphere :w 24576.0) ) @@ -1861,125 +764,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x444ccccd - :random-range #x44cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x42da740e - :random-range #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1059425266 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1087454402 - :random-range -1087454402 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f666666 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 30 - :random-range 29 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x80f - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x46000000 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 29 1) + (sp-launcher-by-id spt-next-launcher 2063) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) ) ) ) @@ -1990,28 +795,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1078588575 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.4222223) + (sp-end) ) ) ) @@ -2022,78 +810,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43440000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-value #x44da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1077097267 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 8.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 0.42666668)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2104,66 +834,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43400000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1075877106 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 54 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 16.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -1.7454545) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2174,136 +856,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46200000 - :random-range #x45c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x435a740e - :random-range #x425a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x425a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1034259442 - :random-range #x42da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1077097267 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value #x3f2ec33e - :random-range #x3f2ec33e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f4ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x1fe - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 42 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x810 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.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-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.6) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 42) + (sp-launcher-by-id spt-next-launcher 2064) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2314,31 +889,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-value -1089959799 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1089959799 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-value -1081571191 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1089959799 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r -0.53333336) + (sp-flt spt-fade-g -0.53333336) + (sp-flt spt-fade-b -1.0666667) + (sp-flt spt-fade-a -0.53333336) + (sp-end) ) ) ) @@ -2346,7 +901,7 @@ ;; definition for method 24 of type projectile ;; INFO: Return type mismatch int vs none. (defmethod dummy-24 projectile ((obj projectile)) - (dummy-11 + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core)) ) @@ -2861,12 +1416,12 @@ (set! (-> obj max-hits) 1) ) (set! - (-> *part-id-table* 356 init-specs 18 initial-value) - (the-as int (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48))) + (-> *part-id-table* 356 init-specs 18 initial-valuef) + (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) ) (set! - (-> *part-id-table* 358 init-specs 11 initial-value) - (the-as int (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48))) + (-> *part-id-table* 358 init-specs 11 initial-valuef) + (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) ) (sound-play-by-name (static-sound-name "yellow-fire") @@ -2914,10 +1469,7 @@ ) ) ) - (set! - (-> *part-id-table* 350 init-specs 2 initial-value) - (the-as int f30-0) - ) + (set! (-> *part-id-table* 350 init-specs 2 initial-valuef) f30-0) ) ) (set! @@ -2996,8 +1548,14 @@ ) ) (dummy-47 (-> obj root-override)) - (set! (-> *part-id-table* 353 init-specs 16 initial-value) 30) - (set! (-> *part-id-table* 353 init-specs 16 random-range) 300) + (set! + (-> *part-id-table* 353 init-specs 16 initial-valuef) + (the-as float 30) + ) + (set! + (-> *part-id-table* 353 init-specs 16 random-rangef) + (the-as float 300) + ) (cond ((logtest? (-> obj options) 32) (when @@ -3010,18 +1568,24 @@ (- (-> *display* base-frame-counter) (the-as int (-> obj state-time))) 150 ) - (set! (-> *part-id-table* 353 init-specs 16 initial-value) 0) - (set! (-> *part-id-table* 353 init-specs 16 random-range) 0) + (set! + (-> *part-id-table* 353 init-specs 16 initial-valuef) + (the-as float 0) + ) + (set! + (-> *part-id-table* 353 init-specs 16 random-rangef) + (the-as float 0) + ) 0 ) - (dummy-11 + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core)) ) ) ) (else - (dummy-11 + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core)) ) @@ -3370,3 +1934,7 @@ (none) ) ) + + + + diff --git a/goal_src/engine/gfx/font-h.gc b/goal_src/engine/gfx/font-h.gc index 4ab76e8e1c..8878e0fb90 100644 --- a/goal_src/engine/gfx/font-h.gc +++ b/goal_src/engine/gfx/font-h.gc @@ -224,6 +224,7 @@ ((= z 0.0) (let ((v1-4 obj)) (set! (-> v1-4 origin z) (-> *math-camera* isometric vector 3 z)) + ;;(format #t "fc: ~F~%" (-> v1-4 origin z)) ) ) (else diff --git a/goal_src/engine/gfx/shadow/shadow-h.gc b/goal_src/engine/gfx/shadow/shadow-h.gc index a781692cd5..1e7d3855c0 100644 --- a/goal_src/engine/gfx/shadow/shadow-h.gc +++ b/goal_src/engine/gfx/shadow/shadow-h.gc @@ -43,3 +43,5 @@ ;; definition for symbol *fake-shadow-buffer*, type fake-shadow-buffer (define *fake-shadow-buffer* *fake-shadow-buffer-1*) + +(define-extern swap-fake-shadow-buffers (function none)) \ No newline at end of file diff --git a/goal_src/engine/gfx/shadow/shadow.gc b/goal_src/engine/gfx/shadow/shadow.gc index 4716bce9e5..adc87ff122 100644 --- a/goal_src/engine/gfx/shadow/shadow.gc +++ b/goal_src/engine/gfx/shadow/shadow.gc @@ -234,125 +234,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :initial-valuef -32768.0 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 90.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 90.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 90.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 20.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 8.192 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 17.066668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.3 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x138c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x36 - :flags #x1 - :initial-valuef -3640.889 - :random-rangef 2730.6667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-valuef -32768.0 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees -180.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 90.0) + (sp-flt spt-g 90.0) + (sp-flt spt-b 90.0) + (sp-rnd-flt spt-a 20.0 20.0 1.0) + (sp-flt spt-vel-y (meters 0.002)) + (sp-flt spt-scalevel-x (meters 0.004166667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.3) + (sp-int spt-timer 5004) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-launchrot-x (degrees -20.0) (degrees 15.0) 1.0) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.2)) + (sp-end) ) ) ) - diff --git a/goal_src/engine/gfx/sprite/sprite-distort.gc b/goal_src/engine/gfx/sprite/sprite-distort.gc index 23fd68dce4..6bb1823b25 100644 --- a/goal_src/engine/gfx/sprite/sprite-distort.gc +++ b/goal_src/engine/gfx/sprite/sprite-distort.gc @@ -107,12 +107,13 @@ ) -;; TODO -(define sprite-distort-vu1-block (the-as vu-function 0)) +;; we need to at least put something here so dma-buffer-add-vu-function doesn't crash. +(define sprite-distort-vu1-block (new 'static 'vu-function)) (defun sprite-init-distorter ((arg0 dma-buffer) (arg1 uint)) "Set up DMA for setting up the sprite-distorter renderer" + ;;(format #t "distorter: ~d~%" (-> *sprite-aux-list* entry)) (let* ((v1-0 arg0) (a2-0 (the-as object (-> v1-0 base))) ) diff --git a/goal_src/engine/gfx/sprite/sprite.gc b/goal_src/engine/gfx/sprite/sprite.gc index 7e406d4666..7eb1f47fb8 100644 --- a/goal_src/engine/gfx/sprite/sprite.gc +++ b/goal_src/engine/gfx/sprite/sprite.gc @@ -98,18 +98,15 @@ ) ) -#| -;; until we figure out the entry type, we can't have this function. (defmethod inspect sprite-aux-list ((obj sprite-aux-list)) (format #t "[~X] sprite-aux-list:~%" obj) (format #t "~Tnum-entries: ~D~%" (-> obj num-entries)) (format #t "~Tentry: ~D~%" (-> obj entry)) (dotimes (s5-0 (-> obj entry)) - (format #t "~T~D : ~X~%" s5-0 (l.wu (+ (+ (* s5-0 4) (the-as int obj)) 8))) + (format #t "~T~D : ~X~%" s5-0 (-> obj data s5-0)) ) (the-as sprite-aux-list #f) ) -|# (define *sprite-aux-list* (new 'global 'sprite-aux-list 256)) @@ -119,7 +116,17 @@ (none) ) -;; TODO function add-to-sprite-aux-list +(defun add-to-sprite-aux-list ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d)) + (let ((v1-0 *sprite-aux-list*)) + (when (< (-> v1-0 entry) (-> v1-0 num-entries)) + (set! (-> v1-0 data (-> v1-0 entry)) (-> arg1 sprite)) + (+! (-> v1-0 entry) 1) + ) + ) + (set! (-> arg2 r-g-b-a w) 0.0) + 0 + (none) + ) ;; The sprite-frame-data is data transferred to VU1 and remains there for all chunks of sprites. (deftype sprite-frame-data (structure) @@ -372,7 +379,8 @@ (none) ) -;;(define sprite-vu1-block (the-as vu-function L58)) +;; we need to at least put something here so dma-buffer-add-vu-function doesn't crash. +(define sprite-vu1-block (new 'static 'vu-function)) ;;;;;;;;;;;;;;;;;; ;; sprite-arrays @@ -569,6 +577,7 @@ (none) ) +#| (defun sprite-add-frame-data ((dma-buff dma-buffer) (tbp-offset uint)) "Upload the frame data." (let ((s5-0 41)) ;; qwc of frame data. @@ -587,6 +596,29 @@ ) (none) ) +|# + +(defun sprite-add-frame-data ((dma-buff dma-buffer) (tbp-offset uint)) + (let ((s5-0 41)) + (let* ((v1-0 dma-buff) + (pkt (the-as dma-packet (-> v1-0 base))) + ) + (set! (-> pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc s5-0)) + (set! (-> pkt vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + (set! + (-> pkt vif1) + (new 'static 'vif-tag :imm #x3d4 :cmd (vif-cmd unpack-v4-32) :num s5-0) + ) + (set! (-> v1-0 base) (&+ (the-as pointer pkt) 16)) + ) + (sprite-setup-frame-data + (the-as sprite-frame-data (-> dma-buff base)) + (the-as int tbp-offset) + ) + (&+! (-> dma-buff base) (* s5-0 16)) + ) + (none) + ) (defun sprite-add-2d-chunk ((sprites sprite-array-2d) (start-sprite-idx int) (num-sprites int) (dma-buff dma-buffer) (mscal-addr int)) "Upload sprite data from elements in the array." @@ -612,6 +644,18 @@ :imm (new 'static 'vif-unpack-imm :flg 1 :addr 1)) ) ) + + ; (dotimes (i num-sprites) + ; (let ((spidx (+ i start-sprite-idx))) + ; (when (or (= spidx (-> sprites num-sprites 0)) (= spidx (+ 1 (-> sprites num-sprites 0)))) + ; (let ((data (the sprite-vec-data-2d (&+ (-> sprites vec-data) (* 48 (+ i start-sprite-idx)))))) + ; (format #t "spidx: ~d~%") + ; (inspect data) + ; (inspect (-> data r-g-b-a)) + ; ) + ; ) + ; ) + ; ) ;; third packet is adgif data (5 qw/sprite) (let ((qwc-pkt3 (* 5 num-sprites))) @@ -643,6 +687,8 @@ ;; and use the other mpg. (set! mscal-addr 109) ) + + ;;(format #t "group ~d 2D ~d~%" group-idx (-> sprites num-valid group-idx)) ;; loop over chunks (let ((remaining-sprites (-> sprites num-valid group-idx))) @@ -815,6 +861,7 @@ (none) ) + (defun sprite-draw ((disp display)) "Main sprite draw function." ;; start of our DMA for all the sprite data @@ -896,6 +943,8 @@ (none) ) + + (defun sprite-allocate-user-hvdf () "Allocate an HVDF entry. Returns the index. Or 0 if it fails" (dotimes (v1-0 76) diff --git a/goal_src/engine/gfx/texture.gc b/goal_src/engine/gfx/texture.gc index 4f513130a8..5fd892cf5b 100644 --- a/goal_src/engine/gfx/texture.gc +++ b/goal_src/engine/gfx/texture.gc @@ -627,6 +627,7 @@ ;; allocate the common and near segments (allocate-segment! obj (-> obj segment-common) COMMON_SEGMENT_WORDS) ;; ~0.5 MB (allocate-segment! obj (-> obj segment-near) NEAR_SEGMENT_WORDS) ;; ~1.6 MB. + (format #t "near segment is at ~D to ~d~%" (-> obj segment-near dest) (+ (-> obj segment-near dest) (-> obj segment-near size))) ;; Allocate the random crap (set! *sky-base-vram-word* (allocate-vram-words! obj SPECIAL_VRAM_WORDS)) @@ -799,6 +800,8 @@ (first-chunk-idx-to-upload int) (tex-id uint) ) + + (let ((total-upload-size 0)) (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) ;; the global DMA buffer bucket-idx) @@ -843,7 +846,7 @@ (dotimes (upload-chunk-idx (the-as int chunk-count)) ;; the destination of the chunk. (let ((current-dest-chunk - (+ tex-dest-base-chunk (the-as uint upload-chunk-idx)) + (+ tex-dest-base-chunk (the-as uint upload-chunk-idx)) ) ) ;; now we see if we can get away with not uploading the chunk. @@ -860,42 +863,57 @@ ((= (-> pool ids current-dest-chunk) tex-id) ;; and the run ends, we found a chunk that's already loaded. ;; so we upload the run: - (upload-vram-data dma-buf - (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) - (&+ tex-data (shl first-chunk-idx-to-upload 14)) - (shl chunks-to-upload-count 5) - ) + (#when (not PC_PORT) + (upload-vram-data dma-buf + (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) + (&+ tex-data (shl first-chunk-idx-to-upload 14)) + (shl chunks-to-upload-count 5) + ) + ) + (+! total-upload-size chunks-to-upload-count) ;; reset (set! chunks-to-upload-count 0) ) (else - ;; the run continues! - (set! (-> pool ids current-dest-chunk) tex-id) - (set! chunks-to-upload-count (+ chunks-to-upload-count 1)) - ) + ;; the run continues! + (set! (-> pool ids current-dest-chunk) tex-id) + (set! chunks-to-upload-count (+ chunks-to-upload-count 1)) + ) ) ) ) ) - + ;; if we finished with a run of "needs upload", set up the upload. (when (nonzero? chunks-to-upload-count) - (upload-vram-data - dma-buf - (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) - (&+ tex-data (shl first-chunk-idx-to-upload 14)) - (shl chunks-to-upload-count 5) - ) + (#when (not PC_PORT) + (upload-vram-data + dma-buf + (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) + (&+ tex-data (shl first-chunk-idx-to-upload 14)) + (shl chunks-to-upload-count 5) + ) + ) (+! total-upload-size chunks-to-upload-count) ) ;; do a texflush ;; send gif (a+d) - (dma-buffer-add-gs-set dma-buf - (texflush 1) ;; texflush - ) + (#when (not PC_PORT) + (dma-buffer-add-gs-set dma-buf + (texflush 1) ;; texflush + ) + ) + + ;; in PC PORT we just skip all that stuff and just send a pointer to the texture page and the mode. + (#when PC_PORT + (dma-buffer-add-cnt-vif2 dma-buf 1 (new 'static 'vif-tag :cmd (vif-cmd pc-port)) (the-as vif-tag 3)) + (dma-buffer-add-uint64 dma-buf page) + (dma-buffer-add-uint64 dma-buf mode) + ) + ) (shl total-upload-size 14) ) @@ -1580,7 +1598,7 @@ (and (nonzero? a2-0) (logtest? (-> obj common-page-mask) (ash 1 v1-0))) ;; in the mask. ) ;; upload it! - (upload-vram-pages obj (-> obj segment-common) a2-0 -2 (bucket-id bucket-65)) + (upload-vram-pages obj (-> obj segment-common) a2-0 -2 (bucket-id pre-sprite-textures)) (return #f) ) ) @@ -2080,6 +2098,7 @@ ) ) ) + ;; (format #t "relocate dests: ~A seg ~D from ~D to ~D~%" obj seg-id (-> obj segment seg-id dest) new-dest) (set! (-> obj segment seg-id dest) (the-as uint new-dest)) ) ) @@ -2227,7 +2246,9 @@ "Look up a texture by ID, loading it from debug network if its not loaded. Default allocates if it has to load, so it will permanently use VRAM" (let ((v1-0 (texture-page-login arg0 texture-page-default-allocate loading-level))) - (if (and v1-0 (< (-> arg0 index) (the-as uint (-> v1-0 page length)))) + (when (and v1-0 (< (-> arg0 index) (the-as uint (-> v1-0 page length)))) + ;;(format #t "texture:~%") + ;;(inspect (-> v1-0 page data (-> arg0 index))) (-> v1-0 page data (-> arg0 index)) ) ) diff --git a/goal_src/engine/gfx/time-of-day.gc b/goal_src/engine/gfx/time-of-day.gc index e857fcd9ab..f85b0251cd 100644 --- a/goal_src/engine/gfx/time-of-day.gc +++ b/goal_src/engine/gfx/time-of-day.gc @@ -5,3 +5,4 @@ ;; name in dgo: time-of-day ;; dgos: GAME, ENGINE +(define *time-of-day-proc* (the (pointer time-of-day-proc) #f)) \ No newline at end of file diff --git a/goal_src/engine/gfx/vis/bsp-h.gc b/goal_src/engine/gfx/vis/bsp-h.gc index 3714f0cf30..50a35d267d 100644 --- a/goal_src/engine/gfx/vis/bsp-h.gc +++ b/goal_src/engine/gfx/vis/bsp-h.gc @@ -43,8 +43,8 @@ (pat-length int32 :offset-assert 48) (texture-remap-table (pointer uint64) :offset-assert 52) (texture-remap-table-len int32 :offset-assert 56) - (unk-data-1 pointer :offset-assert 60) - (unk-data-1-len int32 :offset-assert 64) + (texture-ids (pointer texture-id) :offset-assert 60) + (texture-page-count int32 :offset-assert 64) (unk-zero-0 basic :offset-assert 68) (name symbol :offset-assert 72) (nickname symbol :offset-assert 76) diff --git a/goal_src/engine/gfx/vis/bsp.gc b/goal_src/engine/gfx/vis/bsp.gc index e6a0ad812c..297de01e91 100644 --- a/goal_src/engine/gfx/vis/bsp.gc +++ b/goal_src/engine/gfx/vis/bsp.gc @@ -93,7 +93,7 @@ (set! (-> mem-use length) (max 58 (-> mem-use length))) (set! (-> mem-use data 57 name) "bsp-misc") (+! (-> mem-use data 57 count) 1) - (let ((v1-56 (* (-> obj unk-data-1-len) 4))) + (let ((v1-56 (* (-> obj texture-page-count) 4))) (+! (-> mem-use data 57 used) v1-56) (+! (-> mem-use data 57 total) (logand -16 (+ v1-56 15))) ) diff --git a/goal_src/engine/level/level-h.gc b/goal_src/engine/level/level-h.gc index 483b43d657..22b7f919b9 100644 --- a/goal_src/engine/level/level-h.gc +++ b/goal_src/engine/level/level-h.gc @@ -214,7 +214,7 @@ (debug-print-entities (_type_ symbol type) none 13) (debug-draw-actors (_type_ symbol) none 14) (dummy-15 (_type_) object 15) - (dummy-16 (_type_) int 16) + (level-update (_type_) int 16) (level-get-target-inside (_type_) level 17) (alloc-levels! (_type_ symbol) int 18) (load-commands-set! (_type_ pair) pair 19) diff --git a/goal_src/engine/level/level.gc b/goal_src/engine/level/level.gc index c56cb86df6..d71ba02edf 100644 --- a/goal_src/engine/level/level.gc +++ b/goal_src/engine/level/level.gc @@ -488,12 +488,12 @@ (cond ((-> obj bsp) (set! (-> *level* log-in-level-bsp) (-> obj bsp)) - ;; TODO - ;;(login-level-textures *texture-pool* obj (-> obj bsp unk-data-1-len) (the-as (pointer texture-id) (-> obj bsp unk-data-1))) + (login-level-textures *texture-pool* obj (-> obj bsp texture-page-count) (-> obj bsp texture-ids)) (let ((bsp (-> obj bsp))) (when (nonzero? (-> bsp adgifs)) (let ((adgifs (-> bsp adgifs))) (dotimes (i (-> adgifs length)) + ;; TODO ;;(adgif-shader-login-no-remap (-> adgifs data i)) TODO texture.gc ) ) @@ -1549,6 +1549,12 @@ ;; method 16 level-group (debug text stuff) +(defmethod level-update level-group ((obj level-group)) + ;; todo lots of stuff + (update-per-frame-settings! *setting-control*) + 0 + ) + (defun-debug show-level ((level-name symbol)) (set! (-> *setting-control* default border-mode) #t) (load-state-want-levels (-> (level-get-target-inside *level*) name) level-name) diff --git a/goal_src/engine/sparticle/sparticle-h.gc b/goal_src/engine/sparticle/sparticle-h.gc index 1855b064ec..f0230ecd0c 100644 --- a/goal_src/engine/sparticle/sparticle-h.gc +++ b/goal_src/engine/sparticle/sparticle-h.gc @@ -17,6 +17,28 @@ (define *sp-60-hz* #t) +(defenum sp-cpuinfo-flag + :bitfield #t + :type uint32 + (bit0 0) + (bit2 2) ;; cleared after an aux has its func set to add-to-sprite-aux-lst + (bit3 3) + (ready-to-launch 6) ;; maybe just just death? + (bit7 7) + (aux-list 8) ;; prevents relaunch, adds to aux + (bit9 9) + (level0 10) + (level1 11) + (bit12 12) ;; required to relaunch + (bit13 13) + (bit14 14) + (use-global-acc 16) + (launch-along-z 17) + (left-multiply-quat 18) + (right-multiply-quat 19) + (set-conerot 20) + ) + (deftype sparticle-cpuinfo (structure) ((sprite sprite-vec-data-2d :offset-assert 0) (adgif adgif-shader :offset-assert 4) @@ -33,7 +55,7 @@ (scalevely float :offset 44) (friction float :offset-assert 96) (timer int32 :offset-assert 100) - (flags uint32 :offset-assert 104) + (flags sp-cpuinfo-flag :offset-assert 104) (user-int32 int32 :offset-assert 108) (user-uint32 uint32 :offset 108) (user-float float :score 100 :offset 108) @@ -53,8 +75,10 @@ :method-count-assert 9 :size-assert #x8c :flag-assert #x90000008c + ;; field key is a basic loaded with a signed load ) + (deftype sparticle-launchinfo (structure) ((launchrot vector :inline :offset-assert 0) (conerot vector :inline :offset-assert 16) @@ -69,8 +93,8 @@ (deftype sparticle-system (basic) ((blocks int32 2 :offset-assert 4) - (length uint32 2 :offset-assert 12) - (num-alloc uint32 2 :offset-assert 20) + (length int32 2 :offset-assert 12) + (num-alloc int32 2 :offset-assert 20) (is-3d basic :offset-assert 28) (flags uint32 :offset-assert 32) (alloc-table (pointer uint64) :offset-assert 36) @@ -98,3 +122,4 @@ (defun-extern kill-all-particles-with-key sparticle-launch-control none) +(define-extern sp-get-particle (function sparticle-system int sparticle-launch-state sparticle-cpuinfo)) \ No newline at end of file diff --git a/goal_src/engine/sparticle/sparticle-launcher-h.gc b/goal_src/engine/sparticle/sparticle-launcher-h.gc index 95b270f594..1bf3c82b5f 100644 --- a/goal_src/engine/sparticle/sparticle-launcher-h.gc +++ b/goal_src/engine/sparticle/sparticle-launcher-h.gc @@ -5,9 +5,139 @@ ;; name in dgo: sparticle-launcher-h ;; dgos: GAME, ENGINE + +;; The "sparticle" system is the particle system. +;; Features +;; - Support for 2D particles (autosave icon, progress menu graphics) +;; - Support for 3D particles (many of the effects) +;; - Uses the "sprite" renderer to draw particles + +;; The "sparticle-launcher" code is the framework for describing particle effects +;; The "sparticle" code is the system that runs particles +;; Note that neither of these link particles to the process system. See part-tracker for that. + +;; The higheset level class here is sparticle-launch-control. +;; Each instance of a particle effect must have one of these. +;; For example, there would be one of these per eco-vent. +;; These store some state (a sparticle-launch-state) and a reference to a sparticle-launch-group +;; Multiple launch-controls can refer to the same launch-group. + + +;; A sparticle-launch-group is a description of a particle effect. +;; It can contain multiple types of particles. +;; The `*part-group-id-table*` array stores a reference to every launch-group, indexed by group id. +;; Each launch-group is just a list of sparticle-launchers, stored as an index + +;; A launcher is a single particle effect. +;; The `*part-id-table*` has references to all particle effects. +;; It contains a list of "field-init-specs". When the particle effect starts, the system +;; iterates through this list and sets parameters about particles. + +;; There are five types of fields: +;; misc fields +;; sprite fields +;; cpu fields +;; launch fields +;; weird fields + +;; The built-in parameters can be used for many simple effects, but sometimes it is not enough. +;; You can provide a callback function to update the particle's state if needed. + +;; These are the user-settable state variables for each particle effect +(defenum sp-field-id + :type uint16 + + (misc-fields-start 0) + (spt-texture 1) + (spt-anim 2) + (spt-anim-speed 3) + (spt-birth-func 4) + (spt-joint/refpoint 5) + (spt-num 6) + (spt-sound 7) + (misc-fields-end 8) + + (sprite-fields-start 9) + (spt-x 10) + (spt-y 11) + (spt-z 12) + (spt-scale-x 13) + (spt-rot-x 14) + (spt-rot-y 15) + (spt-rot-z 16) + (spt-scale-y 17) + (spt-r 18) + (spt-g 19) + (spt-b 20) + (spt-a 21) + (sprite-fields-end 22) + + (cpu-fields-start 23) + (spt-omega 24) + (spt-vel-x 25) + (spt-vel-y 26) + (spt-vel-z 27) + (spt-scalevel-x 28) + (spt-rotvel-x 29) + (spt-rotvel-y 30) + (spt-rotvel-z 31) + (spt-scalevel-y 32) + (spt-fade-r 33) + (spt-fade-g 34) + (spt-fade-b 35) + (spt-fade-a 36) + (spt-accel-x 37) + (spt-accel-y 38) + (spt-accel-z 39) + (spt-dummy 40) + (spt-quat-x 41) + (spt-quat-y 42) + (spt-quat-z 43) + (spt-quad-w 44) + (spt-friction 45) + (spt-timer 46) + (spt-flags 47) + (spt-userdata 48) + (spt-func 49) + (spt-next-time 50) + (spt-next-launcher 51) + (cpu-fields-end 52) + + (launch-fields-start 53) + (spt-launchrot-x 54) + (spt-launchrot-y 55) + (spt-launchrot-z 56) + (spt-launchrot-w 57) + (spt-conerot-x 58) + (spt-conerot-y 59) + (spt-conerot-z 60) + (spt-conerot-w 61) + (spt-conerot-radius 62) + (spt-rotate-y 63) + (launch-fields-end 64) + + (spt-scale 65) + (spt-scalevel 66) + (spt-end 67) + ) + +(defenum sp-flag + :type uint16 + (plain-v1 0) ;; just a plain signed integer. No random crap. + (float-with-rand 1) + (int-with-rand 2) + (copy-from-other-field 3) + (plain-v2 4) + (from-pointer 5) + (part-by-id 6) + ) + +;; This describes the initial value and some more info for a single field +;; Note that there are overlays here and some values only make sense in some +;; cases. (deftype sp-field-init-spec (structure) - ((field uint16 :offset-assert 0) - (flags uint16 :offset-assert 2) + ((field sp-field-id :offset-assert 0) + (flags sp-flag :offset-assert 2) (initial-valuef float :offset-assert 4) (random-rangef float :offset-assert 8) (random-multf float :offset-assert 12) @@ -26,6 +156,112 @@ :flag-assert #x900000010 ) +;; sparticle field macros + +(defmacro sp-tex (field-name tex-id) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-name) :tex ,tex-id) + ) + +(defmacro sp-rnd-flt (field-name val range mult) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-valuef ,val + :random-rangef ,range + :random-multf ,mult + :flags (sp-flag float-with-rand) + ) + ) + +(defmacro sp-flt (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-valuef ,val + :random-rangef 0.0 + :random-multf 1.0 + :flags (sp-flag float-with-rand) + ) + ) + +(defmacro sp-int (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :random-range 0 + :random-mult 1 + ) + ) + +(defmacro sp-int-plain-rnd (field-name val range mult) + "For when we use plain integer, but set the randoms." + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :random-range ,range + :random-mult ,mult + ) + ) + +(defmacro sp-rnd-int (field-name val range mult) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :random-range ,range + :random-multf ,mult + :flags (sp-flag int-with-rand) + ) + ) + + +(defmacro sp-rnd-int-flt (field-name val range mult) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-valuef ,val + :random-range ,range + :random-multf ,mult + :flags (sp-flag int-with-rand) + ) + ) + +(defmacro sp-cpuinfo-flags (&rest flags) + `(new 'static 'sp-field-init-spec + :field (sp-field-id spt-flags) + :initial-value (sp-cpuinfo-flag ,@flags) + :random-mult 1 + ) + ) + +(defmacro sp-launcher-by-id (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :flags (sp-flag part-by-id) + ) + ) + +(defmacro sp-func (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :sym ,val + :flags (sp-flag from-pointer) + ) + ) + +(defmacro sp-end () + `(new 'static 'sp-field-init-spec + :field (sp-field-id spt-end) + ) + ) + +(defmacro sp-copy-from-other (field-name offset) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,offset + :random-mult 1 + :flags (sp-flag copy-from-other-field) + ) + ) + + (deftype sparticle-launcher (basic) ((birthaccum float :offset-assert 4) (soundaccum float :offset-assert 8) @@ -36,11 +272,20 @@ :flag-assert #x900000010 ) +(defenum sp-group-item-flag + :bitfield #t + :type uint16 + (is-3d 0) + (bit1 1) + (start-dead 2) + (launch-asap 3) + ) + (deftype sparticle-group-item (structure) ((launcher uint32 :offset-assert 0) (fade-after meters :offset-assert 4) (falloff-to meters :offset-assert 8) - (flags uint16 :offset-assert 12) + (flags sp-group-item-flag :offset-assert 12) (period uint16 :offset-assert 14) (length uint16 :offset-assert 16) (offset uint16 :offset-assert 18) @@ -52,13 +297,46 @@ :flag-assert #x90000001c ) +(defmacro sp-item (launcher + &key (fade-after 0.0) + &key (falloff-to 0.0) + &key (flags ()) + &key (period 0) + &key (length 0) + &key (offset 0) + &key (hour-mask 0) + &key (binding 0) + ) + `(new 'static 'sparticle-group-item + :launcher ,launcher + :fade-after ,fade-after + :falloff-to ,falloff-to + :flags (sp-group-item-flag ,@flags) + :period ,period + :length ,length + :offset ,offset + :hour-mask ,hour-mask + :binding ,binding + ) + ) + +(defenum sp-launch-state-flags + :bitfield #t + :type uint16 + (launcher-active 0) ;; active + (particles-active 1) ;; wants to launch + (bit2 2) + ) + +(declare-type sparticle-cpuinfo structure) + (deftype sparticle-launch-state (structure) ((group-item sparticle-group-item :offset-assert 0) - (flags uint16 :offset-assert 4) + (flags sp-launch-state-flags :offset-assert 4) (randomize uint16 :offset-assert 6) (origin vector :offset-assert 8) (sprite3d sprite-vec-data-3d :offset-assert 12) - (sprite basic :offset-assert 16) + (sprite sparticle-cpuinfo :offset-assert 16) (offset uint32 :offset-assert 20) (accum float :offset-assert 24) (spawn-time uint32 :offset-assert 28) @@ -73,12 +351,20 @@ :flag-assert #x900000020 ) +(defenum sp-group-flag + :bitfield #t + :type uint16 + (use-local-clock 0) + (always-draw 1) + (screen-space 2) + ) + (deftype sparticle-launch-group (basic) ((length int16 :offset-assert 4) (duration uint16 :offset-assert 6) (linger-duration uint16 :offset-assert 8) - (flags uint16 :offset-assert 10) - (name basic :offset-assert 12) + (flags sp-group-flag :offset-assert 10) + (name string :offset-assert 12) (launcher (inline-array sparticle-group-item) :offset-assert 16) (bounds sphere :inline :offset-assert 32) ) @@ -106,10 +392,11 @@ :flag-assert #xe00000040 (:methods (initialize (_type_ sparticle-launch-group process) none 9) - (dummy-10 () none 10) - (dummy-11 (_type_ vector) none 11) - (deactivate (_type_) none 12) - (dummy-13 () none 13) + (is-visible? (_type_ vector) symbol 10) + (spawn (_type_ vector) object 11) + (kill-and-free-particles (_type_) none 12) + (kill-particles (_type_) none 13) ) ) (set! (-> sparticle-launch-control heap-base) (the-as uint 32)) + diff --git a/goal_src/engine/sparticle/sparticle-launcher.gc b/goal_src/engine/sparticle/sparticle-launcher.gc index 90f955f2e0..4fca19f927 100644 --- a/goal_src/engine/sparticle/sparticle-launcher.gc +++ b/goal_src/engine/sparticle/sparticle-launcher.gc @@ -5,38 +5,1279 @@ ;; name in dgo: sparticle-launcher ;; dgos: GAME, ENGINE -;; TODO - for shadow -(define *part-id-table* (new 'global 'boxed-array sparticle-launcher 3584)) -(define *part-group-id-table* (new 'global 'boxed-array sparticle-launch-group 1024)) (define *particle-300hz-timer* 0) -;; TODO - for particle related code -(define-extern sp-launch-particles-var (function sparticle-system sparticle-launcher vector symbol symbol float none)) - -(defmethod create-launch-control sparticle-launch-group ((obj sparticle-launch-group) (arg0 process)) - (let ((gp-0 (new 'process 'sparticle-launch-control (-> obj length)))) - (when (zero? gp-0) - (go process-drawable-art-error "memory") - (return (the-as sparticle-launch-control 0)) - ) - ;;(initialize gp-0 obj arg0) - gp-0 +(deftype sparticle-birthinfo (structure) + ((sprite uint32 :offset-assert 0) + (anim int32 :offset-assert 4) + (anim-speed float :offset-assert 8) + (birth-func basic :offset-assert 12) + (joint-ppoint int32 :offset-assert 16) + (num-to-birth float :offset-assert 20) + (sound basic :offset-assert 24) + (dataf float 1 :offset 0) + (data uint32 1 :offset 0) ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c ) -(defmethod deactivate sparticle-launch-control ((obj sparticle-launch-control)) - (countdown (v1-0 (-> obj length)) - (let ((a0-3 (-> obj data v1-0))) - (set! (-> a0-3 flags) (logand -3 (-> a0-3 flags))) + +(defmethod inspect sparticle-launcher ((obj sparticle-launcher)) + "Print out a sparticle-laucher, including its fields" + (format #t "~X: sparticle-launcher~%" obj) + (let ((s5-0 0)) + (while (!= (-> obj init-specs s5-0 field) (sp-field-id spt-end)) + (let ((init-spec (-> obj init-specs s5-0))) + (format #t "~T~S : ~F / #x~X / ~D~%" + (enum->string sp-field-id (-> init-spec field)) + (-> init-spec initial-valuef) + (-> init-spec initial-valuef) + (-> init-spec initial-valuef) + ) + ) + (+! s5-0 1) + ) ) + (the-as sparticle-launcher 0) + ) + +;;;;;;;;;;;;;;;;;;;;;;;; +;; particle tables +;;;;;;;;;;;;;;;;;;;;;;;; + +;; All particle effects (sparticle-launcher) and groups (sparticle-launch-groups) are statically defined +;; Code defining particle effects should add itself to the tables. +;; When a level heap is discarded, it should call (unlike-part-group-by-heap ) to remove references to +;; particle effects that are going to be discarded. + +;; All the particle launchers. +;; Particle effects will add themselves to this table when the code is loaded/linked +(define *part-id-table* (new 'global 'boxed-array sparticle-launcher 3584)) + + +;; All the particle groups. +(define *part-group-id-table* (new 'global 'boxed-array sparticle-launch-group 1024)) + +(defun lookup-part-group-by-name ((arg0 string)) + "Find a particle group with the given name. Checks all of them, not very efficient." + (let* ((s5-0 *part-group-id-table*) + (s4-0 (-> s5-0 length)) + ) + (dotimes (s3-0 s4-0) + (let ((s2-0 (-> s5-0 s3-0))) + (if (and (nonzero? s2-0) (string= arg0 (-> s2-0 name))) + (return (the-as basic s2-0)) + ) + ) + ) + ) + (the-as sparticle-launch-group #f) + ) + +(defun lookup-part-group-pointer-by-name ((arg0 string)) + "Get a (pointer sparticle-launch-group) for the given name. Checks all of them, not very efficient." + (let* ((s4-0 *part-group-id-table*) + (s3-0 (-> s4-0 length)) + ) + (dotimes (gp-0 s3-0) + (let ((v1-2 (-> s4-0 gp-0))) + (if (and (nonzero? v1-2) (string= arg0 (-> v1-2 name))) + ;;(return (&+ (-> s4-0 data) (* gp-0 4))) + (return (&-> s4-0 gp-0)) + ) + ) + ) + ) + (the-as (pointer sparticle-launch-group) #f) + ) + +(defun part-group-pointer? ((arg0 pointer)) + "Is the given pointer a pointer that was returned by lookup-part-group-pointer-by-name?" + (let ((v1-0 *part-group-id-table*)) + ;; just check if we are inside the array. + (and (>= (the-as int arg0) (the-as int (-> v1-0 data))) + (< (the-as int arg0) (the-as int (&-> v1-0 1024))) + ) + ) + ) + +(defun unlink-part-group-by-heap ((arg0 kheap)) + "Find all particle groups that are stored in the specified heap and set them to 0." + (let* ((v1-0 *part-group-id-table*) + (a2-0 (-> v1-0 length)) + (a1-0 (-> arg0 base)) + (a0-1 (-> arg0 top-base)) + ) + (while (nonzero? a2-0) + (+! a2-0 -1) + (let ((a3-2 (-> v1-0 a2-0))) + (when (and (>= (the-as int a3-2) (the-as int a1-0)) (< (the-as int a3-2) (the-as int a0-1))) + (set! (-> v1-0 a2-0) (the-as sparticle-launch-group 0)) + 0 + ) + ) + ) + ) + 0 + ) + +;;;;;;;;;;;;;;;;;;;;;;; +;; particle init +;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern sp-init-fields! (function object (inline-array sp-field-init-spec) sp-field-id sp-field-id symbol object)) +(define sp-init-fields! (the (function object (inline-array sp-field-init-spec) sp-field-id sp-field-id symbol object) + (__pc-get-mips2c "sp-init-fields!"))) + +;;;;;;;;;;;;;;;;;;;;;;; +;; launch queue +;;;;;;;;;;;;;;;;;;;;;;; + +(deftype sp-queued-launch-particles (structure) + ((sp-system sparticle-system :offset-assert 0) + (sp-launcher sparticle-launcher :offset-assert 4) + (pos vector :inline :offset-assert 16) ) - (set! (-> obj local-clock) 0) - (set! (-> obj fade) 1.0) - (kill-all-particles-with-key obj) - (if (> (-> obj matrix) 0) - (sprite-release-user-hvdf (-> obj matrix)) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype sp-launch-queue (basic) + ((in-use int32 :offset-assert 4) + (queue sp-queued-launch-particles 32 :inline :offset-assert 16) ) + :method-count-assert 9 + :size-assert #x410 + :flag-assert #x900000410 + ) + +(define *sp-launcher-lock* #f) +(define *sp-launch-queue* (new 'global 'sp-launch-queue)) +(define *sp-launcher-enable* #t) + +;;;;;;;;;;;;;;;;;;; +;; particle adgif +;;;;;;;;;;;;;;;;;;; + +;; the particle system can modify the adgif shader as part of particle effects. +;; it also is responsible for setting up the adgif. + +(defun particle-setup-adgif ((arg0 adgif-shader) (arg1 texture-id)) + "Set up the adgif for a particle and the given texture." + + ;; grab the texture + (let ((a1-1 (lookup-texture-by-id arg1))) + ;; set up some texture stuff + (set! (-> arg0 tex1) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (set! (-> arg0 tex0 tfx) 0) + ;; get the default adgif settings for this txture + (if a1-1 + (adgif-shader<-texture! arg0 a1-1) + ) + ) + + ;; we'll use the usual tex0/tex1/miptbp1 + (set! (-> arg0 prims 1) (gs-reg64 tex0-1)) + (set! (-> arg0 prims 3) (gs-reg64 tex1-1)) + (set! (-> arg0 prims 5) (gs-reg64 miptbp1-1)) + + ;; clamp will use something weird + (set! (-> arg0 clamp-reg) (gs-reg64 zbuf-1)) + ;; this is sometimes "gs-miptbp" instead. + (set! (-> arg0 prims 9) (gs-reg64 alpha-1)) + + ;; should probably fix this type eventually... + (set! (-> arg0 alpha) (the gs-miptbp (new 'static 'gs-alpha :b #x1 :d #x1))) + + ;; clamp is actually zbuf for sparticles, not gs-clamp. + (set! (-> arg0 clamp) (the gs-clamp (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1))) + 0 (none) ) -(define-extern lookup-part-group-by-name (function string basic)) +;; this is where we'll store the actual adgifs +(deftype particle-adgif-cache (basic) + ((used int32 :offset-assert 4) + (last uint16 :offset-assert 8) + (lastgif adgif-shader :offset-assert 12) + (tidhash uint16 80 :offset-assert 16) + (spadgif adgif-shader 80 :inline :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #x19b0 + :flag-assert #x9000019b0 + ) + +(define *particle-adgif-cache* (new 'global 'particle-adgif-cache)) +(set! (-> *particle-adgif-cache* used) 0) + +(define-extern particle-adgif (function adgif-shader texture-id none)) +(set! particle-adgif (the (function adgif-shader texture-id none) (__pc-get-mips2c "particle-adgif"))) + +;;;;;;;;;;;;;;;;;;; +;; launch +;;;;;;;;;;;;;;;;;;; + +(defun sp-queue-launch ((arg0 sparticle-system) (arg1 sparticle-launcher) (arg2 vector)) + "Queue a launch from the given launcher, at the given position." + (let ((v1-0 *sp-launch-queue*)) + + ;; make sure we have room in the queue + (when (= (-> v1-0 in-use) 32) + (format 0 "ERROR: sp-launch-particles called during processing, and queue is full~%") + (return 0) + ) + + ;; make a new entry in the queue + (let ((a3-5 (-> v1-0 queue (-> v1-0 in-use)))) + (set! (-> a3-5 sp-system) arg0) + (set! (-> a3-5 sp-launcher) arg1) + (set! (-> a3-5 pos quad) (-> arg2 quad)) + ) + (let ((v0-1 (+ (-> v1-0 in-use) 1))) + (set! (-> v1-0 in-use) v0-1) + v0-1 + ) + ) + ) + +(defun sp-adjust-launch ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 (inline-array sp-field-init-spec))) + "Adjust the fields based on the init-specs" + (let ((s5-0 (new 'stack-no-clear 'sparticle-launchinfo))) + (let ((s2-0 (new 'stack-no-clear 'matrix)) + (s3-0 (new 'stack-no-clear 'vector)) + ) + + (format #t "adjust launch~%") + ;; use the field-init-spec to create a totally new launchinfo. + (sp-init-fields! + (-> s5-0 launchrot) + arg2 + (sp-field-id launch-fields-start) + (sp-field-id launch-fields-end) + #t + ) + + ;; rotate vel to include the launchrot and conerot + (matrix-rotate-xyz! s2-0 (-> s5-0 launchrot)) + (vector3s-matrix*! + (the-as vector3s (-> arg1 vel-sxvel)) + (the-as vector3s (-> arg1 vel-sxvel)) + s2-0 + ) + (matrix-rotate-xyz! s2-0 (-> s5-0 conerot)) + (vector3s-matrix*! + (the-as vector3s (-> arg1 vel-sxvel)) + (the-as vector3s (-> arg1 vel-sxvel)) + s2-0 + ) + + ;; cone axis (pre-rotation to local, y is default, but there's a flag for z) + (if (logtest? (sp-cpuinfo-flag launch-along-z) (-> arg1 flags)) + (set-vector! s3-0 0.0 0.0 (-> s5-0 coneradius) 1.0) + (set-vector! s3-0 0.0 (-> s5-0 coneradius) 0.0 1.0) + ) + ;; rotate cone + (vector-matrix*! s3-0 s3-0 s2-0) + ;; add to the launch info (this is approximate, but who cares.) + (+! (-> arg0 launchrot x) (-> s3-0 x)) + (+! (-> arg0 launchrot y) (-> s3-0 y)) + (+! (-> arg0 launchrot z) (-> s3-0 z)) + ) + + ;; if desired, apply addition y rotation. + (when (!= (-> s5-0 rotate-y) 0.0) + (let ((s3-1 (new 'stack-no-clear 'matrix))) + (matrix-rotate-y! s3-1 (-> s5-0 rotate-y)) + (vector3s-rotate*! + (the-as vector3s (-> arg0 launchrot)) + (the-as vector3s (-> arg0 launchrot)) + s3-1 + ) + (vector3s-rotate*! + (the-as vector3s (-> arg1 vel-sxvel)) + (the-as vector3s (-> arg1 vel-sxvel)) + s3-1 + ) + ;; optionally rotate acc. + (if (zero? (logand (sp-cpuinfo-flag use-global-acc) (-> arg1 flags))) + (vector3s-rotate*! + (the-as vector3s (-> arg1 acc)) + (the-as vector3s (-> arg1 acc)) + s3-1 + ) + ) + ) + ;; optionally rotate the cone (it seems like this happens too late, but maybe it's okay.) + (if (logtest? (sp-cpuinfo-flag set-conerot) (-> arg1 flags)) + (set! (-> arg0 conerot y) (+ 16384.0 (-> s5-0 rotate-y))) + ) + ) + ) + 0 + (none) + ) + +(defun sp-euler-convert ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo)) + "Convert rotations from euler angles to quaternions." + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (let ((a1-1 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'quaternion)) + ) + + ;; convert conerot to a quaternion + (set-vector! + a1-1 + (-> arg0 conerot x) + (-> arg0 conerot y) + (-> arg0 conerot z) + 1.0 + ) + (quaternion-zxy! s5-0 a1-1) + ;; flip the sign of w if needed. the sprite renderer _requires_ that w be positive + ;; because it doesn't actually store w! + ;; this code also preserves w. + (cond + ((< (-> s5-0 w) 0.0) + (.lvf vf1 (&-> arg0 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg0 conerot quad) vf1) + ) + (else + (.lvf vf1 (&-> arg0 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg0 conerot quad) vf1) + ) + ) + ) + + ;; scale the rate of rot-syvel (it's multiplied by a rate already) + (cond + (*sp-60-hz* + (set! (-> arg1 rot-syvel x) (* 5.0 (-> arg1 rot-syvel x))) + (set! (-> arg1 rot-syvel y) (* 5.0 (-> arg1 rot-syvel y))) + (set! (-> arg1 rot-syvel z) (* 5.0 (-> arg1 rot-syvel z))) + ) + (else + (set! (-> arg1 rot-syvel x) (* 6.0 (-> arg1 rot-syvel x))) + (set! (-> arg1 rot-syvel y) (* 6.0 (-> arg1 rot-syvel y))) + (set! (-> arg1 rot-syvel z) (* 6.0 (-> arg1 rot-syvel z))) + ) + ) + ;; this one gets stored in a separate rotvel3d. + (quaternion-zxy! (-> arg1 rotvel3d) (-> arg1 rot-syvel)) + 0 + (none) + ) + ) + +(defun sp-rotate-system ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 transformq)) + "Apply a rotation to the particle launching." + (let ((s5-0 (new 'stack-no-clear 'matrix))) + (let ((a1-1 (new 'stack-no-clear 'quaternion))) + ;; sparticle quaternions don't store w, so figure it out. + (let* ((v1-0 a1-1) + (a0-1 arg2) + (f0-0 (-> a0-1 quat x)) + (f1-0 (-> a0-1 quat y)) + (f3-0 (-> a0-1 quat z)) + ) + (set! (-> v1-0 x) f0-0) + (set! (-> v1-0 y) f1-0) + (set! (-> v1-0 z) f3-0) + (set! (-> v1-0 w) + (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))) + ) + ) + (quaternion->matrix s5-0 a1-1) + ) + ;; rotate, preserving z as usual + (vector3s-rotate*! + (the-as vector3s (-> arg0 launchrot)) + (the-as vector3s (-> arg0 launchrot)) + s5-0 + ) + (vector3s-rotate*! + (the-as vector3s (-> arg1 vel-sxvel)) + (the-as vector3s (-> arg1 vel-sxvel)) + s5-0 + ) + ;; also rotate acc if we would have done it previously. + (if (zero? (logand (sp-cpuinfo-flag use-global-acc) (-> arg1 flags))) + (vector3s-rotate*! + (the-as vector3s (-> arg1 acc)) + (the-as vector3s (-> arg1 acc)) + s5-0 + ) + ) + ) + 0 + (none) + ) + +(define-extern sp-launch-particles-var (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none)) ;; asm - ret not confirmed +(set! sp-launch-particles-var + (the (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none) + (__pc-get-mips2c "sp-launch-particles-var"))) + +;;;;;;;;;;;;;;; +;; enemy death +;;;;;;;;;;;;;;; + +;; for whatever reason the enemy death launch stuff is defined here. +;; it doesn't use the adgif cache. +;; but it's a nice example for how to set the + +(define *death-adgif* (the-as adgif-shader #f)) + +(defun sp-launch-particles-death ((arg0 sparticle-system) (arg1 sparticle-launcher) (arg2 sparticle-launchinfo)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf30 :class vf) + (vf31 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (.lvf vf30 (&-> arg2 launchrot quad)) + (let ((v1-0 #x437f0000)) + (.mov vf31 v1-0) + ) + + (let ((s5-0 (new 'stack-no-clear 'sprite-vec-data-2d)) + ;; get a particle, from the particle system + ;; this gets us a "cpuinfo", which is the state of a particle. + (gp-0 (sp-get-particle arg0 0 (the-as sparticle-launch-state #f))) + ) + (if (not gp-0) + ;; if it fails, give up. + (return 0) + ) + + (let* ((a1-2 (-> arg1 init-specs 0)) + ;; initialize the sprite fields. this is done to a temporary structure on the stack + ;; the death particle effect has some special initialization stuff below that will + ;; modify this data before setting the actual sprite data. + (a1-3 (sp-init-fields! + (&-> s5-0 x) + (the-as (inline-array sp-field-init-spec) a1-2) + (sp-field-id sprite-fields-start) + (sp-field-id sprite-fields-end) + #t + ) + ) + ) + + ;; initialize the cpu fields, this is the initial particle state. + (sp-init-fields! + (&-> gp-0 omega) + (the-as (inline-array sp-field-init-spec) a1-3) + (sp-field-id cpu-fields-start) + (sp-field-id cpu-fields-end) + #t + ) + ) + + ;; convert rotations + (set! (-> s5-0 matrix) 0) + (set! (-> s5-0 rot) (the float (sar (shl (the int (-> s5-0 rot)) 48) 48))) + + ;; convert color/position. + (.lvf vf4 (&-> s5-0 color quad)) + (.lvf vf5 (&-> s5-0 x-y-z-sx quad)) + (.min.x.vf vf4 vf4 vf31 :mask #b111) + (.add.vf vf5 vf5 vf30 :mask #b111) + (.svf (&-> s5-0 color quad) vf4) + (.svf (&-> s5-0 x-y-z-sx quad) vf5) + + (when (not *death-adgif*) + ;; first time we get here, set up the adgif shader. + (set! *death-adgif* (new 'static 'adgif-shader)) + (particle-adgif *death-adgif* (new 'static 'texture-id :index #x18 :page #x2)) + (set! (-> *death-adgif* alpha) (new 'static 'gs-miptbp :tbp1 #x48)) ;; I think this is actually an alpha? + ) + + ;; copy the death-adgif to the adgif of our particle + (let ((v1-14 (-> *death-adgif* quad 0 quad))) + (set! (-> gp-0 adgif quad 0 quad) v1-14) + ) + (let ((v1-16 (-> *death-adgif* quad 1 quad))) + (set! (-> gp-0 adgif quad 1 quad) v1-16) + ) + (let ((v1-18 (-> *death-adgif* quad 2 quad))) + (set! (-> gp-0 adgif quad 2 quad) v1-18) + ) + (let ((v1-20 (-> *death-adgif* quad 3 quad))) + (set! (-> gp-0 adgif quad 3 quad) v1-20) + ) + (let ((v1-22 (-> *death-adgif* quad 4 quad))) + (set! (-> gp-0 adgif quad 4 quad) v1-22) + ) + + ;; set up some color stuff. + (.lvf vf4 (&-> (-> *time-of-day-context* current-prt-color) quad)) + (.lvf vf5 (&-> s5-0 color quad)) + (.lvf vf6 (&-> gp-0 fade quad)) + (.mul.vf vf5 vf5 vf4 :mask #b111) + (.mul.vf vf6 vf6 vf4 :mask #b111) + (.svf (&-> s5-0 color quad) vf5) + (.svf (&-> gp-0 fade quad) vf6) + + ;; + (set! (-> gp-0 key) (the-as sparticle-launch-control 0)) + (set! (-> gp-0 binding) #f) + + ;; copy the sprite data + (let ((v1-26 (-> gp-0 sprite))) + (.lvf vf1 (&-> s5-0 x-y-z-sx quad)) + (.lvf vf2 (&-> s5-0 flag-rot-sy quad)) + (.lvf vf3 (&-> s5-0 color quad)) + (.svf (&-> v1-26 x-y-z-sx quad) vf1) + (.svf (&-> v1-26 flag-rot-sy quad) vf2) + (.sub.w.vf vf3 vf0 vf0 :mask #b1000) + (.svf (&-> v1-26 color quad) vf3) + ) + + ;; we're done! + (logior! (-> gp-0 flags) (sp-cpuinfo-flag ready-to-launch)) + (set! (-> gp-0 cache-alpha) (-> s5-0 a)) + + ;; I'm not really sure how the particles get launched from here yet. + ) + 0 + (none) + ) + ) + + +(defun sp-clear-queue () + "Launch all particles in the queue." + (let ((gp-0 *sp-launch-queue*)) + (when (> (-> gp-0 in-use) 0) + (dotimes (s5-0 (-> gp-0 in-use)) + (let ((v1-4 (-> gp-0 queue s5-0))) + (sp-launch-particles-var + (-> v1-4 sp-system) + (-> v1-4 sp-launcher) + (-> v1-4 pos) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + (set! (-> gp-0 in-use) 0) + 0 + ) + ) + 0 + (none) + ) + +(defun sp-relaunch-setup-fields ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) + "Reset fields of an existing particle" + (let ((a1-1 (-> arg1 init-specs 0)) + (s4-0 (logand (-> arg2 flags) (sp-cpuinfo-flag level0 level1))) + ) + (set! (-> arg2 next-launcher) (the-as basic 0)) + (cond + ((and (logtest? (-> arg2 flags) (sp-cpuinfo-flag bit12)) + (zero? (logand (-> arg2 flags) (sp-cpuinfo-flag aux-list))) + ) + (let ((f20-0 (-> arg3 r-g-b-a x)) + (f22-0 (-> arg3 r-g-b-a y)) + (f24-0 (-> arg3 r-g-b-a z)) + (f26-0 (-> arg2 fade x)) + (f28-0 (-> arg2 fade y)) + (f30-0 (-> arg2 fade z)) + ) + (set! (-> arg3 r-g-b-a x) 99999.0) + (set! (-> arg3 r-g-b-a y) 99999.0) + (set! (-> arg3 r-g-b-a z) 99999.0) + (set! (-> arg2 fade x) 99999.0) + (set! (-> arg2 fade y) 99999.0) + (set! (-> arg2 fade z) 99999.0) + (let ((a1-2 (sp-init-fields! + (-> arg3 x-y-z-sx) + (the-as (inline-array sp-field-init-spec) a1-1) + (sp-field-id sprite-fields-start) + (sp-field-id sprite-fields-end) + #f + ) + ) + ) + (sp-init-fields! + (&-> arg2 omega) + (the-as (inline-array sp-field-init-spec) a1-2) + (sp-field-id cpu-fields-start) + (sp-field-id cpu-fields-end) + #f + ) + ) + ;; clear all flags except for the level. + (logior! (-> arg2 flags) s4-0) + (if (logtest? (-> arg2 flags) (sp-cpuinfo-flag level1)) + (-> *level* level1) + (-> *level* level0) + ) + (let ((v1-16 (-> *time-of-day-context* current-prt-color))) + (if (= (-> arg3 r-g-b-a x) 99999.0) + (set! (-> arg3 r-g-b-a x) f20-0) + (set! (-> arg3 r-g-b-a x) (* (-> arg3 r-g-b-a x) (-> v1-16 x))) + ) + (if (= (-> arg3 r-g-b-a y) 99999.0) + (set! (-> arg3 r-g-b-a y) f22-0) + (set! (-> arg3 r-g-b-a y) (* (-> arg3 r-g-b-a y) (-> v1-16 y))) + ) + (if (= (-> arg3 r-g-b-a z) 99999.0) + (set! (-> arg3 r-g-b-a z) f24-0) + (set! (-> arg3 r-g-b-a z) (* (-> arg3 r-g-b-a z) (-> v1-16 z))) + ) + (if (= (-> arg2 fade x) 99999.0) + (set! (-> arg2 fade x) f26-0) + (set! (-> arg2 fade x) (* (-> arg2 fade x) (-> v1-16 x))) + ) + (if (= (-> arg2 fade y) 99999.0) + (set! (-> arg2 fade y) f28-0) + (set! (-> arg2 fade y) (* (-> arg2 fade y) (-> v1-16 y))) + ) + (if (= (-> arg2 fade z) 99999.0) + (set! (-> arg2 fade z) f30-0) + (set! (-> arg2 fade z) (* (-> arg2 fade z) (-> v1-16 z))) + ) + ) + ) + ) + (else + (let ((a1-3 (sp-init-fields! + (-> arg3 x-y-z-sx) + (the-as (inline-array sp-field-init-spec) a1-1) + (sp-field-id sprite-fields-start) + (sp-field-id sprite-fields-end) + #f + ) + ) + ) + (sp-init-fields! + (&-> arg2 omega) + (the-as (inline-array sp-field-init-spec) a1-3) + (sp-field-id cpu-fields-start) + (sp-field-id cpu-fields-end) + #f + ) + ) + ) + ) + ) + 0 + 0 + (none) + ) + +(defun sp-relaunch-particle-2d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) + "relaunch a 2d particle" + (sp-relaunch-setup-fields arg0 arg1 arg2 arg3) + (format #t "here we are... ~A~%" (logtest? (-> arg2 flags) (sp-cpuinfo-flag aux-list))) + (when (logtest? (-> arg2 flags) (sp-cpuinfo-flag aux-list)) + (set! (-> arg2 func) add-to-sprite-aux-list) + (set! (-> arg3 r-g-b-a w) 0.0) + (set! (-> arg2 fade w) 0.0) + (logclear! (-> arg2 flags) (sp-cpuinfo-flag bit2)) + ) + 0 + (none) + ) + +(defun sp-relaunch-particle-3d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) + "relaunch a 3d particle" + + ;; do all the 3d-specific stuff here, the general relaunch only does 2d fields. + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (let ((s4-0 (new 'stack-no-clear 'quaternion))) + (let* ((v1-0 s4-0) + (a2-1 arg3) + (f0-0 (-> a2-1 qx-qy-qz-sy x)) + (f1-0 (-> a2-1 qx-qy-qz-sy y)) + (f3-0 (-> a2-1 qx-qy-qz-sy z)) + ) + (set! (-> v1-0 x) f0-0) + (set! (-> v1-0 y) f1-0) + (set! (-> v1-0 z) f3-0) + (set! + (-> v1-0 w) + (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))) + ) + ) + (set! (-> arg3 qx-qy-qz-sy x) 0.0) + (set! (-> arg3 qx-qy-qz-sy y) 0.0) + (set! (-> arg3 qx-qy-qz-sy z) 0.0) + (sp-relaunch-setup-fields arg0 arg1 arg2 arg3) + (let ((a1-1 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'quaternion)) + ) + (set-vector! + a1-1 + (-> arg3 qx-qy-qz-sy x) + (-> arg3 qx-qy-qz-sy y) + (-> arg3 qx-qy-qz-sy z) + 1.0 + ) + (quaternion-zxy! s3-0 a1-1) + (cond + ((logtest? (sp-cpuinfo-flag left-multiply-quat) (-> arg2 flags)) + (quaternion*! s3-0 s4-0 s3-0) + ) + (else + (if (logtest? (sp-cpuinfo-flag right-multiply-quat) (-> arg2 flags)) + (quaternion*! s3-0 s3-0 s4-0) + ) + ) + ) + (cond + ((< (-> s3-0 w) 0.0) + (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s3-0 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg3 qx-qy-qz-sy quad) vf1) + ) + (else + (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s3-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg3 qx-qy-qz-sy quad) vf1) + ) + ) + ) + ) + (cond + (*sp-60-hz* + (set! (-> arg2 rot-syvel x) (* 5.0 (-> arg2 rot-syvel x))) + (set! (-> arg2 rot-syvel y) (* 5.0 (-> arg2 rot-syvel y))) + (set! (-> arg2 rot-syvel z) (* 5.0 (-> arg2 rot-syvel z))) + ) + (else + (set! (-> arg2 rot-syvel x) (* 6.0 (-> arg2 rot-syvel x))) + (set! (-> arg2 rot-syvel y) (* 6.0 (-> arg2 rot-syvel y))) + (set! (-> arg2 rot-syvel z) (* 6.0 (-> arg2 rot-syvel z))) + ) + ) + (quaternion-zxy! (-> arg2 rotvel3d) (-> arg2 rot-syvel)) + 0 + (none) + ) + ) + + + + + +;;;;;;;;;;;;;;;;;;;; +;; launch control +;;;;;;;;;;;;;;;;;;;; + +;; a launch-control is an instance of a particle effect group. it holds the definition and the state. +;; the launch-controls are always associated with a process. this allows the memory to be reclaimed once the +;; particles are despawned. + +(defmethod initialize sparticle-launch-control ((obj sparticle-launch-control) (arg0 sparticle-launch-group) (arg1 process)) + "start a particle effect." + (let ((s5-0 0)) + ;; init + (set! (-> obj group) arg0) + (set! (-> obj proc) arg1) + (set! (-> obj local-clock) 0) + (set! (-> obj fade) 1.0) + (set! (-> obj matrix) 0) + (set! (-> obj last-spawn-frame) + (+ (-> *display* real-actual-frame-counter) -2) + ) + (set! (-> obj last-spawn-time) 0) + + ;; iterate through the effects in the group + (dotimes (s3-0 (-> arg0 length)) + + (let* ((a0-2 (-> arg0 launcher s3-0)) ;; the group-item (definition of the effect) + (a1-2 (-> *part-id-table* (-> a0-2 launcher))) ;; the actual effect for the group item + (v1-9 (-> obj data s5-0)) ;; our state for this particular instance of this effect within the group. + ) + (when (nonzero? a1-2) + (set! (-> v1-9 group-item) a0-2) + (cond + ((= (-> a1-2 type) sparticle-launcher) + ;; init state + (set! (-> v1-9 accum) 0.0) + (set! (-> v1-9 spawn-time) + (the-as uint (+ *particle-300hz-timer* -30000)) + ) + (set! (-> v1-9 offset) (-> a0-2 offset)) + (set! (-> v1-9 randomize) (the-as uint 0)) + (cond + ((logtest? (-> a0-2 flags) (sp-group-item-flag start-dead)) + ;; if we aren't immediate + (logclear! (-> v1-9 flags) (sp-launch-state-flags launcher-active)) + (set! (-> v1-9 origin) #f) + (set! (-> v1-9 sprite3d) #f) + (set! (-> v1-9 sprite) #f) + ) + (else + (logior! (-> v1-9 flags) (sp-launch-state-flags launcher-active)) + ;; set the position now. + (set! (-> v1-9 origin) (-> obj center)) + (set! (-> v1-9 sprite3d) #f) + (set! (-> v1-9 sprite) #f) + ) + ) + (+! s5-0 1) + ) + (else + (format 0 "initialize called with non-particle-launcher~%") + ) + ) + ) + ) + ) + (set! (-> obj length) s5-0) + ) + 0 + (none) + ) + +(defmethod create-launch-control sparticle-launch-group ((obj sparticle-launch-group) (arg0 process)) + "create a launch-control to hold the state of the particles. stored on the process heap." + (let ((gp-0 (the-as object (new 'process 'sparticle-launch-control (-> obj length))))) + (when (zero? (the-as sparticle-launch-control gp-0)) + (go process-drawable-art-error "memory") + (set! gp-0 0) + (goto cfg-4) + ) + (initialize (the-as sparticle-launch-control gp-0) obj arg0) + (label cfg-4) + (the-as sparticle-launch-control gp-0) + ) + ) + +(defmethod kill-and-free-particles sparticle-launch-control ((obj sparticle-launch-control)) + "kill all the particles" + + ;; clear the flag. + (countdown (v1-0 (-> obj length)) + (let ((a0-3 (-> obj data v1-0))) + (logclear! (-> a0-3 flags) (sp-launch-state-flags particles-active)) + ) + ) + (set! (-> obj local-clock) 0) + (set! (-> obj fade) 1.0) + + ;; kill the particles (let them go back to the sparticle system.) + (kill-all-particles-with-key obj) + ;; release matrices + (if (> (-> obj matrix) 0) + (sprite-release-user-hvdf (-> obj matrix)) + ) + 0 + (none) + ) + +(defmethod kill-particles sparticle-launch-control ((obj sparticle-launch-control)) + "kill the particles, but don't clear flags or free hvdfs." + (kill-all-particles-with-key obj) + 0 + (none) + ) + +(defmethod is-visible? sparticle-launch-control ((obj sparticle-launch-control) (arg0 vector)) + "Is the effect visible?. arg0 is the offset of the effect" + (let* ((v1-0 (-> obj group)) + (f0-0 (-> v1-0 bounds w)) + ) + (cond + ((= f0-0 0.0) ;; visibility sphere has 0 size, just say yes always + #t + ) + ((nonzero? (-> obj matrix)) ;; I guess if we have an extra matrix, we can't figure it out? + #t + ) + (else + ;; sphere with offset + (let ((gp-1 (vector+! (new 'stack-no-clear 'vector) arg0 (the-as vector (-> v1-0 bounds))))) + (set! (-> gp-1 w) f0-0) + + ;; debug draw sphere + (if (and *display-actor-vis* + (or (not *display-actor-anim*) + (name= *display-actor-anim* (-> obj proc name)) + ) + ) + (add-debug-sphere + *display-actor-vis* + (bucket-id debug-draw0) + gp-1 + (-> gp-1 w) + (new 'static 'rgba :g #xff :a #x80) + ) + ) + + ;; can we see it? + (sphere-in-view-frustum? (the-as sphere gp-1)) + ) + ) + ) + ) + ) + + +(defmethod spawn sparticle-launch-control ((obj sparticle-launch-control) (arg0 vector)) + (set! (-> obj center quad) (-> arg0 quad)) + + ;; check if we are visible + (if (not (or (is-visible? obj arg0) + (logtest? (-> obj group flags) (sp-group-flag always-draw screen-space)) + ) + ) + (return (the-as object 0)) + ) + + (let ((s4-0 *particle-300hz-timer*) + (s5-0 (-> obj last-spawn-time)) + ) + + ;; weird stuff for frame counting + (let ((v1-8 (-> *display* real-actual-frame-counter))) + (if (!= v1-8 (+ (-> obj last-spawn-frame) 1)) + (set! s5-0 (- s4-0 (logand (the-as int (-> *sp-frame-time* x)) 255))) + ) + ) + (set! (-> obj last-spawn-frame) (-> *display* real-actual-frame-counter)) + (set! (-> obj last-spawn-time) s4-0) + (when (logtest? (-> obj group flags) (sp-group-flag use-local-clock)) + (set! s5-0 (-> obj local-clock)) + (+! (-> obj local-clock) (logand (the-as int (-> *sp-frame-time* x)) 255)) + (set! s4-0 (-> obj local-clock)) + ) + + (let ((f30-0 (vector-vector-distance arg0 (math-camera-pos))) + ;; hour mask + (s3-1 (ash 1 (if *time-of-day-proc* + (-> *time-of-day-proc* 0 hour) + 0 + ) + ) + ) + ) + (if (nonzero? (-> obj matrix)) ;; if we have an additional matrix, say we're at the camera so we always draw. + (set! f30-0 0.0) + ) + + ;; loop over particles in the group. + (let ((s2-1 (-> obj length))) + (while (begin + (label cfg-79) + (nonzero? s2-1) + ) + (+! s2-1 -1) + (let* ((a3-0 (-> obj data s2-1)) + (v1-29 (-> a3-0 group-item)) + (a1-4 (-> *part-id-table* (-> v1-29 launcher))) + ) + (when (and a1-4 + (nonzero? a1-4) + (logtest? (-> a3-0 flags) (sp-launch-state-flags launcher-active)) + ) + ;; we are active, and it is possible to launch. + (let ((f0-2 1.0)) + (if (!= (-> v1-29 falloff-to) 0.0) + (set! f0-2 (- 1.0 (/ f30-0 (-> v1-29 falloff-to)))) + ) + + ;; reject if bad type + (let ((a0-26 sparticle-launcher)) + (b! (!= (-> a1-4 type) a0-26) cfg-78 :delay (nop!)) + ) + + ;; ?? + (b! (zero? (logand (-> v1-29 flags) (sp-group-item-flag launch-asap))) + cfg-36 :delay (nop!) + ) + + (when (zero? (logand (-> a3-0 flags) (sp-launch-state-flags particles-active))) + ;; particles are not active, lets activate them. + (set! (-> a3-0 spawn-time) (the-as uint s4-0)) + (logior! (-> a3-0 flags) (sp-launch-state-flags particles-active)) + (if (< 0.0 f0-2) + (sp-launch-particles-var + (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) + *sp-particle-system-3d* + *sp-particle-system-2d* + ) + a1-4 + (-> a3-0 origin) + a3-0 + obj + f0-2 + ) + ) + ) + (b! #t cfg-77 :delay (nop!)) + + + (label cfg-36) + + ;; reject if bad time of day + (when (logtest? s3-1 (-> v1-29 hour-mask)) + 0 + (goto cfg-77) + ) + (when (not (or (= (-> v1-29 fade-after) 0.0) (< f30-0 (-> v1-29 fade-after)))) + 0 + (b! #t cfg-77 :delay (nop!)) + (set! v1-29 (the-as sparticle-group-item 0)) + ) + (b! (nonzero? (-> v1-29 period)) cfg-50) + (let ((f0-4 (* 0.2 (the float (- s4-0 s5-0)) f0-2))) + (b! #t cfg-72 :delay (nop!)) + (label cfg-50) + (let ((a2-5 (mod (+ s5-0 (-> obj data s2-1 offset)) (the-as int (-> v1-29 period)))) + (a0-56 (mod (the-as uint (+ s4-0 (-> obj data s2-1 offset))) (-> v1-29 period))) + (t0-2 (-> v1-29 length)) + ) + (set! f0-4 (cond + ((and (< a2-5 (the-as int t0-2)) (< a0-56 t0-2)) + (* 0.2 (the float (- s4-0 s5-0)) f0-2) + ) + ((and (< a2-5 (the-as int t0-2)) (>= a0-56 t0-2)) + (* 0.2 (the float (- t0-2 (the-as uint a2-5))) f0-2) + ) + ((and (>= a2-5 (the-as int t0-2)) (< a0-56 t0-2)) + (* 0.2 (the float a0-56) f0-2) + ) + (else + (when (zero? (logand (-> v1-29 flags) (sp-group-item-flag bit1))) + 0 + (goto cfg-77) + ) + (when (< (the-as uint (- s4-0 (the-as int (-> obj data s2-1 spawn-time)))) + (-> v1-29 period) + ) + 0 + (goto cfg-77) + ) + (set! (-> obj data s2-1 offset) (- (-> v1-29 period) a0-56)) + (* 0.2 (the float (- s4-0 s5-0)) f0-2) + ) + ) + ) + ) + (label cfg-72) + (set! (-> a3-0 spawn-time) (the-as uint s4-0)) + (logior! (-> a3-0 flags) (sp-launch-state-flags particles-active)) + (if (< 0.0 f0-4) + (sp-launch-particles-var + (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) + *sp-particle-system-3d* + *sp-particle-system-2d* + ) + a1-4 + (-> a3-0 origin) + a3-0 + obj + f0-4 + ) + ) + ) + ) + (label cfg-77) + (b! #t cfg-79 :delay (nop!)) + (label cfg-78) + (format 0 "spawn called for non-sparticle-launcher~%") + ) + ) + ) + ) + ) + ) + 0 + ) + + +;;;;;;;;;;;;;;;;;;;;;;; +;; tracking callbacks +;;;;;;;;;;;;;;;;;;;;;;; + +;; these are commonly used callbacks for making particles follow an object + +(defun sparticle-track-root ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 vector)) + "track the root of the process drawable" + (let ((v1-3 (-> (the-as process-drawable (-> arg1 key proc)) root trans))) + (set! (-> arg2 x) (-> v1-3 x)) + (set! (-> arg2 y) (-> v1-3 y)) + (set! (-> arg2 z) (-> v1-3 z)) + ) + 0 + (none) + ) + + +(defun sparticle-track-root-prim ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 vector)) + "track the root of the collision geometry (must use collide-shape for root)" + (let ((v1-4 (-> (the-as collide-shape + (-> (the-as process-drawable (-> arg1 key proc)) root) + ) + root-prim + prim-core + ) + ) + ) + (set! (-> arg2 x) (-> v1-4 world-sphere x)) + (set! (-> arg2 y) (-> v1-4 world-sphere y)) + (set! (-> arg2 z) (-> v1-4 world-sphere z)) + ) + 0 + (none) + ) + + +;;;;;;;;;;;;;;;;;;;;; +;; birth funcs +;;;;;;;;;;;;;;;;;;;;; + + +(defun birth-func-copy-rot-color ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) (arg3 sparticle-launcher) (arg4 sparticle-launch-state)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (let ((s5-0 (-> arg4 sprite))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (let* ((v1-0 arg2) + (f0-0 (-> v1-0 qx-qy-qz-sy x)) + (f1-0 (-> v1-0 qx-qy-qz-sy y)) + (f3-0 (-> v1-0 qx-qy-qz-sy z)) + ) + (set! (-> s4-0 x) f0-0) + (set! (-> s4-0 y) f1-0) + (set! (-> s4-0 z) f3-0) + (set! (-> s4-0 w) + (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))) + ) + ) + (quaternion-rotate-y! + (the-as quaternion s4-0) + (the-as quaternion s4-0) + (-> s5-0 sprite rot) + ) + (let ((v1-3 arg2)) + (cond + ((< (-> s4-0 w) 0.0) + (.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-3 qx-qy-qz-sy quad) vf1) + ) + (else + (.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-3 qx-qy-qz-sy quad) vf1) + ) + ) + ) + ) + (set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r)) + (set! (-> arg2 r-g-b-a y) (-> s5-0 sprite g)) + (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b)) + ) + 0 + (none) + ) + ) + + +(define *global-toggle* 0) + +(defun birth-func-copy2-rot-color ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) (arg3 sparticle-launcher) (arg4 sparticle-launch-state)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (let ((s5-0 (-> arg4 sprite))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (let* ((v1-0 arg2) + (f0-0 (-> v1-0 qx-qy-qz-sy x)) + (f1-0 (-> v1-0 qx-qy-qz-sy y)) + (f3-0 (-> v1-0 qx-qy-qz-sy z)) + ) + (set! (-> s4-0 x) f0-0) + (set! (-> s4-0 y) f1-0) + (set! (-> s4-0 z) f3-0) + (set! (-> s4-0 w) + (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))) + ) + ) + (let ((a1-1 (new-stack-vector0))) + (set! (-> a1-1 y) (-> s5-0 sprite rot)) + (set! (-> a1-1 z) + (if (logtest? *global-toggle* 1) + (the float (sar (shl (the int (- 16384.0 (-> s5-0 sprite sx))) 48) 48)) + (the float (sar (shl (the int (+ 16384.0 (-> s5-0 sprite sx))) 48) 48)) + ) + ) + (quaternion-zxy! (the-as quaternion s4-0) a1-1) + ) + (let ((v1-14 arg2)) + (cond + ((< (-> s4-0 w) 0.0) + (.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-14 qx-qy-qz-sy quad) vf1) + ) + (else + (.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-14 qx-qy-qz-sy quad) vf1) + ) + ) + ) + ) + (set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r)) + (set! (-> arg2 r-g-b-a y) (-> s5-0 sprite g)) + (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b)) + ) + (set! *global-toggle* (+ *global-toggle* 1)) + 0 + (none) + ) + ) + +(defun birth-func-copy-omega-to-z ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) (arg3 sparticle-launcher) (arg4 sparticle-launch-state)) + (set! (-> arg2 qx-qy-qz-sy z) (+ -16384.0 (-> arg1 omega))) + (set! (-> arg1 next-time) (-> arg4 sprite next-time)) + (set! (-> arg2 x-y-z-sx w) (* 163.85638 (the float (-> arg4 sprite next-time)))) + 0 + (none) + ) + +(defun birth-func-random-next-time ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) (arg3 sparticle-launcher) (arg4 sparticle-launch-state)) + (set! (-> arg1 next-time) (the-as uint (the int (rand-vu-float-range 0.0 (-> arg1 user-float))))) + 0 + (none) + ) \ No newline at end of file diff --git a/goal_src/engine/sparticle/sparticle.gc b/goal_src/engine/sparticle/sparticle.gc index 77365e1d35..69675d6e15 100644 --- a/goal_src/engine/sparticle/sparticle.gc +++ b/goal_src/engine/sparticle/sparticle.gc @@ -5,8 +5,47 @@ ;; name in dgo: sparticle ;; dgos: GAME, ENGINE -;; TODO - for particle code -(define-extern sp-kill-particle (function sparticle-system sparticle-cpuinfo none)) + +;; This file contains the interface between sparticle and sprite as well as the actual particle updates. + +;;;;;;;;;;;;;;;;;;;;;;; +;; basic methods +;;;;;;;;;;;;;;;;;;;;;;; + +(defmethod print sparticle-cpuinfo ((obj sparticle-cpuinfo)) + (format #t "~%") + (dotimes (s5-0 16) + (format #t "~D:~F~%" s5-0 (the-as float (-> obj data s5-0))) + ) + (format #t "TIMER:~D~%" (-> obj timer)) + (the-as sparticle-cpuinfo (format #t "FLAGS:~X~%" (-> obj flags))) + ) + +(defun sp-particle-copy! ((arg0 sparticle-cpuinfo) (arg1 sparticle-cpuinfo)) + "copy some of the particle state." + (let ((v1-1 (-> arg1 sprite x-y-z-sx quad))) + (set! (-> arg0 sprite x-y-z-sx quad) v1-1) + ) + (let ((v1-3 (-> arg1 sprite flag-rot-sy quad))) + (set! (-> arg0 sprite flag-rot-sy quad) v1-3) + ) + (let ((v1-5 (-> arg1 sprite color quad))) + (set! (-> arg0 sprite color quad) v1-5) + ) + (dotimes (v1-6 10) + (set! (-> arg0 adgif prims v1-6) (-> arg1 adgif prims v1-6)) + ) + (set! (-> arg0 vel-sxvel quad) (-> arg1 vel-sxvel quad)) + (set! (-> arg0 rot-syvel quad) (-> arg1 rot-syvel quad)) + (set! (-> arg0 fade quad) (-> arg1 fade quad)) + (set! (-> arg0 acc quad) (-> arg1 acc quad)) + (set! (-> arg0 friction) (-> arg1 friction)) + (set! (-> arg0 timer) (-> arg1 timer)) + (set! (-> arg0 flags) (-> arg1 flags)) + (set! (-> arg0 user-float) (-> arg1 user-float)) + (set! (-> arg0 func) (-> arg1 func)) + (none) + ) (defmethod new sparticle-system ((allocation symbol) @@ -17,81 +56,679 @@ (arg3 pointer) (arg4 (inline-array adgif-shader)) ) - (let - ((gp-0 - (object-new allocation type-to-make (the-as int (-> type-to-make size))) - ) - ) - (let* ((v1-3 (/ (+ arg0 63) 64)) - (a0-2 (/ (+ arg1 63) 64)) - (a1-2 (* v1-3 64)) - (a2-2 (* a0-2 64)) - (s2-1 (+ v1-3 a0-2)) - (s5-1 (+ a1-2 a2-2)) + "allocate a particle system. + arg0: number of group0's + arg1: number of group1's + arg2: is 3d? + arg3: pointer to sprite allocations + arg4: pointer to adgif allocation" + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (let* ((v1-3 (/ (+ arg0 63) 64)) ;; num blocks + (a0-2 (/ (+ arg1 63) 64)) + (a1-2 (* v1-3 64)) ;; length + (a2-2 (* a0-2 64)) + (s2-1 (+ v1-3 a0-2)) ;; total blocks + (s5-1 (+ a1-2 a2-2)) ;; total length + ) + (set! (-> gp-0 blocks 0) v1-3) + (set! (-> gp-0 length 0) a1-2) + (set! (-> gp-0 num-alloc 0) 0) + (set! (-> gp-0 blocks 1) a0-2) + (set! (-> gp-0 length 1) a2-2) + (set! (-> gp-0 num-alloc 1) 0) + (set! (-> gp-0 is-3d) arg2) + ;; per block + (set! (-> gp-0 alloc-table) (the-as (pointer uint64) (malloc 'global (* s2-1 8)))) + ;; per particle + (set! (-> gp-0 cpuinfo-table) (the-as (inline-array sparticle-cpuinfo) (malloc 'global (* 144 s5-1)))) + ;; sprite data + (set! (-> gp-0 vecdata-table) arg3) + ;; adgifs + (set! (-> gp-0 adgifdata-table) arg4) + (dotimes (v1-5 s2-1) + (set! (-> gp-0 alloc-table v1-5) (the-as uint -1)) + ) + (dotimes (s4-1 s5-1) + (set! (-> gp-0 cpuinfo-table s4-1 valid) #f) + ;; link cpuinfos to sprite data + (set! (-> gp-0 cpuinfo-table s4-1 sprite) + (the-as sprite-vec-data-2d (&+ (-> gp-0 vecdata-table) (* 48 s4-1))) + ) + ;; and to adgif + (set! (-> gp-0 cpuinfo-table s4-1 adgif) (-> gp-0 adgifdata-table s4-1)) + ;; default init adgifs. + (adgif-shader<-texture-simple! + (-> gp-0 adgifdata-table s4-1) + (the-as texture #f) ) - (set! (-> gp-0 blocks 0) v1-3) - (set! (-> gp-0 length 0) (the-as uint a1-2)) - (set! (-> gp-0 num-alloc 0) (the-as uint 0)) - (set! (-> gp-0 blocks 1) a0-2) - (set! (-> gp-0 length 1) (the-as uint a2-2)) - (set! (-> gp-0 num-alloc 1) (the-as uint 0)) - (set! (-> gp-0 is-3d) arg2) - (set! - (-> gp-0 alloc-table) - (the-as (pointer uint64) (malloc 'global (* s2-1 8))) - ) - (set! - (-> gp-0 cpuinfo-table) - (the-as (inline-array sparticle-cpuinfo) (malloc 'global (* 144 s5-1))) - ) - (set! (-> gp-0 vecdata-table) arg3) - (set! (-> gp-0 adgifdata-table) arg4) - (dotimes (v1-5 s2-1) - (set! (-> gp-0 alloc-table v1-5) (the-as uint -1)) - ) - (dotimes (s4-1 s5-1) - (set! (-> gp-0 cpuinfo-table s4-1 valid) #f) - (set! - (-> gp-0 cpuinfo-table s4-1 sprite) - (the-as sprite-vec-data-2d (&+ (-> gp-0 vecdata-table) (* 48 s4-1))) + (set! (-> gp-0 adgifdata-table s4-1 alpha) + (new 'static 'gs-miptbp :tbp1 #x48) + ) + ) ) - (set! (-> gp-0 cpuinfo-table s4-1 adgif) (-> gp-0 adgifdata-table s4-1)) - (adgif-shader<-texture-simple! - (-> gp-0 adgifdata-table s4-1) - (the-as texture #f) - ) - (set! - (-> gp-0 adgifdata-table s4-1 alpha) - (new 'static 'gs-miptbp :tbp1 #x48) - ) - ) + gp-0 ) - gp-0 - ) ) + +;;;;;;;;;;;;;;;;;;;; +;; particle systems +;;;;;;;;;;;;;;;;;;;; + +;; note: these constants must match the sizes of the sprite arrays. + (define *sp-particle-system-2d* - (new - 'global - 'sparticle-system - 1920 - 128 - #f - (-> *sprite-array-2d* vec-data) - (-> *sprite-array-2d* adgif-data) - ) - ) + (new 'global 'sparticle-system 1920 128 #f (-> *sprite-array-2d* vec-data) (-> *sprite-array-2d* adgif-data)) + ) (define *sp-particle-system-3d* - (new - 'global - 'sparticle-system - 256 - 0 - #t - (-> *sprite-array-3d* vec-data) - (-> *sprite-array-3d* adgif-data) + (new 'global 'sparticle-system 256 0 #t (-> *sprite-array-3d* vec-data) (-> *sprite-array-3d* adgif-data)) + ) + + + +;;;;;;;;;;;;;;;;;;;; +;; alloc and block +;;;;;;;;;;;;;;;;;;;; + +(defun sp-get-block-size ((arg0 sparticle-system) (arg1 int)) + "get the index of the highest used block for the given group (0 or 1)" + (let ((v0-0 0)) + (let ((v1-0 0) + (a2-0 (-> arg0 blocks 0)) + ) + (when (= arg1 1) + (set! v1-0 a2-0) + (set! a2-0 (-> arg0 blocks 1)) + ) + (dotimes (a1-3 a2-0) + (if (!= (-> arg0 alloc-table (+ v1-0 a1-3)) -1) + (set! v0-0 (+ a1-3 1)) + ) + ) + ) + v0-0 + ) + ) + +(defun sp-get-approx-alloc-size ((arg0 sparticle-system) (arg1 int)) + "get approximately the amount of sprite memory used." + ;; this is just (* 64 (sp-get-block-size arg0 arg1)) + (let ((a3-0 arg1) + (v1-0 0) + ) + (let ((a1-1 0) + (a2-0 (-> arg0 blocks 0)) + ) + (when (= a3-0 1) + (set! a1-1 a2-0) + (set! a2-0 (-> arg0 blocks 1)) + ) + (dotimes (a3-3 a2-0) + (if (!= (-> arg0 alloc-table (+ a1-1 a3-3)) -1) + (set! v1-0 (+ a3-3 1)) + ) + ) + ) + (* v1-0 64) + ) + ) + +(defun sp-free-particle ((arg0 sparticle-system) (arg1 int) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-2d)) + "free a particle" + + ;; clear flags on our launch state. + (if (and (-> arg2 binding) (nonzero? (-> arg2 binding))) + (logclear! (-> arg2 binding flags) + (sp-launch-state-flags launcher-active particles-active) + ) + ) + + ;; clear the bit indicating that we're alive. + (let ((v1-6 (/ arg1 64)) + (t0-4 (logand arg1 63)) + ) + (logior! (-> arg0 alloc-table v1-6) (ash 1 t0-4)) ) + + ;; decrease alloc count for the appropriate group + (if (< arg1 (-> arg0 length 0)) + (+! (-> arg0 num-alloc 0) -1) + (+! (-> arg0 num-alloc 1) -1) + ) + (set! (-> arg2 valid) #f) + (set! (-> arg3 a) 0.0) + 0 + (none) + ) + +(defun sp-get-particle ((arg0 sparticle-system) (arg1 int) (arg2 sparticle-launch-state)) + "alloc a particle" + (local-vars + (a2-3 int) + (a2-4 int) + (a2-5 int) + (a2-6 int) + (a2-7 int) + (a2-8 int) + (t1-16 int) + (t1-17 int) + (t1-18 int) + (t1-19 int) + (t1-20 int) + (t3-5 int) + ) + (let ((v1-0 0) + (t0-0 (-> arg0 blocks 0)) + (a3-0 0) + ) + (when (= arg1 1) + (set! v1-0 t0-0) + (set! t0-0 (-> arg0 blocks 1)) + ) + + ;; this adds a moving offset to the allocation system. I'm not sure why. + (when arg2 + (set! a3-0 (the-as int (-> arg2 randomize))) + (+! (-> arg2 randomize) 1) + (when (= (-> arg2 randomize) t0-0) + (set! (-> arg2 randomize) (the-as uint 0)) + 0 + ) + ) + + ;; find the earliest free. + (dotimes (a2-1 t0-0) + (when (nonzero? (-> arg0 alloc-table (+ v1-0 a3-0))) + (let ((a2-2 0) + (t1-15 (-> arg0 alloc-table (+ v1-0 a3-0))) + (t0-4 (* (+ v1-0 a3-0) 64)) + ) + 0 + 0 + (let ((t2-4 (shl t1-15 32)) + (t3-0 (+ a2-2 32)) + ) + (.movn t1-16 t2-4 t2-4 t1-15) + (.movz a2-3 t3-0 t2-4 a2-2) + ) + (let ((t2-5 (shl t1-16 16)) + (t3-1 (+ a2-3 16)) + ) + (.movn t1-17 t2-5 t2-5 t1-16) + (.movz a2-4 t3-1 t2-5 a2-3) + ) + (let ((t2-6 (* t1-17 256)) + (t3-2 (+ a2-4 8)) + ) + (.movn t1-18 t2-6 t2-6 t1-17) + (.movz a2-5 t3-2 t2-6 a2-4) + ) + (let ((t2-7 (* t1-18 16)) + (t3-3 (+ a2-5 4)) + ) + (.movn t1-19 t2-7 t2-7 t1-18) + (.movz a2-6 t3-3 t2-7 a2-5) + ) + (let ((t2-8 (* t1-19 4)) + (t3-4 (+ a2-6 2)) + ) + (.movn t1-20 t2-8 t2-8 t1-19) + (.movz a2-7 t3-4 t2-8 a2-6) + (let ((t1-21 (* t1-20 2)) + (t2-9 (+ a2-7 1)) + ) + (.movn t3-5 t1-21 t1-21 t3-4) + (.movz a2-8 t2-9 t1-21 a2-7) + ) + ) + ;; mark as allocated + (let ((t0-5 (+ t0-4 a2-8))) + (set! (-> arg0 alloc-table (+ v1-0 a3-0)) + (logxor (-> arg0 alloc-table (+ v1-0 a3-0)) (the-as uint (ash 1 a2-8))) + ) + ;; update group's alloc count + (+! (-> arg0 num-alloc arg1) 1) + ;; return it! + (let ((v1-9 (-> arg0 cpuinfo-table t0-5))) + (set! (-> v1-9 valid) #t) + (return v1-9) + ) + ) + ) + ) + (+! a3-0 1) + (when (= a3-0 t0-0) + ;; wrap + (set! a3-0 0) + (format #t "wrapped!!~%") + ) + ) + ) + + (the-as sparticle-cpuinfo #f) + ) + +(defun sp-kill-particle ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) + "kill the given particle" + (cond + ;; modified to check the end of the spad too. + ((in-scratchpad? arg1) ;;(>= (the-as int arg1) #x70000000) ;; TODO PC port + ;; if in the sratchpad, just set the timer to 0. + (set! (-> arg1 timer) 0) + 0 + ) + (else + (let ((a2-1 (/ (the-as int (- (the-as uint arg1) (the-as uint (-> arg0 cpuinfo-table 0)))) 144))) + (when (or (< a2-1 0) (>= a2-1 (+ (-> arg0 length 0) (-> arg0 length 1)))) + ;; invalid location for particle, error + (format 0 "Tried to release particle ~D~%" a2-1) + (return #f) + ) + ;; free it. + (sp-free-particle arg0 a2-1 arg1 (-> arg1 sprite)) + ) + ) + ) + #t + (none) + ) + + +;;;;;;;;;;;;;;;; +;; effects +;;;;;;;;;;;;;;;; + +(defun sp-orbiter ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (let* ((f2-0 (-> arg1 omega)) + (f0-0 (-> arg1 radius)) + (f4-0 (-> arg1 vel-sxvel x)) + (f24-0 (-> arg1 vel-sxvel y)) + (f1-0 (-> arg1 vel-sxvel z)) + (f3-0 (-> *sp-frame-time* y)) + (f28-0 (+ f2-0 (* f4-0 f3-0))) + ) + (set! (-> arg1 omega) f28-0) + (let ((f30-0 (+ f0-0 (* f1-0 f3-0)))) + (set! (-> arg1 radius) f30-0) + (let ((f26-0 (sin f28-0)) + (f28-1 (cos f28-0)) + (f22-0 (sin (* 0.5 f24-0))) + (f0-5 (cos (* 0.5 f24-0))) + (a1-1 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + ) + (let ((s3-0 (new 'stack-no-clear 'matrix))) + (set-vector! a1-1 (* f22-0 f28-1) 0.0 (* f22-0 f26-0) f0-5) + (quaternion*! + (-> arg1 rotvel3d) + (the-as quaternion a1-1) + (-> arg1 rotvel3d) + ) + (quaternion-normalize! (-> arg1 rotvel3d)) + (set-vector! s4-0 (* f26-0 f30-0) 0.0 (* f28-1 f30-0) 1.0) + (quaternion->matrix s3-0 (-> arg1 rotvel3d)) + (vector-matrix*! s4-0 s4-0 s3-0) + ) + (let ((v1-3 (the-as object (-> arg1 user-float)))) + (set! (-> arg2 x) (+ (-> s4-0 x) (-> (the-as sprite-vec-data-2d v1-3) x))) + (set! (-> arg2 y) (+ (-> s4-0 y) (-> (the-as sprite-vec-data-2d v1-3) y))) + (set! (-> arg2 z) (+ (-> s4-0 z) (-> (the-as sprite-vec-data-2d v1-3) z))) + ) + ) + ) + ) + 0 + (none) + ) + + +;;;;;;;;;;;;;;;;;;;;; +;; particle update +;;;;;;;;;;;;;;;;;;;;; + +;; TODO sp-process-block-2d +;; TODO sp-process-block-3d +(define-extern sp-process-block-3d (function sparticle-system int int int int symbol none)) +(set! sp-process-block-3d (the (function sparticle-system int int int int symbol none) + (__pc-get-mips2c "sp-process-block-3d"))) +(define-extern sp-process-block-2d (function sparticle-system int int int int symbol none)) +(set! sp-process-block-2d (the (function sparticle-system int int int int symbol none) + (__pc-get-mips2c "sp-process-block-2d"))) + + +(defun sp-copy-to-spr ((arg0 int) (arg1 pointer) (arg2 int)) + ;; modified to use fake spad + (let ((a2-1 (/ (+ arg2 15) 16))) + (__mem-move (&+ (scratchpad-start) arg0) arg1 (the uint (* a2-1 16))) + ;; (dma-send-to-spr-no-flush (the-as uint arg0) (the-as uint arg1) (the-as uint a2-1) #t) + ) + 0 + (none) + ) + +(defun sp-copy-from-spr ((arg0 int) (arg1 pointer) (arg2 int)) + ;; modified to use fake spad. + (let ((a2-1 (/ (+ arg2 15) 16))) + (__mem-move arg1 (&+ (scratchpad-start) arg0) (the uint (* a2-1 16))) + ;;(dma-send-from-spr-no-flush (the-as uint arg1) (the-as uint arg0) (the-as uint a2-1) #t) + ) + 0 + (none) + ) + +;; TODO memcpy (unused) + +; (defun sp-process-block ((arg0 sparticle-system) (arg1 int) (arg2 sprite-array-2d) (arg3 int)) +; "update the given block of particles" +; (local-vars +; (sv-16 int) +; (sv-32 int) +; (sv-80 int) +; (sv-96 int) +; ) +; (let ((s3-0 16) +; (s2-0 (* 144 arg3)) +; (s5-0 (* 48 arg3)) +; ) +; (set! sv-32 (* 80 arg3)) +; (let ((s1-0 (+ s3-0 s2-0))) +; (set! sv-16 (+ s1-0 s5-0)) +; (sp-copy-to-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) +; (sp-copy-to-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) +; (let ((t9-2 sp-copy-to-spr) +; (a1-7 (-> arg0 adgifdata-table arg1)) +; ) +; (t9-2 sv-16 (the-as pointer a1-7) sv-32) +; ) +; (set! sv-80 (+ (the int (scratchpad-start)) s3-0)) ;; spad +; (set! sv-96 (+ (the int (scratchpad-start)) s1-0)) ;; spad +; (cond +; ((-> arg0 is-3d) +; (sp-process-block-3d arg0 sv-80 sv-96 arg1 arg3 (paused?)) +; ) +; (else +; (sp-process-block-2d arg0 sv-80 sv-96 arg1 arg3 (paused?)) +; ) +; ) +; (sp-copy-from-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) +; (sp-copy-from-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) +; ) +; ) + +; ; (dotimes (i arg3) +; ; (let ((cpuinfo (-> arg0 cpuinfo-table (+ i arg1)))) +; ; (when (and cpuinfo (-> cpuinfo valid)) +; ; (inspect cpuinfo) +; ; (inspect (-> cpuinfo sprite r-g-b-a)) +; ; ) +; ; ) +; ; ) +; 0 +; (none) +; ) + +(defun sp-process-block ((arg0 sparticle-system) (arg1 int) (arg2 sprite-array-2d) (arg3 int)) + "update the given block of particles" + (local-vars + (sv-16 int) + (sv-32 int) + (sv-80 int) + (sv-96 int) + ) + (let ((s3-0 16) + (s2-0 (* 144 arg3)) + (s5-0 (* 48 arg3)) + ) + (set! sv-32 (* 80 arg3)) + (let ((s1-0 (+ s3-0 s2-0))) + (set! sv-16 (+ s1-0 s5-0)) + ; (sp-copy-to-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) + ; (sp-copy-to-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) + ; (let ((t9-2 sp-copy-to-spr) + ; (a1-7 (-> arg0 adgifdata-table arg1)) + ; ) + ; (t9-2 sv-16 (the-as pointer a1-7) sv-32) + ; ) + (set! sv-80 (the-as int (-> arg0 cpuinfo-table arg1))) + (set! sv-96 (the-as int (&+ (-> arg0 vecdata-table) (* 48 arg1)))) + ; (set! sv-80 (+ (the int (scratchpad-start)) s3-0)) ;; spad + ; (set! sv-96 (+ (the int (scratchpad-start)) s1-0)) ;; spad + (cond + ((-> arg0 is-3d) + (sp-process-block-3d arg0 sv-80 sv-96 arg1 arg3 (paused?)) + ) + (else + (sp-process-block-2d arg0 sv-80 sv-96 arg1 arg3 (paused?)) + ) + ) + ; (sp-copy-from-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) + ; (sp-copy-from-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) + ) + ) + + ; (dotimes (i arg3) + ; (let ((cpuinfo (-> arg0 cpuinfo-table (+ i arg1)))) + ; (when (and cpuinfo (-> cpuinfo valid)) + ; (inspect cpuinfo) + ; (inspect (-> cpuinfo sprite r-g-b-a)) + ; ) + ; ) + ; ) + 0 + (none) + ) + +(defun sp-process-particle-system ((arg0 sparticle-system) (arg1 int) (arg2 sprite-array-2d)) + "update an entire particle system." + (let* ((v1-0 16) + (s1-0 (/ (- #x4000 v1-0) 272)) ;; offset in spad of vecdata, max sprite data in spad + (s3-0 0) ;; mem offset + (s4-0 (sp-get-approx-alloc-size arg0 arg1)) ;; remaining size. + ) + ;; group 1 starts after group 0 + (if (= arg1 1) + (set! s3-0 (* (-> arg0 blocks 0) 64)) + ) + (set! (-> arg2 num-valid arg1) s4-0) + ;; flush before processing + (flush-cache 0) + (while (>= s4-0 s1-0) ;; there are full blocks remaining... + (sp-process-block arg0 s3-0 arg2 s1-0) ;; process it + (set! s4-0 (- s4-0 s1-0)) + (+! s3-0 s1-0) ;; next data + ) + ;; if there's anything leftover, don't forget that. + (if (> s4-0 0) + (sp-process-block arg0 s3-0 arg2 s4-0) + ) + ) + 0 + (none) + ) + +(define-perm *particles-flag* symbol #t) + +(defun forall-particles-with-key-runner ((arg0 sparticle-launch-control) (arg1 (function sparticle-system sparticle-cpuinfo none)) (arg2 sparticle-system)) + "call the given function on all particles with the given key (arg0)" + (local-vars (sv-16 int)) + (let ((s3-0 (the-as object (-> arg2 cpuinfo-table 0))) + (s2-0 (&+ (-> arg2 vecdata-table) 0)) + (s1-0 (+ (-> arg2 blocks 0) (-> arg2 blocks 1))) + ) + (dotimes (s0-0 s1-0) ;; loop over blocks + (cond + ((!= (-> arg2 alloc-table s0-0) -1) ;; block has something allocated. + (set! sv-16 0) + (while (< sv-16 64) + (if (and (-> (the-as sparticle-cpuinfo s3-0) valid) ;; is allocated + (= (-> (the-as sparticle-cpuinfo s3-0) key) arg0) ;; matches the key + ) + (arg1 arg2 (the-as sparticle-cpuinfo s3-0)) ;; run the callback! + ) + (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 1)) ;; next cpu + (&+! s2-0 48) ;; next vec + (set! sv-16 (+ sv-16 1)) ;; next idx in block + ) + ) + (else + ;; skip the whole block! + (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 64)) + (&+! s2-0 3072) + ) + ) + ) + ) + 0 + (none) + ) + +(defun forall-particles-with-key ((arg0 sparticle-launch-control) (arg1 (function sparticle-system sparticle-cpuinfo none)) (arg2 symbol) (arg3 symbol)) + "call the given function on all particles with the given key. arg2 is 2d, arg3 is 3d." + (if arg2 + (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-2d*) + ) + (if arg3 + (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-3d*) + ) + 0 + (none) + ) + + +(defun sparticle-kill-it ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) + "kill a particle without freeing it." + (set! (-> arg1 timer) 0) ;; advance timer to zero + (set! (-> arg1 func) (the-as basic 0)) ;; don't let the callback run and save the timer + (when (and (-> arg1 binding) (nonzero? (-> arg1 binding))) + ;; kill the launcher too. + (logclear! (-> arg1 binding flags) + (sp-launch-state-flags launcher-active particles-active) + ) + ;; and forget it, I guess it could be unloaded + (set! (-> arg1 binding) #f) + ) + 0 + (none) + ) + +(defun sparticle-kill-it-level0 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) + "kill all particles belonging to level 0" + (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level0)) + (sparticle-kill-it arg0 arg1) + ) + 0 + (none) + ) + +(defun sparticle-kill-it-level1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) + "kill all particles belonging to level 1." + (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level1)) + (sparticle-kill-it arg0 arg1) + ) + 0 + (none) + ) + +(defun sparticle-60-to-50 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 pointer)) + "convert from 60hz to 50hz particles" + (let ((gp-0 (-> arg1 rotvel3d)) + (s5-0 (new 'stack-no-clear 'quaternion)) + ) + (vector-angle<-quaternion! (the-as vector s5-0) gp-0) + (set! (-> s5-0 w) (* 12516.455 (-> s5-0 w))) + (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w)) + ) + 0 + (none) + ) + +(defun sparticle-50-to-60 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 pointer)) + "convert from 50hz to 60hz particles" + (let ((gp-0 (-> arg1 rotvel3d)) + (s5-0 (new 'stack-no-clear 'quaternion)) + ) + (vector-angle<-quaternion! (the-as vector s5-0) gp-0) + (set! (-> s5-0 w) (* 8691.982 (-> s5-0 w))) + (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w)) + ) + 0 + (none) + ) + +(defun kill-all-particles-with-key ((arg0 sparticle-launch-control)) + (forall-particles-with-key arg0 sparticle-kill-it #t #t) + 0 + (none) + ) + + +(defun forall-particles-runner ((arg0 (function sparticle-system sparticle-cpuinfo pointer none)) (arg1 sparticle-system)) + "run function on all particles in the system." + (let ((s4-0 (the-as object (-> arg1 cpuinfo-table 0))) + (s3-0 (&+ (-> arg1 vecdata-table) 0)) + (s2-0 (+ (-> arg1 blocks 0) (-> arg1 blocks 1))) + ) + (dotimes (s1-0 s2-0) + (cond + ((!= (-> arg1 alloc-table s1-0) -1) + (dotimes (s0-0 64) + (if (-> (the-as sparticle-cpuinfo s4-0) valid) + (arg0 arg1 (the-as sparticle-cpuinfo s4-0) s3-0) + ) + (set! s4-0 (+ (the-as uint s4-0) 144)) + (&+! s3-0 48) + ) + ) + (else + (set! s4-0 (&+ (the-as pointer s4-0) 9216)) + (&+! s3-0 3072) + ) + ) + ) + ) + 0 + (none) + ) + +(defun forall-particles ((arg0 function) (arg1 symbol) (arg2 symbol)) + "run function on all particles. arg1 for 2d, arg2 for 3d." + (if arg1 + (forall-particles-runner + (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) + *sp-particle-system-2d* + ) + ) + (if arg2 + (forall-particles-runner + (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) + *sp-particle-system-3d* + ) + ) + 0 + (none) + ) + +(defun kill-all-particles-in-level ((arg0 level)) + "kill all particles belonging to the given level." + (forall-particles (if (zero? (-> arg0 index)) + sparticle-kill-it-level0 + sparticle-kill-it-level1 + ) + #t + #t + ) + 0 + ) + +(defun all-particles-50-to-60 () + (forall-particles-runner sparticle-50-to-60 *sp-particle-system-3d*) + (none) + ) + +(defun all-particles-60-to-50 () + (forall-particles-runner sparticle-60-to-50 *sp-particle-system-3d*) + (none) ) (defun set-particle-frame-time ((arg0 int)) @@ -137,62 +774,75 @@ (none) ) -(defun sparticle-kill-it ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (set! (-> arg1 timer) 0) - (set! (-> arg1 func) (the-as basic 0)) - (when (and (-> arg1 binding) (nonzero? (-> arg1 binding))) - (set! (-> arg1 binding flags) (logand -4 (-> arg1 binding flags))) - (set! (-> arg1 binding) #f) - ) - (none) - ) - -(defun forall-particles-with-key-runner ((arg0 sparticle-launch-control) (arg1 (function sparticle-system sparticle-cpuinfo none)) (arg2 sparticle-system)) - (local-vars (sv-16 int)) - (let ((s3-0 (the-as object (-> arg2 cpuinfo-table 0))) - (s2-0 (&+ (-> arg2 vecdata-table) 0)) - (s1-0 (+ (-> arg2 blocks 0) (-> arg2 blocks 1))) - ) - (dotimes (s0-0 s1-0) - (cond - ((!= (-> arg2 alloc-table s0-0) -1) - (set! sv-16 0) - (while (< sv-16 64) - (if - (and - (-> (the-as sparticle-cpuinfo s3-0) valid) - (= (-> (the-as sparticle-cpuinfo s3-0) key) arg0) +(defun process-particles () + "main particle system update." + (local-vars (v1-29 int) (gp-0 int)) + (when *particles-flag* + 0 + 0 + ;;(.mfc0 gp-0 Count) + (set! *sp-launcher-lock* #t) + ;; start a profile frame. + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + + ;; update timer + (let ((v1-14 (logand (the-as int (-> *sp-frame-time* x)) 255))) + (set! *particle-300hz-timer* (+ *particle-300hz-timer* v1-14)) + (cond + (*sp-60-hz* + ;; this is such a hack, but we can never get 6 or 12 in 50hz mode + (when (or (= v1-14 6) (= v1-14 12)) + (set! *sp-60-hz* #f) + (all-particles-60-to-50) + ) + ) + (else + ;; also a hack + (when (or (= v1-14 5) (= v1-14 10)) + (set! *sp-60-hz* #t) + (all-particles-50-to-60) + ) ) - (arg1 arg2 (the-as sparticle-cpuinfo s3-0)) - ) - (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 1)) - (&+! s2-0 48) - (set! sv-16 (+ sv-16 1)) ) - ) - (else - (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 64)) - (&+! s2-0 3072) + ) + + ;; process the particles + (clear-sprite-aux-list) + (sp-process-particle-system *sp-particle-system-2d* 0 *sprite-array-2d*) + (sp-process-particle-system *sp-particle-system-2d* 1 *sprite-array-2d*) + (sp-process-particle-system *sp-particle-system-3d* 0 (the-as sprite-array-2d *sprite-array-3d*)) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #x80 :b #xff :a #x80) + ) + ) + (set! *sp-launcher-lock* #f) + + ;; launch queued particles + (sp-clear-queue) + ;;(.mfc0 v1-29 Count) + (let ((a2-5 (- v1-29 gp-0))) + (if *display-sprite-info* + (format + *stdcon* + "Particle time = ~D cycles for ~D 2D [~D warp] and ~D HUD and ~D 3D~%" + 1234 ;;a2-5 + (-> *sp-particle-system-2d* num-alloc 0) + (-> *sprite-aux-list* entry) + (-> *sp-particle-system-2d* num-alloc 1) + (-> *sp-particle-system-3d* num-alloc 0) ) ) ) ) + 0 (none) ) - -(defun forall-particles-with-key ((arg0 sparticle-launch-control) (arg1 (function sparticle-system sparticle-cpuinfo none)) (arg2 symbol) (arg3 symbol)) - (if arg2 - (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-2d*) - ) - (if arg3 - (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-3d*) - ) - (none) - ) - -(defun kill-all-particles-with-key ((arg0 sparticle-launch-control)) - (forall-particles-with-key arg0 sparticle-kill-it #t #t) - (none) - ) - - diff --git a/goal_src/engine/target/target-part.gc b/goal_src/engine/target/target-part.gc index e4e323cc8d..232cb4b645 100644 --- a/goal_src/engine/target/target-part.gc +++ b/goal_src/engine/target/target-part.gc @@ -238,13 +238,10 @@ :length 2 :duration #x5 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-target-hit" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x38) - (new 'static 'sparticle-group-item :launcher #x39) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 56) (sp-item 57)) :bounds (new 'static 'sphere :w 49152.0) ) ) @@ -255,99 +252,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 12288.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 245.76 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 655.36 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 6.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3a) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.06)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.16)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-fade-a 6.4) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 58) + (sp-end) ) ) ) @@ -358,13 +280,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.64 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.64) + (sp-end) ) ) ) @@ -375,76 +292,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 49152.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x10 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.4222221 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x2a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 12.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (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-flt spt-a 64.0) + (sp-flt spt-rotvel-z (degrees -0.4)) + (sp-flt spt-fade-a -1.4222221) + (sp-int spt-timer 42) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -458,10 +319,7 @@ :linger-duration #x1c2 :name "group-red-eco-strike-ground" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x3b) - (new 'static 'sparticle-group-item :launcher #x3c) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 59) (sp-item 60)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -472,149 +330,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 24.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 56.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 546.13336 - :random-rangef 682.6667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-rangef 145.63556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -1.4222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.34133333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.7 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 24.0) + (sp-flt spt-y (meters 1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-flt spt-g 128.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 8.0 56.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.4222223) + (sp-flt spt-fade-a -0.35555556) + (sp-flt spt-accel-y 0.34133333) + (sp-flt spt-friction 0.7) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 61) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -625,123 +365,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -2.8444445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.82222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.7 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x2d) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-y (meters 1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-flt spt-vel-y (meters 0.3)) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.8444445) + (sp-flt spt-fade-a -0.82222223) + (sp-flt spt-friction 0.7) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 61) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -756,9 +400,9 @@ :name "group-red-eco-spinkick" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x3e) - (new 'static 'sparticle-group-item :launcher #x3f) - (new 'static 'sparticle-group-item :launcher #x40) + (sp-item 62) + (sp-item 63) + (sp-item 64) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -770,136 +414,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 56.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-rangef 145.63556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -1.4222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.34133333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 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-flt spt-g 128.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 8.0 56.0 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.4222223) + (sp-flt spt-fade-a -0.35555556) + (sp-flt spt-accel-y 0.34133333) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 61) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0) + (sp-end) ) ) ) @@ -910,25 +447,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.7111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef 0.7111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef 0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r -0.7111111) + (sp-flt spt-fade-g 0.7111111) + (sp-flt spt-fade-b 0.35555556) + (sp-end) ) ) ) @@ -939,111 +461,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.66 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -2.8444445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.82222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x2d) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 0.66) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.8444445) + (sp-flt spt-fade-a -0.82222223) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 61) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.1) 1.0) + (sp-end) ) ) ) @@ -1054,76 +490,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 16384.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.34133333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4.0) (meters 2.0) 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-flt spt-g 96.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -4.0) + (sp-flt spt-accel-y 0.34133333) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1137,10 +516,7 @@ :linger-duration #x1c2 :name "group-spin-hit" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x41) - (new 'static 'sparticle-group-item :launcher #x42) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -1154,10 +530,7 @@ :linger-duration #x1c2 :name "group-punch-hit" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x41) - (new 'static 'sparticle-group-item :launcher #x42) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -1168,113 +541,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 3072.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 2.1333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x43) - ) - (new 'static 'sp-field-init-spec :field #x3f :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 4.0) + (sp-flt spt-y (meters 0.75)) + (sp-flt spt-scale-x (meters 3.0)) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.15) (meters 0.5) 1.0) + (sp-flt spt-r 192.0) + (sp-flt spt-g 192.0) + (sp-rnd-flt spt-b 64.0 128.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.009765625)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-scalevel-y (meters 0.009765625)) + (sp-flt spt-fade-a 2.1333334) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 67) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) ) ) ) @@ -1285,13 +572,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -2.1333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -2.1333334) + (sp-end) ) ) ) @@ -1302,75 +584,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-flt spt-scale-x (meters 3.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 196.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 196.0) + (sp-flt spt-a 28.0) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1385,29 +611,29 @@ :name "group-smack-surface" :launcher (new 'static 'inline-array sparticle-group-item 23 - (new 'static 'sparticle-group-item :launcher #x44) - (new 'static 'sparticle-group-item :launcher #x45) - (new 'static 'sparticle-group-item :launcher #x48 :binding #x47) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) + (sp-item 68) + (sp-item 69) + (sp-item 72 :binding 71) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -1419,129 +645,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-copy-target-y-rot - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 163.84 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x3f :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-func spt-birth-func 'birth-func-copy-target-y-rot) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (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-flt spt-r 96.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.85333335) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) ) ) ) @@ -1552,129 +677,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-copy-target-y-rot - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 327.68 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x3f :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-func spt-birth-func 'birth-func-copy-target-y-rot) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 96.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.85333335) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) ) ) ) @@ -1685,58 +709,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x25c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-tracker-track-target-joint - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 12.0 8.0 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-a 0.0) + (sp-int spt-timer 604) + (sp-cpuinfo-flags bit3) + (sp-flt spt-userdata 8.0) + (sp-func spt-func 'part-tracker-track-target-joint) + (sp-end) ) ) ) @@ -1747,103 +730,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xa :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -5461.3335 - :random-rangef 10922.667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-rangef 204.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 92.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x2 - :initial-valuef -218.45334 - :random-rangef (the-as float #x1) - :random-multf 436.90668 - ) - (new 'static 'sp-field-init-spec :field #x1a :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.30476192 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x25c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-rnd-flt spt-y (meters -1.3333334) (meters 2.6666667) 1.0) + (sp-rnd-flt spt-z 2048.0 2048.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 92.0 1.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-int-flt spt-vel-x (meters -0.053333335) 1 436.90668) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters 0.0033333334)) + (sp-flt spt-fade-a -0.30476192) + (sp-int spt-timer 604) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -1858,9 +763,9 @@ :name "group-land-poof-sand" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x49) - (new 'static 'sparticle-group-item :launcher #x4a) - (new 'static 'sparticle-group-item :launcher #x4b) + (sp-item 73) + (sp-item 74) + (sp-item 75) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -1872,130 +777,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2006,130 +808,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2140,128 +839,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -2276,9 +873,9 @@ :name "group-land-poof-dirt" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x943) - (new 'static 'sparticle-group-item :launcher #x944) - (new 'static 'sparticle-group-item :launcher #x942) + (sp-item 2371) + (sp-item 2372) + (sp-item 2370) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -2290,130 +887,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2424,130 +918,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2558,128 +949,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -2694,9 +983,9 @@ :name "group-land-poof-snow" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x4c) - (new 'static 'sparticle-group-item :launcher #x4d) - (new 'static 'sparticle-group-item :launcher #x4e) + (sp-item 76) + (sp-item 77) + (sp-item 78) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -2708,131 +997,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2843,131 +1028,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2978,128 +1059,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -3114,9 +1093,9 @@ :name "group-land-poof-ice" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x4c) - (new 'static 'sparticle-group-item :launcher #x4d) - (new 'static 'sparticle-group-item :launcher #x4e) + (sp-item 76) + (sp-item 77) + (sp-item 78) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -3132,9 +1111,9 @@ :name "group-land-poof-grass" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x4f) - (new 'static 'sparticle-group-item :launcher #x50) - (new 'static 'sparticle-group-item :launcher #x51) + (sp-item 79) + (sp-item 80) + (sp-item 81) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -3146,130 +1125,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3280,130 +1156,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3414,133 +1187,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 614.4 - :random-rangef 1433.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -3554,10 +1221,7 @@ :linger-duration #x1c2 :name "group-land-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x52) - (new 'static 'sparticle-group-item :launcher #x53) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 82) (sp-item 83)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -3568,129 +1232,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3701,129 +1263,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3838,10 +1298,10 @@ :name "group-land-poof-crwood" :launcher (new 'static 'inline-array sparticle-group-item 4 - (new 'static 'sparticle-group-item :launcher #x52) - (new 'static 'sparticle-group-item :launcher #x53) - (new 'static 'sparticle-group-item :launcher #x54) - (new 'static 'sparticle-group-item :launcher #x54) + (sp-item 82) + (sp-item 83) + (sp-item 84) + (sp-item 84) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -3856,10 +1316,7 @@ :linger-duration #x1c2 :name "group-land-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x55) - (new 'static 'sparticle-group-item :launcher #x56) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 85) (sp-item 86)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -3870,129 +1327,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4003,129 +1358,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4140,8 +1393,8 @@ :name "group-land-poof-pcmetal" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x945) - (new 'static 'sparticle-group-item :launcher #x946) + (sp-item 2373) + (sp-item 2374) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4153,119 +1406,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 24.0 - :random-rangef 24.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4276,131 +1435,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4414,9 +1469,7 @@ :linger-duration #x258 :name "group-run-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x57) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4430,9 +1483,7 @@ :linger-duration #x258 :name "group-just-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x57) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4443,99 +1494,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4550,8 +1524,8 @@ :name "group-run-poof-snow" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x947) - (new 'static 'sparticle-group-item :launcher #x948 :flags #x1) + (sp-item 2375) + (sp-item 2376 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4566,9 +1540,7 @@ :linger-duration #x258 :name "group-just-poof-snow" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x947) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4583,7 +1555,7 @@ :name "group-just-footprint-snow" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x948 :flags #x1) + (sp-item 2376 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4595,80 +1567,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.07111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -0.07111111) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -4679,101 +1591,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 24.0 - :random-rangef 24.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4787,9 +1620,7 @@ :linger-duration #x258 :name "group-run-poof-ice" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x947) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4803,9 +1634,7 @@ :linger-duration #x258 :name "group-just-poof-ice" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x947) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4820,9 +1649,9 @@ :name "group-run-poof-crwood" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x59) - (new 'static 'sparticle-group-item :launcher #x59) - (new 'static 'sparticle-group-item :launcher #x54) + (sp-item 89) + (sp-item 89) + (sp-item 84) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4837,9 +1666,7 @@ :linger-duration #x258 :name "group-just-poof-crwood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x58) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4850,126 +1677,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef -13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x384) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x4b) - :random-rangef (the-as float #x4a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x5a) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters -0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.16) + (sp-flt spt-accel-y -0.27306667) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int-plain-rnd spt-next-time 75 74 1) + (sp-launcher-by-id spt-next-launcher 90) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 3.0) 1.0) + (sp-end) ) ) ) @@ -4980,19 +1709,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x96) - :random-rangef (the-as float #x95) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x5b) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int-plain-rnd spt-next-time 150 149 1) + (sp-launcher-by-id spt-next-launcher 91) + (sp-end) ) ) ) @@ -5003,13 +1723,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.08) + (sp-end) ) ) ) @@ -5023,9 +1738,7 @@ :linger-duration #x258 :name "group-run-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x59) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5039,9 +1752,7 @@ :linger-duration #x258 :name "group-just-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x59) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5052,99 +1763,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5158,9 +1792,7 @@ :linger-duration #x258 :name "group-run-poof-pcmetal" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x949) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5174,9 +1806,7 @@ :linger-duration #x258 :name "group-just-poof-pcmetal" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x949) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5187,101 +1817,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5296,8 +1847,8 @@ :name "group-run-poof-grass" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x5c) - (new 'static 'sparticle-group-item :launcher #x5d :flags #x1) + (sp-item 92) + (sp-item 93 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5312,9 +1863,7 @@ :linger-duration #x258 :name "group-just-poof-grass" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x5c) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 92)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5329,7 +1878,7 @@ :name "group-just-footprint-grass" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x5d :flags #x1) + (sp-item 93 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5341,100 +1890,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5445,80 +1916,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 48.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.053333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 48.0) + (sp-flt spt-fade-a -0.053333335) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -5533,8 +1944,8 @@ :name "group-run-poof-sand" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x58) - (new 'static 'sparticle-group-item :launcher #x5e :flags #x1) + (sp-item 88) + (sp-item 94 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5549,9 +1960,7 @@ :linger-duration #x258 :name "group-just-poof-sand" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x58) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5566,7 +1975,7 @@ :name "group-just-footprint-sand" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x5e :flags #x1) + (sp-item 94 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5578,100 +1987,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5682,80 +2013,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.035555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 32.0) + (sp-flt spt-fade-a -0.035555556) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -5769,9 +2040,7 @@ :linger-duration #x258 :name "group-run-poof-dirt" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94a) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5785,9 +2054,7 @@ :linger-duration #x258 :name "group-just-poof-dirt" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94a) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5802,7 +2069,7 @@ :name "group-just-footprint-dirt" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94b :flags #x1) + (sp-item 2379 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5814,100 +2081,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5918,80 +2107,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.035555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 32.0) + (sp-flt spt-fade-a -0.035555556) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6002,123 +2131,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6129,123 +2160,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6256,128 +2189,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 2.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.1)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6388,123 +2219,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6514,9 +2247,7 @@ (-> *part-id-table* 97) (new 'static 'sparticle-launcher :init-specs - (new 'static 'inline-array sp-field-init-spec 1 - (new 'static 'sp-field-init-spec :field #x43) - ) + (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) ) ) @@ -6525,9 +2256,7 @@ (-> *part-id-table* 98) (new 'static 'sparticle-launcher :init-specs - (new 'static 'inline-array sp-field-init-spec 1 - (new 'static 'sp-field-init-spec :field #x43) - ) + (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) ) ) @@ -6536,9 +2265,7 @@ (-> *part-id-table* 99) (new 'static 'sparticle-launcher :init-specs - (new 'static 'inline-array sp-field-init-spec 1 - (new 'static 'sp-field-init-spec :field #x43) - ) + (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) ) ) @@ -6552,8 +2279,8 @@ :name "group-slide-poof-sand" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x64) - (new 'static 'sparticle-group-item :launcher #x65) + (sp-item 100) + (sp-item 101) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -6565,131 +2292,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -6700,128 +2323,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 34.133335 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-rangef 2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -6836,8 +2357,8 @@ :name "group-slide-poof-dirt" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x94c) - (new 'static 'sparticle-group-item :launcher #x94d) + (sp-item 2380) + (sp-item 2381) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -6849,131 +2370,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -6984,128 +2401,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 34.133335 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-rangef 2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -7120,8 +2435,8 @@ :name "group-slide-poof-grass" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x66) - (new 'static 'sparticle-group-item :launcher #x67) + (sp-item 102) + (sp-item 103) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -7133,131 +2448,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7268,133 +2479,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 614.4 - :random-rangef 1433.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 34.133335 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-rangef 2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -7408,9 +2513,7 @@ :linger-duration #x1c2 :name "group-slide-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x68) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 104)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7421,130 +2524,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7558,9 +2558,7 @@ :linger-duration #x1c2 :name "group-slide-poof-pcmetal" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94e) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2382)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7571,132 +2569,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7710,9 +2603,7 @@ :linger-duration #x1c2 :name "group-slide-poof-snow" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94f) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7723,132 +2614,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7862,9 +2648,7 @@ :linger-duration #x1c2 :name "group-slide-poof-ice" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94f) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7878,9 +2662,7 @@ :linger-duration #x1c2 :name "group-slide-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x69) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7891,130 +2673,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -8028,9 +2707,7 @@ :linger-duration #x2ee :name "group-slide-poof-crwood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x69) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -8041,102 +2718,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8147,102 +2744,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8253,102 +2770,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8359,107 +2796,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 614.4 - :random-rangef 1433.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8471,210 +2824,46 @@ :length 36 :duration #x258 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-dark-eco-death" :launcher (new 'static 'inline-array sparticle-group-item 36 - (new 'static 'sparticle-group-item - :launcher #x127 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x128 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x82f - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x830 - :fade-after (meters 80.0) - :falloff-to (meters 80.0) - :period #x258 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x831 - :period #x258 - :length #x14 - ) + (sp-item 295 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2095 :period 600 :length 5) + (sp-item 2096 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2097 :period 600 :length 20) ) :bounds (new 'static 'sphere :w 49152.0) ) @@ -8690,10 +2879,10 @@ :name "group-lava-death" :launcher (new 'static 'inline-array sparticle-group-item 4 - (new 'static 'sparticle-group-item :launcher #x7d3) - (new 'static 'sparticle-group-item :launcher #x7d4) - (new 'static 'sparticle-group-item :launcher #x7d5) - (new 'static 'sparticle-group-item :launcher #x7d6) + (sp-item 2003) + (sp-item 2004) + (sp-item 2005) + (sp-item 2006) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -8708,9 +2897,7 @@ :linger-duration #x258 :name "group-burn-death" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x7d3) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2003)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -8721,103 +2908,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 54.613335 - :random-rangef 163.84 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -9.557333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x168) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4009) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 10922.667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-rnd-flt spt-a 128.0 128.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters -0.0023333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y -5.4613333) + (sp-int spt-timer 360) + (sp-cpuinfo-flags bit0 bit3 bit14) + (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-conerot-radius (meters 1.0)) + (sp-end) ) ) ) @@ -8828,134 +2935,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 5.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 96.37647 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -109.22667 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.5058824 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x51) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 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-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.023529412)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.5058824) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 81) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -8966,135 +2968,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 182.04443 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -109.22667 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -2.8444443 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x2a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters 0.5) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 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-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.04444444)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -2.8444443) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 42) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -9105,164 +3001,34 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 28 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 54.613335 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 36.40889 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -109.22667 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.56666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.56666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.56666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.15 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.97 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1c2) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x51) - :random-rangef (the-as float #x50) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x7d7) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-z -4096.0 8192.0 1.0) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 3.0) 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-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.008888889)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.56666666) + (sp-flt spt-fade-g -0.56666666) + (sp-flt spt-fade-b -0.56666666) + (sp-flt spt-fade-a 0.15) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 81 80 1) + (sp-launcher-by-id spt-next-launcher 2007) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -9273,13 +3039,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.08) + (sp-end) ) ) ) @@ -9290,118 +3051,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 13.653334 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1c2) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-rangef (the-as float #x3b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x7d8) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.0) 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 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.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.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 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.85333335) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 15 59 1) + (sp-launcher-by-id spt-next-launcher 2008) + (sp-end) ) ) ) @@ -9412,13 +3081,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.28444445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.28444445) + (sp-end) ) ) ) @@ -9481,8 +3145,8 @@ *sp-particle-system-2d* (-> *part-id-table* 2002) a2-3 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) (the-as float 1.0) ) ) @@ -9503,104 +3167,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200a00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 110.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xa :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.02)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 110.0 32.0 1.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 40.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.2) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata -8192.0) + (sp-end) ) ) ) @@ -9612,11 +3195,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-first-person-hud-left" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9aa :flags #x8) + (sp-item 2474 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -9629,11 +3212,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-first-person-hud-right" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9ab :flags #x8) + (sp-item 2475 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -9646,11 +3229,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-first-person-hud-selector" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9ac :flags #x8) + (sp-item 2476 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -9662,65 +3245,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 14336.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-first-person-hud-left-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-first-person-hud-left-func) + (sp-end) ) ) ) @@ -9731,71 +3267,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 14336.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :initial-valuef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-first-person-hud-right-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-first-person-hud-right-func) + (sp-end) ) ) ) @@ -9806,65 +3290,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0004883) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-first-person-hud-selector-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-first-person-hud-selector-func) + (sp-end) ) ) ) diff --git a/goal_src/engine/ui/progress/progress-part.gc b/goal_src/engine/ui/progress/progress-part.gc index 47895b193c..a4ef645da0 100644 --- a/goal_src/engine/ui/progress/progress-part.gc +++ b/goal_src/engine/ui/progress/progress-part.gc @@ -174,62 +174,74 @@ (v1-0 (the int (the-as float (-> arg1 user-float)))) (s4-0 -1) ) - (let ((a1-1 0)) - (dotimes (a2-1 (-> *progress-process* 0 nb-of-particles)) - (if (= (-> a0-1 matrix) (-> s5-0 particles a1-1 part matrix)) - (set! s4-0 a1-1) + (let ((a1-1 0)) + (dotimes (a2-1 (-> *progress-process* 0 nb-of-particles)) + (if (= (-> a0-1 matrix) (-> s5-0 particles a1-1 part matrix)) + (set! s4-0 a1-1) + ) + (+! a1-1 1) + ) ) - (+! a1-1 1) - ) - ) - (cond - ((= v1-0 3) - (if (= (-> s5-0 particle-state s4-0) 1) - (set! (-> arg2 vector 2 w) 42.0) - (set! (-> arg2 vector 2 w) 128.0) - ) - 0 - ) - (else - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) + (cond + ((= v1-0 3) + (if (= (-> s5-0 particle-state s4-0) 1) + (set! (-> arg2 vector 2 w) 42.0) + (set! (-> arg2 vector 2 w) 128.0) ) - (cond - ((or - (= s4-0 -1) - (= (-> s5-0 particle-state s4-0) 2) - (= (-> s5-0 particle-state s4-0) 1) - ) - (set! (-> arg2 vector 0 x) 245760.0) - ) - ((= v1-0 -1) - (set! (-> arg2 vector 0 x) 0.0) - (set! (-> arg2 vector 0 y) 0.0) - ) - (else - (vector<-cspace! - s3-0 - (-> s5-0 icons (logand s4-0 3) icon 0 node-list data v1-0) - ) - (vector<-cspace! - s2-0 - (-> s5-0 icons (logand s4-0 3) icon 0 node-list data 3) - ) - (vector-! s3-0 s3-0 s2-0) - (set! (-> arg2 vector 0 x) (* 48.0 (-> s3-0 x))) - (set! (-> arg2 vector 0 y) (* 60.0 (-> s3-0 y))) - (set! (-> arg2 vector 0 z) (* 32.0 (-> s3-0 z))) - ) + 0 ) + (else + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s2-0 (new 'stack-no-clear 'vector)) + ) + (cond + ((or + (= s4-0 -1) + (= (-> s5-0 particle-state s4-0) 2) + (= (-> s5-0 particle-state s4-0) 1) + ) + (set! (-> arg2 vector 0 x) 245760.0) + ) + ((= v1-0 -1) + (set! (-> arg2 vector 0 x) 0.0) + (set! (-> arg2 vector 0 y) 0.0) + ) + (else + ;; NOTE: this check has been added so we can run progress even when manipy isn't working yet. + (cond + ((nonzero? (-> s5-0 icons (logand s4-0 3) icon 0 node-list)) + (vector<-cspace! + s3-0 + (-> s5-0 icons (logand s4-0 3) icon 0 node-list data v1-0) + ) + (vector<-cspace! + s2-0 + (-> s5-0 icons (logand s4-0 3) icon 0 node-list data 3) + ) + (vector-! s3-0 s3-0 s2-0) + (set! (-> arg2 vector 0 x) (* 48.0 (-> s3-0 x))) + (set! (-> arg2 vector 0 y) (* 60.0 (-> s3-0 y))) + (set! (-> arg2 vector 0 z) (* 32.0 (-> s3-0 z))) + ) + (else + ;; NOTE: this is added as a temporary workaround. + ;; if we don't have this stuff loaded right, just set the offset to 0. + ;; this ends up being the right offset in all the cases except for things that + ;; orbit the powercell. Those are just draw underneath the powercell + (set! (-> arg2 vector 0 x) 0.0) + (set! (-> arg2 vector 0 y) 0.0) + ) + ) + ) + ) + ) + 0 + ) ) - 0 - ) ) - ) 0 (none) ) - ;; failed to figure out what this is: (set! (-> *part-group-id-table* 85) @@ -237,11 +249,12 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x5 + :flags + (sp-group-flag use-local-clock screen-space) :name "group-part-progress-hud-previous" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14c :flags #x8) + (sp-item 332 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -254,11 +267,12 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x5 + :flags + (sp-group-flag use-local-clock screen-space) :name "group-part-progress-hud-next" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14d :flags #x8) + (sp-item 333 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -271,11 +285,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-selector" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14e :flags #x8) + (sp-item 334 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -288,11 +302,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-left" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14f :flags #x8) + (sp-item 335 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -305,11 +319,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-right" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x150 :flags #x8) + (sp-item 336 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -322,11 +336,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-tint" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x151 :flags #x8) + (sp-item 337 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -339,13 +353,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-cell" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x88e :flags #x8) - (new 'static 'sparticle-group-item :launcher #x88f :flags #x8) - (new 'static 'sparticle-group-item :launcher #x890 :flags #x8) + (sp-item 2190 :flags (launch-asap)) + (sp-item 2191 :flags (launch-asap)) + (sp-item 2192 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -358,11 +372,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-x" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x920 :flags #x8) + (sp-item 2336 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -375,11 +389,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-square" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x921 :flags #x8) + (sp-item 2337 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -392,11 +406,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-triangle" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x922 :flags #x8) + (sp-item 2338 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -409,11 +423,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-circle" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x923 :flags #x8) + (sp-item 2339 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -426,11 +440,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-01" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x85e :flags #x8) + (sp-item 2142 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -443,11 +457,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-02" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x85f :flags #x8) + (sp-item 2143 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -460,11 +474,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-03" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x860 :flags #x8) + (sp-item 2144 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -477,11 +491,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-04" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x861 :flags #x8) + (sp-item 2145 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -494,12 +508,12 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-power-cell-center" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x152 :flags #x8) + (sp-item 338 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -511,63 +525,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 61440.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 47104.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-tint-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 11.5)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-tint-func) + (sp-end) ) ) ) @@ -578,68 +547,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015910302 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-cell-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6e :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-cell-func) + (sp-end) ) ) ) @@ -650,74 +569,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015910044 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef 4300.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-cell-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6d :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.05)) + (sp-flt spt-scale-x (meters 0.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-cell-func) + (sp-end) ) ) ) @@ -728,74 +592,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015909785 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef 9420.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-cell-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6c :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.3)) + (sp-flt spt-scale-x (meters 0.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-cell-func) + (sp-end) ) ) ) @@ -806,65 +615,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0006104) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x5 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -875,65 +637,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0007324) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -944,65 +659,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0008545) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x7 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -1013,65 +681,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0009766) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x8 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -1082,53 +703,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-01-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-01-func) + (sp-end) ) ) ) @@ -1139,53 +725,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-02-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-02-func) + (sp-end) ) ) ) @@ -1196,53 +747,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-03-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-03-func) + (sp-end) ) ) ) @@ -1253,53 +769,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-04-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-04-func) + (sp-end) ) ) ) @@ -1310,60 +791,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.000244) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -1374,60 +812,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.000122) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -1438,60 +833,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0004883) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 7372.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -1502,65 +854,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 14336.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-left-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-left-func) + (sp-end) ) ) ) @@ -1571,65 +876,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.000366) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 24576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-right-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 6.0)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-right-func) + (sp-end) ) ) ) @@ -1640,74 +898,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 4.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1718,74 +921,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 5.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 5.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1796,74 +944,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 6.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1874,74 +967,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 7.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 7.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1952,74 +990,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 9.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 9.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2030,74 +1013,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x30 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-flt spt-userdata 3.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2108,13 +1036,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.53333336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.53333336) + (sp-end) ) ) ) @@ -2125,122 +1048,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 286.72 - :random-rangef 1884.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xe8) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-z 2160.0) + (sp-flt spt-scale-x (meters 0.25)) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.07) (meters 0.46) 1.0) + (sp-rnd-int spt-r 0 1 255.0) + (sp-rnd-int spt-g 0 1 255.0) + (sp-rnd-int spt-b 0 1 255.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.009765625)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-scalevel-y (meters 0.009765625)) + (sp-flt spt-fade-a 0.35555556) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 232) + (sp-end) ) ) ) @@ -2251,116 +1080,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.06 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.32 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x4b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xe8) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 0.06) + (sp-flt spt-z 2160.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.25) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.1)) + (sp-rnd-int spt-r 0 1 255.0) + (sp-rnd-int spt-g 0 1 255.0) + (sp-rnd-int spt-b 0 1 255.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.009765625)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-fade-a 0.32) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 232) + (sp-end) ) ) ) @@ -2371,92 +1111,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 7372.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z 2160.0) + (sp-flt spt-scale-x (meters 2.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 1.8)) + (sp-flt spt-r 192.0) + (sp-flt spt-g 192.0) + (sp-rnd-flt spt-b 0.0 128.0 1.0) + (sp-flt spt-a 64.0) + (sp-flt spt-rotvel-z (degrees -0.4)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2467,92 +1137,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 9830.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z 2160.0) + (sp-flt spt-scale-x (meters 2.4)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 64.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2564,29 +1164,20 @@ :length 8 :duration #xbb8 :linger-duration #x5dc - :flags #x5 + :flags + (sp-group-flag use-local-clock screen-space) :name "group-part-progress-hud-power-cell-whole" :launcher (new 'static 'inline-array sparticle-group-item 8 - (new 'static 'sparticle-group-item :launcher #x152 :flags #x8) - (new 'static 'sparticle-group-item - :launcher #x15b - :flags #x8 - :period #xe10 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x15c - :flags #x8 - :period #xe10 - :length #x5 - ) - (new 'static 'sparticle-group-item :launcher #x157 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x153 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x154 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x155 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x156 :flags #x8) + (sp-item 338 :flags (launch-asap)) + (sp-item 347 :flags (launch-asap) :period 3600 :length 5) + (sp-item 348 :flags (launch-asap) :period 3600 :length 5) + (sp-item 343 :flags (launch-asap)) + (sp-item 339 :flags (launch-asap)) + (sp-item 340 :flags (launch-asap)) + (sp-item 341 :flags (launch-asap)) + (sp-item 342 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2599,16 +1190,12 @@ :length 2 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-buzzer" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x7be - :flags #x8 - :binding #x7bd - ) - (new 'static 'sparticle-group-item :launcher #x7bd :flags #xc) + (sp-item 1982 :flags (launch-asap) :binding 1981) + (sp-item 1981 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2620,58 +1207,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 9011.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2.2)) + (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-flt spt-a 0.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-end) ) ) ) @@ -2682,84 +1228,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xa :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x18 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1b :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2284) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-flt spt-y (meters 1.3333334)) + (sp-flt spt-z 409.6) + (sp-flt spt-scale-x (meters 2.0)) + (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-flt spt-a 128.0) + (sp-flt spt-omega 0.0) + (sp-flt spt-vel-x (meters 0.053333335)) + (sp-flt spt-vel-z (meters 0.0)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit7 bit9 bit13) + (sp-end) ) ) ) @@ -2771,11 +1256,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-orb" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x7bf :flags #x8) + (sp-item 1983 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2787,63 +1272,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202c00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 9011.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2c :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -2855,16 +1294,12 @@ :length 2 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-buzzer-small" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x7c1 - :flags #x8 - :binding #x7c0 - ) - (new 'static 'sparticle-group-item :launcher #x7c0 :flags #xc) + (sp-item 1985 :flags (launch-asap) :binding 1984) + (sp-item 1984 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2876,58 +1311,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (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-flt spt-a 0.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-end) ) ) ) @@ -2938,89 +1332,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xa :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 204.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x18 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 206.31703 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1b :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2284) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-buzzer-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-flt spt-y (meters 1.3333334)) + (sp-flt spt-z 204.8) + (sp-flt spt-scale-x (meters 1.5)) + (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-flt spt-a 128.0) + (sp-flt spt-omega 0.0) + (sp-flt spt-vel-x (meters 0.05037037)) + (sp-flt spt-vel-z (meters 0.0)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit7 bit9 bit13) + (sp-func spt-func 'part-progress-hud-buzzer-func) + (sp-end) ) ) ) @@ -3032,11 +1361,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-orb-small" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x7c2 :flags #x8) + (sp-item 1986 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -3048,68 +1377,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202c00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 5324.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-orb-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2c :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-orb-func) + (sp-end) ) ) ) @@ -3121,11 +1400,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-save-icon" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9ae :flags #x8) + (sp-item 2478 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -3137,68 +1416,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015909527 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 7372.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-save-icon-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6b :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-save-icon-func) + (sp-end) ) ) ) diff --git a/goal_src/engine/ui/progress/progress.gc b/goal_src/engine/ui/progress/progress.gc index ab5ee1d765..125900eb1a 100644 --- a/goal_src/engine/ui/progress/progress.gc +++ b/goal_src/engine/ui/progress/progress.gc @@ -684,7 +684,7 @@ ) (copy-settings-from-target! *setting-control*) (dotimes (gp-0 (-> *progress-process* 0 nb-of-particles)) - (deactivate (-> *progress-process* 0 particles gp-0 part)) + (kill-and-free-particles (-> *progress-process* 0 particles gp-0 part)) (set! (-> *progress-process* 0 particles gp-0 part matrix) -1) ) (set! (-> *progress-process* 0 nb-of-particles) 0) @@ -776,7 +776,7 @@ (set! (-> v1-53 vector w) (-> *math-camera* hvdf-off w)) ) ) - ;(dummy-11 (-> obj particles s5-0 part) *null-vector*) + (spawn (-> obj particles s5-0 part) *null-vector*) ) (none) ) diff --git a/goal_src/examples/debug-draw-example.gc b/goal_src/examples/debug-draw-example.gc index e9cdb6c553..e569294de0 100644 --- a/goal_src/examples/debug-draw-example.gc +++ b/goal_src/examples/debug-draw-example.gc @@ -252,7 +252,7 @@ ) ;; This will spawn a process the first time this file is loaded -(define-perm *test-process* process (launch-test-process)) +(define-perm *test-process* process (launch-wasd-process)) (defun kill-test-procs () "Kill all processes started by launch-test-process" @@ -273,4 +273,6 @@ ) ) ) - ) \ No newline at end of file + ) + +(test-make-target) \ No newline at end of file diff --git a/goal_src/examples/debug-sprite.gc b/goal_src/examples/debug-sprite.gc new file mode 100644 index 0000000000..a2a08f113c --- /dev/null +++ b/goal_src/examples/debug-sprite.gc @@ -0,0 +1,41 @@ + + +(defun open-progress () + (if (not *target*) + (test-make-target)) + (activate-progress *dproc* (the progress-screen 0))) + + + +(defun debug-dump-hud-sprite ((count int)) + (dotimes (i count) + (let ((arr (the (inline-array sprite-vec-data-2d) (&-> *sprite-array-2d* data (* 1920 3))))) + (format #t "----------------------~D~%" i) + ;; first, the data + (inspect (-> arr i)) + ;; next, adgif + (let ((adg (-> *sprite-array-2d* adgif-data (+ 1920 i)))) + (inspect (-> adg tex0)) + (inspect (-> adg tex1)) + ) + ;; matrix + (when (nonzero? (-> arr i matrix)) + (inspect (the vector (-> *sprite-hvdf-data* data (-> arr i matrix)))) + ) + ;; vector + (let ((vec (the (inline-array vector) (&+ (-> *sprite-array-2d* vec-data) (* 16 3 (+ i 1920)))))) + (dotimes (j 3) + (print (-> vec j)) + (format #t "~%") + ) + ) + (format #t "~%") + ) + ) + ) + + +;; these are part-group-id-table entries for sprites that should work. +(define *test-sprite-ids* (new 'static 'boxed-array :type int32 :length 13 + 85 86 87 91 570 571 572 573 92 93 94 95 96) + ) \ No newline at end of file diff --git a/goal_src/kernel/gkernel.gc b/goal_src/kernel/gkernel.gc index 5445f48c37..7faa8b56e1 100644 --- a/goal_src/kernel/gkernel.gc +++ b/goal_src/kernel/gkernel.gc @@ -117,7 +117,8 @@ ;; without executing anything, to find a process for instance. (define *null-kernel-context* (new 'static 'kernel-context)) -(#when PC_PORT +(#cond + (PC_PORT ;; We will move stacks on the scratchpad to here. ;; it might be possible to also throw them on the *dram-stack*, but they might depend on these ;; not overlapping. We can spare the 16k of memory. @@ -126,7 +127,30 @@ ;; similar thing for the scratchpad data. ;; in (define *fake-scratchpad-data* (new 'global 'array 'uint8 (* 16 1024))) + + + (defmacro scratchpad-start() + '*fake-scratchpad-data* + ) ) + (else + (defmacro scratchpad-start () + #x70000000 + ) + ) + ) + +(defmacro scratchpad-end () + `(&+ (scratchpad-start) (* 16 1024)) + ) + +(defmacro in-scratchpad? (x) + `(and + (>= (the-as int ,x) (scratchpad-start)) + (< (the-as int ,x) (scratchpad-end)) + ) + ) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/goal_src/levels/beach/beach-rocks.gc b/goal_src/levels/beach/beach-rocks.gc index 595ebaa1f4..ba23daf085 100644 --- a/goal_src/levels/beach/beach-rocks.gc +++ b/goal_src/levels/beach/beach-rocks.gc @@ -7,7 +7,6 @@ (define-extern *lrocklrg-sg* skeleton-group) -;; failed to figure out what this is: (let ((v1-0 (new 'static 'skeleton-group @@ -32,13 +31,13 @@ :length 3 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-beach-rocks-start" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x924 :period #x4b :length #xa) - (new 'static 'sparticle-group-item :launcher #x925 :period #x4b :length #xa) - (new 'static 'sparticle-group-item :launcher #x8f1 :period #x4b :length #xa) + (sp-item 2340 :period 75 :length 10) + (sp-item 2341 :period 75 :length 10) + (sp-item 2289 :period 75 :length 10) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -50,134 +49,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201d00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 3.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1024.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 1024.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1c :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -11.605333 - :random-rangef -8.874666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.97 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 14563.556 - :random-rangef 36408.89 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-rnd-flt spt-num 3.0 6.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.25) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.25) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 96.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.0)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -11.605333 -8.874666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 5.0) 1.0) + (sp-end) ) ) ) @@ -188,140 +81,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1c :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08533333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef -8.874666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.93 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 14563.556 - :random-rangef 36408.89 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-rnd-flt spt-b 0.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.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-a -0.08533333) + (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) + (sp-flt spt-friction 0.93) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 5.0) 1.0) + (sp-end) ) ) ) @@ -332,161 +114,32 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-rangef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 24576.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 163.84 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.042666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.061333332 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.042666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.032 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-rangef -7.5093336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 24576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 3.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 2.0) 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (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-r -0.042666666) + (sp-flt spt-fade-g -0.061333332) + (sp-flt spt-fade-b -0.042666666) + (sp-flt spt-fade-a -0.032) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 6.0) 1.0) + (sp-end) ) ) ) @@ -498,11 +151,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-beach-rocks-fall" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x8f2 :period #xf :length #x5) + (sp-item 2290 :period 15 :length 5) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -514,161 +167,32 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 3.0 - :random-rangef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 28672.0 - :random-rangef 36864.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 48.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 54.613335 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 109.22667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.15333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-rangef -7.5093336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 3.0 3.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 7.0) (meters 9.0) 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.026666667)) + (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-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -0.10666667) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) + (sp-end) ) ) ) @@ -680,25 +204,13 @@ :length 3 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-beach-rocks-land" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item - :launcher #x926 - :period #x384 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x927 - :period #x384 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x8f3 - :period #x384 - :length #x28 - ) + (sp-item 2342 :period 900 :length 40) + (sp-item 2343 :period 900 :length 40) + (sp-item 2291 :period 900 :length 40) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -710,110 +222,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 131072.0 - :random-rangef 40960.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 13981.014 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.15333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -3.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-y (meters -3.0)) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 32.0) (meters 10.0) 1.0) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 3.4133334)) + (sp-flt spt-fade-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -824,140 +250,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1c :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08533333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef -8.874666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 3640.889 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 64.0 64.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.21333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.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-a -0.08533333) + (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 5.0) 1.0) + (sp-end) ) ) ) @@ -968,162 +283,32 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 32768.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 48.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 436.90668 - :random-rangef 1310.72 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 136.53334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.15333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-rangef -7.5093336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.85 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 18204.445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 32.0 32.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 8.0) (meters 8.0) 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.32) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.033333335) (meters 0.02) 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-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -0.10666667) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.85) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) + (sp-end) ) ) ) @@ -1198,10 +383,10 @@ ;; definition for method 10 of type beach-rock (defmethod deactivate beach-rock ((obj beach-rock)) (if (nonzero? (-> obj part-falling)) - (deactivate (-> obj part-falling)) + (kill-and-free-particles (-> obj part-falling)) ) (if (nonzero? (-> obj part-landing)) - (deactivate (-> obj part-landing)) + (kill-and-free-particles (-> obj part-landing)) ) ((the-as (function process-drawable none) (find-parent-method beach-rock 10)) obj @@ -1267,38 +452,38 @@ (when (and (< -50.0 f30-0) (< f30-0 158.0)) (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self root-override trans quad)) - (dummy-11 (-> self part) gp-0) + (spawn (-> self part) gp-0) (set! (-> gp-0 x) (+ 122880.0 (-> gp-0 x))) (set! (-> gp-0 z) (+ 102400.0 (-> gp-0 z))) - (dummy-11 (-> self part) gp-0) + (spawn (-> self part) gp-0) ) ) (if (and (< 200.0 f30-0) (< f30-0 275.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) ) ) (if (and (< 270.0 f30-0) (< f30-0 333.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) ) ) (if (and (< (-> self prev-frame) 333.0) (>= f30-0 333.0)) - (dummy-11 + (spawn (-> self part-landing) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) ) ) (if (and (< 169.0 f30-0) (< f30-0 202.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)) ) ) (if (and (< 240.0 f30-0) (< f30-0 270.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6)) ) diff --git a/goal_src/levels/beach/lurkercrab.gc b/goal_src/levels/beach/lurkercrab.gc index 00b8d4c70e..6730e243b0 100644 --- a/goal_src/levels/beach/lurkercrab.gc +++ b/goal_src/levels/beach/lurkercrab.gc @@ -19,16 +19,8 @@ :name "group-lurkercrab-slide" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x297 - :fade-after (meters 40.0) - :falloff-to (meters 40.0) - ) - (new 'static 'sparticle-group-item - :launcher #x298 - :fade-after (meters 40.0) - :falloff-to (meters 40.0) - ) + (sp-item 663 :fade-after (meters 40.0) :falloff-to (meters 40.0)) + (sp-item 664 :fade-after (meters 40.0) :falloff-to (meters 40.0)) ) :bounds (new 'static 'sphere :y -49152.0 :w 57344.0) @@ -41,96 +33,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3e99999a - :random-range #x3e99999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -973078528 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46000000 - :random-range #x46000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42c80000 - :random-range #x41f00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42a00000 - :random-range #x41a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x41f00000 - :random-range #x41f00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41800000 - :random-range #x42400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x43088889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1101368306 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1106522267 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x1004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.3 0.3 1.0) + (sp-flt spt-y (meters -2.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 30.0 1.0) + (sp-rnd-flt spt-g 80.0 20.0 1.0) + (sp-rnd-flt spt-b 30.0 30.0 1.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-scalevel-x (meters 0.033333335)) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-end) ) ) ) @@ -141,109 +59,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3dcccccd - :random-range #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -973078528 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x444ccccd - :random-range #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42960000 - :random-range #x42700000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42700000 - :random-range #x41a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x41b80000 - :random-range #x41f00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x42da740e - :random-range #x42da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1092979698 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1059425266 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x1004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x45aaaaab - :random-range #x45aaaaab - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.1 1.0 1.0) + (sp-flt spt-y (meters -2.0)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 75.0 60.0 1.0) + (sp-rnd-flt spt-g 60.0 20.0 1.0) + (sp-rnd-flt spt-b 23.0 30.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-flt spt-accel-y -6.826667) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.2)) + (sp-end) ) ) ) @@ -258,6 +91,15 @@ :flag-assert #x4c01300194 ) +;; definition for method 3 of type lurkercrab +(defmethod inspect lurkercrab ((obj lurkercrab)) + (let ((t9-0 (method-of-type nav-enemy inspect))) + (t9-0 obj) + ) + (format #t "~T~Torient: ~A~%" (-> obj orient)) + obj + ) + ;; failed to figure out what this is: (let ((v1-4 @@ -1306,7 +1148,7 @@ nav-enemy-default-event-handler (let ((a0-0 (-> self part)) (a1-0 (-> self collide-info root-prim prim-core)) ) - (dummy-11 a0-0 (the-as vector a1-0)) + (spawn a0-0 (the-as vector a1-0)) ) (nav-enemy-travel-post) (none) diff --git a/goal_src/levels/common/baseplat.gc b/goal_src/levels/common/baseplat.gc index dc525df9cf..cc69c31660 100644 --- a/goal_src/levels/common/baseplat.gc +++ b/goal_src/levels/common/baseplat.gc @@ -116,9 +116,10 @@ ) ;; definition for method 20 of type baseplat +;; INFO: Return type mismatch object vs none. (defmethod dummy-20 baseplat ((obj baseplat)) (if (nonzero? (-> obj part)) - (dummy-11 (-> obj part) (-> obj root-override trans)) + (spawn (-> obj part) (-> obj root-override trans)) ) (none) ) diff --git a/goal_src/levels/common/dark-eco-pool.gc b/goal_src/levels/common/dark-eco-pool.gc index 4d904af98c..7a02ee748c 100644 --- a/goal_src/levels/common/dark-eco-pool.gc +++ b/goal_src/levels/common/dark-eco-pool.gc @@ -172,14 +172,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-dark-eco-nasty" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item - :launcher #x7e4 - :fade-after (meters 50.0) - ) + (sp-item 2020 :fade-after (meters 50.0)) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -191,95 +188,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45800000 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x44800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42c00000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x44400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-value -1057635697 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1068708659 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 10 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 15 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x7e5 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 4.0) 1.0) + (sp-flt spt-scale-y (meters 0.25)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.1875)) + (sp-flt spt-scalevel-y (meters -0.001875)) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 2021) + (sp-end) ) ) ) @@ -290,31 +215,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1079781622 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-fade-a -1.28) + (sp-end) ) ) ) @@ -326,118 +231,29 @@ :length 19 :duration #x258 :linger-duration #x258 - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-dark-eco-pool-nasty" :launcher (new 'static 'inline-array sparticle-group-item 19 - (new 'static 'sparticle-group-item - :launcher #x808 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x809 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x804 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x80a - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x806 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) + (sp-item 2056 :fade-after (meters 100.0) :period 600 :length 5) + (sp-item 2057 :fade-after (meters 100.0) :period 600 :length 5 :binding 2052) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2058 :fade-after (meters 100.0) :period 600 :length 5 :binding 2054) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) ) :bounds (new 'static 'sphere :w 49152.0) ) @@ -449,73 +265,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1075179870 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 54 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 8.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.8285716) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -526,79 +288,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-range #x40c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x4323d70a - :random-range #x42a3d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1067813874 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f70a3d7 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 8 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x46c71c72 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 6.0 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) + (sp-flt spt-accel-y -3.4133334) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -609,127 +312,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value #x4499999a - :random-range #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x44cccccd - :random-range #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-value #x42da740e - :random-range #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1066512368 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -1034259442 - :random-range 1 - :random-mult #x42da740e - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1098348407 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1102669812 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-range #xb3 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x408c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 1228.8 1228.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 60 179 1) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-end) ) ) ) @@ -740,96 +343,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x44cccccd - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42000000 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1071495275 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1130624575 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1093552360 - :random-range -1088599726 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 30 - :random-range #xef - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value #xc6) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0006190476)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.01904762) + (sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0) + (sp-int-plain-rnd spt-timer 30 239 1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) ) ) ) @@ -840,79 +370,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-range #x40c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x4323d70a - :random-range #x42a3d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1067813874 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f70a3d7 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 8 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x46c71c72 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 6.0 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) + (sp-flt spt-accel-y -3.4133334) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -923,128 +394,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value #x4499999a - :random-range #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x44cccccd - :random-range #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x41800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x41800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-value #x42da740e - :random-range #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1066512368 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -1034259442 - :random-range 1 - :random-mult #x42da740e - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1098348407 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1102669812 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-range #xb3 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x408c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 1228.8 1228.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 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 16.0 32.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 192.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 60 179 1) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-end) ) ) ) @@ -1055,96 +425,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x44cccccd - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x41800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x41800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1071495275 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1130624575 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1093552360 - :random-range -1088599726 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 30 - :random-range #xef - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value #xc6) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 16.0 32.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 192.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0006190476)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.01904762) + (sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0) + (sp-int-plain-rnd spt-timer 30 239 1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) ) ) ) @@ -1218,3 +515,5 @@ ) + + diff --git a/goal_src/levels/common/plat.gc b/goal_src/levels/common/plat.gc index e6ca0c842a..6c85bcc12f 100644 --- a/goal_src/levels/common/plat.gc +++ b/goal_src/levels/common/plat.gc @@ -19,16 +19,8 @@ :name "group-standard-plat" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x16b - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) - (new 'static 'sparticle-group-item - :launcher #x16c - :fade-after (meters 160.0) - :falloff-to (meters 160.0) - ) + (sp-item 363 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 364 :fade-after (meters 160.0) :falloff-to (meters 160.0)) ) :bounds (new 'static 'sphere :y -49152.0 :w 57344.0) @@ -41,79 +33,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3fc00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #xe :initial-value 5 :random-mult 1) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x45a66666 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x45666666 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-value -1048374674 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 25 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x100 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x46c71c72 - :random-range #x45e38e39 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-num 1.5) + (sp-flt spt-y (meters 1.0)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-conerot-x (degrees 140.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-end) ) ) ) @@ -124,112 +57,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46000000 - :random-range #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x4223d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1092979698 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1096558838 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1106522267 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f75c28f - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x96 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x46b8e38e - :random-range #x468e38e4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 2.0) + (sp-flt spt-y (meters 1.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 130.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-end) ) ) ) @@ -602,3 +448,7 @@ ) (none) ) + + + + diff --git a/goal_src/levels/common/sharkey.gc b/goal_src/levels/common/sharkey.gc index 69d5f01977..c3038415e3 100644 --- a/goal_src/levels/common/sharkey.gc +++ b/goal_src/levels/common/sharkey.gc @@ -14,101 +14,26 @@ :length 16 :duration #x78 :linger-duration #x30c - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sharkey-splash" :launcher (new 'static 'inline-array sparticle-group-item 16 - (new 'static 'sparticle-group-item - :launcher #x7c - :flags #x1 - :period #x384 - :length #x3f - ) - (new 'static 'sparticle-group-item :launcher #x7d :period #x384 :length #xf) - (new 'static 'sparticle-group-item - :launcher #x7e - :flags #x1 - :period #x384 - :length #xf - ) - (new 'static 'sparticle-group-item - :launcher #x7f - :flags #x1 - :period #x384 - :length #xf - ) - (new 'static 'sparticle-group-item - :launcher #x80 - :period #x384 - :length #xa - :binding #x81 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) + (sp-item 124 :flags (is-3d) :period 900 :length 63) + (sp-item 125 :period 900 :length 15) + (sp-item 126 :flags (is-3d) :period 900 :length 15) + (sp-item 127 :flags (is-3d) :period 900 :length 15) + (sp-item 128 :period 900 :length 10 :binding 129) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) ) :bounds (new 'static 'sphere :y -49152.0 :w 57344.0) diff --git a/goal_src/levels/common/static-screen.gc b/goal_src/levels/common/static-screen.gc index 55bc88f30c..17d415feba 100644 --- a/goal_src/levels/common/static-screen.gc +++ b/goal_src/levels/common/static-screen.gc @@ -47,7 +47,7 @@ (defmethod deactivate static-screen ((obj static-screen)) (dotimes (s5-0 1) (if (nonzero? (-> obj part s5-0)) - (deactivate (-> obj part s5-0)) + (kill-and-free-particles (-> obj part s5-0)) ) ) ((method-of-type process deactivate) obj) @@ -60,66 +60,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x5c600000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45970a3d - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47700000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x46d00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x2204 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x5c6)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1.18)) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 6.5)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -130,66 +82,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x5c600100) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -979252543 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47700000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x46500000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x2204 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x5c6)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -1.264)) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 3.25)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -200,66 +104,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x5c600200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -971056873 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47700000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x45d00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value -1 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x2204 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x5c6)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -2.482)) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 1.625)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -271,13 +127,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-screen1" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #xb96 :flags #x8) - (new 'static 'sparticle-group-item :launcher #xb97 :flags #x8) - (new 'static 'sparticle-group-item :launcher #xb98 :flags #x8) + (sp-item 2966 :flags (launch-asap)) + (sp-item 2967 :flags (launch-asap)) + (sp-item 2968 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -303,7 +159,7 @@ :trans (behavior () (hide-hud-quick) - (dummy-11 (-> self part 0) *zero-vector*) + (spawn (-> self part 0) *zero-vector*) 0 (none) ) @@ -361,9 +217,18 @@ (nonzero? s3-0) (type-type? (-> s3-0 type) sparticle-launch-group) ) - (set! (-> *part-id-table* 2966 init-specs 0 initial-value) arg1) - (set! (-> *part-id-table* 2967 init-specs 0 initial-value) arg2) - (set! (-> *part-id-table* 2968 init-specs 0 initial-value) arg3) + (set! + (-> *part-id-table* 2966 init-specs 0 initial-valuef) + (the-as float arg1) + ) + (set! + (-> *part-id-table* 2967 init-specs 0 initial-valuef) + (the-as float arg2) + ) + (set! + (-> *part-id-table* 2968 init-specs 0 initial-valuef) + (the-as float arg3) + ) (set! (-> self part 0) (create-launch-control (the-as sparticle-launch-group s3-0) self) @@ -411,3 +276,7 @@ (-> sv-16 ppointer) ) ) + + + + diff --git a/goal_src/levels/finalboss/final-door.gc b/goal_src/levels/finalboss/final-door.gc index 74bcb5bd09..3c02f586a8 100644 --- a/goal_src/levels/finalboss/final-door.gc +++ b/goal_src/levels/finalboss/final-door.gc @@ -445,7 +445,7 @@ (eval-position! gp-1 f0-2 (-> self root-override trans)) ) (transform-post) - (dummy-11 + (spawn (-> self part) (the-as vector (-> self root-override root-prim prim-core)) ) diff --git a/goal_src/levels/finalboss/robotboss-h.gc b/goal_src/levels/finalboss/robotboss-h.gc index e9298bc3bf..31e8dd7b35 100644 --- a/goal_src/levels/finalboss/robotboss-h.gc +++ b/goal_src/levels/finalboss/robotboss-h.gc @@ -92,7 +92,7 @@ (dotimes (s5-0 7) (let ((a0-1 (-> obj particle s5-0))) (if (nonzero? a0-1) - (deactivate a0-1) + (kill-and-free-particles a0-1) ) ) ) diff --git a/goal_src/levels/misty/sidekick-human.gc b/goal_src/levels/misty/sidekick-human.gc index 0b193ab597..ed76207135 100644 --- a/goal_src/levels/misty/sidekick-human.gc +++ b/goal_src/levels/misty/sidekick-human.gc @@ -26,31 +26,18 @@ :length 8 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-2d-intro-mist" :launcher (new 'static 'inline-array sparticle-group-item 8 - (new 'static 'sparticle-group-item - :launcher #xa69 - :period #x12c - :length #x5 - :binding #xa67 - ) - (new 'static 'sparticle-group-item - :launcher #xa67 - :flags #xc - :binding #xa68 - ) - (new 'static 'sparticle-group-item - :launcher #xa67 - :flags #xc - :binding #xa68 - ) - (new 'static 'sparticle-group-item :launcher #xa68 :flags #x4) - (new 'static 'sparticle-group-item :launcher #xa68 :flags #x4) - (new 'static 'sparticle-group-item :launcher #xa68 :flags #x4) - (new 'static 'sparticle-group-item :launcher #xa6a) - (new 'static 'sparticle-group-item :launcher #xa6b) + (sp-item 2665 :period 300 :length 5 :binding 2663) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2666) + (sp-item 2667) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -62,74 +49,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value -970981376 - :random-range #x46a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -977272832 - :random-range #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x415a740e - :random-range #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x258 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 8 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3c - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -2.5) (meters 5.0) 1.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-g 128.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -140,119 +72,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value #x45000000 - :random-range #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45000000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x2 - :initial-value -1017482226 - :random-range 1 - :random-mult #x43da740e - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1063329782 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-value -1034259442 - :random-range 1 - :random-mult #x42da740e - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x258 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x8c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 2048.0 819.2 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-int-flt spt-vel-x (meters -0.053333335) 1 436.90668) + (sp-flt spt-scalevel-x (meters -0.0012121212)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -263,89 +102,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45000000 - :random-range #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42000000 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1064333800 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :random-range -1106522267 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 30 - :random-range #x12b - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x33 :flags #x6 :initial-value #xc6) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.3) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0010952381)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y 0.0 -0.13653333 1.0) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) ) ) ) @@ -356,63 +128,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x203600) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value -965083136 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47700000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x47400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 5 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z -16000.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 12.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit14) + (sp-end) ) ) ) @@ -423,126 +150,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3e99999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value -964689920 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -968884224 - :random-range #x46c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :random-range #x465ac000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46c00000 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x46c00000 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x41800000 - :random-range #x42a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x41800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x41800000 - :random-range #x43160000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1059425266 - :random-range #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1051036658 - :random-range #x41da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3e5a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x5dc - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x96 - :random-range #x95 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #xa6c - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.3) + (sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-rnd-flt spt-z 0.0 14000.0 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-r 16.0 80.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 16.0 150.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters -0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.075) (degrees 0.15) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.21333334) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 150 149 1) + (sp-launcher-by-id spt-next-launcher 2668) + (sp-end) ) ) ) @@ -553,23 +181,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x12c - :random-range #x12b - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #xa6d - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int-plain-rnd spt-next-time 300 299 1) + (sp-launcher-by-id spt-next-launcher 2669) + (sp-end) ) ) ) @@ -580,13 +195,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1101368306 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.21333334) + (sp-end) ) ) ) @@ -598,1054 +208,267 @@ :length #x101 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-evilsib-appear" :launcher (new 'static 'inline-array sparticle-group-item 257 - (new 'static 'sparticle-group-item - :launcher #x929 - :period #x5dc - :length #x14 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92a - :period #x5dc - :length #x14 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92b - :period #x5dc - :length #x5 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92c - :period #x5dc - :length #x14 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92d - :period #x5dc - :length #x384 - :offset #x2ee - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x92e - :period #x5dc - :length #x2ee - :offset #x258 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x92f - :period #x5dc - :length #x258 - :offset #x1c2 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x92f - :period #x5dc - :length #x1c2 - :offset #x12c - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x930 - :period #x5dc - :length #x12c - :offset #x96 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x930 - :period #x5dc - :length #x96 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) + (sp-item 2345 :period 1500 :length 20 :offset 1500) + (sp-item 2346 :period 1500 :length 20 :offset 1500) + (sp-item 2347 :period 1500 :length 5 :offset 1500) + (sp-item 2348 :period 1500 :length 20 :offset 1500) + (sp-item 2349 :period 1500 :length 900 :offset 750 :binding 2344) + (sp-item 2350 :period 1500 :length 750 :offset 600 :binding 2344) + (sp-item 2351 :period 1500 :length 600 :offset 450 :binding 2344) + (sp-item 2351 :period 1500 :length 450 :offset 300 :binding 2344) + (sp-item 2352 :period 1500 :length 300 :offset 150 :binding 2344) + (sp-item 2352 :period 1500 :length 150 :binding 2344) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -1657,106 +480,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -981467136 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45000000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1039031628 - :random-range #x4291a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x258 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4000 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.1) 1.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit14) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1767,13 +508,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1101368306 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.21333334) + (sp-end) ) ) ) @@ -1784,122 +520,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -981467136 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45000000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1039031628 - :random-range #x4291a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3e5a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x258 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x931 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.1) 1.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.21333334) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 300) + (sp-launcher-by-id spt-next-launcher 2353) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1910,121 +551,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x46000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45000000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1039031628 - :random-range #x4291a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3e5a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x258 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x931 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.3) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.21333334) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 300) + (sp-launcher-by-id spt-next-launcher 2353) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2035,122 +582,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -989855744 - :random-range #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45000000 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1039031628 - :random-range #x4291a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3e5a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x258 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x931 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-rnd-flt spt-y (meters -0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.21333334) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 300) + (sp-launcher-by-id spt-next-launcher 2353) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2161,142 +613,30 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 24 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value #x46a00000 - :random-range #x45c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x434ccccd - :random-range #x434ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-value -1013468122 - :random-range #x4417b426 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-value -1032469873 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x4003126f - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1027461563 - :random-range #x43422e45 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x408c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x10e - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x932 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 20480.0 6144.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.05) 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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.074074075) (meters 0.14814815) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters -0.015)) + (sp-flt spt-scalevel-x (meters 0.0005)) + (sp-rnd-flt spt-rotvel-z (degrees -0.53333336) (degrees 1.0666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-int spt-next-time 270) + (sp-launcher-by-id spt-next-launcher 2354) + (sp-end) ) ) ) @@ -2307,13 +647,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1068708659 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -3.2) + (sp-end) ) ) ) @@ -2324,151 +659,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45800000 - :random-range #x46000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-range #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-range #x445a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1070677186 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1092979698 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1087454402 - :random-range -1067813874 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f4ccccd - :random-range #x3d4ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x5dc - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4005 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 30 - :random-range #x2ed - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x933 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3c - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-range #x46000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.21333334) 1.0) + (sp-flt spt-scalevel-x (meters -0.00066666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.42666668) + (sp-rnd-flt spt-accel-y -0.68266666 -3.4133334 1.0) + (sp-rnd-flt spt-friction 0.8 0.05 1.0) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit0 bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 749 1) + (sp-launcher-by-id spt-next-launcher 2355) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2479,17 +694,9 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 3 - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-a 0.0) + (sp-end) ) ) ) @@ -2500,151 +707,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-range #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-range #x44cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-range #x42da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1070677186 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1092979698 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1087454402 - :random-range -1067813874 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f400000 - :random-range #x3d4ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x5dc - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4005 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 30 - :random-range #x2ed - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x933 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3c - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x45000000 - :random-range #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.026666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00066666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.42666668) + (sp-rnd-flt spt-accel-y -0.68266666 -3.4133334 1.0) + (sp-rnd-flt spt-friction 0.75 0.05 1.0) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit0 bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 749 1) + (sp-launcher-by-id spt-next-launcher 2355) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2655,82 +742,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x46000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47e00000 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1072369143 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1072369143 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 5 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-rnd-flt spt-scale-x (meters 28.0) (meters 4.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-g -2.3272727) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2741,100 +766,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45000000 - :random-range #x46000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x44800000 - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x437f0000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-value #x4519999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-value -1073182583 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1073182583 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1081571191 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 2.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.25) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 16.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-y (meters 0.6)) + (sp-flt spt-fade-r -2.1333334) + (sp-flt spt-fade-g -2.1333334) + (sp-flt spt-fade-a -1.0666667) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2846,337 +794,89 @@ :length 79 :duration #xbb8 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-evilsib-hover" :launcher (new 'static 'inline-array sparticle-group-item 79 - (new 'static 'sparticle-group-item :launcher #x952 :binding #x951) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) + (sp-item 2386 :binding 2385) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -3188,62 +888,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x44800000 - :random-range #x45c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x444ccccd - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1073540497 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4000 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.25) (meters 1.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-accel-y -2.048) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit14) + (sp-end) ) ) ) @@ -3254,146 +909,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value #x44800000 - :random-range #x44800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x434ccccd - :random-range #x42cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-value -1019868320 - :random-range #x43b60b60 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-value #x41360b61 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x3f91a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1027461563 - :random-range #x43422e45 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x40888889 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x408c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 30 - :random-range 14 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x954 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-z 1024.0 1024.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.025) 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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.04444444) (meters 0.08888888) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters 0.0027777778)) + (sp-flt spt-scalevel-x (meters 0.00027777778)) + (sp-rnd-flt spt-rotvel-z (degrees -0.53333336) (degrees 1.0666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 4.266667) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-int-plain-rnd spt-next-time 30 14 1) + (sp-launcher-by-id spt-next-launcher 2388) + (sp-end) ) ) ) @@ -3404,22 +944,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value #x96 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #x955 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 2389) + (sp-end) ) ) ) @@ -3430,31 +958,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-value -1039628151 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1076202482 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1081571191 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-vel-z (meters -0.008333334)) + (sp-flt spt-scalevel-x (meters -0.00041666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.0666667) + (sp-end) ) ) ) @@ -3465,101 +973,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3dcccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x44cccccd - :random-range #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42800000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1024081265 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1027461563 - :random-range #x43422e45 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1063675494 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1079065794 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 15 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 0.1) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.2) 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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters -0.03)) + (sp-rnd-flt spt-rotvel-z (degrees -0.53333336) (degrees 1.0666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -4.8) + (sp-flt spt-accel-y -1.3653333) + (sp-int spt-timer 15) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -3571,12 +1001,10 @@ :length 1 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-glowing-can" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x8fa) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2298)) :bounds (new 'static 'sphere :w 262144.0) ) ) @@ -3587,105 +1015,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value -998244352 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -998244352 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value -998244352 - :random-range #x45000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45800000 - :random-range #x45800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42c00000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1017482226 - :random-range #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1092979698 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x96 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.0) + (sp-rnd-flt spt-x (meters -0.25) (meters 0.5) 1.0) + (sp-rnd-flt spt-y (meters -0.25) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -1024.0 2048.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 0.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -3697,389 +1044,79 @@ :length 69 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-exploding-can" :launcher (new 'static 'inline-array sparticle-group-item 69 - (new 'static 'sparticle-group-item - :launcher #xae1 - :period #x708 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #xae2 - :period #x708 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #xae3 - :period #x708 - :length #x14 - ) - (new 'static 'sparticle-group-item - :launcher #xae4 - :period #x708 - :length #x14 - ) - (new 'static 'sparticle-group-item - :launcher #xb0e - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x128 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) + (sp-item 2785 :period 1800 :length 5) + (sp-item 2786 :period 1800 :length 40) + (sp-item 2787 :period 1800 :length 20) + (sp-item 2788 :period 1800 :length 20) + (sp-item 2830 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -4091,93 +1128,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-value -973078528 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value #x45800000 - :random-range #x46000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-value -973078528 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x435a740e - :random-range #x42da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1079065794 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f70a3d7 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #xf0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 8 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x46c71c72 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-z -8192.0 16384.0 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4188,133 +1154,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x41400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -977272832 - :random-range #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x44cccccd - :random-range #x454ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x4323d70a - :random-range #x4423d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1053899970 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1087454402 - :random-range -1087454402 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f666666 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 30 - :random-range 89 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #xae5 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x46aaaaab - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x46000000 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2789) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) ) ) ) @@ -4325,13 +1186,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1081571191 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -1.0666667) + (sp-end) ) ) ) @@ -4342,81 +1198,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x41400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4499999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-value #x47400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-value #x45851eb8 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1077097267 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 12.0)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 1.04)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -4427,68 +1222,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x47c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43400000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1072369143 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 54 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x400c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 24.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -4499,139 +1244,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x41800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -977272832 - :random-range #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x46400000 - :random-range #x45c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x43a3d70a - :random-range #x4323d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x42a3d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1025870834 - :random-range #x435a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1097751884 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value #x3f2ec33e - :random-range #x3f2ec33e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f4ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x1fe - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x4004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x46aaaaab - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-range #x46800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters 0.02)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.28444445) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0) + (sp-end) ) ) ) @@ -4643,210 +1278,46 @@ :length 36 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-dark-splash" :launcher (new 'static 'inline-array sparticle-group-item 36 - (new 'static 'sparticle-group-item - :launcher #x127 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x128 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x82f - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x830 - :fade-after (meters 80.0) - :falloff-to (meters 80.0) - :period #x258 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x831 - :period #x258 - :length #x14 - ) + (sp-item 295 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2095 :period 600 :length 5) + (sp-item 2096 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2097 :period 600 :length 20) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -4859,12 +1330,10 @@ :length 1 :duration #x5 :linger-duration #x384 - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-blow-dust" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #xae6) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2790)) :bounds (new 'static 'sphere :w 262144.0) ) ) @@ -4875,146 +1344,30 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 24 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42c00000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x42888889 - :random-range #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x41da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1017482226 - :random-range #x43da740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value #x3ecccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value #x3faec33e - :random-range -1079065794 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f6b851f - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-value 15 - :random-range 44 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-value #xb06 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x46a0b60b - :random-range #x43b60b61 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-value -988923676 - :random-range #x452aaaab - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-value #x4499999a - :random-range -989855744 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 64.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (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-a 0.4) + (sp-rnd-flt spt-accel-y 1.3653333 -1.3653333 1.0) + (sp-flt spt-friction 0.92) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-int-plain-rnd spt-next-time 15 44 1) + (sp-launcher-by-id spt-next-launcher 2822) + (sp-rnd-flt spt-conerot-x (degrees 112.99999) (degrees 2.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees -12.500001) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.3) (meters -0.5) 1.0) + (sp-end) ) ) ) @@ -5025,13 +1378,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1110651699 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.1) + (sp-end) ) ) ) @@ -5049,6 +1397,18 @@ :flag-assert #x35017001e0 ) +;; definition for method 3 of type sequenceB +(defmethod inspect sequenceB ((obj sequenceB)) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tbonelurker: ~D~%" (-> obj bonelurker)) + (format #t "~T~Tevilbro: ~D~%" (-> obj evilbro)) + (format #t "~T~Tevilsis: ~D~%" (-> obj evilsis)) + (format #t "~T~Tlurker-army[9] @ #x~X~%" (-> obj lurker-army)) + obj + ) + ;; definition of type sequenceC (deftype sequenceC (process-taskable) ((bonelurker handle :offset-assert 384) @@ -5061,6 +1421,21 @@ :flag-assert #x35015001b1 ) +;; definition for method 3 of type sequenceC +(defmethod inspect sequenceC ((obj sequenceC)) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tbonelurker: ~D~%" (-> obj bonelurker)) + (format #t "~T~Tdarkecocan: ~D~%" (-> obj darkecocan)) + (format + #t + "~T~Tdarkecocan-glowing-look: #~%" + (-> obj darkecocan-glowing-look) + ) + obj + ) + ;; failed to figure out what this is: (let ((v1-46 @@ -5159,6 +1534,16 @@ :flag-assert #x900000010 ) +;; definition for method 3 of type army-info +(defmethod inspect army-info ((obj army-info)) + (format #t "[~8x] ~A~%" obj 'army-info) + (format #t "~Tpos: #~%" (-> obj pos)) + (format #t "~Trot: ~f~%" (-> obj rot)) + (format #t "~Tstart-frame: ~f~%" (-> obj start-frame)) + (format #t "~Tskel: ~A~%" (-> obj skel)) + obj + ) + ;; definition for symbol *lurker-army*, type (array army-info) (define *lurker-army* @@ -6219,7 +2604,7 @@ (defbehavior sequenceC-can-trans-hook-2 sequenceC () (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (-> self node-list data 4)) - (dummy-11 (-> self part) gp-0) + (spawn (-> self part) gp-0) ) (when (>= (ja-aframe-num 0) 1590.0) (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) @@ -6743,3 +3128,7 @@ (dummy-42 obj) (none) ) + + + + diff --git a/goal_src/levels/ogre/flying-lurker.gc b/goal_src/levels/ogre/flying-lurker.gc index 3ff89ad32a..085baea5eb 100644 --- a/goal_src/levels/ogre/flying-lurker.gc +++ b/goal_src/levels/ogre/flying-lurker.gc @@ -763,7 +763,7 @@ (set! (-> s3-1 normal w) 8192.0) (when (and - (sphere-in-view-frustum? (-> s3-1 normal)) + (sphere-in-view-frustum? (the-as sphere (-> s3-1 normal))) (< 822083600.0 (vector-vector-distance-squared (-> s3-1 normal) (camera-pos)) diff --git a/goal_src/levels/village1/assistant.gc b/goal_src/levels/village1/assistant.gc index 0e069ad294..1aa5a8c6a7 100644 --- a/goal_src/levels/village1/assistant.gc +++ b/goal_src/levels/village1/assistant.gc @@ -6,7 +6,6 @@ ;; dgos: L1, VI1 (define-extern *assistant-sg* skeleton-group) - ;; definition of type assistant (deftype assistant (process-taskable) ((sound-id sound-id :offset-assert 380) @@ -17,6 +16,15 @@ :flag-assert #x3501100180 ) +;; definition for method 3 of type assistant +(defmethod inspect assistant ((obj assistant)) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tsound-id: ~D~%" (-> obj sound-id)) + obj + ) + ;; failed to figure out what this is: (let ((v1-1 @@ -556,7 +564,7 @@ ) ) (until (ja-done? 0) - (dummy-11 + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) @@ -612,7 +620,7 @@ ) ) (until (ja-done? 0) - (dummy-11 + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) @@ -877,16 +885,8 @@ :name "group-assistant-torch" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x16d - :fade-after (meters 30.0) - :falloff-to (meters 30.0) - ) - (new 'static 'sparticle-group-item - :launcher #x16e - :fade-after (meters 60.0) - :falloff-to (meters 80.0) - ) + (sp-item 365 :fade-after (meters 30.0) :falloff-to (meters 30.0)) + (sp-item 366 :fade-after (meters 60.0) :falloff-to (meters 80.0)) ) :bounds (new 'static 'sphere :w 61440.0) ) @@ -898,76 +898,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3dcccccd - :random-range #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45800000 - :random-range #x46400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x42c80000 - :random-range #x41e00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42c80000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42a00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1060320051 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 10 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 0.1 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 3.0) 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 100.0 28.0 1.0) + (sp-flt spt-g 100.0) + (sp-flt spt-b 80.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-fade-a -6.4) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -978,131 +921,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3dcccccd - :random-range #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x43cccccd - :random-range #x43cccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x425a740e - :random-range #x43a3d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1087454402 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1102263091 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-value -1102263091 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1056763281 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-value #x3f6e147b - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x4b0 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-value #x48090000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'check-drop-level-assistant - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-value #x46000000 - :random-range #x47000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.1 1.0 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-rnd-flt spt-r 128.0 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.08) 1.0) + (sp-flt spt-scalevel-x (meters -0.00016666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.2) + (sp-flt spt-fade-b -0.2) + (sp-flt spt-accel-y -8.192) + (sp-flt spt-friction 0.93) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 140288.0) + (sp-func spt-func 'check-drop-level-assistant) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 45.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1113,90 +953,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40400000 - :random-range #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4399999a - :random-range #x4399999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42c00000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-value #x423f258c - :random-range #x415a740e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1084591090 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value -1087454402 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x12c - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-value #x460e38e4 - :random-range #x45aaaaab - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 3.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.075) (meters 0.075) 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 96.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.011666667) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-accel-y -0.68266666) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-conerot-x (degrees 50.000004) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1228,8 +999,8 @@ *sp-particle-system-2d* (-> *part-id-table* 367) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -1259,3 +1030,7 @@ ) (none) ) + + + + diff --git a/goal_src/levels/village3/miners.gc b/goal_src/levels/village3/miners.gc index d2a54cdbc9..b4e0cdcbb8 100644 --- a/goal_src/levels/village3/miners.gc +++ b/goal_src/levels/village3/miners.gc @@ -6,8 +6,10 @@ ;; dgos: L1, VI3 (declare-type minershort process-taskable) +(define-extern *cavegem-sg* skeleton-group) +(define-extern *minershort-sg* skeleton-group) +(define-extern *minertall-sg* skeleton-group) -;; definition for function miners-anim-loop (defbehavior miners-anim-loop minershort () (when (!= (if (> (-> self skel active-channels) 0) (-> self skel root-channel 0 frame-group) @@ -37,10 +39,6 @@ (none) ) -(define-extern *cavegem-sg* skeleton-group) -(define-extern *minershort-sg* skeleton-group) -(define-extern *minertall-sg* skeleton-group) - ;; definition of type minertall (deftype minertall (process-taskable) () @@ -50,15 +48,12 @@ :flag-assert #x350110017c ) -;; I reordered this! -;; definition of type minershort -(deftype minershort (process-taskable) - ((other-miner minertall :offset-assert 380) +;; definition for method 3 of type minertall +(defmethod inspect minertall ((obj minertall)) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) ) - :heap-base #x110 - :method-count-assert 53 - :size-assert #x180 - :flag-assert #x3501100180 + obj ) ;; failed to figure out what this is: @@ -168,6 +163,25 @@ (none) ) +;; definition of type minershort +(deftype minershort (process-taskable) + ((other-miner minertall :offset-assert 380) + ) + :heap-base #x110 + :method-count-assert 53 + :size-assert #x180 + :flag-assert #x3501100180 + ) + +;; definition for method 3 of type minershort +(defmethod inspect minershort ((obj minershort)) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tother-miner: ~A~%" (-> obj other-miner)) + obj + ) + ;; failed to figure out what this is: (let ((v1-7 @@ -196,21 +210,9 @@ :name "group-minershort-candle" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item - :launcher #x93c - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) - (new 'static 'sparticle-group-item - :launcher #x93d - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) - (new 'static 'sparticle-group-item - :launcher #x93e - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) + (sp-item 2364 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 2365 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 2366 :fade-after (meters 60.0) :falloff-to (meters 60.0)) ) :bounds (new 'static 'sphere :w 61440.0) ) @@ -222,152 +224,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200000) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-range #x40000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x4399999a - :random-range #x4399999a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x43000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-value #x43000000 - :random-range #x41800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-range #x3faec33e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value #x4003126f - :random-range #x4083126f - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-value -1039031628 - :random-range #x4291a2b4 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-value -1096283519 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1096283519 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-value -1096283519 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1104672127 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value #x3e0bcf65 - :random-range #x3e8bcf65 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value #x186 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value #x5004 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-range #x434ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-scale-x (meters 0.075) (meters 0.075) 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-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.00033333333) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0005) (meters 0.001) 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-r -0.32820514) + (sp-flt spt-fade-g -0.32820514) + (sp-flt spt-fade-b -0.32820514) + (sp-flt spt-fade-a -0.16410257) + (sp-rnd-flt spt-accel-y 0.13653333 0.27306667 1.0) + (sp-int spt-timer 390) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.05) 1.0) + (sp-end) ) ) ) @@ -378,109 +259,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x200f00) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x40400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -1012672758 - :random-range #x42a3d70a - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x444ccccd - :random-range #x444ccccd - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x42000000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :random-range #x3f2ec33e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :random-range #x3f2ec33e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1059425266 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1086977183 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value #x3f8bcf65 - :random-range #x3e8bcf65 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 60 - :random-range 29 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 8 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-y (meters -0.08) (meters 0.02) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.0) (meters 0.00016666666) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.0) (meters 0.00016666666) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.7111111) + (sp-rnd-flt spt-accel-y 1.0922667 0.27306667 1.0) + (sp-int-plain-rnd spt-timer 60 29 1) + (sp-cpuinfo-flags bit3) + (sp-end) ) ) ) @@ -491,119 +287,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec :field #x1 :initial-value #x201200) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-value #x3f800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-value -1029449974 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-value #x45000000 - :random-range #x45400000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-range #x47800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-value #x43000000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-value #x42800000 - :random-range #x42800000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-value #x41800000 - :random-range #x42000000 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :random-range #x3f2ec33e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :random-range #x3f2ec33e - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-value -1059425266 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-value -4 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-value -1086977183 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-value -1074412913 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-value #x3f8bcf65 - :random-range #x3e8bcf65 - :random-mult #x3f800000 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-value 20 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-value 12 - :random-mult 1 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.02)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.75) 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-rnd-flt spt-g 64.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.0) (meters 0.00016666666) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.0) (meters 0.00016666666) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-a -1.92) + (sp-rnd-flt spt-accel-y 1.0922667 0.27306667 1.0) + (sp-int spt-timer 20) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -655,8 +358,9 @@ ) ;; definition for function minershort-trans-hook +;; INFO: Return type mismatch object vs none. (defbehavior minershort-trans-hook minershort () - (dummy-11 + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 14)) ) @@ -892,7 +596,11 @@ ) ) ((= v1-59 1) - (if (!= (get-task-status (game-task cave-gnawers)) (task-status need-reminder)) + (if + (!= + (get-task-status (game-task cave-gnawers)) + (task-status need-reminder) + ) (set! s4-2 2) ) ) @@ -922,7 +630,11 @@ ) ) (else - (if (!= (get-task-status (game-task snow-eggtop)) (task-status need-reminder)) + (if + (!= + (get-task-status (game-task snow-eggtop)) + (task-status need-reminder) + ) (set! s4-2 0) ) ) diff --git a/goal_src/levels/village_common/oracle.gc b/goal_src/levels/village_common/oracle.gc index 00506da516..ba88a47939 100644 --- a/goal_src/levels/village_common/oracle.gc +++ b/goal_src/levels/village_common/oracle.gc @@ -658,7 +658,7 @@ ) ) ) - (dummy-11 + (spawn (-> self part) (the-as vector a1-1) ) diff --git a/goalc/compiler/compilation/Static.cpp b/goalc/compiler/compilation/Static.cpp index fc84796bd7..a0f4f0da6e 100644 --- a/goalc/compiler/compilation/Static.cpp +++ b/goalc/compiler/compilation/Static.cpp @@ -461,7 +461,9 @@ Val* Compiler::compile_bitfield_definition(const goos::Object& form, auto xmm_temp = fe->make_ireg(TypeSpec("object"), RegClass::INT_128); for (auto& def : dynamic_defs) { - auto field_val = compile_error_guard(def.definition, env)->to_gpr(def.definition, env); + auto field_val_in = compile_error_guard(def.definition, env)->to_gpr(def.definition, env); + auto field_val = env->make_gpr(field_val_in->type()); + env->emit_ir(form, field_val, field_val_in); if (!m_ts.tc(def.expected_type, field_val->type())) { throw_compiler_error(form, "Typecheck failed for bitfield {}! Got a {} but expected a {}", def.field_name, field_val->type().print(), @@ -501,7 +503,9 @@ Val* Compiler::compile_bitfield_definition(const goos::Object& form, } else { RegVal* integer_reg = integer->to_gpr(form, env); for (auto& def : dynamic_defs) { - auto field_val = compile_error_guard(def.definition, env)->to_gpr(def.definition, env); + auto field_val_in = compile_error_guard(def.definition, env)->to_gpr(def.definition, env); + auto field_val = env->make_gpr(field_val_in->type()); + env->emit_ir(form, field_val, field_val_in); if (!m_ts.tc(def.expected_type, field_val->type())) { throw_compiler_error(form, "Typecheck failed for bitfield {}! Got a {} but expected a {}", def.field_name, field_val->type().print(), @@ -945,7 +949,7 @@ void Compiler::fill_static_inline_array_inline(const goos::Object& form, for (size_t i = 4; i < args.size(); i++) { auto arg_idx = i - 4; int elt_offset = arg_idx * deref_info.stride; - auto& elt_def = args.at(i); + auto elt_def = expand_macro_completely(args.at(i), env); if (!elt_def.is_list()) { throw_compiler_error(form, "Element in static inline-array must be a {}. Got {}", content_type.print(), elt_def.print()); diff --git a/goalc/debugger/disassemble.cpp b/goalc/debugger/disassemble.cpp index 1aabe68241..ff9554fc89 100644 --- a/goalc/debugger/disassemble.cpp +++ b/goalc/debugger/disassemble.cpp @@ -151,7 +151,13 @@ std::string disassemble_x86_function(u8* data, std::string line; - line += fmt::format("{:c} [0x{:X}] ", prefix, base_addr); + if (prefix != ' ') { + line += fmt::format(fmt::emphasis::bold | fg(fmt::color::red), "{:c} [0x{:X}] ", prefix, + base_addr); + } else { + line += fmt::format("{:c} [0x{:X}] ", prefix, base_addr); + } + ZydisFormatterFormatInstruction(&formatter, &instr, print_buff, print_buff_size, base_addr); line += print_buff; diff --git a/goalc/emitter/Register.h b/goalc/emitter/Register.h index 9b86782e62..c7f0f09e43 100644 --- a/goalc/emitter/Register.h +++ b/goalc/emitter/Register.h @@ -5,9 +5,6 @@ * Representation of an x86-64 Register. */ -#ifndef JAK_REGISTER_H -#define JAK_REGISTER_H - #include "common/util/assert.h" #include #include @@ -165,5 +162,3 @@ class RegisterInfo { extern RegisterInfo gRegInfo; } // namespace emitter - -#endif // JAK_REGISTER_H diff --git a/goalc/listener/MemoryMap.cpp b/goalc/listener/MemoryMap.cpp index 544f390faf..1c5197b7f1 100644 --- a/goalc/listener/MemoryMap.cpp +++ b/goalc/listener/MemoryMap.cpp @@ -4,21 +4,14 @@ #include "MemoryMap.h" #include "third-party/fmt/core.h" #include "common/link_types.h" - -namespace { -uint32_t align16(uint32_t in) { - return (in + 15) & (~15); -} - -const char* segment_names[3] = {"main", "debug", "top-level"}; -} // namespace +#include "common/util/BitUtils.h" namespace listener { std::string LoadEntry::print() const { std::string result; const SegmentTypes types[3] = {MAIN_SEGMENT, DEBUG_SEGMENT, TOP_LEVEL_SEGMENT}; for (int i = 0; i < 3; i++) { - result += fmt::format("{} : 0x{:x} size 0x{:x}\n", segment_names[i], segments[int(types[i])], + result += fmt::format("{} : 0x{:x} size 0x{:x}\n", SEGMENT_NAMES[i], segments[int(types[i])], segment_sizes[int(types[i])]); } return result; @@ -100,7 +93,7 @@ std::string MemoryMap::print() const { result += fmt::format( " [0x{:08x}] SEGMENT of 0x{:x} bytes, until 0x{:x}\n name: {}\n kind: {}\n", entry.start_addr, entry.end_addr - entry.start_addr, entry.end_addr, entry.obj_name, - segment_names[entry.seg_id]); + SEGMENT_NAMES[entry.seg_id]); } result += std::string(40, '-'); result += '\n'; diff --git a/goalc/make/MakeSystem.cpp b/goalc/make/MakeSystem.cpp index c8a9451cc5..08f90bd124 100644 --- a/goalc/make/MakeSystem.cpp +++ b/goalc/make/MakeSystem.cpp @@ -318,7 +318,11 @@ bool MakeSystem::make(const std::string& target, bool force, bool verbose) { print_input(rule->input, '\n'); } else { fmt::print("[{:3d}%] [{:8s}] {:.3f} ", percent, tool->name(), step_timer.getSeconds()); - print_input(rule->input, '\r'); + if (tool->name() == "goalc") { + print_input(rule->input, '\r'); + } else { + print_input(rule->input, '\n'); + } } } } diff --git a/test/decompiler/reference/decompiler-macros.gc b/test/decompiler/reference/decompiler-macros.gc index 6ce7292197..c8c7b337a4 100644 --- a/test/decompiler/reference/decompiler-macros.gc +++ b/test/decompiler/reference/decompiler-macros.gc @@ -610,4 +610,130 @@ `((the (function _varargs_ object) set-to-run) (-> ,proc main-thread) ,func ,@args ) - ) \ No newline at end of file + ) + +(defmacro sp-item (launcher + &key (fade-after 0.0) + &key (falloff-to 0.0) + &key (flags ()) + &key (period 0) + &key (length 0) + &key (offset 0) + &key (hour-mask 0) + &key (binding 0) + ) + `(new 'static 'sparticle-group-item + :launcher ,launcher + :fade-after ,fade-after + :falloff-to ,falloff-to + :flags (sp-group-item-flag ,@flags) + :period ,period + :length ,length + :offset ,offset + :hour-mask ,hour-mask + :binding ,binding + ) + ) + +(defmacro sp-tex (field-name tex-id) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-name) :tex ,tex-id) + ) + +(defmacro sp-rnd-flt (field-name val range mult) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-valuef ,val + :random-rangef ,range + :random-multf ,mult + :flags (sp-flag float-with-rand) + ) + ) + +(defmacro sp-flt (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-valuef ,val + :random-rangef 0.0 + :random-multf 1.0 + :flags (sp-flag float-with-rand) + ) + ) + +(defmacro sp-int (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :random-range 0 + :random-mult 1 + ) + ) + +(defmacro sp-int-plain-rnd (field-name val range mult) + "For when we use plain integer, but set the randoms." + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :random-range ,range + :random-mult ,mult + ) + ) + +(defmacro sp-rnd-int (field-name val range mult) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :random-range ,range + :random-multf ,mult + :flags (sp-flag int-with-rand) + ) + ) + + +(defmacro sp-rnd-int-flt (field-name val range mult) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-valuef ,val + :random-range ,range + :random-multf ,mult + :flags (sp-flag int-with-rand) + ) + ) + +(defmacro sp-cpuinfo-flags (&rest flags) + `(new 'static 'sp-field-init-spec + :field (sp-field-id spt-flags) + :initial-value (sp-cpuinfo-flag ,@flags) + :random-mult 1 + ) + ) + +(defmacro sp-launcher-by-id (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,val + :flags (sp-flag part-by-id) + ) + ) + +(defmacro sp-func (field-name val) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :sym ,val + :flags (sp-flag from-pointer) + ) + ) + +(defmacro sp-end () + `(new 'static 'sp-field-init-spec + :field (sp-field-id spt-end) + ) + ) + +(defmacro sp-copy-from-other (field-name offset) + `(new 'static 'sp-field-init-spec + :field (sp-field-id ,field-name) + :initial-value ,offset + :random-mult 1 + :flags (sp-flag copy-from-other-field) + ) + ) diff --git a/test/decompiler/reference/engine/ambient/weather-part_REF.gc b/test/decompiler/reference/engine/ambient/weather-part_REF.gc index 192bbe93b6..95afe7898f 100644 --- a/test/decompiler/reference/engine/ambient/weather-part_REF.gc +++ b/test/decompiler/reference/engine/ambient/weather-part_REF.gc @@ -8,76 +8,76 @@ :length 66 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-rain-screend-drop-real" :launcher (new 'static 'inline-array sparticle-group-item 66 - (new 'static 'sparticle-group-item :launcher #x12 :binding #x13) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x13 :flags #xc :binding #x14) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x14 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x15 :binding #x16) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x16 :flags #xc :binding #x17) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x17 :flags #xc) + (sp-item 18 :binding 19) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 21 :binding 22) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 65536.0) ) @@ -92,101 +92,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.1 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -18432.0 - :random-rangef 36864.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -12288.0 - :random-rangef 24576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 10240.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 682.6667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 0.1) + (sp-rnd-flt spt-x (meters -4.5) (meters 9.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-flt spt-scale-x (meters 2.5)) + (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-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 12.0) + (sp-flt spt-scalevel-x (meters 0.16666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -197,97 +119,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200900) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 136.53334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x10e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x18) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.5)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 20.0) + (sp-flt spt-scalevel-x (meters 0.033333335)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 24) + (sp-end) ) ) ) @@ -298,25 +146,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 17.066668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.06666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-scalevel-x (meters 0.004166667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.06666667) + (sp-end) ) ) ) @@ -327,80 +160,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef 6.068148 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef 68.26667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef 3.034074 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x10e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x100) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x1e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x19) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-num 1.0) + (sp-int spt-rot-x 12) + (sp-flt spt-r 4096.0) + (sp-flt spt-g 3276.8) + (sp-flt spt-b 3276.8) + (sp-flt spt-fade-r 6.068148) + (sp-flt spt-fade-g 68.26667) + (sp-flt spt-fade-b 3.034074) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 25) + (sp-end) ) ) ) @@ -411,13 +184,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -5.1200004 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-g -5.1200004) + (sp-end) ) ) ) @@ -428,101 +196,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.1 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -18432.0 - :random-rangef 36864.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -12288.0 - :random-rangef 24576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 1092.2667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 0.1) + (sp-rnd-flt spt-x (meters -4.5) (meters 9.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-flt spt-scale-x (meters 4.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-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 12.0) + (sp-flt spt-scalevel-x (meters 0.26666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -533,97 +223,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200900) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 10649.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 273.06668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x10e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x1a) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 20.0) + (sp-flt spt-scalevel-x (meters 0.06666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.8) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 26) + (sp-end) ) ) ) @@ -634,25 +250,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 34.133335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.06666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-scalevel-x (meters 0.008333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.06666667) + (sp-end) ) ) ) @@ -663,80 +264,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x18) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef 12.136296 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef 136.53334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef 6.068148 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x10e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x100) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x1e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x1b) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-num 1.0) + (sp-int spt-rot-x 24) + (sp-flt spt-r 12288.0) + (sp-flt spt-g 6553.6) + (sp-flt spt-b 6553.6) + (sp-flt spt-fade-r 12.136296) + (sp-flt spt-fade-g 136.53334) + (sp-flt spt-fade-b 6.068148) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 270) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 27) + (sp-end) ) ) ) @@ -747,13 +288,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -10.240001 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-g -10.240001) + (sp-end) ) ) ) @@ -765,13 +301,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x2 + :flags (sp-group-flag always-draw) :name "group-stars" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x1c) - (new 'static 'sparticle-group-item :launcher #x1d) - (new 'static 'sparticle-group-item :launcher #x1e) + (sp-item 28) + (sp-item 29) + (sp-item 30) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -783,101 +319,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 163840.0 - :random-rangef 163840.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #xef) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x1f) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef -16201.955 - :random-rangef 32403.91 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 262144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 20480000.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 40.0) (meters 40.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 256.0) + (sp-flt spt-b 256.0) + (sp-flt spt-a 0.0) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 60 239 1) + (sp-launcher-by-id spt-next-launcher 31) + (sp-rnd-flt spt-conerot-x (degrees -89.0) (degrees 178.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 1440.0) 1.0) + (sp-flt spt-conerot-radius (meters 5000.0)) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -888,19 +347,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef - 0.000000000000000000000000000000000000074114586 - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x20) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 29999700) + (sp-launcher-by-id spt-next-launcher 32) + (sp-end) ) ) ) @@ -911,13 +361,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.42666668) + (sp-end) ) ) ) @@ -928,101 +373,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 163840.0 - :random-rangef 163840.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #xef) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x1f) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 10740.622 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 524288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 20480000.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 40.0) (meters 40.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 256.0) + (sp-flt spt-b 256.0) + (sp-flt spt-a 0.0) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 60 239 1) + (sp-launcher-by-id spt-next-launcher 31) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 59.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 2880.0) 1.0) + (sp-flt spt-conerot-radius (meters 5000.0)) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1033,101 +401,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 163840.0 - :random-rangef 163840.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #xef) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x1f) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5279.289 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 1048576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 20480000.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 40.0) (meters 40.0) 1.0) + (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-flt spt-a 0.0) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int-plain-rnd spt-next-time 60 239 1) + (sp-launcher-by-id spt-next-launcher 31) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 29.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 5760.0) 1.0) + (sp-flt spt-conerot-radius (meters 5000.0)) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1138,121 +429,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef 40960.0 - :random-rangef 40960.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 57344.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef -40.96 - :random-rangef -13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x4b) - :random-rangef (the-as float #x4a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x23) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-x (meters 10.0) (meters 10.0) 1.0) + (sp-rnd-flt spt-y (meters 2.0) (meters 14.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (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-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters -0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a 0.85333335) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int-plain-rnd spt-next-time 75 74 1) + (sp-launcher-by-id spt-next-launcher 35) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1263,114 +460,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec :field #x6 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 81920.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef -40.96 - :random-rangef -13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x4b) - :random-rangef (the-as float #x4a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x23) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 0.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 20.0) 1.0) + (sp-flt spt-y (meters 16.0)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (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-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters -0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a 0.85333335) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int-plain-rnd spt-next-time 75 74 1) + (sp-launcher-by-id spt-next-launcher 35) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1381,18 +491,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x4b0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x24) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 1200) + (sp-launcher-by-id spt-next-launcher 36) + (sp-end) ) ) ) @@ -1403,13 +505,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.85333335) + (sp-end) ) ) ) @@ -1440,16 +537,16 @@ *sp-particle-system-2d* (-> *part-id-table* 34) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 33) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -1463,99 +560,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 81920.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 122.88 - :random-rangef 122.88 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 50.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 80.0 - :random-rangef 55.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 50.0 - :random-rangef 50.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef -273.06668 - :random-rangef -546.13336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x30 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'check-drop-level-rain - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 1.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 20.0) 1.0) + (sp-flt spt-y (meters 16.0)) + (sp-rnd-flt spt-scale-x (meters 0.03) (meters 0.03) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.5) 1.0) + (sp-flt spt-r 50.0) + (sp-rnd-flt spt-g 80.0 55.0 1.0) + (sp-rnd-flt spt-b 50.0 50.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.06666667) (meters -0.13333334) 1.0) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit2 bit14) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'check-drop-level-rain) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1566,93 +587,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 4.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 81920.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 122.88 - :random-rangef 122.88 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 50.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 80.0 - :random-rangef 55.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 50.0 - :random-rangef 50.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef -273.06668 - :random-rangef -136.53334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 4.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 20.0) 1.0) + (sp-flt spt-y (meters 16.0)) + (sp-rnd-flt spt-scale-x (meters 0.03) (meters 0.03) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.5) 1.0) + (sp-flt spt-r 50.0) + (sp-rnd-flt spt-g 80.0 55.0 1.0) + (sp-rnd-flt spt-b 50.0 50.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.06666667) (meters -0.033333335) 1.0) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1663,100 +612,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200900) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 2.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 204.8 - :random-rangef 307.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 110.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 4551.1113 - :random-rangef 7281.778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-rnd-int spt-num 0 1 2.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.075) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 110.0 32.0 1.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-accel-y -2.7306666) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-rnd-flt spt-conerot-x (degrees 25.000002) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1767,105 +638,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201e00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xf - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 110.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 27.306667 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x78) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.02)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 110.0 32.0 1.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 16.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-flt spt-fade-a -0.4) + (sp-int spt-timer 120) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1880,16 +669,16 @@ *sp-particle-system-2d* (-> *part-id-table* 39) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) (sp-launch-particles-var *sp-particle-system-3d* (-> *part-id-table* 40) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -1951,16 +740,16 @@ *sp-particle-system-2d* (-> *part-id-table* 37) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 38) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -2002,7 +791,7 @@ (-> *part-id-table* 20 init-specs 8 initial-valuef) (* -2.7306666 (-> self water-drip-speed)) ) - (dummy-11 (-> self water-drip) *zero-vector*) + (spawn (-> self water-drip) *zero-vector*) ) 0 (none) @@ -2073,13 +862,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x2 + :flags (sp-group-flag always-draw) :name "group-sun" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x79e) - (new 'static 'sparticle-group-item :launcher #x79f) - (new 'static 'sparticle-group-item :launcher #x7a0) + (sp-item 1950) + (sp-item 1951) + (sp-item 1952) ) :bounds (new 'static 'sphere :w 286720.0) ) @@ -2091,69 +880,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4915200.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x500c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x30 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1200.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 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit12 bit14) + (sp-flt spt-userdata 0.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2164,81 +903,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203500) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 11468800.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x10 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 9011200.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -9.102222 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2800.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 2200.0)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 32.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees -0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 1.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2249,81 +928,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203500) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 9011200.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x10 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 11468800.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef 9.102222 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 2.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2200.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 2800.0)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 32.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees 0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 2.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2335,13 +954,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x2 + :flags (sp-group-flag always-draw) :name "group-green-sun" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x7b6) - (new 'static 'sparticle-group-item :launcher #x7b7) - (new 'static 'sparticle-group-item :launcher #x7b8) + (sp-item 1974) + (sp-item 1975) + (sp-item 1976) ) :bounds (new 'static 'sphere :w 286720.0) ) @@ -2353,59 +972,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457600.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 600.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 0.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 4.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2416,71 +995,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203500) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 5734400.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x10 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 4505600.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -9.102222 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 5.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1400.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 1100.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees -0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 5.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) @@ -2491,71 +1020,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203500) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4505600.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x10 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 5734400.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef 9.102222 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-sun - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1100.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 1400.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-flt spt-rotvel-z (degrees 0.05)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata 6.0) + (sp-func spt-func 'sparticle-track-sun) + (sp-end) ) ) ) + + + + diff --git a/test/decompiler/reference/engine/game/projectiles_REF.gc b/test/decompiler/reference/engine/game/projectiles_REF.gc index 7087e41630..d8fe97c264 100644 --- a/test/decompiler/reference/engine/game/projectiles_REF.gc +++ b/test/decompiler/reference/engine/game/projectiles_REF.gc @@ -341,196 +341,40 @@ :name "group-yellow-eco-fireball" :launcher (new 'static 'inline-array sparticle-group-item 34 - (new 'static 'sparticle-group-item - :launcher #x15d - :flags #x8 - :binding #x15e - ) - (new 'static 'sparticle-group-item - :launcher #x15e - :flags #xc - :binding #x15f - ) - (new 'static 'sparticle-group-item - :launcher #x15f - :flags #xc - :binding #x160 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x160 - :flags #x4 - :binding #x161 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x161 - :fade-after (meters 100.0) - :falloff-to (meters 100.0) - :flags #x4 - ) + (sp-item 349 :flags (launch-asap) :binding 350) + (sp-item 350 :flags (start-dead launch-asap) :binding 351) + (sp-item 351 :flags (start-dead launch-asap) :binding 352) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) ) :bounds (new 'static 'sphere :w 12288.0) ) @@ -542,45 +386,15 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 9 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x4b0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'sparticle-track-root-prim - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.01)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit3) + (sp-func spt-func 'sparticle-track-root-prim) + (sp-end) ) ) ) @@ -591,93 +405,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 16384.0 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xc :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x2 - :initial-valuef -436.90668 - :random-rangef (the-as float #x1) - :random-multf 873.81335 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -72.81778 - :random-rangef (the-as float #x1) - :random-multf 145.63556 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x4b0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-y (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-z 0.0) + (sp-flt spt-scale-x (meters 5.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 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 32.0) + (sp-rnd-int-flt spt-vel-x (meters -0.10666667) 1 873.81335) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.4) 1 145.63556) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -688,92 +431,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 2.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xc :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 461.17926 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -54.613335 - :random-rangef (the-as float #x1) - :random-multf 109.22667 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x4b0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-flt spt-z 0.0) + (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 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 64.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-flt spt-vel-x (meters 0.11259259)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -784,91 +457,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -54.613335 - :random-rangef (the-as float #x1) - :random-multf 109.22667 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x36) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (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 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.02)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -879,141 +482,30 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 24 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.5 - :random-rangef 0.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -204.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 100.0 - :random-rangef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 47.786667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -3.7236366 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.024242423 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.40960002 - :random-rangef -1.2288 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.93 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #x12b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x162) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-flt spt-y (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.011666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.4) + (sp-flt spt-fade-a -0.024242423) + (sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0) + (sp-flt spt-friction 0.93) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 354) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.3)) + (sp-end) ) ) ) @@ -1024,8 +516,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec :field #x21 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r 0.0) + (sp-end) ) ) ) @@ -1041,35 +533,26 @@ "group-part-yellow-eco-fireball-launcher" :launcher (new 'static 'inline-array sparticle-group-item 20 - (new 'static 'sparticle-group-item :launcher #x163 :flags #x8) - (new 'static 'sparticle-group-item - :launcher #x164 - :flags #x2 - :period #x276 - :length #xf - ) - (new 'static 'sparticle-group-item :launcher #x165 :flags #x8) - (new 'static 'sparticle-group-item - :launcher #x166 - :flags #x8 - :binding #x167 - ) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x167 :flags #xc) + (sp-item 355 :flags (launch-asap)) + (sp-item 356 :flags (bit1) :period 630 :length 15) + (sp-item 357 :flags (launch-asap)) + (sp-item 358 :flags (launch-asap) :binding 359) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 24576.0) ) @@ -1081,83 +564,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -273.06668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -37282.703 - :random-rangef (the-as float #x1) - :random-multf 74565.41 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 8.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-flt spt-g 128.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.06666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -204.8) 1 74565.41) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1168,131 +589,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 5.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -2457.6 - :random-rangef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -2457.6 - :random-rangef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -2457.6 - :random-rangef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-rangef 3072.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 100.0 - :random-rangef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 18.204445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -54.613335 - :random-rangef 109.22667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.14222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.14222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.06826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1c2) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-x (meters -0.6) (meters 1.2) 1.0) + (sp-rnd-flt spt-y (meters -0.6) (meters 1.2) 1.0) + (sp-rnd-flt spt-z -2457.6 4915.2 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.75) 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 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.0044444446)) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.14222223) + (sp-flt spt-fade-a -0.14222223) + (sp-flt spt-accel-y -0.06826667) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1303,117 +620,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 100.0 - :random-rangef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -10.240001 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -1.0666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.99 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #x3b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 21845.334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-valuef 16384.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.0025000002)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-flt spt-friction 0.99) + (sp-int-plain-rnd spt-timer 60 59 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1424,116 +650,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 24.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 100.0 - :random-rangef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -10.240001 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -1.0666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.99 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #x3b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 24.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.0025000002)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-flt spt-friction 0.99) + (sp-int-plain-rnd spt-timer 60 59 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1544,77 +680,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.99 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x14a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 18204.445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-valuef 16384.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 16.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-accel-y -2.048) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 330) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1625,76 +703,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.99 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x14a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-accel-y -2.048) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 330) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1705,125 +726,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 409.6 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 100.0 - :random-rangef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -3.7236366 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -54.613335 - :random-rangef (the-as float #x1) - :random-multf 109.22667 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.26666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.19393939 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5a) - :random-rangef (the-as float #xef) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 409.6 819.2 1.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (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-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-flt spt-vel-x (meters 0.10666667)) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 90 239 1) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -1835,34 +758,14 @@ :length 4 :duration #x258 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-part-yellow-eco-fireball-hit" :launcher (new 'static 'inline-array sparticle-group-item 4 - (new 'static 'sparticle-group-item - :launcher #x80b - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x80c - :fade-after (meters 80.0) - :falloff-to (meters 80.0) - :period #x258 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x80d - :period #x258 - :length #x14 - ) - (new 'static 'sparticle-group-item - :launcher #x80e - :fade-after (meters 120.0) - :falloff-to (meters 120.0) - :period #x258 - :length #x14 - ) + (sp-item 2059 :period 600 :length 5) + (sp-item 2060 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2061 :period 600 :length 20) + (sp-item 2062 :fade-after (meters 120.0) :falloff-to (meters 120.0) :period 600 :length 20) ) :bounds (new 'static 'sphere :w 24576.0) ) @@ -1874,124 +777,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 109.22667 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.68266666 - :random-rangef -0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.9 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #x1d) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x80f) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 29 1) + (sp-launcher-by-id spt-next-launcher 2063) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) ) ) ) @@ -2002,16 +808,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec :field #x21 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x22 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x23 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.4222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.4222223) + (sp-end) ) ) ) @@ -2022,77 +823,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 1747.6267 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 8.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 0.42666668)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2103,65 +847,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.7454545 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x36) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 16.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -1.7454545) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2172,139 +869,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 10240.0 - :random-rangef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -54.613335 - :random-rangef 109.22667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.68266666 - :random-rangef 0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1fe) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x2a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x810) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.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-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.6) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 42) + (sp-launcher-by-id spt-next-launcher 2064) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2315,31 +902,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.53333336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.53333336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -1.0666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.53333336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r -0.53333336) + (sp-flt spt-fade-g -0.53333336) + (sp-flt spt-fade-b -1.0666667) + (sp-flt spt-fade-a -0.53333336) + (sp-end) ) ) ) @@ -2347,7 +914,7 @@ ;; definition for method 24 of type projectile ;; INFO: Return type mismatch int vs none. (defmethod dummy-24 projectile ((obj projectile)) - (dummy-11 + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core)) ) @@ -3024,14 +1591,14 @@ ) 0 ) - (dummy-11 + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core)) ) ) ) (else - (dummy-11 + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core)) ) @@ -3380,3 +1947,7 @@ (none) ) ) + + + + diff --git a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc index bcaa524faa..5f87732219 100644 --- a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc +++ b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc @@ -230,121 +230,30 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :initial-valuef -32768.0 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 90.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 90.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 90.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 20.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 8.192 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 17.066668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.3 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x138c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x36 - :flags #x1 - :initial-valuef -3640.889 - :random-rangef 2730.6667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-valuef -32768.0 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees -180.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 90.0) + (sp-flt spt-g 90.0) + (sp-flt spt-b 90.0) + (sp-rnd-flt spt-a 20.0 20.0 1.0) + (sp-flt spt-vel-y (meters 0.002)) + (sp-flt spt-scalevel-x (meters 0.004166667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.3) + (sp-int spt-timer 5004) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-launchrot-x (degrees -20.0) (degrees 15.0) 1.0) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.2)) + (sp-end) ) ) ) + + + + diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc index ad93984cde..780a37b6fe 100644 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc @@ -33,7 +33,7 @@ (scalevely float :offset 44) (friction float :offset-assert 96) (timer int32 :offset-assert 100) - (flags uint32 :offset-assert 104) + (flags sp-cpuinfo-flag :offset-assert 104) (user-int32 int32 :offset-assert 108) (user-uint32 uint32 :offset 108) (user-float float :offset 108) @@ -123,8 +123,8 @@ ;; definition of type sparticle-system (deftype sparticle-system (basic) ((blocks int32 2 :offset-assert 4) - (length uint32 2 :offset-assert 12) - (num-alloc uint32 2 :offset-assert 20) + (length int32 2 :offset-assert 12) + (num-alloc int32 2 :offset-assert 20) (is-3d basic :offset-assert 28) (flags uint32 :offset-assert 32) (alloc-table (pointer uint64) :offset-assert 36) diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc index 1ef6f9f6e7..1d9ab65d3c 100644 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc @@ -3,19 +3,19 @@ ;; definition of type sp-field-init-spec (deftype sp-field-init-spec (structure) - ((field uint16 :offset-assert 0) - (flags uint16 :offset-assert 2) - (initial-valuef float :offset-assert 4) - (random-rangef float :offset-assert 8) - (random-multf float :offset-assert 12) - (initial-value int32 :offset 4) - (random-range int32 :offset 8) - (random-mult int32 :offset 12) - (sym symbol :offset 4) - (func function :offset 4) - (tex uint32 :offset 4) - (pntr pointer :offset 4) - (sound basic :offset 4) + ((field sp-field-id :offset-assert 0) + (flags sp-flag :offset-assert 2) + (initial-valuef float :offset-assert 4) + (random-rangef float :offset-assert 8) + (random-multf float :offset-assert 12) + (initial-value int32 :offset 4) + (random-range int32 :offset 8) + (random-mult int32 :offset 12) + (sym symbol :offset 4) + (func function :offset 4) + (tex uint32 :offset 4) + (pntr pointer :offset 4) + (sound basic :offset 4) ) :method-count-assert 9 :size-assert #x10 @@ -63,15 +63,15 @@ ;; definition of type sparticle-group-item (deftype sparticle-group-item (structure) - ((launcher uint32 :offset-assert 0) - (fade-after meters :offset-assert 4) - (falloff-to meters :offset-assert 8) - (flags uint16 :offset-assert 12) - (period uint16 :offset-assert 14) - (length uint16 :offset-assert 16) - (offset uint16 :offset-assert 18) - (hour-mask uint32 :offset-assert 20) - (binding uint32 :offset-assert 24) + ((launcher uint32 :offset-assert 0) + (fade-after meters :offset-assert 4) + (falloff-to meters :offset-assert 8) + (flags sp-group-item-flag :offset-assert 12) + (period uint16 :offset-assert 14) + (length uint16 :offset-assert 16) + (offset uint16 :offset-assert 18) + (hour-mask uint32 :offset-assert 20) + (binding uint32 :offset-assert 24) ) :method-count-assert 9 :size-assert #x1c @@ -95,20 +95,20 @@ ;; definition of type sparticle-launch-state (deftype sparticle-launch-state (structure) - ((group-item sparticle-group-item :offset-assert 0) - (flags uint16 :offset-assert 4) - (randomize uint16 :offset-assert 6) - (origin vector :offset-assert 8) - (sprite3d sprite-vec-data-3d :offset-assert 12) - (sprite basic :offset-assert 16) - (offset uint32 :offset-assert 20) - (accum float :offset-assert 24) - (spawn-time uint32 :offset-assert 28) - (swarm basic :offset 20) - (seed uint32 :offset 24) - (time uint32 :offset 28) - (spec basic :offset 16) - (id uint32 :offset 12) + ((group-item sparticle-group-item :offset-assert 0) + (flags sp-launch-state-flags :offset-assert 4) + (randomize uint16 :offset-assert 6) + (origin vector :offset-assert 8) + (sprite3d sprite-vec-data-3d :offset-assert 12) + (sprite sparticle-cpuinfo :offset-assert 16) + (offset uint32 :offset-assert 20) + (accum float :offset-assert 24) + (spawn-time uint32 :offset-assert 28) + (swarm basic :offset 20) + (seed uint32 :offset 24) + (time uint32 :offset 28) + (spec basic :offset 16) + (id uint32 :offset 12) ) :method-count-assert 9 :size-assert #x20 @@ -144,8 +144,8 @@ ((length int16 :offset-assert 4) (duration uint16 :offset-assert 6) (linger-duration uint16 :offset-assert 8) - (flags uint16 :offset-assert 10) - (name basic :offset-assert 12) + (flags sp-group-flag :offset-assert 10) + (name string :offset-assert 12) (launcher (inline-array sparticle-group-item) :offset-assert 16) (bounds sphere :inline :offset-assert 32) ) @@ -187,10 +187,10 @@ :flag-assert #xe00000040 (:methods (initialize (_type_ sparticle-launch-group process) none 9) - (dummy-10 () none 10) - (dummy-11 (_type_ vector) none 11) - (deactivate (_type_) none 12) - (dummy-13 () none 13) + (is-visible? (_type_ vector) symbol 10) + (spawn (_type_ vector) object 11) + (kill-and-free-particles (_type_) none 12) + (kill-particles (_type_) none 13) ) ) diff --git a/test/decompiler/reference/engine/gfx/sprite/sprite_REF.gc b/test/decompiler/reference/engine/gfx/sprite/sprite_REF.gc index 8e2811b016..b67eab7730 100644 --- a/test/decompiler/reference/engine/gfx/sprite/sprite_REF.gc +++ b/test/decompiler/reference/engine/gfx/sprite/sprite_REF.gc @@ -141,7 +141,20 @@ ) ;; definition for function add-to-sprite-aux-list -;; ERROR: function was not converted to expressions. Cannot decompile. +;; INFO: Return type mismatch int vs none. +(defun + add-to-sprite-aux-list + ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d)) + (let ((v1-0 *sprite-aux-list*)) + (when (< (-> v1-0 entry) (-> v1-0 num-entries)) + (set! (-> v1-0 data (-> v1-0 entry)) (-> arg1 sprite)) + (+! (-> v1-0 entry) 1) + ) + ) + (set! (-> arg2 r-g-b-a w) 0.0) + 0 + (none) + ) ;; definition of type sprite-frame-data (deftype sprite-frame-data (structure) diff --git a/test/decompiler/reference/engine/gfx/texture_REF.gc b/test/decompiler/reference/engine/gfx/texture_REF.gc index 74ba519546..fce01d211a 100644 --- a/test/decompiler/reference/engine/gfx/texture_REF.gc +++ b/test/decompiler/reference/engine/gfx/texture_REF.gc @@ -1859,7 +1859,7 @@ (-> obj segment-common) a2-0 -2 - (bucket-id bucket-65) + (bucket-id pre-sprite-textures) ) (return #f) ) diff --git a/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc b/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc index 0cbadd7862..0df962975f 100644 --- a/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc @@ -35,8 +35,8 @@ (pat-length int32 :offset-assert 48) (texture-remap-table (pointer uint64) :offset-assert 52) (texture-remap-table-len int32 :offset-assert 56) - (unk-data-1 pointer :offset-assert 60) - (unk-data-1-len int32 :offset-assert 64) + (texture-ids (pointer texture-id) :offset-assert 60) + (texture-page-count int32 :offset-assert 64) (unk-zero-0 basic :offset-assert 68) (name symbol :offset-assert 72) (nickname symbol :offset-assert 76) diff --git a/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc b/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc index 3e6a9ab08f..5d3eb4e32d 100644 --- a/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc +++ b/test/decompiler/reference/engine/gfx/vis/bsp_REF.gc @@ -73,7 +73,7 @@ (set! (-> mem-use length) (max 58 (-> mem-use length))) (set! (-> mem-use data 57 name) "bsp-misc") (+! (-> mem-use data 57 count) 1) - (let ((v1-56 (* (-> obj unk-data-1-len) 4))) + (let ((v1-56 (* (-> obj texture-page-count) 4))) (+! (-> mem-use data 57 used) v1-56) (+! (-> mem-use data 57 total) (logand -16 (+ v1-56 15))) ) diff --git a/test/decompiler/reference/engine/level/level-h_REF.gc b/test/decompiler/reference/engine/level/level-h_REF.gc index fde738b66e..49d5dc21c2 100644 --- a/test/decompiler/reference/engine/level/level-h_REF.gc +++ b/test/decompiler/reference/engine/level/level-h_REF.gc @@ -297,7 +297,7 @@ (debug-print-entities (_type_ symbol type) none 13) (debug-draw-actors (_type_ symbol) none 14) (dummy-15 (_type_) object 15) - (dummy-16 (_type_) int 16) + (level-update (_type_) int 16) (level-get-target-inside (_type_) level 17) (alloc-levels! (_type_ symbol) int 18) (load-commands-set! (_type_ pair) pair 19) diff --git a/test/decompiler/reference/engine/target/target-part_REF.gc b/test/decompiler/reference/engine/target/target-part_REF.gc index 8abf960988..268e5c0afe 100644 --- a/test/decompiler/reference/engine/target/target-part_REF.gc +++ b/test/decompiler/reference/engine/target/target-part_REF.gc @@ -234,13 +234,10 @@ :length 2 :duration #x5 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-target-hit" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x38) - (new 'static 'sparticle-group-item :launcher #x39) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 56) (sp-item 57)) :bounds (new 'static 'sphere :w 49152.0) ) ) @@ -251,99 +248,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 12288.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 245.76 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 655.36 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 6.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3a) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.06)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.16)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-fade-a 6.4) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 58) + (sp-end) ) ) ) @@ -354,13 +276,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.64 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.64) + (sp-end) ) ) ) @@ -371,76 +288,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 49152.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x10 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.4222221 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x2a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 12.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (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-flt spt-a 64.0) + (sp-flt spt-rotvel-z (degrees -0.4)) + (sp-flt spt-fade-a -1.4222221) + (sp-int spt-timer 42) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -454,10 +315,7 @@ :linger-duration #x1c2 :name "group-red-eco-strike-ground" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x3b) - (new 'static 'sparticle-group-item :launcher #x3c) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 59) (sp-item 60)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -468,149 +326,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 24.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 56.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 546.13336 - :random-rangef 682.6667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-rangef 145.63556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -1.4222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.34133333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.7 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 24.0) + (sp-flt spt-y (meters 1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-flt spt-g 128.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 8.0 56.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.4222223) + (sp-flt spt-fade-a -0.35555556) + (sp-flt spt-accel-y 0.34133333) + (sp-flt spt-friction 0.7) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 61) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -621,123 +361,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -2.8444445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.82222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.7 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x2d) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-y (meters 1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-flt spt-vel-y (meters 0.3)) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.8444445) + (sp-flt spt-fade-a -0.82222223) + (sp-flt spt-friction 0.7) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 61) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -752,9 +396,9 @@ :name "group-red-eco-spinkick" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x3e) - (new 'static 'sparticle-group-item :launcher #x3f) - (new 'static 'sparticle-group-item :launcher #x40) + (sp-item 62) + (sp-item 63) + (sp-item 64) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -766,136 +410,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 56.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-rangef 145.63556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -1.4222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.34133333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 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-flt spt-g 128.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 8.0 56.0 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.4222223) + (sp-flt spt-fade-a -0.35555556) + (sp-flt spt-accel-y 0.34133333) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 61) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0) + (sp-end) ) ) ) @@ -906,25 +443,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.7111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef 0.7111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef 0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-r -0.7111111) + (sp-flt spt-fade-g 0.7111111) + (sp-flt spt-fade-b 0.35555556) + (sp-end) ) ) ) @@ -935,111 +457,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.66 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -2.8444445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.82222223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x2d) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x3d) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 0.66) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.8444445) + (sp-flt spt-fade-a -0.82222223) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 61) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.1) 1.0) + (sp-end) ) ) ) @@ -1050,76 +486,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 16384.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.34133333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4.0) (meters 2.0) 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-flt spt-g 96.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -4.0) + (sp-flt spt-accel-y 0.34133333) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1133,10 +512,7 @@ :linger-duration #x1c2 :name "group-spin-hit" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x41) - (new 'static 'sparticle-group-item :launcher #x42) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -1150,10 +526,7 @@ :linger-duration #x1c2 :name "group-punch-hit" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x41) - (new 'static 'sparticle-group-item :launcher #x42) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -1164,113 +537,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 3072.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 2.1333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x43) - ) - (new 'static 'sp-field-init-spec :field #x3f :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 4.0) + (sp-flt spt-y (meters 0.75)) + (sp-flt spt-scale-x (meters 3.0)) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.15) (meters 0.5) 1.0) + (sp-flt spt-r 192.0) + (sp-flt spt-g 192.0) + (sp-rnd-flt spt-b 64.0 128.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.009765625)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-scalevel-y (meters 0.009765625)) + (sp-flt spt-fade-a 2.1333334) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 67) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) ) ) ) @@ -1281,13 +568,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -2.1333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -2.1333334) + (sp-end) ) ) ) @@ -1298,75 +580,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-flt spt-scale-x (meters 3.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 196.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 196.0) + (sp-flt spt-a 28.0) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -1381,29 +607,29 @@ :name "group-smack-surface" :launcher (new 'static 'inline-array sparticle-group-item 23 - (new 'static 'sparticle-group-item :launcher #x44) - (new 'static 'sparticle-group-item :launcher #x45) - (new 'static 'sparticle-group-item :launcher #x48 :binding #x47) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) - (new 'static 'sparticle-group-item :launcher #x47 :flags #xc) + (sp-item 68) + (sp-item 69) + (sp-item 72 :binding 71) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -1415,129 +641,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-copy-target-y-rot - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 163.84 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x3f :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-func spt-birth-func 'birth-func-copy-target-y-rot) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (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-flt spt-r 96.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.85333335) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) ) ) ) @@ -1548,129 +673,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-copy-target-y-rot - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 327.68 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x3f :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-func spt-birth-func 'birth-func-copy-target-y-rot) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 96.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.85333335) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) ) ) ) @@ -1681,58 +705,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x25c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-tracker-track-target-joint - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 12.0 8.0 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-a 0.0) + (sp-int spt-timer 604) + (sp-cpuinfo-flags bit3) + (sp-flt spt-userdata 8.0) + (sp-func spt-func 'part-tracker-track-target-joint) + (sp-end) ) ) ) @@ -1743,103 +726,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xa :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -5461.3335 - :random-rangef 10922.667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-rangef 204.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 92.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x2 - :initial-valuef -218.45334 - :random-rangef (the-as float #x1) - :random-multf 436.90668 - ) - (new 'static 'sp-field-init-spec :field #x1a :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.30476192 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x25c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-rnd-flt spt-y (meters -1.3333334) (meters 2.6666667) 1.0) + (sp-rnd-flt spt-z 2048.0 2048.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 92.0 1.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-int-flt spt-vel-x (meters -0.053333335) 1 436.90668) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters 0.0033333334)) + (sp-flt spt-fade-a -0.30476192) + (sp-int spt-timer 604) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -1854,9 +759,9 @@ :name "group-land-poof-sand" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x49) - (new 'static 'sparticle-group-item :launcher #x4a) - (new 'static 'sparticle-group-item :launcher #x4b) + (sp-item 73) + (sp-item 74) + (sp-item 75) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -1868,130 +773,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2002,130 +804,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2136,128 +835,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -2272,9 +869,9 @@ :name "group-land-poof-dirt" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x943) - (new 'static 'sparticle-group-item :launcher #x944) - (new 'static 'sparticle-group-item :launcher #x942) + (sp-item 2371) + (sp-item 2372) + (sp-item 2370) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -2286,130 +883,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2420,130 +914,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2554,128 +945,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -2690,9 +979,9 @@ :name "group-land-poof-snow" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x4c) - (new 'static 'sparticle-group-item :launcher #x4d) - (new 'static 'sparticle-group-item :launcher #x4e) + (sp-item 76) + (sp-item 77) + (sp-item 78) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -2704,131 +993,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2839,131 +1024,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2974,128 +1055,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -3110,9 +1089,9 @@ :name "group-land-poof-ice" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x4c) - (new 'static 'sparticle-group-item :launcher #x4d) - (new 'static 'sparticle-group-item :launcher #x4e) + (sp-item 76) + (sp-item 77) + (sp-item 78) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -3128,9 +1107,9 @@ :name "group-land-poof-grass" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x4f) - (new 'static 'sparticle-group-item :launcher #x50) - (new 'static 'sparticle-group-item :launcher #x51) + (sp-item 79) + (sp-item 80) + (sp-item 81) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -3142,130 +1121,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3276,130 +1152,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3410,133 +1183,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 614.4 - :random-rangef 1433.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 61.44 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -3550,10 +1217,7 @@ :linger-duration #x1c2 :name "group-land-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x52) - (new 'static 'sparticle-group-item :launcher #x53) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 82) (sp-item 83)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -3564,129 +1228,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3697,129 +1259,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3834,10 +1294,10 @@ :name "group-land-poof-crwood" :launcher (new 'static 'inline-array sparticle-group-item 4 - (new 'static 'sparticle-group-item :launcher #x52) - (new 'static 'sparticle-group-item :launcher #x53) - (new 'static 'sparticle-group-item :launcher #x54) - (new 'static 'sparticle-group-item :launcher #x54) + (sp-item 82) + (sp-item 83) + (sp-item 84) + (sp-item 84) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -3852,10 +1312,7 @@ :linger-duration #x1c2 :name "group-land-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x55) - (new 'static 'sparticle-group-item :launcher #x56) - ) + (new 'static 'inline-array sparticle-group-item 2 (sp-item 85) (sp-item 86)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -3866,129 +1323,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -3999,129 +1354,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4136,8 +1389,8 @@ :name "group-land-poof-pcmetal" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x945) - (new 'static 'sparticle-group-item :launcher #x946) + (sp-item 2373) + (sp-item 2374) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4149,119 +1402,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 24.0 - :random-rangef 24.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4272,131 +1431,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (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.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4410,9 +1465,7 @@ :linger-duration #x258 :name "group-run-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x57) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4426,9 +1479,7 @@ :linger-duration #x258 :name "group-just-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x57) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4439,99 +1490,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4546,8 +1520,8 @@ :name "group-run-poof-snow" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x947) - (new 'static 'sparticle-group-item :launcher #x948 :flags #x1) + (sp-item 2375) + (sp-item 2376 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4562,9 +1536,7 @@ :linger-duration #x258 :name "group-just-poof-snow" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x947) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4579,7 +1551,7 @@ :name "group-just-footprint-snow" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x948 :flags #x1) + (sp-item 2376 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4591,80 +1563,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.07111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -0.07111111) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -4675,101 +1587,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 196.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 24.0 - :random-rangef 24.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4783,9 +1616,7 @@ :linger-duration #x258 :name "group-run-poof-ice" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x947) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4799,9 +1630,7 @@ :linger-duration #x258 :name "group-just-poof-ice" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x947) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4816,9 +1645,9 @@ :name "group-run-poof-crwood" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x59) - (new 'static 'sparticle-group-item :launcher #x59) - (new 'static 'sparticle-group-item :launcher #x54) + (sp-item 89) + (sp-item 89) + (sp-item 84) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -4833,9 +1662,7 @@ :linger-duration #x258 :name "group-just-poof-crwood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x58) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -4846,126 +1673,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef -13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x384) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x4b) - :random-rangef (the-as float #x4a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x5a) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters -0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.16) + (sp-flt spt-accel-y -0.27306667) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int-plain-rnd spt-next-time 75 74 1) + (sp-launcher-by-id spt-next-launcher 90) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 3.0) 1.0) + (sp-end) ) ) ) @@ -4976,19 +1705,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x96) - :random-rangef (the-as float #x95) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x5b) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int-plain-rnd spt-next-time 150 149 1) + (sp-launcher-by-id spt-next-launcher 91) + (sp-end) ) ) ) @@ -4999,13 +1719,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.08) + (sp-end) ) ) ) @@ -5019,9 +1734,7 @@ :linger-duration #x258 :name "group-run-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x59) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5035,9 +1748,7 @@ :linger-duration #x258 :name "group-just-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x59) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5048,99 +1759,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5154,9 +1788,7 @@ :linger-duration #x258 :name "group-run-poof-pcmetal" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x949) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5170,9 +1802,7 @@ :linger-duration #x258 :name "group-just-poof-pcmetal" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x949) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5183,101 +1813,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5292,8 +1843,8 @@ :name "group-run-poof-grass" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x5c) - (new 'static 'sparticle-group-item :launcher #x5d :flags #x1) + (sp-item 92) + (sp-item 93 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5308,9 +1859,7 @@ :linger-duration #x258 :name "group-just-poof-grass" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x5c) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 92)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5325,7 +1874,7 @@ :name "group-just-footprint-grass" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x5d :flags #x1) + (sp-item 93 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5337,100 +1886,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5441,80 +1912,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 48.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.053333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 48.0) + (sp-flt spt-fade-a -0.053333335) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -5529,8 +1940,8 @@ :name "group-run-poof-sand" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x58) - (new 'static 'sparticle-group-item :launcher #x5e :flags #x1) + (sp-item 88) + (sp-item 94 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5545,9 +1956,7 @@ :linger-duration #x258 :name "group-just-poof-sand" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x58) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5562,7 +1971,7 @@ :name "group-just-footprint-sand" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x5e :flags #x1) + (sp-item 94 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5574,100 +1983,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5678,80 +2009,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.035555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 32.0) + (sp-flt spt-fade-a -0.035555556) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -5765,9 +2036,7 @@ :linger-duration #x258 :name "group-run-poof-dirt" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94a) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5781,9 +2050,7 @@ :linger-duration #x258 :name "group-just-poof-dirt" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94a) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -5798,7 +2065,7 @@ :name "group-just-footprint-dirt" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94b :flags #x1) + (sp-item 2379 :flags (is-3d)) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -5810,100 +2077,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.45714286 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.965 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x69) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -5914,80 +2103,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200e00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.035555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x41a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 32.0) + (sp-flt spt-fade-a -0.035555556) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -5998,123 +2127,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6125,123 +2156,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6252,128 +2185,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 2.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.1)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6384,123 +2215,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 20.48 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.7306666 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -6510,9 +2243,7 @@ (-> *part-id-table* 97) (new 'static 'sparticle-launcher :init-specs - (new 'static 'inline-array sp-field-init-spec 1 - (new 'static 'sp-field-init-spec :field #x43) - ) + (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) ) ) @@ -6521,9 +2252,7 @@ (-> *part-id-table* 98) (new 'static 'sparticle-launcher :init-specs - (new 'static 'inline-array sp-field-init-spec 1 - (new 'static 'sp-field-init-spec :field #x43) - ) + (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) ) ) @@ -6532,9 +2261,7 @@ (-> *part-id-table* 99) (new 'static 'sparticle-launcher :init-specs - (new 'static 'inline-array sp-field-init-spec 1 - (new 'static 'sp-field-init-spec :field #x43) - ) + (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) ) ) @@ -6548,8 +2275,8 @@ :name "group-slide-poof-sand" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x64) - (new 'static 'sparticle-group-item :launcher #x65) + (sp-item 100) + (sp-item 101) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -6561,131 +2288,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -6696,128 +2319,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 34.133335 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-rangef 2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -6832,8 +2353,8 @@ :name "group-slide-poof-dirt" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x94c) - (new 'static 'sparticle-group-item :launcher #x94d) + (sp-item 2380) + (sp-item 2381) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -6845,131 +2366,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-rnd-flt spt-g 96.0 32.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-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -6980,128 +2397,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 34.133335 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-rangef 2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -7116,8 +2431,8 @@ :name "group-slide-poof-grass" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item :launcher #x66) - (new 'static 'sparticle-group-item :launcher #x67) + (sp-item 102) + (sp-item 103) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -7129,131 +2444,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7264,133 +2475,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 614.4 - :random-rangef 1433.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 34.133335 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -4.096 - :random-rangef 2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 9102.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) ) ) ) @@ -7404,9 +2509,7 @@ :linger-duration #x1c2 :name "group-slide-poof-stone" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x68) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 104)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7417,130 +2520,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7554,9 +2554,7 @@ :linger-duration #x1c2 :name "group-slide-poof-pcmetal" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94e) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2382)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7567,132 +2565,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 70.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 40.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7706,9 +2599,7 @@ :linger-duration #x1c2 :name "group-slide-poof-snow" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94f) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7719,132 +2610,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -7858,9 +2644,7 @@ :linger-duration #x1c2 :name "group-slide-poof-ice" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x94f) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7874,9 +2658,7 @@ :linger-duration #x1c2 :name "group-slide-poof-wood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x69) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -7887,130 +2669,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 6.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2457.6 - :random-rangef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 81.92 - :random-rangef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.17777778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xb4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 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 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -8024,9 +2703,7 @@ :linger-duration #x2ee :name "group-slide-poof-crwood" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x69) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -8037,102 +2714,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8143,102 +2740,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 128.0 - :random-rangef (the-as float #x2) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 32.0 - :random-rangef (the-as float #x1) - :random-multf 32.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8249,102 +2766,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200400) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 286.72 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :initial-valuef 196.0 - :random-rangef (the-as float #x1) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8355,107 +2792,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :random-rangef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 614.4 - :random-rangef 1433.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 614.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 2.0 - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :initial-valuef 64.0 - :random-rangef (the-as float #x2) - :random-multf 64.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-rangef 3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) ) ) ) @@ -8467,210 +2820,46 @@ :length 36 :duration #x258 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-dark-eco-death" :launcher (new 'static 'inline-array sparticle-group-item 36 - (new 'static 'sparticle-group-item - :launcher #x127 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x128 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x82f - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x830 - :fade-after (meters 80.0) - :falloff-to (meters 80.0) - :period #x258 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x831 - :period #x258 - :length #x14 - ) + (sp-item 295 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2095 :period 600 :length 5) + (sp-item 2096 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2097 :period 600 :length 20) ) :bounds (new 'static 'sphere :w 49152.0) ) @@ -8686,10 +2875,10 @@ :name "group-lava-death" :launcher (new 'static 'inline-array sparticle-group-item 4 - (new 'static 'sparticle-group-item :launcher #x7d3) - (new 'static 'sparticle-group-item :launcher #x7d4) - (new 'static 'sparticle-group-item :launcher #x7d5) - (new 'static 'sparticle-group-item :launcher #x7d6) + (sp-item 2003) + (sp-item 2004) + (sp-item 2005) + (sp-item 2006) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -8704,9 +2893,7 @@ :linger-duration #x258 :name "group-burn-death" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x7d3) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2003)) :bounds (new 'static 'sphere :w 8192.0) ) ) @@ -8717,103 +2904,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 256.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 54.613335 - :random-rangef 163.84 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -9.557333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -5.4613333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x168) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4009) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 10922.667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-rnd-flt spt-a 128.0 128.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters -0.0023333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y -5.4613333) + (sp-int spt-timer 360) + (sp-cpuinfo-flags bit0 bit3 bit14) + (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-conerot-radius (meters 1.0)) + (sp-end) ) ) ) @@ -8824,134 +2931,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 5.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 96.37647 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -109.22667 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.5058824 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x51) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 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-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.023529412)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.5058824) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 81) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -8962,135 +2964,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef 6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 182.04443 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -109.22667 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -2.8444443 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x2a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters 0.5) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 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-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.04444444)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -2.8444443) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 42) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -9101,164 +2997,34 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 28 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 54.613335 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 36.40889 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -109.22667 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.56666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.56666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.56666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.15 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.97 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1c2) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x51) - :random-rangef (the-as float #x50) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x7d7) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-z -4096.0 8192.0 1.0) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 3.0) 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-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.008888889)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.56666666) + (sp-flt spt-fade-g -0.56666666) + (sp-flt spt-fade-b -0.56666666) + (sp-flt spt-fade-a 0.15) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 81 80 1) + (sp-launcher-by-id spt-next-launcher 2007) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -9269,13 +3035,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.08) + (sp-end) ) ) ) @@ -9286,118 +3047,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 13.653334 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1c2) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-rangef (the-as float #x3b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x7d8) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.0) 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 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.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.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 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.85333335) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 15 59 1) + (sp-launcher-by-id spt-next-launcher 2008) + (sp-end) ) ) ) @@ -9408,13 +3077,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.28444445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.28444445) + (sp-end) ) ) ) @@ -9477,8 +3141,8 @@ *sp-particle-system-2d* (-> *part-id-table* 2002) a2-3 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) (the-as float 1.0) ) ) @@ -9499,104 +3163,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200a00) - ) - (new 'static 'sp-field-init-spec - :field #x4 - :flags #x5 - :sym 'birth-func-target-orient - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 110.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xa :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.02)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 110.0 32.0 1.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 40.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.2) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata -8192.0) + (sp-end) ) ) ) @@ -9608,11 +3191,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-first-person-hud-left" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9aa :flags #x8) + (sp-item 2474 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -9625,11 +3208,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-first-person-hud-right" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9ab :flags #x8) + (sp-item 2475 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -9642,11 +3225,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-first-person-hud-selector" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9ac :flags #x8) + (sp-item 2476 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -9658,65 +3241,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 14336.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-first-person-hud-left-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-first-person-hud-left-func) + (sp-end) ) ) ) @@ -9727,71 +3263,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 14336.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :initial-valuef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-first-person-hud-right-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-first-person-hud-right-func) + (sp-end) ) ) ) @@ -9802,65 +3286,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0004883) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-first-person-hud-selector-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-first-person-hud-selector-func) + (sp-end) ) ) ) + + + + diff --git a/test/decompiler/reference/engine/ui/progress/progress-part_REF.gc b/test/decompiler/reference/engine/ui/progress/progress-part_REF.gc index f6d1264282..c141aeb588 100644 --- a/test/decompiler/reference/engine/ui/progress/progress-part_REF.gc +++ b/test/decompiler/reference/engine/ui/progress/progress-part_REF.gc @@ -234,11 +234,12 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x5 + :flags + (sp-group-flag use-local-clock screen-space) :name "group-part-progress-hud-previous" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14c :flags #x8) + (sp-item 332 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -251,11 +252,12 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x5 + :flags + (sp-group-flag use-local-clock screen-space) :name "group-part-progress-hud-next" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14d :flags #x8) + (sp-item 333 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -268,11 +270,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-selector" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14e :flags #x8) + (sp-item 334 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -285,11 +287,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-left" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x14f :flags #x8) + (sp-item 335 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -302,11 +304,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-right" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x150 :flags #x8) + (sp-item 336 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -319,11 +321,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-tint" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x151 :flags #x8) + (sp-item 337 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -336,13 +338,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-cell" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x88e :flags #x8) - (new 'static 'sparticle-group-item :launcher #x88f :flags #x8) - (new 'static 'sparticle-group-item :launcher #x890 :flags #x8) + (sp-item 2190 :flags (launch-asap)) + (sp-item 2191 :flags (launch-asap)) + (sp-item 2192 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -355,11 +357,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-x" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x920 :flags #x8) + (sp-item 2336 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -372,11 +374,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-square" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x921 :flags #x8) + (sp-item 2337 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -389,11 +391,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-triangle" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x922 :flags #x8) + (sp-item 2338 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -406,11 +408,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-button-circle" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x923 :flags #x8) + (sp-item 2339 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -423,11 +425,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-01" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x85e :flags #x8) + (sp-item 2142 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -440,11 +442,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-02" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x85f :flags #x8) + (sp-item 2143 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -457,11 +459,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-03" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x860 :flags #x8) + (sp-item 2144 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -474,11 +476,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-card-slot-04" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x861 :flags #x8) + (sp-item 2145 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -491,12 +493,12 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-hud-power-cell-center" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x152 :flags #x8) + (sp-item 338 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -508,63 +510,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 61440.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 47104.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-tint-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 11.5)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-tint-func) + (sp-end) ) ) ) @@ -575,68 +532,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015910302 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-cell-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6e :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-cell-func) + (sp-end) ) ) ) @@ -647,74 +554,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015910044 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef 4300.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-cell-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6d :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 1.05)) + (sp-flt spt-scale-x (meters 0.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-cell-func) + (sp-end) ) ) ) @@ -725,74 +577,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015909785 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef 9420.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-cell-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6c :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 2.3)) + (sp-flt spt-scale-x (meters 0.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-cell-func) + (sp-end) ) ) ) @@ -803,65 +600,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0006104) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x5 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -872,65 +622,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0007324) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -941,65 +644,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0008545) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x7 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -1010,65 +666,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0009766) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6553.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-button-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x8 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.6)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-button-func) + (sp-end) ) ) ) @@ -1079,53 +688,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-01-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-01-func) + (sp-end) ) ) ) @@ -1136,53 +710,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-02-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-02-func) + (sp-end) ) ) ) @@ -1193,53 +732,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-03-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-03-func) + (sp-end) ) ) ) @@ -1250,53 +754,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 37683.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-card-slot-04-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 9.2)) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-progress-card-slot-04-func) + (sp-end) ) ) ) @@ -1307,60 +776,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.000244) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -1371,60 +797,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.000122) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -1435,60 +818,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0004883) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 7372.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -1499,65 +839,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.0) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 14336.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-left-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-left-func) + (sp-end) ) ) ) @@ -1568,65 +861,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec :field #x1 :initial-valuef 4.000366) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 24576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 53248.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-right-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 6.0)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-right-func) + (sp-end) ) ) ) @@ -1637,74 +883,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 4.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 4.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1715,74 +906,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 5.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 5.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1793,74 +929,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 6.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1871,74 +952,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 7.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 7.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -1949,74 +975,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203100) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 9.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x31 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-flt spt-userdata 9.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2027,74 +998,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4915.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x30 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-flt spt-userdata 3.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2105,13 +1021,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.53333336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.53333336) + (sp-end) ) ) ) @@ -2122,122 +1033,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 286.72 - :random-rangef 1884.16 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.35555556 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x5a) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xe8) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-z 2160.0) + (sp-flt spt-scale-x (meters 0.25)) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.07) (meters 0.46) 1.0) + (sp-rnd-int spt-r 0 1 255.0) + (sp-rnd-int spt-g 0 1 255.0) + (sp-rnd-int spt-b 0 1 255.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.009765625)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-scalevel-y (meters 0.009765625)) + (sp-flt spt-fade-a 0.35555556) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 232) + (sp-end) ) ) ) @@ -2248,116 +1065,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.06 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x2 - :random-rangef (the-as float #x1) - :random-multf 255.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 40.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -27.306667 - :random-rangef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.32 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x4b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xe8) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 0.06) + (sp-flt spt-z 2160.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.25) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.1)) + (sp-rnd-int spt-r 0 1 255.0) + (sp-rnd-int spt-g 0 1 255.0) + (sp-rnd-int spt-b 0 1 255.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.009765625)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-fade-a 0.32) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 232) + (sp-end) ) ) ) @@ -2368,92 +1096,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 7372.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z 2160.0) + (sp-flt spt-scale-x (meters 2.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 1.8)) + (sp-flt spt-r 192.0) + (sp-flt spt-g 192.0) + (sp-rnd-flt spt-b 0.0 128.0 1.0) + (sp-flt spt-a 64.0) + (sp-flt spt-rotvel-z (degrees -0.4)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2464,92 +1122,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2160.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 9830.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef 54.613335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x220c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef -1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'fuel-cell-progress-hud-orbit-callback - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z 2160.0) + (sp-flt spt-scale-x (meters 2.4)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 2.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 64.0) + (sp-flt spt-rotvel-z (degrees 0.3)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit3 bit9 bit13) + (sp-flt spt-userdata -1.0) + (sp-func spt-func 'fuel-cell-progress-hud-orbit-callback) + (sp-end) ) ) ) @@ -2561,29 +1149,20 @@ :length 8 :duration #xbb8 :linger-duration #x5dc - :flags #x5 + :flags + (sp-group-flag use-local-clock screen-space) :name "group-part-progress-hud-power-cell-whole" :launcher (new 'static 'inline-array sparticle-group-item 8 - (new 'static 'sparticle-group-item :launcher #x152 :flags #x8) - (new 'static 'sparticle-group-item - :launcher #x15b - :flags #x8 - :period #xe10 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x15c - :flags #x8 - :period #xe10 - :length #x5 - ) - (new 'static 'sparticle-group-item :launcher #x157 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x153 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x154 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x155 :flags #x8) - (new 'static 'sparticle-group-item :launcher #x156 :flags #x8) + (sp-item 338 :flags (launch-asap)) + (sp-item 347 :flags (launch-asap) :period 3600 :length 5) + (sp-item 348 :flags (launch-asap) :period 3600 :length 5) + (sp-item 343 :flags (launch-asap)) + (sp-item 339 :flags (launch-asap)) + (sp-item 340 :flags (launch-asap)) + (sp-item 341 :flags (launch-asap)) + (sp-item 342 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2596,16 +1175,12 @@ :length 2 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-buzzer" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x7be - :flags #x8 - :binding #x7bd - ) - (new 'static 'sparticle-group-item :launcher #x7bd :flags #xc) + (sp-item 1982 :flags (launch-asap) :binding 1981) + (sp-item 1981 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2617,58 +1192,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 9011.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2.2)) + (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-flt spt-a 0.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-end) ) ) ) @@ -2679,84 +1213,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xa :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x18 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1b :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2284) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-flt spt-y (meters 1.3333334)) + (sp-flt spt-z 409.6) + (sp-flt spt-scale-x (meters 2.0)) + (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-flt spt-a 128.0) + (sp-flt spt-omega 0.0) + (sp-flt spt-vel-x (meters 0.053333335)) + (sp-flt spt-vel-z (meters 0.0)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit7 bit9 bit13) + (sp-end) ) ) ) @@ -2768,11 +1241,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-orb" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x7bf :flags #x8) + (sp-item 1983 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2784,63 +1257,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202c00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 9011.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2c :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 2.2)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -2852,16 +1279,12 @@ :length 2 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-buzzer-small" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x7c1 - :flags #x8 - :binding #x7c0 - ) - (new 'static 'sparticle-group-item :launcher #x7c0 :flags #xc) + (sp-item 1985 :flags (launch-asap) :binding 1984) + (sp-item 1984 :flags (start-dead launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -2873,58 +1296,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2200) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (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-flt spt-a 0.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-end) ) ) ) @@ -2935,89 +1317,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202a00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xa :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 204.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x18 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 206.31703 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1b :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2284) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-buzzer-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2a :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-flt spt-y (meters 1.3333334)) + (sp-flt spt-z 204.8) + (sp-flt spt-scale-x (meters 1.5)) + (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-flt spt-a 128.0) + (sp-flt spt-omega 0.0) + (sp-flt spt-vel-x (meters 0.05037037)) + (sp-flt spt-vel-z (meters 0.0)) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit7 bit9 bit13) + (sp-func spt-func 'part-progress-hud-buzzer-func) + (sp-end) ) ) ) @@ -3029,11 +1346,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-orb-small" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x7c2 :flags #x8) + (sp-item 1986 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -3045,68 +1362,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x202c00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 5324.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-hud-orb-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2c :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.3)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-hud-orb-func) + (sp-end) ) ) ) @@ -3118,11 +1385,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-progress-save-icon" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x9ae :flags #x8) + (sp-item 2478 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 409600.0) ) @@ -3134,68 +1401,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 0.0000000000000000000015909527 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 7372.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'part-progress-save-icon-func - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x6b :page #x1cf)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.8)) + (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-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-progress-save-icon-func) + (sp-end) ) ) ) @@ -3654,3 +1871,7 @@ 0 (none) ) + + + + diff --git a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc index f643977a1e..ed71273b81 100644 --- a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc @@ -26,13 +26,13 @@ :length 3 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-beach-rocks-start" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #x924 :period #x4b :length #xa) - (new 'static 'sparticle-group-item :launcher #x925 :period #x4b :length #xa) - (new 'static 'sparticle-group-item :launcher #x8f1 :period #x4b :length #xa) + (sp-item 2340 :period 75 :length 10) + (sp-item 2341 :period 75 :length 10) + (sp-item 2289 :period 75 :length 10) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -44,134 +44,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201d00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 3.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1024.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 1024.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1c :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -11.605333 - :random-rangef -8.874666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.97 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 14563.556 - :random-rangef 36408.89 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2)) + (sp-rnd-flt spt-num 3.0 6.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.25) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.25) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 96.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.0)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -11.605333 -8.874666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 5.0) 1.0) + (sp-end) ) ) ) @@ -182,140 +76,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 8.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1c :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08533333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef -8.874666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.93 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 14563.556 - :random-rangef 36408.89 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-rnd-flt spt-b 0.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.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-a -0.08533333) + (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) + (sp-flt spt-friction 0.93) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 200.00002) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 5.0) 1.0) + (sp-end) ) ) ) @@ -326,161 +109,32 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-rangef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 24576.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 163.84 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.042666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.061333332 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.042666666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.032 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-rangef -7.5093336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 24576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 3.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 2.0) 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (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-r -0.042666666) + (sp-flt spt-fade-g -0.061333332) + (sp-flt spt-fade-b -0.042666666) + (sp-flt spt-fade-a -0.032) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 6.0) 1.0) + (sp-end) ) ) ) @@ -492,11 +146,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-beach-rocks-fall" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x8f2 :period #xf :length #x5) + (sp-item 2290 :period 15 :length 5) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -508,161 +162,32 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 3.0 - :random-rangef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 28672.0 - :random-rangef 36864.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 48.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 54.613335 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 109.22667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.15333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-rangef -7.5093336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.98 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 3.0 3.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 7.0) (meters 9.0) 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.026666667)) + (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-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -0.10666667) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) + (sp-end) ) ) ) @@ -674,25 +199,13 @@ :length 3 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-beach-rocks-land" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item - :launcher #x926 - :period #x384 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x927 - :period #x384 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x8f3 - :period #x384 - :length #x28 - ) + (sp-item 2342 :period 900 :length 40) + (sp-item 2343 :period 900 :length 40) + (sp-item 2291 :period 900 :length 40) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -704,110 +217,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 131072.0 - :random-rangef 40960.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 13981.014 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.15333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -3.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-y (meters -3.0)) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 32.0) (meters 10.0) 1.0) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 3.4133334)) + (sp-flt spt-fade-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -818,140 +245,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201700) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 436.90668 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1c :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.08533333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -3.4133334 - :random-rangef -8.874666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.95 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 10922.667 - :random-rangef 3640.889 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 64.0 64.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.21333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.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-a -0.08533333) + (sp-rnd-flt spt-accel-y -3.4133334 -8.874666 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 5.0) 1.0) + (sp-end) ) ) ) @@ -962,162 +278,32 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef -16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 32768.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 48.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 436.90668 - :random-rangef 1310.72 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 136.53334 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.15333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.10666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-rangef -7.5093336 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.85 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 18204.445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 32.0 32.0 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters -4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 8.0) (meters 8.0) 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.32) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.033333335) (meters 0.02) 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-r -0.10666667) + (sp-flt spt-fade-g -0.15333334) + (sp-flt spt-fade-b -0.10666667) + (sp-flt spt-fade-a -0.10666667) + (sp-rnd-flt spt-accel-y -2.048 -7.5093336 1.0) + (sp-flt spt-friction 0.85) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) + (sp-end) ) ) ) @@ -1192,10 +378,10 @@ ;; definition for method 10 of type beach-rock (defmethod deactivate beach-rock ((obj beach-rock)) (if (nonzero? (-> obj part-falling)) - (deactivate (-> obj part-falling)) + (kill-and-free-particles (-> obj part-falling)) ) (if (nonzero? (-> obj part-landing)) - (deactivate (-> obj part-landing)) + (kill-and-free-particles (-> obj part-landing)) ) ((the-as (function process-drawable none) (find-parent-method beach-rock 10)) obj @@ -1261,38 +447,38 @@ (when (and (< -50.0 f30-0) (< f30-0 158.0)) (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self root-override trans quad)) - (dummy-11 (-> self part) gp-0) + (spawn (-> self part) gp-0) (set! (-> gp-0 x) (+ 122880.0 (-> gp-0 x))) (set! (-> gp-0 z) (+ 102400.0 (-> gp-0 z))) - (dummy-11 (-> self part) gp-0) + (spawn (-> self part) gp-0) ) ) (if (and (< 200.0 f30-0) (< f30-0 275.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) ) ) (if (and (< 270.0 f30-0) (< f30-0 333.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) ) ) (if (and (< (-> self prev-frame) 333.0) (>= f30-0 333.0)) - (dummy-11 + (spawn (-> self part-landing) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)) ) ) (if (and (< 169.0 f30-0) (< f30-0 202.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)) ) ) (if (and (< 240.0 f30-0) (< f30-0 270.0)) - (dummy-11 + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6)) ) @@ -1555,3 +741,7 @@ ((method-of-type beach-rock copy-defaults!) obj arg0) (none) ) + + + + diff --git a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc index a1daa67915..783ba425cf 100644 --- a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc @@ -11,16 +11,8 @@ :name "group-lurkercrab-slide" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x297 - :fade-after (meters 40.0) - :falloff-to (meters 40.0) - ) - (new 'static 'sparticle-group-item - :launcher #x298 - :fade-after (meters 40.0) - :falloff-to (meters 40.0) - ) + (sp-item 663 :fade-after (meters 40.0) :falloff-to (meters 40.0)) + (sp-item 664 :fade-after (meters 40.0) :falloff-to (meters 40.0)) ) :bounds (new 'static 'sphere :y -49152.0 :w 57344.0) @@ -33,99 +25,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.3 - :random-rangef 0.3 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 100.0 - :random-rangef 30.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 80.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 30.0 - :random-rangef 30.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 48.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 136.53334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.13653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.3 0.3 1.0) + (sp-flt spt-y (meters -2.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 30.0 1.0) + (sp-rnd-flt spt-g 80.0 20.0 1.0) + (sp-rnd-flt spt-b 30.0 30.0 1.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-scalevel-x (meters 0.033333335)) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-end) ) ) ) @@ -136,112 +51,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.1 - :random-rangef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 75.0 - :random-rangef 60.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 60.0 - :random-rangef 20.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 23.0 - :random-rangef 30.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 109.22667 - :random-rangef 109.22667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x1004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 5461.3335 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.1 1.0 1.0) + (sp-flt spt-y (meters -2.0)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 75.0 60.0 1.0) + (sp-rnd-flt spt-g 60.0 20.0 1.0) + (sp-rnd-flt spt-b 23.0 30.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-flt spt-accel-y -6.826667) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.2)) + (sp-end) ) ) ) @@ -1313,7 +1140,7 @@ nav-enemy-default-event-handler (let ((a0-0 (-> self part)) (a1-0 (-> self collide-info root-prim prim-core)) ) - (dummy-11 a0-0 (the-as vector a1-0)) + (spawn a0-0 (the-as vector a1-0)) ) (nav-enemy-travel-post) (none) @@ -1441,3 +1268,7 @@ nav-enemy-default-event-handler (go (method-of-object obj nav-enemy-idle)) (none) ) + + + + diff --git a/test/decompiler/reference/levels/common/baseplat_REF.gc b/test/decompiler/reference/levels/common/baseplat_REF.gc index 3f1e843ad6..3b1a64d348 100644 --- a/test/decompiler/reference/levels/common/baseplat_REF.gc +++ b/test/decompiler/reference/levels/common/baseplat_REF.gc @@ -112,9 +112,10 @@ ) ;; definition for method 20 of type baseplat +;; INFO: Return type mismatch object vs none. (defmethod dummy-20 baseplat ((obj baseplat)) (if (nonzero? (-> obj part)) - (dummy-11 (-> obj part) (-> obj root-override trans)) + (spawn (-> obj part) (-> obj root-override trans)) ) (none) ) diff --git a/test/decompiler/reference/levels/common/dark-eco-pool_REF.gc b/test/decompiler/reference/levels/common/dark-eco-pool_REF.gc index 4eeebabd60..4b8de37b14 100644 --- a/test/decompiler/reference/levels/common/dark-eco-pool_REF.gc +++ b/test/decompiler/reference/levels/common/dark-eco-pool_REF.gc @@ -176,14 +176,11 @@ :length 1 :duration #xbb8 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-dark-eco-nasty" :launcher (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item - :launcher #x7e4 - :fade-after (meters 50.0) - ) + (sp-item 2020 :fade-after (meters 50.0)) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -195,94 +192,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xb :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef -7.68 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -3.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x7e5) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 4.0) 1.0) + (sp-flt spt-scale-y (meters 0.25)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.1875)) + (sp-flt spt-scalevel-y (meters -0.001875)) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 2021) + (sp-end) ) ) ) @@ -293,27 +219,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.28 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-fade-a -1.28) + (sp-end) ) ) ) @@ -325,118 +235,29 @@ :length 19 :duration #x258 :linger-duration #x258 - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-dark-eco-pool-nasty" :launcher (new 'static 'inline-array sparticle-group-item 19 - (new 'static 'sparticle-group-item - :launcher #x808 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x809 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x804 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x804 - :flags #xc - :binding #x805 - ) - (new 'static 'sparticle-group-item - :launcher #x805 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x80a - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x806 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x806 - :flags #xc - :binding #x807 - ) - (new 'static 'sparticle-group-item - :launcher #x807 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) + (sp-item 2056 :fade-after (meters 100.0) :period 600 :length 5) + (sp-item 2057 :fade-after (meters 100.0) :period 600 :length 5 :binding 2052) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2058 :fade-after (meters 100.0) :period 600 :length 5 :binding 2054) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) ) :bounds (new 'static 'sphere :w 49152.0) ) @@ -448,76 +269,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.8285716 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x36) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 8.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.8285716) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -528,78 +292,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 163.84 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 25486.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 6.0 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) + (sp-flt spt-accel-y -3.4133334) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -610,130 +316,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 1228.8 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 109.22667 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -3.7236366 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -54.613335 - :random-rangef (the-as float #x1) - :random-multf 109.22667 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.26666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.19393939 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #xb3) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x408c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 1228.8 1228.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 60 179 1) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-end) ) ) ) @@ -744,103 +347,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -2.535619 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.01904762 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.40960002 - :random-rangef -0.6144 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #xef) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xc6) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0006190476)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.01904762) + (sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0) + (sp-int-plain-rnd spt-timer 30 239 1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) ) ) ) @@ -851,78 +374,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-rangef 6.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 163.84 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 25486.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 6.0 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) + (sp-flt spt-accel-y -3.4133334) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -933,131 +398,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 1228.8 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef 109.22667 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -3.7236366 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -54.613335 - :random-rangef (the-as float #x1) - :random-multf 109.22667 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.26666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.19393939 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #xb3) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x408c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 1228.8 1228.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 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 16.0 32.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 192.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 60 179 1) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-end) ) ) ) @@ -1068,103 +429,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -2.535619 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.01904762 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.40960002 - :random-rangef -0.6144 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #xef) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xc6) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 16.0 32.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 192.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0006190476)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.01904762) + (sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0) + (sp-int-plain-rnd spt-timer 30 239 1) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) ) ) ) @@ -1236,3 +517,7 @@ (none) ) ) + + + + diff --git a/test/decompiler/reference/levels/common/plat_REF.gc b/test/decompiler/reference/levels/common/plat_REF.gc index 51b5e2d6e9..8024f838b8 100644 --- a/test/decompiler/reference/levels/common/plat_REF.gc +++ b/test/decompiler/reference/levels/common/plat_REF.gc @@ -11,16 +11,8 @@ :name "group-standard-plat" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x16b - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) - (new 'static 'sparticle-group-item - :launcher #x16c - :fade-after (meters 160.0) - :falloff-to (meters 160.0) - ) + (sp-item 363 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 364 :fade-after (meters 160.0) :falloff-to (meters 160.0)) ) :bounds (new 'static 'sphere :y -49152.0 :w 57344.0) @@ -33,83 +25,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xe - :initial-valuef (the-as float #x5) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 5324.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 3686.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -16.383999 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x19) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x100) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 25486.223 - :random-rangef 7281.778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-num 1.5) + (sp-flt spt-y (meters 1.0)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-conerot-x (degrees 140.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-end) ) ) ) @@ -120,115 +49,25 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 2.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 40.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.32 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.13653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.96 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 23665.777 - :random-rangef 18204.445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 2.0) + (sp-flt spt-y (meters 1.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 130.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-end) ) ) ) @@ -601,3 +440,7 @@ ) (none) ) + + + + diff --git a/test/decompiler/reference/levels/common/sharkey_REF.gc b/test/decompiler/reference/levels/common/sharkey_REF.gc index 7016462c80..6ac0a083ce 100644 --- a/test/decompiler/reference/levels/common/sharkey_REF.gc +++ b/test/decompiler/reference/levels/common/sharkey_REF.gc @@ -8,101 +8,26 @@ :length 16 :duration #x78 :linger-duration #x30c - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sharkey-splash" :launcher (new 'static 'inline-array sparticle-group-item 16 - (new 'static 'sparticle-group-item - :launcher #x7c - :flags #x1 - :period #x384 - :length #x3f - ) - (new 'static 'sparticle-group-item :launcher #x7d :period #x384 :length #xf) - (new 'static 'sparticle-group-item - :launcher #x7e - :flags #x1 - :period #x384 - :length #xf - ) - (new 'static 'sparticle-group-item - :launcher #x7f - :flags #x1 - :period #x384 - :length #xf - ) - (new 'static 'sparticle-group-item - :launcher #x80 - :period #x384 - :length #xa - :binding #x81 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) - (new 'static 'sparticle-group-item - :launcher #x81 - :flags #x4 - :period #x384 - :length #x78 - ) + (sp-item 124 :flags (is-3d) :period 900 :length 63) + (sp-item 125 :period 900 :length 15) + (sp-item 126 :flags (is-3d) :period 900 :length 15) + (sp-item 127 :flags (is-3d) :period 900 :length 15) + (sp-item 128 :period 900 :length 10 :binding 129) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) + (sp-item 129 :flags (start-dead) :period 900 :length 120) ) :bounds (new 'static 'sphere :y -49152.0 :w 57344.0) @@ -1378,3 +1303,7 @@ nav-enemy-default-event-handler (go (method-of-object obj nav-enemy-idle)) (none) ) + + + + diff --git a/test/decompiler/reference/levels/common/static-screen_REF.gc b/test/decompiler/reference/levels/common/static-screen_REF.gc index 5f325bc7c6..a52523e968 100644 --- a/test/decompiler/reference/levels/common/static-screen_REF.gc +++ b/test/decompiler/reference/levels/common/static-screen_REF.gc @@ -52,7 +52,7 @@ (defmethod deactivate static-screen ((obj static-screen)) (dotimes (s5-0 1) (if (nonzero? (-> obj part s5-0)) - (deactivate (-> obj part s5-0)) + (kill-and-free-particles (-> obj part s5-0)) ) ) ((method-of-type process deactivate) obj) @@ -65,69 +65,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 252201580000000000.0 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4833.28 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 61440.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 26624.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x5c6)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1.18)) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 6.5)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -138,69 +87,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 252205980000000000.0 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -5177.344 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 61440.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 13312.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x5c6)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -1.264)) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 3.25)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -211,69 +109,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef 252210380000000000.0 - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -10166.272 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 61440.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 6656.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xffffffff) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x2204) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x5c6)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -2.482)) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 1.625)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-end) ) ) ) @@ -285,13 +132,13 @@ :length 3 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-part-screen1" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item :launcher #xb96 :flags #x8) - (new 'static 'sparticle-group-item :launcher #xb97 :flags #x8) - (new 'static 'sparticle-group-item :launcher #xb98 :flags #x8) + (sp-item 2966 :flags (launch-asap)) + (sp-item 2967 :flags (launch-asap)) + (sp-item 2968 :flags (launch-asap)) ) :bounds (new 'static 'sphere :w 4096.0) ) @@ -317,7 +164,7 @@ :trans (behavior () (hide-hud-quick) - (dummy-11 (-> self part 0) *zero-vector*) + (spawn (-> self part 0) *zero-vector*) 0 (none) ) @@ -434,3 +281,7 @@ (-> sv-16 ppointer) ) ) + + + + diff --git a/test/decompiler/reference/levels/finalboss/final-door_REF.gc b/test/decompiler/reference/levels/finalboss/final-door_REF.gc index 60258de387..df639dee28 100644 --- a/test/decompiler/reference/levels/finalboss/final-door_REF.gc +++ b/test/decompiler/reference/levels/finalboss/final-door_REF.gc @@ -501,7 +501,7 @@ (eval-position! gp-1 f0-2 (-> self root-override trans)) ) (transform-post) - (dummy-11 + (spawn (-> self part) (the-as vector (-> self root-override root-prim prim-core)) ) @@ -820,7 +820,3 @@ :post target-no-stick-post ) - - - - diff --git a/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc index e5b1636187..36c48eb2ec 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-h_REF.gc @@ -141,7 +141,7 @@ (dotimes (s5-0 7) (let ((a0-1 (-> obj particle s5-0))) (if (nonzero? a0-1) - (deactivate a0-1) + (kill-and-free-particles a0-1) ) ) ) @@ -196,7 +196,3 @@ (set! (-> v0-6 lod-dist 0) 4095996000.0) (set! *robotboss-sg* v0-6) ) - - - - diff --git a/test/decompiler/reference/levels/misty/sidekick-human_REF.gc b/test/decompiler/reference/levels/misty/sidekick-human_REF.gc index bd6209222c..263f1121ba 100644 --- a/test/decompiler/reference/levels/misty/sidekick-human_REF.gc +++ b/test/decompiler/reference/levels/misty/sidekick-human_REF.gc @@ -48,31 +48,18 @@ :length 8 :duration #xbb8 :linger-duration #x5dc - :flags #x4 + :flags (sp-group-flag screen-space) :name "group-2d-intro-mist" :launcher (new 'static 'inline-array sparticle-group-item 8 - (new 'static 'sparticle-group-item - :launcher #xa69 - :period #x12c - :length #x5 - :binding #xa67 - ) - (new 'static 'sparticle-group-item - :launcher #xa67 - :flags #xc - :binding #xa68 - ) - (new 'static 'sparticle-group-item - :launcher #xa67 - :flags #xc - :binding #xa68 - ) - (new 'static 'sparticle-group-item :launcher #xa68 :flags #x4) - (new 'static 'sparticle-group-item :launcher #xa68 :flags #x4) - (new 'static 'sparticle-group-item :launcher #xa68 :flags #x4) - (new 'static 'sparticle-group-item :launcher #xa6a) - (new 'static 'sparticle-group-item :launcher #xa6b) + (sp-item 2665 :period 300 :length 5 :binding 2663) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2666) + (sp-item 2667) ) :bounds (new 'static 'sphere :w 8192.0) ) @@ -84,73 +71,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -10240.0 - :random-rangef 20480.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -6144.0 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 13.653334 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x258) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3c - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -2.5) (meters 5.0) 1.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-g 128.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -161,122 +94,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x2 - :initial-valuef -218.45334 - :random-rangef (the-as float #x1) - :random-multf 436.90668 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -4.9648485 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x2 - :initial-valuef -54.613335 - :random-rangef (the-as float #x1) - :random-multf 109.22667 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x258) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 2048.0 819.2 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-int-flt spt-vel-x (meters -0.053333335) 1 436.90668) + (sp-flt spt-scalevel-x (meters -0.0012121212)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) ) ) ) @@ -287,96 +124,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -4.4860954 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :random-rangef -0.13653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #x12b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xc6) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.3) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0010952381)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y 0.0 -0.13653333 1.0) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) ) ) ) @@ -387,54 +150,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x203600) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -16000.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 61440.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 49152.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x13 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z -16000.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 12.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit14) + (sp-end) ) ) ) @@ -445,125 +172,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.3 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -16384.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -12288.0 - :random-rangef 24576.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :random-rangef 14000.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 24576.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 24576.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 80.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 150.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -6.826667 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -13.653334 - :random-rangef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x96) - :random-rangef (the-as float #x95) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xa6c) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.3) + (sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-rnd-flt spt-z 0.0 14000.0 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-r 16.0 80.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 16.0 150.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters -0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.075) (degrees 0.15) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.21333334) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 150 149 1) + (sp-launcher-by-id spt-next-launcher 2668) + (sp-end) ) ) ) @@ -574,19 +203,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x12c) - :random-rangef (the-as float #x12b) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xa6d) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int-plain-rnd spt-next-time 300 299 1) + (sp-launcher-by-id spt-next-launcher 2669) + (sp-end) ) ) ) @@ -597,13 +217,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.21333334) + (sp-end) ) ) ) @@ -615,1054 +230,267 @@ :length #x101 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-evilsib-appear" :launcher (new 'static 'inline-array sparticle-group-item 257 - (new 'static 'sparticle-group-item - :launcher #x929 - :period #x5dc - :length #x14 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92a - :period #x5dc - :length #x14 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92b - :period #x5dc - :length #x5 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92c - :period #x5dc - :length #x14 - :offset #x5dc - ) - (new 'static 'sparticle-group-item - :launcher #x92d - :period #x5dc - :length #x384 - :offset #x2ee - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x92e - :period #x5dc - :length #x2ee - :offset #x258 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x92f - :period #x5dc - :length #x258 - :offset #x1c2 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x92f - :period #x5dc - :length #x1c2 - :offset #x12c - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x930 - :period #x5dc - :length #x12c - :offset #x96 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x930 - :period #x5dc - :length #x96 - :binding #x928 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x928 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) + (sp-item 2345 :period 1500 :length 20 :offset 1500) + (sp-item 2346 :period 1500 :length 20 :offset 1500) + (sp-item 2347 :period 1500 :length 5 :offset 1500) + (sp-item 2348 :period 1500 :length 20 :offset 1500) + (sp-item 2349 :period 1500 :length 900 :offset 750 :binding 2344) + (sp-item 2350 :period 1500 :length 750 :offset 600 :binding 2344) + (sp-item 2351 :period 1500 :length 600 :offset 450 :binding 2344) + (sp-item 2351 :period 1500 :length 450 :offset 300 :binding 2344) + (sp-item 2352 :period 1500 :length 300 :offset 150 :binding 2344) + (sp-item 2352 :period 1500 :length 150 :binding 2344) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -1674,105 +502,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -4096.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x258) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4000) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.1) 1.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit14) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1783,13 +530,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.21333334) + (sp-end) ) ) ) @@ -1800,121 +542,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -4096.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x258) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x931) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.1) 1.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.21333334) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 300) + (sp-launcher-by-id spt-next-launcher 2353) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1925,120 +573,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x258) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x931) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.3) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.21333334) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 300) + (sp-launcher-by-id spt-next-launcher 2353) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2049,121 +604,27 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.5 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.21333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x258) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x931) - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-rnd-flt spt-y (meters -0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (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.21333334) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 300) + (sp-launcher-by-id spt-next-launcher 2353) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2174,141 +635,30 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 24 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 20480.0 - :random-rangef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 204.8 - :random-rangef 204.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -303.4074 - :random-rangef 606.8148 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1a :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -61.44 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -97.09037 - :random-rangef 194.18074 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x408c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x10e) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x932) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 20480.0 6144.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.05) 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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.074074075) (meters 0.14814815) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters -0.015)) + (sp-flt spt-scalevel-x (meters 0.0005)) + (sp-rnd-flt spt-rotvel-z (degrees -0.53333336) (degrees 1.0666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-int spt-next-time 270) + (sp-launcher-by-id spt-next-launcher 2354) + (sp-end) ) ) ) @@ -2319,13 +669,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -3.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -3.2) + (sp-end) ) ) ) @@ -2336,154 +681,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef 873.81335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.68266666 - :random-rangef -3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.8 - :random-rangef 0.05 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4005) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #x2ed) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x933) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3c - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 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 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.21333334) 1.0) + (sp-flt spt-scalevel-x (meters -0.00066666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.42666668) + (sp-rnd-flt spt-accel-y -0.68266666 -3.4133334 1.0) + (sp-rnd-flt spt-friction 0.8 0.05 1.0) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit0 bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 749 1) + (sp-launcher-by-id spt-next-launcher 2355) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2494,9 +716,9 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 3 - (new 'static 'sp-field-init-spec :field #x22 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-a 0.0) + (sp-end) ) ) ) @@ -2507,154 +729,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-rangef 1638.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef 109.22667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -2.7306666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.68266666 - :random-rangef -3.4133334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.75 - :random-rangef 0.05 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5dc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4005) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #x2ed) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x933) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3c - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3f - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.026666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00066666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.42666668) + (sp-rnd-flt spt-accel-y -0.68266666 -3.4133334 1.0) + (sp-rnd-flt spt-friction 0.75 0.05 1.0) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit0 bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 749 1) + (sp-launcher-by-id spt-next-launcher 2355) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -2665,85 +764,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 114688.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -2.3272727 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -2.3272727 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x5) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 2.0)) + (sp-rnd-flt spt-scale-x (meters 28.0) (meters 4.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 128.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-g -2.3272727) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2754,103 +788,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 2.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1024.0 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 255.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 2457.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -2.1333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -2.1333334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.0666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 2.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.25) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 16.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-y (meters 0.6)) + (sp-flt spt-fade-r -2.1333334) + (sp-flt spt-fade-g -2.1333334) + (sp-flt spt-fade-a -1.0666667) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -2862,337 +816,89 @@ :length 79 :duration #xbb8 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-evilsib-hover" :launcher (new 'static 'inline-array sparticle-group-item 79 - (new 'static 'sparticle-group-item :launcher #x952 :binding #x951) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item - :launcher #x951 - :flags #xe - :binding #x950 - ) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) - (new 'static 'sparticle-group-item :launcher #x950 :flags #x6) + (sp-item 2386 :binding 2385) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) ) :bounds (new 'static 'sphere :w 32768.0) ) @@ -3204,61 +910,17 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 1024.0 - :random-rangef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -2.048 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4000) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.25) (meters 1.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-accel-y -2.048) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit14) + (sp-end) ) ) ) @@ -3269,137 +931,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xb :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef 1024.0 - :random-rangef 1024.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 204.8 - :random-rangef 102.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x18 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :initial-valuef -182.04443 - :random-rangef 364.08887 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1a :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef 11.377778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 1.1377778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -97.09037 - :random-rangef 194.18074 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 4.266667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x408c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #xe) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x954) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-z 1024.0 1024.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.025) 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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.04444444) (meters 0.08888888) 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters 0.0027777778)) + (sp-flt spt-scalevel-x (meters 0.00027777778)) + (sp-rnd-flt spt-rotvel-z (degrees -0.53333336) (degrees 1.0666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 4.266667) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3 bit7 bit14) + (sp-int-plain-rnd spt-next-time 30 14 1) + (sp-launcher-by-id spt-next-launcher 2388) + (sp-end) ) ) ) @@ -3410,18 +966,10 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 - (new 'static 'sp-field-init-spec :field #x24 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #x955) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 2389) + (sp-end) ) ) ) @@ -3432,31 +980,11 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :initial-valuef -34.133335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -1.7066667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.0666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-vel-z (meters -0.008333334)) + (sp-flt spt-scalevel-x (meters -0.00041666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.0666667) + (sp-end) ) ) ) @@ -3467,104 +995,23 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 17 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.1 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -122.88 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -97.09037 - :random-rangef 194.18074 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -4.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 0.1) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.2) 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 64.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters -0.03)) + (sp-rnd-flt spt-rotvel-z (degrees -0.53333336) (degrees 1.0666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -4.8) + (sp-flt spt-accel-y -1.3653333) + (sp-int spt-timer 15) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -3576,12 +1023,10 @@ :length 1 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-glowing-can" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #x8fa) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2298)) :bounds (new 'static 'sphere :w 262144.0) ) ) @@ -3592,92 +1037,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec :field #x6 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -1024.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -1024.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -1024.0 - :random-rangef 2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 4096.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x12 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x14 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x1a :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.42666668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x96) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.0) + (sp-rnd-flt spt-x (meters -0.25) (meters 0.5) 1.0) + (sp-rnd-flt spt-y (meters -0.25) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -1024.0 2048.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 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 0.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.0)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -3689,389 +1066,79 @@ :length 69 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-exploding-can" :launcher (new 'static 'inline-array sparticle-group-item 69 - (new 'static 'sparticle-group-item - :launcher #xae1 - :period #x708 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #xae2 - :period #x708 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #xae3 - :period #x708 - :length #x14 - ) - (new 'static 'sparticle-group-item - :launcher #xae4 - :period #x708 - :length #x14 - ) - (new 'static 'sparticle-group-item - :launcher #xb0e - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x128 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) + (sp-item 2785 :period 1800 :length 5) + (sp-item 2786 :period 1800 :length 40) + (sp-item 2787 :period 1800 :length 20) + (sp-item 2788 :period 1800 :length 20) + (sp-item 2830 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -4083,92 +1150,22 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xa - :flags #x1 - :initial-valuef -8192.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 8192.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xc - :flags #x1 - :initial-valuef -8192.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 218.45334 - :random-rangef 109.22667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.94 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xf0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 25486.223 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-z -8192.0 16384.0 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -4179,136 +1176,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -6144.0 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1638.4 - :random-rangef 3276.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 163.84 - :random-rangef 655.36 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -10.922667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.68266666 - :random-rangef -0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.9 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #x1e) - :random-rangef (the-as float #x59) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xae5) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 21845.334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 89 1) + (sp-launcher-by-id spt-next-launcher 2789) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) ) ) ) @@ -4319,13 +1208,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.0666667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -1.0666667) + (sp-end) ) ) ) @@ -4336,84 +1220,20 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 12.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 1228.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x1 - :initial-valuef 49152.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x1 - :initial-valuef 4259.84 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 12.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 12.0)) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 1.04)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -4424,71 +1244,18 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 98304.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 192.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -2.3272727 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x36) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x400c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 24.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -2.3272727) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) ) ) ) @@ -4499,142 +1266,29 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -6144.0 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 12288.0 - :random-rangef 6144.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 327.68 - :random-rangef 163.84 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -109.22667 - :random-rangef 218.45334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.28444445 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.68266666 - :random-rangef 0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x1fe) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 21845.334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 16384.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters 0.02)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.28444445) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0) + (sp-end) ) ) ) @@ -4646,210 +1300,46 @@ :length 36 :duration #x384 :linger-duration #x5dc - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-dark-splash" :launcher (new 'static 'inline-array sparticle-group-item 36 - (new 'static 'sparticle-group-item - :launcher #x127 - :fade-after (meters 100.0) - :period #x258 - :length #x5 - :binding #x128 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x128 - :flags #xc - :binding #x129 - ) - (new 'static 'sparticle-group-item - :launcher #x129 - :fade-after (meters 80.0) - :falloff-to (meters 100.0) - :flags #x4 - ) - (new 'static 'sparticle-group-item - :launcher #x82f - :period #x258 - :length #x5 - ) - (new 'static 'sparticle-group-item - :launcher #x830 - :fade-after (meters 80.0) - :falloff-to (meters 80.0) - :period #x258 - :length #x28 - ) - (new 'static 'sparticle-group-item - :launcher #x831 - :period #x258 - :length #x14 - ) + (sp-item 295 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2095 :period 600 :length 5) + (sp-item 2096 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2097 :period 600 :length 20) ) :bounds (new 'static 'sphere :w 262144.0) ) @@ -4862,12 +1352,10 @@ :length 1 :duration #x5 :linger-duration #x384 - :flags #x1 + :flags (sp-group-flag use-local-clock) :name "group-sequenceC-blow-dust" :launcher - (new 'static 'inline-array sparticle-group-item 1 - (new 'static 'sparticle-group-item :launcher #xae6) - ) + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2790)) :bounds (new 'static 'sphere :w 262144.0) ) ) @@ -4878,145 +1366,30 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 24 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x15 :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 68.26667 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 27.306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -218.45334 - :random-rangef 436.90668 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef 0.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 1.3653333 - :random-rangef -1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x32 - :initial-valuef (the-as float #xf) - :random-rangef (the-as float #x2c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x33 - :flags #x6 - :initial-valuef (the-as float #xb06) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 20571.021 - :random-rangef 364.0889 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-valuef -2275.5557 - :random-rangef 2730.6667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :initial-valuef 1228.8 - :random-rangef -2048.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 64.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (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-a 0.4) + (sp-rnd-flt spt-accel-y 1.3653333 -1.3653333 1.0) + (sp-flt spt-friction 0.92) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-int-plain-rnd spt-next-time 15 44 1) + (sp-launcher-by-id spt-next-launcher 2822) + (sp-rnd-flt spt-conerot-x (degrees 112.99999) (degrees 2.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees -12.500001) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.3) (meters -0.5) 1.0) + (sp-end) ) ) ) @@ -5027,13 +1400,8 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 2 - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.1 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-flt spt-fade-a -0.1) + (sp-end) ) ) ) @@ -6258,7 +2626,7 @@ (defbehavior sequenceC-can-trans-hook-2 sequenceC () (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (-> self node-list data 4)) - (dummy-11 (-> self part) gp-0) + (spawn (-> self part) gp-0) ) (when (>= (ja-aframe-num 0) 1590.0) (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) @@ -6782,3 +3150,7 @@ (dummy-42 obj) (none) ) + + + + diff --git a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc index 2365dc5f06..13e5793ab7 100644 --- a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc +++ b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc @@ -758,7 +758,7 @@ (set! (-> s3-1 normal w) 8192.0) (when (and - (sphere-in-view-frustum? (-> s3-1 normal)) + (sphere-in-view-frustum? (the-as sphere (-> s3-1 normal))) (< 822083600.0 (vector-vector-distance-squared (-> s3-1 normal) (camera-pos)) diff --git a/test/decompiler/reference/levels/village1/assistant_REF.gc b/test/decompiler/reference/levels/village1/assistant_REF.gc index 75e5308d57..f4310988d7 100644 --- a/test/decompiler/reference/levels/village1/assistant_REF.gc +++ b/test/decompiler/reference/levels/village1/assistant_REF.gc @@ -559,7 +559,7 @@ ) ) (until (ja-done? 0) - (dummy-11 + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) @@ -615,7 +615,7 @@ ) ) (until (ja-done? 0) - (dummy-11 + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) @@ -880,16 +880,8 @@ :name "group-assistant-torch" :launcher (new 'static 'inline-array sparticle-group-item 2 - (new 'static 'sparticle-group-item - :launcher #x16d - :fade-after (meters 30.0) - :falloff-to (meters 30.0) - ) - (new 'static 'sparticle-group-item - :launcher #x16e - :fade-after (meters 60.0) - :falloff-to (meters 80.0) - ) + (sp-item 365 :fade-after (meters 30.0) :falloff-to (meters 30.0)) + (sp-item 366 :fade-after (meters 60.0) :falloff-to (meters 80.0)) ) :bounds (new 'static 'sphere :w 61440.0) ) @@ -901,79 +893,19 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.1 - :random-rangef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 4096.0 - :random-rangef 12288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 100.0 - :random-rangef 28.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 100.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 80.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -6.4 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #xa) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 0.1 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 3.0) 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 100.0 28.0 1.0) + (sp-flt spt-g 100.0) + (sp-flt spt-b 80.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-fade-a -6.4) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -984,134 +916,28 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 0.1 - :random-rangef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 409.6 - :random-rangef 409.6 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 54.613335 - :random-rangef 327.68 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -8.192 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2d - :flags #x1 - :initial-valuef 0.93 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x4b0) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x30 - :flags #x1 - :initial-valuef 140288.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x31 - :flags #x5 - :sym 'check-drop-level-assistant - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :initial-valuef 8192.0 - :random-rangef 32768.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.1 1.0 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-rnd-flt spt-r 128.0 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.08) 1.0) + (sp-flt spt-scalevel-x (meters -0.00016666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.2) + (sp-flt spt-fade-b -0.2) + (sp-flt spt-accel-y -8.192) + (sp-flt spt-friction 0.93) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2) + (sp-flt spt-userdata 140288.0) + (sp-func spt-func 'check-drop-level-assistant) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 45.0) (degrees 180.0) 1.0) + (sp-end) ) ) ) @@ -1122,93 +948,21 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 3.0 - :random-rangef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 307.2 - :random-rangef 307.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 96.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :initial-valuef 47.786667 - :random-rangef 13.653334 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.85333335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef -0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x12c) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x4) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :initial-valuef 9102.223 - :random-rangef 5461.3335 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 3.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.075) (meters 0.075) 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 96.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.011666667) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-accel-y -0.68266666) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-conerot-x (degrees 50.000004) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) ) ) ) @@ -1240,8 +994,8 @@ *sp-particle-system-2d* (-> *part-id-table* 367) gp-0 - #f - #f + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) 1.0 ) ) @@ -1271,3 +1025,7 @@ ) (none) ) + + + + diff --git a/test/decompiler/reference/levels/village3/miners_REF.gc b/test/decompiler/reference/levels/village3/miners_REF.gc index a19f9b5a48..eb2b89d8a2 100644 --- a/test/decompiler/reference/levels/village3/miners_REF.gc +++ b/test/decompiler/reference/levels/village3/miners_REF.gc @@ -202,21 +202,9 @@ :name "group-minershort-candle" :launcher (new 'static 'inline-array sparticle-group-item 3 - (new 'static 'sparticle-group-item - :launcher #x93c - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) - (new 'static 'sparticle-group-item - :launcher #x93d - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) - (new 'static 'sparticle-group-item - :launcher #x93e - :fade-after (meters 60.0) - :falloff-to (meters 60.0) - ) + (sp-item 2364 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 2365 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 2366 :fade-after (meters 60.0) :falloff-to (meters 60.0)) ) :bounds (new 'static 'sphere :w 61440.0) ) @@ -228,151 +216,31 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 25 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200000) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-rangef 2.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #xb :flags #x1 :random-multf 1.0) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 307.2 - :random-rangef 307.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 16.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1a - :flags #x1 - :random-rangef 1.3653333 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef 2.048 - :random-rangef 4.096 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1f - :flags #x1 - :initial-valuef -36.40889 - :random-rangef 72.81778 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x21 - :flags #x1 - :initial-valuef -0.32820514 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.32820514 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x23 - :flags #x1 - :initial-valuef -0.32820514 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -0.16410257 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 0.13653333 - :random-rangef 0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x186) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x5004) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x3a - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3b - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x3e - :flags #x1 - :random-rangef 204.8 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-scale-x (meters 0.075) (meters 0.075) 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-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.00033333333) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0005) (meters 0.001) 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-r -0.32820514) + (sp-flt spt-fade-g -0.32820514) + (sp-flt spt-fade-b -0.32820514) + (sp-flt spt-fade-a -0.16410257) + (sp-rnd-flt spt-accel-y 0.13653333 0.27306667 1.0) + (sp-int spt-timer 390) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.05) 1.0) + (sp-end) ) ) ) @@ -383,112 +251,24 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x200f00) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 3.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -327.68 - :random-rangef 81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 819.2 - :random-rangef 819.2 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 32.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :random-rangef 0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :random-rangef 0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.7111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 1.0922667 - :random-rangef 0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x3c) - :random-rangef (the-as float #x1d) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #x8) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-y (meters -0.08) (meters 0.02) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.0) (meters 0.00016666666) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.0) (meters 0.00016666666) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.7111111) + (sp-rnd-flt spt-accel-y 1.0922667 0.27306667 1.0) + (sp-int-plain-rnd spt-timer 60 29 1) + (sp-cpuinfo-flags bit3) + (sp-end) ) ) ) @@ -499,122 +279,26 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 20 - (new 'static 'sp-field-init-spec - :field #x1 - :initial-valuef (the-as float #x201200) - ) - (new 'static 'sp-field-init-spec - :field #x6 - :flags #x1 - :initial-valuef 1.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xb - :flags #x1 - :initial-valuef -81.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #xd - :flags #x1 - :initial-valuef 2048.0 - :random-rangef 3072.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x10 - :flags #x1 - :random-rangef 65536.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x11 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x12 - :flags #x1 - :initial-valuef 128.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x13 - :flags #x1 - :initial-valuef 64.0 - :random-rangef 64.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x14 - :flags #x1 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x15 - :flags #x1 - :initial-valuef 16.0 - :random-rangef 32.0 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x19 - :flags #x1 - :random-rangef 0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1b - :flags #x1 - :random-rangef 0.68266666 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x1c - :flags #x1 - :initial-valuef -6.826667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x20 - :flags #x3 - :initial-valuef (the-as float #xfffffffc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x22 - :flags #x1 - :initial-valuef -0.7111111 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x24 - :flags #x1 - :initial-valuef -1.92 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x26 - :flags #x1 - :initial-valuef 1.0922667 - :random-rangef 0.27306667 - :random-multf 1.0 - ) - (new 'static 'sp-field-init-spec - :field #x2e - :initial-valuef (the-as float #x14) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec - :field #x2f - :initial-valuef (the-as float #xc) - :random-multf (the-as float #x1) - ) - (new 'static 'sp-field-init-spec :field #x43) + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.02)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.75) 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-rnd-flt spt-g 64.0 64.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters 0.0) (meters 0.00016666666) 1.0) + (sp-rnd-flt spt-vel-z (meters 0.0) (meters 0.00016666666) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-a -1.92) + (sp-rnd-flt spt-accel-y 1.0922667 0.27306667 1.0) + (sp-int spt-timer 20) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) ) ) ) @@ -666,8 +350,9 @@ ) ;; definition for function minershort-trans-hook +;; INFO: Return type mismatch object vs none. (defbehavior minershort-trans-hook minershort () - (dummy-11 + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 14)) ) @@ -1356,3 +1041,7 @@ (go (method-of-object obj idle)) (none) ) + + + + diff --git a/test/decompiler/reference/levels/village_common/oracle_REF.gc b/test/decompiler/reference/levels/village_common/oracle_REF.gc index bcd2d4e251..40373101d5 100644 --- a/test/decompiler/reference/levels/village_common/oracle_REF.gc +++ b/test/decompiler/reference/levels/village_common/oracle_REF.gc @@ -664,7 +664,7 @@ ) ) ) - (dummy-11 + (spawn (-> self part) (the-as vector a1-1) ) diff --git a/test/decompiler/vu_reference/ocean-vu0-result.txt b/test/decompiler/vu_reference/ocean-vu0-result.txt index 757823150a..6b1c192f35 100644 --- a/test/decompiler/vu_reference/ocean-vu0-result.txt +++ b/test/decompiler/vu_reference/ocean-vu0-result.txt @@ -1,15 +1,15 @@ nop | mulay.x ACC, vf12, vf02 nop | mulax.z ACC, vf12, vf03 - nop | msub.xz vf24, vf12, vf02 + nop | msubx.xz vf24, vf12, vf02 nop | mulaz.x ACC, vf12, vf02 nop | mulay.z ACC, vf12, vf03 - nop | msub.xz vf25, vf12, vf02 + nop | msuby.xz vf25, vf12, vf02 nop | mulaw.x ACC, vf12, vf02 nop | mulaz.z ACC, vf12, vf03 - nop | msub.xz vf26, vf12, vf02 + nop | msubz.xz vf26, vf12, vf02 nop | mulax.x ACC, vf12, vf04 nop | mulaw.z ACC, vf12, vf03 - nop | msub.xz vf27, vf12, vf02 + nop | msubw.xz vf27, vf12, vf02 nop | mul.xz vf28, vf24, vf24 nop | mul.xz vf29, vf25, vf25 nop | mul.xz vf30, vf26, vf26 diff --git a/test/decompiler/vu_reference/sprite-result.txt b/test/decompiler/vu_reference/sprite-result.txt index a5c0f2f13d..e24ac1531e 100644 --- a/test/decompiler/vu_reference/sprite-result.txt +++ b/test/decompiler/vu_reference/sprite-result.txt @@ -61,7 +61,7 @@ L3: lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11 lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23 lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05 - lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05 + lq.xyzw vf22, 983(vi07) | msubz.xyzw vf12, vf18, vf05 sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05 lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05 move.w vf24, vf00 | addw.z vf23, vf00, vf24 @@ -170,7 +170,7 @@ L8: lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11 lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23 lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05 - lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05 + lq.xyzw vf22, 983(vi07) | msubz.xyzw vf12, vf18, vf05 sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05 lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05 move.w vf24, vf00 | addw.z vf23, vf00, vf24 diff --git a/test/goalc/source_templates/with_game/test-mips2c-goal.gc b/test/goalc/source_templates/with_game/test-mips2c-goal.gc new file mode 100644 index 0000000000..24d826be4a --- /dev/null +++ b/test/goalc/source_templates/with_game/test-mips2c-goal.gc @@ -0,0 +1,9 @@ +(defun goal_check_function (a b c d e f g h) + (format #t "~d ~d ~d ~d " a b c d) + (format #t "~d ~d ~d ~d~%" e f g h) + 12 + ) + +(let ((f (the (function int int int int int int int int int) (__pc-get-mips2c "test-func2")))) + (f 1 2 3 4 5 6 7 8) + ) \ No newline at end of file diff --git a/test/goalc/test_with_game.cpp b/test/goalc/test_with_game.cpp index 20ac95e14c..ee93472b3b 100644 --- a/test/goalc/test_with_game.cpp +++ b/test/goalc/test_with_game.cpp @@ -900,13 +900,24 @@ namespace Mips2C { namespace test_func { extern u64 execute(void*); } +namespace goal_call_test { +extern u64 execute(void*); +extern void link(); +} // namespace goal_call_test } // namespace Mips2C -TEST_F(WithGameTests, Mips2C) { +TEST_F(WithGameTests, Mips2CBasic) { Mips2C::gLinkedFunctionTable.reg("test-func", Mips2C::test_func::execute, 0); shared_compiler->runner.run_static_test(env, testCategory, "test-mips2c-call.gc", {"36\n0\n"}); } +TEST_F(WithGameTests, Mips2C_CallGoal) { + Mips2C::gLinkedFunctionTable.reg("test-func2", Mips2C::goal_call_test::execute, 128); + Mips2C::goal_call_test::link(); + shared_compiler->runner.run_static_test(env, testCategory, "test-mips2c-goal.gc", + {"1 2 3 4 5 6 7 8\n12\n"}); +} + TEST(TypeConsistency, TypeConsistency) { Compiler compiler; compiler.enable_throw_on_redefines();