Commit graph

702 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
275d6444b1 Added chat button bind, prevented chat from disabling other binds 2020-09-15 22:22:39 -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
9a0c07e53c Added in-game chat
Fixes #35
2020-09-14 22:05:20 -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
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
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
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
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
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
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
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
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
478f77e6bf Fix EXTERNAL_DATA for Luigi
Fixes #25
2020-09-05 00:11: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
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
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
fgsfds
6d1f2afd8b Merge pull request #350 from pouar/fix-snufit
Bugfix for NODRAWDISTANCE
2020-08-30 15:34:24 +03: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
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
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
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
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
MysterD
4cc3d08769 Synchronized thwomp 2020-08-11 23:03:30 -07:00
MysterD
7165d5ca64 Synchronized all of the various platforms in WF 2020-08-11 23:03:13 -07:00
MysterD
84ef9e97c1 Synchronized piranha plant 2020-08-11 23:02:16 -07:00
MysterD
aec993b5b6 Synchronized kickable board 2020-08-11 23:02:03 -07:00
MysterD
0e72fc2b1f Synchronized bullet bill 2020-08-11 23:01:51 -07:00
MysterD
47948b2a4e Synchronized bomp 2020-08-11 23:01:36 -07:00
MysterD
d5b087acd8 Synchronized hoot 2020-08-11 23:01:13 -07:00
MysterD
697670b519 Synchronized breakable wall 2020-08-11 23:00:55 -07:00
MysterD
3b00aa9e42 Various synchronization enhancements 2020-08-11 23:00:13 -07:00
MysterD
2177094730 Synchronized wing cap and hidden trigger pickups 2020-08-10 23:38:58 -07:00
MysterD
f1789d4e78 Synchronized cap switch, and exclamation box contents 2020-08-10 22:59:11 -07:00
MysterD
5ca3f2ebd7 Synchronized platform-on-tracks 2020-08-10 19:08:47 -07:00
MysterD
0ceba4b372 Synchronized blue coin switch 2020-08-10 18:19:27 -07:00
MysterD
aaf521659e Disabled many timestops 2020-08-10 18:10:04 -07:00
MysterD
8fcf1728bd Synchronized snowman 2020-08-10 18:09:31 -07:00
MysterD
40a3d55f9a Synchronized racing penguin 2020-08-10 15:09:09 -07:00
MysterD
8c7348f10d Synchronized baby and mother Tuxie
Added missing star parameter
2020-08-10 14:27:56 -07:00
MysterD
c26bf586e1 Synchronized Mr Blizzard 2020-08-10 13:29:07 -07:00
MysterD
b2b7c6b9ba Synchronized spindrift 2020-08-10 12:08:53 -07:00
MysterD
1bef126df8 Synchronize area changes 2020-08-10 12:08:40 -07:00
MysterD
6701b6096d Rewrote level synchronization
Synchronized exit course from pause menu
2020-08-10 09:33:40 -07:00
MysterD
2e768869e3 Misc fixing to entering paintings 2020-08-09 18:58:58 -07:00
MysterD
a896713510 Made sockets platform-independent, supporting Linux 2020-08-09 13:23:27 -07:00
MysterD
66c1c4f206 Synchronized 1up spawning 2020-08-09 09:04:30 -07:00
MysterD
6c189cebe7 Synchronize course complete screen 2020-08-09 08:23:53 -07:00
MysterD
05ba304050 Synchronized exclamation boxes 2020-08-09 08:07:32 -07:00
MysterD
41647d95c4 Synchronize Bobomb buddies and cannons 2020-08-09 07:42:44 -07:00
MysterD
a49b8f3b1e Synchronized Koopa The Quick 2020-08-09 00:37:36 -07:00
MysterD
eeec6aae49 L is real 2020
Added Luigi model.
Renamed all previous references to 'Luigi' to 'Mario2' since player 1
isn't always mario, and player 2 isn't always luigi.
Now server is always mario and client is always Luigi.

