Commit graph

1939 commits

Author SHA1 Message Date
Prince Frizzy
32b0c91935
Fixes for Refresh 12 2022-02-19 01:39:38 -05:00
MysterD
cc9dc2c38c Fixed crash in geo_obj_init_animation* 2022-02-18 21:11:16 -08:00
MysterD
a3062287ac fix compile error 2022-02-18 18:38:26 -08:00
MysterD
a359b28bb4 Fixed crash in bhv_bowser_loop 2022-02-18 18:30:57 -08:00
MysterD
33ba20a5f9 Bump version to unst17 2022-02-18 18:23:10 -08:00
MysterD
b0a114eac7 Deallocate object when it failed to set a sync ID instead of crashing 2022-02-18 18:11:16 -08:00
MysterD
bb12aebb9e Fix crash screen on DirectX 2022-02-17 18:40:47 -08:00
MysterD
0a54b7ebed Merge branch 'unstable' of github.com:djoslin0/sm64ex-coop into unstable 2022-02-17 18:27:19 -08:00
MysterD
f5df2917b8 Prevented race condition that caused all objects to disappear in rare circumstances 2022-02-17 18:13:43 -08:00
MysterD
267b1c2542 Prevented 'player left this level' from being displayed when a player connects 2022-02-16 22:56:39 -08:00
MysterD
c6278694d1 Fix Yoshi sounds 2022-02-16 22:51:59 -08:00
MysterD
dab7cf4c2b Added player description to player list 2022-02-16 22:30:17 -08:00
MysterD
a44acd51f2 Added HUD rendering to hide-and-seek 2022-02-16 18:10:06 -08:00
MysterD
da5f9263fd Fix compile error that emerged in the merge 2022-02-15 22:29:22 -08:00
MysterD
e536d140bb Added HOOK_ON_INTERACT to Lua API 2022-02-15 22:21:31 -08:00
MysterD
1ea28b9c5a Added rect rendering to Lua API 2022-02-15 22:15:49 -08:00
MysterD
669e17bc18 Added global textures 2022-02-15 22:14:55 -08:00
MysterD
29599a82ec Created TextureInfo struct 2022-02-15 22:13:10 -08:00
MysterD
ded74e7fb5 Added image drawing to Lua API 2022-02-15 22:12:20 -08:00
MysterD
941375718b Added CPointers to Lua/autogen 2022-02-15 22:09:21 -08:00
MysterD
f862b3ac21 Adjusted function autogen to automatically pull includes 2022-02-15 22:08:24 -08:00
MysterD
3fcc31e233 Added text rendering to Lua API 2022-02-15 22:08:01 -08:00
MysterD
ef12ff9e70 Removed asserts (or made them soft) 2022-02-15 22:04:34 -08:00
MysterD
8c0e3460f6 Fixed certain object desyncs
Prevented friendly lakitu and 1up spawners from desyncing the object table
Resynchronized 1up spawners
Increased max packet size to 2048
2022-02-15 22:04:01 -08:00
MysterD
265d23892b Fixed crash in star seleciton 2022-02-15 22:03:17 -08:00
Isaac
46a4b377a5 Update controller_bind_mapping.c 2022-02-16 15:04:51 +10:00
Isaac
956a95bb8f Update crash_handler.c 2022-02-16 15:04:18 +10:00
MysterD
25fe547113 More audio fixes
by djoslin0 and theclashingfritz
2022-02-15 18:22:55 -08:00
Prince Frizzy
bd247372ef audio: Extend the amount of notes that can play at once.
Provided by theclashingfritz
2022-02-15 02:06:18 -08:00
Prince Frizzy
f565e89c68 sound: Add extended channel mode for sequences.
Provided by theclashingfritz
2022-02-15 01:36:44 -08:00
MysterD
c818b7930a Added wario sounds
Have yet to pitch correct them.

Huge thanks to theclashingfritz and anzz1
2022-02-14 23:36:53 -08:00
MysterD
91b26646e0 Fix crash in geo_process_node_and_siblings() 2022-02-14 18:15:54 -08:00
MysterD
8abae8d26b Fix crash in peach cutscene 2022-02-14 18:30:02 -08:00
MysterD
f73c841bfe Fixed crash in init_shadow() 2022-02-14 18:28:01 -08:00
MysterD
6d6d94fcde Add Wario's moveset based on steven's mod 2022-02-14 18:26:44 -08:00
MysterD
3436d6d26f Update lua docs 2022-02-13 22:18:03 -08:00
MysterD
6f8714c764 Added FluffaLuigi's Wario model 2022-02-13 21:52:35 -08:00
MysterD
de02ffbf71 Fixed init_shadow crash 2022-02-13 17:05:25 -08:00
MysterD
2fea65b8ef Fix crash in get_level_name() 2022-02-13 16:47:42 -08:00
MysterD
988c75d621 Fixed crash in save set flag packet 2022-02-13 16:31:22 -08:00
MysterD
6d7d79a4aa Fixed crash in spawn star packet 2022-02-13 16:24:11 -08:00
MysterD
2b9c5b5a90 Fixed crash in spawn object packet 2022-02-13 16:17:58 -08:00
MysterD
31f6896814 Fixed crash on chat message 2022-02-13 15:57:54 -08:00
MysterD
922f8ef582 Fixed painting crash - when shoved OOB in a wobbly painting room 2022-02-13 15:54:12 -08:00
MysterD
127a35d05b Fix water droplet crash 2022-02-13 14:43:50 -08:00
MysterD
92ea8b78b3 Bump version to 16 2022-02-13 14:04:54 -08:00
MysterD
b5de854674 Added chat commands: /kick /ban /permban /players 2022-02-12 15:23:05 -08:00
MysterD
6925db864c Added a custom version of PeachyPeach's crash screen for Windows 2022-02-12 13:30:53 -08:00
MysterD
0098b0c472 Fixed crashes on 32-bit due to pointer offsets 2022-02-10 18:05:47 -08:00
Cameron Hall
fc8bb5e6bd Fix strange audio bugs on 32-bit
increase audio heap size, fix buffer overflow reading gBankSetsData, warn on soundAlloc failure

Provided by: camthesaxman
2022-02-06 15:34:34 -08:00
MysterD
e95a1d48e0 Fixed code warnings on smlua files (32-bit) 2022-02-06 15:19:44 -08:00
MysterD
89ea861c5b Added Draco's acceleration/friction to character movesets 2022-02-05 13:15:35 -08:00
MysterD
5ca457d4cd Fixed pragma-packing 2022-02-05 12:22:41 -08:00
MysterD
132a942df4 Moved in-game mod list 2022-02-05 12:20:21 -08:00
MysterD
ccdfd0854d Bumped version to 15 2022-02-05 10:29:34 -08:00
MysterD
ece9eca819 Fixed WDW water level desync 2022-02-05 10:26:56 -08:00
MysterD
36fbe2053b Prevented level change popup for players in credits 2022-02-05 10:26:38 -08:00
MysterD
0c05fbae87 Made Lua mods show up in player list 2022-02-05 10:26:07 -08:00
MysterD
948e4283de Made Lua mods show up in Discord Activity 2022-02-05 10:25:36 -08:00
MysterD
a28f046eb9 Made players drop held obj when bouncing on each other 2022-02-05 10:25:20 -08:00
MysterD
434176e7d6 Added a bunch of functions to Lua wrapper 2022-02-04 19:13:15 -08:00
MysterD
b226f7c271 Added line logging for all lua errors 2022-02-04 01:19:48 -08:00
MysterD
73ecd55eb9 Fix configfile buffer overrun (Mac mods missing fix) 2022-02-04 00:43:49 -08:00
MysterD
44b1d89c58 Fixed stack corruption in pause menu (Mac crash fix) 2022-02-04 00:21:18 -08:00
MysterD
ab1e85994e Added hook_on_sync_table_change() to Lua API 2022-02-04 00:15:14 -08:00
MysterD
0935eed3b7 Rewrite of how lua hooks chat commands 2022-02-03 19:50:27 -08:00
MysterD
b6a3733bf0 Added network_get_player_text_color_string() to lua api 2022-02-03 19:05:59 -08:00
MysterD
6fcc60a791 Changed autogeneration of Lua constants to pull directly from src 2022-02-03 00:43:17 -08:00
MysterD
cf34aa0b08 Added support for returning structs from C to Lua 2022-02-03 00:43:08 -08:00
MysterD
fb01338278 Added chat commands to lua mods 2022-02-03 00:42:57 -08:00
MysterD
a3467bb6dc Added chat message creation to Lua 2022-02-03 00:42:48 -08:00
MysterD
271a375510 Added immutable strings to autogen, added djui_popup_create 2022-02-03 00:42:31 -08:00
MysterD
d82dc207aa Adjusted autogen to pull functions directly from src 2022-02-03 00:41:07 -08:00
MysterD
8109bbcb59 Fixed hang related to mod incompatibility checking 2022-02-02 20:26:48 -08:00
MysterD
cecb145bbb Added network utils functions to Lua 2022-02-02 20:24:35 -08:00
MysterD
12f66994e6 Added on_player_connected/disconnected hooks 2022-02-02 19:33:36 -08:00
MysterD
c59aeedf78 Added gNetworkPlayers to lua api 2022-02-02 19:24:51 -08:00
MysterD
fcb459d095 Added HOOK_ON_PVP_ATTACK 2022-02-02 19:19:17 -08:00
MysterD
0d7b6daa9b Fixed character sound functions 2022-02-01 21:59:34 -08:00
MysterD
0845cb036d Added stick and dpad binds to controls menu 2022-02-01 19:35:15 -08:00
MysterD
9a3796f0b8 Added ability for sync tables to contain tables 2022-02-01 18:15:10 -08:00
MysterD
5e8db3de00 Allowed keys of SyncTables to be non-strings 2022-01-31 22:34:06 -08:00
MysterD
836e2f6e7d Refactoring lua sync table 2022-01-31 21:32:57 -08:00
MysterD
d92ea3ff21 Lua networking improvements
More types can be sent over the network
SyncTables are synchronized on client join
2022-01-31 19:09:03 -08:00
MysterD
20599aa6f3 Made globalIndex able to be determined by just localIndex
refactored the ugly spaghetti mess that was network_player_connected()
2022-01-31 00:29:44 -08:00
MysterD
e9d3bf49da Initial foundation for lua networking 2022-01-30 23:11:33 -08:00
MysterD
d5aeec5490 Removed ACT_(MARIO_ACTION) Lua functions from API (useless) 2022-01-29 23:02:36 -08:00
MysterD
c170984471 Autogenerated Lua documentation 2022-01-29 22:47:22 -08:00
MysterD
3d5d0b5306 Made Lua log to console outside of DEBUG builds 2022-01-29 15:42:33 -08:00
MysterD
1755df7c3a Re-enabled DEVELOPMENT flag's handling of keep alive packets 2022-01-29 01:16:23 -08:00
MysterD
28a979120a Fixed Discord join and download problems 2022-01-28 23:29:55 -08:00
MysterD
d731aa067d Revert "Prevented rare Discord crash on Linux"
This reverts commit bffcd7c30b.
2022-01-28 22:05:15 -08:00
MysterD
836f44463b Bumped version to unst 14 2022-01-28 19:16:05 -08:00
MysterD
df202c1936 Resynchronize Yoshi to fix softlock, synchronized special triple jump better 2022-01-28 19:13:23 -08:00
MysterD
fae014d957 Prevented packets from overrunning their buffers 2022-01-28 19:12:18 -08:00
MysterD
4c4b2b826c Made discord/socket use the right format types on Linux vs Windows 2022-01-28 00:15:06 -08:00
MysterD
f0ad3dd7d0 Prevent 'exit course' from doing the wrong warp sometimes 2022-01-28 00:03:39 -08:00
MysterD
35ac2165ad Prevent crash and end-of-level corruption when someone collects a non-course star 2022-01-28 00:01:34 -08:00
MysterD
bffcd7c30b Prevented rare Discord crash on Linux 2022-01-28 00:00:54 -08:00
MysterD
32ceded772 Prevent rendering of unimplemented characters 2022-01-28 00:00:25 -08:00
MysterD
5d9ad46730 Adjusted player enter/exit level popup 2022-01-27 23:59:46 -08:00
MysterD
1e3acefff1 Adjusted bouncing on players 2022-01-27 23:59:18 -08:00
MysterD
e157dca8bd Fixed incompatible tag comparisons, added two simple mods 2022-01-27 23:56:44 -08:00
MysterD
880afd79c3 Refactored interactable djui elements 2022-01-27 23:55:42 -08:00
MysterD
809dfd6373 Reading headers from lua files
Fix up warnings on Linux
Disabled mod checkboxes when an incompatible one is enabled
Display descriptions when hovering over a mod
2022-01-27 23:53:58 -08:00
MysterD
0aa8cd0e35 More improvements to Lua
autogenerated functions for characters.h

Fixes in autogen:
	improvements to LVT/LOT conversion
	improvements to immutability status

Updates to character-movesets.lua, every character has a moveset now

Added .type to stuct Character

