Go to file
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
.github/ISSUE_TEMPLATE Update issue templates 2020-05-07 20:46:35 +02:00
actors Rewrote how players are initialized, stored, and displayed 2020-09-06 18:52:52 -07:00
asm merge refresh 10 2020-06-20 02:49:59 +03:00
assets
bin Created Luigi's life icon 2020-09-05 19:44:58 -07:00
build-windows-visual-studio Synchronized save files 2020-09-04 15:07:32 -07:00
data Rewrote how players are initialized, stored, and displayed 2020-09-06 18:52:52 -07:00
doxygen yeet 2020-06-02 23:43:32 +03:00
enhancements update 60fps patch 2020-07-09 17:33:04 +03:00
include Rewrote how players are initialized, stored, and displayed 2020-09-06 18:52:52 -07:00
levels Rewrote how players are initialized, stored, and displayed 2020-09-06 18:52:52 -07:00
lib throw out unused libultra sources 2020-06-21 02:21:46 +03:00
sound merge refresh 10 2020-06-20 02:49:59 +03:00
src Rewrote how players are initialized, stored, and displayed 2020-09-06 18:52:52 -07:00
text refresh 6 2020-02-03 00:51:26 -05:00
textures/segment2 Created Luigi's life icon 2020-09-05 19:44:58 -07:00
tools Merge pull request #395 from MartinPham/patch-4 2020-08-16 02:01:02 +03:00
.clang-format
.clang-tidy
.gitattributes
.gitignore Fixed receiving of health, made recovery heart 2-player aware 2020-08-07 22:27:15 -07:00
CHANGES Refresh 11 2020-07-05 14:15:43 +03:00
Dockerfile merge refresh 10 2020-06-20 02:49:59 +03:00
Doxyfile refresh 4 2019-12-01 21:52:53 -05:00
Jenkinsfile refresh 6 2020-02-03 00:51:26 -05:00
Makefile Force no draw distance on and text saves off 2020-09-04 17:52:48 -07:00
Makefile.split Fix EXTERNAL_DATA for Luigi 2020-09-05 00:11:15 -07:00
README.md Update README.md 2020-08-31 23:50:43 -07:00
README_es_ES.md Update README_es_ES.md 2020-05-19 00:04:07 +01:00
README_pt_BR.md Create README_pt_BR.md 2020-06-10 22:36:41 -03:00
README_zh_CN.md Typo in extract_assets.py 2020-05-16 15:44:55 -03:00
SAVE_FORMAT.MD Added appropriate flags for sound mode and cap level. Documentation has been updated. 2020-05-20 23:28:04 +09:00
asmdiff.jp.sh merge PC port onto the decompile 2020-05-07 20:21:22 +02:00
assets.json merge refresh 10 2020-06-20 02:49:59 +03:00
c2obj.py correct line endings 2020-05-16 07:36:28 +03:00
cgdb.exe.stackdump Started adding networking 2020-08-01 20:22:24 -07:00
charmap.txt refresh 5 2020-01-03 10:38:57 -05:00
charmap_menu.txt refresh 5 2020-01-03 10:38:57 -05:00
compile.sh Removed 'int' from most of networking code 2020-09-04 11:43:12 -07:00
debug.sh Removed 'int' from most of networking code 2020-09-04 11:43:12 -07:00
diff.py Refresh 10.1 2020-06-20 02:53:56 +03:00
diff_settings.py Refresh 8 2020-04-03 14:57:26 -04:00
dx11.sh Synchronize cannons as soon as they are unlocked 2020-08-31 23:49:51 -07:00
extract_assets.py Refresh 10.1 2020-06-20 02:53:56 +03:00
first-diff.py merge refresh 10 2020-06-20 02:49:59 +03:00
format.sh
gdb.exe.stackdump Synchronized purple switch 2020-08-07 19:37:19 -07:00
network.sh Geo2 removal wip 2020-09-06 13:54:01 -07:00
obj2c.py correct line endings 2020-05-16 07:36:28 +03:00
pisetup.sh Update repo_url. Rename /sm64pi/sm64pc -> /sm64pc/sm64ex 2020-07-06 19:29:52 +02:00
rename_sym.sh Refresh 7 2020-03-01 22:42:52 -05:00
sm64.eu.sha1
sm64.jp.sha1
sm64.ld merge refresh 10 2020-06-20 02:49:59 +03:00
sm64.sh.sha1 Refresh 7 2020-03-01 22:42:52 -05:00
sm64.us.sha1
undefined_syms.txt Refresh 8 2020-04-03 14:57:26 -04:00

README.md

sm64ex-coop

Online cooperative multiplayer mod for SM64, aiming to synchronize all entities and every level for two players. Fork of sm64pc/sm64ex.

Feel free to report bugs and contribute, but remember, there must be no upload of any copyrighted asset. Run ./extract_assets.py --clean && make clean or make distclean to remove ROM-originated content.

Goal

Create a mod for the PC port where two people can play online together peer-to-peer. Unlike previous online attempts, this one will synchronize enemies and events such that you will be interacting with the same world at the same time.

Building

For building instructions, please refer to the wiki.

Make sure you have MXE first before attempting to compile for Windows on Linux and WSL. Follow the guide on the wiki.