Commit graph

2348 commits

Author SHA1 Message Date
Agent X
9d0a61450b
gsDPSetTextureFilter, refactoring and o.header.gfx.skipInViewCheck (#147)
* Add gsDPSetTextureFilter to DynOS symbols

* Refactor code and fix 2 year oversight

Refactored the main menu background code, now uses vec3f_set instead of manually setting every vector

Also finally fixed the bug where you load in with only 3 lives, this has been in coop for 2 years now and was likely made as a test for syncing live count and was never reversed.

* add skipInViewCheck to GraphNodeObject

* Remove idle set

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2022-08-11 01:23:54 -07:00
Emerald Lockdown
466b0066a4
Fixed wall hugging issue (#149) 2022-08-11 01:22:04 -07:00
Emerald Lockdown
ac7b872304
Shell rush modifications (#150)
* Shell Rush Modifictations

* Oops
2022-08-11 01:20:09 -07:00
MysterD
77313ee8fd Prevent softlock when entering a cannon near water (Star Road) 2022-08-07 22:42:25 -07:00
MysterD
9217b799b4 Whoops 2022-08-07 22:38:57 -07:00
MysterD
cfcef655e6 Fix crash when hitting escape while a slider is focused 2022-08-07 22:36:35 -07:00
MysterD
cadaf78699 Initialize graphNode->config.camera to NULL (fixes obscure crash) 2022-08-07 22:30:31 -07:00
MysterD
a61436b2ca Re-ran autogen 2022-08-07 20:54:16 -07:00
Emerald Lockdown
93bdbf81c3
Expose save star flag (#139)
* added save_file_set_star_flags and save_reload
2022-08-07 20:53:42 -07:00
Emerald Lockdown
670acc638e
Exposed save_file_erase and save_file_reload to lua (#137) 2022-08-07 20:52:51 -07:00
MysterD
1ac7032606 Move menu options and debug options to 'misc' 2022-08-07 20:51:34 -07:00
MysterD
5c9dcdeffd Cleanup random menu stages 2022-08-07 20:44:35 -07:00
Emerald Lockdown
b5f1e2a294
Customizations to the main menu and a fix for the title screen bug (#130) 2022-08-07 20:14:28 -07:00
MysterD
b3923f0b5f Re-ran autogen 2022-08-07 15:26:32 -07:00
TheGag96
d87dd73db1
Fix issues Extended Moveset mod (+ extras) (#146)
* Allow Lua action hooks to specify custom functions for more behavior

...like gravity, and update all current mods to match.

Spin jump and wall slide from the Extended Moveset mod now have gravity
code basically matching the original mod.

Currently, any place you'd want to use one of these new action hooks
still requires an O(n) check through all action hook per call. This
should probably be changed.

* Fix some remaining issues with Extended Moveset Lua port

- Remove divergent spin jump code
- Remove divergent roll code
- Remap roll button to Y
- Reimplement dive slide to make dive hop work like the original
- Allow spin from double jump, backflip, side flip

* Fix more issues with Extended Moveset Lua port

- Reimplement all users of update_walking_speed to incorporate the Tight
  Controls edits and modified speed caps
- Fix instances of angle arithmetic to wrap properly across the mod

* Don't chop off group bits of custom action flags; assign missing groups in mods

This fixes the Extended Moveset's underwater actions. Chopping off those
bits was making the game consider the underwater actions to be a part of
the Stationary group, which caused `check_common_stationary_cancels`,
which upwarps Mario to the surface.

* Tweak roll sliding angle tendency

Rolling will now gradually (but fairly quckly) try to tend Mario's
facing angle down the slope.

This is cleaner than my old method that tries to flip Mario's angle
(wrongly) when he begins moving downward, having that logic coexist with
the logic for normal sliding actions that can also tend Mario to face
backward down the slope. Just looks ugly now by comparison.

* Disallow spin jump on slides in Extended Moveset port

This matches the original mod

* Extended Moveset: Crazy Box Bounce check

* Extended Moveset: Fix hugging the wall when spin jumping after wall kick

* Extended Moveset: Fix ledge drop snapping up to ground

Just reimplement `act_air_hit_wall` ourselves.

* Extended Moveset: Add Kaze's walking speed fix

* smlua_hooks.c: Restore option to use old API for hook_mario_action

The intent is to allow mods outside of this repo to continue working.

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2022-08-07 15:25:00 -07:00
MysterD
5e5ef35118 Revert custom palette changes to built in mods 2022-08-07 15:13:51 -07:00
TheGag96
dc3ca7c76d
Arbitrary shirt, pants, glove colors + settings menu (#145)
* Support for more granular player colors

You can now configure RGB values for shirt, pants, gloves, and shoes.
Due to some limitations, configuring shoes does nothing at the moment.

* Remove paletteIndex and friends

Restructured and filled in some remaining code to account for that.

* Add Edit Palette panel to Player panel

* Change PlayerPalette contents to an enum-indexed array, remove shoes

This gets rid of all the hokey code doing switch cases on the
different parts.

* Fix goof with player model selection box

Should actually have affect now even if a custom palette is being used.

* Fix gap in player color display list commands

The extra space was leftover from when I was trying to get shoes
working. Forgot to clean it up.

* Standardize PlayerParts enum, including for lua constants autogen

* djui_panel_player.c: Properly hook sending palette changes on unpause

Editing the palette and then unpausing should send out the packet to
everyone with the new palette changes (and update the palette preset
selection box), but since we weren't hooking that situation before, it
would stay changed only for you. You would have had to press the Back
button for it to work right.

* Allow Lua mods to continue using `paletteIndex`, `overridePaletteIndex`

This lets mod code like this still work unchanged:

if s.team == 2 then
    np.overridePaletteIndex = 7
elseif s.team == 1 then
    np.overridePaletteIndex = 15
else
    np.overridePaletteIndex = np.paletteIndex
end

It's essentially faked, and would work strangely if the value of either
variable was inspected more closely directly. This should at least
handle the typical use case, though.

Every frame, `overridePaletteIndex` is checked to see if it was modified
from its previous value. If so, `overridePalette` is set to the preset
corresponding to the index. `paletteIndex` contains a special value that
when used to assign to `overridePaletteIndex`, it copies `palette` into
`overridePalette` to restore the real colors, which of course may not
follow the presets at all.

* characters.h: Pack `PlayerPalette` to eliminate size differences between computers

* mario_misc.c: Remove remaining "TODO GAG"
2022-08-07 15:13:19 -07:00
MysterD
da5cf8230b Fix up co-op ripples 2022-08-07 01:10:10 -07:00
HunterHeard
ad5e7402fc
Co-op ripples (#118)
* First attempt

First attempt at having other Mario objects create ripples.

Works very inconsistently, the position of players not currently interacting with the painting seems to influence whether the ripples will work or not

* Moved nearest mario code from geo_painting_update

Instead of using the nearest mario object for geo_painting_update, I use it in painting.c functions that called for gPaintingMarioXYZPos, substituting the nearest Mario object's position instead, as well as using it for the last floor mario was over.

This method still isn't quite perfect and there's a few more things I'd like to fix/change.
1. If a Mario is closer to the painting (perhaps right against the middle) other Mario's can't trigger ripplings at all unless they get closer than the closest Mario
2. I would like for all Entry and Exit ripples to interrupt each other, meaning if multiple Marios jump in, each one triggers a ripple one after the other
3. I want to hear the other player's exit sounds

* Add currPositionValid

Sets currPositionValid to false for NetworkPlayers who are connected, who changed levels to a level different from the local player, and who are not the local player when the local player changes levels.

* Set currPositionValid

Sets currPositionValid to false for update packets that don't match local area.
Sets it to true for update packets that do match local area.

* Send change area/level immediately

Adds a function network_on_loaded_area2() which only sends a change level or area event and doesn't clear the sync ids.
Calls this function almost immediately as opposed to waiting for LOADING_LEVEL_THRESHOLD frames

* Add currPositionValid to NetworkPlayer

currPositionValid (which is used by painting.c to determine if a player should be considered for the closest player to the painting) is a variable that tells you if a network player's marioObj has a position which can be relied upon as a valid position for that player.

network_player_update_course_level sets it to false for a network player if the new location does not match the local player's location.
network_receive_player sets it to false if a network player's update is from a different location than the local player, but sets it to TRUE if the update is from the same location.
update_course does NOT set it to true, because the location is not sure to be valid until we've received a location from the player with the right location attached to it.

* Use currValidPosition correctly

Uses currValidPosition correctly, also add debug text for seeing closest player to painting.

* fix merge

* Fix merge

* Verboser logging and invpos on enter

* Multi collision arrays

* Removed nearest code, added comments

* Added simultaneous ripples on one painting

* Added commented Gamepad from Background line

* Removed debug logging

* renamed secondary network_on_loaded function

* Added early multiple paintings rippling at once

* Added multiple paintings rippling simultaneously

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2022-08-07 01:08:00 -07:00
Isaac0-dev
f1c2715fe7
Lives/Game over fix, exposed initiate_warp() and improved enemy lakitu (#143) 2022-08-05 23:09:13 -07:00
Emerald Lockdown
1dab06f476
Added Dynos Pack and Player to pause menu (#136)
* Added Dynos Pack and Player to pause menu

* Fixed bodyHeight
2022-08-05 22:23:38 -07:00
Prince Frizzy
913f41f6ae
Add some more functions for use in LUA, And expose others. (#129)
* Add some functions, and restore one.
2022-08-05 22:17:05 -07:00
MysterD
68634493de Fix up camera overrides in sm74 2022-08-05 21:18:37 -07:00
MysterD
9871ab71d5 Fix camera overrides in Star Road - by Isaac 2022-08-05 21:17:13 -07:00
MysterD
50d2946bcc Added star road 2022-08-05 21:13:47 -07:00
MysterD
165a7dd68a Fix up includes for clang 2022-08-05 20:55:31 -07:00
MysterD
0fba458465 Enforce type lengths for bin compression 2022-08-05 19:12:57 -07:00
MysterD
4794c2e130 added more info to uncompress error 2022-08-05 18:43:45 -07:00
MysterD
5d1aa7ea6d Display uncompress error 2022-08-05 18:04:33 -07:00
MysterD
9fab95a6e5 Prevent double free in DynOS compression code 2022-08-05 15:10:00 -07:00
MysterD
618f468e06 Add HOOK_USE_ACT_SELECT ; increase MAX_AUDIO_OVERRIDE to 128 2022-08-04 01:12:16 -07:00
MysterD
8057c9e501 Prevent crash in mod cache 2022-08-04 01:11:51 -07:00
MysterD
c214acb33f Change fixCollisionBugs from server setting to mod setting 2022-06-25 01:26:53 -07:00
Isaac0-dev
a344a23bb9
Fix collision bug in dark world and edit readme.md (#134) 2022-06-25 00:59:48 -07:00
Agent X
a9bbbacd71
Custom camera cleanup (#133) 2022-06-25 00:54:58 -07:00
Isaac0-dev
92cb5aadb7
Fix headless server compile (4) (#132) 2022-06-25 00:54:39 -07:00
PeachyPeach
f0c6668423
DynOS Bin Compression (#131) 2022-06-25 00:52:53 -07:00
MysterD
4da9812d9b More packet bytesize cleanup 2022-06-06 20:50:00 -07:00
MysterD
4dde3d4cfe Whoops 2022-06-06 20:41:46 -07:00
MysterD
42544557c4 More sync id cleanup 2022-06-06 20:39:18 -07:00
MysterD
29f3e8f1bf Fix mod cache issue where server wouldn't update the hash when it should 2022-06-06 19:34:44 -07:00
MysterD
3b626845e1 Refactor sync objects, move syncIds to u32 2022-06-06 19:13:04 -07:00
MysterD
ae7c1427b9 Only use defined signals 2022-06-05 22:57:17 -07:00
MysterD
946f16329c Added ability to have completely custom levels that don't override anything 2022-06-05 21:55:31 -07:00
Isaac0-dev
a40c3cf121
Raspberry Pi Support (#117) 2022-06-05 19:40:21 -07:00
MysterD
8928f7d207 Cleanup 2022-06-05 19:22:11 -07:00
HunterHeard
de60a0ae44
Add gamepad number, background options (#122)
Added two options, one which lets user choose which gamepad to use, and one
which allows game to be played with gamepad while in the background.

These two features together allow for "splitscreen" (sort of) multiplayer by
starting up instances and joining them together and selecting different
gamepads for each one.

Gamepad choices are 0-7. If a number is chosen that does not correspond to a
gamepad, the previous gamepad (last number you were on this session that had
a working gamepad) is used.
2022-06-05 19:16:24 -07:00
Isaac0-dev
e0e1d2e1a8
Fix compiling on Docker (#125) 2022-06-05 19:12:23 -07:00
EmeraldLoc
a63259cecf
Add .app support and fixed warning (#126) 2022-06-05 19:11:58 -07:00
Isaac0-dev
db7b82fc01
Detect termination signals (#127) 2022-06-05 19:11:15 -07:00