Prevented unimplemented actions from crashing the game
2022-01-26 20:35:13 -08:00
MysterD
bf2969be04 More Lua improvements
convert_functions.py no longer hardcodes acceptable LOT_ values
Added characters.h and surface_collision.h to convert_structs.py
Prevented mod filenames with a slash in it from being considered acceptable
Sanitized mod filenames when received from the server
2022-01-25 20:28:34 -08:00
MysterD
08ccde2937 Lua: autogenerated cobjects 2022-01-25 19:28:10 -08:00
MysterD
2e79f860e6 More lua improvements
Added hooks: ON_SET_MARIO_ACTION, BEFORE_PHYS_STEP
Working on Luigi's character abilities
Autogen lua functions for surface_collision.h
2022-01-24 19:19:19 -08:00
MysterD
47a129573f Fixed Mac Lua library 2022-01-23 23:00:44 -08:00
MysterD
fe857de663 Fixed linux compile errors 2022-01-23 20:05:31 -08:00
MysterD
d09abc7bcd Switched from dynamic to static Lua lib 2022-01-23 20:04:53 -08:00
MysterD
0631108733 Lua will try to load from writable-path/mods before ./mods 2022-01-23 18:47:06 -08:00
MysterD
5ccb987ca7 Lua: more typechecking (converted lua_to* to smlua_to_*) 2022-01-23 17:15:04 -08:00
MysterD
7d3769a216 Added Lua function param count checking 2022-01-23 17:00:13 -08:00
MysterD
b45c61a605 Added Lua allow-list for cobject pointers 2022-01-23 16:35:43 -08:00
MysterD
fe11e25e0b Allowed enabling/disabling of mods through the UI 2022-01-23 15:45:42 -08:00
MysterD
79a659781c Added download progress bar 2022-01-23 11:32:03 -08:00
MysterD
75dfb45c6b Decreased the amount of back and forth for downloads
Server sends 5 chunks before waiting for another request
Download packets resend at a slower rate
2022-01-23 02:33:25 -08:00
MysterD
cdbf9eaabf Networking improvements
Reliable packets now save the actual remote address
Clients now only accepts server packets from the desired server
2022-01-23 01:55:43 -08:00
MysterD
767809f56a Lua mod table and download
Mods are now loaded into a table
Clients now request a mod list from the server, then download each file one at a time before joining
Embedded constants.lua into the program
2022-01-22 23:59:49 -08:00
MysterD
348d1509a1 Sandboxed Lua scripts 2022-01-21 20:06:45 -08:00
MysterD
0626c77048 Lua: moved hook functions into their own file 2022-01-21 19:40:26 -08:00
MysterD
34e903b89a Merge branch 'unstable' into lua 2022-01-21 19:19:21 -08:00
MysterD
edec02a89b Bump version to unst 13 2022-01-21 19:15:51 -08:00
MysterD
addd16721f Added headless server compile mode 2022-01-21 19:13:41 -08:00
MysterD
777b9287e6 Notify players where other players go with a popup 2022-01-21 18:24:53 -08:00
MysterD
6a447c10f4 Added ability to exit course, exiting out of the painting 2022-01-21 00:56:54 -08:00
MysterD
101a6400e0 Added define guards around controller bind mappings 2022-01-20 23:35:38 -08:00
MysterD
f45ae4a115 Allow players to change name/model/palette while connected 2022-01-20 22:23:57 -08:00
MysterD
8837dcc023 Removed server enforcement of unique player palettes 2022-01-20 21:52:14 -08:00
MysterD
05999a9ae8 Added key/bind names to controls menu 2022-01-20 21:46:22 -08:00
MysterD
8f3ca4c6ea Lua stuff
Added HOOK_BEFORE_MARIO_UPDATE
Added support for Vec3f/Vec3s in autogenerated lua functions
Added more lua functions from mario_actions_submerged.c, and thread6.c
Renamed animation-related fields in CObject wrappers
Moved coss and sins to wrapper

Extended Moveset:
  Fixed rolling angle bug
  Added rumble calls
  Set facing direction when spinning
  Added ledge parkour
  Corrected ground pound animation
2022-01-20 19:04:34 -08:00
MysterD
cc2324d35e Even more Lua improvements
Added support for structs: Surface, GraphNodeObject_sub, Animation
Generated lua wrapper functions for more functions in mario_actions_submerged.c
Fixed play_sound() wrapper to use a vec3f
Extended Moveset:
	ported wall slide and water ground pound
2022-01-20 18:02:12 -08:00
MysterD
b364493807 Even more Lua improvements
Reorganized autogenerated lua functions into their own file
Grouped up COBJECT LVTs
Partially implemented: struct MarioBodyState, Object, ObjectNode, GraphNodeObject
Reimplemented lua function wrappers for: camera.h, mario.h, mario_actions_*.c, mario_step.h
2022-01-19 19:20:57 -08:00
MysterD
8aa9a95d5b More Lua improvements
Added Lua wrapper functions for mario_actions_moving.c, mario_step.h, mario_actions_airborne.c, camera.h, mario_actions_stationary.h

