diff --git a/common/goal_constants.h b/common/goal_constants.h index f0cf906cdf..10bdd7fdaa 100644 --- a/common/goal_constants.h +++ b/common/goal_constants.h @@ -24,7 +24,7 @@ constexpr u32 GOAL_COPY_METHOD = 6; // method ID of GOAL copy constexpr u32 GOAL_RELOC_METHOD = 7; // method ID of GOAL relocate constexpr u32 GOAL_MEMUSAGE_METHOD = 8; // method ID of GOAL mem-usage -constexpr int EE_MAIN_MEM_LOW_PROTECT = 1024 * 1024; +constexpr int EE_MAIN_MEM_LOW_PROTECT = 512 * 1024; constexpr int EE_MAIN_MEM_SIZE = 128 * (1 << 20); // 128 MB, same as PS2 TOOL constexpr u64 EE_MAIN_MEM_MAP = 0x2123000000; // intentionally > 32-bit to catch pointer bugs diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index e0a2f0e10b..d18f99a9c3 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -4643,7 +4643,7 @@ :flag-assert #x1000000068 (:methods (new (symbol type int) _type_ 0) - (want-file (_type_ string int handle float) int 9) + (set-pending-file (_type_ string int handle float) int 9) (update (_type_) int 10) (inactive? (_type_) symbol 11) (file-status (_type_ string int) symbol 12) diff --git a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc index ea32a33117..c1571aef65 100644 --- a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc @@ -504,7 +504,8 @@ "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], + "(anon-function 9 game-save)":[3, 4, 5, 6, 7, 8], + //"(anon-function 9 game-save)":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "particle-adgif":[0, 1, 2, 3, 4, 5, 7], "sp-launch-particles-var":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "(method 11 sparticle-launch-control)": [ 27, 28, 35, 46, 48, 49, 77], diff --git a/decompiler/util/sparticle_decompile.cpp b/decompiler/util/sparticle_decompile.cpp index 7f650ab70d..987838074c 100644 --- a/decompiler/util/sparticle_decompile.cpp +++ b/decompiler/util/sparticle_decompile.cpp @@ -2,6 +2,7 @@ #include "decompiler/util/data_decompile.h" #include "common/goos/PrettyPrinter.h" #include "common/util/print_float.h" +#include "common/util/assert.h" namespace decompiler { // sparticle fields. @@ -102,6 +103,7 @@ enum class FieldKind { NO_FANCY_DECOMP, FUNCTION, USERDATA, + ROT_X, INVALID }; @@ -125,7 +127,7 @@ const SparticleFieldDecomp field_kinds[68] = { {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::ROT_X}, // 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 @@ -294,6 +296,7 @@ goos::Object decompile_sparticle_userdata(const std::vector& words, return original; } } + goos::Object decompile_sparticle_int_init(const std::vector& words, const std::string& field_name, const std::string& flag_name) { @@ -307,9 +310,22 @@ goos::Object decompile_sparticle_int_init(const std::vector& words, fmt::format("(sp-int {} {})", field_name, word_as_s32(words.at(1)))); } +goos::Object decompile_sparticle_rot_x(const std::vector& words, + const std::string& field_name, + const std::string& flag_name) { + 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 decompile_sparticle_int_init(words, field_name, flag_name); + } +} + goos::Object decompile_sparticle_int_with_rand_init(const std::vector& words, const std::string& field_name, const std::string& flag_name) { + if (flag_name != "plain-v1") { + fmt::print("Bad {} {}\n", field_name, 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); @@ -588,6 +604,9 @@ goos::Object decompile_sparticle_field_init(const TypeSpec& type, case FieldKind::USERDATA: result = decompile_sparticle_userdata(obj_words, field_name, flag_name, normal); break; + case FieldKind::ROT_X: + result = decompile_sparticle_rot_x(obj_words, field_name, flag_name); + break; default: assert(false); } diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index 92e481118d..c3e21dcb28 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -42,6 +42,7 @@ set(RUNTIME_SOURCE sce/libgraph.cpp sce/deci2.cpp sce/sif_ee.cpp + sce/sif_ee_memcard.cpp sce/iop.cpp sce/stubs.cpp kernel/asm_funcs.asm diff --git a/game/common/play_rpc_types.h b/game/common/play_rpc_types.h index a467926dd0..72521275a0 100644 --- a/game/common/play_rpc_types.h +++ b/game/common/play_rpc_types.h @@ -6,10 +6,5 @@ * Note that PLAY and PLAYER are different. */ -#ifndef JAK1_PLAY_RPC_TYPES_H -#define JAK1_PLAY_RPC_TYPES_H - constexpr int PLAY_RPC_ID = 0xdeb6; constexpr int PLAY_RPC_CHANNEL = 5; - -#endif // JAK1_PLAY_RPC_TYPES_H diff --git a/game/fake_iso.txt b/game/fake_iso.txt index 31fb17476b..d5f4f208b9 100644 --- a/game/fake_iso.txt +++ b/game/fake_iso.txt @@ -9,6 +9,7 @@ ART.CGO out/iso/ART.CGO TWEAKVAL.MUS resources/TWEAKVAL.MUS VAGDIR.AYB resources/VAGDIR.AYB SCREEN1.USA resources/SCREEN1.USA +SAVEGAME.ICO resources/SAVEGAME.ICO 0COMMON.TXT out/iso/0COMMON.TXT 1COMMON.TXT out/iso/1COMMON.TXT 2COMMON.TXT out/iso/2COMMON.TXT diff --git a/game/graphics/texture/TexturePool.cpp b/game/graphics/texture/TexturePool.cpp index d656d1483f..db1eac9a1e 100644 --- a/game/graphics/texture/TexturePool.cpp +++ b/game/graphics/texture/TexturePool.cpp @@ -225,16 +225,6 @@ std::vector> TexturePool::convert_textures(const 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); diff --git a/game/kernel/kmachine.cpp b/game/kernel/kmachine.cpp index 64a023e66c..b8d5372538 100644 --- a/game/kernel/kmachine.cpp +++ b/game/kernel/kmachine.cpp @@ -37,6 +37,7 @@ #include "game/mips2c/mips2c_table.h" #include "game/system/vm/vm.h" #include "game/system/newpad.h" +#include "game/sce/libscf.h" using namespace ee; /*! @@ -692,9 +693,9 @@ u64 DecodeInactiveTimeout() { return masterConfig.inactive_timeout; } -// TODO DecodeTime -void DecodeTime() { - assert(false); +void DecodeTime(u32 ptr) { + Ptr clock(ptr); + sceCdReadClock(clock.c()); } // TODO PutDisplayEnv diff --git a/game/kernel/kmemcard.cpp b/game/kernel/kmemcard.cpp index 85ec741111..2526335cc6 100644 --- a/game/kernel/kmemcard.cpp +++ b/game/kernel/kmemcard.cpp @@ -3,17 +3,20 @@ * Memory card interface. Very messy code. */ -//#include "ps2/SCE_MC.h" -//#include "ps2/SCE_FS.h" -//#include "ps2/common_types.h" -//#include "kernel/kmachine.h" +#include +#include + +#include "third-party/fmt/core.h" + #include "game/sce/sif_ee.h" +#include "game/sce/sif_ee_memcard.h" #include "kmemcard.h" #include "game/kernel/kdgo.h" #include "game/common/ramdisk_rpc_types.h" #include "game/kernel/fileio.h" -#include -#include +#include "common/util/assert.h" + +constexpr static bool memcard_debug = false; using McCallbackFunc = void (*)(s32); @@ -24,6 +27,22 @@ static s32 language; static MemoryCardOperation op; static MemoryCard mc[2]; static RPC_Ramdisk_LoadCmd ramdisk_cmd; +static ee::sceMcTblGetDir dirent; + +constexpr u32 MEM_CARD_MAGIC = 0x12345678; + +struct McHeader { + u32 save_count; + u32 checksum; + u32 magic; + u8 preview_data[64]; + u8 data[944]; + u32 unk1_repeated; +}; + +static_assert(sizeof(McHeader) == 0x400, "McHeader size"); + +static McHeader header; // these are the return value for sceMcGetInfo. static s32 p1, p2, p3, p4; @@ -41,6 +60,33 @@ void cb_createdfile(s32); void cb_writtenfile(s32); void cb_closedfile(s32); void cb_reprobe_save(s32); +void cb_reprobe_load(s32); +void cb_probe(s32); +void cb_reprobe(s32); +void cb_getdir(s32); +void cb_check_open(s32); +void cb_check_read(s32); +void cb_check_close(s32); +void cb_openedsave(s32); +void cb_savedheader(s32); +void cb_saveddata(s32); +void cb_savedfooter(s32); +void cb_closedsave(s32); +void cb_openedload(s32); +void cb_readload(s32); +void cb_closedload(s32); + +template +void mc_print(const std::string& str, Args&&... args) { + if (memcard_debug) { + fmt::print("[MC] "); + if (!str.empty() && str.back() == '\n') { + fmt::print(str, std::forward(args)...); + } else { + fmt::print(str + '\n', std::forward(args)...); + } + } +} const char* filename[12] = { "/BASCUS-97124AYBABTU!", "/BASCUS-97124AYBABTU!/icon.sys", @@ -61,11 +107,15 @@ void kmemcard_init_globals() { p2 = 0; p3 = 0; p4 = 0; + memset(&dirent, 0, sizeof(sceMcTblGetDir)); + memset(&header, 0, sizeof(McHeader)); } /*! * Get a new memory card handle. * Will never return 0. + * A handle is a unique integer that can be passed up to the GOAL game code and represents a + * specific memory card. If the card is removed, the handle will become invalid. */ s32 new_mc_handle() { s32 handle = next++; @@ -79,7 +129,7 @@ s32 new_mc_handle() { } /*! - * A questionable checksum. + * A questionable checksum used on memory card data. */ u32 mc_checksum(Ptr data, s32 size) { if (size < 0) { @@ -89,7 +139,7 @@ u32 mc_checksum(Ptr data, s32 size) { u32 result = 0; u32* data_u32 = (u32*)data.c(); for (s32 i = 0; i < size / 4; i++) { - result = result << 1 ^ (s32)result >> 0x1f ^ data_u32[i] ^ 0x12345678; + result = result << 1 ^ (s32)result >> 0x1f ^ data_u32[i] ^ MEM_CARD_MAGIC; } return result ^ 0xedd1e666; @@ -111,14 +161,19 @@ s32 handle_to_slot(u32 handle, MemoryCardState state) { } /*! - * Run the Memory Card state machine. - * This waits for in-progress ops to finish. - * If it is done, it starts a new op, if there is one pending. + * Run the Memory Card state machine. This is called once per frame in GOAL. + * It: + * - does nothing if there is an in-progress memory card operation + * - if async memory card functions are done, runs their callbacks + * - if there is a requested operation, starts running sony functions. + * - if there is none of the above, and unknown cards, finds out about them. + * - every now and then, recheck cards. */ void MC_run() { - // if we have an in-progress operation, wait for it to complete. + // if we have an in-progress operation, it will have set a callback. if (callback) { s32 sony_cmd, sony_status; + // check the status s32 status = sceMcSync(1, &sony_cmd, &sony_status); McCallbackFunc callback_for_sync = callback; if (status == sceMcExecRun) { @@ -127,27 +182,27 @@ void MC_run() { } if (status == sceMcExecFinish) { - // sony function is done. do the callback + // sony function is done. do the callback. callback = nullptr; (*callback_for_sync)(sony_status); } else { // sony function is done, but failed. - assert(false); callback = nullptr; (*callback_for_sync)(0); } if (callback) { // if we got another callback, it means there's another op started by the prev callback. - // and this case, we're done. + // and this case, we want to wait for that operation to finish. return; } } - // if we got here, there is no in-progress operation. So start the next one. + // if we got here, there is no in-progress sony function. So start the next one, if we should if (op.operation == MemoryCardOperationKind::FORMAT) { + mc_print("begin format operation"); // grab the slot. should be open, but not formatted - p1 = handle_to_slot(op.param, MemoryCardState::OPEN); + p1 = handle_to_slot(op.param, MemoryCardState::OPEN_BUT_UNFORMATTED); if (p1 == -1) { // no slot in the right state. op.operation = MemoryCardOperationKind::NO_OP; @@ -159,13 +214,14 @@ void MC_run() { callback = cb_reprobe_format; } // allow some number of errors. - op.counter--; - if (op.counter == 0) { + op.retry_count--; + if (op.retry_count == 0) { op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::INTERNAL_ERROR; } } } else if (op.operation == MemoryCardOperationKind::UNFORMAT) { + mc_print("begin unformat operation"); p1 = handle_to_slot(op.param, MemoryCardState::FORMATTED); if (p1 == -1) { op.operation = MemoryCardOperationKind::NO_OP; @@ -175,13 +231,14 @@ void MC_run() { if (rv == sceMcResSucceed) { callback = cb_unformat; } - op.counter--; - if (op.counter == 0) { + op.retry_count--; + if (op.retry_count == 0) { op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::INTERNAL_ERROR; } } } else if (op.operation == MemoryCardOperationKind::CREATE_FILE) { + mc_print("begin create file operation"); p1 = handle_to_slot(op.param, MemoryCardState::FORMATTED); if (p1 == -1) { op.operation = MemoryCardOperationKind::NO_OP; @@ -192,13 +249,14 @@ void MC_run() { callback = cb_reprobe_createfile; } // allow some number of errors. - op.counter--; - if (op.counter == 0) { + op.retry_count--; + if (op.retry_count == 0) { op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::INTERNAL_ERROR; } } } else if (op.operation == MemoryCardOperationKind::SAVE) { + mc_print("begin save operation"); p1 = handle_to_slot(op.param, MemoryCardState::FORMATTED); if (p1 == -1) { op.operation = MemoryCardOperationKind::NO_OP; @@ -209,16 +267,95 @@ void MC_run() { callback = cb_reprobe_save; } // allow some number of errors. - op.counter--; - if (op.counter == 0) { + op.retry_count--; + if (op.retry_count == 0) { op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::INTERNAL_ERROR; } } + } else if (op.operation == MemoryCardOperationKind::LOAD) { + mc_print("begin load operation"); + p1 = handle_to_slot(op.param, MemoryCardState::FORMATTED); + if (p1 == -1) { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::BAD_HANDLE; + } else { + if (!mc[p1].files[op.param2].present) { + // tried to load, but there's no save data in the file. + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::NO_MEMORY; + } else { + s32 info_result = sceMcGetInfo(p1, 0, &p2, &p3, &p4); + if (info_result == sceMcResSucceed) { + callback = cb_reprobe_load; + } + op.retry_count--; + if (op.retry_count == 0) { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } + } + // below here is just doing maintenance to look for new/removed memory cards. + } else if (mc[0].state == MemoryCardState::UNKNOWN) { + mc_print("begin probe operation for slot 0"); + // don't know anything about port 0, try and see + p1 = 0; + if (sceMcGetInfo(0, 0, &p2, &p3, &p4) == sceMcResSucceed) { + callback = cb_probe; + } + } else if (mc[1].state == MemoryCardState::UNKNOWN) { + mc_print("begin probe operation for slot 1"); + // don't know anything about port 1, try and see + p1 = 1; + if (sceMcGetInfo(1, 0, &p2, &p3, &p4) == sceMcResSucceed) { + callback = cb_probe; + } + } else if (mc[0].state == MemoryCardState::KNOWN) { + if (mc[0].countdown_to_check == 1) { + // we're about to recheck the memory card. If we're only inknown, reset to unknown so we do a + // completely fresh probe instead of a reprobe. + mc[0].state = MemoryCardState::UNKNOWN; + } + } else if (mc[0].countdown_to_check == 1) { + // it's been a while, do a check and see if the memory card is still there. + p1 = 0; + mc[0].countdown_to_check--; + mc_print("begin reprobe operation for slot 0"); + if (sceMcGetInfo(0, 0, &p2, &p3, &p4) == sceMcResSucceed) { + callback = cb_reprobe; + } + return; + } else { + // decrement port 0's countdown + mc[0].countdown_to_check--; + + // do the same thing for port 1 + if (mc[1].state == MemoryCardState::KNOWN) { + mc[1].countdown_to_check--; + if (mc[1].countdown_to_check == 0) { + // hack - will make us do a probe next time we get here. + mc[1].state = MemoryCardState::UNKNOWN; + } + } else { + mc[1].countdown_to_check--; + if (mc[1].countdown_to_check == 0) { + p1 = 1; + mc_print("begin probe operation for slot 0"); + if (sceMcGetInfo(1, 0, &p2, &p3, &p4) == sceMcResSucceed) { + callback = cb_reprobe; + } + } + } } - // TODO: the rest. } +///////////////////////// +// Memory Card Functions +///////////////////////// + +// These functions are called from GOAL to start memory card operations. + /*! * Set the language or something. */ @@ -232,10 +369,12 @@ void MC_set_language(s32 l) { */ u64 MC_format(s32 card_idx) { u64 can_add = op.operation == MemoryCardOperationKind::NO_OP; + mc_print("requested format"); if (can_add) { + mc_print("setting op to format"); op.operation = MemoryCardOperationKind::FORMAT; op.result = McStatusCode::BUSY; - op.counter = 100; + op.retry_count = 100; op.param = card_idx; } return can_add; @@ -246,10 +385,12 @@ u64 MC_format(s32 card_idx) { */ u64 MC_unformat(s32 card_idx) { u64 can_add = op.operation == MemoryCardOperationKind::NO_OP; + mc_print("requested unformat"); if (can_add) { + mc_print("setting op to unformat"); op.operation = MemoryCardOperationKind::UNFORMAT; op.result = McStatusCode::BUSY; - op.counter = 100; + op.retry_count = 100; op.param = card_idx; } return can_add; @@ -257,14 +398,16 @@ u64 MC_unformat(s32 card_idx) { /*! * Set the current memory card operation to create the save file. - * The data I believe is just an empty buffer. + * The data I believe is just an empty buffer used as temporary storage. */ u64 MC_createfile(s32 param, Ptr data) { u64 can_add = op.operation == MemoryCardOperationKind::NO_OP; + mc_print("requested createfile"); if (can_add) { + mc_print("setting op to create file"); op.operation = MemoryCardOperationKind::CREATE_FILE; op.result = McStatusCode::BUSY; - op.counter = 100; + op.retry_count = 100; op.param = param; op.data_ptr = data; } @@ -273,13 +416,16 @@ u64 MC_createfile(s32 param, Ptr data) { /*! * Set the current operation to SAVE. + * The "summary data" is data that will be used when previewing save files (number of orbs etc) */ u64 MC_save(s32 card_idx, s32 file_idx, Ptr save_data, Ptr save_summary_data) { + mc_print("requested save"); u64 can_add = op.operation == MemoryCardOperationKind::NO_OP; if (can_add) { + mc_print("setting op to save"); op.operation = MemoryCardOperationKind::SAVE; op.result = McStatusCode::BUSY; - op.counter = 100; + op.retry_count = 100; op.param = card_idx; op.param2 = file_idx; op.data_ptr = save_data; @@ -288,12 +434,17 @@ u64 MC_save(s32 card_idx, s32 file_idx, Ptr save_data, Ptr save_summary_ return can_add; } +/*! + * Set the current operation to LOAD. + */ u64 MC_load(s32 card_idx, s32 file_idx, Ptr data) { + mc_print("requested load"); u64 can_add = op.operation == MemoryCardOperationKind::NO_OP; if (can_add) { + mc_print("setting op to load"); op.operation = MemoryCardOperationKind::LOAD; op.result = McStatusCode::BUSY; - op.counter = 100; + op.retry_count = 100; op.param = card_idx; op.param2 = file_idx; op.data_ptr = data; @@ -335,10 +486,17 @@ void MC_makefile(s32 port, s32 size) { } } +/*! + * Get the result of the currently executing (or most recently executed) command + */ u32 MC_check_result() { return (u32)op.result; } +/*! + * Update the info for the given slot. + * You can call this at any time. + */ void MC_get_status(s32 slot, Ptr info) { info->handle = 0; info->known = 0; @@ -355,7 +513,7 @@ void MC_get_status(s32 slot, Ptr info) { case MemoryCardState::KNOWN: info->known = 1; break; - case MemoryCardState::OPEN: + case MemoryCardState::OPEN_BUT_UNFORMATTED: info->known = 1; info->handle = mc[slot].handle; break; @@ -367,6 +525,7 @@ void MC_get_status(s32 slot, Ptr info) { info->mem_actual = mc[slot].mem_size; } else { info->initted = 1; + // copy over the preview data. for (s32 file = 0; file < 4; file++) { info->files[file].present = mc[slot].files[file].present; for (s32 i = 0; i < 64; i++) { // actually a loop over u32's @@ -375,6 +534,7 @@ void MC_get_status(s32 slot, Ptr info) { } info->last_file = mc[slot].last_file; } + break; case MemoryCardState::UNKNOWN: break; } @@ -394,6 +554,7 @@ u64 cb_check(s32 sony_error, McStatusCode goal_error) { op.result = McStatusCode::BAD_HANDLE; return 1; } else { + // return the given GOAL error. op.operation = MemoryCardOperationKind::NO_OP; op.result = goal_error; return 1; @@ -402,11 +563,192 @@ u64 cb_check(s32 sony_error, McStatusCode goal_error) { return 0; } -// cb check open -// cb check read -// cb check close -// cb reprobe +/*! + * Is this sync-result an error? If so, set status to unknown. + */ +bool cb_pcheck(s32 sync_result) { + if (sync_result < 0) { + mc[p1].state = MemoryCardState::UNKNOWN; + } + return sync_result < 0; +} +/*! + * Callback for sceMcGetInfo for the first time (assumes nothing about the card) + */ +void cb_probe(s32 sync_result) { + if (sync_result < -9) { + // changed card. We have the card, but we don't know anything about it. + mc[p1].state = MemoryCardState::KNOWN; + mc[p1].countdown_to_check = 100; + mc_print("probe: bad sync, trying again in a bit"); + } else { + // there is a memory card. + if (p2 == sceMcTypePS2) { + // it is the right type. + // create a new handle + mc[p1].handle = new_mc_handle(); + if (p4 == 0) { + mc_print("probe: got a card, but it's not formatted"); + // it's not formatted. But open (we have a handle) + mc[p1].state = MemoryCardState::OPEN_BUT_UNFORMATTED; + mc[p1].countdown_to_check = 100; + } else { + mc_print("probe: got a formatted card, trying getdir"); + // it's formatted. Get the size + mc[p1].mem_size = p3; + p2 = 0; + + // and get our jak and daxter directory + if (sceMcGetDir(p1, 0, filename[0], 0, 1, &dirent) == sceMcResSucceed) { + callback = cb_getdir; + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + } + } + + } else { + mc_print("probe: bad card type, trying again in a bit"); + mc[p1].state = MemoryCardState::KNOWN; + mc[p1].countdown_to_check = 100; + } + } +} + +/*! + * Callback for sceMcGetDir. This runs again and again to check all files + */ +void cb_getdir(s32 sync_result) { + // called after sceMcGetDir + if (sync_result == 0) { + // didn't find the jak and daxter dir, or some stuff is missing. + // call this uninitialized. + mc[p1].inited = false; + mc[p1].state = MemoryCardState::FORMATTED; + mc[p1].countdown_to_check = 100; + mc[p1].last_file = -1; + } else if (sync_result == 1) { + // found whatever we were looking for + p2++; + if (p2 == 12) { + // all done checking for files. + mc[p1].inited = true; + mc[p1].countdown_to_check = 100; + mc[p1].last_file = -1; + for (int i = 0; i < 4; i++) { + mc[p1].files[i].present = 0; + } + + // now open file 4, which is the first bank. + p2 = 4; + mc_print("opening first bank..."); + if (sceMcOpen(p1, 0, filename[4], 1) == sceMcResSucceed) { + callback = cb_check_open; + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + } + } else { + // still checking files, check the next one. + mc_print("checking {}", filename[p2]); + if (sceMcGetDir(p1, 0, filename[p2], 0, 1, &dirent) == sceMcResSucceed) { + callback = cb_getdir; + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + } + } + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + } +} + +/*! + * Callback for sceMcOpen for opening bank files. + */ +void cb_check_open(s32 sync_result) { + if (!cb_pcheck(sync_result)) { + p3 = sync_result; + // read the header. + mc_print("read header"); + if (sceMcRead(sync_result, &header, sizeof(McHeader)) == sceMcResSucceed) { + callback = cb_check_read; + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + } + } +} + +/*! + * Callback for sceMcRead for reading the header of a bank file. + */ +void cb_check_read(s32 sync_result) { + if (!cb_pcheck(sync_result)) { + if (header.save_count != 0 && // we've saved into this bank + header.magic == MEM_CARD_MAGIC // looks valid + ) { + // each file has two banks. so if you corrupt a save, you hopefully have the other bank. + // get the file that goes with this bank + s32 file_idx = (p2 - 4) / 2; + if (mc[p1].files[file_idx].present == 0 || // haven't found any banks for this file + header.save_count > mc[p1].files[file_idx].most_recent_save_count // newer than prev. + ) { + // this is so far our best guess at the right bank to use. + mc[p1].files[file_idx].present = 1; + mc[p1].files[file_idx].most_recent_save_count = header.save_count; + mc[p1].files[file_idx].last_saved_bank = p2 & 1; + // copy header data (for GOAL to read) + for (int i = 0; i < 64; i++) { + mc[p1].files[file_idx].data[i] = header.preview_data[i]; + } + } + } + + if (sceMcClose(p3) == sceMcResSucceed) { + // close the file + callback = cb_check_close; + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + } + } +} + +/*! + * Callback for closing a file after reading the header + */ +void cb_check_close(s32 sync_result) { + if (!cb_pcheck(sync_result)) { + // next bank. + p2++; + if (p2 == 12) { + // done with banks + mc[p1].state = MemoryCardState::FORMATTED; + // and we're done! + } else { + // on to the next bank... + if (sceMcOpen(p1, 0, filename[p2], 1) == sceMcResSucceed) { + callback = cb_check_open; + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + } + } + } +} + +/*! + * Callback for checking on a known memory card. If it is swapped, will reset. + */ +void cb_reprobe(s32 sync_result) { + if (sync_result == sceMcResSucceed) { + // nobody took out the memory card. try again in 100 frames + mc[p1].countdown_to_check = 100; + } else { + // somebody took it out. reset everything! + mc[p1].state = MemoryCardState::UNKNOWN; + } +} + +/*! + * Callback for probe before formatting. + */ void cb_reprobe_format(s32 sync_result) { if (sync_result == sceMcResSucceed) { // get info succeeded. we can format. @@ -425,12 +767,15 @@ void cb_reprobe_format(s32 sync_result) { } } +/*! + * Callback for actual formatting operation + */ void cb_format_complete(s32 sync_result) { if (sync_result == sceMcResSucceed) { op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::OK; mc[p1].state = MemoryCardState::FORMATTED; - mc[p1].formatted = 100; + mc[p1].countdown_to_check = 100; mc[p1].inited = 0; for (int i = 0; i < 4; i++) { mc[p1].files[i].present = 0; @@ -444,6 +789,9 @@ void cb_format_complete(s32 sync_result) { } } +/*! + * Callback for actual unformatting operation + */ void cb_unformat(s32 sync_result) { if (sync_result == sceMcResSucceed) { op.operation = MemoryCardOperationKind::NO_OP; @@ -456,13 +804,16 @@ void cb_unformat(s32 sync_result) { } } +/*! + * Callback for probe before creating save files. + */ void cb_reprobe_createfile(s32 sync_result) { if (sync_result == sceMcResSucceed) { // if the ramdisk is ready, just jump directly to its callback if (!RpcBusy(RAMDISK_RPC_CHANNEL)) { cb_wait_for_ramdisk(0); } else { - // otherwise, don't. + // I think this is a typo and should be cb_reprobe_createfile again. callback = cb_wait_for_ramdisk; } } else { @@ -472,20 +823,28 @@ void cb_reprobe_createfile(s32 sync_result) { } } +/*! + * Actually start the ramdisk load of the icon file to temp buffer + */ void cb_wait_for_ramdisk(s32) { - RPC_Ramdisk_LoadCmd cmd; - cmd.pad = 0; - cmd.file_id_or_ee_addr = op.data_ptr.offset; - cmd.offset_into_file = 0; - cmd.size = 0x1e800; - memcpy(cmd.name, "SAVEGAME.ICO", 13); // was 16. + ramdisk_cmd.pad = 0; + // caller should have given us a temporary buffer. + ramdisk_cmd.file_id_or_ee_addr = op.data_ptr.offset; + ramdisk_cmd.offset_into_file = 0; + ramdisk_cmd.size = 0x1e800; + memcpy(ramdisk_cmd.name, "SAVEGAME.ICO", 13); // was 16. RpcCall(RAMDISK_RPC_CHANNEL, RAMDISK_BYPASS_LOAD_FILE, 1, &ramdisk_cmd, 0x20, nullptr, 0); callback = cb_wait_for_ramdisk_load; } +/*! + * Callback for checking if the ramdisk load is done + */ void cb_wait_for_ramdisk_load(s32) { if (RpcBusy(RAMDISK_RPC_CHANNEL) == 0) { + // ramdisk is done. start deleting 12 files p2 = 11; // filenames left to delete + mc_print("start delete {}", filename[11]); if (sceMcDelete(p1, 0, filename[11]) == sceMcResSucceed) { callback = cb_createfile_erasing; } else { @@ -493,17 +852,22 @@ void cb_wait_for_ramdisk_load(s32) { op.result = McStatusCode::INTERNAL_ERROR; } } else { + // still waiting... callback = cb_wait_for_ramdisk_load; } } +/*! + * Callback to start erasing previous save files. + */ void cb_createfile_erasing(s32 sync_result) { if (sync_result == sceMcResSucceed || sync_result == sceMcResNoEntry || sync_result == sceMcResNotEmpty) { mc[p1].inited = 0; // delete didn't fail. if (p2 < 1) { - // on the last one. which is the directory to create. + // on the last one. move on on to creating the directory again. + mc_print("create dir {}", filename[0]); if (sceMcMkdir(p1, 0, filename[0]) == sceMcResSucceed) { callback = cb_createdir; } else { @@ -512,6 +876,7 @@ void cb_createfile_erasing(s32 sync_result) { } } else { p2--; + mc_print("delete next {}", filename[p2]); if (sceMcDelete(p1, 0, filename[p2]) == sceMcResSucceed) { callback = cb_createfile_erasing; } else { @@ -521,9 +886,11 @@ void cb_createfile_erasing(s32 sync_result) { } } else { if (sync_result == sceMcResDeniedPermit) { + mc_print("erasing: denied"); op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::INTERNAL_ERROR; } else { + mc_print("erasing: other bad"); mc[p1].state = MemoryCardState::UNKNOWN; op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::BAD_HANDLE; @@ -531,6 +898,9 @@ void cb_createfile_erasing(s32 sync_result) { } } +/*! + * Callback after creating directory for jak save data + */ void cb_createdir(s32 sync_result) { if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { // this sets up some stuff for the icon file that we will ignore. @@ -553,6 +923,8 @@ void cb_createdir(s32 sync_result) { // kstrcpy(&DAT_00137624,"icon.ico"); p2 = 1; + // move on to creating files + mc_print("starting create file at {}", filename[p2]); if (sceMcOpen(p1, 0, filename[1], 0x203) == 0) { callback = cb_createdfile; } else { @@ -562,8 +934,12 @@ void cb_createdir(s32 sync_result) { } } +/*! + * Callback after creating the file. + */ void cb_createdfile(s32 sync_result) { if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { + mc_print("create file cb {}", filename[p2]); if (p2 == 1) { p3 = sync_result; // the fd of the icon file. // actually would write the icon sys file. @@ -583,6 +959,7 @@ void cb_createdfile(s32 sync_result) { op.result = McStatusCode::INTERNAL_ERROR; } } else if (p2 == 3) { + // writes the aybabtu meme file p3 = sync_result; kstrcpy(op.data_ptr.cast().c(), "Nope, the save game data isn\'t in this file!\n"); if (sceMcWrite(p3, op.data_ptr.c(), strlen((const char*)op.data_ptr.c())) == @@ -593,9 +970,10 @@ void cb_createdfile(s32 sync_result) { op.result = McStatusCode::INTERNAL_ERROR; } } else { + // writes the actual bank files. p3 = sync_result; memset(op.data_ptr.c(), 0, 0x11800); - if (sceMcWrite(p3, op.data_ptr.c(), 0x11800)) { + if (sceMcWrite(p3, op.data_ptr.c(), 0x11800) == sceMcResSucceed) { callback = cb_writtenfile; } else { op.operation = MemoryCardOperationKind::NO_OP; @@ -605,6 +983,9 @@ void cb_createdfile(s32 sync_result) { } } +/*! + * Callback after writing data to files. + */ void cb_writtenfile(s32 sync_result) { if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { if (sceMcClose(p3) == sceMcResSucceed) { @@ -616,10 +997,14 @@ void cb_writtenfile(s32 sync_result) { } } +/*! + * Callback after closing the file. + */ void cb_closedfile(s32 sync_result) { if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { p2++; if (p2 < 0xc) { + // open the next one if (sceMcOpen(p1, 0, filename[p2], 0x203) == sceMcResSucceed) { callback = cb_createdfile; } else { @@ -627,9 +1012,13 @@ void cb_closedfile(s32 sync_result) { op.result = McStatusCode::INTERNAL_ERROR; } } else { + // done! op.operation = MemoryCardOperationKind::NO_OP; op.result = McStatusCode::OK; + + // save data is inited mc[p1].inited = 1; + // but no files have anything in it. for (int i = 0; i < 4; i++) { mc[p1].files[i].present = 0; } @@ -638,6 +1027,251 @@ void cb_closedfile(s32 sync_result) { } } -void cb_reprobe_save(s32) { - assert(false); +/*! + * Callback after check before saving. + */ +void cb_reprobe_save(s32 sync_result) { + if (sync_result == sceMcResSucceed) { + if (!mc[p1].files[op.param2].present) { + mc_print("reprobe save: first time!"); + // first time saving! + p2 = 0; // save count 0 + p4 = 0; // first bank for file + } else { + p2 = mc[p1].files[op.param2].most_recent_save_count + 1; // increment save count + p4 = mc[p1].files[op.param2].last_saved_bank ^ 1; // use the other bank + } + + // reserve 0 as "I never saved" and use 1 instead. + if (p2 == 0) { + p2 = 1; + } + + // file*2 + p4 is the bank (2 banks per file, p4 is 0 or 1 to select the bank) + // 4 is the first bank file + mc_print("open {} for saving", filename[op.param2 * 2 + 4 + p4]); + if (sceMcOpen(p1, 0, filename[op.param2 * 2 + 4 + p4], 2) == sceMcResSucceed) { + callback = cb_openedsave; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::BAD_HANDLE; + } } + +void cb_openedsave(s32 sync_result) { + if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { + mc_print("save file opened, writing header..."); + p3 = sync_result; + memset(&header, 0, sizeof(McHeader)); + header.save_count = p2; + header.checksum = mc_checksum(op.data_ptr, BANK_SIZE); + header.magic = MEM_CARD_MAGIC; + header.unk1_repeated = p2; + for (int i = 0; i < 64; i++) { + header.preview_data[i] = op.data_ptr2.c()[i]; + } + if (sceMcWrite(p3, &header, sizeof(McHeader)) == sceMcResSucceed) { + callback = cb_savedheader; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } +} + +void cb_savedheader(s32 sync_result) { + if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { + mc_print("save file writing main data"); + if (sceMcWrite(p3, op.data_ptr.c(), BANK_SIZE) == sceMcResSucceed) { + callback = cb_saveddata; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } +} + +void cb_saveddata(s32 sync_result) { + mc_print("save file writing footer"); + if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { + if (sceMcWrite(p3, &header, sizeof(McHeader)) == sceMcResSucceed) { + callback = cb_savedfooter; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } +} + +void cb_savedfooter(s32 sync_result) { + mc_print("closing after save"); + if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { + if (sceMcClose(p3) == sceMcResSucceed) { + callback = cb_closedsave; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } +} + +void cb_closedsave(s32 sync_result) { + if (!cb_check(sync_result, McStatusCode::WRITE_ERROR)) { + mc_print("All done with saving!!"); + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::OK; + mc[p1].files[op.param2].present = 1; + mc[p1].files[op.param2].most_recent_save_count = p2; + mc[p1].files[op.param2].last_saved_bank = p4; + for (int i = 0; i < 64; i++) { + mc[p1].files[op.param2].data[i] = op.data_ptr2.c()[i]; + } + mc[p1].last_file = op.param2; + flush_memory_card_to_file(); + } +} + +void cb_reprobe_load(s32 sync_result) { + if (sync_result == 0) { + p2 = 0; + mc_print("opening save file {}", filename[op.param2 * 2 + 4]); + if (sceMcOpen(p1, 0, filename[op.param2 * 2 + 4], 1) == sceMcResSucceed) { + callback = cb_openedload; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } else { + mc[p1].state = MemoryCardState::UNKNOWN; + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::BAD_HANDLE; + } +} + +void cb_openedload(s32 sync_result) { + if (cb_check(sync_result, McStatusCode::READ_ERROR) == 0) { + p3 = sync_result; + size_t read_size = (BANK_SIZE + 2 * sizeof(McHeader)); + mc_print("reading save file..."); + if (sceMcRead(sync_result, op.data_ptr.c() + p2 * read_size, read_size) == sceMcResSucceed) { + callback = cb_readload; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } +} + +void cb_readload(s32 sync_result) { + if (cb_check(sync_result, McStatusCode::READ_ERROR) == 0) { + mc_print("closing save file.."); + if (sceMcClose(p3) == sceMcResSucceed) { + callback = cb_closedload; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } +} + +void cb_closedload(s32 sync_result) { + if (cb_check(sync_result, McStatusCode::READ_ERROR) == 0) { + p2++; + if (p2 < 2) { + mc_print("reading next save bank {}", filename[op.param2 * 2 + 4 + p2]); + if (sceMcOpen(p1, 0, filename[op.param2 * 2 + 4 + p2], 1) == sceMcResSucceed) { + callback = cb_openedload; + } else { + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::INTERNAL_ERROR; + } + } else { + // let's verify the data. + McHeader* headers[2]; + McHeader* footers[2]; + bool ok[2]; + + headers[0] = (McHeader*)(op.data_ptr.c()); + footers[0] = (McHeader*)(op.data_ptr.c() + sizeof(McHeader) + BANK_SIZE); + headers[1] = (McHeader*)(op.data_ptr.c() + sizeof(McHeader) * 2 + BANK_SIZE); + footers[1] = (McHeader*)(op.data_ptr.c() + sizeof(McHeader) * 3 + BANK_SIZE * 2); + static_assert(sizeof(McHeader) * 3 + BANK_SIZE * 2 == 0x20c00, "save layout"); + ok[0] = true; + ok[1] = true; + + for (int idx = 0; idx < 2; idx++) { + u32 expected_save_count = headers[idx]->save_count; + if (headers[idx]->unk1_repeated == expected_save_count && + footers[idx]->save_count == expected_save_count && + footers[idx]->unk1_repeated == expected_save_count) { + // save count is okay! + if (headers[idx]->magic == MEM_CARD_MAGIC && footers[idx]->magic == MEM_CARD_MAGIC) { + // magic numbers okay! + if (headers[idx]->checksum == footers[idx]->checksum) { + // checksum + auto expected_checksum = headers[idx]->checksum; + if (mc_checksum(make_u8_ptr(headers[idx] + 1), BANK_SIZE) != expected_checksum) { + mc_print("failed checksum"); + ok[idx] = false; + } + } else { + mc_print("corrupted checksum"); + ok[idx] = false; + } + } else { + mc_print("bad magic"); + ok[idx] = false; + } + } else { + mc_print("bad save count"); + ok[idx] = false; + } + } + + mc_print("checking loaded banks"); + + // + if (!ok[0] && !ok[1]) { + // no good data. + if (headers[0]->save_count == 0 && headers[0]->checksum == 0 && headers[0]->magic == 0 && + headers[0]->unk1_repeated == 0 && headers[1]->save_count == 0 && + headers[1]->checksum == 0 && headers[1]->magic == 0 && headers[1]->unk1_repeated == 0) { + // this is a fresh file that you tried to load from... + mc_print("new game result"); + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::NEW_GAME; + mc[p1].last_file = op.param2; + } else { + mc_print("corrupted data"); + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::READ_ERROR; + } + } else { + // pick the bank + int bank = 0; + + if (!ok[0] || !ok[1]) { + if (ok[1]) { + bank = 1; + } + } else { + bank = (headers[0]->save_count - headers[1]->save_count) < 1; + } + + u32 current_save_count = headers[bank]->save_count; + memcpy(op.data_ptr.c(), op.data_ptr.c() + sizeof(McHeader), BANK_SIZE); + mc[p1].last_file = op.param2; + mc[p1].files[op.param2].most_recent_save_count = current_save_count; + mc[p1].files[op.param2].last_saved_bank = bank; + op.operation = MemoryCardOperationKind::NO_OP; + op.result = McStatusCode::OK; + mc_print("load succeeded"); + } + } + } +} \ No newline at end of file diff --git a/game/kernel/kmemcard.h b/game/kernel/kmemcard.h index ad36d88e23..70349b2256 100644 --- a/game/kernel/kmemcard.h +++ b/game/kernel/kmemcard.h @@ -11,14 +11,21 @@ void kmemcard_init_globals(); constexpr s32 SAVE_SIZE = 0x2b3; // likely different by versions! +constexpr s32 BANK_SIZE = 0x10000; -enum class MemoryCardState : u32 { UNKNOWN = 0, KNOWN = 1, OPEN = 2, FORMATTED = 3 }; +// each card can be in one of these states: +enum class MemoryCardState : u32 { + UNKNOWN = 0, // we know nothing about the card. + KNOWN = 1, // we know if the card is there or not + OPEN_BUT_UNFORMATTED = 2, // we checked the status, and its a valid card, but it's not formatted + FORMATTED = 3 // the card is formatted +}; // cached in ee memory so we can preview. struct MemoryCardFile { - u32 present; - u32 pad1; - u32 pad2; + u32 present; // todo: enough memory? + u32 most_recent_save_count; + u32 last_saved_bank; u8 data[64]; }; @@ -26,13 +33,52 @@ struct MemoryCardFile { struct MemoryCard { MemoryCardState state; u32 handle; - u32 formatted; + u32 countdown_to_check; u32 inited; u32 last_file; u32 mem_size; MemoryCardFile files[4]; }; +// FORMAT: +// args: handle +// requirements: handle is for a card that is OPEN_BUT_UNFORMATTED. +// formats the memory card. +// Callbacks: +// sceMcGetInfo -> cb_reprobe_format -> + +// UNFORMAT: +// args: handle +// requirements: handle is for a card that is FORMATTED +// unformats the memory card (for debug use only) +// Callbacks: +// sceMcUnformat -> cb_unformat + +// CREATE_FILE: +// args: handle +// requirement: handle is for a card that is FORMATTED +// creates the Jak and Daxter save directory and files +// Callbacks: +// sceMcGetInfo -> cb_reprobe_createfile + +// SAVE_FILE: +// args: handle, file_idx (believed) +// requirement: handle is for a card that is FORMATTED and has file +// saves game data +// Callbacks: +// sceMcGetInfo -> cb_reprobe_save + +// LOAD_FILE: +// args: handle, file_idx +// requirement: handle is for a card that is FORMATTED and has file +// loads game data +// Callbacks: +// sceMcGetInfo -> cb_reprobe_load + +// probing: +// sceMcGetInfo -> cb_probe -> sceMcGetDir -> cb_getdir -> sceMcOpen -> cb_check_open -> +// -> sceMcRead -> cb_check_read + enum class MemoryCardOperationKind : u32 { NO_OP = 0, FORMAT = 1, // (handle, unused), (slot, type, free, format) @@ -68,7 +114,7 @@ struct MemoryCardOperation { uint32_t param; uint32_t param2; McStatusCode result; - uint32_t counter; + uint32_t retry_count; Ptr data_ptr; Ptr data_ptr2; }; diff --git a/game/overlord/iso.cpp b/game/overlord/iso.cpp index 013ce2be34..e4c9081873 100644 --- a/game/overlord/iso.cpp +++ b/game/overlord/iso.cpp @@ -181,23 +181,23 @@ u32 InitISOFS(const char* fs_mode, const char* loading_screen) { if (str_thread <= 0) { return 1; } - // - // thread_param.attr = TH_C; - // thread_param.initPriority = 97; - // thread_param.stackSize = 0x800; - // thread_param.option = 0; - // thread_param.entry = (void*)PLAYThread; - // strcpy(thread_param.name, "PLAYThread"); - // play_thread = CreateThread(&thread_param); - // if(play_thread <= 0) { - // return 1; - // } + + thread_param.attr = TH_C; + thread_param.initPriority = 97; + thread_param.stackSize = 0x800; + thread_param.option = 0; + thread_param.entry = (void*)PLAYThread; + strcpy(thread_param.name, "PLAYThread"); + play_thread = CreateThread(&thread_param); + if (play_thread <= 0) { + return 1; + } // Start the threads! StartThread(iso_thread, 0); StartThread(dgo_thread, 0); StartThread(str_thread, 0); - // StartThread(play_thread, 0); + StartThread(play_thread, 0); // wait for ISO Thread to initialize WaitMbx(sync_mbx); diff --git a/game/overlord/ramdisk.cpp b/game/overlord/ramdisk.cpp index faa9ece3b4..9ab08e53d4 100644 --- a/game/overlord/ramdisk.cpp +++ b/game/overlord/ramdisk.cpp @@ -172,6 +172,7 @@ void* RPC_Ramdisk(unsigned int fno, void* data, int size) { memcpy(gReturnBuffer, gMem + offset + gFiles[file_idx].additional_offset, size); return gReturnBuffer; } else if (fno == RAMDISK_BYPASS_LOAD_FILE) { + printf("[OVERLORD RAMDISK] got \"%s\"\n", cmd->name); // This is just a normal file load to the EE. auto file_record = FindISOFile(cmd->name); if (!file_record) { diff --git a/game/overlord/stream.cpp b/game/overlord/stream.cpp index 78c463686e..d14cec902e 100644 --- a/game/overlord/stream.cpp +++ b/game/overlord/stream.cpp @@ -9,13 +9,16 @@ #include "stream.h" #include "game/sce/iop.h" #include "game/common/str_rpc_types.h" +#include "game/common/play_rpc_types.h" #include "game/overlord/isocommon.h" #include "game/overlord/iso_api.h" using namespace iop; static RPC_Str_Cmd sRPCBuf; +static RPC_Str_Cmd sRPCBuf2; // todo type void* RPC_STR(unsigned int fno, void* _cmd, int y); +void* RPC_PLAY(unsigned int fno, void* _cmd, int y); /*! * We cache the chunk file headers so we can avoid seeking to the chunk header each time we @@ -36,6 +39,7 @@ CacheEntry sCache[STR_INDEX_CACHE_SIZE]; void stream_init_globals() { memset(&sRPCBuf, 0, sizeof(RPC_Str_Cmd)); + memset(&sRPCBuf2, 0, sizeof(RPC_Str_Cmd)); } /*! @@ -55,7 +59,15 @@ u32 STRThread() { } u32 PLAYThread() { - assert(false); + sceSifQueueData dq; + sceSifServeData serve; + + CpuDisableIntr(); + sceSifInitRpc(0); + sceSifSetRpcQueue(&dq, GetThreadId()); + sceSifRegisterRpc(&serve, PLAY_RPC_ID, RPC_PLAY, &sRPCBuf2, nullptr, nullptr, &dq); + CpuEnableIntr(); + sceSifRpcLoop(&dq); return 0; } @@ -139,4 +151,11 @@ void* RPC_STR(unsigned int fno, void* _cmd, int y) { } printf("Command result %d\n", cmd->result); return cmd; +} + +void* RPC_PLAY(unsigned int fno, void* _cmd, int y) { + (void)fno; + (void)y; + printf("[RPC_PLAY] ignoring...\n"); + return _cmd; } \ No newline at end of file diff --git a/game/runtime.cpp b/game/runtime.cpp index e6213656f2..0bca9f5062 100644 --- a/game/runtime.cpp +++ b/game/runtime.cpp @@ -137,7 +137,7 @@ void ee_runner(SystemThreadInterface& iface) { lg::debug("[EE] Run!"); memset((void*)g_ee_main_mem, 0, EE_MAIN_MEM_SIZE); - // prevent access to the first 1 MB of memory. + // prevent access to the first 512 kB of memory. // On the PS2 this is the kernel and can't be accessed either. // this may not work well on systems with a page size > 1 MB. mprotect((void*)g_ee_main_mem, EE_MAIN_MEM_LOW_PROTECT, PROT_NONE); diff --git a/game/sce/libscf.cpp b/game/sce/libscf.cpp index cb71e8beeb..1243696149 100644 --- a/game/sce/libscf.cpp +++ b/game/sce/libscf.cpp @@ -8,4 +8,15 @@ int sceScfGetAspect() { int sceScfGetLanguage() { return SCE_ENGLISH_LANGUAGE; } + +void sceCdReadClock(sceCdCLOCK* result) { + result->stat = 0; // ?? + result->second = 1; + result->minute = 0x92; + result->hour = 0x76; + result->week = 13; + result->day = 0x99; + result->month = 0x16; + result->year = 0x19; +} } // namespace ee \ No newline at end of file diff --git a/game/sce/libscf.h b/game/sce/libscf.h index 5df7524b39..8f3ea56d92 100644 --- a/game/sce/libscf.h +++ b/game/sce/libscf.h @@ -1,5 +1,7 @@ #pragma once +#include "common/common_types.h" + #define SCE_JAPANESE_LANGUAGE 0 #define SCE_ENGLISH_LANGUAGE 1 #define SCE_FRENCH_LANGUAGE 2 @@ -25,4 +27,17 @@ int sceScfGetAspect(); * Return a SONY SCE_LANGUAGE value, which differs from GOAL. */ int sceScfGetLanguage(); + +struct sceCdCLOCK { + u8 stat; + u8 second; + u8 minute; + u8 hour; + u8 week; + u8 day; + u8 month; + u8 year; +}; + +void sceCdReadClock(sceCdCLOCK* result); } // namespace ee diff --git a/game/sce/sif_ee.cpp b/game/sce/sif_ee.cpp index acbf88bfae..dda891f3ab 100644 --- a/game/sce/sif_ee.cpp +++ b/game/sce/sif_ee.cpp @@ -174,185 +174,4 @@ s32 sceLseek(s32 fd, s32 offset, s32 where) { } } -/*! - * The actual data stored on the memory card. - */ -struct CardData { - // each file has a name and data. - struct File { - std::string name; - std::vector data; - }; - // can be formatted or unformatted card. - u32 is_formatted = 0; - std::unordered_map files; -}; - -/*! - * The actual memory card library state + current data. - */ -struct McState { - s32 current_function = -1; // -1 = nothing - s32 current_function_result = 0; - - struct McFileHandle { - std::string name; - u32 fd = 0; - s32 mode = 0; - }; - - std::unordered_map handles; - - // TODO: we should load this data at startup from a memory card file, and save it at each write. - CardData data; - int next_fd = 1; -} g_mc_state; - -int sceMcInit() { - g_mc_state = McState(); - return 1; -} - -s32 sceMcMkdir(s32 port, s32 slot, const char* name) { - assert(port == 0); - assert(slot == 0); - // TODO name - (void)name; - return sceMcResSucceed; -} - -s32 sceMcSync(s32 mode, s32* cmd, s32* result) { - // don't care about the mode, all memory card ops are instant. - assert(mode == 1 || mode == 0); - if (g_mc_state.current_function == -1) { - return sceMcExecIdle; - } else { - *cmd = g_mc_state.current_function; - *result = g_mc_state.current_function_result; - g_mc_state.current_function = -1; - return sceMcExecFinish; - } -} - -s32 sceMcOpen(s32 port, s32 slot, const char* name, s32 mode) { - assert(port == 0); - assert(slot == 0); - assert(g_mc_state.current_function == -1); - - // add existing file, if it does not exist. - auto existing_file = g_mc_state.data.files.find(name); - if (existing_file == g_mc_state.data.files.end()) { - assert(mode & SCE_CREAT); - g_mc_state.data.files[name] = {}; - } - - // create a handle. - g_mc_state.current_function = sceMcFuncNoOpen; - s32 fd = g_mc_state.next_fd++; - McState::McFileHandle handle; - handle.name = name; - handle.fd = fd; - handle.mode = mode; - g_mc_state.handles[fd] = handle; - - g_mc_state.current_function_result = fd; - return 0; -} - -s32 sceMcWrite(s32 fd, const void* buff, s32 size) { - assert(g_mc_state.current_function == -1); - - assert(size >= 0 && size < (1024 * 1024 * 1024)); - auto hand = g_mc_state.handles.find(fd); - assert(hand != g_mc_state.handles.end()); // make sure fd is valid - assert(hand->second.mode & SCE_WRONLY); // make sure we're allowed to write - - const auto& file = g_mc_state.data.files.find(hand->second.name); - assert(file != g_mc_state.data.files.end()); - - file->second.data.resize(size); - memcpy(file->second.data.data(), buff, size); - - // TODO: save memcard data to a file. - - g_mc_state.current_function = sceMcFuncNoWrite; - g_mc_state.current_function_result = size; - return 0; -} - -s32 sceMcClose(s32 fd) { - assert(g_mc_state.current_function == -1); - auto hand = g_mc_state.handles.find(fd); - assert(hand != g_mc_state.handles.end()); // make sure fd is valid - g_mc_state.handles.erase(fd); - g_mc_state.current_function = sceMcFuncNoClose; - g_mc_state.current_function_result = sceMcResSucceed; - return 0; -} - -s32 sceMcGetInfo(s32 port, s32 slot, s32* type, s32* free, s32* format) { - assert(g_mc_state.current_function == -1); - assert(port == 0); - assert(slot == 0); - if (type) { - *type = sceMcTypePS2; - } - - if (free) { - *free = 2 * 1024; // number of free 1 kB clusters - } - - if (format) { - *format = g_mc_state.data.is_formatted; - } - - g_mc_state.current_function = sceMcFuncNoCardInfo; - - // technically this should return something else the first time you call this function after - // changing cards. - g_mc_state.current_function_result = sceMcResSucceed; - return 0; -} - -s32 sceMcFormat(s32 port, s32 slot) { - assert(g_mc_state.current_function == -1); - assert(port == 0); - assert(slot == 0); - g_mc_state.data.is_formatted = true; - g_mc_state.current_function_result = sceMcResSucceed; - g_mc_state.current_function = sceMcFuncNoFormat; - return 0; -} - -s32 sceMcUnformat(s32 port, s32 slot) { - assert(g_mc_state.current_function == -1); - assert(port == 0); - assert(slot == 0); - g_mc_state.data.is_formatted = false; - g_mc_state.current_function_result = sceMcResSucceed; - g_mc_state.current_function = sceMcFuncNoUnformat; - return 0; -} - -s32 sceMcDelete(s32 port, s32 slot, const char* name) { - assert(g_mc_state.current_function == -1); - assert(port == 0); - assert(slot == 0); - g_mc_state.current_function = sceMcFuncNoDelete; - - if (!g_mc_state.data.is_formatted) { - g_mc_state.current_function_result = sceMcResNoFormat; - } else { - auto it = g_mc_state.data.files.find(name); - if (it == g_mc_state.data.files.end()) { - g_mc_state.current_function_result = sceMcResNoEntry; - } else { - // sometimes should be sceMcResNotEmpty, but doesn't matter. - g_mc_state.current_function_result = sceMcResSucceed; - g_mc_state.data.files.erase(it); - } - } - - return 0; -} } // namespace ee \ No newline at end of file diff --git a/game/sce/sif_ee.h b/game/sce/sif_ee.h index 4650f1ca24..97f8513e36 100644 --- a/game/sce/sif_ee.h +++ b/game/sce/sif_ee.h @@ -5,6 +5,27 @@ class IOP; namespace ee { + +#ifndef SCE_SEEK_SET +#define SCE_SEEK_SET (0) +#endif +#ifndef SCE_SEEK_CUR +#define SCE_SEEK_CUR (1) +#endif +#ifndef SCE_SEEK_END +#define SCE_SEEK_END (2) +#endif + +#define SCE_RDONLY 0x0001 +#define SCE_WRONLY 0x0002 +#define SCE_RDWR 0x0003 +#define SCE_NBLOCK 0x0010 +#define SCE_APPEND 0x0100 +#define SCE_CREAT 0x0200 +#define SCE_TRUNC 0x0400 +#define SCE_EXCL 0x0800 +#define SCE_NOBUF 0x4000 +#define SCE_NOWAIT 0x8000 struct sceSifRpcData { u8 dummy; u32 id; @@ -46,62 +67,9 @@ s32 sceSifCallRpc(sceSifClientData* bd, s32 sceSifCheckStatRpc(sceSifRpcData* bd); s32 sceSifBindRpc(sceSifClientData* bd, u32 request, u32 mode); -#ifndef SCE_SEEK_SET -#define SCE_SEEK_SET (0) -#endif -#ifndef SCE_SEEK_CUR -#define SCE_SEEK_CUR (1) -#endif -#ifndef SCE_SEEK_END -#define SCE_SEEK_END (2) -#endif - -#define SCE_RDONLY 0x0001 -#define SCE_WRONLY 0x0002 -#define SCE_RDWR 0x0003 -#define SCE_NBLOCK 0x0010 -#define SCE_APPEND 0x0100 -#define SCE_CREAT 0x0200 -#define SCE_TRUNC 0x0400 -#define SCE_EXCL 0x0800 -#define SCE_NOBUF 0x4000 -#define SCE_NOWAIT 0x8000 - -#define sceMcExecIdle (-1) -#define sceMcExecRun 0 -#define sceMcExecFinish 1 - -#define sceMcResSucceed 0 -#define sceMcResNoFormat (-2) -#define sceMcResNoEntry (-4) -#define sceMcResDeniedPermit (-5) -#define sceMcResNotEmpty (-6) - -#define sceMcFuncNoCardInfo 1 -#define sceMcFuncNoOpen 2 -#define sceMcFuncNoClose 3 -#define sceMcFuncNoWrite 6 -#define sceMcFuncNoFormat 16 -#define sceMcFuncNoDelete 15 -#define sceMcFuncNoUnformat 17 - -#define sceMcTypePS2 2 - s32 sceOpen(const char* filename, s32 flag); s32 sceClose(s32 fd); s32 sceRead(s32 fd, void* buf, s32 nbyte); s32 sceWrite(s32 fd, const void* buf, s32 nbyte); s32 sceLseek(s32 fd, s32 offset, s32 where); - -s32 sceMcMkdir(s32 port, s32 slot, const char* name); -s32 sceMcSync(s32 mode, s32* cmd, s32* result); -s32 sceMcOpen(s32 port, s32 slot, const char* name, s32 mode); -s32 sceMcWrite(s32 fd, const void* buff, s32 size); -s32 sceMcClose(s32 fd); - -s32 sceMcGetInfo(s32 port, s32 slot, s32* type, s32* free, s32* format); -s32 sceMcFormat(s32 port, s32 slot); -s32 sceMcUnformat(s32 port, s32 slot); -s32 sceMcDelete(s32 port, s32 slot, const char* name); - } // namespace ee diff --git a/game/sce/sif_ee_memcard.cpp b/game/sce/sif_ee_memcard.cpp new file mode 100644 index 0000000000..ee6591875b --- /dev/null +++ b/game/sce/sif_ee_memcard.cpp @@ -0,0 +1,306 @@ + +#include +#include +#include +#include + +#include "sif_ee_memcard.h" +#include "game/sce/sif_ee.h" +#include "common/util/Serializer.h" +#include "common/util/FileUtil.h" +#include "common/util/assert.h" + +namespace ee { +/*! + * The actual data stored on the memory card. + */ +struct CardData { + // each file has a name and data. + struct File { + std::vector data; + bool is_directory = false; + }; + // can be formatted or unformatted card. + u32 is_formatted = 0; + std::unordered_map files; + + void save_to_file(const std::string& name); + void load_from_file(const std::string& name); +}; + +void CardData::save_to_file(const std::string& name) { + Serializer ser; + ser.from_ptr(&is_formatted); + ser.save(files.size()); + for (auto& f : files) { + ser.save_str(&f.first); + ser.from_pod_vector(&f.second.data); + ser.from_ptr(&f.second.is_directory); + } + auto result = ser.get_save_result(); + file_util::write_binary_file(name, result.first, result.second); +} + +void CardData::load_from_file(const std::string& name) { + auto raw_data = file_util::read_binary_file(name); + Serializer ser(raw_data.data(), raw_data.size()); + + ser.from_ptr(&is_formatted); + files.clear(); + size_t file_count = ser.load(); + for (size_t i = 0; i < file_count; i++) { + auto file_name = ser.load_string(); + auto& file_entry = files[file_name]; + ser.from_pod_vector(&file_entry.data); + ser.from_ptr(&file_entry.is_directory); + } + assert(ser.get_load_finished()); +} + +std::string get_memory_card_path() { + return file_util::get_file_path({"user", "memcard.bin"}); +} + +/*! + * The actual memory card library state + current data. + */ +struct McState { + s32 current_function = -1; // -1 = nothing + s32 current_function_result = 0; + + struct McFileHandle { + std::string name; + u32 fd = 0; + s32 mode = 0; + u32 seek = 0; + }; + + std::unordered_map handles; + + // TODO: we should load this data at startup from a memory card file, and save it at each write. + CardData data; + int next_fd = 1; +} g_mc_state; + +int sceMcInit() { + g_mc_state = McState(); + read_memory_card_from_file(); + return 1; +} + +s32 sceMcMkdir(s32 port, s32 slot, const char* name) { + assert(port == 0); + assert(slot == 0); + auto& file = g_mc_state.data.files[name]; + file.data.clear(); + file.is_directory = true; + return sceMcResSucceed; +} + +s32 sceMcSync(s32 mode, s32* cmd, s32* result) { + // don't care about the mode, all memory card ops are instant. + assert(mode == 1 || mode == 0); + if (g_mc_state.current_function == -1) { + return sceMcExecIdle; + } else { + *cmd = g_mc_state.current_function; + *result = g_mc_state.current_function_result; + g_mc_state.current_function = -1; + return sceMcExecFinish; + } +} + +s32 sceMcOpen(s32 port, s32 slot, const char* name, s32 mode) { + assert(port == 0); + assert(slot == 0); + assert(g_mc_state.current_function == -1); + + // add existing file, if it does not exist. + auto existing_file = g_mc_state.data.files.find(name); + if (existing_file == g_mc_state.data.files.end()) { + assert(mode & SCE_CREAT); + g_mc_state.data.files[name] = {}; + } + + // create a handle. + g_mc_state.current_function = sceMcFuncNoOpen; + s32 fd = g_mc_state.next_fd++; + McState::McFileHandle handle; + handle.name = name; + handle.fd = fd; + handle.mode = mode; + handle.seek = 0; + g_mc_state.handles[fd] = handle; + + g_mc_state.current_function_result = fd; + return 0; +} + +s32 sceMcWrite(s32 fd, const void* buff, s32 size) { + assert(g_mc_state.current_function == -1); + + assert(size >= 0 && size < (1024 * 1024 * 1024)); + auto hand = g_mc_state.handles.find(fd); + assert(hand != g_mc_state.handles.end()); // make sure fd is valid + assert(hand->second.mode & SCE_WRONLY); // make sure we're allowed to write + + const auto& file = g_mc_state.data.files.find(hand->second.name); + assert(file != g_mc_state.data.files.end()); + + file->second.data.resize(size + hand->second.seek); + memcpy(file->second.data.data() + hand->second.seek, buff, size); + hand->second.seek += size; + + // TODO: save memcard data to a file. + + g_mc_state.current_function = sceMcFuncNoWrite; + g_mc_state.current_function_result = size; + return 0; +} + +s32 sceMcClose(s32 fd) { + assert(g_mc_state.current_function == -1); + auto hand = g_mc_state.handles.find(fd); + assert(hand != g_mc_state.handles.end()); // make sure fd is valid + g_mc_state.handles.erase(fd); + g_mc_state.current_function = sceMcFuncNoClose; + g_mc_state.current_function_result = sceMcResSucceed; + return 0; +} + +s32 sceMcGetInfo(s32 port, s32 slot, s32* type, s32* free, s32* format) { + assert(g_mc_state.current_function == -1); + assert(port == 0 || port == 1); + assert(slot == 0); + + if (port == 0) { + if (type) { + *type = sceMcTypePS2; + } + + if (free) { + *free = 2 * 1024; // number of free 1 kB clusters + } + + if (format) { + *format = g_mc_state.data.is_formatted; + } + + g_mc_state.current_function = sceMcFuncNoCardInfo; + + // technically this should return something else the first time you call this function after + // changing cards. + g_mc_state.current_function_result = sceMcResSucceed; + } else { + g_mc_state.current_function = sceMcFuncNoCardInfo; + g_mc_state.current_function_result = -123; + } + + return 0; +} + +s32 sceMcFormat(s32 port, s32 slot) { + assert(g_mc_state.current_function == -1); + assert(port == 0); + assert(slot == 0); + g_mc_state.data.is_formatted = true; + g_mc_state.current_function_result = sceMcResSucceed; + g_mc_state.current_function = sceMcFuncNoFormat; + return 0; +} + +s32 sceMcUnformat(s32 port, s32 slot) { + assert(g_mc_state.current_function == -1); + assert(port == 0); + assert(slot == 0); + g_mc_state.data.is_formatted = false; + g_mc_state.current_function_result = sceMcResSucceed; + g_mc_state.current_function = sceMcFuncNoUnformat; + return 0; +} + +s32 sceMcDelete(s32 port, s32 slot, const char* name) { + assert(g_mc_state.current_function == -1); + assert(port == 0); + assert(slot == 0); + g_mc_state.current_function = sceMcFuncNoDelete; + + if (!g_mc_state.data.is_formatted) { + g_mc_state.current_function_result = sceMcResNoFormat; + } else { + auto it = g_mc_state.data.files.find(name); + if (it == g_mc_state.data.files.end()) { + g_mc_state.current_function_result = sceMcResNoEntry; + } else { + // sometimes should be sceMcResNotEmpty, but doesn't matter. + g_mc_state.current_function_result = sceMcResSucceed; + g_mc_state.data.files.erase(it); + } + } + + return 0; +} + +sceMcStDateTime make_fake_date_time() { + sceMcStDateTime dt; + dt.day = 1; + dt.month = 22; + dt.hour = 7; + dt.min = 12; + dt.year = 153; // ?? + return dt; +} + +s32 sceMcGetDir(s32 port, int slot, const char* name, u32 mode, s32 maxent, sceMcTblGetDir* table) { + assert(g_mc_state.current_function == -1); + assert(port == 0); + assert(slot == 0); + assert(maxent == 1); + assert(mode == 0); + assert(g_mc_state.data.is_formatted); + g_mc_state.current_function = sceMcFuncNoGetDir; + + auto file_it = g_mc_state.data.files.find(name); + if (file_it == g_mc_state.data.files.end()) { + g_mc_state.current_function_result = 0; + return 0; + } else { + g_mc_state.current_function_result = 1; + // assert(strlen(name) < 32); + strcpy(table[0].name, "blah"); + table[0].file_size = file_it->second.data.size(); + table[0].created = make_fake_date_time(); + table[0].modified = make_fake_date_time(); + return 0; + } +} + +s32 sceMcRead(s32 fd, void* buff, s32 size) { + assert(g_mc_state.current_function == -1); + assert(g_mc_state.data.is_formatted); + auto it = g_mc_state.handles.find(fd); + assert(it != g_mc_state.handles.end()); + auto file_it = g_mc_state.data.files.find(it->second.name); + // todo check read/write mode + assert(file_it != g_mc_state.data.files.end()); + assert(size + it->second.seek <= file_it->second.data.size()); + + memcpy(buff, file_it->second.data.data() + it->second.seek, size); + it->second.seek += size; + g_mc_state.current_function_result = size; + g_mc_state.current_function = sceMcFuncNoRead; + return 0; +} + +void flush_memory_card_to_file() { + file_util::create_dir_if_needed(file_util::get_file_path({"user"})); + g_mc_state.data.save_to_file(get_memory_card_path()); +} + +void read_memory_card_from_file() { + if (std::filesystem::exists(get_memory_card_path())) { + g_mc_state.data.load_from_file(get_memory_card_path()); + } +} + +} // namespace ee \ No newline at end of file diff --git a/game/sce/sif_ee_memcard.h b/game/sce/sif_ee_memcard.h new file mode 100644 index 0000000000..346d7273ee --- /dev/null +++ b/game/sce/sif_ee_memcard.h @@ -0,0 +1,65 @@ +#pragma once + +#include "common/common_types.h" + +namespace ee { + +#define sceMcExecIdle (-1) +#define sceMcExecRun 0 +#define sceMcExecFinish 1 + +#define sceMcResSucceed 0 +#define sceMcResNoFormat (-2) +#define sceMcResNoEntry (-4) +#define sceMcResDeniedPermit (-5) +#define sceMcResNotEmpty (-6) + +#define sceMcFuncNoCardInfo 1 +#define sceMcFuncNoOpen 2 +#define sceMcFuncNoClose 3 +#define sceMcFuncNoRead 5 +#define sceMcFuncNoWrite 6 +#define sceMcFuncNoGetDir 13 +#define sceMcFuncNoDelete 15 +#define sceMcFuncNoFormat 16 +#define sceMcFuncNoUnformat 17 + +#define sceMcTypePS2 2 + +struct sceMcStDateTime { + u8 unk; + u8 sec; + u8 min; + u8 hour; + u8 day; + u8 month; + u16 year; +}; + +struct sceMcTblGetDir { + sceMcStDateTime created, modified; + u32 file_size; + u16 attr_file; + u16 unk; + u32 unk2; + u32 pad_apl_no; + char name[32]; +}; + +s32 sceMcMkdir(s32 port, s32 slot, const char* name); +s32 sceMcSync(s32 mode, s32* cmd, s32* result); +s32 sceMcOpen(s32 port, s32 slot, const char* name, s32 mode); +s32 sceMcWrite(s32 fd, const void* buff, s32 size); +s32 sceMcClose(s32 fd); + +s32 sceMcGetInfo(s32 port, s32 slot, s32* type, s32* free, s32* format); +s32 sceMcFormat(s32 port, s32 slot); +s32 sceMcUnformat(s32 port, s32 slot); +s32 sceMcDelete(s32 port, s32 slot, const char* name); + +s32 sceMcGetDir(s32 port, int slot, const char* name, u32 mode, s32 maxent, sceMcTblGetDir* table); +s32 sceMcRead(s32 fd, void* buff, s32 size); + +void flush_memory_card_to_file(); +void read_memory_card_from_file(); +} // namespace ee \ No newline at end of file diff --git a/goal_src/engine/entity/entity.gc b/goal_src/engine/entity/entity.gc index dd62067efa..f370577318 100644 --- a/goal_src/engine/entity/entity.gc +++ b/goal_src/engine/entity/entity.gc @@ -939,7 +939,8 @@ (defmacro birth-log (str &rest args) "Debug print to stdout of runtime for debugging actor inits." - `(format 0 ,(string-append "[BIRTH] " str) ,@args) + ;;`(format 0 ,(string-append "[BIRTH] " str) ,@args) + `(empty) ) (defun init-entity ((proc process) (ent entity)) diff --git a/goal_src/engine/game/collectables-part.gc b/goal_src/engine/game/collectables-part.gc index 20ba7e2ef4..d672953bbe 100644 --- a/goal_src/engine/game/collectables-part.gc +++ b/goal_src/engine/game/collectables-part.gc @@ -11,7 +11,8 @@ (declare-type eco-collectable process-drawable) ;; DECOMP BEGINS - +;; definition for function eco-fadeout +;; INFO: Return type mismatch int vs none. (defun eco-fadeout ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) (if (zero? @@ -23,6 +24,8 @@ (none) ) +;; definition for function eco-track-root-prim-fadeout +;; INFO: Return type mismatch int vs none. (defun eco-track-root-prim-fadeout ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -44,6 +47,8 @@ (none) ) +;; definition for function part-tracker-track-root +;; INFO: Return type mismatch int vs none. (defun part-tracker-track-root ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -56,6 +61,7 @@ (none) ) +;; definition for function part-tracker-move-to-target (defun part-tracker-move-to-target ((arg0 part-tracker)) (let* ((v1-0 *target*) (a2-0 (if (not v1-0) @@ -82,6 +88,8 @@ ) ) +;; definition for function part-tracker-track-target +;; Used lq/sq (defun part-tracker-track-target ((arg0 part-tracker)) (set! (-> arg0 linger-callback) (-> arg0 callback)) (let* ((v1-1 *target*) @@ -2707,6 +2715,8 @@ ) ) +;; definition for function sparticle-track-root-money +;; INFO: Return type mismatch int vs none. (defun sparticle-track-root-money ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -2873,7 +2883,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1a :page #x2)) (sp-flt spt-num 2.0) (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.2) 1.0) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 12743.111 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) @@ -2898,7 +2908,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1a :page #x2)) (sp-flt spt-num 2.0) (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.2) 1.0) - (sp-int spt-rot-x 1184657863) + (sp-rnd-flt spt-rot-x 20024.889 12743.111 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) diff --git a/goal_src/engine/game/game-save.gc b/goal_src/engine/game/game-save.gc index 3dc22513d7..2fa59ae74c 100644 --- a/goal_src/engine/game/game-save.gc +++ b/goal_src/engine/game/game-save.gc @@ -207,7 +207,7 @@ (let ((tag (the-as game-save-tag (-> obj tag))) (tag-idx 0) ) - (while (< (the-as int tag) (the-as int (-> obj tag))) + (while (< (the-as int tag) (the-as int (-> obj tag (-> obj length)))) (format #t "~T [~3D] ~-32S [~3D/~3D] ~12D ~8f " tag-idx (game-save-elt->string (-> tag elt-type)) @@ -1705,57 +1705,30 @@ ) (defbehavior auto-save-post auto-save () - (when - (and - (= *cheat-mode* 'debug) - (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3)) - ) - (let - ((gp-0 - (new - 'stack - 'font-context - *font-default-matrix* - 32 - 160 - 0.0 - (font-color default) - (font-flags shadow kerning) - ) + ;; debug text + (when (and (= *cheat-mode* 'debug) + (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3)) + ) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-5 gp-0)) + (set! (-> v1-5 width) (the float 440)) + ) + (let ((v1-6 gp-0)) + (set! (-> v1-6 height) (the float 80)) + ) + (set! (-> gp-0 flags) (font-flags shadow kerning)) + (format (clear *temp-string*) "~S / ~S ~D~%" + (-> self mode) + (-> self state name) + (-> self which) + ) + (print-game-text *temp-string* gp-0 #f 128 22) ) - ) - (let ((v1-5 gp-0)) - (set! (-> v1-5 width) (the float 440)) - ) - (let ((v1-6 gp-0)) - (set! (-> v1-6 height) (the float 80)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning)) - (format - (clear *temp-string*) - "~S / ~S ~D~%" - (-> self mode) - (-> self state name) - (-> self which) - ) - (print-game-text *temp-string* gp-0 #f 128 22) ) - ) + + ;; auto-save drawing (when (and (= (-> self mode) 'auto-save) (!= (-> self next-state name) 'done)) - (let - ((gp-1 - (new - 'stack - 'font-context - *font-default-matrix* - 20 - 40 - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) + (let ((gp-1 (new 'stack 'font-context *font-default-matrix* 20 40 0.0 (font-color default) (font-flags shadow kerning)))) (let ((v1-15 gp-1)) (set! (-> v1-15 scale) 0.8) ) @@ -1766,14 +1739,10 @@ (set! (-> v1-17 height) (the float 20)) ) (set! (-> gp-1 flags) (font-flags shadow kerning middle left large)) + + ;; if this is the first time saving, display a warning. (when (zero? (-> *game-info* auto-save-count)) - (print-game-text - (lookup-text! *common-text* (game-text-id saving-data) #f) - gp-1 - #f - 128 - 22 - ) + (print-game-text (lookup-text! *common-text* (game-text-id saving-data) #f) gp-1 #f 128 22) (set! (-> gp-1 origin x) 20.0) (set! (-> gp-1 origin y) 130.0) (let ((v1-23 gp-1)) @@ -1792,51 +1761,48 @@ ) ) ) + + ;; flash the icon. (when (< (mod (-> *display* real-frame-counter) 300) 270) - (when (> (-> self part matrix) 0) - (let ((gp-2 (sprite-get-user-hvdf (-> self part matrix)))) - (set! (-> gp-2 vector4w x) (the-as int 1842.0)) - (set! - (-> gp-2 vector4w y) - (the-as - int - (the - float - (+ (the int (* 0.5 (- (* (if (= (get-aspect-ratio) 'aspect16x9) - 370.0 - 360.0 - ) - (-> *video-parms* relative-y-scale) - ) - (the float (-> *video-parms* screen-sy)) - ) - ) - ) - 2048 - ) + (when (> (-> self part matrix) 0) + (let ((gp-2 (sprite-get-user-hvdf (-> self part matrix)))) + (set! (-> gp-2 vector4w x) (the-as int 1842.0)) + (set! (-> gp-2 vector4w y) (the-as int + (the float (+ (the int (* 0.5 (- (* (if (= (get-aspect-ratio) 'aspect16x9) + 370.0 + 360.0 + ) + (-> *video-parms* relative-y-scale) + ) + (the float (-> *video-parms* screen-sy)) + ) + ) + ) + 2048 + ) + ) + ) + ) + (set! + (-> gp-2 vector4w z) + (the-as int (+ -1024.0 (-> *math-camera* hvdf-off z))) + ) + (set! (-> gp-2 vector4w w) (the-as int (-> *math-camera* hvdf-off w))) ) - ) ) - (set! - (-> gp-2 vector4w z) - (the-as int (+ -1024.0 (-> *math-camera* hvdf-off z))) - ) - (set! (-> gp-2 vector4w w) (the-as int (-> *math-camera* hvdf-off w))) - ) + (spawn (-> self part) *zero-vector*) ) - (spawn (-> self part) *zero-vector*) - ) ) (none) ) (defstatehandler auto-save :post auto-save-post) -(defbehavior auto-save-init-by-other auto-save ((desired-mode symbol) (notify-proc process-tree) (card-idx int) (file-idx int)) - - ;; stubbing for now. - (return #f) + +(defbehavior auto-save-init-by-other auto-save ((desired-mode symbol) (notify-proc process-tree) (card-idx int) (file-idx int)) + (format 0 "auto-save-init!~%") + ;; trying to create multiple auto save procs, bad idea. (when (handle->process (-> *game-info* auto-save-proc)) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) @@ -1844,14 +1810,19 @@ (set! (-> a1-2 message) 'notify) (set! (-> a1-2 param 0) (the-as uint 'error)) (set! (-> a1-2 param 1) (the-as uint 16)) + (format 0 "auto save proc error~%") (send-event-function (the-as process notify-proc) a1-2) ) (return #f) ) + + ;; set us as the auto save proc (set! (-> *game-info* auto-save-proc) (process->handle self)) (set! (-> *game-info* auto-save-status) (mc-status-code ok)) (stack-size-set! (-> self main-thread) 512) (logclear! (-> self mask) (process-mask pause menu progress)) + + ;; setup ourself (set! (-> self card) card-idx) (set! (-> self which) file-idx) (set! (-> self buffer) #f) @@ -1877,11 +1848,565 @@ ) ) (set! (-> *setting-control* default auto-save) #f) + (format 0 "going to get-heap!~%") (go-virtual get-heap) (none) ) +;; Get heap memory. +(defstate get-heap (auto-save) + :virtual #t + :code + (behavior () + (set! (-> self state-time) (-> *display* real-frame-counter)) + (let ((a0-1 (reserve-alloc *art-control*))) + (while (not a0-1) + (if (>= (- (-> *display* real-frame-counter) (-> self state-time)) #x4650) + (go-virtual error (mc-status-code no-memory)) + ) + (suspend) + (set! a0-1 (reserve-alloc *art-control*)) + ) + (set! (-> self buffer) a0-1) + ) + (go-virtual get-card) + (none) + ) + :post + auto-save-post + ) + +(defstate get-card (auto-save) + :virtual #t + :code + (behavior () + (label cfg-0) + (mc-get-slot-info (-> self slot) (-> self info)) + (when (zero? (-> self info known)) + (suspend) + (goto cfg-0) + ) + (cond + ((zero? (-> self info handle)) + (go-virtual error (mc-status-code no-card)) + ) + ((zero? (-> self card)) + (set! (-> self card) (-> self info handle)) + ) + ((!= (-> self info handle) (-> self card)) + (go-virtual error (mc-status-code bad-handle)) + ) + ) + (case (-> self mode) + (('save 'auto-save) + (go-virtual save) + ) + (('save-last) + (set! (-> self which) (-> self info last-file)) + (if (= (-> self which) -1) + (go-virtual error (mc-status-code no-last)) + (go-virtual save) + ) + ) + (('restore) + (go-virtual restore) + ) + (('format-card) + (go-virtual format-card) + ) + (('unformat-card) + (go-virtual unformat-card) + ) + (('create-file) + (go-virtual create-file) + ) + (else + (go-virtual done) + ) + ) + (none) + ) + :post + auto-save-post + ) + +(defstate format-card (auto-save) + :virtual #t + :code + (behavior () + (when (zero? (-> self info formatted)) + (label cfg-1) + (set! (-> self result) (mc-format (-> self card))) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-1) + ) + (label cfg-3) + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (let ((v1-4 (-> self result))) + (b! (nonzero? v1-4) cfg-5 :delay (nop!)) + (b! #t cfg-10 :delay (nop!)) + (label cfg-5) + (b! (= v1-4 (mc-status-code format-failed)) cfg-1 :delay (nop!)) + (nop!) + (b! (!= v1-4 (mc-status-code ok)) cfg-9 :delay (nop!)) + ) + (b! #t cfg-12 :delay (nop!)) + (the-as none 0) + (b! #t cfg-10 :delay (nop!)) + (label cfg-9) + (go-virtual error (-> self result)) + (label cfg-10) + (suspend) + (goto cfg-3) + ;;(break ((empty)) ((empty-form))) + + ) + (label cfg-12) + (case (-> self mode) + (('create-file 'save 'save-last 'auto-save 'restore) + (go-virtual create-file) + ) + ) + (go-virtual done) + (none) + ) + :post + auto-save-post + ) + +(defstate unformat-card (auto-save) + :virtual #t + :code + (behavior () + (when (nonzero? (-> self info formatted)) + (label cfg-1) + (set! (-> self result) (mc-unformat (-> self card))) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-1) + ) + (while #t + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (case (-> self result) + (((mc-status-code busy)) + ) + (((mc-status-code ok)) + (goto cfg-11) + ) + (else + (go-virtual error (-> self result)) + ) + ) + (suspend) + ) + ) + (label cfg-11) + (go-virtual done) + (none) + ) + :post + auto-save-post + ) + +(defstate create-file (auto-save) + :virtual #t + :code + (behavior () + (cond + ((zero? (-> self info formatted)) + (go-virtual error (mc-status-code no-format)) + ) + ((zero? (-> self info inited)) + (if (< (-> self info mem-actual) (-> self info mem-required)) + (go-virtual error (mc-status-code no-space)) + ) + (let ((v1-12 (-> self buffer))) + (set! (-> v1-12 current) (-> v1-12 base)) + ) + (label cfg-6) + (set! + (-> self result) + (mc-create-file (-> self card) (the-as uint (-> self buffer base))) + ) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-6) + ) + (while #t + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (case (-> self result) + (((mc-status-code busy)) + ) + (((mc-status-code ok)) + (goto cfg-16) + ) + (else + (go-virtual error (-> self result)) + ) + ) + (suspend) + ) + ) + ) + (label cfg-16) + (case (-> self mode) + (('restore) + (go-virtual restore) + ) + (('save 'save-last 'auto-save) + (go-virtual save) + ) + ) + (go-virtual done) + (none) + ) + :post + auto-save-post + ) + +(defstate save (auto-save) + :virtual #t + :code + (behavior () + (cond + ((zero? (-> self info formatted)) + (go-virtual error (mc-status-code no-format)) + ) + ((zero? (-> self info inited)) + (go-virtual error (mc-status-code no-file)) + ) + ) + (case (-> self mode) + (('auto-save) + (+! (-> *game-info* auto-save-count) 1) + ) + ) + (let ((v1-14 (-> self buffer))) + (set! (-> v1-14 current) (-> v1-14 base)) + ) + (let ((gp-0 loading-level)) + (set! loading-level (-> self buffer)) + (set! (-> self save) (new 'loading-level 'game-save #x10000)) + (save-game! *game-info* (-> self save) "save") + (set! loading-level (the-as kheap gp-0)) + 0 + (label cfg-7) + (set! + (-> self result) + (mc-save + (-> self card) + (-> self which) + (&-> (-> self save) type) + (the-as int (-> self save info-int32)) + ) + ) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-7) + ) + (while #t + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (let ((v1-24 (-> self result))) + (cond + ((= v1-24 (mc-status-code busy)) + #f + ) + ((= v1-24 (mc-status-code ok)) + (goto cfg-21) + gp-0 + ) + ((= v1-24 (mc-status-code write-error)) + (suspend) + gp-0 + ) + (else + (case (-> self mode) + (('auto-save) + (set! + (-> *game-info* auto-save-count) + (seekl (-> *game-info* auto-save-count) 0 1) + ) + ) + ) + (go-virtual error (-> self result)) + ) + + ) + ) + (suspend) + ) + ) + (label cfg-21) + (go-virtual done) + (none) + ) + :post + auto-save-post + ) + +(defstate restore (auto-save) + :virtual #t + :code + (behavior () + (local-vars (gp-0 none)) + (cond + ((zero? (-> self info formatted)) + (go-virtual error (mc-status-code no-format)) + ) + ((zero? (-> self info inited)) + (go-virtual error (mc-status-code no-file)) + ) + ) + (let ((v1-10 (-> self buffer))) + (set! (-> v1-10 current) (-> v1-10 base)) + ) + (if (zero? (-> self info file (-> self which) present)) + (go-virtual error (mc-status-code no-save)) + ) + (label cfg-6) + (set! + (-> self result) + (mc-load (-> self card) (-> self which) (-> self buffer base)) + ) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-6) + ) + (while #t + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (let ((v1-22 (-> self result))) + (cond + ((= v1-22 (mc-status-code busy)) + #f + ) + ((= v1-22 (mc-status-code ok)) + (goto cfg-20) + gp-0 + ) + ((= v1-22 (mc-status-code read-error)) + (suspend) + gp-0 + ) + ((= v1-22 (mc-status-code new-game)) + (go-virtual error (mc-status-code no-save)) + ) + (else + (go-virtual error (-> self result)) + ) + ) + + ) + (suspend) + ) + (label cfg-20) + (set! (-> self save) (the-as game-save (&+ (-> self buffer base) 4))) + (let ((v1-34 (-> self save))) + (set! (-> v1-34 type) game-save) + (if (!= (-> v1-34 version) 1) + (go-virtual error (mc-status-code bad-version)) + ) + ) + (set-setting! *setting-control* self 'music-volume 'abs 0.0 0) + (set-setting! *setting-control* self 'sfx-volume 'abs 0.0 0) + (set! (-> *game-info* mode) 'play) + (initialize! *game-info* 'game (-> self save) (the-as string #f)) + (set-master-mode 'game) + (push-setting! + *setting-control* + self + (the-as (function object object object object object) 'process-mask) + 'set + 0.0 + 16 + ) + (copy-settings-from-target! *setting-control*) + (dotimes (gp-1 15) + (suspend) + ) + (go-virtual done) + (none) + ) + :post + auto-save-post + ) + +(defstate error (auto-save) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'progress-allowed?) + #t + ) + ((= v1-0 'die) + (deactivate self) + ) + ) + ) + ) + ) + :code + (behavior ((arg0 mc-status-code)) + (if (-> self buffer) + (reserve-free *art-control* (-> self buffer)) + ) + (set! (-> self result) arg0) + (let ((s5-0 *auto-save-info*)) + (mem-copy! (the-as pointer s5-0) (the-as pointer (-> self info)) 300) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 3) + (set! (-> a1-2 message) 'notify) + (set! (-> a1-2 param 0) (the-as uint 'error)) + (set! (-> a1-2 param 1) (the-as uint (-> self result))) + (set! (-> a1-2 param 2) (the-as uint s5-0)) + (send-event-function (handle->process (-> self notify)) a1-2) + ) + ) + (let ((t9-3 format) + (a0-7 #t) + (a1-3 "SAVE ERROR: ~A~%") + (v1-12 (-> self result)) + ) + (t9-3 a0-7 a1-3 (cond + ((= v1-12 (mc-status-code no-auto-save)) + "no-auto-save" + ) + ((= v1-12 (mc-status-code no-process)) + "no-process" + ) + ((= v1-12 (mc-status-code bad-version)) + "bad-version" + ) + ((= v1-12 (mc-status-code no-space)) + "no-space" + ) + ((= v1-12 (mc-status-code no-save)) + "no-save" + ) + ((= v1-12 (mc-status-code no-file)) + "no-file" + ) + ((= v1-12 (mc-status-code no-format)) + "no-format" + ) + ((= v1-12 (mc-status-code no-last)) + "no-last" + ) + ((= v1-12 (mc-status-code no-card)) + "no-card" + ) + ((= v1-12 (mc-status-code no-memory)) + "no-memory" + ) + ((= v1-12 (mc-status-code new-game)) + "new-game" + ) + ((= v1-12 (mc-status-code read-error)) + "read-error" + ) + ((= v1-12 (mc-status-code write-error)) + "write-error" + ) + ((= v1-12 (mc-status-code internal-error)) + "internal-error" + ) + ((= v1-12 (mc-status-code format-failed)) + "format-failed" + ) + ((= v1-12 (mc-status-code bad-handle)) + "bad-handle" + ) + ((= v1-12 (mc-status-code ok)) + "ok" + ) + ((= v1-12 (mc-status-code busy)) + "busy" + ) + (else + "*unknown*" + ) + ) + ) + ) + (if (= (-> self result) (mc-status-code no-auto-save)) + (return #f) + ) + (case (-> self mode) + (('auto-save 'error) + (set! (-> self state-time) (-> *display* real-frame-counter)) + (set! (-> *game-info* auto-save-status) arg0) + (while (< (- (-> *display* real-frame-counter) (-> self state-time)) 60) + (if (not (progress-allowed?)) + (set! (-> self state-time) (-> *display* real-frame-counter)) + ) + (suspend) + ) + (if (= arg0 (mc-status-code no-card)) + (activate-progress *dproc* (progress-screen memcard-removed)) + (activate-progress *dproc* (progress-screen memcard-auto-save-error)) + ) + ) + ) + (none) + ) + :post + auto-save-post + ) + +;; failed to figure out what this is: +(defstate done (auto-save) + :virtual #t + :code + (behavior () + (if (and (-> self buffer) (-> *art-control* reserve-buffer)) + (reserve-free *art-control* (-> self buffer)) + ) + (set! (-> *game-info* auto-save-status) (mc-status-code ok)) + (case (-> self mode) + (('save 'save-last 'auto-save 'restore) + (set! (-> *setting-control* default auto-save) #t) + (set! (-> *game-info* auto-save-card) (-> self card)) + (set! (-> *game-info* auto-save-which) (-> self which)) + ) + ) + (let ((gp-0 *auto-save-info*)) + (mem-copy! (the-as pointer gp-0) (the-as pointer (-> self info)) 300) + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 3) + (set! (-> a1-5 message) 'notify) + (set! (-> a1-5 param 0) (the-as uint 'done)) + (set! (-> a1-5 param 1) (the-as uint 1)) + (set! (-> a1-5 param 2) (the-as uint gp-0)) + (send-event-function (handle->process (-> self notify)) a1-5) + ) + ) + (case (-> self mode) + (('auto-save) + (when (= (-> *game-info* auto-save-count) 1) + (set! (-> self event-hook) (-> (method-of-object self error) event)) + (set! (-> self state-time) (-> *display* real-frame-counter)) + (while (< (- (-> *display* real-frame-counter) (-> self state-time)) 60) + (if (not (progress-allowed?)) + (set! (-> self state-time) (-> *display* real-frame-counter)) + ) + (suspend) + ) + (activate-progress *dproc* (progress-screen auto-save)) + ) + ) + ) + (none) + ) + :post + auto-save-post + ) + (defun auto-save-command ((arg0 symbol) (arg1 int) (arg2 int) (arg3 process-tree)) + (format #t "auto-save cmd: ~A from ~A~%" arg0 arg3) (make-init-process auto-save auto-save-init-by-other arg0 arg3 arg1 arg2) (none) ) diff --git a/goal_src/engine/game/main.gc b/goal_src/engine/game/main.gc index 91a6fb32fa..717d493ba8 100644 --- a/goal_src/engine/game/main.gc +++ b/goal_src/engine/game/main.gc @@ -695,12 +695,11 @@ (process-particles) - ;; particles - ;; vif0 collid + ;; vif0 collide ;; swap sound ;; str play (level-update *level*) ;; also updates settings. - ;; run mc + (mc-run) ;; auto save check ;; suspend diff --git a/goal_src/engine/level/level.gc b/goal_src/engine/level/level.gc index d71ba02edf..5d6872065e 100644 --- a/goal_src/engine/level/level.gc +++ b/goal_src/engine/level/level.gc @@ -1552,6 +1552,8 @@ (defmethod level-update level-group ((obj level-group)) ;; todo lots of stuff (update-per-frame-settings! *setting-control*) + (update *art-control* #t) + (clear-rec *art-control*) 0 ) diff --git a/goal_src/engine/load/loader-h.gc b/goal_src/engine/load/loader-h.gc index b12dc4090d..074ea0ba43 100644 --- a/goal_src/engine/load/loader-h.gc +++ b/goal_src/engine/load/loader-h.gc @@ -8,7 +8,8 @@ ;; This is not well-understood yet, but it is definitely related to streaming animation loading, ;; and possibly art-group stuff. - +;; note: lower values are more important. +;; negative values will preload. (defconstant SPOOL_PRIORITY_LOWEST 100000000.0) (defconstant SPOOL_PRIORITY_RECALC -99.0) (defconstant SPOOL_PRIORITY_HIGHEST -20.0) @@ -23,7 +24,9 @@ (string-array (array string) :offset-assert 8) ;; these are the names (data-array (array basic) :offset-assert 12) ;; this is the file data. ) - :flag-assert #xb00000010 + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 (:methods (new (symbol type int basic) _type_ 0) (load-to-heap-by-name (_type_ string symbol kheap int) art-group 9) @@ -35,7 +38,9 @@ (deftype load-dir-art-group (load-dir) ((art-group-array (array art-group) :offset 12) ) - :flag-assert #xb00000010 + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 (:methods (new (symbol type int basic) _type_ 0) ) @@ -74,31 +79,42 @@ ) ) +;; An external-art-buffer owns some memory for loading files. +;; status: +;; - 'active: file is loaded and art group is linked to level's art group. +;; - 'reserved: buffer is reserved for other purpose +;; - 'error: load has encountered an error, goes to 'inactive +;; - 'inactive: not in use +;; - 'loading: loading is in progress +;; - 'loaded: loading has finished, goes to 'locked or 'active +;; - 'locked: loaded, but another buffer is active and blocks this one. +;; Note: a locked buffer has loaded/linked the file, but hasn't linked the file +;; to the "master" art group, located in the level. (deftype external-art-buffer (basic) - ((index int32 :offset-assert 4) - (other external-art-buffer :offset-assert 8) - (status symbol :offset-assert 12) - (locked? symbol :offset-assert 16) - (frame-lock symbol :offset-assert 20) - (heap kheap :inline :offset-assert 32) - (pending-load-file string :offset-assert 48) - (pending-load-file-part int32 :offset-assert 52) - (pending-load-file-owner handle :offset-assert 56) - (pending-load-file-priority float :offset-assert 64) - (load-file string :offset-assert 68) - (load-file-part int32 :offset-assert 72) - (load-file-owner handle :offset-assert 80) - (load-file-priority float :offset-assert 88) - (buf pointer :offset-assert 92) - (len int32 :offset-assert 96) - (art-group art-group :offset-assert 100) + ((index int32 :offset-assert 4) + (other external-art-buffer :offset-assert 8) + (status symbol :offset-assert 12) + (locked? symbol :offset-assert 16) + (frame-lock symbol :offset-assert 20) + (heap kheap :inline :offset-assert 32) + (pending-load-file string :offset-assert 48) + (pending-load-file-part int32 :offset-assert 52) + (pending-load-file-owner handle :offset-assert 56) + (pending-load-file-priority float :offset-assert 64) + (load-file string :offset-assert 68) + (load-file-part int32 :offset-assert 72) + (load-file-owner handle :offset-assert 80) + (load-file-priority float :offset-assert 88) + (buf pointer :offset-assert 92) + (len int32 :offset-assert 96) + (art-group art-group :offset-assert 100) ) :method-count-assert 16 :size-assert #x68 :flag-assert #x1000000068 (:methods (new (symbol type int) _type_ 0) - (want-file (_type_ string int handle float) int 9) + (set-pending-file (_type_ string int handle float) int 9) (update (_type_) int 10) (inactive? (_type_) symbol 11) (file-status (_type_ string int) symbol 12) @@ -128,11 +144,14 @@ ) ) + +;; A spool-anim tracks the buffers for spooled animations. +;; ?? what are the bufs here. (deftype spool-anim (basic) ((name string :offset 16) ;; why? (buf1 external-art-buffer :offset 16) ;; custom (index int32 :score 100 :offset 20) - (buf2 external-art-buffer :offset 20) ;; custom (also what?) + (buf2 external-art-buffer :offset 20) ;; custom the old buffer (parts int32 :offset-assert 24) (priority float :offset-assert 28) (owner handle :offset-assert 32) @@ -144,12 +163,13 @@ :flag-assert #x90000002c ) +;; This is the main controller for the loader. (deftype external-art-control (basic) - ((buffer external-art-buffer 2 :offset-assert 4) - (rec spool-anim 3 :inline :offset-assert 16) + ((buffer external-art-buffer 2 :offset-assert 4) ;; actual data buffers + (rec spool-anim 3 :inline :offset-assert 16) ;; things we would consider loading (spool-lock handle :offset-assert 160) - (reserve-buffer external-art-buffer :offset-assert 168) - (reserve-buffer-count int32 :offset-assert 172) + (reserve-buffer external-art-buffer :offset-assert 168) ;; ?? + (reserve-buffer-count int32 :offset-assert 172) ;; ?? (active-stream string :offset-assert 176) (preload-stream spool-anim :inline :offset-assert 184) (last-preload-stream spool-anim :inline :offset-assert 232) diff --git a/goal_src/engine/load/loader.gc b/goal_src/engine/load/loader.gc index 8761ca4336..0b8221f948 100644 --- a/goal_src/engine/load/loader.gc +++ b/goal_src/engine/load/loader.gc @@ -7,6 +7,7 @@ (defmethod inspect load-dir ((obj load-dir)) + "Print all the stuff in a load-dir" (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tlevel: ~A~%" (-> obj unknown)) (format #t "~Tallocated-length: ~D~%" (-> obj string-array allocated-length)) @@ -179,7 +180,7 @@ ) ) -(defmethod want-file external-art-buffer ((obj external-art-buffer) (arg0 string) (arg1 int) (arg2 handle) (arg3 float)) +(defmethod set-pending-file external-art-buffer ((obj external-art-buffer) (arg0 string) (arg1 int) (arg2 handle) (arg3 float)) "Request a new file to be loaded into this buffer." (set! (-> obj pending-load-file) arg0) @@ -212,14 +213,16 @@ ) ;; the file is at least wanting to load (if (and (name= (-> obj load-file) name) (= (-> obj load-file-part) part)) - (-> obj status) ;; file is loaded - 'pending ;; file is not loaded yet? + (-> obj status) ;; file is loaded or loading + 'pending ;; file has not started loading yet. ) ) ) (defmethod link-art! art-group ((obj art-group)) - "Links the elements of this art-group." + "Links the elements of this art-group. + This will put a reference to this joint animation in the level art group. + Level art groups have slots for temporarily loaded joint animations." (when obj (countdown (s5-0 (-> obj length)) @@ -236,19 +239,23 @@ (label cfg-22) (nonzero? s3-1) ) + ;; loop over levels, looking for the master art group for this joint animation. (+! s3-1 -1) (let ((janim-group (art-group-get-by-name (-> *level* level s3-1) (-> janim master-art-group-name)))) (when janim-group (cond - ((and (< (-> janim master-art-group-index) (-> janim-group length)) - (not (-> janim-group data (-> janim master-art-group-index))) + ((and (< (-> janim master-art-group-index) (-> janim-group length)) ;; index is valid + (not (-> janim-group data (-> janim master-art-group-index))) ;; doesn't already have it loaded ) + ;; link! (set! (-> janim-group data (-> janim master-art-group-index)) janim) (set! success #t) ) (else + ;; if the specified index is no good, just try looking for somewhere else. (countdown (a0-14 (-> janim-group length)) (when (not (-> janim-group data a0-14)) + ;; found an empty one! (set! (-> janim-group data a0-14) janim) (set! success #t) (goto cfg-22) @@ -271,7 +278,7 @@ ) (defmethod unlink-art! art-group ((obj art-group)) - "Unlinks the elements of this art-group." + "Unlinks the elements of this art-group. This will undo the link-art! function." (when obj (countdown (s5-0 (-> obj length)) @@ -348,6 +355,8 @@ (when (= (-> obj status) 'initialize) ;; we need to initialize the heap (let ((v1-11 (-> obj heap))) + ;; Scary: this is a hard coded address that points to the kernel memory. + ;; it turns out the kernel doesn't need this. So we can use it! (set! (-> v1-11 base) (the-as pointer (+ #x84000 (* #x3dc00 (-> obj index))))) (set! (-> v1-11 current) (-> v1-11 base)) (set! (-> v1-11 top-base) (&+ (-> v1-11 base) #x3dc00)) @@ -368,9 +377,11 @@ (set! (-> obj load-file-part) -1) (set! (-> obj load-file-owner) (the-as handle #f)) (set! (-> obj load-file-priority) SPOOL_PRIORITY_LOWEST) + ;; on the next time through, we will set the actual load file. ) (else ;; we have officially chosen to load this file + (set! (-> obj load-file) (-> obj pending-load-file)) (set! (-> obj load-file-part) (-> obj pending-load-file-part)) (set! (-> obj load-file-owner) (-> obj pending-load-file-owner)) @@ -378,6 +389,8 @@ ) ) ) + + (label cfg-18) (cond ((-> obj load-file) @@ -406,7 +419,7 @@ (set! (-> v1-28 current) (-> v1-28 base)) ) (cond - ((string= (-> obj load-file) "reserved") ;; we want to reserve something + ((string= (-> obj load-file) "reserved") ;; we want to reserve this buffer for something (not loading an str file) (cond ((-> *art-control* reserve-buffer) (format 0 "ERROR: trying double reserve ~A when ~A is reserved~%" obj (-> *art-control* reserve-buffer)) @@ -422,7 +435,8 @@ ) ;; unused cond ) - ((str-load (-> obj load-file) (-> obj load-file-part) (the pointer (align64 (-> obj heap current))) #x3fc00) + ((str-load (-> obj load-file) (-> obj load-file-part) (the pointer (align64 (-> obj heap current))) #x3fc00) ;; try to start load + ;; load has started!! (set! (-> obj status) 'loading) ) ) @@ -476,10 +490,11 @@ ) (('locked) ;; this buffer is locked and needs to be unlocked before it can be used. + ;; only one buffer can be active at a time. The other buffer is locked to prevent it from activating. (when (and (not (-> obj locked?)) (handle->process (-> obj load-file-owner))) ;; we want to be used, unlock this buffer and lock the other just in case. (link-file obj (-> obj art-group)) - (set! (-> obj other locked?) #t) + (set! (-> obj other locked?) #t) ;; prevent it from becoming active (set! (-> obj status) 'active) (goto cfg-18) ) @@ -512,6 +527,7 @@ ) (set! (-> obj art-group) #f) (set! (-> obj status) 'inactive) + ;; if the other is locked due to us, unlock it, then update it so it activates. (when (-> obj other locked?) (unlock! (-> obj other)) (update (-> obj other)) @@ -551,27 +567,38 @@ "Update this external-art-control. This validates the spool buffers, sorts the spools, advances str-play-queue, and does some other things. If debug-print, also prints some text to the display console" + ;; if somebody wants a reserve buffer, they will set this to 1. (if (nonzero? (-> obj reserve-buffer-count)) (spool-push obj "reserved" 0 *dproc* (if (-> obj reserve-buffer) -110.0 -0.5) ) ) + + ;; frame-lock will get set to #t if something is assigned to this buffer in this update. (dotimes (v1-5 2) - (set! (-> obj buffer v1-5 frame-lock) #f) ;; I don't know what this is + (set! (-> obj buffer v1-5 frame-lock) #f) ) + + ;; buffers assigned from this call to update (dotimes (v1-8 3) (set! (-> obj rec v1-8 buf2) #f) ) + + ;; update existing buffers from their recs (dotimes (s4-0 2) (let ((s3-0 (-> obj rec s4-0))) (when (-> s3-0 name) + ;; iterate over the two buffers (dotimes (s2-0 2) - (when (and (file-status (-> obj buffer s2-0) (-> s3-0 name) (-> s3-0 parts)) - (not (-> obj buffer s2-0 frame-lock)) + (when (and (file-status (-> obj buffer s2-0) (-> s3-0 name) (-> s3-0 parts)) ;; this buffer holds the file for the rec + (not (-> obj buffer s2-0 frame-lock)) ;; and nothing has frame-locked this buffer ) + ;; so we frame lock it to prevent it from being kicked out (set! (-> obj buffer s2-0 frame-lock) #t) + ;; remember what buffer (set! (-> s3-0 buf2) (-> obj buffer s2-0)) + ;; update owner and priority. (set! (-> obj buffer s2-0 pending-load-file-owner) (-> s3-0 owner)) (set! (-> obj buffer s2-0 load-file-owner) (-> s3-0 owner)) (set! (-> obj buffer s2-0 pending-load-file-priority) (-> s3-0 priority)) @@ -584,18 +611,25 @@ (label cfg-24) ) + ;; preload recs + ;; iterate over recs (dotimes (s4-1 2) (let ((s3-1 (-> obj rec s4-1))) + ;; rec wants to load something, but doesn't have a buffer already (when (and (-> s3-1 name) (not (-> s3-1 buf2))) + ;; skip if we aren't preloading, or have a positive priority. (if (and (not *preload-spool-anims*) (>= (-> s3-1 priority) 0.0)) ;; not in use, move on (goto cfg-46) ) + ;; search for a buffer for preloading (dotimes (s2-1 2) + ;; can't steal one that's already assigned (when (not (-> obj buffer s2-1 frame-lock)) + ;; do the assignment! (set! (-> obj buffer s2-1 frame-lock) #t) - (want-file (-> obj buffer s2-1) (-> s3-1 name) (-> s3-1 parts) (-> s3-1 owner) (-> s3-1 priority)) - (set! (-> s3-1 index) (the-as int (-> obj buffer s2-1))) + (set-pending-file (-> obj buffer s2-1) (-> s3-1 name) (-> s3-1 parts) (-> s3-1 owner) (-> s3-1 priority)) + (set! (-> s3-1 buf2) (-> obj buffer s2-1)) (goto cfg-46) ) ) @@ -604,18 +638,20 @@ (label cfg-46) ) + ;; this part is a bit confusing, but I think it basically kicks out the lowest priority thing. (when (not (-> obj reserve-buffer)) - (let ((s4-2 (-> obj rec 0 buf1))) + (let ((s4-2 (-> obj rec 0 buf2))) ;; top priority buffer (if (and s4-2 (-> s4-2 locked?) (not (string= (-> s4-2 pending-load-file) "reserved")) (not (string= (-> s4-2 other pending-load-file) "reserved")) ) - (want-file (-> s4-2 other) (the-as string #f) -1 (the-as handle #f) SPOOL_PRIORITY_LOWEST) + (set-pending-file (-> s4-2 other) (the-as string #f) -1 (the-as handle #f) SPOOL_PRIORITY_LOWEST) ) ) ) + ;; update the buffers (dotimes (s4-3 2) (update (-> obj buffer s4-3)) ) @@ -686,7 +722,7 @@ (set! (-> obj reserve-buffer-count) 0) ) ((= (-> obj reserve-buffer heap) arg0) - (want-file (-> obj reserve-buffer) (the-as string #f) -1 (the-as handle #f) SPOOL_PRIORITY_LOWEST) + (set-pending-file (-> obj reserve-buffer) (the-as string #f) -1 (the-as handle #f) SPOOL_PRIORITY_LOWEST) (update (-> obj reserve-buffer)) (set! (-> obj reserve-buffer-count) 0) ) diff --git a/goal_src/levels/beach/beach-part.gc b/goal_src/levels/beach/beach-part.gc index ff0e8a2d7a..f5ee448ee7 100644 --- a/goal_src/levels/beach/beach-part.gc +++ b/goal_src/levels/beach/beach-part.gc @@ -7,6 +7,7 @@ ;; DECOMP BEGINS +;; definition of type beach-part (deftype beach-part (part-spawner) () :heap-base #x60 @@ -15,7 +16,6 @@ :flag-assert #x15006000d0 ) - (set! (-> *part-id-table* 666) (new 'static 'sparticle-launcher @@ -857,6 +857,7 @@ ) ) +;; definition for symbol sound-beach-waterfall, type sound-spec (define sound-beach-waterfall (new 'static 'sound-spec @@ -1014,7 +1015,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -1117,7 +1118,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.4)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) diff --git a/goal_src/levels/citadel/citadel-part.gc b/goal_src/levels/citadel/citadel-part.gc index cf32eba785..339a4b4de8 100644 --- a/goal_src/levels/citadel/citadel-part.gc +++ b/goal_src/levels/citadel/citadel-part.gc @@ -16,6 +16,7 @@ ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 685) (new 'static 'sparticle-launch-group @@ -34,6 +35,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2880) (new 'static 'sparticle-launcher @@ -71,6 +73,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2881) (new 'static 'sparticle-launcher @@ -82,6 +85,7 @@ ) ) +;; definition for function check-drop-level-firehose-pops (defun check-drop-level-firehose-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -110,6 +114,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2883) (new 'static 'sparticle-launcher @@ -132,6 +137,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2882) (new 'static 'sparticle-launcher @@ -160,6 +166,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2879) (new 'static 'sparticle-launcher @@ -184,6 +191,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2541) (new 'static 'sparticle-launcher @@ -207,6 +215,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 599) (new 'static 'sparticle-launch-group @@ -245,6 +254,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 600) (new 'static 'sparticle-launch-group @@ -288,6 +298,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2411) (new 'static 'sparticle-launcher @@ -310,6 +321,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2407) (new 'static 'sparticle-launcher @@ -341,6 +353,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2408) (new 'static 'sparticle-launcher @@ -368,6 +381,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2409) (new 'static 'sparticle-launcher @@ -395,6 +409,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2410) (new 'static 'sparticle-launcher @@ -422,6 +437,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2413) (new 'static 'sparticle-launcher @@ -445,6 +461,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2414) (new 'static 'sparticle-launcher @@ -464,6 +481,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2412) (new 'static 'sparticle-launcher @@ -495,6 +513,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2415) (new 'static 'sparticle-launcher @@ -508,6 +527,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2416) (new 'static 'sparticle-launcher @@ -519,6 +539,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 598) (new 'static 'sparticle-launch-group @@ -538,6 +559,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2424) (new 'static 'sparticle-launcher @@ -572,6 +594,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2427) (new 'static 'sparticle-launcher @@ -586,6 +609,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2426) (new 'static 'sparticle-launcher @@ -613,6 +637,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2423) (new 'static 'sparticle-launcher @@ -638,6 +663,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2425) (new 'static 'sparticle-launcher @@ -672,6 +698,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 597) (new 'static 'sparticle-launch-group @@ -689,6 +716,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2417) (new 'static 'sparticle-launcher @@ -723,6 +751,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2418) (new 'static 'sparticle-launcher @@ -748,6 +777,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2419) (new 'static 'sparticle-launcher @@ -759,6 +789,8 @@ ) ) +;; definition for function birth-func-random-rot +;; INFO: Return type mismatch int vs none. (defun birth-func-random-rot ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -839,6 +871,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 601) (new 'static 'sparticle-launch-group @@ -856,6 +889,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2420) (new 'static 'sparticle-launcher @@ -866,7 +900,7 @@ (sp-flt spt-num 4.0) (sp-flt spt-y (meters 23.0)) (sp-rnd-flt spt-scale-x (meters 6.0) (meters 6.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-scale-y (meters 31.0)) (sp-rnd-flt spt-r 24.0 32.0 1.0) (sp-flt spt-g 0.0) @@ -883,6 +917,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2421) (new 'static 'sparticle-launcher @@ -898,6 +933,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2422) (new 'static 'sparticle-launcher @@ -911,6 +947,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 596) (new 'static 'sparticle-launch-group @@ -963,6 +1000,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2434) (new 'static 'sparticle-launcher @@ -974,7 +1012,7 @@ (sp-flt spt-y (meters 1.0025)) (sp-flt spt-z 9420.8) (sp-flt spt-scale-x (meters 4.1)) - (sp-int spt-rot-x 1179997525) + (sp-flt spt-rot-x 13653.333) (sp-flt spt-rot-y (degrees -80.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -989,6 +1027,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2433) (new 'static 'sparticle-launcher @@ -1000,7 +1039,7 @@ (sp-flt spt-y (meters 3.9)) (sp-flt spt-z 9420.8) (sp-flt spt-scale-x (meters 4.1)) - (sp-int spt-rot-x 1184191829) + (sp-flt spt-rot-x 19114.666) (sp-flt spt-rot-y (degrees -80.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1015,6 +1054,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2432) (new 'static 'sparticle-launcher @@ -1026,7 +1066,7 @@ (sp-flt spt-y (meters 3.2897)) (sp-flt spt-z 10178.56) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1184191829) + (sp-flt spt-rot-x 19114.666) (sp-flt spt-rot-y (degrees 67.0)) (sp-flt spt-scale-y (meters 2.9)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1041,6 +1081,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2431) (new 'static 'sparticle-launcher @@ -1052,7 +1093,7 @@ (sp-flt spt-y (meters 0.8025)) (sp-flt spt-z 9830.4) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1179997525) + (sp-flt spt-rot-x 13653.333) (sp-flt spt-rot-y (degrees 67.0)) (sp-flt spt-scale-y (meters 2.25)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1067,6 +1108,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2430) (new 'static 'sparticle-launcher @@ -1078,7 +1120,7 @@ (sp-flt spt-y (meters 0.8025)) (sp-flt spt-z 11468.8) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1179997525) + (sp-flt spt-rot-x 13653.333) (sp-flt spt-rot-y (degrees 10.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1092,6 +1134,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2429) (new 'static 'sparticle-launcher @@ -1103,7 +1146,7 @@ (sp-flt spt-y (meters 3.7)) (sp-flt spt-z 11468.8) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1184191829) + (sp-flt spt-rot-x 19114.666) (sp-flt spt-rot-y (degrees 10.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1117,6 +1160,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2438) (new 'static 'sparticle-launcher @@ -1136,6 +1180,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2428) (new 'static 'sparticle-launcher @@ -1167,6 +1212,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2439) (new 'static 'sparticle-launcher @@ -1180,6 +1226,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2440) (new 'static 'sparticle-launcher @@ -1191,6 +1238,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2437) (new 'static 'sparticle-launcher @@ -1216,6 +1264,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2435) (new 'static 'sparticle-launcher @@ -1242,6 +1291,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2436) (new 'static 'sparticle-launcher @@ -1268,6 +1318,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 602) (new 'static 'sparticle-launch-group @@ -1286,6 +1337,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2442) (new 'static 'sparticle-launcher @@ -1324,6 +1376,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2443) (new 'static 'sparticle-launcher @@ -1339,6 +1392,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2441) (new 'static 'sparticle-launcher @@ -1373,6 +1427,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 603) (new 'static 'sparticle-launch-group @@ -1413,6 +1468,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 607) (new 'static 'sparticle-launch-group @@ -1429,6 +1485,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2451) (new 'static 'sparticle-launcher @@ -1437,7 +1494,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees 25.000002) (degrees 20.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -1453,6 +1510,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2447) (new 'static 'sparticle-launcher @@ -1479,6 +1537,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2444) (new 'static 'sparticle-launcher @@ -1507,6 +1566,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2445) (new 'static 'sparticle-launcher @@ -1532,6 +1592,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2446) (new 'static 'sparticle-launcher @@ -1557,6 +1618,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2448) (new 'static 'sparticle-launcher @@ -1583,6 +1645,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2450) (new 'static 'sparticle-launcher @@ -1609,6 +1672,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2449) (new 'static 'sparticle-launcher @@ -1631,6 +1695,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 604) (new 'static 'sparticle-launch-group @@ -1672,6 +1737,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 608) (new 'static 'sparticle-launch-group @@ -1688,6 +1754,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2458) (new 'static 'sparticle-launcher @@ -1696,7 +1763,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 68.0)) (sp-copy-from-other spt-scale-y -4) @@ -1712,6 +1779,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2454) (new 'static 'sparticle-launcher @@ -1737,6 +1805,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2452) (new 'static 'sparticle-launcher @@ -1765,6 +1834,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2453) (new 'static 'sparticle-launcher @@ -1795,6 +1865,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2455) (new 'static 'sparticle-launcher @@ -1821,6 +1892,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2457) (new 'static 'sparticle-launcher @@ -1846,6 +1918,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2456) (new 'static 'sparticle-launcher @@ -1868,6 +1941,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 605) (new 'static 'sparticle-launch-group @@ -1912,6 +1986,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 609) (new 'static 'sparticle-launch-group @@ -1928,6 +2003,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2465) (new 'static 'sparticle-launcher @@ -1936,7 +2012,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 115.0)) (sp-copy-from-other spt-scale-y -4) @@ -1952,6 +2028,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2461) (new 'static 'sparticle-launcher @@ -1978,6 +2055,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2459) (new 'static 'sparticle-launcher @@ -2006,6 +2084,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2460) (new 'static 'sparticle-launcher @@ -2031,6 +2110,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2462) (new 'static 'sparticle-launcher @@ -2057,6 +2137,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2464) (new 'static 'sparticle-launcher @@ -2083,6 +2164,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2463) (new 'static 'sparticle-launcher @@ -2105,6 +2187,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 606) (new 'static 'sparticle-launch-group @@ -2149,6 +2232,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 610) (new 'static 'sparticle-launch-group @@ -2165,6 +2249,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2472) (new 'static 'sparticle-launcher @@ -2173,7 +2258,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -2189,6 +2274,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2468) (new 'static 'sparticle-launcher @@ -2215,6 +2301,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2466) (new 'static 'sparticle-launcher @@ -2243,6 +2330,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2467) (new 'static 'sparticle-launcher @@ -2267,6 +2355,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2469) (new 'static 'sparticle-launcher @@ -2293,6 +2382,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2471) (new 'static 'sparticle-launcher @@ -2319,6 +2409,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2470) (new 'static 'sparticle-launcher @@ -2341,6 +2432,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2473) (new 'static 'sparticle-launcher @@ -2362,6 +2454,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 662) (new 'static 'sparticle-launch-group @@ -2548,6 +2641,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2692) (new 'static 'sparticle-launcher @@ -2557,7 +2651,7 @@ (sp-flt spt-num 0.5) (sp-flt spt-x (meters 0.0)) (sp-flt spt-scale-x (meters 5.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-z (degrees 82.0)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 32.0 1.0) @@ -2571,6 +2665,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2691) (new 'static 'sparticle-launcher @@ -2592,6 +2687,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2688) (new 'static 'sparticle-launcher @@ -2621,6 +2717,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2689) (new 'static 'sparticle-launcher @@ -2644,6 +2741,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2690) (new 'static 'sparticle-launcher @@ -2664,6 +2762,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2687) (new 'static 'sparticle-launcher @@ -2694,6 +2793,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 683) (new 'static 'sparticle-launch-group @@ -2715,6 +2815,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2837) (new 'static 'sparticle-launcher @@ -2739,6 +2840,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2838) (new 'static 'sparticle-launcher @@ -2750,6 +2852,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2832) (new 'static 'sparticle-launcher @@ -2778,6 +2881,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2839) (new 'static 'sparticle-launcher @@ -2789,6 +2893,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2834) (new 'static 'sparticle-launcher @@ -2818,6 +2923,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2835) (new 'static 'sparticle-launcher @@ -2847,6 +2953,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2836) (new 'static 'sparticle-launcher @@ -2876,6 +2983,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2833) (new 'static 'sparticle-launcher diff --git a/goal_src/levels/finalboss/robotboss-part.gc b/goal_src/levels/finalboss/robotboss-part.gc index d0df3cf969..f36383bce4 100644 --- a/goal_src/levels/finalboss/robotboss-part.gc +++ b/goal_src/levels/finalboss/robotboss-part.gc @@ -5,8 +5,7 @@ ;; name in dgo: robotboss-part ;; dgos: FIN, L1 -;; DECOMP BEGINS - +;; failed to figure out what this is: (set! (-> *part-group-id-table* 636) (new 'static 'sparticle-launch-group @@ -48,6 +47,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 637) (new 'static 'sparticle-launch-group @@ -69,6 +69,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2681) (new 'static 'sparticle-launcher @@ -96,6 +97,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2683) (new 'static 'sparticle-launcher @@ -135,6 +137,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2684) (new 'static 'sparticle-launcher @@ -146,6 +149,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2549) (new 'static 'sparticle-launcher @@ -168,6 +172,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2682) (new 'static 'sparticle-launcher @@ -200,6 +205,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2545) (new 'static 'sparticle-launcher @@ -226,6 +232,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2542) (new 'static 'sparticle-launcher @@ -254,6 +261,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2543) (new 'static 'sparticle-launcher @@ -279,6 +287,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2544) (new 'static 'sparticle-launcher @@ -304,6 +313,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2546) (new 'static 'sparticle-launcher @@ -330,6 +340,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2548) (new 'static 'sparticle-launcher @@ -356,6 +367,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2547) (new 'static 'sparticle-launcher @@ -378,6 +390,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2680) (new 'static 'sparticle-launcher @@ -399,6 +412,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 644) (new 'static 'sparticle-launch-group @@ -418,6 +432,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2592) (new 'static 'sparticle-launcher @@ -452,6 +467,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2595) (new 'static 'sparticle-launcher @@ -466,6 +482,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2594) (new 'static 'sparticle-launcher @@ -493,6 +510,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2591) (new 'static 'sparticle-launcher @@ -515,6 +533,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2593) (new 'static 'sparticle-launcher @@ -548,6 +567,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2596) (new 'static 'sparticle-launcher @@ -563,6 +583,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2597) (new 'static 'sparticle-launcher @@ -579,6 +600,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2598) (new 'static 'sparticle-launcher @@ -592,6 +614,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 645) (new 'static 'sparticle-launch-group @@ -612,6 +635,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2686) (new 'static 'sparticle-launcher @@ -634,6 +658,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2599) (new 'static 'sparticle-launcher @@ -666,6 +691,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2685) (new 'static 'sparticle-launcher @@ -700,6 +726,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 638) (new 'static 'sparticle-launch-group @@ -717,6 +744,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2600) (new 'static 'sparticle-launcher @@ -739,6 +767,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2602) (new 'static 'sparticle-launcher @@ -770,6 +799,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 639) (new 'static 'sparticle-launch-group @@ -803,6 +833,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2755) (new 'static 'sparticle-launcher @@ -825,6 +856,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2752) (new 'static 'sparticle-launcher @@ -851,6 +883,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2753) (new 'static 'sparticle-launcher @@ -874,6 +907,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2754) (new 'static 'sparticle-launcher @@ -898,6 +932,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 663) (new 'static 'sparticle-launch-group @@ -917,6 +952,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2759) (new 'static 'sparticle-launcher @@ -940,6 +976,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2758) (new 'static 'sparticle-launcher @@ -966,6 +1003,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2757) (new 'static 'sparticle-launcher @@ -992,6 +1030,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2756) (new 'static 'sparticle-launcher @@ -1018,6 +1057,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 619) (new 'static 'sparticle-launch-group @@ -1055,6 +1095,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2503) (new 'static 'sparticle-launcher @@ -1086,6 +1127,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2499) (new 'static 'sparticle-launcher @@ -1113,6 +1155,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2506) (new 'static 'sparticle-launcher @@ -1126,6 +1169,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2502) (new 'static 'sparticle-launcher @@ -1160,6 +1204,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2507) (new 'static 'sparticle-launcher @@ -1174,6 +1219,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2505) (new 'static 'sparticle-launcher @@ -1201,6 +1247,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2501) (new 'static 'sparticle-launcher @@ -1224,6 +1271,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2504) (new 'static 'sparticle-launcher @@ -1257,6 +1305,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2508) (new 'static 'sparticle-launcher @@ -1272,6 +1321,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2509) (new 'static 'sparticle-launcher @@ -1288,6 +1338,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2510) (new 'static 'sparticle-launcher @@ -1301,6 +1352,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2500) (new 'static 'sparticle-launcher @@ -1327,6 +1379,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2511) (new 'static 'sparticle-launcher @@ -1338,6 +1391,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 640) (new 'static 'sparticle-launch-group @@ -1357,6 +1411,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2800) (new 'static 'sparticle-launcher @@ -1385,6 +1440,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2803) (new 'static 'sparticle-launcher @@ -1396,6 +1452,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2801) (new 'static 'sparticle-launcher @@ -1423,6 +1480,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2802) (new 'static 'sparticle-launcher @@ -1448,6 +1506,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2799) (new 'static 'sparticle-launcher @@ -1473,6 +1532,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 664) (new 'static 'sparticle-launch-group @@ -1537,6 +1597,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2769) (new 'static 'sparticle-launcher @@ -1557,6 +1618,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2766) (new 'static 'sparticle-launcher @@ -1586,6 +1648,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2770) (new 'static 'sparticle-launcher @@ -1604,6 +1667,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2767) (new 'static 'sparticle-launcher @@ -1635,6 +1699,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2771) (new 'static 'sparticle-launcher @@ -1648,6 +1713,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2768) (new 'static 'sparticle-launcher @@ -1682,6 +1748,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 646) (new 'static 'sparticle-launch-group @@ -1699,6 +1766,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2699) (new 'static 'sparticle-launcher @@ -1727,6 +1795,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2703) (new 'static 'sparticle-launcher @@ -1738,6 +1807,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2700) (new 'static 'sparticle-launcher @@ -1765,6 +1835,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2701) (new 'static 'sparticle-launcher @@ -1789,6 +1860,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 641) (new 'static 'sparticle-launch-group @@ -1808,6 +1880,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2806) (new 'static 'sparticle-launcher @@ -1836,6 +1909,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2809) (new 'static 'sparticle-launcher @@ -1847,6 +1921,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2807) (new 'static 'sparticle-launcher @@ -1874,6 +1949,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2808) (new 'static 'sparticle-launcher @@ -1899,6 +1975,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2805) (new 'static 'sparticle-launcher @@ -1924,6 +2001,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 665) (new 'static 'sparticle-launch-group @@ -1942,6 +2020,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2710) (new 'static 'sparticle-launcher @@ -1964,6 +2043,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2711) (new 'static 'sparticle-launcher @@ -1986,6 +2066,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2709) (new 'static 'sparticle-launcher @@ -2015,6 +2096,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 647) (new 'static 'sparticle-launch-group @@ -2033,6 +2115,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2714) (new 'static 'sparticle-launcher @@ -2061,6 +2144,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2712) (new 'static 'sparticle-launcher @@ -2089,6 +2173,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2713) (new 'static 'sparticle-launcher @@ -2119,6 +2204,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 648) (new 'static 'sparticle-launch-group @@ -2135,6 +2221,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2626) (new 'static 'sparticle-launcher @@ -2157,6 +2244,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 679) (new 'static 'sparticle-launch-group @@ -2171,6 +2259,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2772) (new 'static 'sparticle-launcher @@ -2195,6 +2284,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 649) (new 'static 'sparticle-launch-group @@ -2214,6 +2304,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2630) (new 'static 'sparticle-launcher @@ -2248,6 +2339,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2633) (new 'static 'sparticle-launcher @@ -2262,6 +2354,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2632) (new 'static 'sparticle-launcher @@ -2289,6 +2382,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2629) (new 'static 'sparticle-launcher @@ -2311,6 +2405,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2631) (new 'static 'sparticle-launcher @@ -2344,6 +2439,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2634) (new 'static 'sparticle-launcher @@ -2359,6 +2455,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2635) (new 'static 'sparticle-launcher @@ -2375,6 +2472,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2636) (new 'static 'sparticle-launcher @@ -2388,6 +2486,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 650) (new 'static 'sparticle-launch-group @@ -2408,6 +2507,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2777) (new 'static 'sparticle-launcher @@ -2430,6 +2530,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2637) (new 'static 'sparticle-launcher @@ -2459,6 +2560,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2776) (new 'static 'sparticle-launcher @@ -2493,6 +2595,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 642) (new 'static 'sparticle-launch-group @@ -2512,6 +2615,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2779) (new 'static 'sparticle-launcher @@ -2540,6 +2644,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2782) (new 'static 'sparticle-launcher @@ -2551,6 +2656,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2780) (new 'static 'sparticle-launcher @@ -2578,6 +2684,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2781) (new 'static 'sparticle-launcher @@ -2603,6 +2710,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2778) (new 'static 'sparticle-launcher @@ -2628,6 +2736,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 651) (new 'static 'sparticle-launch-group @@ -2646,6 +2755,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2811) (new 'static 'sparticle-launcher @@ -2674,6 +2784,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2814) (new 'static 'sparticle-launcher @@ -2685,6 +2796,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2812) (new 'static 'sparticle-launcher @@ -2712,6 +2824,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2813) (new 'static 'sparticle-launcher @@ -2736,6 +2849,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 652) (new 'static 'sparticle-launch-group @@ -2756,6 +2870,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2816) (new 'static 'sparticle-launcher @@ -2784,6 +2899,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2819) (new 'static 'sparticle-launcher @@ -2811,6 +2927,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2815) (new 'static 'sparticle-launcher @@ -2842,6 +2959,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2817) (new 'static 'sparticle-launcher @@ -2867,6 +2985,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2818) (new 'static 'sparticle-launcher @@ -2888,6 +3007,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 653) (new 'static 'sparticle-launch-group @@ -2907,6 +3027,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2649) (new 'static 'sparticle-launcher @@ -2941,6 +3062,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2652) (new 'static 'sparticle-launcher @@ -2955,6 +3077,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2651) (new 'static 'sparticle-launcher @@ -2982,6 +3105,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2648) (new 'static 'sparticle-launcher @@ -3004,6 +3128,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2650) (new 'static 'sparticle-launcher @@ -3037,6 +3162,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2653) (new 'static 'sparticle-launcher @@ -3052,6 +3178,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2654) (new 'static 'sparticle-launcher @@ -3068,6 +3195,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2655) (new 'static 'sparticle-launcher @@ -3081,6 +3209,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 654) (new 'static 'sparticle-launch-group @@ -3101,6 +3230,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2821) (new 'static 'sparticle-launcher @@ -3123,6 +3253,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2656) (new 'static 'sparticle-launcher @@ -3152,6 +3283,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2820) (new 'static 'sparticle-launcher @@ -3186,6 +3318,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 655) (new 'static 'sparticle-launch-group @@ -3200,6 +3333,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2852) (new 'static 'sparticle-launcher @@ -3221,6 +3355,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2657) (new 'static 'sparticle-launcher @@ -3250,6 +3385,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2661) (new 'static 'sparticle-launcher @@ -3261,6 +3397,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2658) (new 'static 'sparticle-launcher @@ -3289,6 +3426,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2659) (new 'static 'sparticle-launcher @@ -3312,6 +3450,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2660) (new 'static 'sparticle-launcher @@ -3335,6 +3474,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 666) (new 'static 'sparticle-launch-group @@ -3364,6 +3504,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 667) (new 'static 'sparticle-launch-group @@ -3380,6 +3521,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2723) (new 'static 'sparticle-launcher @@ -3388,7 +3530,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees 25.000002) (degrees 20.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -3404,6 +3546,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2719) (new 'static 'sparticle-launcher @@ -3430,6 +3573,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2716) (new 'static 'sparticle-launcher @@ -3458,6 +3602,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2717) (new 'static 'sparticle-launcher @@ -3483,6 +3628,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2718) (new 'static 'sparticle-launcher @@ -3508,6 +3654,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2720) (new 'static 'sparticle-launcher @@ -3534,6 +3681,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2722) (new 'static 'sparticle-launcher @@ -3560,6 +3708,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2721) (new 'static 'sparticle-launcher @@ -3582,6 +3731,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 668) (new 'static 'sparticle-launch-group @@ -3611,6 +3761,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2730) (new 'static 'sparticle-launcher @@ -3619,7 +3770,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 68.0)) (sp-copy-from-other spt-scale-y -4) @@ -3635,6 +3786,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2726) (new 'static 'sparticle-launcher @@ -3660,6 +3812,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2724) (new 'static 'sparticle-launcher @@ -3688,6 +3841,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2725) (new 'static 'sparticle-launcher @@ -3718,6 +3872,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2727) (new 'static 'sparticle-launcher @@ -3744,6 +3899,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2729) (new 'static 'sparticle-launcher @@ -3769,6 +3925,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2728) (new 'static 'sparticle-launcher @@ -3791,6 +3948,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 670) (new 'static 'sparticle-launch-group @@ -3821,6 +3979,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 671) (new 'static 'sparticle-launch-group @@ -3838,6 +3997,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2737) (new 'static 'sparticle-launcher @@ -3846,7 +4006,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 115.0)) (sp-copy-from-other spt-scale-y -4) @@ -3862,6 +4022,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2733) (new 'static 'sparticle-launcher @@ -3888,6 +4049,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2731) (new 'static 'sparticle-launcher @@ -3916,6 +4078,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2732) (new 'static 'sparticle-launcher @@ -3941,6 +4104,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2734) (new 'static 'sparticle-launcher @@ -3967,6 +4131,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2736) (new 'static 'sparticle-launcher @@ -3993,6 +4158,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2735) (new 'static 'sparticle-launcher @@ -4015,6 +4181,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 672) (new 'static 'sparticle-launch-group @@ -4045,6 +4212,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 673) (new 'static 'sparticle-launch-group @@ -4062,6 +4230,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2744) (new 'static 'sparticle-launcher @@ -4070,7 +4239,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -4086,6 +4255,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2740) (new 'static 'sparticle-launcher @@ -4112,6 +4282,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2738) (new 'static 'sparticle-launcher @@ -4140,6 +4311,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2739) (new 'static 'sparticle-launcher @@ -4164,6 +4336,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2741) (new 'static 'sparticle-launcher @@ -4190,6 +4363,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2743) (new 'static 'sparticle-launcher @@ -4216,6 +4390,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2742) (new 'static 'sparticle-launcher @@ -4238,6 +4413,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 674) (new 'static 'sparticle-launch-group @@ -4252,6 +4428,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 675) (new 'static 'sparticle-launch-group @@ -4266,6 +4443,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 676) (new 'static 'sparticle-launch-group @@ -4280,6 +4458,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 677) (new 'static 'sparticle-launch-group @@ -4294,6 +4473,7 @@ ) ) +;; failed to figure out what this is: 0 diff --git a/goal_src/levels/finalboss/sage-finalboss-part.gc b/goal_src/levels/finalboss/sage-finalboss-part.gc index 3d55f7882d..86e2312a16 100644 --- a/goal_src/levels/finalboss/sage-finalboss-part.gc +++ b/goal_src/levels/finalboss/sage-finalboss-part.gc @@ -7,6 +7,7 @@ ;; DECOMP BEGINS +;; failed to figure out what this is: (set! (-> *part-group-id-table* 682) (new 'static 'sparticle-launch-group @@ -30,6 +31,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2825) (new 'static 'sparticle-launcher @@ -52,6 +54,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2823) (new 'static 'sparticle-launcher @@ -81,6 +84,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2824) (new 'static 'sparticle-launcher @@ -106,6 +110,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2827) (new 'static 'sparticle-launcher @@ -127,6 +132,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2826) (new 'static 'sparticle-launcher @@ -157,6 +163,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2828) (new 'static 'sparticle-launcher @@ -170,6 +177,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2829) (new 'static 'sparticle-launcher @@ -181,6 +189,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 699) (new 'static 'sparticle-launch-group @@ -202,6 +211,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2921) (new 'static 'sparticle-launcher @@ -225,6 +235,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2927) (new 'static 'sparticle-launcher @@ -236,6 +247,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2924) (new 'static 'sparticle-launcher @@ -262,6 +274,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2922) (new 'static 'sparticle-launcher @@ -272,7 +285,7 @@ (sp-rnd-flt spt-x (meters 0.0) (meters 2.0) 1.0) (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-scale-y (meters 8.0) (meters 8.0) 1.0) (sp-rnd-int spt-r 0 1 128.0) @@ -289,6 +302,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2923) (new 'static 'sparticle-launcher @@ -298,7 +312,7 @@ (sp-rnd-flt spt-num 1.0 2.0 1.0) (sp-rnd-flt spt-x (meters 1.8) (meters 1.0) 1.0) (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-scale-y (meters 1.0) (meters 3.0) 1.0) (sp-rnd-int spt-r 0 1 128.0) @@ -315,6 +329,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2925) (new 'static 'sparticle-launcher @@ -345,6 +360,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2926) (new 'static 'sparticle-launcher @@ -377,6 +393,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2928) (new 'static 'sparticle-launcher @@ -388,6 +405,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 700) (new 'static 'sparticle-launch-group @@ -405,6 +423,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2930) (new 'static 'sparticle-launcher @@ -437,6 +456,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2931) (new 'static 'sparticle-launcher @@ -448,6 +468,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2929) (new 'static 'sparticle-launcher @@ -479,6 +500,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2932) (new 'static 'sparticle-launcher @@ -490,6 +512,7 @@ ) ) +;; definition for function check-drop-level-eichar-lighteco-pops (defun check-drop-level-eichar-lighteco-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -518,6 +541,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2934) (new 'static 'sparticle-launcher @@ -540,6 +564,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2933) (new 'static 'sparticle-launcher @@ -565,6 +590,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 701) (new 'static 'sparticle-launch-group @@ -579,6 +605,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2892) (new 'static 'sparticle-launcher @@ -608,6 +635,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 702) (new 'static 'sparticle-launch-group @@ -625,6 +653,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2935) (new 'static 'sparticle-launcher @@ -650,6 +679,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2893) (new 'static 'sparticle-launcher @@ -677,6 +707,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 703) (new 'static 'sparticle-launch-group @@ -697,6 +728,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2937) (new 'static 'sparticle-launcher @@ -719,6 +751,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2894) (new 'static 'sparticle-launcher @@ -751,6 +784,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2936) (new 'static 'sparticle-launcher @@ -785,6 +819,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 696) (new 'static 'sparticle-launch-group @@ -823,6 +858,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2939) (new 'static 'sparticle-launcher @@ -854,6 +890,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2938) (new 'static 'sparticle-launcher @@ -881,6 +918,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2946) (new 'static 'sparticle-launcher @@ -893,6 +931,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2945) (new 'static 'sparticle-launcher @@ -902,7 +941,7 @@ (sp-flt spt-num 6.0) (sp-flt spt-y (meters 10.0)) (sp-rnd-flt spt-scale-x (meters 8.0) (meters 60.0) 1.0) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 262144.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 192.0 32.0 1.0) @@ -920,6 +959,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2947) (new 'static 'sparticle-launcher @@ -931,6 +971,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2941) (new 'static 'sparticle-launcher @@ -960,6 +1001,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2948) (new 'static 'sparticle-launcher @@ -971,6 +1013,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2944) (new 'static 'sparticle-launcher @@ -995,6 +1038,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2940) (new 'static 'sparticle-launcher @@ -1017,6 +1061,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2942) (new 'static 'sparticle-launcher @@ -1049,6 +1094,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2943) (new 'static 'sparticle-launcher @@ -1081,6 +1127,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 704) (new 'static 'sparticle-launch-group @@ -1098,6 +1145,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2950) (new 'static 'sparticle-launcher @@ -1131,6 +1179,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2951) (new 'static 'sparticle-launcher @@ -1145,6 +1194,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2949) (new 'static 'sparticle-launcher @@ -1173,6 +1223,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 698) (new 'static 'sparticle-launch-group @@ -1195,6 +1246,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2952) (new 'static 'sparticle-launcher @@ -1205,7 +1257,7 @@ (sp-flt spt-y (meters 10.0)) (sp-flt spt-z 16384.0) (sp-flt spt-scale-x (meters 48.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -1223,6 +1275,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2959) (new 'static 'sparticle-launcher @@ -1234,6 +1287,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2953) (new 'static 'sparticle-launcher @@ -1262,6 +1316,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2954) (new 'static 'sparticle-launcher @@ -1291,6 +1346,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2955) (new 'static 'sparticle-launcher @@ -1321,6 +1377,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2956) (new 'static 'sparticle-launcher @@ -1351,6 +1408,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2957) (new 'static 'sparticle-launcher @@ -1378,6 +1436,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2960) (new 'static 'sparticle-launcher @@ -1389,6 +1448,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2958) (new 'static 'sparticle-launcher @@ -1418,6 +1478,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2961) (new 'static 'sparticle-launcher @@ -1429,6 +1490,7 @@ ) ) +;; definition for function check-drop-level-bigdoor-open-pops (defun check-drop-level-bigdoor-open-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -1457,6 +1519,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2963) (new 'static 'sparticle-launcher @@ -1479,6 +1542,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2962) (new 'static 'sparticle-launcher @@ -1504,6 +1568,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 706) (new 'static 'sparticle-launch-group @@ -1518,6 +1583,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2965) (new 'static 'sparticle-launcher @@ -1539,6 +1605,7 @@ ) ) +;; failed to figure out what this is: 0 diff --git a/goal_src/levels/flut_common/flut-part.gc b/goal_src/levels/flut_common/flut-part.gc index 5b7bb6c3b5..f89fc9adce 100644 --- a/goal_src/levels/flut_common/flut-part.gc +++ b/goal_src/levels/flut_common/flut-part.gc @@ -7,6 +7,7 @@ ;; DECOMP BEGINS +;; failed to figure out what this is: (set! (-> *part-group-id-table* 120) (new 'static 'sparticle-launch-group @@ -24,6 +25,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 746) (new 'static 'sparticle-launcher @@ -45,6 +47,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 747) (new 'static 'sparticle-launcher @@ -67,6 +70,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 748) (new 'static 'sparticle-launcher @@ -76,7 +80,7 @@ (sp-flt spt-num 1.0) (sp-rnd-flt spt-y (meters 0.75) (meters 0.1) 1.0) (sp-flt spt-scale-x (meters 0.0)) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 2730.6667 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-flt spt-r 16.0) @@ -96,6 +100,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 121) (new 'static 'sparticle-launch-group @@ -112,6 +117,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 749) (new 'static 'sparticle-launcher @@ -146,6 +152,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 750) (new 'static 'sparticle-launcher diff --git a/goal_src/levels/racer_common/racer-part.gc b/goal_src/levels/racer_common/racer-part.gc index 364745f49d..a8236afc42 100644 --- a/goal_src/levels/racer_common/racer-part.gc +++ b/goal_src/levels/racer_common/racer-part.gc @@ -7,6 +7,7 @@ ;; DECOMP BEGINS +;; definition for function part-hud-racer-speed-func (defun part-hud-racer-speed-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -77,6 +78,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 108) (new 'static 'sparticle-launch-group @@ -93,6 +95,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 109) (new 'static 'sparticle-launch-group @@ -109,6 +112,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 110) (new 'static 'sparticle-launch-group @@ -125,6 +129,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 741) (new 'static 'sparticle-launcher @@ -146,6 +151,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 740) (new 'static 'sparticle-launcher @@ -169,6 +175,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1999) (new 'static 'sparticle-launcher @@ -190,6 +197,7 @@ ) ) +;; definition for function part-hud-racer-heat-func (defun part-hud-racer-heat-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -216,6 +224,7 @@ ) ) +;; definition for function zoomer-heat-slice-color (defun zoomer-heat-slice-color ((arg0 matrix) (arg1 float)) (cond ((< arg1 0.6) @@ -253,6 +262,7 @@ ) ) +;; definition for function part-hud-zoomer-heat-slice-01-func (defun part-hud-zoomer-heat-slice-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -262,6 +272,7 @@ ) ) +;; definition for function part-hud-zoomer-heat-slice-02-func (defun part-hud-zoomer-heat-slice-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -274,6 +285,7 @@ ) ) +;; definition for function part-hud-zoomer-heat-slice-03-func (defun part-hud-zoomer-heat-slice-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -286,6 +298,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 111) (new 'static 'sparticle-launch-group @@ -302,6 +315,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 112) (new 'static 'sparticle-launch-group @@ -318,6 +332,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 113) (new 'static 'sparticle-launch-group @@ -334,6 +349,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 114) (new 'static 'sparticle-launch-group @@ -353,6 +369,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 739) (new 'static 'sparticle-launcher @@ -374,6 +391,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 737) (new 'static 'sparticle-launcher @@ -395,6 +413,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 738) (new 'static 'sparticle-launcher @@ -417,6 +436,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2010) (new 'static 'sparticle-launcher @@ -438,6 +458,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2011) (new 'static 'sparticle-launcher @@ -459,6 +480,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2012) (new 'static 'sparticle-launcher @@ -480,6 +502,7 @@ ) ) +;; definition of type hud-bike-heat (deftype hud-bike-heat (hud) () :heap-base #xb0 @@ -488,7 +511,16 @@ :flag-assert #x1b00b00118 ) +;; definition for method 3 of type hud-bike-heat +(defmethod inspect hud-bike-heat ((obj hud-bike-heat)) + (let ((t9-0 (method-of-type hud inspect))) + (t9-0 obj) + ) + obj + ) +;; definition for method 19 of type hud-bike-heat +;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-19 hud-bike-heat ((obj hud-bike-heat)) (if *target* (dummy-16 obj (the int (-> *target* racer heat)) 0) @@ -497,6 +529,8 @@ (none) ) +;; definition for method 20 of type hud-bike-heat +;; INFO: Return type mismatch int vs none. (defmethod init-particles! hud-bike-heat ((obj hud-bike-heat)) (with-pp (push-setting! @@ -576,6 +610,7 @@ ) ) +;; definition of type hud-bike-speed (deftype hud-bike-speed (hud) () :heap-base #xb0 @@ -584,7 +619,16 @@ :flag-assert #x1b00b00118 ) +;; definition for method 3 of type hud-bike-speed +(defmethod inspect hud-bike-speed ((obj hud-bike-speed)) + (let ((t9-0 (method-of-type hud inspect))) + (t9-0 obj) + ) + obj + ) +;; definition for method 19 of type hud-bike-speed +;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-19 hud-bike-speed ((obj hud-bike-speed)) (if *target* (dummy-16 obj (the int (-> *target* control unknown-float01)) 0) @@ -593,6 +637,8 @@ (none) ) +;; definition for method 20 of type hud-bike-speed +;; INFO: Return type mismatch int vs none. (defmethod init-particles! hud-bike-speed ((obj hud-bike-speed)) (with-pp (push-setting! @@ -658,6 +704,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 115) (new 'static 'sparticle-launch-group @@ -675,6 +722,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 742) (new 'static 'sparticle-launcher @@ -696,6 +744,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 743) (new 'static 'sparticle-launcher @@ -718,6 +767,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 744) (new 'static 'sparticle-launcher @@ -727,7 +777,7 @@ (sp-flt spt-num 1.0) (sp-rnd-flt spt-y (meters 0.75) (meters 0.1) 1.0) (sp-flt spt-scale-x (meters 0.0)) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 2730.6667 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-flt spt-r 16.0) @@ -747,6 +797,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2211) (new 'static 'sparticle-launcher @@ -775,6 +826,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2207) (new 'static 'sparticle-launcher @@ -805,6 +857,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2221) (new 'static 'sparticle-launcher @@ -833,6 +886,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2208) (new 'static 'sparticle-launcher @@ -863,6 +917,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2218) (new 'static 'sparticle-launcher @@ -892,6 +947,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2215) (new 'static 'sparticle-launcher @@ -922,6 +978,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2216) (new 'static 'sparticle-launcher @@ -952,6 +1009,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2831) (new 'static 'sparticle-launcher @@ -982,6 +1040,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2214) (new 'static 'sparticle-launcher @@ -1012,6 +1071,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2220) (new 'static 'sparticle-launcher @@ -1041,6 +1101,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2213) (new 'static 'sparticle-launcher @@ -1071,6 +1132,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2275) (new 'static 'sparticle-launcher @@ -1101,6 +1163,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2276) (new 'static 'sparticle-launcher @@ -1129,6 +1192,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2212) (new 'static 'sparticle-launcher @@ -1138,7 +1202,7 @@ (sp-func spt-birth-func 'birth-func-vector-orient) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 4.0) (meters -0.5) 1.0) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 65536.0 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-flt spt-rot-z (degrees 90.0)) (sp-copy-from-other spt-scale-y -4) @@ -1154,6 +1218,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2225) (new 'static 'sparticle-launcher @@ -1189,6 +1254,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2226) (new 'static 'sparticle-launcher @@ -1224,6 +1290,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2227) (new 'static 'sparticle-launcher @@ -1253,6 +1320,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2277) (new 'static 'sparticle-launcher @@ -1269,6 +1337,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2278) (new 'static 'sparticle-launcher @@ -1283,6 +1352,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 116) (new 'static 'sparticle-launch-group @@ -1302,6 +1372,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2280) (new 'static 'sparticle-launcher @@ -1335,6 +1406,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2283) (new 'static 'sparticle-launcher @@ -1349,6 +1421,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2282) (new 'static 'sparticle-launcher @@ -1375,6 +1448,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2279) (new 'static 'sparticle-launcher @@ -1397,6 +1471,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2281) (new 'static 'sparticle-launcher @@ -1431,6 +1506,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2284) (new 'static 'sparticle-launcher @@ -1446,6 +1522,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2285) (new 'static 'sparticle-launcher @@ -1462,6 +1539,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2286) (new 'static 'sparticle-launcher @@ -1475,6 +1553,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2229) (new 'static 'sparticle-launcher diff --git a/goal_src/levels/swamp/swamp-part.gc b/goal_src/levels/swamp/swamp-part.gc index 97e01e5554..f211f9ea9e 100644 --- a/goal_src/levels/swamp/swamp-part.gc +++ b/goal_src/levels/swamp/swamp-part.gc @@ -15,7 +15,7 @@ :flag-assert #x15006000d0 ) - +;; failed to figure out what this is: (set! (-> *part-group-id-table* 302) (new 'static 'sparticle-launch-group @@ -107,6 +107,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2305) (new 'static 'sparticle-launcher @@ -130,6 +131,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2308) (new 'static 'sparticle-launcher @@ -143,6 +145,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2306) (new 'static 'sparticle-launcher @@ -166,6 +169,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2307) (new 'static 'sparticle-launcher @@ -189,6 +193,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2303) (new 'static 'sparticle-launcher @@ -217,6 +222,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2304) (new 'static 'sparticle-launcher @@ -226,7 +232,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 3.0) (sp-flt spt-scale-x (meters 0.075)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.075)) (sp-flt spt-r 64.0) (sp-flt spt-g 128.0) @@ -239,6 +245,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1384) (new 'static 'sparticle-launcher @@ -266,6 +273,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1385) (new 'static 'sparticle-launcher @@ -285,6 +293,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1386) (new 'static 'sparticle-launcher @@ -298,6 +307,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1383) (new 'static 'sparticle-launcher @@ -325,6 +335,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1375) (new 'static 'sparticle-launcher @@ -355,6 +366,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1387) (new 'static 'sparticle-launcher @@ -370,6 +382,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1376) (new 'static 'sparticle-launcher @@ -379,7 +392,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 4.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x -978670933) + (sp-rnd-flt spt-rot-x -5461.3335 43690.668 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-flt spt-scale-y (meters 1.7)) (sp-flt spt-r 128.0) @@ -393,6 +406,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1377) (new 'static 'sparticle-launcher @@ -430,6 +444,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1378) (new 'static 'sparticle-launcher @@ -464,6 +479,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1379) (new 'static 'sparticle-launcher @@ -501,6 +517,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1380) (new 'static 'sparticle-launcher @@ -535,6 +552,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1381) (new 'static 'sparticle-launcher @@ -571,6 +589,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1382) (new 'static 'sparticle-launcher @@ -607,6 +626,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 303) (new 'static 'sparticle-launch-group @@ -672,6 +692,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1390) (new 'static 'sparticle-launcher @@ -692,6 +713,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1388) (new 'static 'sparticle-launcher @@ -719,6 +741,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1391) (new 'static 'sparticle-launcher @@ -732,6 +755,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1392) (new 'static 'sparticle-launcher @@ -746,6 +770,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1389) (new 'static 'sparticle-launcher @@ -769,6 +794,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1393) (new 'static 'sparticle-launcher @@ -783,6 +809,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 304) (new 'static 'sparticle-launch-group @@ -830,6 +857,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1394) (new 'static 'sparticle-launcher @@ -851,6 +879,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 305) (new 'static 'sparticle-launch-group @@ -915,6 +944,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1395) (new 'static 'sparticle-launcher @@ -936,6 +966,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 306) (new 'static 'sparticle-launch-group @@ -1000,6 +1031,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1396) (new 'static 'sparticle-launcher @@ -1021,6 +1053,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 307) (new 'static 'sparticle-launch-group @@ -1054,6 +1087,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1397) (new 'static 'sparticle-launcher @@ -1075,6 +1109,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 308) (new 'static 'sparticle-launch-group @@ -1158,6 +1193,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1398) (new 'static 'sparticle-launcher @@ -1179,6 +1215,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1399) (new 'static 'sparticle-launcher @@ -1200,6 +1237,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 309) (new 'static 'sparticle-launch-group @@ -1285,6 +1323,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1400) (new 'static 'sparticle-launcher @@ -1306,6 +1345,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1401) (new 'static 'sparticle-launcher @@ -1327,6 +1367,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1402) (new 'static 'sparticle-launcher @@ -1348,6 +1389,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1403) (new 'static 'sparticle-launcher @@ -1370,6 +1412,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 310) (new 'static 'sparticle-launch-group @@ -1422,6 +1465,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1404) (new 'static 'sparticle-launcher @@ -1443,6 +1487,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 311) (new 'static 'sparticle-launch-group @@ -1482,6 +1527,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1405) (new 'static 'sparticle-launcher @@ -1503,6 +1549,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 312) (new 'static 'sparticle-launch-group @@ -1555,6 +1602,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1406) (new 'static 'sparticle-launcher @@ -1576,6 +1624,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 313) (new 'static 'sparticle-launch-group @@ -1628,6 +1677,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1407) (new 'static 'sparticle-launcher @@ -1649,6 +1699,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 314) (new 'static 'sparticle-launch-group @@ -1688,6 +1739,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1408) (new 'static 'sparticle-launcher @@ -1709,6 +1761,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 315) (new 'static 'sparticle-launch-group @@ -1748,6 +1801,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1409) (new 'static 'sparticle-launcher @@ -1769,6 +1823,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 316) (new 'static 'sparticle-launch-group @@ -1821,6 +1876,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1410) (new 'static 'sparticle-launcher @@ -1842,6 +1898,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 317) (new 'static 'sparticle-launch-group @@ -1863,6 +1920,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1416) (new 'static 'sparticle-launcher @@ -1887,6 +1945,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1417) (new 'static 'sparticle-launcher @@ -1898,6 +1957,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1411) (new 'static 'sparticle-launcher @@ -1926,6 +1986,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1418) (new 'static 'sparticle-launcher @@ -1937,6 +1998,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1413) (new 'static 'sparticle-launcher @@ -1966,6 +2028,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1414) (new 'static 'sparticle-launcher @@ -1995,6 +2058,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1415) (new 'static 'sparticle-launcher @@ -2024,6 +2088,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1412) (new 'static 'sparticle-launcher diff --git a/goal_src/levels/training/training-part.gc b/goal_src/levels/training/training-part.gc index 2bde0b4e4c..aae6b7fcc2 100644 --- a/goal_src/levels/training/training-part.gc +++ b/goal_src/levels/training/training-part.gc @@ -15,7 +15,7 @@ :flag-assert #x15006000d0 ) - +;; failed to figure out what this is: (set! (-> *part-group-id-table* 146) (new 'static 'sparticle-launch-group @@ -58,6 +58,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 147) (new 'static 'sparticle-launch-group @@ -100,6 +101,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 149) (new 'static 'sparticle-launch-group @@ -134,6 +136,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 148) (new 'static 'sparticle-launch-group @@ -176,6 +179,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 752) (new 'static 'sparticle-launcher @@ -239,6 +243,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 761) (new 'static 'sparticle-launcher @@ -251,6 +256,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 753) (new 'static 'sparticle-launcher @@ -289,6 +295,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 762) (new 'static 'sparticle-launcher @@ -300,6 +307,7 @@ ) ) +;; definition for function check-drop-level-training-mist (defun check-drop-level-training-mist ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -310,6 +318,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 754) (new 'static 'sparticle-launcher @@ -348,6 +357,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 763) (new 'static 'sparticle-launcher @@ -373,6 +383,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 764) (new 'static 'sparticle-launcher @@ -399,6 +410,7 @@ ) ) +;; definition for function check-drop-level-training-spout-rain (defun check-drop-level-training-spout-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -442,6 +454,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 759) (new 'static 'sparticle-launcher @@ -468,6 +481,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 760) (new 'static 'sparticle-launcher @@ -492,6 +506,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 757) (new 'static 'sparticle-launcher @@ -518,6 +533,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 758) (new 'static 'sparticle-launcher @@ -542,6 +558,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 755) (new 'static 'sparticle-launcher @@ -568,6 +585,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 756) (new 'static 'sparticle-launcher @@ -592,6 +610,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 150) (new 'static 'sparticle-launch-group @@ -778,6 +797,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 770) (new 'static 'sparticle-launcher @@ -787,7 +807,7 @@ (sp-flt spt-num 0.5) (sp-flt spt-x (meters 0.0)) (sp-flt spt-scale-x (meters 5.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-z (degrees 15.0)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 32.0 1.0) @@ -801,6 +821,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 769) (new 'static 'sparticle-launcher @@ -822,6 +843,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 766) (new 'static 'sparticle-launcher @@ -851,6 +873,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 767) (new 'static 'sparticle-launcher @@ -874,6 +897,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 768) (new 'static 'sparticle-launcher @@ -894,6 +918,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 765) (new 'static 'sparticle-launcher @@ -924,6 +949,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 151) (new 'static 'sparticle-launch-group @@ -951,6 +977,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 773) (new 'static 'sparticle-launcher @@ -976,6 +1003,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 774) (new 'static 'sparticle-launcher @@ -989,6 +1017,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 775) (new 'static 'sparticle-launcher @@ -1000,6 +1029,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 771) (new 'static 'sparticle-launcher @@ -1029,6 +1059,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 776) (new 'static 'sparticle-launcher @@ -1044,6 +1075,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 772) (new 'static 'sparticle-launcher @@ -1053,7 +1085,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -1067,6 +1099,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 152) (new 'static 'sparticle-launch-group @@ -1091,6 +1124,8 @@ ) ) +;; definition for function tra-bird-bob-func +;; INFO: Return type mismatch int vs none. (defun tra-bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -1108,6 +1143,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 779) (new 'static 'sparticle-launcher @@ -1132,6 +1168,8 @@ ) ) +;; definition for function tra-sparticle-seagull-moon +;; INFO: Return type mismatch int vs none. (defun tra-sparticle-seagull-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -1143,6 +1181,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 777) (new 'static 'sparticle-launcher @@ -1174,6 +1213,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 780) (new 'static 'sparticle-launcher @@ -1189,6 +1229,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 781) (new 'static 'sparticle-launcher @@ -1204,6 +1245,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 778) (new 'static 'sparticle-launcher @@ -1222,6 +1264,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 153) (new 'static 'sparticle-launch-group @@ -1244,6 +1287,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 789) (new 'static 'sparticle-launcher @@ -1255,6 +1299,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 790) (new 'static 'sparticle-launcher @@ -1266,6 +1311,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 791) (new 'static 'sparticle-launcher @@ -1277,6 +1323,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 782) (new 'static 'sparticle-launcher @@ -1311,6 +1358,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 783) (new 'static 'sparticle-launcher @@ -1345,6 +1393,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 784) (new 'static 'sparticle-launcher @@ -1378,6 +1427,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 785) (new 'static 'sparticle-launcher @@ -1410,6 +1460,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 786) (new 'static 'sparticle-launcher @@ -1445,6 +1496,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 787) (new 'static 'sparticle-launcher @@ -1481,6 +1533,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 154) (new 'static 'sparticle-launch-group @@ -1503,6 +1556,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 792) (new 'static 'sparticle-launcher @@ -1537,6 +1591,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 793) (new 'static 'sparticle-launcher @@ -1571,6 +1626,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 794) (new 'static 'sparticle-launcher @@ -1606,6 +1662,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 795) (new 'static 'sparticle-launcher @@ -1641,6 +1698,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 796) (new 'static 'sparticle-launcher @@ -1677,6 +1735,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 797) (new 'static 'sparticle-launcher diff --git a/goal_src/levels/village1/village1-part.gc b/goal_src/levels/village1/village1-part.gc index 62d9a8d7ca..fe9fb7e13a 100644 --- a/goal_src/levels/village1/village1-part.gc +++ b/goal_src/levels/village1/village1-part.gc @@ -16,6 +16,7 @@ ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 127) (new 'static 'sparticle-launch-group @@ -43,6 +44,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 380) (new 'static 'sparticle-launcher @@ -68,6 +70,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 383) (new 'static 'sparticle-launcher @@ -81,6 +84,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 384) (new 'static 'sparticle-launcher @@ -92,6 +96,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 381) (new 'static 'sparticle-launcher @@ -121,6 +126,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 385) (new 'static 'sparticle-launcher @@ -136,6 +142,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 382) (new 'static 'sparticle-launcher @@ -145,7 +152,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -159,6 +166,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 128) (new 'static 'sparticle-launch-group @@ -176,6 +184,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 386) (new 'static 'sparticle-launcher @@ -195,6 +204,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 387) (new 'static 'sparticle-launcher @@ -224,6 +234,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 389) (new 'static 'sparticle-launcher @@ -239,6 +250,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 388) (new 'static 'sparticle-launcher @@ -248,7 +260,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.4)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -261,6 +273,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 129) (new 'static 'sparticle-launch-group @@ -282,6 +295,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 390) (new 'static 'sparticle-launcher @@ -290,7 +304,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -308,6 +322,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 396) (new 'static 'sparticle-launcher @@ -322,6 +337,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 391) (new 'static 'sparticle-launcher @@ -330,7 +346,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -348,6 +364,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 397) (new 'static 'sparticle-launcher @@ -364,6 +381,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 398) (new 'static 'sparticle-launcher @@ -378,6 +396,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 392) (new 'static 'sparticle-launcher @@ -386,7 +405,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -406,12 +425,13 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 399) (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -422,6 +442,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 393) (new 'static 'sparticle-launcher @@ -430,7 +451,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -450,12 +471,13 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 400) (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 9 - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -468,12 +490,13 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 401) (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -484,6 +507,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 394) (new 'static 'sparticle-launcher @@ -492,7 +516,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-flt spt-scale-y (meters 0.5)) (sp-flt spt-r 128.0) @@ -511,12 +535,13 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 402) (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -527,6 +552,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 395) (new 'static 'sparticle-launcher @@ -535,7 +561,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -555,12 +581,13 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 403) (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 9 - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -573,12 +600,13 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 404) (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -589,6 +617,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 405) (new 'static 'sparticle-launcher @@ -622,6 +651,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 406) (new 'static 'sparticle-launcher @@ -650,6 +680,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 407) (new 'static 'sparticle-launcher @@ -685,6 +716,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 408) (new 'static 'sparticle-launcher @@ -717,6 +749,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 130) (new 'static 'sparticle-launch-group @@ -736,6 +769,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 131) (new 'static 'sparticle-launch-group @@ -819,6 +853,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 411) (new 'static 'sparticle-launcher @@ -877,6 +912,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2292) (new 'static 'sparticle-launcher @@ -910,6 +946,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2293) (new 'static 'sparticle-launcher @@ -923,6 +960,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 410) (new 'static 'sparticle-launcher @@ -953,6 +991,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 412) (new 'static 'sparticle-launcher @@ -987,6 +1026,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 413) (new 'static 'sparticle-launcher @@ -1011,6 +1051,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 414) (new 'static 'sparticle-launcher @@ -1022,6 +1063,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 132) (new 'static 'sparticle-launch-group @@ -1087,6 +1129,8 @@ ) ) +;; definition for function bird-bob-func +;; INFO: Return type mismatch int vs none. (defun bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -1104,6 +1148,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 415) (new 'static 'sparticle-launcher @@ -1128,6 +1173,8 @@ ) ) +;; definition for function sparticle-seagull-moon +;; INFO: Return type mismatch int vs none. (defun sparticle-seagull-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -1139,6 +1186,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 416) (new 'static 'sparticle-launcher @@ -1170,6 +1218,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 418) (new 'static 'sparticle-launcher @@ -1185,6 +1234,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 419) (new 'static 'sparticle-launcher @@ -1200,6 +1250,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 417) (new 'static 'sparticle-launcher @@ -1218,6 +1269,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 133) (new 'static 'sparticle-launch-group @@ -1235,6 +1287,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 420) (new 'static 'sparticle-launcher @@ -1244,7 +1297,7 @@ (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.05)) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x 1183725796) + (sp-flt spt-rot-x 18204.445) (sp-flt spt-rot-y (degrees 72.5)) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 0.0) @@ -1261,6 +1314,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 422) (new 'static 'sparticle-launcher @@ -1272,6 +1326,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 421) (new 'static 'sparticle-launcher @@ -1281,7 +1336,7 @@ (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.05)) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x 1180929593) + (sp-flt spt-rot-x 14563.556) (sp-flt spt-rot-y (degrees 72.5)) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 0.0) @@ -1298,6 +1353,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 423) (new 'static 'sparticle-launcher @@ -1309,6 +1365,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 134) (new 'static 'sparticle-launch-group @@ -1332,6 +1389,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 431) (new 'static 'sparticle-launcher @@ -1358,6 +1416,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 430) (new 'static 'sparticle-launcher @@ -1389,6 +1448,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 432) (new 'static 'sparticle-launcher @@ -1400,6 +1460,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 426) (new 'static 'sparticle-launcher @@ -1433,6 +1494,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 428) (new 'static 'sparticle-launcher @@ -1466,6 +1528,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 427) (new 'static 'sparticle-launcher @@ -1499,6 +1562,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 425) (new 'static 'sparticle-launcher @@ -1532,6 +1596,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 429) (new 'static 'sparticle-launcher @@ -1565,6 +1630,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 424) (new 'static 'sparticle-launcher @@ -1592,6 +1658,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 433) (new 'static 'sparticle-launcher @@ -1603,6 +1670,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 434) (new 'static 'sparticle-launcher @@ -1628,6 +1696,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 435) (new 'static 'sparticle-launcher @@ -1653,6 +1722,7 @@ ) ) +;; definition for function check-drop-level-village1-fountain-nosplash (defun check-drop-level-village1-fountain-nosplash ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -1668,6 +1738,7 @@ ) ) +;; definition for function check-drop-level-village1-fountain (defun check-drop-level-village1-fountain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -1696,6 +1767,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 135) (new 'static 'sparticle-launch-group @@ -1777,6 +1849,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 472) (new 'static 'sparticle-launcher @@ -1798,6 +1871,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 473) (new 'static 'sparticle-launcher @@ -1823,6 +1897,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 474) (new 'static 'sparticle-launcher @@ -1831,7 +1906,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees -60.0)) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) @@ -1845,6 +1920,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 475) (new 'static 'sparticle-launcher @@ -1853,7 +1929,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -1868,6 +1944,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 476) (new 'static 'sparticle-launcher @@ -1876,7 +1953,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -1891,6 +1968,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 464) (new 'static 'sparticle-launcher @@ -1916,6 +1994,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 465) (new 'static 'sparticle-launcher @@ -1924,7 +2003,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 64.0) (sp-flt spt-g 128.0) @@ -1937,6 +2016,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 466) (new 'static 'sparticle-launcher @@ -1945,7 +2025,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -1960,6 +2040,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 467) (new 'static 'sparticle-launcher @@ -1968,7 +2049,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -1983,6 +2064,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 468) (new 'static 'sparticle-launcher @@ -2008,6 +2090,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 469) (new 'static 'sparticle-launcher @@ -2016,7 +2099,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 196.0) (sp-flt spt-g 196.0) @@ -2029,6 +2112,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 470) (new 'static 'sparticle-launcher @@ -2037,7 +2121,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2052,6 +2136,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 471) (new 'static 'sparticle-launcher @@ -2060,7 +2145,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2075,6 +2160,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 460) (new 'static 'sparticle-launcher @@ -2100,6 +2186,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 477) (new 'static 'sparticle-launcher @@ -2111,6 +2198,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 461) (new 'static 'sparticle-launcher @@ -2119,7 +2207,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 196.0) (sp-flt spt-g 196.0) @@ -2132,6 +2220,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 462) (new 'static 'sparticle-launcher @@ -2140,7 +2229,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2155,6 +2244,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 463) (new 'static 'sparticle-launcher @@ -2163,7 +2253,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2178,6 +2268,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 457) (new 'static 'sparticle-launcher @@ -2189,7 +2280,7 @@ (sp-flt spt-y (meters 1.9)) (sp-flt spt-z 12902.4) (sp-flt spt-scale-x (meters 0.6)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 270.0)) (sp-flt spt-rot-z (degrees 0.0)) (sp-flt spt-scale-y (meters 0.6)) @@ -2204,6 +2295,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 458) (new 'static 'sparticle-launcher @@ -2215,7 +2307,7 @@ (sp-flt spt-y (meters 1.9)) (sp-flt spt-z 12902.4) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-flt spt-rot-x -10922.667) (sp-flt spt-rot-y (degrees 150.0)) (sp-flt spt-rot-z (degrees -60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2233,6 +2325,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 459) (new 'static 'sparticle-launcher @@ -2244,7 +2337,7 @@ (sp-flt spt-y (meters 1.9)) (sp-flt spt-z 12902.4) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x 1193978539) + (sp-flt spt-rot-x 43690.668) (sp-flt spt-rot-y (degrees 30.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2262,6 +2355,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 454) (new 'static 'sparticle-launcher @@ -2273,7 +2367,7 @@ (sp-flt spt-y (meters 4.5)) (sp-flt spt-z -10240.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 210.0)) (sp-flt spt-rot-z (degrees 0.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -2288,6 +2382,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 455) (new 'static 'sparticle-launcher @@ -2299,7 +2394,7 @@ (sp-flt spt-y (meters 4.5)) (sp-flt spt-z -10240.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x -970282325) + (sp-flt spt-rot-x -10922.667) (sp-flt spt-rot-y (degrees 90.0)) (sp-flt spt-rot-z (degrees -60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2317,6 +2412,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 456) (new 'static 'sparticle-launcher @@ -2328,7 +2424,7 @@ (sp-flt spt-y (meters 4.5)) (sp-flt spt-z -10240.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x 1193978539) + (sp-flt spt-rot-x 43690.668) (sp-flt spt-rot-y (degrees -30.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2346,6 +2442,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 451) (new 'static 'sparticle-launcher @@ -2357,7 +2454,7 @@ (sp-flt spt-y (meters 5.0)) (sp-flt spt-z -16384.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 180.0)) (sp-flt spt-rot-z (degrees 0.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -2372,6 +2469,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 452) (new 'static 'sparticle-launcher @@ -2383,7 +2481,7 @@ (sp-flt spt-y (meters 5.0)) (sp-flt spt-z -16384.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x -970282325) + (sp-flt spt-rot-x -10922.667) (sp-flt spt-rot-y (degrees 60.0)) (sp-flt spt-rot-z (degrees -60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2401,6 +2499,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 478) (new 'static 'sparticle-launcher @@ -2412,6 +2511,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 453) (new 'static 'sparticle-launcher @@ -2423,7 +2523,7 @@ (sp-flt spt-y (meters 5.0)) (sp-flt spt-z -16384.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x 1193978539) + (sp-flt spt-rot-x 43690.668) (sp-flt spt-rot-y (degrees -60.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2441,6 +2541,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 479) (new 'static 'sparticle-launcher @@ -2452,6 +2553,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 446) (new 'static 'sparticle-launcher @@ -2473,6 +2575,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 447) (new 'static 'sparticle-launcher @@ -2498,6 +2601,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 448) (new 'static 'sparticle-launcher @@ -2506,7 +2610,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees -60.0)) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) @@ -2520,6 +2624,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 449) (new 'static 'sparticle-launcher @@ -2528,7 +2633,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2543,6 +2648,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 450) (new 'static 'sparticle-launcher @@ -2551,7 +2657,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2566,6 +2672,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 441) (new 'static 'sparticle-launcher @@ -2587,6 +2694,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 442) (new 'static 'sparticle-launcher @@ -2612,6 +2720,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 443) (new 'static 'sparticle-launcher @@ -2620,7 +2729,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 180.0)) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 255.0) @@ -2634,6 +2743,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 444) (new 'static 'sparticle-launcher @@ -2642,7 +2752,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2657,6 +2767,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 445) (new 'static 'sparticle-launcher @@ -2665,7 +2776,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2680,6 +2791,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 436) (new 'static 'sparticle-launcher @@ -2701,6 +2813,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 437) (new 'static 'sparticle-launcher @@ -2726,6 +2839,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 438) (new 'static 'sparticle-launcher @@ -2734,7 +2848,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -2747,6 +2861,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 439) (new 'static 'sparticle-launcher @@ -2755,7 +2870,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2770,6 +2885,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 440) (new 'static 'sparticle-launcher @@ -2778,7 +2894,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) diff --git a/goal_src/levels/village1/village1-part2.gc b/goal_src/levels/village1/village1-part2.gc index cb66e2f24f..8ca652c2b9 100644 --- a/goal_src/levels/village1/village1-part2.gc +++ b/goal_src/levels/village1/village1-part2.gc @@ -7,6 +7,7 @@ ;; DECOMP BEGINS +;; failed to figure out what this is: (set! (-> *part-group-id-table* 136) (new 'static 'sparticle-launch-group @@ -387,6 +388,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 137) (new 'static 'sparticle-launch-group @@ -765,6 +767,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 138) (new 'static 'sparticle-launch-group @@ -1143,6 +1146,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 482) (new 'static 'sparticle-launcher @@ -1164,6 +1168,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 483) (new 'static 'sparticle-launcher @@ -1192,6 +1197,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 480) (new 'static 'sparticle-launcher @@ -1203,7 +1209,7 @@ (sp-flt spt-y (meters -0.55)) (sp-flt spt-z 327.68) (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.25) 1.0) - (sp-int spt-rot-x 1181022800) + (sp-flt spt-rot-x 14654.578) (sp-flt spt-rot-y (degrees 15.5)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 64.0 1.0) @@ -1224,6 +1230,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 481) (new 'static 'sparticle-launcher @@ -1233,7 +1240,7 @@ (sp-flt spt-num 1.0) (sp-flt spt-z -1064.96) (sp-flt spt-scale-x (meters 6.0)) - (sp-int spt-rot-x 1181022800) + (sp-flt spt-rot-x 14654.578) (sp-flt spt-rot-y (degrees 15.5)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 64.0) @@ -1247,6 +1254,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 484) (new 'static 'sparticle-launcher @@ -1268,6 +1276,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 485) (new 'static 'sparticle-launcher @@ -1296,6 +1305,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 486) (new 'static 'sparticle-launcher @@ -1317,6 +1327,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 487) (new 'static 'sparticle-launcher @@ -1345,6 +1356,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 488) (new 'static 'sparticle-launcher @@ -1366,6 +1378,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 489) (new 'static 'sparticle-launcher @@ -1394,6 +1407,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 490) (new 'static 'sparticle-launcher @@ -1415,6 +1429,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 491) (new 'static 'sparticle-launcher @@ -1443,6 +1458,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 492) (new 'static 'sparticle-launcher @@ -1464,6 +1480,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 493) (new 'static 'sparticle-launcher @@ -1492,6 +1509,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 494) (new 'static 'sparticle-launcher @@ -1513,6 +1531,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 495) (new 'static 'sparticle-launcher @@ -1541,6 +1560,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 496) (new 'static 'sparticle-launcher @@ -1562,6 +1582,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 497) (new 'static 'sparticle-launcher @@ -1590,6 +1611,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 498) (new 'static 'sparticle-launcher @@ -1611,6 +1633,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 499) (new 'static 'sparticle-launcher @@ -1639,6 +1662,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 139) (new 'static 'sparticle-launch-group @@ -1668,6 +1692,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 502) (new 'static 'sparticle-launcher @@ -1722,6 +1747,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 503) (new 'static 'sparticle-launcher @@ -1746,6 +1772,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 500) (new 'static 'sparticle-launcher @@ -1777,6 +1804,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 504) (new 'static 'sparticle-launcher @@ -1790,6 +1818,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 501) (new 'static 'sparticle-launcher @@ -1819,6 +1848,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 505) (new 'static 'sparticle-launcher @@ -1830,6 +1860,7 @@ ) ) +;; definition for function check-drop-level-sagehut (defun check-drop-level-sagehut ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -1873,6 +1904,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 140) (new 'static 'sparticle-launch-group @@ -2059,6 +2091,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1973) (new 'static 'sparticle-launcher @@ -2068,7 +2101,7 @@ (sp-flt spt-num 0.5) (sp-flt spt-x (meters 0.0)) (sp-flt spt-scale-x (meters 5.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-z (degrees 105.0)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 32.0 1.0) @@ -2082,6 +2115,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1972) (new 'static 'sparticle-launcher @@ -2103,6 +2137,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1969) (new 'static 'sparticle-launcher @@ -2132,6 +2167,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1970) (new 'static 'sparticle-launcher @@ -2155,6 +2191,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1971) (new 'static 'sparticle-launcher @@ -2175,6 +2212,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1968) (new 'static 'sparticle-launcher @@ -2205,6 +2243,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 141) (new 'static 'sparticle-launch-group @@ -2220,6 +2259,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 511) (new 'static 'sparticle-launcher @@ -2249,6 +2289,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 512) (new 'static 'sparticle-launcher @@ -2262,6 +2303,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 513) (new 'static 'sparticle-launcher @@ -2273,6 +2315,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 684) (new 'static 'sparticle-launch-group @@ -2295,6 +2338,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2848) (new 'static 'sparticle-launcher @@ -2327,6 +2371,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2849) (new 'static 'sparticle-launcher @@ -2363,6 +2408,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2846) (new 'static 'sparticle-launcher @@ -2395,6 +2441,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2847) (new 'static 'sparticle-launcher @@ -2431,6 +2478,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2844) (new 'static 'sparticle-launcher @@ -2463,6 +2511,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2850) (new 'static 'sparticle-launcher @@ -2475,6 +2524,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2845) (new 'static 'sparticle-launcher @@ -2511,6 +2561,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2851) (new 'static 'sparticle-launcher @@ -2522,6 +2573,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 142) (new 'static 'sparticle-launch-group @@ -2539,6 +2591,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 514) (new 'static 'sparticle-launcher @@ -2560,6 +2613,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 515) (new 'static 'sparticle-launcher @@ -2582,6 +2636,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 516) (new 'static 'sparticle-launcher @@ -2591,7 +2646,7 @@ (sp-flt spt-num 1.0) (sp-rnd-flt spt-y (meters 0.75) (meters 0.1) 1.0) (sp-flt spt-scale-x (meters 0.0)) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 2730.6667 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-flt spt-r 16.0) diff --git a/goal_src/levels/village2/village2-part.gc b/goal_src/levels/village2/village2-part.gc index f3c9ca0947..77960386de 100644 --- a/goal_src/levels/village2/village2-part.gc +++ b/goal_src/levels/village2/village2-part.gc @@ -16,6 +16,7 @@ ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 264) (new 'static 'sparticle-launch-group @@ -33,6 +34,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1129) (new 'static 'sparticle-launcher @@ -52,6 +54,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1127) (new 'static 'sparticle-launcher @@ -81,6 +84,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1130) (new 'static 'sparticle-launcher @@ -96,6 +100,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1128) (new 'static 'sparticle-launcher @@ -105,7 +110,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.4)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -118,6 +123,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 265) (new 'static 'sparticle-launch-group @@ -142,6 +148,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1133) (new 'static 'sparticle-launcher @@ -164,6 +171,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1136) (new 'static 'sparticle-launcher @@ -177,6 +185,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1134) (new 'static 'sparticle-launcher @@ -199,6 +208,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1135) (new 'static 'sparticle-launcher @@ -221,6 +231,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1131) (new 'static 'sparticle-launcher @@ -246,6 +257,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1132) (new 'static 'sparticle-launcher @@ -255,7 +267,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 3.0) (sp-flt spt-scale-x (meters 0.15)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.15)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -268,6 +280,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 266) (new 'static 'sparticle-launch-group @@ -291,6 +304,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 267) (new 'static 'sparticle-launch-group @@ -309,6 +323,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 268) (new 'static 'sparticle-launch-group @@ -332,6 +347,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 269) (new 'static 'sparticle-launch-group @@ -355,6 +371,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 270) (new 'static 'sparticle-launch-group @@ -371,6 +388,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1144) (new 'static 'sparticle-launcher @@ -394,6 +412,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1149) (new 'static 'sparticle-launcher @@ -405,6 +424,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1147) (new 'static 'sparticle-launcher @@ -427,6 +447,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1150) (new 'static 'sparticle-launcher @@ -438,6 +459,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1137) (new 'static 'sparticle-launcher @@ -471,6 +493,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1145) (new 'static 'sparticle-launcher @@ -504,6 +527,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1138) (new 'static 'sparticle-launcher @@ -537,6 +561,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1139) (new 'static 'sparticle-launcher @@ -572,6 +597,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1146) (new 'static 'sparticle-launcher @@ -607,6 +633,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1148) (new 'static 'sparticle-launcher @@ -642,6 +669,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1151) (new 'static 'sparticle-launcher @@ -656,6 +684,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1152) (new 'static 'sparticle-launcher @@ -668,6 +697,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1140) (new 'static 'sparticle-launcher @@ -701,6 +731,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1141) (new 'static 'sparticle-launcher @@ -734,6 +765,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1142) (new 'static 'sparticle-launcher @@ -767,6 +799,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1143) (new 'static 'sparticle-launcher @@ -800,6 +833,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 634) (new 'static 'sparticle-launch-group @@ -817,6 +851,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 271) (new 'static 'sparticle-launch-group @@ -850,6 +885,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1156) (new 'static 'sparticle-launcher @@ -875,6 +911,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1171) (new 'static 'sparticle-launcher @@ -886,6 +923,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1160) (new 'static 'sparticle-launcher @@ -911,6 +949,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1164) (new 'static 'sparticle-launcher @@ -936,6 +975,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1153) (new 'static 'sparticle-launcher @@ -968,6 +1008,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1154) (new 'static 'sparticle-launcher @@ -1000,6 +1041,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1155) (new 'static 'sparticle-launcher @@ -1035,6 +1077,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1172) (new 'static 'sparticle-launcher @@ -1049,6 +1092,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1173) (new 'static 'sparticle-launcher @@ -1061,6 +1105,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1157) (new 'static 'sparticle-launcher @@ -1094,6 +1139,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1158) (new 'static 'sparticle-launcher @@ -1127,6 +1173,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1159) (new 'static 'sparticle-launcher @@ -1163,6 +1210,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1161) (new 'static 'sparticle-launcher @@ -1196,6 +1244,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1162) (new 'static 'sparticle-launcher @@ -1229,6 +1278,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1163) (new 'static 'sparticle-launcher @@ -1265,6 +1315,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1165) (new 'static 'sparticle-launcher @@ -1298,6 +1349,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1166) (new 'static 'sparticle-launcher @@ -1331,6 +1383,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1167) (new 'static 'sparticle-launcher @@ -1367,6 +1420,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1168) (new 'static 'sparticle-launcher @@ -1401,6 +1455,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1169) (new 'static 'sparticle-launcher @@ -1436,6 +1491,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1174) (new 'static 'sparticle-launcher @@ -1451,6 +1507,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1175) (new 'static 'sparticle-launcher @@ -1465,6 +1522,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1170) (new 'static 'sparticle-launcher @@ -1499,6 +1557,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1176) (new 'static 'sparticle-launcher @@ -1512,6 +1571,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1177) (new 'static 'sparticle-launcher @@ -1533,6 +1593,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 272) (new 'static 'sparticle-launch-group @@ -1558,6 +1619,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1178) (new 'static 'sparticle-launcher @@ -1590,6 +1652,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1183) (new 'static 'sparticle-launcher @@ -1603,6 +1666,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1184) (new 'static 'sparticle-launcher @@ -1614,6 +1678,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1179) (new 'static 'sparticle-launcher @@ -1646,6 +1711,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1185) (new 'static 'sparticle-launcher @@ -1657,6 +1723,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1180) (new 'static 'sparticle-launcher @@ -1687,6 +1754,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1181) (new 'static 'sparticle-launcher @@ -1719,6 +1787,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1182) (new 'static 'sparticle-launcher @@ -1751,6 +1820,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 273) (new 'static 'sparticle-launch-group @@ -1776,6 +1846,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1186) (new 'static 'sparticle-launcher @@ -1808,6 +1879,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1187) (new 'static 'sparticle-launcher @@ -1840,6 +1912,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1188) (new 'static 'sparticle-launcher @@ -1870,6 +1943,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1189) (new 'static 'sparticle-launcher @@ -1902,6 +1976,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1190) (new 'static 'sparticle-launcher @@ -1934,6 +2009,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 274) (new 'static 'sparticle-launch-group @@ -1952,6 +2028,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1191) (new 'static 'sparticle-launcher @@ -1984,6 +2061,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1192) (new 'static 'sparticle-launcher @@ -2018,6 +2096,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 275) (new 'static 'sparticle-launch-group @@ -2038,6 +2117,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1195) (new 'static 'sparticle-launcher @@ -2072,6 +2152,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1196) (new 'static 'sparticle-launcher @@ -2086,6 +2167,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1193) (new 'static 'sparticle-launcher @@ -2149,6 +2231,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1194) (new 'static 'sparticle-launcher @@ -2212,6 +2295,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 276) (new 'static 'sparticle-launch-group @@ -2240,6 +2324,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1201) (new 'static 'sparticle-launcher @@ -2270,6 +2355,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1202) (new 'static 'sparticle-launcher @@ -2295,6 +2381,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1200) (new 'static 'sparticle-launcher @@ -2323,6 +2410,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1205) (new 'static 'sparticle-launcher @@ -2338,6 +2426,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1203) (new 'static 'sparticle-launcher @@ -2372,6 +2461,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1206) (new 'static 'sparticle-launcher @@ -2387,6 +2477,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1204) (new 'static 'sparticle-launcher @@ -2423,6 +2514,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1199) (new 'static 'sparticle-launcher @@ -2447,6 +2539,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1197) (new 'static 'sparticle-launcher @@ -2507,6 +2600,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1198) (new 'static 'sparticle-launcher @@ -2568,6 +2662,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1207) (new 'static 'sparticle-launcher @@ -2592,6 +2687,7 @@ ) ) +;; definition for function check-drop-level-sagehut2 (defun check-drop-level-sagehut2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) @@ -2627,6 +2723,7 @@ (none) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 678) (new 'static 'sparticle-launch-group @@ -2685,6 +2782,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2795) (new 'static 'sparticle-launcher @@ -2710,6 +2808,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2794) (new 'static 'sparticle-launcher @@ -2735,6 +2834,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2793) (new 'static 'sparticle-launcher @@ -2762,6 +2862,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2792) (new 'static 'sparticle-launcher @@ -2783,6 +2884,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2791) (new 'static 'sparticle-launcher diff --git a/goal_src/levels/village3/village3-part.gc b/goal_src/levels/village3/village3-part.gc index a761702de2..6ea95beb70 100644 --- a/goal_src/levels/village3/village3-part.gc +++ b/goal_src/levels/village3/village3-part.gc @@ -16,6 +16,7 @@ ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 476) (new 'static 'sparticle-launch-group @@ -33,6 +34,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1797) (new 'static 'sparticle-launcher @@ -60,6 +62,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1798) (new 'static 'sparticle-launcher @@ -89,6 +92,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 477) (new 'static 'sparticle-launch-group @@ -105,6 +109,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 478) (new 'static 'sparticle-launch-group @@ -121,6 +126,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 479) (new 'static 'sparticle-launch-group @@ -137,6 +143,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 480) (new 'static 'sparticle-launch-group @@ -153,6 +160,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 481) (new 'static 'sparticle-launch-group @@ -169,6 +177,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 482) (new 'static 'sparticle-launch-group @@ -185,6 +194,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 483) (new 'static 'sparticle-launch-group @@ -201,6 +211,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 484) (new 'static 'sparticle-launch-group @@ -217,6 +228,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 485) (new 'static 'sparticle-launch-group @@ -233,6 +245,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 486) (new 'static 'sparticle-launch-group @@ -249,6 +262,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 487) (new 'static 'sparticle-launch-group @@ -265,6 +279,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1810) (new 'static 'sparticle-launcher @@ -296,6 +311,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1808) (new 'static 'sparticle-launcher @@ -327,6 +343,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1809) (new 'static 'sparticle-launcher @@ -358,6 +375,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1807) (new 'static 'sparticle-launcher @@ -389,6 +407,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1812) (new 'static 'sparticle-launcher @@ -404,6 +423,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1806) (new 'static 'sparticle-launcher @@ -435,6 +455,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1814) (new 'static 'sparticle-launcher @@ -450,6 +471,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1805) (new 'static 'sparticle-launcher @@ -481,6 +503,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1804) (new 'static 'sparticle-launcher @@ -512,6 +535,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1815) (new 'static 'sparticle-launcher @@ -527,6 +551,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1803) (new 'static 'sparticle-launcher @@ -558,6 +583,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1816) (new 'static 'sparticle-launcher @@ -573,6 +599,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1802) (new 'static 'sparticle-launcher @@ -604,6 +631,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1817) (new 'static 'sparticle-launcher @@ -619,6 +647,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1813) (new 'static 'sparticle-launcher @@ -631,6 +660,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1801) (new 'static 'sparticle-launcher @@ -662,6 +692,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1799) (new 'static 'sparticle-launcher @@ -693,6 +724,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1811) (new 'static 'sparticle-launcher @@ -706,6 +738,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1800) (new 'static 'sparticle-launcher @@ -736,6 +769,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 488) (new 'static 'sparticle-launch-group @@ -819,6 +853,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2359) (new 'static 'sparticle-launcher @@ -877,6 +912,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2357) (new 'static 'sparticle-launcher @@ -910,6 +946,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2362) (new 'static 'sparticle-launcher @@ -923,6 +960,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2358) (new 'static 'sparticle-launcher @@ -953,6 +991,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2360) (new 'static 'sparticle-launcher @@ -987,6 +1026,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2361) (new 'static 'sparticle-launcher @@ -1012,6 +1052,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 2363) (new 'static 'sparticle-launcher @@ -1023,6 +1064,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 489) (new 'static 'sparticle-launch-group @@ -1084,6 +1126,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 490) (new 'static 'sparticle-launch-group @@ -1145,6 +1188,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1836) (new 'static 'sparticle-launcher @@ -1169,6 +1213,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1837) (new 'static 'sparticle-launcher @@ -1188,6 +1233,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1838) (new 'static 'sparticle-launcher @@ -1200,6 +1246,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1833) (new 'static 'sparticle-launcher @@ -1231,6 +1278,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1839) (new 'static 'sparticle-launcher @@ -1254,6 +1302,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1840) (new 'static 'sparticle-launcher @@ -1267,6 +1316,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1834) (new 'static 'sparticle-launcher @@ -1299,6 +1349,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1835) (new 'static 'sparticle-launcher @@ -1334,6 +1385,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1829) (new 'static 'sparticle-launcher @@ -1366,6 +1418,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1828) (new 'static 'sparticle-launcher @@ -1401,6 +1454,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1827) (new 'static 'sparticle-launcher @@ -1432,6 +1486,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1826) (new 'static 'sparticle-launcher @@ -1466,6 +1521,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1824) (new 'static 'sparticle-launcher @@ -1501,6 +1557,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1823) (new 'static 'sparticle-launcher @@ -1534,6 +1591,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1825) (new 'static 'sparticle-launcher @@ -1571,6 +1629,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1832) (new 'static 'sparticle-launcher @@ -1605,6 +1664,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1831) (new 'static 'sparticle-launcher @@ -1638,6 +1698,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1841) (new 'static 'sparticle-launcher @@ -1650,6 +1711,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1830) (new 'static 'sparticle-launcher @@ -1685,6 +1747,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 491) (new 'static 'sparticle-launch-group @@ -1704,6 +1767,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 492) (new 'static 'sparticle-launch-group @@ -1723,6 +1787,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 493) (new 'static 'sparticle-launch-group @@ -1742,6 +1807,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1842) (new 'static 'sparticle-launcher @@ -1802,6 +1868,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1843) (new 'static 'sparticle-launcher @@ -1862,6 +1929,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1844) (new 'static 'sparticle-launcher @@ -1922,6 +1990,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1845) (new 'static 'sparticle-launcher @@ -1982,6 +2051,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1846) (new 'static 'sparticle-launcher @@ -2042,6 +2112,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 494) (new 'static 'sparticle-launch-group @@ -2061,6 +2132,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 495) (new 'static 'sparticle-launch-group @@ -2080,6 +2152,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 496) (new 'static 'sparticle-launch-group @@ -2099,6 +2172,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 497) (new 'static 'sparticle-launch-group @@ -2118,6 +2192,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 498) (new 'static 'sparticle-launch-group @@ -2137,6 +2212,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1847) (new 'static 'sparticle-launcher @@ -2198,6 +2274,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 499) (new 'static 'sparticle-launch-group @@ -2227,6 +2304,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1851) (new 'static 'sparticle-launcher @@ -2259,6 +2337,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1853) (new 'static 'sparticle-launcher @@ -2285,6 +2364,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1852) (new 'static 'sparticle-launcher @@ -2313,6 +2393,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1850) (new 'static 'sparticle-launcher @@ -2340,6 +2421,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1856) (new 'static 'sparticle-launcher @@ -2351,6 +2433,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1855) (new 'static 'sparticle-launcher @@ -2364,6 +2447,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1857) (new 'static 'sparticle-launcher @@ -2378,6 +2462,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1858) (new 'static 'sparticle-launcher @@ -2391,6 +2476,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1848) (new 'static 'sparticle-launcher @@ -2414,6 +2500,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1849) (new 'static 'sparticle-launcher @@ -2439,6 +2526,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 500) (new 'static 'sparticle-launch-group @@ -2628,6 +2716,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1863) (new 'static 'sparticle-launcher @@ -2649,6 +2738,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1860) (new 'static 'sparticle-launcher @@ -2678,6 +2768,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1861) (new 'static 'sparticle-launcher @@ -2701,6 +2792,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1862) (new 'static 'sparticle-launcher @@ -2720,6 +2812,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1859) (new 'static 'sparticle-launcher @@ -2750,6 +2843,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 501) (new 'static 'sparticle-launch-group @@ -2766,6 +2860,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1864) (new 'static 'sparticle-launcher @@ -2777,7 +2872,7 @@ (sp-flt spt-y (meters -2.0)) (sp-flt spt-z -1228.8) (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.2) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees -50.000004)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) @@ -2799,6 +2894,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1866) (new 'static 'sparticle-launcher @@ -2810,6 +2906,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1865) (new 'static 'sparticle-launcher @@ -2820,7 +2917,7 @@ (sp-flt spt-y (meters -0.5)) (sp-flt spt-z -1064.96) (sp-flt spt-scale-x (meters 12.0)) - (sp-int spt-rot-x 1181395627) + (sp-flt spt-rot-x 15018.667) (sp-flt spt-rot-y (degrees -50.000004)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) @@ -2835,6 +2932,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 502) (new 'static 'sparticle-launch-group @@ -2854,6 +2952,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1867) (new 'static 'sparticle-launcher @@ -2914,6 +3013,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-group-id-table* 503) (new 'static 'sparticle-launch-group @@ -2934,6 +3034,7 @@ ) ) +;; failed to figure out what this is: (set! (-> *part-id-table* 1868) (new 'static 'sparticle-launcher diff --git a/resources/SAVEGAME.ICO b/resources/SAVEGAME.ICO new file mode 100644 index 0000000000..72b18e8cbc Binary files /dev/null and b/resources/SAVEGAME.ICO differ diff --git a/test/decompiler/reference/engine/game/collectables-part_REF.gc b/test/decompiler/reference/engine/game/collectables-part_REF.gc index 9f91f942ed..d0a11fc775 100644 --- a/test/decompiler/reference/engine/game/collectables-part_REF.gc +++ b/test/decompiler/reference/engine/game/collectables-part_REF.gc @@ -2989,7 +2989,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1a :page #x2)) (sp-flt spt-num 2.0) (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.2) 1.0) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 12743.111 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) @@ -3015,7 +3015,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1a :page #x2)) (sp-flt spt-num 2.0) (sp-rnd-flt spt-scale-x (meters 1.3) (meters 0.2) 1.0) - (sp-int spt-rot-x 1184657863) + (sp-rnd-flt spt-rot-x 20024.889 12743.111 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) diff --git a/test/decompiler/reference/engine/load/loader-h_REF.gc b/test/decompiler/reference/engine/load/loader-h_REF.gc index a4d852647d..be3e00d54c 100644 --- a/test/decompiler/reference/engine/load/loader-h_REF.gc +++ b/test/decompiler/reference/engine/load/loader-h_REF.gc @@ -98,7 +98,7 @@ :flag-assert #x1000000068 (:methods (new (symbol type int) _type_ 0) - (want-file (_type_ string int handle float) int 9) + (set-pending-file (_type_ string int handle float) int 9) (update (_type_) int 10) (inactive? (_type_) symbol 11) (file-status (_type_ string int) symbol 12) diff --git a/test/decompiler/reference/engine/load/loader_REF.gc b/test/decompiler/reference/engine/load/loader_REF.gc index 68511fdf87..e1f43f1deb 100644 --- a/test/decompiler/reference/engine/load/loader_REF.gc +++ b/test/decompiler/reference/engine/load/loader_REF.gc @@ -205,7 +205,7 @@ ;; definition for method 9 of type external-art-buffer (defmethod - want-file + set-pending-file external-art-buffer ((obj external-art-buffer) (arg0 string) @@ -675,7 +675,7 @@ (dotimes (s2-1 2) (when (not (-> obj buffer s2-1 frame-lock)) (set! (-> obj buffer s2-1 frame-lock) #t) - (want-file + (set-pending-file (-> obj buffer s2-1) (-> s3-1 name) (-> s3-1 parts) @@ -699,7 +699,7 @@ (not (string= (-> s4-2 pending-load-file) "reserved")) (not (string= (-> s4-2 other pending-load-file) "reserved")) ) - (want-file + (set-pending-file (-> s4-2 other) (the-as string #f) -1 @@ -838,7 +838,7 @@ 0 ) ((= (-> obj reserve-buffer heap) arg0) - (want-file + (set-pending-file (-> obj reserve-buffer) (the-as string #f) -1 diff --git a/test/decompiler/reference/levels/beach/beach-part_REF.gc b/test/decompiler/reference/levels/beach/beach-part_REF.gc index 772b09a879..21cf7c130e 100644 --- a/test/decompiler/reference/levels/beach/beach-part_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-part_REF.gc @@ -1063,7 +1063,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -1171,7 +1171,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.4)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -1183,7 +1183,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/citadel/citadel-part_REF.gc b/test/decompiler/reference/levels/citadel/citadel-part_REF.gc index 621e18adec..4851a350e6 100644 --- a/test/decompiler/reference/levels/citadel/citadel-part_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-part_REF.gc @@ -902,7 +902,7 @@ (sp-flt spt-num 4.0) (sp-flt spt-y (meters 23.0)) (sp-rnd-flt spt-scale-x (meters 6.0) (meters 6.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-scale-y (meters 31.0)) (sp-rnd-flt spt-r 24.0 32.0 1.0) (sp-flt spt-g 0.0) @@ -1014,7 +1014,7 @@ (sp-flt spt-y (meters 1.0025)) (sp-flt spt-z 9420.8) (sp-flt spt-scale-x (meters 4.1)) - (sp-int spt-rot-x 1179997525) + (sp-flt spt-rot-x 13653.333) (sp-flt spt-rot-y (degrees -80.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1041,7 +1041,7 @@ (sp-flt spt-y (meters 3.9)) (sp-flt spt-z 9420.8) (sp-flt spt-scale-x (meters 4.1)) - (sp-int spt-rot-x 1184191829) + (sp-flt spt-rot-x 19114.666) (sp-flt spt-rot-y (degrees -80.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1068,7 +1068,7 @@ (sp-flt spt-y (meters 3.2897)) (sp-flt spt-z 10178.56) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1184191829) + (sp-flt spt-rot-x 19114.666) (sp-flt spt-rot-y (degrees 67.0)) (sp-flt spt-scale-y (meters 2.9)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1095,7 +1095,7 @@ (sp-flt spt-y (meters 0.8025)) (sp-flt spt-z 9830.4) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1179997525) + (sp-flt spt-rot-x 13653.333) (sp-flt spt-rot-y (degrees 67.0)) (sp-flt spt-scale-y (meters 2.25)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1122,7 +1122,7 @@ (sp-flt spt-y (meters 0.8025)) (sp-flt spt-z 11468.8) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1179997525) + (sp-flt spt-rot-x 13653.333) (sp-flt spt-rot-y (degrees 10.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1148,7 +1148,7 @@ (sp-flt spt-y (meters 3.7)) (sp-flt spt-z 11468.8) (sp-flt spt-scale-x (meters 3.1)) - (sp-int spt-rot-x 1184191829) + (sp-flt spt-rot-x 19114.666) (sp-flt spt-rot-y (degrees 10.0)) (sp-flt spt-scale-y (meters 3.0)) (sp-rnd-flt spt-r 32.0 32.0 1.0) @@ -1496,7 +1496,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees 25.000002) (degrees 20.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -1765,7 +1765,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 68.0)) (sp-copy-from-other spt-scale-y -4) @@ -2014,7 +2014,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 115.0)) (sp-copy-from-other spt-scale-y -4) @@ -2260,7 +2260,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -2653,7 +2653,7 @@ (sp-flt spt-num 0.5) (sp-flt spt-x (meters 0.0)) (sp-flt spt-scale-x (meters 5.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-z (degrees 82.0)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 32.0 1.0) @@ -3022,7 +3022,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/finalboss/robotboss-part_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-part_REF.gc index 317308b90b..3854dfe6a9 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-part_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-part_REF.gc @@ -3526,7 +3526,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees 25.000002) (degrees 20.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -3766,7 +3766,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 68.0)) (sp-copy-from-other spt-scale-y -4) @@ -4002,7 +4002,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 115.0)) (sp-copy-from-other spt-scale-y -4) @@ -4235,7 +4235,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 12.0) (meters 24.0) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-y (degrees -20.0) (degrees 40.0) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-copy-from-other spt-scale-y -4) @@ -4471,7 +4471,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/levels/finalboss/sage-finalboss-part_REF.gc b/test/decompiler/reference/levels/finalboss/sage-finalboss-part_REF.gc index 6f9fbe500c..77cf43ac52 100644 --- a/test/decompiler/reference/levels/finalboss/sage-finalboss-part_REF.gc +++ b/test/decompiler/reference/levels/finalboss/sage-finalboss-part_REF.gc @@ -279,7 +279,7 @@ (sp-rnd-flt spt-x (meters 0.0) (meters 2.0) 1.0) (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-scale-y (meters 8.0) (meters 8.0) 1.0) (sp-rnd-int spt-r 0 1 128.0) @@ -306,7 +306,7 @@ (sp-rnd-flt spt-num 1.0 2.0 1.0) (sp-rnd-flt spt-x (meters 1.8) (meters 1.0) 1.0) (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-scale-y (meters 1.0) (meters 3.0) 1.0) (sp-rnd-int spt-r 0 1 128.0) @@ -935,7 +935,7 @@ (sp-flt spt-num 6.0) (sp-flt spt-y (meters 10.0)) (sp-rnd-flt spt-scale-x (meters 8.0) (meters 60.0) 1.0) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 262144.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 192.0 32.0 1.0) @@ -1251,7 +1251,7 @@ (sp-flt spt-y (meters 10.0)) (sp-flt spt-z 16384.0) (sp-flt spt-scale-x (meters 48.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -1601,7 +1601,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/levels/flut_common/flut-part_REF.gc b/test/decompiler/reference/levels/flut_common/flut-part_REF.gc index 4b72326be5..576b99d9ae 100644 --- a/test/decompiler/reference/levels/flut_common/flut-part_REF.gc +++ b/test/decompiler/reference/levels/flut_common/flut-part_REF.gc @@ -74,7 +74,7 @@ (sp-flt spt-num 1.0) (sp-rnd-flt spt-y (meters 0.75) (meters 0.1) 1.0) (sp-flt spt-scale-x (meters 0.0)) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 2730.6667 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-flt spt-r 16.0) @@ -177,7 +177,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/racer_common/racer-part_REF.gc b/test/decompiler/reference/levels/racer_common/racer-part_REF.gc index d44ce69c98..88aa6c5c32 100644 --- a/test/decompiler/reference/levels/racer_common/racer-part_REF.gc +++ b/test/decompiler/reference/levels/racer_common/racer-part_REF.gc @@ -771,7 +771,7 @@ (sp-flt spt-num 1.0) (sp-rnd-flt spt-y (meters 0.75) (meters 0.1) 1.0) (sp-flt spt-scale-x (meters 0.0)) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 2730.6667 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-flt spt-r 16.0) @@ -1196,7 +1196,7 @@ (sp-func spt-birth-func 'birth-func-vector-orient) (sp-flt spt-num 1.0) (sp-rnd-flt spt-scale-x (meters 4.0) (meters -0.5) 1.0) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 65536.0 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-flt spt-rot-z (degrees 90.0)) (sp-copy-from-other spt-scale-y -4) @@ -1571,7 +1571,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/swamp/swamp-part_REF.gc b/test/decompiler/reference/levels/swamp/swamp-part_REF.gc index 21bbdc8d4a..2016db19e4 100644 --- a/test/decompiler/reference/levels/swamp/swamp-part_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-part_REF.gc @@ -235,7 +235,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 3.0) (sp-flt spt-scale-x (meters 0.075)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.075)) (sp-flt spt-r 64.0) (sp-flt spt-g 128.0) @@ -395,7 +395,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 4.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x -978670933) + (sp-rnd-flt spt-rot-x -5461.3335 43690.668 1.0) (sp-flt spt-rot-y (degrees 0.0)) (sp-flt spt-scale-y (meters 1.7)) (sp-flt spt-r 128.0) @@ -2128,7 +2128,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/training/training-part_REF.gc b/test/decompiler/reference/levels/training/training-part_REF.gc index 9109b13cf1..2bad03474e 100644 --- a/test/decompiler/reference/levels/training/training-part_REF.gc +++ b/test/decompiler/reference/levels/training/training-part_REF.gc @@ -810,7 +810,7 @@ (sp-flt spt-num 0.5) (sp-flt spt-x (meters 0.0)) (sp-flt spt-scale-x (meters 5.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-z (degrees 15.0)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 32.0 1.0) @@ -1088,7 +1088,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -1766,7 +1766,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/village1/village1-part2_REF.gc b/test/decompiler/reference/levels/village1/village1-part2_REF.gc index b9d78b576d..53e27f6a2c 100644 --- a/test/decompiler/reference/levels/village1/village1-part2_REF.gc +++ b/test/decompiler/reference/levels/village1/village1-part2_REF.gc @@ -1203,7 +1203,7 @@ (sp-flt spt-y (meters -0.55)) (sp-flt spt-z 327.68) (sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.25) 1.0) - (sp-int spt-rot-x 1181022800) + (sp-flt spt-rot-x 14654.578) (sp-flt spt-rot-y (degrees 15.5)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 64.0 1.0) @@ -1234,7 +1234,7 @@ (sp-flt spt-num 1.0) (sp-flt spt-z -1064.96) (sp-flt spt-scale-x (meters 6.0)) - (sp-int spt-rot-x 1181022800) + (sp-flt spt-rot-x 14654.578) (sp-flt spt-rot-y (degrees 15.5)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 64.0) @@ -2095,7 +2095,7 @@ (sp-flt spt-num 0.5) (sp-flt spt-x (meters 0.0)) (sp-flt spt-scale-x (meters 5.0)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-z (degrees 105.0)) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 0.0 32.0 1.0) @@ -2640,7 +2640,7 @@ (sp-flt spt-num 1.0) (sp-rnd-flt spt-y (meters 0.75) (meters 0.1) 1.0) (sp-flt spt-scale-x (meters 0.0)) - (sp-int spt-rot-x 0) + (sp-rnd-flt spt-rot-x 0.0 2730.6667 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-flt spt-r 16.0) @@ -2659,7 +2659,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/village1/village1-part_REF.gc b/test/decompiler/reference/levels/village1/village1-part_REF.gc index 71709cb5e2..bb4956c84a 100644 --- a/test/decompiler/reference/levels/village1/village1-part_REF.gc +++ b/test/decompiler/reference/levels/village1/village1-part_REF.gc @@ -154,7 +154,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -262,7 +262,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.4)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -306,7 +306,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -348,7 +348,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -407,7 +407,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -433,7 +433,7 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -453,7 +453,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -479,7 +479,7 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 9 - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -498,7 +498,7 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -518,7 +518,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-flt spt-scale-y (meters 0.5)) (sp-flt spt-r 128.0) @@ -543,7 +543,7 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -563,7 +563,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -589,7 +589,7 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 9 - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -608,7 +608,7 @@ (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 - (sp-int spt-rot-x 1174405120) + (sp-flt spt-rot-x 8192.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -70.0) (degrees 140.0) 1.0) (sp-rnd-int spt-a 1107296256 1 32.0) @@ -1299,7 +1299,7 @@ (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.05)) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x 1183725796) + (sp-flt spt-rot-x 18204.445) (sp-flt spt-rot-y (degrees 72.5)) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 0.0) @@ -1338,7 +1338,7 @@ (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.05)) (sp-flt spt-scale-x (meters 0.9)) - (sp-int spt-rot-x 1180929593) + (sp-flt spt-rot-x 14563.556) (sp-flt spt-rot-y (degrees 72.5)) (sp-flt spt-scale-y (meters 1.3)) (sp-flt spt-r 0.0) @@ -1908,7 +1908,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees -60.0)) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) @@ -1931,7 +1931,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -1955,7 +1955,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2005,7 +2005,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 64.0) (sp-flt spt-g 128.0) @@ -2027,7 +2027,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2051,7 +2051,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2101,7 +2101,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 196.0) (sp-flt spt-g 196.0) @@ -2123,7 +2123,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2147,7 +2147,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2209,7 +2209,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 196.0) (sp-flt spt-g 196.0) @@ -2231,7 +2231,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2255,7 +2255,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2282,7 +2282,7 @@ (sp-flt spt-y (meters 1.9)) (sp-flt spt-z 12902.4) (sp-flt spt-scale-x (meters 0.6)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 270.0)) (sp-flt spt-rot-z (degrees 0.0)) (sp-flt spt-scale-y (meters 0.6)) @@ -2309,7 +2309,7 @@ (sp-flt spt-y (meters 1.9)) (sp-flt spt-z 12902.4) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-flt spt-rot-x -10922.667) (sp-flt spt-rot-y (degrees 150.0)) (sp-flt spt-rot-z (degrees -60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2339,7 +2339,7 @@ (sp-flt spt-y (meters 1.9)) (sp-flt spt-z 12902.4) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x 1193978539) + (sp-flt spt-rot-x 43690.668) (sp-flt spt-rot-y (degrees 30.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2369,7 +2369,7 @@ (sp-flt spt-y (meters 4.5)) (sp-flt spt-z -10240.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 210.0)) (sp-flt spt-rot-z (degrees 0.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -2396,7 +2396,7 @@ (sp-flt spt-y (meters 4.5)) (sp-flt spt-z -10240.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x -970282325) + (sp-flt spt-rot-x -10922.667) (sp-flt spt-rot-y (degrees 90.0)) (sp-flt spt-rot-z (degrees -60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2426,7 +2426,7 @@ (sp-flt spt-y (meters 4.5)) (sp-flt spt-z -10240.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x 1193978539) + (sp-flt spt-rot-x 43690.668) (sp-flt spt-rot-y (degrees -30.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2456,7 +2456,7 @@ (sp-flt spt-y (meters 5.0)) (sp-flt spt-z -16384.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 180.0)) (sp-flt spt-rot-z (degrees 0.0)) (sp-flt spt-scale-y (meters 0.5)) @@ -2483,7 +2483,7 @@ (sp-flt spt-y (meters 5.0)) (sp-flt spt-z -16384.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x -970282325) + (sp-flt spt-rot-x -10922.667) (sp-flt spt-rot-y (degrees 60.0)) (sp-flt spt-rot-z (degrees -60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2525,7 +2525,7 @@ (sp-flt spt-y (meters 5.0)) (sp-flt spt-z -16384.0) (sp-flt spt-scale-x (meters 0.3)) - (sp-int spt-rot-x 1193978539) + (sp-flt spt-rot-x 43690.668) (sp-flt spt-rot-y (degrees -60.0)) (sp-flt spt-rot-z (degrees 60.0)) (sp-flt spt-scale-y (meters 1.0)) @@ -2612,7 +2612,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees -60.0)) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) @@ -2635,7 +2635,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2659,7 +2659,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 30.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2731,7 +2731,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees 180.0)) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 255.0) @@ -2754,7 +2754,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2778,7 +2778,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees -90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2850,7 +2850,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 0.5)) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.1) 1.0) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -2872,7 +2872,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees -60.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2896,7 +2896,7 @@ (sp-tex spt-texture (new 'static 'texture-id :index #x1c :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-scale-x (meters 1.0)) - (sp-int spt-rot-x 1186988032) + (sp-flt spt-rot-x 24576.0) (sp-flt spt-rot-y (degrees 90.0)) (sp-rnd-flt spt-rot-z (degrees 120.0) (degrees 120.0) 1.0) (sp-flt spt-scale-y (meters 0.5)) @@ -2910,7 +2910,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/village2/village2-part_REF.gc b/test/decompiler/reference/levels/village2/village2-part_REF.gc index 5e3525e482..96f5911295 100644 --- a/test/decompiler/reference/levels/village2/village2-part_REF.gc +++ b/test/decompiler/reference/levels/village2/village2-part_REF.gc @@ -112,7 +112,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 2.0) (sp-flt spt-scale-x (meters 0.4)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.4)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -269,7 +269,7 @@ (sp-func spt-birth-func 'birth-func-copy-rot-color) (sp-flt spt-num 3.0) (sp-flt spt-scale-x (meters 0.15)) - (sp-int spt-rot-x -970282325) + (sp-rnd-flt spt-rot-x -10922.667 54613.332 1.0) (sp-flt spt-scale-y (meters 0.15)) (sp-flt spt-r 128.0) (sp-flt spt-g 128.0) @@ -2914,7 +2914,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/village3/village3-part_REF.gc b/test/decompiler/reference/levels/village3/village3-part_REF.gc index 748d4f0619..373cf32a45 100644 --- a/test/decompiler/reference/levels/village3/village3-part_REF.gc +++ b/test/decompiler/reference/levels/village3/village3-part_REF.gc @@ -2874,7 +2874,7 @@ (sp-flt spt-y (meters -2.0)) (sp-flt spt-z -1228.8) (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.2) 1.0) - (sp-int spt-rot-x 1182793728) + (sp-flt spt-rot-x 16384.0) (sp-flt spt-rot-y (degrees -50.000004)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) @@ -2919,7 +2919,7 @@ (sp-flt spt-y (meters -0.5)) (sp-flt spt-z -1064.96) (sp-flt spt-scale-x (meters 12.0)) - (sp-int spt-rot-x 1181395627) + (sp-flt spt-rot-x 15018.667) (sp-flt spt-rot-y (degrees -50.000004)) (sp-copy-from-other spt-scale-y -4) (sp-flt spt-r 128.0) @@ -3097,7 +3097,3 @@ ) ) ) - - - -