Makes it possible to rely on the official repo.
Ideally the following instructions would also be added to the wiki for opensuse:
```
sudo zypper install cross-mips-binutils git capstone pkgconf python311 cross-mips-gcc14
# install packages under devel_basis, equivalent to build-essential in deb
sudo zypper install --type pattern devel_basis
```
* Add Arthurtilly to the CODEOWNERS file
* Update CODEOWNERS file to list each global owner on the same line
This should (allegedly) fix the issues of only the last entry being treated as an owner for reviews.
* Remove thecozies from CODEOWNERS file :(
---------
Co-authored-by: Gregory Heskett <gheskett@gmail.com>
Allows fast64 to know a repo's ideal settings as soon as decomp path is picked.
Settings are the default except for:
Matstack is on
Microcode is set to EX2
Force Extended RAM is off because hackersm64 already has it enabled by default
Refresh is set to Refresh 13
This allows referencing a custom UNFLoader path to be used, ideally for placing on the C drive for WSL instances. UNFLoader tends to hang for an unbearably long time when saved somewhere within the WSL directory structure, and simply using the Linux build isn't an option because it can't access Windows USB devices trivially.
* Add more audio banks and add some occasional mappings for audio macros
* Remove config define for extra sound banks
---------
Co-authored-by: gheskett <gheskett@gmail.com>
If a spawned coin lands on the same frame it hits the peak of its arc, it will never have vertical speed < 0, so it will never be collectible.
Making this also set the coin to tangible if it has 0 speed fixes this issue.
Blue coins can be collected more than once if collected on the final frame of the switch timer when BLUE_COIN_SWITCH_RETRY is enabled. Fixing this on its own isn't enough though, as the blue coin switch also doesn't check for whether that coin was collected when it resets.
This allows hack collaborators to toggle debug features such as TEST_LEVEL without the need of pushing it up and negatively impacting other hack contributors. This is also useful for general HackerSM54 development, since it may be desirable to have PUPPYPRINT_DEBUG enabled by default or to not have to worry about pushing config defines up to a development branch that risk getting merged later on.
To use, simply create a new config_local.h file and place it in the config folder. Add #pragma once to the top of the file and add all the defines you wish! If you wish for something to be undefined when it's enabled by default, simply use #undef as opposed to a commented out #define. Use a combination of #undef and #define if you wish to change an existing value of a define. This local configuration will be completely ignored if DISABLE_ALL is being used in config_debug.h.
Regarding HackerSM64 Development: All feature developers are still responsible for making sure their features work in all scenarios regardless of whatever they have toggled in this file by default. This config file may be convenient but it is not an excuse to not properly test your changes!
rnc1 has noticeably slower load times in vanilla than yay0 does. gzip and mio0 are pretty useless and can be yeeted from the repo, but that's not part of this PR's scope.
• 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.
* 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
* add displaylist macros
* implement displaylist macro in memory.c
* API update
* implement displaylist macro on all 'hot' code paths
* Remove the macro entirely
* rename tmpDL
* remove the other two macros
* catch the last 2 missing statements
---------
Co-authored-by: someone2639 <someone2639@gmail.com>
* math util cleanup
* clean up min/max 3 and also distance and angle functions
* improve pipelining and make macros safe
* macros safer and cleaned approaches
* fix build
* made sure puppycam builds (and fixed unused var warnings)
* added 32 bit mins and maxs
* removed extraneous mat stack index decrement in geo_process_camera (#708)
* Fixed typo in FCR enums (#707)
* v2.1.1
---------
Co-authored-by: Matt Pharoah <mtpharoah@gmail.com>
* Cannon render mode fix
Slipped past me.
* Removed sharp transitions
I like the idea but it really isn´t vanilla and causes issues.
Might be worth revisiting but for now lets just get rid of it.
* fixes
Missing render mode set for transitions, reduced display list alloc for cannon
tested more this time
* Added functions to access and manipulate the fcr31 register
* Improved WiiVC emulator check to avoid false positives
* Updated comments
* Moved float.h to include directory
* Track whether the RCP hang timer has started to prevent double setting
* removed single letter struct field
* remove debug lines
---------
Co-authored-by: someone2639 <someone2639@gmail.com>
* Added config option for previewable blue coins
* Clean up previewable blue coin implementation to only be a couple lines
---------
Co-authored-by: Colin Tong <tongcolin@live.ca>
* Culling fix
Precison of half fov horizontal being equal to or above 2 leads to many issues. using 1.5 would break rt64 and other emulators with ultra widescreen.
Vertical culling will be disabled by default until 3.0
* Improved emu checks and naming
* Comment changes
* Small typo fix
* Start work on envmap rotation stuff
* n64graphic envmap rotation working
* Add comment to rotation function
* Fix DLs of non 32x32 env maps, fix envmap rotation
* fix metal flying vanish cap
* fix metal mario's medium poly butt
* new asset version for flipped env maps
* added missing env textures to extract script
* restore asset_needs_update
* Skip asset_needs_update calls if local version matches new version
* removed the goddard textures from envmap rotation
---------
Co-authored-by: mineqwerty <mineqwerty25@gmail.com>
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* Add functional changes to inertia to support only specific directions specified in the config (needs cleanup)
* Reduce number of inertia defines
* Update Platform Displacement 2 define description
* comment adjustments
* Look for shared baserom directory using XDG_DATA_DIR instead of polluting the home directory
* move global baserom folder detection to a new file that the makefile can use
* ignore __pycache__ in tools
* edit make patch to use global baserom detector
* Extract jp/sh/eu from global folder too
* genericize asset extraction for all versions
* force at least US to extract
---------
Co-authored-by: Matt Pharoah <mtpharoah@gmail.com>
Co-authored-by: someone2639 <someone2639@gmail.com>
* remove gen_asset_list (frozen)
* move format.sh
* remove rasm2armips (decompilation helper)
* remove patch_libmalloc (IDO exclusive)
* remove unnecessary sha1's and makefile definitions
* remove libultra math script (IDO exclusive)
* remove patch_elf_32bit
* actually remove bitwidth tool
* remove the need for all the sha1 files
* extract_assets can now find a baserom named anything
* added error handling and some more graceful error handling
* formatting the error message
* more relevant error info
* add a check for a roms folder
* fix gitignore to prevent patch_elf from being re-committed
* naming clarity; change to baseroms/; feedback addressed
* skip rom verification if assets have been extracted
* changes addressed
---------
Co-authored-by: someone2639 <someone2639@gmail.com>
* Improved transitions
Code quality improvements.
Shape transitions now all scale down to 0 instead of 16 (mario and bowser).
Ease in was added which leads to far smoother transitions.
HD_TRANSITIONS define added, makes use of the tex edge render mode to deliver smooth transition textures.
lerpf was added to math utils.
* Cleaner textures, rounding only during vertex creation
* Another attempt
* cozies naming suggestion
* Improvements and suggestions
SHARP_TRANSITION_TEXTURES is now off by default (I still think the textures for it could be improved).
lerpf, to_smoothstop, smoothstart, smoothstop and smoothstep have all been added.
make_vertex has been inlined.
make_simple_vertex has been added (colourless vertex).
Transition colors (and canon colors) are now defined using primative colour instead of setting individual vertices color´s.
Transition´s now use smoothstep (ease-in-out) instead of ease out only.
Naming has been improved.
* Proper function inling and removal of GBI_FLOATS variant of make_vertex and make_simple_vertex
* More requested changes
* Accidental final new line removal fixed
* Comment about pop in fix.
* Comment fix
The issue with writing comments for stuff is when you want to change code later on.
* Added emulator detection
* Fixed missing assignments
* Disable interrupts around the count factor test
* Added more comments to emutest
* Changed PJ64 enum values so the versions work as a bitfield
* Updated README
* Fixed comments
* Updated enum values so you can safely AND and OR all emulator version flags together
* Remove redundant gIsConsole, gIsVC, and gCacheEmulated global variables
* Changed console check to be more future proof against Ares
* Use assembly file instead of casting to a function pointer
* Moved round_double_to_float back to its own compilation unit
* Moved the ParallelN64 check before the Ares check for better future-proofing
* Align pj64_get_count_factor_asm with cache lines... not that it actually matters for pj64
* Adjusted some comments
* Made emulator check thread-safe on emulators that emulate PI timings
* Added gIsConsole macro for backwards compatibility
* Added cen64 to INSTANT_INPUT_BLACKLIST
* Updated comment
* Dynamic collision fixes + actual OR_LONG
Dynamic collision will now check Mario´s vertical distance seperately, this is done to implement a check for when mario is above an object, in which case the collision distance is expanded by 2000 units to avoid shadows not appearing.
Or long works correctly now, replaces the behaviour command NOP_1.
* Micro optimzation
Avoids sqrtf by using the squared lateral distance and squaring the the collision distance for the comparison.
* Requested changes
* minor change
* Re ordering
* How
* Add SET_ECHO level script command + minor BETTER_REVERB refactoring
* Add Puppyprint debug page for trying out different BETTER_REVERB presets and configurations
Also fix a missing Puppyprint enum that was causing issues
* Modify Puppyprint BETTER_REVERB page + other minor improvements
* Swap order of RSP commands to allow reverb downsampling to sound more similar to that of without downsampling
* yeet undefined_syms; IPL3 documentation; theoretical addition of checksum skip and initial DMA length/location change
* another comment about how to set dma len
* comment is now correct in ultratypes
* do the rename
* remove insinuations that ipl3 can be modified
---------
Co-authored-by: someone2639 <someone2639@gmail.com>
* Culling improvements + earlier GRAPH_RENDER_INVISIBLE check
GRAPH_RENDER_INVISIBLE is now checked during geo_process_object before any uncessesary transformation is applied to
the object, translation is still calculated for sound even if the object is invisible.
Half fov is now computed during geo_process_perspective.
Vertical culling has been added (only when bellow the screen to prevent shadow´s being culled).
Emulators have basically infinite culling aspect ratio to prevent early culling with widescreen viewport hacks.
Default culling radius is now a define.
This was written by both me and Kaze Emanuar, he provided the suggestion to use absf and informed me of
integer division being remarkably slow (although it´s only used once during geo_process_perspective).
* Badly placed new line (major fix)
* integer
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* parenthesis
doesn´t affect order of operation, just for code quality
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* uncessary whitespace
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
---------
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Now its just part of HackerSM64 entirely, and HackerSM64 will be the source of all changes (as long as said changes can reasonably apply to homebrew games)
* Disable stereoheadseteffects and stub out all known code references via define
By effect this also completely removes Headset sound options from the game config, as it serves no purpose whatsoever compared to stereo.
Because it's stubbed out everywhere rather than only the necessary locations to prevent it, this should boost audio runtime slightly for everything, not just the stuff that actively used it.
* Rename DISABLE_HEADSET_STEREO_EFFECTS to ENABLE_HEADSET_STEREO_EFFECTS
* Reorganize and reduce audio Note struct
* Add performance to define description
* Rename ENABLE_HEADSET_STEREO_EFFECTS to ENABLE_STEREO_HEADSET_EFFECTS
Vanilla's ramping table sounds absolutely horrendous, most noticeably when it comes to slow volume fade-ins/outs. By default, precision has been increased by 4x vanilla US, which overall has an insignificant impact on performance. This is still half as precise as EU's volume ramping table, that's about the point where additional memory and performance aspects are impacted more significantly.
This allows sounds to start instantly without any fade-in. Using new soundbanks with delay values of 0 will not compile with base decomp, but old decomp-compliant soundbanks will work with this commit.
Refactored everything to be more memory efficient and execute fewer function calls than prior
Also accidentally discovered a significant bug with the audio modes always being forced to stereo so this is definitely 2.1 scope lmao
* Start samples at full velocity when using envelopes that start with a delay of 1
This can help eliminate sample artifacting that happens during a transition between a sudden fade-in into normal volume. It's not completely eliminated due to some processing weirdness, but it's a massive improvement.
* Fix vanilla issue causing misalignment when samples are initialized and played back with low attack values
NOW the artifacting is actually gone for real
* Improve artifacting bugfix
The first solution would've honestly been satisfactory, but this one seems to be slightly more accurate while actually removing code rather than adding it
* Fix rooms and doors
* Update object_helpers.c
* Update object_list_processor.h
* Update object_list_processor.c
* Fix formatting
* Revert a formatting
* Clean up geo_switch_area
* Clean up geo_switch_area (more)
* Move TransitionRoomData struct
* Revert star door collision check optimization
* Move load_object_collision_model and bhv_door_rendering_loop back out of star_door.inc.c
* Combine metal door model IDs
* Revert metal door sound fixes
* Add light configuration settings to BETTER_REVERB
This can reduce runtime demand down to ~75% of the standard demand, at the cost of the configurability of generally more advanced parameters
* Reformat the BETTER_REVERB preset entries to be easier to look at
* :peterVOID:
* haha lol formatting change definitely related to reverb yes this isn't unwarranted at all lmao hehe hoho
* Puppyprint text size
* Update puppyprint.c
* Revert broken render_multi_image changes
* revert multi image tweak
parallel momento
* Update puppyprint debug colors to work with new hexadecimal system
* Puppyprint color reversion to currEnv + some bugfixes
* Remove a pointless color array
* Add forgotten comment
* i can type yes definitely
* Fix some puppyprint formatting edge cases
* Missed one last puppyprint edge case
* Additional strLen check
* Variable length fix + command ignoring strlen
* type changes
* Update puppyprint.c
* Box clamping
* Revamped profiling, fixed right alignment
* Update puppycam2.c
* Deferred printing
* Update puppyprint.c
* Fixed negatives being stupid
* Puppyprint Memory view rework
* Update level_script.c
* tweaks
* Fix new line spacing with different scales
also small bit of optimisation
* Spacing fixes
* Lightweight text option
* puppyprint debug now using light text where applicable
* Update puppyprint.c
* Update puppyprint.c
* level select menu
* merge profilers into one WIP
* Fully ascii compliant
* Finishing touches hopefully
* Update puppyprint.c
* new font
* vanilla font
* o
* Update hud.c
* last kerning fixes
* Requested changes
* requested changes
* fix the j
* requested changes
* change ur clothes
* Update surface_collision.c
* requested changes
* Update puppyprint.h
* Update camera.c
* .
* Update puppyprint.c
* Update puppyprint.c
* Update puppyprint.c
* fix J
* font
* font system rework
* ia4 outline font
* pain
* fix deferred printing
* fix format change
* Add audio profiling to Puppyprint Debug
* Optimize audio profiling substantially
* Minor audio optimizations
* requested changes
* oops accidentally commited 6 lmfao
* Update game_init.c
* Update puppyprint.c
* Update puppyprint.c
* Improve Puppyprint deferred prints
This is safer, more readable, and more runtime efficient all in the same package
* change return type
* fix building with profiler only
* Update profiling.c
* fix upscaled texture rectangles from multi image
---------
Co-authored-by: gheskett <gheskett@gmail.com>
* Update game_init.c
* fuck you nintendo fuck you nintendo fuck you nintendo fuck you nintendo fuck you nintendo fuck you nintendo
* Update segment2.c
* Update model.inc.c
* Small improvements to object loading within rooms
* Only check if Mario is in the same room as the object once
* Implement object render distance within rooms (from thecozies)
* Remove sLevelsWithRooms (also from thecozies)
Honestly surprised this wasn't already in Hacker
* Remove comment for sLevelsWithRooms in config_game
* Make compatible with the painting objects PR
Move room detection to get_room_at_pos (from Arceveti)
* address enum comment
* Replace debug libultra builds with their ido counterparts
This is necessary because GameCube controllers apparently rely on the IDO build, also the release build is IDO anyway
* Remove fallthrough warnings from usb/debug.c
* remove need for debug libultra with unf and use lib define in ld
Co-authored-by: thecozies <collinpferguson@gmail.com>
* Bugfix: BETTER_REVERB starts before buffers are ready
* Add support for preset options to be used with BETTER_REVERB
* Some BETTER_REVERB cleanup
* The funny whoops
* Address suggested level script change
* Bugfix: useReverb crashes when disabled
* Allow window size override for vanilla-esque BETTER_REVERB presets
* Remove unnecessary downsampling limit check
* Fix up a few things + some slight reformatting
* Add light documentation to the BETTER_REVERB parameters
* Adjust BETTER_REVERB preset types to make more sense
* Reset BETTER_REVERB data buffer to be unallocated when not in use
* Properly disable BETTER_REVERB when disabling all reverb processing
* Remove an unnecessary BETTER_REVERB ifdef
* Remove D_80332108
* Revise BETTER_REVERB config description
* various tweaks to tackle redundancy
* Update collision.inc.c
* inline the function
* fix surface denorms
* oops forgot to remove a comment that I just proved false lol
* stack asserts
* Update main.c
* Update main.c
* fix bug plural s
* Update main.c
* comment
Optimize vibrato to even exceed vanilla's implementation, all without restricting usability from the current implementation. This should save up to about 1ms of audio runtime.
* Imminent fixes for bugs found on master branch (#512)
* The vanilla level checks define for Yoshi is inverted, causing him to require 120 stars when it is off and appear at 0 stars when it's on
* The downwarp fix results in Mario levitating in midair when grabbing Bowser midair. While downwarps should still be fixed, the change should be reverted immediately until a better fix is made.
* Some checks of Mario's floor class were using the wrong defines, which can lead to unexpected behavior in the event anyone wants to reorder surface types. By default the SURFACE_CLASS_SLIPPERY and SURFACE_SLIPPERY defines have the same value, which is why this mistake is hard to notice.
* The firsty frames define was implemented poorly, not allowing for vanilla firsty behavior no matter what the values were set to. This has been reverted, while avoiding the UB in the original vanilla code.
* Removed the ledge grab changes that fix QSLGs and change the false ledgegrab define since Arceveti wanted to in his PR
* Update version to 2.0.4 (#515)
* HackerSM64 2.0.5 (#517)
* Bugfix: race condition with accessing cleared audio memory pools
* Bugfix: skyboxes access tiles out of range when looking straight down (#518)
* Vscode fixes (#516)
* Revert s32 angles and remove Angle typedef usage (#529)
* Fix some surface shadowing (#531)
* Delete rtc.h
* Remove `wait_for_audio_frames()`
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Co-authored-by: Arceveti <73617174+Arceveti@users.noreply.github.com>
Co-authored-by: JoshDuMan <40190173+JoshDuMan@users.noreply.github.com>
* Update VERSION.txt (#534)
* HackerSM64 2.0.6 (#539)
* revert random_u16 to be a u16 (#538)
* Added safety gcc math flags (#537)
* removed useless compilation flags that could cause performance loss
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Co-authored-by: thecozies <collinpferguson@gmail.com>
* Update VERSION.txt
HackerSM64 2.0.6
* Add GCC opt flag to suppress warnings
* v2.0.7
* 2.0.8 (fix more compiler warnings) (#543)
* fix Waddress in mario_step.c
* fix Winfinite-recursion in unused dynlist_proc function
* in fact remove the offending function entirely
* fix warnings in RNC decompress functions
* update version
* fix version in VERSION.txt
premature on my part, will update it to 2.0.10 next time
Co-authored-by: someone2639 <someone2639@gmail.com>
Co-authored-by: arthurtilly <32559225+arthurtilly@users.noreply.github.com>
Co-authored-by: axollyon <20480418+axollyon@users.noreply.github.com>
Co-authored-by: Gregory Heskett <gheskett@gmail.com>
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Co-authored-by: JoshDuMan <40190173+JoshDuMan@users.noreply.github.com>
Co-authored-by: thecozies <collinpferguson@gmail.com>
Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: someone2639 <someone2639@users.noreply.github.com>
Co-authored-by: someone2639 <someone2639@gmail.com>
* fix Waddress in mario_step.c
* fix Winfinite-recursion in unused dynlist_proc function
* in fact remove the offending function entirely
* fix warnings in RNC decompress functions
* update version
* fix version in VERSION.txt
premature on my part, will update it to 2.0.10 next time
Co-authored-by: someone2639 <someone2639@gmail.com>
* Going below 100 coins and getting 100 coins again will no longer result in multiple 100 coin stars spawning
* 100 coin stars can no longer clip into ceilings
* Renamed set_home_to_mario to spawned_star_set_target_above_mario since it's a more descriptive name of what it does
* Imminent fixes for bugs found on master branch (#512)
* The vanilla level checks define for Yoshi is inverted, causing him to require 120 stars when it is off and appear at 0 stars when it's on
* The downwarp fix results in Mario levitating in midair when grabbing Bowser midair. While downwarps should still be fixed, the change should be reverted immediately until a better fix is made.
* Some checks of Mario's floor class were using the wrong defines, which can lead to unexpected behavior in the event anyone wants to reorder surface types. By default the SURFACE_CLASS_SLIPPERY and SURFACE_SLIPPERY defines have the same value, which is why this mistake is hard to notice.
* The firsty frames define was implemented poorly, not allowing for vanilla firsty behavior no matter what the values were set to. This has been reverted, while avoiding the UB in the original vanilla code.
* Removed the ledge grab changes that fix QSLGs and change the false ledgegrab define since Arceveti wanted to in his PR
* Update version to 2.0.4 (#515)
* HackerSM64 2.0.5 (#517)
* Bugfix: race condition with accessing cleared audio memory pools
* Bugfix: skyboxes access tiles out of range when looking straight down (#518)
* Vscode fixes (#516)
* Revert s32 angles and remove Angle typedef usage (#529)
* Fix some surface shadowing (#531)
* Delete rtc.h
* Remove `wait_for_audio_frames()`
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Co-authored-by: Arceveti <73617174+Arceveti@users.noreply.github.com>
Co-authored-by: JoshDuMan <40190173+JoshDuMan@users.noreply.github.com>
* Update VERSION.txt (#534)
Co-authored-by: arthurtilly <32559225+arthurtilly@users.noreply.github.com>
Co-authored-by: axollyon <20480418+axollyon@users.noreply.github.com>
Co-authored-by: Gregory Heskett <gheskett@gmail.com>
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Co-authored-by: JoshDuMan <40190173+JoshDuMan@users.noreply.github.com>
* Added super slippery surface·
* fix requested changes
* add comment for forcing mario to belly slide
* hi arthur
* society
* adress nitpick
Co-authored-by: aglab2 <aglab3@gmail.com>
* Implemented native Gamecube controller support and corresponding emulator hint in ROM header
* Added X and Y buttons to VALID_BUTTONS in sm64.h
* Added workaround in controller type detection for mupen bug
* read GC controllers from port 2
* L to Z logic for GC controller uses a threshold
* Changed threshold for L trig to around 33%
Changed threshold based on feedback
* Added gGamecubeControllerPort
* fixed wrong check
* Bugfix: Game crashes when less than 2 controllers are connected
* Suppress compiler warnings
* Bugfix: button swapping still takes place on non-GC controllers
* Wrap port 2 stuff in console check
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
* GC console check
* Funny emulator crash moment
* block comment moment
* Added centering for the gamecube controller, support reset command (#511)
* Added centering for the gamecube controller, support reset command
* Use struct 'ControllerCenters' for 'gGamecubeControllerCenters'
* Store gamecube controller centers per controller
* Clamp GC controller stick values to s8
* the
formatting changes
Co-authored-by: Mr-Wiseguy <mrwiseguyromhacking@gmail.com>
Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: Denis Kopyrin <aglab3@gmail.com>
* Add define to disable pitch shifting of Mario sound effects
* Point new voice sequence macros to existing ones
* Remove pitch shifting sequence macros from peach sounds
* The vanilla level checks define for Yoshi is inverted, causing him to require 120 stars when it is off and appear at 0 stars when it's on
* The downwarp fix results in Mario levitating in midair when grabbing Bowser midair. While downwarps should still be fixed, the change should be reverted immediately until a better fix is made.
* Some checks of Mario's floor class were using the wrong defines, which can lead to unexpected behavior in the event anyone wants to reorder surface types. By default the SURFACE_CLASS_SLIPPERY and SURFACE_SLIPPERY defines have the same value, which is why this mistake is hard to notice.
* The firsty frames define was implemented poorly, not allowing for vanilla firsty behavior no matter what the values were set to. This has been reverted, while avoiding the UB in the original vanilla code.
* Removed the ledge grab changes that fix QSLGs and change the false ledgegrab define since Arceveti wanted to in his PR
Mario's room sometimes is not reset when warping between different areas, generally when warping from one area with rooms to another without them. This can cause things like doors to not render properly.
The name of the compiler that CROSS is set to varies from system to
system. (gcc-mips-linux-gnu on Debian) This was not handled in
s2d_engine and calc_bss.sh
* Combined ENABLE_LIVES and DEFAULT_NUM_LIVES, and removed SAVE_NUM_LIVES
* removed commented out lines
* numLives no longer modified by default when lives are disabled
This allows for the variable to be repurposed more easily
* Remove SAVE_NUM_LIVES define
* Remove SAVE_NUM_LIVES and DISABLE_LIVES define (Take 2)
* Apply MAX_NUM_LIVES and MAX_NUM_COINS to update_hud_values()
Co-authored-by: gheskett <gheskett@gmail.com>
* Implemented native Gamecube controller support and corresponding emulator hint in ROM header
* Added X and Y buttons to VALID_BUTTONS in sm64.h
* Added workaround in controller type detection for mupen bug
* read GC controllers from port 2
* L to Z logic for GC controller uses a threshold
* Changed threshold for L trig to around 33%
Changed threshold based on feedback
* Added gGamecubeControllerPort
* fixed wrong check
Co-authored-by: Reonu <danileon95@gmail.com>
* add error macro that will always fire
* add an aggress macro
like an assert macro but more aggressive and independent of DEBUG being defined (gives us 3 crash reporting options)
Co-authored-by: someone2639 <someone2639@gmail.com>
May be worth revisiting in the future to address the fact the exit course warp node will always trigger this sound effect, even when shared with other warps. Would potentially also be nice to add an option for using this sound effect with 0xF3 floor warps.
* Implemented new lightweight CPU/RDP profiler
* Added RSP profiling to the lightweight profiler
* Added CPU audio to lightweight profiler
* Changed lingering manual light struct definitions to gdSPDefLights1, made a dummy light for Koopa's pink shorts
* Ran script to convert all light commands to lightcolor commands
* Added define guards for the profiler
* Wrote function for setting up global light direction in the frame
* Moved camera matrix into projection stack
* Corrected cameraToObject for the new matrix stack (fixes culling and sound)
* Fixed billboarding with new matrix stack
* Fixed shadows with new matrix stack
* Fixed some areas where the game was previously extracting the camera matrix from various matrices
* Restored vanilla light and env map directions under new matrix stack
* Fix goddard crash
* Fix geo_process_level_of_detail
* Remove 'construct_float' from 'geo_process_level_of_detail'
* Removed some accidentally added files
* Removed unnecessary matrix multiplications in geo_process_object
* Added fixlights script to build system for fixing custom assets and added option to disable it if needed
* Fixed visual debug with new matstack and cleaned up visual debug code
* Fixed handling of WORLD_SCALE in view matrix so it doesn't get cancelled out
* Fixed clip planes not scaling based on WORLD_SCALE
Co-authored-by: Mr-Wiseguy <mrwiseguyromhacking@gmail.com>
Co-authored-by: Arceveti <arceveti@gmail.com>
Co-authored-by: thecozies <collinpferguson@gmail.com>
* Buxfix, refactor, and slightly improve BETTER_REVERB runtime
* Update BETTER_REVERB defaults and add some more customizability
* Improve BETTER_REVERB runtime even further
* Rename some reverb variables to make more sense in context
* Fix build warnings & errors when building non-US versions
* Revert ADSR_STATE_LOOP change in adsr_update in effects.c + add fallthrough comments + clean up ifdefs
* null initialization for loadedPool in heap.c
* Better placement of null initialization of arg0 in alloc_bank_or_seq
* Fixed eeprom saving on VC
* Specify SM for EEP4K, for any other savetype use ED
* Moved IS_VC() check to an earlier point, switch IS_VC()->gIsVC
* Moved binary VC files to bin folder, added checks for EEP
* Do not keep vc_bin if EEP is not set
Sometimes tools like Fast64 will export script.c files with
LOAD_MIO0_TEXTURE() macro "calls" even when you have "YAY0" toggled
under the export menu. To keep this from being a roadblock for
compilation, LOAD_MIO0_TEXTURE() is defined in this commit as an alias
to the LOAD_YAY0_TEXTURE() macro! :-)
* buffers: refresh 15 and revert to base decomp
* behavior script
* color helper functions
* extended bounds
* egeo_layout
* fixed model ids
* camera conf improved
* message panel ucode small
* graph node
* level script
* mathutil updates
* mathutil updates (allow unused funcs)
* behaviors a - beta_fish
* Add librtc and fix some data declarations
* Move GRUCODE define to proper location in makefile
* Refresh 15
* extra
* Make ROM name smaller and change messages printed on build a bit
* Fix console (lol)
* Update UNF to latest master
* Make ucode load from .o's (and also fix Super3D)
* Fix crash with rumble + custom mario model
* graph node and mathutil
* removed behaviors
* Ldtob documentation
* _Putfld labeling
* area
* behavior actions
* camera
* debug updates
* bubbles
* envfx snow
* farcall helpers
* game init
* geo misc
* hud
* only check if VC on render init
* ingame menu
* revert goddard to base decomp
* insn disasm
* interaction documentation
* level geo
* level update defines
* macro special objects formatting changes
* main.h documentation
* map parser documentation & formatting
* airborne documentation
* mario actions automatic documentation
* mario actions cutscene documentation
* mario actions moving documentation and options
* mario actions object documentation and options
* mario stationary documentation
* mario submerged documentation
* mario misc documentation
* mario step: ledge grab fixes and documentation
* mario documentation
* memory.h documentation
* moving textures
* object behaviors
* object collision
* fix flamethrower bug
* object helpers
* object list processor documentation
* paintings
* platform displacement
* print / printf
* puppycam absf
* puppyprint updates and formatting changes
* rendering graph node performance optimizations
* rumble opt and doc
* hqvm back to ultrasm64
* save file documentation and unlock defines
* s2d engine
* reset various files to ultrasm64
* file select
* intro geo documentation
* screen transition documentation
* segment2.h
* shadow overhaul
* skybox refactor
* sound init: clean up define usage + documentation
* spawn object optimizations and documentation
* spawn sound cleanup
* sram to ultrasm64
* star select cleanup
* title screen cleanup
* dialogs / text
* rename stomp smoke
* stomp smoke -> small water splash
* updated README
* compilation flags
* optimized file positions + support function/data sections
* surface collision performance improvements
* surface load optimizations
* camera conf documentation
* Allow easier command for opening puppyprint debug
* Rearranged framebuffers & fixed puppyprint console printing
* Fix shadow scaling and shifting
* Fix SILHOUETTE, OBJECTS_REJ, and ucode loading, also clean up render phase system a bit.
* Fixed build with BETTER_HANGING off
* Clean up OBJECTS_REJ ifdefs
* Fix duplicate comment & graph render layers/flags bitmask
* Fixed build with BETTER_HANGING off
* Fix Fast64 importing by reverting sSegmentTable change
* Readded missing functions that caused build errors with Mario head enabled
* Fixed clang compilation issues
* Add INTER mode for geo_update_layer_transparency
* Fix build warnings
* bugfix: miscalculation in obj_turn_toward_object
* Some puppytech fixes
* Further Puppycamera fixes
* Fix BUGFIX_DIALOG_TIME_STOP
Fixes#136
* Fix sliding platform bparams
* Add LEGACY_SHADOW_IDS define for Fast64 compatibility
* Apply suggested changes
* Better find_in_bounds_yaw_wdw_bob_thi ifdef
* Fix build warnings for unused functions
* Fixed stale reference bug from obj_mark_for_deletion change
* Fixed incorrect digit for 100s #145
* Change groundpound-fix define and functionality to just disable bonking
* Fixed puppyroll #134
* Adjust height value for terrain angle to kick in
* fixed hi score flashing
* Remove menudata backup (#131)
Not considered important enough to keep
* Fix fread() build warning
* Add COURSE_NUM_TO_INDEX to save_file_get_star_flags check in bhv_unagi_init
* Fix approach_s16 return value
* Use boolean defines for oCapDoScaleVertically
* Make the door lock a part of the key door model to eliminate z-fighting, also reduce z fighting on numbered doors with AUTO_LOD enabled.
* Move flames to LAYER_TRANSPARENT_INTER
* Resolved some compiler warnings and added FALL_THROUGH define (#168)
* Address some more compiler warnings with different define toggles
* Remove unnecessary fallthrough attribute
* fixed geo_process_billboard floating point exception
* Allow water to face any direction
* Initialize focOffset so that BBH doesn't crash
* Removed superfluous RDP commands when switching microcodes which would override scissor
* Set OBJ_FLAG_DONT_CALC_COLL_DIST on bhvUkikiCage
* Fix rumble build
* Fixed UNLOCK_FPS strobing
* Update src/game/object_helpers.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* Update src/game/object_helpers.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* Fix LEGACY_SHADOW_IDS id conflict
* Use the vanilla default value for rotating fire bars if bparam2 is 0
* START_LEVEL safeguard
* Fix some drawing distance issues caused by AUTO_COLLISION_DISTANCE
* Fix rumble build
* Fixed spline poll code using the wrong values for keyframes
* Update readme with better credits
Better credits for individual contributors
* add arthur
* added falco and moose
* add fazana
* le funny typo
* added S2DEX engine to credits
* silhouette + axo + ratio
* remove specific callouts + add auto col distance
* Update data/behavior_data.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* Update data/behavior_data.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* Update data/behavior_data.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
* Revert formatting changes to match vanilla decomp
* Re-implement Y buffer for find_ceil
* Re-implement POWER_STARS_HEAL for normal Power Stars
* Start level comment & exit course comment/collapse
* utilize reonucam technique for FAST_VERTICAL_CAMERA_MOVEMENT
* Fix "MAX_REFERENCED_WALLS" typo
* Allow stop_and_set_height_to_floor to work at any height if Mario is teleporting (#213)
* Revert stop_and_set_height_to_floor to vanilla
Fixes#208
* Fixed sAudioEnabled so that it disables audio CPU processing as well
* Fixed puppyprint debug RDP us calculations
* Renamed sAudioEnabled to gAudioEnabled
* Replaced mtxf_to_mtx_asm with an equivalent implementation that supports WORLD_SCALE
* Moved extended bounds and world scale configuration to a new config_world.h file
* Default all objects to non-rej (#227)
Fixes#221 (Default all objects to non-rej)
* Fix#221
* Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled (#211)
* Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled
* Change vtl decrement in visual_surface_display from 6 to 3
Fixes#207
* Make area in SL igloo wider to prevent a softlock (#233)
Fixes#210
* Fix coin formation coins being deleted if they spawn in the middle of a floor, also fix TTM slide coin position (#232)
Fixes#201
* Make UNLOCK_ALL apply to more things
* Fix wrong ifdef/ifndef in bhv_invisible_objects_under_bridge_init
* Change chain chomp load/unload distances depending on number of segments (#237)
Fixes#192
* added WATER_PLUNGE_UPWARP define
* Add reonucam patch (#239)
* added reonucam patch
Fixes#218
* Fix how shadows handle water/transparency/height (#228)
* Fix how shadows handle water/transparency/height
* Change shadow check for flying carpets from a level specific check to a oPlatformOnTrackType check
Fixes#179
* added reonucam credit
* delete unnecesary patches
* Apply suggested changes
* murdered more patches
* UNLOCK_ALL unlocks the cap boxes
* UNLOCK_ALL unlocks cap boxes (slightly more epic edition)
* revert ceil buffer
* Renamed HD_INTRO_TEXTURES define, separated intro floombas
* prevent double definition of floombas
* actually prevent floomba redefinition
* Develop/refactor default defines (#242)
* Changed default config options
* Added build dir to includePaths for pngs
* disable NO_SLEEP by default
* Disable puppyprint by default
Sorry fazana 😔
* fix typos
* add comment about BETTER_REVERB console perf
* disable blue coin switch retry by default
* Update config_audio.h
Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com>
* revert air step line to vanilla to fix bitfs scaling platform issue (#247)
Fixes#200
* Fix stuttering on thin slopes (#248)
* Fix stuttering on thin slopes
* Revert vec3f_find_ceil calls to vanilla
* Rename vec3f_find_ceil to find_mario_ceil
* Update src/engine/surface_collision.h
Fixes#249
* Swap static and dynamic surface checks back to vanilla order (#253)
* Swap static and dynamic surface checks back to vanilla order
* re-enable DISABLE_ALL config
Fixes#251#252
* Fixed save and quitting while in widescreen (#257)
* Fixed save and quitting while in widescreen
* use define for the level
* all my homies hate ifdefs
* skip wall offsets < 0 (#255)
Fixes#255
* #264: Document non-stop stars' issues (#267)
* #264: Document non-stop stars' issues
* Update include/config/config_game.h
* nonstop vanilla comment
* derive margin_radius from radius after capping at 200 (#266)
Fixes#259
* Config cleanup/refactor (#269)
* Moved puppyprint define to graphics / rearranged some debug defines for ease of access
* Moved compatibility safeguards to config_safeguards.h
* spacing and comment formatting
* #272 Move GFX_POOL_SIZE to config_graphics.h
* disable EASIER_DIALOG_TRIGGER by default
* prevent redefining warnings
* small ifdef typo
* changed ifndef to undefs
Fixes#262Fixes#272
* Improved movement config documentation related to turning around (#271)
Fixes#270
* rename CUSTOM_DEBUG, add comments (#275)
* Update README.md (#277)
* v2.0.0
Co-authored-by: CrashOveride95 <crashoveride953@gmail.com>
Co-authored-by: Arceveti <73617174+Arceveti@users.noreply.github.com>
Co-authored-by: n64 <n64>
Co-authored-by: Fazana <52551480+FazanaJ@users.noreply.github.com>
Co-authored-by: Mr-Wiseguy <mrwiseguyromhacking@gmail.com>
Co-authored-by: aglab2 <aglab3@gmail.com>
Co-authored-by: gheskett <gheskett@gmail.com>
Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: Axollyon <20480418+Axollyon@users.noreply.github.com>
Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com>
**[Thank you to Kaze Emanuar for these major optimizations!](https://www.youtube.com/watch?v=uYPH-NH3B6k)
**AFTER CLONING THE REPO, CHECK OUT THE `include/config.h` FILE BEFORE ANYTHING ELSE! IT THERE'S A LOT OF STUFF IN THIS REPO THAT CAN BE TOGGLED THERE.**
**AFTER CLONING THE REPO, CHECK OUT THE `include/config` FOLDER BEFORE ANYTHING ELSE! THERE'S A LOT OF STUFF IN THIS REPO THAT CAN BE TOGGLED THERE.**
HackerSM64 now has a discord server! https://discord.gg/brETAakcXr
This repo needs BOTH an US ROM and a JP ROM in order to build. Place baserom.us.z64 in the repo as usual and ALSO place baserom.jp.z64
This repo requires BOTH a US ROM and a JP ROM in order to build. Place baserom.us.z64 in the repo as usual and ALSO include baserom.jp.z64.
This repo needs gcc in order to be able to build it. To install it, run `sudo apt install gcc-mips-linux-gnu`
This is a fork of the ultrasm64 repo by CrashOveride which includes the following commonly used patches (patches marked with `*` are toggleable in `config.h`):
This is a fork of the ultrasm64 repo by CrashOveride which includes the following commonly used patches (patches marked with `*` are toggleable in the config files):
**Credits**
- **ArcticJaguar725**: Most audio configuration and layout changes, colored ia4 text, floombas, various bugfixes, and more
- **CowQuack**: Adjustable skybox sizes, area-specific skybox function
- **thecozies**: Water surface types, general maintenance, and time
- **MrComit**: General use object defines, JUMP_KICK_FIX
- **Pyro Jay**: Texture improvements, repo banner art, some QoL stuff
- **CrashOveride**: creating the [ultrasm64](https://github.com/CrashOveride95/ultrasm64) repo
- **falcobuster**: Original coordinate overflow fix (world scale), ASM version of extended bounds, emulator detector
- **anonymous_moose**: porting falco's extended bounds to decomp
- **tuxlovesyou**: `LOAD_MIO0_TEXTURE` macro and moral support
- **devwizard**: the PJ64 pre-v3.0 detection part of the emulator detector
Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
**Lighting Engine by Wiseguy**
- Lighting Engine is available on a separate branch `(lighting-engine)`. Instructions on how to use it are in the readme of that branch.
- Alternatively, the main repo has `Puppylights` available, which is a more lightweight, but limited lighting library intended to be used to modify existing light properties. You can look at `puppylights.c` to find out how to use it.
- Lighting Engine is available on a separate branch ([base/lighting-engine](https://github.com/Reonu/HackerSM64/tree/base/lighting-engine)). Instructions on how to use it are in the readme of that branch.
**Puppycam**
- Puppycam is available on the master branch now, you can toogle it in config.h. *
- Puppycam is available on the master branch now, you can toggle it in `config/config_camera.h`. *
**Collision:**
- Slope fix and exposed ceilings fix
- No false ledgegrabs fix *
- Jump kick fix *
-46 degree wallkicks *
- Pole fix
-Configurable wallkick angle, in degrees *
- Possibility of disabling BLJs *
- Hanging fix (mario can grab hangable ceilings from any state, instead of only jump or double jump) *
- Hanging fix (Mario can grab hangable ceilings from any state, instead of only jump or double jump) *
- Increased maximum pole length (The game will read bparam1 and bparam2 together as a single value, so you can have a very long pole) *
- Platform Displacement 2 by Arthurtilly *
- Water Surface Type patch by thecozies
- Better Wall Collision With Rounded Corners by FramePerfection, merged by Cheezepin & Arceveti
- Better wall collision with rounded corners by FramePerfection, merged by Cheezepin & Arceveti
- Automatically calculate the optimal collision distance for an object based on its vertices, by Kaze *
**Common Hack Changes:**
@@ -41,10 +61,9 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- Toggle to disable fall damage and the fall damage sound *
- Nonstop stars *
- Removed course-specific camera processing *
- You can increase the number of frames that you have to perform a firsty *
- Ability to set Mario's movement speed when hanging from a ceiling *
- Tighter hanging controls (mario will face the direction of the analog stick directly while hanging from a ceiling) *
- reonucam3: custom camera by me. This is included as a .patch file in the enhancements folder, you need to apply it if you want this camera.
- Tighter hanging controls (Mario will face the direction of the analog stick directly while hanging from a ceiling) *
- reonucam3: custom camera by Reonu. This is included as a .patch file in the enhancements folder, you need to apply it if you want this camera.
This video shows a rundown of the features: https://youtu.be/TQNkznX9Z3k
- Ability to disable Mario getting suck in snow or sand
@@ -53,52 +72,56 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- Debug mode: prints mario's coordinates, angle and speed, and a FPS counter.
- Automatic console/emulator detection. If emulator is detected, LODs are disabled. *
- Ability to configure whether there's a 100 coin star at all and how many coins are required to spawn it *
- Ability to easily change the warp that EXIT COURSE takes you to via config.h, or disable it entirely. *
- 16 bit model IDs by someone2639. This means you can have up to 65536 models (lol). You can set the maximum number of model IDs in `config.h`.
- Ability to easily change the warp that EXIT COURSE takes you to via `config/config_menu.h`, or disable it entirely. *
- 16 bit model IDs by someone2639. This means you can have up to 65536 models (lol). You can set the maximum number of model IDs in `config/config_game.h`.
- Apply_patch.sh improved
- Removed the ifdef hell in `file_select.c` and `ingame_menu.c`
- Added Blake's custom function for object model stuff: `obj_set_model` and `obj_has_model`
- Added function to get the model ID from an object: `obj_get_model_id` (by Arceveti)
- The "far" variable is now u16, allowing you to increase the farclip (the max distance at which geometry is rendered). However, when increasing the farclip, make sure to increase the nearclip by the same ratio, or rendering will break on console and LLE plugins.
- Many general use defines for object struct members, meant for use in custom object behaviors. Check `object_fields.h` for more info on this. (By MrComit)
- Many general use defines for object struct members, meant for use in custom object behaviors. Check `include/object_fields.h` for more info on this. (By MrComit)
- Included `actors/group0.c` in `behavior_data.c`
- The internal ROM name is now set with a define in `config.h` to make it simpler
- There is a `gIsConsole` variable that is 1 when running on console and 0 when running on emulator. This way you can wrap your code in a console check.
- The internal ROM name is now set with a define in `config/config_rom.h` to make it simpler
- There is a `gEmulator` variable to detect console or specific emulators and emulator versions
- Expanded audio heap allows for a larger concurrent note count and the importing of more m64 sequences and sound banks (By ArcticJaguar725) *
- You can set a test level in config.h in order to boot straight into it, so you can quickly test the level you're working on. *
- Allows all surfaces in the game to have a `force` parameter. Activating this doesn't REQUIRE you to set `force` for every surface: If you don't set, it will default to 0x0000 rather than crashing. Increases RAM usage of collision. *
- You can set a test level in `config/config_debug.h` in order to boot straight into it, so you can quickly test the level you're working on. *
- Allow all surfaces in the game to have a `force` parameter. Activating this doesn't REQUIRE you to set `force` for every surface: If you don't set, it will default to 0x0000 rather than crashing. Increases RAM usage of collision. *
- The clown font includes the entire English alphabet.
- Colored ia4 text support. Format: `"@XXXXXXXX[YOUR TEXT]@--------"` (By ArcticJaguar725)
- Example Text: `"@FF0000FFRED @00FF00FFGREEN @0000FFFFBLUE @FFFFFF00INVISIBLE @--------NORMAL"`
- NOTE: It is not mandatory to reset the text color with `"@--------"`, but text will need to be recolored each time it scrolls in a dialog box, or the custom color will reset.
- Toggle visiblity of collision surfaces and object hitboxes with Visual Surface Debug. `config.h` has VISUAL_DEBUG which can be turned on to enable this feature.
- Toggle visiblity of collision surfaces and object hitboxes with Visual Surface Debug. `config/config_debug.h` has VISUAL_DEBUG which can be turned on to enable this feature.
- Workaround for infinite death loops caused by using the wrong warp type for death warps. Mario's HP will be restored when being warped to any warp if (and only if) he was warped while dead. *
**Other Bugfixes:**
- Castle music fix (Fixes the castle music sometimes triggering after getting a dialog) *
- bparam4 fix (the game no longer uses bparam4 to check if an object is mario and therefore you can safely use it)
- Castle music fix (fixes the castle music sometimes triggering after getting a dialog) *
- bparam4 fix (the game no longer uses bparam4 to check if an object is Mario and therefore you can safely use it)
- Instant warp offset fix (makes the instant warp offset work even when warping to a different area) *
- haveyourcake, also known as cake screen fix. Made by Wiseguy and ported/PR'd by Cheezepin
- Tree particle fix (Whether a tree uses snow particles or not is decided via the model IDs instead of the course number) *
-Coordinate overflow fix by falcobuster. Your levels will render correctly on console and LLE emulators even when using 2x or 4x bounds, while not hurting anything on HLE plugins.*This is automatic now, you don't have to set WORLD_SCALE manually.*
-Adjustable world scale. You can change the geometry scaling of your level, which allow large levels to render correctly on console and LLE emulators while not hurting anything on HLE plugins.
- A couple vanilla texture fixes
- Smoke fix (the smoke texture uses the correct texture format)
**Neat Misc. Changes:**
- Instant Input patch by Wiseguy (Removes all input lag caused by plugins supporting framebuffer)
- This means that you'll have to do your framebuffer effects on buffer 0 for emulator, but NOT for console. You can use the `gIsConsole` variable to check for console when doing your framebuffer effects.
- This means that you'll have to do your framebuffer effects on buffer 0 for emulator, but NOT for console. You can use the `gEmulator` variable to check for console when doing your framebuffer effects.
- Widescreen (16:9) support toggleable by pressing `L` in the pause menu. *
- S2DEX engine by someone2639! To use it, compile with `make TEXT_ENGINE=s2dex_text_engine` or just set `TEXT_ENGINE` to `s2dex_text_engine` in the makefile.
- ia8 coins (64x64), the vanilla coin texture is upgraded to accomodate. *
- ia8 (64x64) coins, the vanilla coin texture is upgraded to accomodate. *
- ia8 (64x64) 30 FPS coins (Textures by InTheBeef, cleaned up by Arceveti). *
- Floombas! Simply just retextured goombas with customizable behaviors (does not overwrite standard goombas). *
- HD texture support for intro splash screen (with floombas if enabled). *
- Mario's silhouette is shown when behind most surfaces (By Frame#5375, Axollyon, AloXado320, Wiseguy, Arceveti) *
- Skybox size modifier. You can have 2x, 3x and 4x size skyboxes (you can select the skybox size in `config.h`.) Please note that this might affect console performance, especially 4x mode. 2x or 3x mode is recommended if aiming for console. By CowQuack *
- Skybox size modifier. You can have 2x, 3x and 4x size skyboxes (you can select the skybox size in `config/config_graphics.h`.) Please note that this might affect console performance, especially 4x mode. 2x or 3x mode is recommended if aiming for console. By CowQuack *
- You can set the black border size to different values for console and emulator. It's set to 0 by default for both. *
- This repo supports much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general. See `audio/synthesis.c` for more configuration info. (By ArcticJaguar725) *
- This repo supports a much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general. See `audio/synthesis.c` for more details and configuration info. (By ArcticJaguar725) *
- Fazana's "puppyprint" text engine. *
- Use `print_small_text` to print normal text. The two last params are aligment and how many characters to print (-1 means PRINT_ALL).
- Use `render_multi_image` to draw large texture rectangles consisting of multiple images on the screen.
- More info in `puppyprint.c`
- Wiseguy's Farcall TLB mapping allows to store executable code inside uncompressed segments, that can be loaded and ran as needed, instead of it having to be loaded at all times. See `farcall.h` in the include folder for instructions and details.
- Red Coin Stars now support up to 99 red coins! In addition, multi-area red coin missions can now be created by setting the 2nd behavior paramater of the red coin star to the number of reds required for the star to spawn.
# UltraSM64
- This repo contains a full decompilation of Super Mario 64 (J), (U), (E), and (SH).
@@ -112,7 +135,7 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- It has been patched with someone2639's shiftable segments patch
- Wiseguy's instant input patch has been added to allow for less input lag on emulation (Does not affect console)
This does mean that any framebuffer effects will have to be done on buffer 0 if targeting emulators
- Automatic console and emulator detection: Use the `gIsConsole` variable to wrap your code in an emulator check.
- Automatic console and emulator detection: Use the `gEmulator` variable to wrap your code in an emulator check.
- Separate defines for emulator and console black border height.
- Getting HVQM FMV support to work with the game is WIP.
@@ -175,7 +198,9 @@ To switch to no compression, run make with the ``COMPRESS=uncomp`` argument.
Q: Why in the hell are you bundling your own build of ``ld``?
A: Newer binutils (Like the one bundled with Ubuntu, 2.34) break linking with libultra builds due to local asm symbols.
This puts me at a crossroads of either touching leaked code and requiring GCC, or just using an older linker that works just fine.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.