Extended Moveset Mod:
Started porting spin jump from extended moveset
Added act_ground_pound_jump, act_spin_pound, act_spin_pound_land,
2022-01-19 01:00:56 -08:00
MysterD
f631f4d62f More Lua improvements
restrict lua libraries
extended moveset: finish roll, dive hopping
wrote a python script to codegen lua functions from C header files
converted most of mario.h
2022-01-18 18:51:06 -08:00
MysterD
68eff636d9 More Lua improvements, ported ACT_ROLL / ACT_ROLL_AIR from extended moveset 2022-01-18 01:48:51 -08:00
MysterD
ec161c9c09 Reimplemented how Lua reads/writes to C Objects 2022-01-17 20:50:39 -08:00
MysterD
1c29a2b47f Second iteration of Lua IO
Started working on third
2022-01-17 19:23:52 -08:00
MysterD
0aa1e04f93 More lua improvements
Added mods folder for lua scripts
Created constants.lua so scripts could use constants internal to the C code
Created event hooks
Separated out lua functions into multiple files
2022-01-16 18:07:45 -08:00
MysterD
1a47707be8 Initial LUA support - MarioState read/write 2022-01-16 08:51:29 -08:00
MysterD
511e7c5028 Prevent bubble softlock by halting bubble popping for half a second after being bubbled 2022-01-15 21:50:35 -08:00
MysterD
b5762c2446 Add in-game player list 2022-01-15 20:44:11 -08:00
MysterD
6a1ceab5ca Made bubble-on-death a server setting 2022-01-14 20:33:06 -08:00
MysterD
625e9b5df9 Fix various bugs with spiny and lakitu 2022-01-14 20:06:26 -08:00
MysterD
839575efe1 Fixed home radius on many enemies, fixed draw distance bug 2022-01-14 16:33:22 -08:00
MysterD
84b9fc8691 Reverted: Removed player offset when changing areas 2021-09-05 15:55:39 -07:00
MysterD
a98538c797 Bumped version to 12 2021-09-05 14:45:26 -07:00
MysterD
8fb46314fa Resync bouncing fireball to only have one owner 2021-09-05 14:42:53 -07:00
MysterD
3721877b6a Removed player offset when changing areas 2021-09-05 14:34:17 -07:00
MysterD
4cebce4864 Added Waluigi - model provided by Super Keeberghrh 2021-09-05 14:23:47 -07:00
MysterD
01f1615092 Player bounce improvements: jump height depends on velocity, crouching players cause a twirl 2021-09-01 18:11:01 -07:00
MysterD
628ed5b798 Resync bhv1upHiddenInPoleSpawner to prevent a sync table mismatch 2021-08-30 18:35:47 -07:00
MysterD
b0ba739a6e Fixed player-in-cutscene position/animations on late-join 2021-08-30 18:31:59 -07:00
MysterD
92692378b4 Added adjustable draw distance for objects 2021-08-30 18:22:36 -07:00
MysterD
f18007cd34 Added 30 or 60 FPS toggle 2021-08-29 20:17:38 -07:00
MysterD
d7d26639a8 Prevented controllers from clearing, fixes movement animations 2021-08-29 14:57:40 -07:00
MysterD
029e1f3a46 Fixed crash in credits 2021-08-29 14:28:46 -07:00
MysterD
1e100a52fe Fix duplicate packet hash checking 2021-08-29 13:27:16 -07:00
MysterD
f476f6b268 Bumped version to 11 2021-08-28 23:13:37 -07:00
MysterD
96288326b5 Fixed late-join for Act 1 BBH staircase 2021-08-26 18:02:07 -07:00
MysterD
67fac0b112 Made development/debug level switching immediate 2021-08-25 18:11:17 -07:00
MysterD
401e6169d5 Make packet duplication checking more intelligent by checking hashes 2021-08-25 18:05:36 -07:00
MysterD
a081327ef1 Add packet debug sync to make debugging sync ids easier 2021-08-25 18:02:30 -07:00
MysterD
d6150c0b0d Player-to-player attacks adjusted for metal marios 2021-08-23 21:48:33 -07:00
MysterD
71fb968c56 Made player-to-player attacks easier to land 2021-08-23 21:30:12 -07:00
MysterD
5e8562d194 Fixed coins-inside-boo for BBH in act 2 2021-08-23 20:16:46 -07:00
MysterD
48eb2d0ab0 Removed spawn offset from players during a same-area-warp 2021-08-23 19:47:15 -07:00
MysterD
caa38b2df5 Prevented coin sound spam when entering a level 2021-08-23 19:07:32 -07:00
MysterD
09bfe9cd0e Prevented softlock when collecting an object that is the focus of a cutscene 2021-08-23 19:03:14 -07:00
MysterD
b2849405b3 Changed all asserts in packet files to soft asserts 2021-08-23 18:58:30 -07:00
MysterD
d471a23a39 Fixed area syncing when two clients enter an area around the same time 2021-08-23 18:44:32 -07:00
MysterD
1952c42769 Fixed being unable to interact with objects when dying outside the castle 2021-08-23 18:32:55 -07:00
MysterD
b53283dbf0 SL: Prevented multiple people from sending snow mount spawns, fixed sinking animation 2021-08-23 18:11:12 -07:00
MysterD
e0cb832c21 Fixed late join sync for goomba triplets 2021-08-23 00:02:46 -07:00
MysterD
9363de073f Cached network IDs for each area to prevent area swapping from assigning a different set of sync IDs 2021-08-22 16:04:14 -07:00
MysterD
7c9b9a60d5 Bumped version to unstable 10 2021-08-21 15:56:54 -07:00
MysterD
7294e127f5 Fixed over 100 code warnings 2021-08-19 18:16:16 -07:00
MysterD
04d01667c3 Added a callback for area timer objects to only run certain things once per frame 2021-08-19 00:31:20 -07:00
MysterD
667cac9831 Rewrote the core of how the game determines how quickly it should run at
Allows vsync to be enabled regardless of the monitor's refresh rate
Automatically drops frames when it needs to
The game no longer runs fast on 144hz monitors
2021-08-18 23:50:40 -07:00
MysterD
b8e70fb46f Add range checks to model index 2021-08-18 22:58:54 -07:00
MysterD
4688ffe1f0 Added toad player character 2021-08-18 22:55:31 -07:00
MysterD
1d23f07429 Added an argument to backface culling 2021-08-18 22:52:48 -07:00
MysterD
d31eb41e7e Move character names to character struct 2021-08-18 21:51:55 -07:00
MysterD
8a40aeddea Refactored how enemies display a cap in their hand 2021-08-18 21:39:39 -07:00
MysterD
3bf9db3bbc Discord client hotfix 2021-08-16 19:29:37 -07:00
MysterD
e0815520b7 Fix client's vision of server palette 2021-08-15 13:56:11 -07:00
MysterD
1ef97584b2 Bumped version to unst 9 2021-08-15 12:55:39 -07:00
MysterD
43932249c6 Added support for spawning Luigi-versions of metal/vanish/wing cap as items 2021-08-15 11:46:28 -07:00
MysterD
efd22a81ab Added hacks for fire spitter and skeeter to prevent glitching through the floor on water level change 2021-08-14 20:17:57 -07:00
MysterD
d911c09c25 Added okey-dokey sound and transition to host menu 2021-08-14 18:45:25 -07:00
MysterD
f71cb26f64 Play menu music in main menu 2021-08-14 18:34:22 -07:00
MysterD
ee53beb10b Coin/star collection packet fixes
Added flag to send packet to everyone in the level regardless of area.
Coin collection packets now send to everyone in the level which keeps
coin counts consistent among players.
Star collection packets will no longer collect the wrong star if in a
different area than the originating player.
2021-08-14 17:53:08 -07:00
MysterD
0b88ed7cce Resynchronized racing penguin for late join 2021-08-14 12:13:55 -07:00
MysterD
ed95bd317b Resynchronized Koopa the Quick and race timers for late join 2021-08-14 11:48:15 -07:00
MysterD
b0267a5a31 Switch all malloc() calls in djui to calloc(). Possibly fixes menu bug 2021-08-14 11:03:31 -07:00
MysterD
bdabb26f81 Fix display of water droplet splashes 2021-08-12 18:53:17 -07:00
MysterD
68e04a74bc Fixed late join for items a Boo was carrying 2021-08-12 18:48:17 -07:00
MysterD
3edb08c98d Allow multiple players to interact with the same BBH cage 2021-08-12 18:18:28 -07:00
MysterD
7e59d34939 Added new MAXIMUM type to network area timer system. Exclamation boxes now reappear at the correct time 2021-08-12 18:13:41 -07:00
MysterD
383feba3b1 DJUI: Made panel movement screen-relative, always force current panel location 2021-08-12 00:15:10 -07:00
MysterD
64ab95efe1 Made inactive players drop held/heldby/ridden objects 2021-08-12 00:02:59 -07:00
MysterD
7ae2239670 Hid HUD while in main menu 2021-08-11 23:30:01 -07:00
MysterD
da31495564 Refactor player sounds, added pitch scale for player sounds 2021-08-11 23:24:53 -07:00
MysterD
142d21426d Make the join process a bit smoother 2021-08-11 00:39:11 -07:00
MysterD
0ce11ee2b1 Prevent main menu player model from corrupting while joining 2021-08-11 00:23:25 -07:00
MysterD
caf975a793 Player 'enter/leave level' popups now appear for bonus courses 2021-08-10 22:41:43 -07:00
MysterD
22121eea6b Fixed loading of certain save flags, e.g. lakitu 2021-08-10 22:25:34 -07:00
MysterD
d9ab09ee64 Critical fix to ordered packet system 2021-08-10 22:07:02 -07:00
MysterD
61ed5a774c Drop all reliable packets that are going to someone that disconnected 2021-08-10 21:06:10 -07:00
MysterD
58914e993f Prevent sending object-related packets until the area is synchronized 2021-08-10 18:46:33 -07:00
MysterD
fecba91c5e Rewrite the core of network area timer (yet again) 2021-08-10 18:29:49 -07:00
MysterD
f82b6c7ad0 1-frame smoothing of network area timer 2021-08-10 00:48:39 -07:00
MysterD
7044485431 Make clock fall back to REALTIME when MONOTONIC isn't supported 2021-08-09 23:58:28 -07:00
MysterD
d772764c4e Fixed cap-on-ground colorization behavior 2021-08-09 23:39:29 -07:00
MysterD
0c61b9fd07 Fixed crash when a hanging player was pushed off of the ceiling 2021-08-09 22:43:09 -07:00
MysterD
024ae36003 Retry Discord lobby creation on failure 5 times before giving up 2021-08-09 22:27:52 -07:00
MysterD
6f9b447468 Add null-checking to intro warp pipes 2021-08-09 22:06:51 -07:00
MysterD
5b0d4c60b3 LOGFILE_ calls now print to the terminal in DEBUG mode again 2021-08-09 00:09:44 -07:00
MysterD
fbbfcd6275 Fix compile error 2021-08-08 23:58:20 -07:00
MysterD
961723f22d Rewrote logfile API, made discord log to a file 2021-08-08 23:42:20 -07:00
MysterD
83f84fc3c0 Bumped version number to 8 2021-08-08 16:51:44 -07:00
MysterD
a5b8483100 Removed SDL2 API calls from SDL1 backend 2021-08-08 16:50:44 -07:00
MysterD
710a7e4749 Color detached caps according to player palette 2021-08-06 01:02:07 -07:00
MysterD
16fb9d3dff Add popup to inform a player when other players enter/leave the level they're in 2021-08-05 19:13:12 -07:00
MysterD
723a5cc46e Prevent transmission of player information when the player was in the main menu 2021-08-05 18:36:01 -07:00
MysterD
dafa5536a1 Move water level syncing from level packets to area packets 2021-08-05 00:40:43 -07:00
MysterD
cbb7eb419c Prevent level/area/object sync during credits sequence 2021-08-05 00:22:03 -07:00
MysterD
0d05853138 Fix ending cutscene crash and make game playable afterward without rehosting 2021-08-04 23:56:33 -07:00
MysterD
3ba77087e9 Prevent DJUI from creating and removing a panel at the same time 2021-08-04 23:55:46 -07:00
MysterD
4a3b39061f Force players in the credits sequence into the 'credits' instance 2021-08-04 13:01:59 -07:00
MysterD
8984ec3ba8 Adjust main menu cutscene and camera 2021-08-04 19:15:42 -07:00
MysterD
354146e3ac Make final Bowser star interactable for all players 2021-08-04 18:55:32 -07:00
MysterD
00da6b48f5 Fade out players when they leave/disconnect 2021-08-04 18:47:59 -07:00
MysterD
ab9056bb68 Make players invisible until their level/area can be verified 2021-08-04 18:15:46 -07:00
MysterD
7c8bddde28 Prevent capless flags from ever being set 2021-08-04 00:05:51 -07:00
MysterD
b1acd644f7 Invalidate area/level sync when unloading the area/level 2021-08-03 23:58:17 -07:00
MysterD
a2546055b2 Delay the display of the join text in star selection screen 2021-08-03 23:44:57 -07:00
MysterD
c5700825a8 Resynchronized WF tower platforms using Network Area Timer 2021-08-03 23:39:28 -07:00
MysterD
e17cba85f3 Allow host to own objects when no one else is connected 2021-08-03 23:26:51 -07:00
MysterD
f8c5fb0725 Resynchronize WF platforms using Network Area Timer 2021-08-03 23:26:32 -07:00
MysterD
6a957757d4 Refactored network area timer system 2021-08-03 19:21:50 -07:00
MysterD
a84e7a73fe Resync bomp using Network Area Timer 2021-08-03 18:52:48 -07:00
MysterD
a520b25c26 Fixed Network Area Timer system 2021-08-03 18:02:21 -07:00
MysterD
95fa0c626e Show normal mouse cursor when DJUI panels are closed 2021-08-03 00:12:16 -07:00
MysterD
33c82b7514 Capitalize palette strings 2021-08-02 23:08:00 -07:00
MysterD
f9695ca40c Copy over an ASCII version of Discord username if a username hasn't been set 2021-08-02 23:07:15 -07:00
MysterD
5625505660 Fix server-override of local player's palette 2021-08-02 23:00:03 -07:00
MysterD
726f10f231 Fixed strange desync when a player left 2021-08-02 22:57:06 -07:00
MysterD
5dba8daa4f Merge branch 'unstable' into dev/unstable 2021-08-02 22:35:37 -07:00
MysterD
d7b0945410 Added configurable player name, model, and palette 2021-08-02 22:33:38 -07:00
MysterD
4d997ba05e Fix long-standing chair crash in BBH 2021-08-02 19:45:13 -07:00
MysterD
3d067637b5 Added list of patch names to Discord's activity information 2021-08-02 19:35:32 -07:00
MysterD
68fe7af455 Chat rendering optimizations 2021-08-02 19:22:16 -07:00
MysterD
951d8e6fe7 Prevent segfault when hovering over a DJUI element 2021-08-02 18:57:19 -07:00
MysterD
44850f7b57 Switch from clock() to clock_gettime() due to implementation differences 2021-08-02 11:49:57 -07:00
MysterD
8642479d82 Fix Mac + DISCORD_SDK compilation errors 2021-08-02 02:59:45 -07:00
MysterD
f9a144b6c1 Fix segfault when comparing mods 2021-08-02 00:33:34 -07:00
MysterD
c18413ed2a Changed gDjuiFonts to an array of pointers (possible Mac compilation fix 2021-08-01 17:29:02 -07:00
MysterD
0b819c01e9 Switch from using clock() to time() for rate limiting (Linux-fix) 2021-08-01 17:04:08 -07:00
MysterD
bb4b666735 Erasing a save slot will now erase the correct slot 2021-08-01 13:45:26 -07:00
MysterD
05432c692a Updated star count on host/join 2021-08-01 13:40:31 -07:00
MysterD
7a61c61051 Fixed DJUI panels getting stuck when spamming B button 2021-08-01 13:29:21 -07:00
MysterD
a2bb578dbf Made the 'R Button - Options' text only appear on pause 2021-08-01 13:26:57 -07:00
MysterD
3085b9b749 Changed popup sound 2021-08-01 13:20:22 -07:00
MysterD
aedba38ca5 Made DJUI no longer take priority over arrowkey/enter binds when no panel is active 2021-08-01 13:18:22 -07:00
MysterD
caa13fb69f Made configfile save on quit button press, panel close, options menu close 2021-08-01 10:53:29 -07:00
MysterD
da13828509 Made rumble strength and deadzone settings apply instantly 2021-08-01 10:44:50 -07:00
MysterD
97d353c7aa Fixed typo 'play intro cutscene' -> 'skip intro cutscene' 2021-08-01 10:37:51 -07:00
MysterD
26720f9c47 Made camera settings apply instantly 2021-08-01 10:36:50 -07:00
MysterD
1917c6231b Changing controller/keyboard binds will now apply immediately 2021-08-01 10:23:33 -07:00
MysterD
cd913345ca Fix spacebar in chat 2021-08-01 10:12:18 -07:00
MysterD
922499dada Adjusted where selectionbox is defined 2021-07-31 20:53:11 -07:00
MysterD
2580e6a681 Bumped version number to unst 7 2021-07-31 17:27:41 -07:00
MysterD
9699d79dd7 Fix Discord connections on unstable 2021-07-31 17:24:13 -07:00
MysterD
7757a69145 Briefly forgot how IP addresses worked 2021-07-31 03:18:00 -07:00
MysterD
0b3f363130 DJUI: Ignore garbage text inputs if there are no valid characters 2021-07-31 03:02:30 -07:00
MysterD
98b7dba74b DJUI: Added mouse support to DX11/DX12 2021-07-31 02:30:10 -07:00
MysterD
661f2c28dc Readded player died popup 2021-07-30 19:37:20 -07:00
MysterD
3ee3f3e5bd Added simple rate limiting of packets 2021-07-30 19:33:09 -07:00
MysterD
033a9aa1a8 Hide other players in main menu 2021-07-30 18:47:09 -07:00
MysterD
1845f8aaaf DJUI: Resize HUD scale based on window resolution 2021-07-30 18:41:49 -07:00
MysterD
d615dcfbce DJUI: Added sounds to popups 2021-07-30 18:22:32 -07:00
MysterD
4e0a3e3e57 Merge branch 'dev/djui' into dev/unstable 2021-07-22 20:38:21 -07:00
MysterD
1ddb27d1ad DJUI: Default menus to keyboard/gamepad controls 2021-07-21 00:58:19 -07:00
MysterD
64648a8ce3 DJUI: Reimplemented chat 2021-07-21 00:53:28 -07:00
MysterD
321e101b30 Made cheats server-setting, created cheat menu 2021-07-16 18:43:21 -07:00
MysterD
6ad96d5e69 Removed luigi sound config 2021-07-16 18:12:56 -07:00
MysterD
7e1a05a40b DJUI: Replaced old ingame menu with new DJUI menu 2021-07-15 19:37:09 -07:00
MysterD
c0ec2caac1 DJUI: Made cursor hover location control-configurable 2021-07-15 18:47:19 -07:00
MysterD
a89dd55081 Added knockback strength to host setting menu 2021-07-15 18:33:27 -07:00
MysterD
f44d8ffc4c DJUI: pressing B or escape will go back one menu 2021-07-15 18:11:37 -07:00
MysterD
3d0d87a4eb DJUI: Made cursor movement more predictable 2021-07-14 19:25:39 -07:00
MysterD
b0453da5e4 DJUI: Changed quit menu into confirm menu, confirmed save erase 2021-07-14 19:14:07 -07:00
MysterD
28d63b2c87 Added save file selection to host menu 2021-07-14 18:58:52 -07:00
MysterD
f51f60ba24 Prevent the ability to host when Discord failed to initialize 2021-07-12 20:18:15 -07:00
MysterD
3395ba26f4 Added host port inputbox to host menu 2021-07-12 20:06:51 -07:00
MysterD
46f905f4a3 DJUI: Created popup system, re-added missing popup messages 2021-07-12 18:29:39 -07:00
MysterD
4fb951c0bf Fix commandline params for client/server 2021-07-11 02:04:26 -07:00
MysterD
ec2f07f20d DJUI: Made join IP inputbox work correctly 2021-07-11 01:21:56 -07:00
MysterD
5c4677ca77 Added a join message screen
Displays an animation while joining
Shows version mismatch error in join message screen
Shows mod mismatch error in join message screen (displays mismatching mods now)
Displays party is full / host closed connection in join message screen
Added string builder
2021-07-10 22:30:58 -07:00
MysterD
13d504a953 Replaced old host/join menu with new DJUI menu system 2021-07-04 22:40:04 -07:00
MysterD
733217a07a Removed old custom menu system 2021-07-01 21:27:57 -07:00
MysterD
58eec0e19f Removed old chat system 2021-07-01 21:14:11 -07:00
MysterD
1b1ed0038f DJUI: Added join panel 2021-07-01 21:03:14 -07:00
MysterD
b4418bbd4f DJUI: Made inputbox usable
Added keyboard support to inputbox
Fixed how inputbox text is clipped
Added on_enter_press callback for inputbox
Added ability to set clipboard text
Adjusted how components can be focused, and when they lose focus
Erased most of the text input stuff in controller_keyboard
Disabled major parts of old chat system
Disabled major parts of old menu system
2021-07-01 20:03:54 -07:00
MysterD
e424b9f9f3 DJUI: Started adding inputbox 2021-06-29 19:04:23 -07:00
MysterD
df20408a93 DJUI: Added button style for back button 2021-06-28 18:25:06 -07:00
MysterD
fc1db575bd DJUI: Make cursor movement more predictable 2021-06-28 18:15:59 -07:00
MysterD
2a4817b29b DJUI: Adjusted normal font, added missing characters 2021-06-28 18:08:24 -07:00
MysterD
8f5f94f0c7 DJUI: Removed unimplemented Player menu 2021-06-28 00:07:07 -07:00
MysterD
8b7ab3c35c DJUI: Added host menu
Added host message menu
Refactored how panel menus are constructed
Adjusted normal font's line height
Adjusted how text boxes detect max lines
2021-06-28 00:04:48 -07:00
MysterD
4504b2c21b DJUI: Added controls menu 2021-06-27 15:54:10 -07:00
MysterD
a6c204e1cf Fixed how players compare their area numbers 2021-06-27 00:40:30 -07:00
MysterD
ad3ee677c6 Fixed cannons, possible fix to star unlocks 2021-06-27 00:33:31 -07:00
MysterD
59eef70183 Prevent player-to-player interactions from messing up other ones 2021-06-26 21:51:00 -07:00
MysterD
974d9b52cf Prevented initial level dialog from appearing twice 2021-06-26 20:36:18 -07:00
MysterD
3625ad8883 Made clients send keep-alive packets again 2021-06-26 20:25:38 -07:00
MysterD
6c687a5a73 Prevent walking through warp doors 2021-06-26 20:20:19 -07:00
MysterD
b7795fd9d1 Prevent packet_save_set_flag from looping 2021-06-26 16:54:43 -07:00
MysterD
e85e6b9983 Bumped version to unst 6 2021-06-26 15:29:59 -07:00
MysterD
f13b7990a0 More networking adjustments
Adjusted when a join request is sent, and who it is sent to
Adjusted default course/act/level/area for new players
Added a sequence id to level area inform
Adjusted reliable packets to be sent half as frequently
2021-06-26 15:28:51 -07:00
MysterD
8b403d4509 DJUI: Added selectionbox 2021-06-26 14:20:39 -07:00
MysterD
1e4acef2e0 DJUI: Added checkbox and camera panel 2021-06-25 23:03:38 -07:00
MysterD
bf54a305d4 Hide cursor regardless of window mode 2021-06-25 15:56:28 -07:00
MysterD
28ce5e9cdf DJUI: Added sliders, made Sound menu work 2021-06-25 15:50:31 -07:00
MysterD
05c32ea73e DJUI: Wrote active panel system 2021-06-24 18:15:59 -07:00
MysterD
5131665be2 DJUI: Added 'Three Panel' component 2021-06-23 19:17:46 -07:00
MysterD
56a6532d9c DJUI: Improved keyboard/gamepad input 2021-06-22 21:35:55 -07:00
MysterD
580f19dcc9 DJUI: Added keyboard/gamepad support 2021-06-22 20:01:16 -07:00
MysterD
a3947b3800 DJUI: started adding options menu 2021-06-22 00:13:37 -07:00
MysterD
dfef74e727 Added custom title font
Adjusted text system to have multiple fonts
Added color escape to text
2021-06-21 21:18:27 -07:00
MysterD
7aec232450 Added quit menu
create enabled switch to disable interactables
fixed djui_base_destroy()
added on_click() event
2021-06-21 03:11:53 -07:00
MysterD
c0b093b11f DJUI: Created main menu panel
Added ability to make a DjuiBase keep its aspect ration
Added on_render_pre callback
Added ability to display 32b images
Added DjuiFlowLayout
Added logo
2021-06-20 23:34:14 -07:00
MysterD
99308a3145 Many small adjustments to networking code
In an attempt to track down an issue that causes packet flooding and
hanging, I've looked at every step of the networking process and tried
to clean up anything strange I saw.
2021-06-20 04:36:33 -07:00
MysterD
ac85a7e4a7 Re-disable Discord until issues are sorted 2021-06-20 00:49:52 -07:00
MysterD
3eef4076b9 Possibly fixed Discord issues 2021-06-19 21:59:06 -07:00
MysterD
5e6eb8e833 DJUI: Added interactable mousedown events 2021-06-19 19:50:59 -07:00
MysterD
6e23c952f9 DJUI: Rendering, interactable, and mouse adjustments
Made DJUI render at 60 fps
Added mouse cursor and hooks in SDL for capturing the window-relative mouse position
Started creating an interable system where elements can respond to events such as on_mouse_hover
2021-06-19 18:22:44 -07:00
MysterD
63e9621d56 DJUI: Added drop shadow to text 2021-06-19 01:21:25 -07:00
MysterD
b80cc50cd0 DJUI: Added padding to DjuiBase 2021-06-19 01:10:24 -07:00
MysterD
f27a6b2469 DJUI: Added borders to DjuiBase 2021-06-18 18:53:41 -07:00
MysterD
368157fbcd DJUI: added ability for x/y/w/h values to be relative to parent's size 2021-06-18 16:16:41 -07:00
MysterD
038c1135b3 Initial DJUI commit
The birth of a custom user interface system.

Has the ability to draw things to the screen at native resolution
regardless of window size.

Components can be nested within one another to an arbitrary depth.

Text rendering is completely rewritten.

Text and images can be clipped by their parent container.
2021-06-18 15:23:59 -07:00
MysterD
52d07c4dde Bump version number to 5 2021-06-15 21:27:59 -07:00
MysterD
939318041e Bowser, cannon door, and eyerok no longer require server to be in level
All have been switched from being owned by the server to being owned by
the player with the lowest global ID in the level.
2021-06-15 21:04:51 -07:00
MysterD
f60b861d73 BBH bookshelf manager no longer requires the server to be in BBH
Instead of only allowing the server to update the bookshelf manager, allow the
lowest global ID player to update it.
2021-06-15 21:01:28 -07:00
MysterD
4c401f9ba8 Resynchronized DDD poles to use area timer system 2021-06-15 18:01:03 -07:00
MysterD
4396381d60 Change unstable build disclaimer 2021-06-15 00:20:29 -07:00
MysterD
15f8b12770 Fixed Discord packet system for >2 players 2021-06-15 00:15:03 -07:00
MysterD
10e8af83ba Fixed how Linux registers the discord executable 2021-06-14 23:31:22 -07:00
MysterD
0c459294bb Fixed the merry go round in BBH
Fixed releasing of sync objects that otherwise don't sync their death events
Fixed using/releasing reserved objects in an area that the server isn't in
2021-06-14 21:06:07 -07:00
MysterD
ef2287a5d5 Resynchronized checkerboard elevators to use area timer 2021-06-14 20:29:08 -07:00
MysterD
e7d0f8ec8b Resynchronized LLL puzzle pieces
Created a timer based on area that is shared. The puzzle pieces will
execute rapidly to catch up to the timer on level join. This keeps them
in sync without constantly needing to acknowledge that a puzzle piece
had moved before continuing.
2021-06-14 20:14:47 -07:00
MysterD
6aded174e9 Synchronized moat draining and cap switch unlocks 2021-06-14 19:59:11 -07:00
MysterD
02fbdca868 Fix bowser key unlock sync 2021-06-14 19:21:47 -07:00
MysterD
8e52960cf7 Added indication of which players are in which acts 2021-06-14 19:11:26 -07:00
MysterD
361a57edb6 Instance levels based on which star was selected
Previously the levels were instanced based on "act" which is a concept
that is invisible and unintuitive to the user.
2021-06-14 18:25:24 -07:00
MysterD
cd48d177b0 Additional synchronization + misc fixes
Prevented crash that happened when an upstairs painting was entered
Synchronized TTC speed setting
Synchronized WDW water level on late join
Player packets no longer broadcasted to clients in a different location
2021-06-14 18:13:58 -07:00
MysterD
b1ac0c9f7f Adjusted how "static" sync entities are removed
No longer needs hacky stuff like relying on the macro for goomba triplet removal.
Instead we simply keep a list of sync ids of objects that were removed (but were
around at the start of level loading)
2021-06-13 19:00:55 -07:00
MysterD
3ab1b0b4b5 Synchronized red coin count on join. 2021-06-13 18:32:35 -07:00
MysterD
518a1fda4b Server makes sure the client can receive the packet before sending/tunnelling 2021-06-13 17:57:54 -07:00
MysterD
59d08a90b9 Fixed how "levelAreaMustMatch" packets are sent/processed
Instead of the server dropping them immediately, the server only drops the processing. This allows it to broadcast/send the packet to the correct client without the server processing it.

Fixed how "static" level objects were detected. The old way was error prone and would consider spawned objects to be static anyway.

Made ERROR_LOGs always show up, "disabling" logging only turns off INFO_LOGs now.
2021-06-13 17:47:58 -07:00
MysterD
7ae26b3ea0 Complete rewrite of entity ID reservation system
Now "syncId"s can only be reserved at ID 127+. This ensures that static level
objects and spawned reserved objects never clash. The server keeps track of
every player's list of reserved IDs, as well as when an ID is used, or when
an entity using that ID is destroyed. This is much more complicated than it
used to be, but this complication is required due to players being allowed to
be in different areas of the game.
2021-06-13 16:04:28 -07:00
MysterD
fde6eaf0a3 Added ordered packet system
Now packets can be grouped up and sent separately, but still be processed
sequentially regardless of how much they get scrambled over the network.
If a packet group isn't received for 15 seconds, all unprocessed packets
in that group will be dropped. Packet ordering is required for level and
area synchronization information when someone joins the level late.
2021-06-11 19:37:32 -07:00
MysterD
b6959dc7ea Informed players of ent deletions in a different area (but same level)
Added packet_level_respawn_info to inform the players of entity
deletions in a different area of the same level. Currently it's
massively noisy due to sending out a new packet for each entity
destroyed. This can cause chaos when collecting a series of coins.

Ideally this information would be batched and sent in one big blob every
so often.
2021-06-11 16:19:24 -07:00
MysterD
6bfdcbcb7b Complete rewrite of level-change/area-change system
Now level changes and area changes are separated. Entity deletions are
properly tracked on level change or area change. Late entity
synchronization is now triggered on any area change.
2021-06-11 14:39:25 -07:00
MysterD
0b3a97d405 Improvements to late-join synchronization
Removed (slightly) old coin and static ent removal system
Resynchronized respawners
Added packet for macro deletions
    better than previous system since the entities don't need a sync id and we can synchronize deletion station across areas
    allows the synchronization of odd entities like lines of coins
Added packet for spawn info deletions
Split packet_location_request into multiple files
2021-06-09 22:35:34 -07:00
MysterD
6e7c542068 Synchronized race timers 2021-06-08 22:05:12 -07:00
MysterD
33fbed94e4 Synchronized respawners and entities created after level load 2021-06-08 21:21:52 -07:00
MysterD
5db1a9e827 Synchronize late-join coin collection 2021-06-08 02:26:35 -07:00
MysterD
4be00a2eb1 Late-join synchronized chain chomp and exclamation box 2021-06-08 01:29:21 -07:00
MysterD
050d940d53 Added ability for clients to send packets to each other skipping server
Added memory of last reliable packet about each sync object
2021-06-07 23:12:17 -07:00
MysterD
e593bedc77 Keep track of static level spawn removals and sync them on location response 2021-06-07 19:25:31 -07:00
MysterD
bbdc942501 Ripped out level synchronization/warp code
Began writing new system that synchronizes course/act/level/area per
player and 'ownership' of that location.
2021-06-07 12:19:59 -07:00
fgsfds
b12bf38abd sync with stable 2021-04-06 22:56:08 +03:00
fgsfds
4ba30ebd9e windows: bump SO_SNDBUF size when playing with >4 players 2021-04-06 18:09:07 +03:00
fgsfds
abd3a0a130 add more player colors 2021-04-06 18:08:41 +03:00
fgsfds
10c63a1706 bump unstable version number 2021-04-06 02:30:54 +03:00
fgsfds
511b1352b8 colorize chat messages with player color 2021-04-06 02:30:37 +03:00
fgsfds
109e713689 implement changeable model colors
in a very dumb way:

the custom colors are set for lights 3, 4, 5, 6 in a GEO_ASM callback, then copied to lights 1, 2 using gsSPCopyLightEXT
2021-04-06 00:22:42 +03:00
fgsfds
798389b527 added new GBI command: G_COPYMEM
exclusively for copying lights around for now; required for my retarded model color implementation
2021-04-06 00:18:04 +03:00
fgsfds
d4cdd89683 everyone except host is luigi 2021-04-05 04:21:23 +03:00
fgsfds
8f4965e05d partially fix jitter with two of the same model 2021-04-05 04:21:14 +03:00
fgsfds
843a8cd18f djoslin0's new warp code 2021-04-05 03:21:37 +03:00
Avery
b68d5b107a
make discord max party size equal to MAX_PLAYERS 2021-03-06 21:07:55 -08:00
MysterD
dd90132145 Whoops, actual release 2020-10-18 22:24:37 -07:00
MysterD
a0b5f28b38 Beta 2 release 2020-10-18 22:21:25 -07:00
MysterD
c0652f8a48 Allocate the correct number of controllers on stable branch 2020-10-18 22:15:52 -07:00
MysterD
281e45051b Prevent racing penguin crash when one player cheats
Fixes #87
2020-10-18 18:21:19 -07:00
MysterD
f88aee251e Keep BETTERCAM/bubbled players within the minimum Y bounds of levels
Players/cameras were able to clip inside of island-like levels
previously. I have hardcoded sane minimum Y values for the following
courses: WF, CCM, PSS, BITDW, TTM, RR, BITS
2020-10-18 11:57:45 -07:00
MysterD
4cb49d3946 Misc sync fixes to various enemies
Considered nearest player for various things within the following
entities that I missed the first time around: cloud, koopa, monty mole,
moving coin, piranha bubbles, scuttlebug, shock wave, spindrift.
2020-10-17 23:58:24 -07:00
MysterD
cbf8505516 Misc fixes to bub 2020-10-17 23:43:29 -07:00
MysterD
f4263deea9 Fix wiggler softlock and intangibility 2020-10-17 23:38:32 -07:00
MysterD
98cc31d6cb Do not consider inactive players when bubbled 2020-10-17 23:27:34 -07:00
MysterD
eea5ebb94b Fixed command-line launch segfault
custom_menu_destroy() was causing a segfault when launching the game via
command-line parameters
2020-10-17 23:04:59 -07:00
MysterD
2519c59958 Merge branch 'unstable' of https://github.com/djoslin0/sm64ex-coop into unstable 2020-10-16 23:37:01 -07:00
Victor Diego Alejandro Diaz Urbaneja
26928ac6f5
overlay error (#88)
* overlay error

fixed compilation error

* Update custom_menu_system.c

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2020-10-16 23:36:31 -07:00
MysterD
615c19be6f branch 'unstable' of https://github.com/djoslin0/sm64ex-coop into unstable 2020-10-16 23:33:47 -07:00
MysterD
1564ac7c0f Translated Luigi sounds through new Character system 2020-10-16 23:33:41 -07:00
MysterD
a5a4c3c324 Make gControllers respect MAX_PLAYERS
fixes Linux crash when MAX_PLAYERS is increased
2020-10-16 22:22:28 -07:00
MegaMech
33dda3322c
Added connection transition (#86)
* Added content to custom_menu_destroy()

* Added connection transition

* Update custom_menu_system.c

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2020-10-16 21:43:26 -07:00
anzz1
130cfefa82
Fix DISCORD_SDK=0 building (#85)
Co-authored-by: anzz1 <>
2020-10-16 20:20:14 -07:00
anzz1
d1739648e1
Added Luigi sounds (#77)
* added a new audio bank 10 for luigi sounds
* made some audio memory buffers larger to fix sound cuts
* added option to enable/disable luigi sounds in the sound options menu
* added Andrat's "90's Classic Luigi Voice Pack" as default luigi sounds

Co-authored-by: anzz1 <>
2020-10-16 11:54:59 -07:00
MysterD
2b0f892251 Misc adjustments to recent PRs
Switched from manual checking of Luigi to using new Character structs
Synchronized cap spawning for mario_blow_off_cap()
Added declarations for network_send_death() and network_receive_death()
2020-10-16 03:59:24 -07:00
MysterD
05fd683c64 Fix UNSTABLE_BRANCH checking 2020-10-16 03:56:37 -07:00
anzz1
bc7ec31c02
Enemy hat fixes (#83)
* Ukiki now steals Mario/Luigi hat correctly
* Klepto now steals Mario/Luigi hat correctly
* Mr. Blizzard now knocks off Mario/Luigi hat correctly
* Fwoosh now knocks off Mario/Luigi hat correctly

Co-authored-by: anzz1 <>
2020-10-16 03:03:25 -07:00
MegaMech
e447332cec
Added server settings: shared lives and skip intro
Adds button to the host menu to allow shared lives.
Resolves #37

Buttons are now resizeable. Use gButtonScale.<size> (large, medium, or small).
It could be argued that we don't need the small size. However, it may be beneficial for the future if the menu becomes more complex.

large is the normal default size. Or at least it was the size already being used by sm64ex-coop (0.11111111f)

Note: Buttons for changing menu's should be gButtonScale.large as the menu animation is made for large buttons. To keep consistency it's probably a good idea for buttons that transfer you to a new menu to always be set to large. As such, I didn't feel it necessary to extend this feature to these methods: bhv_menu_button_growing_from_custom and bhv_menu_button_shrinking_to_custom.

Resolves #60
2020-10-16 02:58:57 -07:00
MysterD
c49ba7cdd8 Change version to beta 2, prepare unstable branch 2020-10-16 01:04:07 -07:00
MysterD
9f158de95d Remove two-player hack for controlled warp 2020-10-15 18:04:53 -07:00
MysterD
48aee0c7be Enemies drop player when picked up 2020-10-14 23:52:07 -07:00
MysterD
66eb163339 Prevent playing star cutscene when in cutscene 2020-10-14 23:36:19 -07:00
MysterD
71bc444fa2 Desync fixes for hoot, piranha, spiny 2020-10-14 23:25:59 -07:00
MysterD
c50794773c Allow bubbled players to go through elevators 2020-10-14 23:20:43 -07:00
MysterD
196ac547ef Bubbled visual improvements (pitch to player) 2020-10-14 23:18:05 -07:00
MysterD
040aa92fd1 Prevent people from hosting a discord game when discord fails 2020-10-14 21:17:28 -07:00
MysterD
8750198750 Prevented vanish cap players from interacting with other players 2020-10-14 20:58:03 -07:00
MysterD
cfd559bc74 Sync riddenObj, prevent remote interaction with shell 2020-10-14 20:50:55 -07:00
MysterD
8fc8ca6ca7 Prevent players from interacting with a shell that someone else is riding 2020-10-14 20:42:04 -07:00
MysterD
cb902c519d Properly synchronize koopa shells spawned from boxes 2020-10-14 20:34:38 -07:00
MysterD
d882e8a039 Added a way to debug sync object tables through chat 2020-10-14 20:33:23 -07:00
MysterD
16b95fdbca Prevent cursor from going past array in course completion screen 2020-10-14 20:03:05 -07:00
MysterD
85c05e7d56 Removed two-player hacks for packet_spawn_objects 2020-10-14 00:15:56 -07:00
MysterD
28ad7f91ed Smooth over transition from sending raw enums 2020-10-13 23:04:08 -07:00
MysterD
55bbe8d4d9 Removed two-player hacks for heldObj and spawning offsets 2020-10-13 22:26:13 -07:00
MysterD
c8a45235ca Removed two-player hacks from cannon and object packets
Increased error checking of get_behavior_from_id
Made failure logging for packet_object a lot better
Changed debug logging to show global index instead of "Server/Client"
Changed debug keyboard binds to support more keyboard types
Made SyncObject's rxEventId de-duplication per-player instead of one-player
Removed sizeof(enum) from packet_read/packet_write
2020-10-13 21:44:27 -07:00
MysterD
aaa7e65b65 Created character struct for mario/luigi asset differences
Removed multiple two-player hacks in the process
2020-10-13 18:33:51 -07:00
MysterD
f230d4fe63 Removed two-player hack for held objects 2020-10-13 18:12:33 -07:00
MysterD
9f1d03d5b4 Remove two-player hack for packet_object 2020-10-13 18:11:40 -07:00
MysterD
66af03c41d Slight improvement to small breakable box sync 2020-10-12 18:10:40 -07:00
MysterD
c214800faf Standardized de-duplication of reliable packets 2020-10-12 18:40:38 -07:00
MysterD
5d9d5ed9d7 Added ability for client to send a packet to server, and for the server to broadcast to all clients 2020-10-12 18:23:48 -07:00
MysterD
3f798609be remove unused version call 2020-10-11 20:45:44 -07:00
MysterD
8b6bfc2369 Possible fix for big bully spawn 2020-10-11 19:16:21 -07:00
MysterD
d4f92ed209 Reset override_ownership to null (fixes crash in THI) 2020-10-11 18:54:05 -07:00
MysterD
7bf2ebd7e8 Made version mismatch screen more descriptive 2020-10-11 18:26:10 -07:00
MysterD
342a048e0e Display instructions on how to fix Discord error to user 2020-10-11 18:11:11 -07:00
MysterD
adb7fe86eb Fix how scancodes are read for text input
May fix issue where spanish keyboards are unable to press enter to chat
2020-10-11 17:20:47 -07:00
MysterD
feb9bead02 Synchronized the controller properly (fixes 64bit-to-32bit communication bug) 2020-10-11 17:20:08 -07:00
MysterD
c0a30c8de6 Establish new versioning system (beta 1) 2020-10-11 15:49:24 -07:00
MysterD
7791e03d6a Added all levels to support levels! 2020-10-11 14:55:08 -07:00
MysterD
1345b8d9d0 Synchronized Bowser 3 fight platforms 2020-10-11 14:54:16 -07:00
MysterD
b536fcfdb0 Added RR to supported levels 2020-10-11 14:42:04 -07:00
MysterD
13fdf6ceaf Added TTC to supported levels 2020-10-11 14:40:13 -07:00
MysterD
dbe1e21b87 Synchronized TTC treadmill 2020-10-11 14:39:41 -07:00
MysterD
f64e315c74 Synchronized TTC spinner 2020-10-11 14:39:32 -07:00
MysterD
7167c8537b Synchronized TTC rotating solid 2020-10-11 14:39:21 -07:00
MysterD
52510de84e Synchronized TTC pit block 2020-10-11 14:39:07 -07:00
MysterD
4cb089c428 Synchronized TTC pendulum 2020-10-11 14:38:56 -07:00
MysterD
788dc5310c Synchronized TTC moving bar 2020-10-11 14:38:44 -07:00
MysterD
63af39cd53 Synchronized TTC elevator 2020-10-11 14:38:30 -07:00
MysterD
83baf2eac6 Synchronized TTC cog 2020-10-11 14:38:19 -07:00
MysterD
cbeea0472c Synchronized TTC 2d rotator 2020-10-11 14:38:07 -07:00
MysterD
e1ca3b963d Misc gMarioState/gMarioObject cleanup 2020-10-10 16:12:29 -07:00
MysterD
229880cfda Synchronize burning player smoke + misc version improvements 2020-10-10 15:49:17 -07:00
MysterD
b7cf6cdf5c Synchronized 'donut platforms'... the slow falling ones in RR 2020-10-10 15:33:17 -07:00
MysterD
736fba54a2 Synchronized swing platform 2020-10-10 15:32:39 -07:00
MysterD
edc275b5e8 Enhancements to networked player infrastructure 2020-10-10 01:18:45 -07:00
MysterD
5282c461fa Fix typo, whoops. 2020-10-08 23:53:16 -07:00
MysterD
392471eb1f Bugfix for spiny override ownership 2020-10-08 23:40:01 -07:00
MysterD
2fb2fc81e1 Add THI to supported levels 2020-10-08 23:38:43 -07:00
MysterD
2adea6aad6 Synchronized Wiggler 2020-10-08 23:37:01 -07:00
MysterD
fadea702ff Synchronized THI top 2020-10-08 23:07:32 -07:00
MysterD
c958837333 Somewhat synchronized fire piranha plants 2020-10-08 23:05:06 -07:00
MysterD
55939e6eda Synchronized enemy lakitu and spiny 2020-10-08 22:14:17 -07:00
MysterD
3bb96fa609 Synchronized Bubba 2020-10-08 22:05:21 -07:00
MysterD
028990302d Prevent star dance spam 2020-10-08 21:31:53 -07:00
MysterD
8360df84fe Add chat message when a player dies 2020-10-08 21:19:16 -07:00
MysterD
ff1b19e2ee Prevent King Bobomb from grabbing while thrown 2020-10-08 21:13:56 -07:00
MysterD
e4c1640c56 Change disclaimer 2020-10-08 21:03:35 -07:00
MysterD
597cc14ccf Add TTM to supported levels 2020-10-08 20:57:56 -07:00
MysterD
5924ed9485 Disable force-synchronizing of TTM slide 2020-10-08 20:57:11 -07:00
MysterD
41295fb814 Synchronized Ukiki 2020-10-08 20:56:49 -07:00
MysterD
aa345ede4d Synchronize Fwoosh 2020-10-08 20:56:34 -07:00
MysterD
ea1553c18d Koopa shell can only be ridden by one person, and doesn't get accidentally removed 2020-10-06 23:38:56 -07:00
MysterD
d2e1b6e5a0 Possibly fixed rare invisible cannon bug 2020-10-06 21:03:08 -07:00
MysterD
93b2c4213d Added WDW to supported levels 2020-10-06 20:29:40 -07:00
MysterD
d13127117a Misc additional player checks 2020-10-06 20:29:23 -07:00
MysterD
349517e9fb Synchronized WDW water level changers 2020-10-06 20:28:44 -07:00
MysterD
b93e681377 Synchronized Skeeter 2020-10-06 20:28:28 -07:00
MysterD
6d5e1d498e Synchronized metal boxes 2020-10-06 20:28:17 -07:00
MysterD
8464d6c830 Synchronized Heave Ho 2020-10-06 20:28:06 -07:00
MysterD
2b75690a31 Synchronized WDW express elevator 2020-10-06 20:27:54 -07:00
MysterD
5ad1b60a9f Synchronized Chuckya 2020-10-06 20:27:24 -07:00
MysterD
938e0a817e Synchronized WDW arrow lift 2020-10-06 20:27:12 -07:00
MysterD
0b4ed5bf27 Added Snowman's Land to supported levels 2020-10-05 23:13:12 -07:00
MysterD
d56f46a79c Synchronized SL snow mounds 2020-10-05 23:08:36 -07:00
MysterD
347bd0ed63 Synchronized SL penguin 2020-10-05 23:08:24 -07:00
MysterD
94fe53f4bf Synchronized Snowman Wind 2020-10-05 23:08:12 -07:00
MysterD
d6a7af8f54 Synchronized Moneybag 2020-10-05 23:07:57 -07:00
MysterD
dd8de27014 Snap players on top of synchronized platforms 2020-10-05 22:05:05 -07:00
MysterD
b6d96adbf0 Prevented Yoshi softlock 2020-10-05 21:04:00 -07:00
MysterD
74852faeaf Stopped time and show cutscene for all for more stars 2020-10-05 20:36:44 -07:00
MysterD
b63a47f64a Fix strange behavior when being caught in a whirlpool while an instant warp occurs 2020-10-05 20:20:49 -07:00
MysterD
b831acd59c Rewrote how RNG is synchronized
The old implementation was hacky and often returned desynchronized
results. This implementation gives a seed to each sync object, and
synchronizes that seed. Also allows for a seed to be saved temporarily
based on position and recycled for multiple calls.
2020-10-05 19:15:13 -07:00
MysterD
87074ef098 Fix Bowser cutscene yet again... 2020-10-05 18:16:28 -07:00
MysterD
404d201955 Local unlocking door star spawns again 2020-10-04 23:27:02 -07:00
MysterD
53f7a36819 Prevent multiple star/key unlock animations on the same door 2020-10-04 23:23:17 -07:00
MysterD
e9761cd3e6 Prevent rare bug where a remote player will grab a non-grabbable object momentarily 2020-10-04 23:06:52 -07:00
MysterD
5eb5e678c5 Prevent OOB warp by teleporting one player to the other when OOB is detected 2020-10-04 22:38:54 -07:00
MysterD
104e824a13 Make sure 70 star door is always openable 2020-10-04 22:16:20 -07:00
MysterD
6f23b63e61 Prevent hang due to mirror mario nodes 2020-10-04 22:10:41 -07:00
MysterD
70fdad4e7c Stop time and show star cutscene for everyone
Fixes #72
2020-10-04 21:26:36 -07:00
MysterD
2c7b42b331 Adjusted how de-duplication of star spawns is done for red/hidden stars 2020-10-04 20:52:53 -07:00
MysterD
c98edbcb4b Add remote players to mirror 2020-10-04 20:18:09 -07:00
MysterD
bb30d28be9 Synchronize intro/bridge lakitu 2020-10-04 19:38:01 -07:00
MysterD
2f1e0473c2 Offset and separate player intro pipes 2020-10-04 19:16:35 -07:00
MysterD
d8bf1c8ef1 Re-enable intro 2020-10-04 19:16:16 -07:00
MysterD
03d40b4ba3 Synchronized Yoshi 2020-10-04 17:57:37 -07:00
MysterD
b89fccbf51 Prevented glitchy remote movement when moving through warp doors 2020-10-04 17:00:52 -07:00
MysterD
0f6fa70523 Gave all doors SyncIDs 2020-10-04 16:51:17 -07:00
MysterD
ed06b57649 Added mod registration system
Allows mods to register themselves so that mismatches don't occur. This
does not automagically detect when someone modified the game, so the
mods will have to insert a function like this into their patch:

static void __attribute__((constructor)) _register_this_mod() {
    network_register_mod("mod name here");
}
2020-10-04 16:41:55 -07:00
MysterD
259ddac5ba Fixed WF tower platform synchronization 2020-10-04 14:54:31 -07:00
MysterD
868d006681 Enabled/improved free movement for development purposes 2020-10-04 14:50:52 -07:00
MysterD
edd489eb49 Prevented WF's rotating platform from desyncing angle 2020-10-04 14:32:52 -07:00
MysterD
d7c43aeb95 Removed quit game options from course completion screen 2020-10-04 14:15:06 -07:00
MysterD
f3b6c60f1a Made piranha plant's hitbox consistent if event is missed 2020-10-04 13:59:14 -07:00
MysterD
d229a69b83 Made picking up / dropping objects immediately sync those objects 2020-10-04 13:54:12 -07:00
MysterD
c56114cfa2 Prevented Bowser from remaining invisible when held 2020-10-04 13:24:44 -07:00
MysterD
303d276274 Possibly fixed King Bobomb grabbing softlock 2020-10-04 13:15:08 -07:00
MysterD
307af17b6f Fix snowman's lost his head dialog 2020-10-04 12:54:21 -07:00
MysterD
b9813acbc5 Prevent dying/bubbling from replaying intro level cutscene 2020-10-03 10:15:21 -07:00
MysterD
9e2b28008b Add BITFS to supported levels 2020-10-03 00:21:47 -07:00
MysterD
57b092c26b Synchronized BITFS platforms 2020-10-03 00:18:18 -07:00
MysterD
c6da1a057a Added DDD to supported levels 2020-10-02 23:40:28 -07:00
MysterD
931ee9ca13 Prevented bubbled players from interacting with objects 2020-10-02 23:37:15 -07:00
MysterD
fb775165ce Fixed bug with whirlpools 2020-10-02 23:35:06 -07:00
MysterD
327c735dba Synchronized DDD's poles 2020-10-02 23:34:33 -07:00
MysterD
b6e5581111 Somewhat synchronized player's interact/used objects 2020-10-02 23:34:19 -07:00
MysterD
5729c3ffac Synchronized Water Rings 2020-10-02 23:33:21 -07:00
MysterD
8e572f9b9b Synchronized Sushi 2020-10-02 23:33:07 -07:00
MysterD
0b8aff4103 Synchronized Manta Rays 2020-10-02 23:32:58 -07:00
MysterD
f0eba71c77 Synchronized Bubs 2020-10-02 23:32:47 -07:00
MysterD
6dc5819583 Do a full reset of the camera again. More janky, but prevents camera softlock 2020-10-02 22:20:59 -07:00
MysterD
b673457a48 Synchronized mips/toad star spawning 2020-10-02 21:05:02 -07:00
MysterD
525ef6db17 Synchronized castle water drain pillars 2020-10-01 23:11:16 -07:00
MysterD
1bcaed297c Resynchronized HMC controllable platform 2020-10-01 22:41:27 -07:00
MysterD
e7ad181428 Applied platform displacement for entities that a player is standing on 2020-10-01 22:41:17 -07:00
MysterD
2c6ab5d4ab Change how we reset the camera when bubbled/on star collection 2020-10-01 22:00:46 -07:00
MysterD
0a68abc055 Added HMC and COTMC to the supported levels list 2020-10-01 21:35:19 -07:00
MysterD
e7ffd52d45 Made COTMC, TOTWC, VCUTM, WMOTR use the normal death barrier warp 2020-10-01 21:34:46 -07:00
MysterD
e63178ed34 Synchronized Dorrie 2020-10-01 21:27:19 -07:00
MysterD
f6bae3a619 Synchronized Monty Mole 2020-10-01 12:39:06 -07:00
djoslin0
66356133db
Merge pull request #71 from anzz1/patch-2
fix copying and erasing saves
2020-10-01 00:05:00 -07:00
MysterD
16a4662ece Synchronized swoop 2020-10-01 00:04:08 -07:00
MysterD
9cc77a5735 Synchronized snufit 2020-10-01 00:03:59 -07:00
MysterD
5cafdb0aa2 Synchronized HMC controllable platform 2020-10-01 00:03:46 -07:00
MysterD
1051a4adc5 Synchronized HMC boulders 2020-10-01 00:03:31 -07:00
MysterD
2f7d432143 Synchronized Eyerok, add SSL to supported levels
Eyerok was synchronized, but I'm still not super pleased with the
result. I had to sacrifice dialog to prevent weird states and he's
completely controlled by the server. His synchronization should be
revisited in the future.

SSL should be fully synchronized now.
2020-09-30 18:20:13 -07:00
MysterD
356029abf6 Forget all reliable packets on network shutdown
Prevents strange case where one instance of a game could connect to
itself.
2020-09-29 23:30:51 -07:00
MysterD
3a26c43d14 Prevent star count from flashing in levels 2020-09-29 23:25:28 -07:00
MysterD
76605397af Prevent vanilla camera from being in a bad state after collecting star 2020-09-29 23:18:17 -07:00
MysterD
5c6d45daa7 Allow warp to take place while paused.
Without this change, players would warp to a random node and duplicate
players.
2020-09-29 23:10:37 -07:00
MysterD
a2dc5d6624 Sanity check torsoPos to prevent phantom collisions 2020-09-29 18:05:37 -07:00
MysterD
4ade00ac78 Prevent bug where Luigi can't jump if Mario is holding something 2020-09-29 00:01:18 -07:00
MysterD
9401a79cdc Fix chat so remote is filled-in and local is non-filled-in star 2020-09-28 20:13:44 -07:00
MysterD
8c7f55a1fb Synchronize instant warps 2020-09-28 19:58:37 -07:00
MysterD
be6bff6e12 Reset transition timers when forced to warp (fixes screen flashing)
Fixes #50
2020-09-27 23:57:52 -07:00
anzz1
4ff85f8719
fix copying and erasing saves 2020-09-27 14:54:13 +03:00
MysterD
a4e3688812 Only override ownership for Bowser when tilting platform 2020-09-27 00:15:43 -07:00
MysterD
2a17d9e831 Make 60 fps behave better for infinite stairs 2020-09-26 22:00:34 -07:00
MysterD
08f72749c9 Fix Toad messages, and likely other things related to behParams 2020-09-26 19:30:22 -07:00
MysterD
b2bd29383b Continue NPC dialogs after they've started. 2020-09-26 19:08:52 -07:00
MysterD
168a41f0f6 Drop various types of packets if level/area doesn't match 2020-09-26 15:52:00 -07:00
MysterD
e0bdaa1229 Fade remote players into level/area, drop player packets when in different area 2020-09-26 15:13:46 -07:00
MysterD
f5df807a0c Additional synchronization fixes for end cutscene. 2020-09-26 12:07:43 -07:00
MysterD
389ea20180 Prevent remote camera from messing with local cutscene 2020-09-25 23:17:30 -07:00
MysterD
1e9f8ec5f4 Make bettercam/puppycam respect NO_CAM_COLLISION 2020-09-25 21:40:59 -07:00
MysterD
b594984e45 Prevent bettercam from glitching out when opening one side of a door 2020-09-25 01:03:16 -07:00
MysterD
4d938e635d Render both sides of open doors 2020-09-24 23:45:28 -07:00
MysterD
7869473e95 Make radius for collecting red coin packets smaller 2020-09-24 23:15:00 -07:00
MysterD
a75113c665 Removed huge/tiny mario and exit anywhere cheats 2020-09-24 23:10:51 -07:00
MysterD
8779460b87 Prevented level transition spam
Fixes #50
2020-09-24 22:34:55 -07:00
MysterD
1536ce87c8 Synchronized WDW initial water level 2020-09-24 22:18:04 -07:00
MysterD
333a77b647 Synchronized TTC speed setting 2020-09-24 21:59:03 -07:00
MysterD
8c1ec4beba Prevent bubbled players from 'dying' to quicksand again 2020-09-24 21:37:07 -07:00
MysterD
9c8a58fa5b Synchronize warp checkpoints
Prevents softlock when dying inside volcano in LLL and pyramid in SSL
2020-09-24 21:34:36 -07:00
MysterD
20631abc7f Make Bowser 2 less likely to fall through floor 2020-09-24 20:53:32 -07:00
MysterD
44c5b5b02b Ensure bowser key/star spawns, make bowser intro less glitchy 2020-09-24 20:28:59 -07:00
MysterD
149859e5ab Allow bubbled players to go through vanish cap walls 2020-09-24 18:54:30 -07:00
MysterD
4ab4a109da Prevented lava from taking extra lives from bubbled players 2020-09-24 18:32:18 -07:00
MysterD
61847a970d Enable bettercam/puppycam in Bowser levels 2020-09-24 18:24:58 -07:00
MysterD
39a30093d7 Synchronized pyramid walls 2020-09-24 00:06:14 -07:00
MysterD
262e65f288 Synchronized Spindels 2020-09-24 00:05:59 -07:00
MysterD
e6dd75a44c Synchronized horizontal Grindels 2020-09-24 00:05:48 -07:00
MysterD
9ef8cda5ee Synchronized SSL pyramid elevator 2020-09-24 00:05:32 -07:00
MysterD
95b9167287 Synchronized Klepto 2020-09-23 23:18:45 -07:00
MysterD
e1933e5f78 Improvements to Bowser 2 (still not fully supported) 2020-09-23 22:00:20 -07:00
MysterD
999ccccc77 Synchronize peak height to prevent random yelling of remote 2020-09-23 21:13:03 -07:00
MysterD
7d20c6f003 Fix camera stuck in cutscene after star collection 2020-09-23 20:54:59 -07:00
MysterD
20ab5ec9f6 When client selects to save, server will save 2020-09-23 20:44:44 -07:00
MysterD
7fbae9cc05 Made in-level save dialog only show up for the player that collected the star 2020-09-23 20:35:56 -07:00
MysterD
4217306a44 Ignore jump and double jump when looking at attacks 2020-09-23 20:15:29 -07:00
MysterD
e67665ca3f Made player-to-player attacks more consistent
The direction that someone is pushed is based purely on the direction
the attacker is facing.
2020-09-23 20:07:07 -07:00
MysterD
82484b5d08 Synchronized end cutscene, prevented crash 2020-09-23 19:48:24 -07:00
MysterD
29a53cd1c0 Prevent Bowser Bombs from blowing up other bombs in later stages 2020-09-23 18:03:16 -07:00
MysterD
08e8ecfc97 Synchronized fire spitters 2020-09-23 09:29:46 -07:00
MysterD
2b5c830cc4 Sanity check pokey body parts 2020-09-23 09:16:09 -07:00
MysterD
81f2102bb0 Synchronized pyramid top 2020-09-23 09:14:17 -07:00
djoslin0
8d5d79809b
Merge pull request #67 from anzz1/patch-1
Custom menu improvements
2020-09-23 00:14:05 -07:00
MysterD
5ee4a1ed0d Suppress incorrect player connected message 2020-09-23 00:13:34 -07:00
MysterD
c5dcd5de8f Synchronized Tweester 2020-09-22 23:52:57 -07:00
MysterD
794b9b2656 Synchronized Toxbox 2020-09-22 23:49:57 -07:00
MysterD
608670e0a9 Synchronized Pokey 2020-09-22 23:35:05 -07:00
MysterD
e0736ccc59 Synchronized FlyGuy 2020-09-22 22:31:24 -07:00
MysterD
94b7cf7df6 Increase bettercam's precision 2020-09-22 22:14:43 -07:00
MysterD
5c2673f5af Change main menu disclaimer 2020-09-22 22:09:05 -07:00
MysterD
e2376a8eaf Fixed synchronization of rolling log 2020-09-22 21:54:41 -07:00
MysterD
e1cc0aa065 Synchronized bouncing fireball spawners 2020-09-22 21:37:26 -07:00
MysterD
47f5e2315e Synchronized LLL puzzle 2020-09-22 18:25:17 -07:00
MysterD
c515ccd427 Added 'unsupported level' warning on HUD 2020-09-22 18:05:15 -07:00
anzz1
439b221867
Custom menu improvements
* Remove Discord references if DISCORD_SDK=0
* Disallow non-valid ports > 65535
* Only print last attempt's port in direct connection screen if it's non-default
2020-09-22 23:22:58 +03:00
MysterD
4acbbb4db7 Made Discord asserts more descriptive 2020-09-21 23:50:22 -07:00
MysterD
01faa86bf0 Fix deduplication check for spawning stars
Stay in level after star option revealed that the deduplication
checking I was doing previously is no longer a valid way to do it.
The old way would prevent a second star from spawning.
2020-09-21 19:11:27 -07:00
MysterD
d3d13c26f8 Prevent drowning alert from playing for remote players 2020-09-21 18:24:17 -07:00
MysterD
5f3895463f Prevent remote player damage from shaking local screen 2020-09-21 18:22:58 -07:00
MysterD
47122758d8 Prevent chain chomp from hurting people in cutscene 2020-09-21 18:18:19 -07:00
MysterD
378ab6edc1 Resynchronized piranha plants 2020-09-21 18:15:49 -07:00
MysterD
fef41ed741 Fixed copy/paste error 2020-09-21 00:35:04 -07:00
MysterD
fdee4eceea Synchronize various LLL platforms 2020-09-21 00:32:14 -07:00
MysterD
0052e97605 Synchronized Bullies 2020-09-20 23:30:49 -07:00
MysterD
2a5459b2dc Disable bettercam's fixed camera at the bridge 2020-09-20 17:58:20 -07:00
MysterD
54cd42608d Allow players to enter the 70 star door early 2020-09-20 17:54:25 -07:00
MysterD
c5888aff50 Synchronized mips 2020-09-20 17:28:24 -07:00
MysterD
bbe95efaa2 Hotfix for discord servers 2020-09-20 00:47:00 -07:00
MysterD
4b37648487 Improve bettercam's collision detection and avoidance
The precision of ray casting was too low previously, causing the
collision checks to skip right past a wall sometimes. There was also
nothing to prevent the camera from getting too close to a wall
horizontally or vertically.
2020-09-19 19:35:05 -07:00
MysterD
bbdc3180cd Made celebration star appear above correct player
Celebration sparkles appear around all players
2020-09-19 17:28:11 -07:00
MysterD
c013f9d16a Prevent Boos from being brought back from the dead through desync 2020-09-19 17:13:46 -07:00
MysterD
1467e021b3 Fix boo cage desync
The BBH cage could get in a weird state when it was synchronized. By
desynchronizing it, it will perform properly. Weird, I know.
2020-09-19 17:02:01 -07:00
MysterD
9f8fe804ca Prevent mother tuxie softlock
Fixes #6
2020-09-19 16:43:37 -07:00
MysterD
04738fedd9 Prevent new bug where stars just flood out lol 2020-09-19 16:35:32 -07:00
MysterD
7ff4eec4ee Prevented remote players from spawning tons of stars when unlocking door 2020-09-19 16:27:38 -07:00
MysterD
2c46eec6ba Prevented rare unlocking door crash 2020-09-19 16:19:47 -07:00
MysterD
fffad90028 Prevented more NPC dialog soft locks 2020-09-19 16:09:52 -07:00
MysterD
09a1390d8d Allow players to join while server is waiting in level transition 2020-09-19 15:07:27 -07:00
MysterD
74c44d3053 Allow other players to update entities grabbing you
In theory this should fix a rare King Bobomb softlock
2020-09-19 14:30:19 -07:00
MysterD
cc1e0e8407 Synchronized Boo's tangibility field
I believe this fixes #58
2020-09-19 10:38:58 -07:00
MysterD
285b1490f3 Fix bubbled vanilla-camera behavior
Fixes #66
2020-09-19 10:20:46 -07:00
MysterD
6122c4b313 Prevented star from spawning mid-level-change
Now CCM's slide star spawns correctly.
2020-09-19 10:03:36 -07:00
MysterD
5472f3d13a Add development flag for easier testing 2020-09-19 02:12:49 -07:00
MysterD
64732308f4 Prevent useless keep-alive packets 2020-09-19 01:56:45 -07:00
MysterD
c4b82e7082 Rewrote synchronization for treasure chests
Fixes #63
2020-09-19 01:40:42 -07:00
MysterD
cf23ed92a2 Prevented enemies/events from considering disconnected players 2020-09-19 01:05:19 -07:00
MysterD
79d30d3c1c Prevent exclamation box from opening multiple times
Fixes #57
2020-09-19 00:59:54 -07:00
MysterD
4a7b9736b4 Added compile-time flag to disable Discord SDK
In order to support ARM/Mac, discord must be disabled.
To disable compile with:
make DISCORD_SDK=0

Fixes #62
2020-09-19 00:53:56 -07:00
MysterD
a67a06c17c Unconnected players are now hidden/intangible 2020-09-18 23:16:07 -07:00
MysterD
f8bffd3b2a Added player connected/disconnected events
Changed synchronizing text to be more descriptive
Added 'player connected', 'player disconnected', 'network shutdown' chat messages
Prevented someone from joining through Discord while in another lobby
Added the distinction of sending a packet to all vs to a specific player
Enforced lobby size of 2, multiple joiners in a direct connection will be booted
Stored network destination for each player
Detected network drops
2020-09-18 23:06:26 -07:00
MysterD
6cf5e5da68 Add missing 'Chat' text 2020-09-16 01:01:29 -07:00
MysterD
3a37b79286 Renamed packet_save_file to packet_join 2020-09-15 23:07:00 -07:00
MysterD
2a10cca29a Refactored packet code out of network.c/h 2020-09-15 22:58:16 -07:00
MysterD
eaaab8850f Added exponential backoff to reliable packets 2020-09-15 22:45:17 -07:00
MysterD
275d6444b1 Added chat button bind, prevented chat from disabling other binds 2020-09-15 22:22:39 -07:00
MysterD
a0d5deceff Fix DirectX builds 2020-09-15 21:48:14 -07:00
MysterD
128b3f2b33 Prevented chat start event from disabling alt-enter fullscreen 2020-09-15 09:54:04 -07:00
MysterD
6d89ed5a9f Added warning when Discord isn't detected. Added missing sounds to buttons and events in menu 2020-09-15 09:47:26 -07:00
MysterD
7497e42364 Damn it, fixed Linux builds (this time for real?) 2020-09-14 23:34:19 -07:00
MysterD
a675f4efd5 Fixed Linux builds 2020-09-14 23:26:55 -07:00
MysterD
9a0c07e53c Added in-game chat
Fixes #35
2020-09-14 22:05:20 -07:00
MysterD
5abd0ca1ab Complete rewrite of custom main menu
The vanilla main menu is an awful pile of code that is extremely painful
to make additions to. So I've side-stepped the problem by writing an
entiely new menu system without all of vanilla's quirks. I've separated
the custom menu system from the menus I want to make, which allows for
easy additions and a clear separation of responsibilities.

Along with this rewrite comes a host menu, adding the missing
configuration options in-game.

Fixes #29
2020-09-13 23:57:14 -07:00
MysterD
3e1b193ea8 Add Discord Game SDK networking system
Allows players to host without forwarding their ports or using a program
like Hamachi.
2020-09-13 03:27:35 -07:00
MysterD
fc9d7022b5 Fix Linux build 2020-09-12 19:27:25 -07:00
MysterD
6c8050a564 Abstracted all socket code behind a NetworkSystem
In preparation for other forms of communication, I have abstracted all
of the socket code (which needs direct connections) behind a struct
whose calls can be swapped out for other systems if desired.
2020-09-12 17:56:42 -07:00
MysterD
388470d579 Fixed softlocks when one player runs out of lives, or death by lava
Also bubbles player when falling into quicksand

Fixes #36
2020-09-12 14:32:50 -07:00
MysterD
daa05d98a0 Hacky workaround for BBH camera bug
One specific door didn't reset the vanilla camera when rushing through
an open door.

Fixes #48
2020-09-11 23:48:27 -07:00
MysterD
c0a31ab06c Prevented bubbled players from triggering level warps
Fixes #41
2020-09-11 22:58:34 -07:00
MysterD
5abe3577ae Added Luigi's face in place of 'Mario Cam'
Fixes #42
2020-09-11 22:36:29 -07:00
MysterD
6d438ba760 Fix first-person camera lock bug
Getting kicked in vanilla-cam's first person messed up the camera, this
fixes it.
Fixes #55
2020-09-11 22:32:32 -07:00
MysterD
718974c111 Fix PSS's secret star collection
Fixes #56
2020-09-11 22:25:49 -07:00
MysterD
3070d2bfdb Prevent two players from holding the same object
Fixes #40
2020-09-11 22:14:42 -07:00
MysterD
284ab37406 Added debug level-warping for testing purposes 2020-09-11 20:10:29 -07:00
MysterD
c86c7f7280 Fix new level transition synchronization softlock 2020-09-11 18:30:34 -07:00
MysterD
a6b3ddcc69 Revert "Revert "More level transition synchronization rewrites""
This reverts commit 0667908b86.
2020-09-11 18:08:24 -07:00
MysterD
0667908b86 Revert "More level transition synchronization rewrites"
New synchronization caused a softlock on new-level-dialogs

This reverts commit 163527401e.
2020-09-11 18:02:21 -07:00
MysterD
04c21d91bc Added version checking to clients 2020-09-11 16:19:38 -07:00
MysterD
163527401e More level transition synchronization rewrites
I believe this fixes #51
2020-09-11 15:32:30 -07:00
MysterD
791423ff98 Properly offset player spawns 2020-09-10 22:18:10 -07:00
MysterD
cb6836f818 Fixed infinite hold by King Bobomb softlock
fixes #38
2020-09-10 21:55:03 -07:00
MysterD
71589938df Fix King Bobomb dialog softlock
Fixes #45
2020-09-10 21:26:17 -07:00
MysterD
9cf3932435 Fix coffin crushing softlock
Fixes #47
2020-09-10 20:26:02 -07:00
MysterD
114665f6bb Keep player control of camera for chain-chomp cutscene
Fixes #54
2020-09-10 20:02:16 -07:00
MysterD
3e5b08b487 Fixed small crimes against C 2020-09-10 09:43:32 -07:00
MysterD
1e6c734ced Completely rewrote level transition synchronization code
Should be snappier and less prone to crashes. I tested as many scenarios
as I could think of and it has been rock solid. But time will tell.

Also created a new debug log system, just so I could understand what the
hell was going on with this code.
2020-09-10 00:17:30 -07:00
MysterD
e48a9c25ab Added 'no lives remaining' text 2020-09-08 18:21:09 -07:00
MysterD
42777fbe8f Changed text on level select screen 2020-09-08 17:33:03 -07:00
MysterD
cf732c7beb Eject a player if more than one is in the cannon
Two players in the same cannon was causing softlocks and general
insanity. Now this should be fixed. Also prevented players from being
able to push or attack a player inside of a cannon.
2020-09-08 16:12:11 -07:00
MysterD
58a3156180 Lowered cannon sensitivity 2020-09-08 15:13:49 -07:00
MysterD
ef6ec31075 Prevent ground pound from attacking until they're moving downward 2020-09-08 15:01:31 -07:00
MysterD
a2fe4f80a7 Lower knockback for anything stronger than a kick 2020-09-08 14:57:50 -07:00
MysterD
26726121a5 Players sliding in the same direction will no longer attack each other
We check to see what the difference in velocities is, if it's small then
no attack is made. Otherwise, only the player going faster will attack.
2020-09-08 14:43:07 -07:00
MysterD
d1873328a4 Prevent underwater bubble-popping from teleporting the player to the top 2020-09-08 14:03:12 -07:00
MysterD
1e46ed136a Prevent extra death for bubbled player on area change 2020-09-08 13:53:46 -07:00
MysterD
a7434c9513 Completely disable text saves until they're synchronized 2020-09-08 13:34:35 -07:00
MysterD
a4288fe150 Allow exiting from course at any time 2020-09-08 09:52:48 -07:00
MysterD
c12380aff4 Make inside-and-outside painting transition quicker over network 2020-09-08 09:50:34 -07:00
MysterD
29cb0935fb Fixed glitchy animations on remote when in dialog 2020-09-08 09:33:55 -07:00
MysterD
cc550e1de5 Unagi: prevent sending a pointer, hopefully doesn't cause desync 2020-09-08 09:16:44 -07:00
MysterD
b9924253bb Racing Penguin: remove airborn check, fix end of race desync 2020-09-08 09:15:43 -07:00
MysterD
a804981b2a Fix koopa the quick sound spam and cheat detection 2020-09-08 09:06:25 -07:00
MysterD
ef95d6820b Synchronized star entity interaction
Fixed error in packet_collect_star which would prevent the star from
disappearing when it should on remote.
2020-09-08 09:01:35 -07:00
MysterD
3b946eb5e1 Added stay-in-level-after-star server-side setting.
Configurable in the server's config file under:
coop_stay_in_level_after_star

Defaults to off

Based on GateGuy's patch
2020-09-08 00:04:06 -07:00
MysterD
2f8d119301 Prevent exclamation box from spawning the wrong star on remote 2020-09-07 23:56:29 -07:00
MysterD
2d0871e061 Prevent exclamation box from double spawning stars 2020-09-07 23:10:28 -07:00
MysterD
f8044a5639 Make send_spawn_objects more reliable
As noticed by anuserlol, stars would sometimes not spawn from breakable
boxes on the remote. This was due to the box being destroyed before the
star spawned, when the star tried to spawn it couldn't find the parent
and gave up. Now if no parent is found the spawned object will be its
own parent. This should make all spawned objects more reliable, but may
cause weirdness somewhere.

Fixes #34
2020-09-07 20:54:15 -07:00
MysterD
88b935e9dd Force marioObj player indices to be well behaved
Fixes a crash when spawning the secret star in The Princess's Secret
Slide.

Fixes #32
2020-09-07 20:30:20 -07:00
MysterD
95e9c1dc4c Synchronized room checking better + fixed bookswitches
Determining if the player is in the room was bugged, and bookswitches
caused Luigi to crash. Now things should be a bit more stable in BBH.
Fixes #30
2020-09-07 19:51:39 -07:00
MysterD
ef48ec249a Allow other player to pass through door when it's being opened
Also disable the 'walking through door' cutscene when newcam is on
2020-09-07 16:35:42 -07:00
MysterD
214697fc8e Fixed infinite loop with King Bobomb 2020-09-07 10:50:32 -07:00
MysterD
3145dfabdc Misc camera fixes
Made analog camera stop rotating or triggering TOTWC when paused
Fix broken vanilla camera on TOWTC w/BETTERCAMERA enabled
Fixes #15
2020-09-07 10:48:54 -07:00
MysterD
bc2480da87 Added aggressive null checking to various types of objects 2020-09-07 00:29:18 -07:00
MysterD
36e035984f Pausing the game no longer pauses, just brings up the menu
Fixes #19
2020-09-06 22:27:09 -07:00
MysterD
e0903003f4 Rewrote how players are initialized, stored, and displayed
Since the second-player code was the first code I wrote, it was implemented
poorly. At that point, I didn't know the code base at all and the way it was
written would prevent anyone from ever adding to those parts.

The rewrite allows me to use the default geo.inc.c file for Mario, and removes
all of the geo2.inc.c files. I no longer do a bunch of bit shifting to figure
out which player is being drawn in the rendering code.

I'm also now able to remove tons of duplicate code that exists just for the
remote player. The main player code is generic enough to support both indices.
A side-effect of the rewrite is I was able to remove many assumptions in the
code where two-players is assumed, but many other parts of the code still
assume two players.

This is a fairly major change that, if all goes well, will be completely
unnoticed by the player. However, I do expect new bugs to pop up in strange
places. Time will tell.
2020-09-06 18:52:52 -07:00
MysterD
df7904e288 Geo2 removal wip 2020-09-06 13:54:01 -07:00
MysterD
975c68ae1e Fix join issue when compiling without DEBUG 2020-09-06 12:46:02 -07:00
MysterD
7dafd081e1 Made player attack knockback configurable 2020-09-06 12:18:33 -07:00
MysterD
b9750057d5 General network code clean up
Marked globals, rearranged functions, added comments
2020-09-06 11:02:41 -07:00
MysterD
bed036bcfb Added coop settings to saved config file
Saves and loads last join IP/port attempt
Made host's port configurable in config file
Made host's save slot configurable in config file
Made host's player interaction setting configurable in config file

Indicated when the client was trying to connect on the join menu.
Fixed join menu display error where the port would disappear
2020-09-06 03:32:34 -07:00
MysterD
51940d6a82 Player interaction enhancements
Made water punch do an attack
Increased knockback significantly
Different types of attacks will have different knockback severity and damage (Stomp > kick > the rest)
Fixed rapid attack spam
Adjust radius for bouncing on players and popping bubbles

Made player interactions a synchronized server flag:
  None - Players are not solid
  Solid (Default) - Player can run into each other and stun each other
  PVP - Same as solid except friendly fire is on
Note: Not currently configurable due to a lack of a UI.
2020-09-06 10:05:58 -07:00
MysterD
91981d679d Hide life counter when lives is -1 2020-09-05 21:17:33 -07:00
MysterD
7f1a5573aa Add disclaimers to main menu 2020-09-05 21:12:49 -07:00
MysterD
13d9ae0313 Synchronized 1-up collection
Collecting a 1-up gives a life to both. This can bring back a bubbled
player who had no lives remaining.
2020-09-05 19:55:38 -07:00
MysterD
8c3014b120 Created Luigi's life icon 2020-09-05 19:44:58 -07:00
MysterD
906ea3345e Players turn into bubbles when they die
Player life counters are separate.
When one player dies they lose a life and are turned into a bubble.
If the other player pops it, they are alive again.
If all players are bubbled, they get kicked out of the level.
If the bubbled player ran out of lives, they can not come back to life
until the level is over.
Whenever a level change happens, everyone's life count is set to a
minimum of two.
No game overs.

Took heavy inspiration from Kaze Emanuar
2020-09-05 18:10:55 -07:00
MysterD
9427afb14b Allow vanish cap to pass through walls
fixes #16
2020-09-05 13:31:36 -07:00
MysterD
478f77e6bf Fix EXTERNAL_DATA for Luigi
Fixes #25
2020-09-05 00:11:15 -07:00
MysterD
2174ef0478 Change default save directory to sm64ex-coop 2020-09-04 22:17:15 -07:00
MysterD
670a554b37 Remove any lingering dialog boxes on level transition
Fixes #22
2020-09-04 21:27:06 -07:00
MysterD
00b0b7cd8f Remote reading sign no longer causes sound spam
fixes #20
2020-09-04 21:14:14 -07:00
MysterD
4cb13edf84 Fix animation desync when pressing Z+B
Fixes #18
Found by el pinguino max
2020-09-04 21:08:04 -07:00
MysterD
1bb0c90741 Add docker-build workarounds and container script 2020-09-04 17:03:35 -07:00
MysterD
4a2c218f11 Synchronized save files
Now when a client joins, it will request the entire 512 byte EEPROM from
the server and refuse to continue until the server replies with the
contents. Then the client will override all reads and writes to the
EEPROM/save file. Thus, a client will never overwrite their local save.

Fixes #21
2020-09-04 15:07:32 -07:00
MysterD
1289f863ca Removed 'int' from most of networking code
moved -Werror over to 'STRICT'
2020-09-04 11:43:12 -07:00
MysterD
9512fde4a5 Added custom packets for mods-of-this-mod
Now a patch can choose to register callbacks for sending and receiving
packets. It's a bit tricky to use but at least it won't collide with
normal packets or other mod packets.
2020-09-04 02:04:37 -07:00
MysterD
d5005c9f37 Served time for crimes against C
Due to my compile & launch scripts, I was silently ignoring warnings
this whole time. I've fixed my process, and gone back to fixed all of
the warnings I could (even outside of my code).
2020-09-04 01:58:54 -07:00
MysterD
3c48e1df1a Prevent infinite loop for remote sliding players 2020-09-03 18:32:07 -07:00
MysterD
68ad6bc15c Added host/join in-game GUI
Now people aren't forced to launch with command-line parameters,
instead they can host or join a server by selecting buttons in
the main menu.
2020-09-03 18:30:15 -07:00
MysterD
f367ed2167 Prevented softlock and entity duplication when both grab at the same time
As reported by somario360:
After grabbing the small box at the same time, one of two results can happen.
There will be a fake cloned box that will only be visually in the other
player's hands, or one player will be stuck in the punching animation until
the other player lets go of the box, in which the box goes into the stuck
player's hands.

Now escapes from action if the grab fails, preventing a softlock.
And now if both players report having the same object, the client
will drop their copy.

Fixes #14
2020-09-03 18:11:42 -07:00
MysterD
920c0674d9 More tuxie fixes
Tuxie will regain its hitbox if dropped through crouching or any other means
Fixed detection of if any mario is far away
Immediately sends an object packet whenever any object is dropped or thrown

Fixes #9
2020-09-03 08:58:21 -07:00
MysterD
ab9e7c7bca Added player-to-player interactions
Players are now solid to each other and can push each other
Players can now attack each other (but they do not deal damage)
Players can bounce on top of each other, and they get squished
temporarily
Players are given slightly offset positions when they transition between
areas and levels, so they're no longer on top of one another.
2020-09-02 23:50:27 -07:00
MysterD
b9e84ad3b9 Shell music only starts and stops for local player 2020-09-01 23:41:56 -07:00
MysterD
933ee68477 Null checked heldObj in all mario actions
Bobomb clip no longer segfaults the game
2020-09-01 23:40:53 -07:00
MysterD
72c4379d8a Fix first sound and size of first punch
The code was skipping playing the sound of the first punch, and changing
the size of the first for the first punch. Added hacky stuff to the
player packet code to ensure those events are hit.

Fixes #10 reported by somario360
2020-09-01 23:35:57 -07:00
MysterD
f62f80a228 Synchronize sleeping animations
Sleeping animations were desynchronized previously. Now remote goes to
sitting, and to laying down, at the right times. A snoring remote player
will no longer lower your music, and will no longer get stuck snoring
when they wake up.

Fixes #11 reported by somario360
2020-09-01 23:00:12 -07:00
MysterD
c88ff19190 Prevent infinite looping of Mario action transitions
There have been several times where the unpredictable behavior of
a remote player where execute_mario_action() would get caught in
an infinite loop. Now we attempt to detect an infinite hang and
escape from it. The sequence of actions will be recorded into an
errorlog.txt file. In debug mode this infinite hang will cause an
assertion to fail, crashing the game. In normal mode the game will
break out of it and hopefully carry on normally after new packets
come in.

I believe this addresses github issue #12 but I can't be sure.
2020-09-01 22:06:36 -07:00
MysterD
af117f4647 Various tuxie synchronization fixes 2020-09-01 20:13:46 -07:00
MysterD
c54063fadd Fixed messed up animation when remote is talking to an NPC
fixes #8 found by somario360
2020-09-01 18:10:00 -07:00
MysterD
8711829664 Merge branch 'nightly' into coop 2020-09-01 18:08:46 -07:00
MysterD
443fc1a73f Synchronize cannons as soon as they are unlocked 2020-08-31 23:49:51 -07:00
MysterD
3950dda92f Force players who are held by an entity to own that entity 2020-08-31 22:36:07 -07:00
MysterD
e705353e00 Synchronized squished values 2020-08-31 22:22:33 -07:00
MysterD
3495a9e4a4 Re-added King Bobomb dialog 2020-08-31 21:38:08 -07:00
MysterD
efa1600ad0 Truly deal with the NPC dialog softlock problem
Reported by somario360:
After I (Luigi) gave the baby penguin to the mother, the start spawned,
but I was stuck in the looking up animation.
My friend (Mario) talked to Bowser after defeating him, Bowser turned into
a key, but he was stuck in the looking up animation after (I was able to
grab the key though, but Bowser was slightly visible) (Also don't mind 0
stars, he loves doing the lobby BLJ)

The issue is the state machine moved on without removing the reading
dialog action. There was no straight forward way to deal with this.
Custom functions were written for each call to dialog to ensure that we
should stay reading the dialog.
2020-08-31 21:10:34 -07:00
MysterD
5d7499bd2a Fixed crash when changing areas within a level
Bug reported by somario360:
After I (Luigi) exited the slide in CCM, an error message appeared and ignoring would make it pop up again.

This was due to the sync ID reservation system not being flushed and
reset on area change.
2020-08-30 23:13:05 -07:00
MysterD
7b073aedb8 Fix NPC softlock (cannon and hoot)
Bug reported by somario360:
When trying to open the cannon in a level (so far tested in BOB & WF) the cannon dialogue will repeat infinitely. Sometimes the cannon will open, but the game will crash after.

The code I had written previously to prevent softlocks ended up causing
them due to a incorrect check of activeFlags.
2020-08-30 23:12:28 -07:00
MysterD
96a2cacf2d Added text-input system for typing in-game 2020-08-30 23:25:32 -07:00
fgsfds
8a23a8a5c5 add rudimentary SDL1 controller backend
it's more to deal with the mouse not working I suppose
2020-08-30 16:06:22 +03:00
fgsfds
8419991c02 Merge remote-tracking branch 'origin/master' into nightly 2020-08-30 15:41:45 +03:00
fgsfds
cc26cc9bf9 fix spaces 2020-08-30 15:39:41 +03:00
fgsfds
6d1f2afd8b Merge pull request #350 from pouar/fix-snufit
Bugfix for NODRAWDISTANCE
2020-08-30 15:34:24 +03:00
fgsfds
46c57457b1 GL_LEGACY: this should've been GL_REPLACE all along 2020-08-30 01:29:26 +03:00
Garrett
468887a6f9 Check for zero rumble setting before allowing rumble
Fixes controllers which don't check for rumble_strength and have constant rumble from rumbling even when set to 0 in the config.
2020-08-29 17:08:17 -04:00
MysterD
483694d6b3 Synchronized Bowser 1 2020-08-29 12:59:07 -07:00
MysterD
10bdd1e1fe Synchronized bowser bombs 2020-08-29 12:58:54 -07:00
MysterD
81d23b3cc9 Made castle floor trap multiple-player-aware 2020-08-29 12:58:04 -07:00
MysterD
13d4a0bfe8 Fixed stomache slide hang, made grabs only happen on local 2020-08-29 12:57:20 -07:00
MysterD
cb5dcaa4f4 Synchronized sliding platform 2 2020-08-28 20:26:17 -07:00
MysterD
398f5e8345 Synchronized ferris wheel 2020-08-28 20:26:04 -07:00
MysterD
ec89f3fccc Synchronized amps 2020-08-28 20:25:46 -07:00
MysterD
ab9d7db29f Synchronized square platforms as groups of two 2020-08-28 20:25:34 -07:00
fgsfds
73c6c9105f change GL_LEGACY to only use GL1.1 (1.2?) features 2020-08-29 02:13:30 +03:00
fgsfds
655427f10f add --poolsize arg for modifying main pool size 2020-08-29 02:13:30 +03:00
MysterD
a778bf497d Resynchronized checkerboard platforms 2020-08-27 21:39:13 -07:00
MysterD
d2a2a80d56 Synchronized Big Boo's Haunt + major changes
Synchronized currentRoom per-player
Synchronized haunted bookshelf, and the bookshelf manager
Synchronized haunted chairs
Synchronized mad piano
Synchronized BBH's tilting trap, and made the physics multiple-player-aware
Synchronized scuttlebugs
Synchronized every variety of Boo
Synchronized elevators
Synchronized flamethrowers
Synchronized the various types of enemy books
Synchronized the book switches
Synchronized jumping box
Made coffins multiple-player-aware

Fixed everything that used gMarioState as an array instead of gMarioStates
Prevented some NPC-dialog softlocks
Prevented the remote player from messing up the local's camera settings
Possibly fixed the relatively rare chain chomp softlock
Possibly fixed the relatively rare chain hoot softlock
Fixed the first-person-camera softlock
Forced camera code to use the correct mario struct
2020-08-26 23:29:40 -07:00
MysterD
13b216ea5d Synchronized Boo 2020-08-24 21:38:49 -07:00
MysterD
8c650a5b7d Created system to reserve sections of SyncIDs per client
This allows clients to spawn a new sync object after the level loads and synchronize it.
Changed how un-initialized sync objects are detected
Koopa shells are the first thing to use this new system

Removed network_object_settings() command, instead explicitly setting the sync object parameters
2020-08-24 18:33:53 -07:00
MysterD
4b12d0e513 Fixed exclamation box synchronization bug 2020-08-18 18:47:21 -07:00
MysterD
53576aa51e Synchronized unagi 2020-08-18 18:47:06 -07:00
MysterD
57a4e746cf Synchronized underwater koopa shell 2020-08-18 18:46:54 -07:00
MysterD
f08e6f0806 Made floating platform multiple-player aware 2020-08-18 18:46:13 -07:00
MysterD
b8bdac2666 Made falling pillar multiple-player aware 2020-08-18 18:45:50 -07:00
MysterD
5b7e1c28d8 Synchronized clam 2020-08-18 18:45:34 -07:00
MysterD
79a2d95f00 Synchronized jrb ship and box 2020-08-18 18:45:19 -07:00
MysterD
c589f2a620 Synchronized treasure chests 2020-08-18 18:43:42 -07:00
fgsfds
e18b3c5b97 fix controller_sdl2 2020-08-15 16:04:55 +03:00
fgsfds
8b23c544d1 Merge pull request #399 from ineedhelpbad/nightly
BUGFIX: Camera bugs when using flying cap with BETTERCAMERA=1 #370
2020-08-15 15:59:59 +03:00
fgsfds
083a9be2a5 Merge pull request #400 from ineedhelpbad/patch-1
BUGFIX: Camera invert #373
2020-08-15 07:17:02 +03:00
fgsfds
3e9e2595aa add barebones SDL1.2 backends
for that sweet Win9x support
2020-08-15 07:15:28 +03:00
MysterD
6c617ef22a Changed default config values 2020-08-13 22:59:46 -07:00
MysterD
7cd5dbb1a4 Added CLI options to specify ip/port 2020-08-13 19:38:15 -07:00
MysterD
88bcd2a143 Sound fixes for remote player 2020-08-13 18:53:01 -07:00
MysterD
92398f3ca1 Made rumble only happen for local events 2020-08-13 18:49:24 -07:00
MysterD
90d9e255e4 Fixed exclamation box double item spawning when traffic is bad 2020-08-13 18:34:27 -07:00
ineedhelpbad
38b3ead13e BUGFIX: Camera invert #373
Fix: Free Camera is forever inverted on the Y-Axis, changing the setting does nothing. #373
2020-08-13 13:49:02 -05:00
ineedhelpbad
9ed98273d7 Update mario_actions_airborne.c 2020-08-13 00:26:23 -05:00
MysterD
31904c36bf Removed vestigial painting warp code, made painting selection instant 2020-08-12 22:17:12 -07:00
MysterD
6629b5493d Freeze mario in place when star spawning or dialog box pops up 2020-08-12 21:47:07 -07:00
MysterD
6e4c39eabe Kept more randomness, fixing tree leaves, fix pole segfault 2020-08-12 19:39:31 -07:00
MysterD
48f42d1873 Fixed visual bug when both players are sliding 2020-08-12 19:14:35 -07:00
MysterD
bdf269c262 Fixed tower platform spawning bug 2020-08-11 23:27:37 -07:00
MysterD
55df4e6bd7 Synchronized whomp 2020-08-11 23:03:40 -07:00