• Changed the generic object death function to now also check that an object has landed and is over lava before killing it. Previously it would die instantly if it was above lava which resulted in objects randomly dying above lava
• Also changed the same function to kill a non-buoyant and killable object (e.g. goombas) right when it touches water. Previously it would slowly sink to the bottom and then instantly die upon touching the floor underwater which is strange.
• Changed where lava checks are done so they are done in the same place as other object flag checks. This avoids bugs where e.g. objects die when touching the edge of a platform that is over lava, because the ground flags are updated, then the object's floor is updated to be over the lava, and then the lava move flags are updated causing the object to think it is over lava and touching ground at the same time (making it die)
• Fixed the coin flicker define for regular non-bully coins because apparently it just never worked and no-one noticed? Only the coins that come from bullies worked with this define and I guess people only ever tested coins in lava with bullies. I rewrote the coin behavior to be a little closer to the bully one. I think in the future the two types of moving coins could easily be merged into one object, they don't act visibly different at all.
Tested the PR with a lot of goombas being dropped into lava/water and also this stuff is in Mario Builder so I've been testing it there too. Feel free to test more.
* Move audio TTLs to improve dcache
Saves over 100us even when audio is idle
* Improve additional audio runtime by reducing some unnecessary float math
* Pause channel/layer processing on sfx channels when idle
* Fix possible floating point UB/crash with gPitchBendFrequencyScale
* Preserve vanilla reverb downsampling behavior whenever BETTER_REVERB isn't in use (#727)
* Disable unrelated buttons controlling S&Q menu and pausing (#728)
* Update Dockerfile to Ubuntu 22.04 as 18.04 is EOL (#731)
* Update Dockerfile to Ubuntu 22.04 as 18.04 is EOL
* Dockerfile: Use modern syntax for mounting
* Add gcc-mips-linux-gnu to dockerfile
* Add DEBUG_ASSERTIONS define and enable it by default (#730)
* Add relevant model ID asserts to level script load commands (#722)
Co-authored-by: someone2639 <someone2639@gmail.com>
* Define changes for transitions, two bug fixes (#739)
* Fixed one or two bugs, cleaned up a few things, put every non vanilla styled change into POLISHED_TRANSITIONS
And renamed set_and_reset_transition_fade_timer
* Undid the renaming of set_and_reset_transition_fade_timer as suggested
* Fix silhouette occlusion layers rendering twice (#748)
* Fix Boo's Accelerating Upwards During Textbox (Vanilla Bug) (#742)
* Add assert for beginning geo layout command (#738)
* geo layout assert
* new idea
* Change assert message, add crash screen newline support, and change debug safeguards
* Fix weird text on Project64 GLideN64 (#715)
* Update version to 2.1.3 (#754)
* Fix rumble Issues (#756)
* Missed important use of thread6 stack define
* Fix build issues with rumble
---------
Co-authored-by: Gregory Heskett <gheskett@gmail.com>
Co-authored-by: Denis Kopyrin <aglab3@gmail.com>
Co-authored-by: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com>
Co-authored-by: someone2639 <someone2639@users.noreply.github.com>
Co-authored-by: someone2639 <someone2639@gmail.com>
Co-authored-by: Lilaa3 <87947656+Lilaa3@users.noreply.github.com>
Co-authored-by: Arceveti <73617174+Arceveti@users.noreply.github.com>
Co-authored-by: 1ted59 <24933689+1ted59@users.noreply.github.com>
Co-authored-by: arthurtilly <32559225+arthurtilly@users.noreply.github.com>
Co-authored-by: iProgramInCpp <iprogramincpp@gmail.com>
* implemented a form of slope fix
* fixed the slope fix to not allow for hyper cheese
* implemented gheskett's suggestions
* Added space between comment and define
Co-authored-by: Gregory Heskett <gheskett@gmail.com>
---------
Co-authored-by: dnvic <business@dnvic.com>
Co-authored-by: Gregory Heskett <gheskett@gmail.com>
Included in the PR will be a list of comparisons.
This does two things:
1. Restores the `dl_ia_text_tex_settings` from the original Super Mario 64. Not sure why this was changed.
2. Changes the S coordinate of two vertices from `vertex_ia8_char` from 480 to 512. This is an error from the original game.
If a `Go On A Ghost Hunt` Boo is killed while it has a gravity of -1 (at the bottom of its oscillation), and does not hit a wall, it will keep the same negative gravity and continue moving until the textbox is closed. Boo Y speed isn't capped in this scenario, so the constant -1 gravity leads to the boo moving upwards at an increasing rate.
This leads to issues in `boo_act_4`. The distance eventually increases to a point where the boo object is too far to be returned in `cur_obj_nearest_object_with_behavior`.
This can have 2 buggy effects:
- the wrong dialog box being brought up if the textbox is delayed (easiest to do by hanging on a ledge).
- the puzzle solved jingle being played incorrectly if you wait in the textbox long enough
This doesn't actually cause issues with King Boo, it just brings up the wrong text box. King Boo spawning is unaffected by this bug.
The fix is to stop the boo after the death animation has finished playing, stopping the boo from accelerating upwards. I don't believe this to cause any other issues (the boo is already dead after all!)
Thanks to Kyman for finding this bug.