Luigi model credits:
Original model by Cjes, converted by AloXado320, textures added/fixed by
SunlitSpace542.
2020-08-08 21:36:49 -07:00
MysterD
b07aa565d4 Synchronized 3 types of star spawning, adjusted star interactions 2020-08-08 18:57:04 -07:00
MysterD
7f5dec337e Synchronized King Bobomb
Tried to synchronize dialog stuff, it's way too much of a mess to do
2020-08-08 17:13:11 -07:00
MysterD
4b61f7212b Fixed receiving of health, made recovery heart 2-player aware 2020-08-07 22:27:15 -07:00
MysterD
2a0a3df34f Synchronized bowling balls
Added flag to keep randomization for sync objects
2020-08-07 21:13:07 -07:00
MysterD
199bd07bb3 Synchronized water bombs
Added packet system to spawn objects on remote
2020-08-07 20:34:12 -07:00
MysterD
8b24d364bb Synchronized purple switch
Started working toward synchronizing star spawning, not quite there yet
2020-08-07 19:37:19 -07:00
MysterD
444c1fdd3b Synchronized coin collection
Reimplemented how randomness is synchronized
2020-08-07 18:01:58 -07:00
MysterD
5ec9ab9ec0 Synchronized seesaw, started moving toward a MAX_PLAYERS define 2020-08-06 22:52:32 -07:00
MysterD
e86efb9e85 Synchronized checkerboard platforms
Created a max update rate
Created 'full object syncing'
Switched to using clock() instead of ticks for packet_object
2020-08-06 21:47:03 -07:00
MysterD
e0b86b7d59 Synchronized teleports (e.g. flowerbed) and star collection
Fixed infinite packet_level_warp sending
2020-08-06 20:28:21 -07:00
MysterD
6bc4bfea62 Improve chain chomp syncing 2020-08-06 19:04:59 -07:00
MysterD
fac4c20a36 Synchronized player health/death
Now we will never kill remote players locally, they will have to let us
know that they died.
Synchronized more of the small breakable box
Fixed desync where an object wouldn't be dropped sometimes
Fixed infinite loop when remote player was squished
2020-08-06 18:45:39 -07:00
MysterD
0a3b0623a5 Synchronized chain chomp, adjustments to Koopa
Added entity event syncing system. Made sure old events don't override
new events.
2020-08-05 23:44:43 -07:00
MysterD
0a2c76c76e Fixed max sync distance issue, synced Koopas 2020-08-05 20:25:52 -07:00
MysterD
e61b137160 Refactored entity death sync + reliable packets
Embedded an immediate packet send whenever a synced entity is unloaded
from the game.

Added reliable packet sending.
2020-08-05 01:01:50 -07:00
MysterD
6d3a90031c Synchronized breakable boxes
Added maximum sync distance, special cases for infinite distance and
only synchronizing entity deaths.

