diff --git a/grind.log b/grind.log deleted file mode 100644 index 5a9ac67c..00000000 --- a/grind.log +++ /dev/null @@ -1,39 +0,0 @@ -==899764== exp-sgcheck, a stack and global array overrun detector -==899764== NOTE: This is an Experimental-Class Valgrind Tool -==899764== Copyright (C) 2003-2017, and GNU GPL'd, by OpenWorks Ltd et al. -==899764== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info -==899764== Command: ./build/us_pc/sm64.us.f3dex2e -==899764== Parent PID: 10640 -==899764== ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 ---899764-- warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0x93 - -parse DIE(readdwarf3.c:3123): confused by: - <0><19f35>: Abbrev Number: 1 (DW_TAG_compile_unit) - DW_AT_producer : (indirect string, offset: 0x6663): clang LLVM (rustc version 1.39.0-nightly (6ef275e6c 2019-09-24)) - DW_AT_language : 28 - DW_AT_name : (indirect string, offset: 0x66a4): src/libstd/lib.rs - DW_AT_stmt_list : 46860 - DW_AT_comp_dir : (indirect string, offset: 0x66b6): /rustc/6ef275e6c3cb1384ec78128eceeb4963ff788dca/ - DW_AT_??? : 1 - DW_AT_low_pc : 0x0 - DW_AT_ranges : 240976 -parse_type_DIE: ---899764-- WARNING: Serious error when reading debug info ---899764-- When reading debug info from /home/djoslin/sm64ex-coop/lib/discordsdk/libdiscord_game_sdk.so: ---899764-- confused by the above DIE -==899764== Warning: noted but unhandled ioctl 0x6444 with no size/direction hints. -==899764== This could cause spurious value errors to appear. -==899764== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper. -==899764== Warning: unimplemented fcntl command: 1033 -==899764== Warning: unimplemented fcntl command: 1033 -==899764== Warning: bogus DWARF3 info: overlapping stack blocks -==899764== Warning: bogus DWARF3 info: overlapping stack blocks -==899764== Warning: bogus DWARF3 info: overlapping stack blocks -==899764== Further instances of this message will not be shown diff --git a/src/engine/level_script.c b/src/engine/level_script.c index 02777d16..fe9a14ac 100644 --- a/src/engine/level_script.c +++ b/src/engine/level_script.c @@ -377,6 +377,11 @@ static void level_reset_globals(void) { gAreas[i].unk04 = NULL; } + // clear mariostate spawninfo pointers + for (int i = 0; i < MAX_PLAYERS; i++) { + gMarioStates[i].spawnInfo = NULL; + } + // free models stored in dynos dynos_model_clear_pool(MODEL_POOL_LEVEL); } diff --git a/src/game/behaviors/chain_chomp.inc.c b/src/game/behaviors/chain_chomp.inc.c index 60d3b900..23751756 100644 --- a/src/game/behaviors/chain_chomp.inc.c +++ b/src/game/behaviors/chain_chomp.inc.c @@ -38,7 +38,7 @@ void bhv_chain_chomp_chain_part_update(void) { obj_mark_for_deletion(o); network_send_object(o); } else if (o->oBehParams2ndByte != CHAIN_CHOMP_CHAIN_PART_BP_PIVOT) { - struct ChainSegment *segment = (o->oBehParams2ndByte <= 4 && o->parentObj) + struct ChainSegment *segment = (o->oBehParams2ndByte >= 0 && o->oBehParams2ndByte <= 4 && o->parentObj) ? &o->parentObj->oChainChompSegments[o->oBehParams2ndByte] : NULL; @@ -454,13 +454,6 @@ static void chain_chomp_act_unload_chain(void) { o->oAction = CHAIN_CHOMP_ACT_UNINITIALIZED; if (o->oChainChompReleaseStatus != CHAIN_CHOMP_NOT_RELEASED) { - if (o->oChainChompSegments) { - for (u8 i = 0; i < 5; i++) { - struct Object* segment = (struct Object*)&o->oChainChompSegments[i]; - if (!segment) { continue; } - obj_mark_for_deletion(segment); - } - } obj_mark_for_deletion(o); obj_mark_for_deletion(o->parentObj); } diff --git a/src/game/spawn_object.c b/src/game/spawn_object.c index 36fe439b..bb4a1e49 100644 --- a/src/game/spawn_object.c +++ b/src/game/spawn_object.c @@ -321,6 +321,9 @@ struct Object *allocate_object(struct ObjectNode *objList) { obj->header.gfx.pos[1] = -10000.0f; obj->header.gfx.pos[2] = -10000.0f; obj->header.gfx.throwMatrix = NULL; + obj->header.gfx.angle[0] = 0; + obj->header.gfx.angle[1] = 0; + obj->header.gfx.angle[2] = 0; obj->coopFlags = 0; obj->hookRender = 0; diff --git a/src/pc/lua/smlua_hooks.c b/src/pc/lua/smlua_hooks.c index 152cf0b5..cec32e63 100644 --- a/src/pc/lua/smlua_hooks.c +++ b/src/pc/lua/smlua_hooks.c @@ -1135,10 +1135,11 @@ int smlua_hook_behavior(lua_State* L) { struct LuaHookedBehavior* hooked = &sHookedBehaviors[sHookedBehaviorsCount]; u16 customBehaviorId = (sHookedBehaviorsCount & 0xFFFF) | LUA_BEHAVIOR_FLAG; - hooked->behavior = calloc(3, sizeof(BehaviorScript)); + hooked->behavior = calloc(4, sizeof(BehaviorScript)); hooked->behavior[0] = (BehaviorScript)BC_BB(0x00, objectList); // This is BEGIN(objectList) hooked->behavior[1] = (BehaviorScript)BC_B0H(0x39, customBehaviorId); // This is ID(customBehaviorId) - hooked->behavior[2] = 0; + hooked->behavior[2] = (BehaviorScript)BC_B(0x0A); // This is BREAK() + hooked->behavior[3] = (BehaviorScript)BC_B(0x0A); // This is BREAK() hooked->behaviorId = customBehaviorId; hooked->overrideId = noOverrideId ? customBehaviorId : overrideBehaviorId; hooked->originalId = customBehaviorId; // For LUA behaviors. The only behavior id they have IS their custom one.