Commit graph

183 commits

Author SHA1 Message Date
MysterD
feee5eb569 Fixed more memory corruption with object collisions 2023-06-16 17:19:18 -07:00
MysterD
b3cae34234 Add bounds checking to instant warps, and make object collisions dynamic
in size
2023-06-15 20:50:12 -07:00
MysterD
c594179cca Make surface pools infinite 2023-06-15 19:40:34 -07:00
MysterD
3a85b7051e Cleanup 2023-06-11 14:25:28 -07:00
Sunk
a0ff975ec8
Re-introduce a few vanilla bugs under gBehaviorValues (#413)
* Properly set Mario's y vel to 0 on popping

* Re-introduce a few vanilla bugs under gBehaviorValues

The Shell Mario glitch was patched as a side effect to patching a different bug, but several romhacks use it so I need it back.
The ability to collect multiple normal caps at once is needed for hat-in-hand using the hat factory glitch.

* Fix Shell Mario fix

Found the actual reason why the glitch doesn't work and figured that this change shouldn't affect anything else, so I removed its entry from gBehaviorValues.

* Add InfiniteRenderDistance to gBehaviorValues

I'm well aware that disabling the infinite render distance will be very desync prone, however a few glitches, most notably cloning and chuckya double jump, need objects load and unload from render distance.
2023-06-11 14:24:13 -07:00
MysterD
cf7d4bc8d2 Prevent deduplication of area models - it would overwrite the areaIndex 2023-05-18 21:29:57 -07:00
MysterD
b0408a1379 Fix some bugs found in testing 2023-05-18 17:54:29 -07:00
MysterD
41a4fcf516 Keep animations in-bounds 2023-05-18 12:42:18 -07:00
MysterD
ddd2f19ca1 Fix more memory errors 2023-05-18 01:57:36 -07:00
MysterD
f53ffcd491 Keep the previous dynamic pool in memory
Due to sm64 weirdness, I can't reliably free memory at certain points
The hacky solution is to keep the previous dynamic pool in memory,
essentially requiring two frees to actually clear all memory from it
2023-05-17 22:33:14 -07:00
MysterD
93020c04e5 Prevent broken mods from messing up the sync table of others 2023-05-17 00:01:09 -07:00
MysterD
18bf5847a2 Prevent rending of corrupted graphnodes, only run lua GC once per frame 2023-05-16 21:49:13 -07:00
MysterD
00e64fbf6c Add backwards compatibility for cur_obj_is_mario_ground_pounding_platform() 2023-05-16 00:37:30 -07:00
MysterD
688cd3b399 Rewrite how models are loaded and retrieved... yet again 2023-05-16 00:01:10 -07:00
MysterD
ed163203d8 Make gEnvironmentRegions safer 2023-05-15 12:04:07 -07:00
MysterD
2083242b66 Fixed several crashes and errors found in static analysis 2023-05-15 01:15:20 -07:00
MysterD
9a99ee492e Fix crash in retrieve_animation_index() 2023-05-14 12:30:55 -07:00
MysterD
064a60526a Redo how surface memory is handled 2023-05-14 12:04:08 -07:00
MysterD
8129ab7665 Prevent crashes and hangs 2023-05-13 03:07:20 -07:00
MysterD
bbdf51bc33 Remove the main pool 2023-05-13 01:49:54 -07:00
MysterD
6798b2db29 Make anim dma table dynamic 2023-05-13 01:44:40 -07:00
MysterD
c45e76c870 Switch all mempools to dynamic memory 2023-05-12 22:10:27 -07:00
MysterD
4aa4386319 Make envfx use dynamic memory 2023-05-12 21:30:16 -07:00
MysterD
57b06e3e09 Rename AllocOnlyPool to DynamicPool, add GrowingPool 2023-05-12 18:53:25 -07:00
MysterD
2341a0be78 Make surfaces use dynamic memory 2023-05-12 17:16:03 -07:00
MysterD
bc73468e64 Load all models into dynamic memory, and store them in a way for reuse 2023-05-12 16:15:35 -07:00
MysterD
e391faf574 WIP: start making memory management better 2023-05-12 13:19:10 -07:00
MysterD
cc1ec3e81f Prevented hundreds of additional crashes from the Mod API 2023-05-11 20:33:21 -07:00
MysterD
82945f9c0f Fix some problems found in static analysis 2023-05-11 02:17:10 -07:00
MysterD
039be71266 Prevent even more possible crashes from the mod api 2023-05-11 01:46:27 -07:00
MysterD
f785050ccb Fix more possible crashes 2023-05-11 00:19:01 -07:00
MysterD
8ed8fc31d2 Fix another ~200+ crashes that could happen from mods 2023-05-10 21:28:13 -07:00
MysterD
d30b1e61a6 Add a container to animation tables so that we can track their length and stay in bounds 2023-05-10 20:57:35 -07:00
MysterD
b22230db5d Merge branch 'dev' of github.com:sm64ex-coop-dev/sm64ex-coop into dev 2023-05-10 15:21:00 -07:00
PeachyPeach
52e4bac21a
fixed disable acts (#390) 2023-05-10 17:07:29 -04:00
MysterD
b863cc80c8 Prevent several possible crashes and hangs, limit more struct fields to read-only 2023-05-10 13:25:41 -07:00
MysterD
1ee3fd1d13 Fixed ~240 possible crashes 2023-05-05 23:59:58 -07:00
Isaac0-dev
657feb5d7b
fix some crashes and bugs (#381)
- fix crash in bhv_lll_bowser_puzzle_piece_update (thanks to djoslin)
- fix crash in platform_on_track_act_init
- fix chat commands not working on dev builds
- log when the crash handler is called
- if a custom level tries to set an invalid background, change it to BACKGROUND_OCEAN_SKY
2023-05-04 13:26:50 -07:00
MysterD
f82f5149f4 Disable accurate interpolation on 32 bit 2023-05-04 01:29:08 -07:00
Agent X
52d70e33a5
Expose some painting functions to Lua (#357)
* Expose some painting functions to Lua

get_painting_warp_node
initiate_painting_warp

* Change initiate_painting_warp u8 to s16

In initiate_painting_warp, pass in -1 to not override the painting index.

* Add sanity checks to get_painting_warp_node

* Add requested changes
2023-05-03 00:54:57 -07:00
MysterD
01d91ff07d Added profiling to more places to make lag easier to track down 2023-04-30 17:39:45 -07:00
MysterD
c1e33f5e70 Doubled extended model id size, avoided using vanilla object slots 2023-04-24 01:01:50 -07:00
MysterD
6346293468 Deterministically set the sync ID for level objects that spawn from spawninfo, macros, and special 2023-03-26 21:10:38 -07:00
Agent X
c79a001f5f
Make fixed collision rounded corners toggleable (#315) 2023-03-22 21:02:43 -04:00
Agent X
7f6f7fea47
Fix NaN position bug with fixed collision (#312)
* Fix fixed collision NaN position

Thanks to @Marioiscool246 for figuring this out.
Sometimes Mario's position will become NaN when doing specific things, this fixes that.

Co-Authored-By: Marioiscool246 <27823923+Marioiscool246@users.noreply.github.com>

* Formatting

Co-Authored-By: Marioiscool246 <27823923+Marioiscool246@users.noreply.github.com>

* Fix ordering

* Final fix(?)

---------

Co-authored-by: Marioiscool246 <27823923+Marioiscool246@users.noreply.github.com>
2023-03-20 21:13:02 -04:00
Agent X
4fd13c6bda
Bug fixes for mostly the title screen (#308)
- Add NULL checks to DynOS warps
- Change checks for skipping interpolation on the original title screen for much better ones
- Interactions are no longer processed if you are on the title screen
- Re-add some of the legacy demo code for the original title screen
- Fix disconnecting on the original title screen
- Fix disconnecting on the act select screen
- Fix interpolation crash
2023-03-18 17:14:01 -04:00
Agent X
4aada40a62
area_create_warp_node and area_get_warp_node* (#270)
* area_get_warp_node*

- Added area_get_warp_node to Lua
- Added area_get_warp_node_from_params to Lua

* area_create_warp_node and warp constants

Here you go Isaac!

* Add object param

* Commits work again, pushing everything else
2023-02-20 21:47:32 -05:00
Isaac0-dev
3bc0b13e20
ACTIVE_FLAG_DORMANT (#281) 2023-02-18 23:45:13 -05:00
Isaac0-dev
0b6f0dcf0e
Give Lua mods access to a form of level script preprocessing (#258)
* Give Lua mods access to a form of level script preprocessing

* Disable acts setting
2023-01-31 07:24:56 -05:00
wRadion
34a0b12e6c
Fixed Vanish floors/ceilings (non-wall surfaces) (#225)
In the vanilla game, vanish does only work with walls specifically, and not floors and ceilings. This is because the check for vanish surfaces was only implemented with the walls. So I simply pasted the same code but with the floors and the ceilings.
2022-11-18 18:39:17 -08:00