Started mocking out reliable packets for entity deaths.
2020-08-04 22:42:28 -07:00
MysterD
4452b38848 Synchronized inside-painting state 2020-08-04 20:49:53 -07:00
MysterD
f32d3a2ba7 Added Luigi to courtyard and BoB, fixed some crashing issues 2020-08-03 17:59:44 -07:00
MysterD
6d0d7ffbaa Dialog to toad/signs/doors no longer soft-locks or stops time 2020-08-03 23:23:09 -07:00
MysterD
ec2199892f Force synchronizing of level changes 2020-08-02 23:02:29 -07:00
MysterD
9b5b5acf19 Synchronized goombas, synced randomness, added extra fields to object packets 2020-08-02 18:29:46 -07:00
MysterD
716a924803 Synchronized held objects, made respawners keep their sync ID 2020-08-02 14:18:34 -07:00
MysterD
579415dca9 Started synchronizing objects, refactored networking 2020-08-02 01:43:12 -07:00
MysterD
42a52ad936 Fixed synced crawling/climbing animation speed 2020-08-01 21:35:38 -07:00
MysterD
34b1ec76f6 Started adding networking 2020-08-01 20:22:24 -07:00
MysterD
0ad65c87da Made collision particles Luigi-aware 2020-08-01 20:21:44 -07:00
MysterD
b525b9d43a Made one-ups Luigi-aware 2020-08-01 19:08:08 -07:00
MysterD
01e02affad Saved player index in held objects 2020-08-01 19:03:26 -07:00
MysterD
fa2470327f Prevent situation where both players hold same object 2020-08-01 18:56:42 -07:00
MysterD
7accb94398 Made fish Luigi-aware 2020-07-31 22:35:14 -07:00
MysterD
4351a6345a Made Goomba Luigi-aware, fixed Mario's hurtboxes 2020-07-31 22:13:05 -07:00
MysterD
c437e075ff Separated held objects, made Bobombs Luigi-aware 2020-07-31 18:03:57 -07:00
MysterD
e99ca8cfce Made bird Luigi-aware 2020-07-30 23:17:18 -07:00
MysterD
6597d30095 Butterflies are now Luigi-aware 2020-07-30 21:58:33 -07:00
MysterD
79fdb73e63 Fixed Mario going invisible when both are sliding 2020-07-30 21:43:50 -07:00
MysterD
4486e8000c Began fixing up Luigi collisions 2020-07-30 18:44:09 -07:00
MysterD
0737d2e03f Separated animations between players 2020-07-30 18:09:47 -07:00
MysterD
6b3ab5f115 Started adding player 2 / Luigi 2020-07-29 21:08:38 -07:00
MysterD
131fc7ea11 60 fps patch 2020-07-28 18:28:12 -07:00
fgsfds
572a4b698b do vsync exactly like sm64-port does it
maybe this will finally work better
2020-07-09 17:02:43 +03:00
fgsfds
a4b4d6d5e5 do vsync exactly like sm64-port does it
maybe this will finally work better
2020-07-09 17:02:43 +03:00
fgsfds
fde15809b7 add sanity checks in save_file.c
though it would be a better idea to solve the problem that leads to -1 being passed to these instead
2020-07-07 20:57:18 +03:00
fgsfds
7b8a7e4047 add sanity checks in save_file.c
though it would be a better idea to solve the problem that leads to -1 being passed to these instead
2020-07-07 20:57:18 +03:00
fgsfds
b3ddd3a9fc remove garbage from game_loop_one_iteration 2020-07-07 20:43:46 +03:00
fgsfds
442ef7665f remove garbage from game_loop_one_iteration 2020-07-07 20:43:46 +03:00
fgsfds
bc3e94b11e bump gfx pool size 2020-07-07 15:21:14 +03:00
fgsfds
b1d7124110 bump gfx pool size 2020-07-07 15:21:14 +03:00
fgsfds
1486bee60a replace 'double' vsync option with 'auto' from sm64-port 2020-07-07 15:21:14 +03:00
fgsfds
2993a7bed6 replace 'double' vsync option with 'auto' from sm64-port 2020-07-07 15:21:14 +03:00
fgsfds
bf174e36a6 nuke TARGET_N64 remnants 2020-07-05 14:42:26 +03:00
n64
c33936e862 Enhance Z-fighting issues for shadows 2020-07-05 14:39:34 +03:00
n64
744b6bf5d6 Don't render low-polygon variants on pc-port 2020-07-05 14:37:11 +03:00
fgsfds
df1340c37c 'Better skybox position precision' from sm64-port 2020-07-05 14:33:57 +03:00
n64
6330644371 Refresh 11 2020-07-05 14:15:43 +03:00
fgsfds
9e4c0f26c9 bettercam: camera centering is bound to L again 2020-06-25 01:18:50 +03:00
fgsfds
026361ad61 force disable free camera during demo playback 2020-06-24 16:25:44 +03:00
fgsfds
89974e786d eu: check if language value is correct 2020-06-23 04:10:38 +03:00
fgsfds
cb9bd73866 reenable puppycam after level change 2020-06-21 20:42:02 +03:00
fgsfds
59cbe0ab70 update puppycam; add runtime option to disable it 2020-06-20 17:22:33 +03:00
fgsfds
fe44da4794 fix GRUCODE defines 2020-06-20 04:32:12 +03:00
n64
4a448cf10d merge refresh 10 2020-06-20 02:49:59 +03:00
Pouar
44f9b92124 Bugfix
The bullets snufit shoots immediately got deleted shortly after
shooting when NODRAWDISTANCE was enabled. This fixes it
2020-06-18 19:34:57 -05:00