Find a file
2024-06-21 17:33:32 -04:00
.github/ISSUE_TEMPLATE sm64coopdx 2023-10-30 01:03:36 -04:00
actors Make metal cap use EMBLEM on the models 2024-06-21 14:06:37 -04:00
assets Actually fix Waluigi anims 2024-05-11 19:17:50 -04:00
autogen Change METAL to EMBLEM 2024-06-21 13:51:06 -04:00
bin extract assets from rom at runtime (#4) 2024-03-23 16:11:30 -04:00
data Re-enable DynOS compression (Needs testing) 2024-06-21 13:51:06 -04:00
developer Delete developer/recompile-and-restart.sh 2024-04-22 19:33:03 -04:00
docs/lua Change METAL to EMBLEM 2024-06-21 13:51:06 -04:00
dynos/packs/Coop Cafe Pipe remove this 2024-05-08 09:47:27 +10:00
include add a way for mods to get dynamic surfaces that belong to specific objects (#59) 2024-06-06 17:24:28 +10:00
lang Add rules panel for public lobbies 2024-06-21 13:51:06 -04:00
levels Revert "Decrease the sleep times in some spots, We do not need them to be so long. (#373)" 2024-04-19 12:37:37 -04:00
lib update coopnet linux library (#64) 2024-06-09 21:59:40 +10:00
mods Re-enable DynOS compression (Needs testing) 2024-06-21 13:51:06 -04:00
palettes remove all palettes that aren't for a built in character (#66) 2024-06-11 20:42:38 +10:00
res Add macOS icon by EmeraldLockdown 2024-03-18 18:03:01 -04:00
sound Rename every custom character sample to have a label :D 2024-04-19 15:30:45 -04:00
src Fix being able to join direct connection lobbies past max players 2024-06-21 17:33:32 -04:00
text extract assets from rom at runtime (#4) 2024-03-23 16:11:30 -04:00
textures Improve FONT_MENU 2024-06-21 13:51:06 -04:00
tools Palette system overhaul and preset rewrite 2024-05-21 17:09:59 -04:00
.clang-format Refresh 1 2019-09-01 15:50:50 -04:00
.clang-tidy Refresh 1 2019-09-01 15:50:50 -04:00
.gitattributes Merge pull request #42 from krmeet/luac 2024-01-01 12:53:32 -05:00
.gitignore Streamlined Development and Enhanced Customization: Updates to .gitignore, and Keyboard Controls in Chat (#17) 2024-04-22 19:32:28 -04:00
assets.json DynOS Skyboxes 2023-11-06 18:37:02 -05:00
CHANGES Update to Refresh 13 (#19) 2022-03-13 00:17:10 -08: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
credits.txt Add eeliottheking to credits.txt 2024-05-12 09:16:55 -04:00
Dockerfile Add curl to Dockerfile 2024-06-08 08:07:47 -04:00
dynos.mk Added DynOS v1.1 without the dynamic options 2022-03-09 18:01:03 -08:00
extract_assets.py extract assets from rom at runtime (#4) 2024-03-23 16:11:30 -04:00
format.sh sm64coopdx 2023-10-30 01:03:36 -04:00
Makefile fix some git merge conflicts that weren't resolved (#55) 2024-06-01 13:40:58 +10:00
Makefile.split extract assets from rom at runtime (#4) 2024-03-23 16:11:30 -04:00
pisetup.sh Update repo_url. Rename /sm64pi/sm64pc -> /sm64pc/sm64ex 2020-07-06 19:29:52 +02:00
README.md Remove DirectX 12 2024-03-30 23:57:18 -04:00
sm64.eu.sha1 init2 2019-08-25 00:46:40 -04:00
sm64.jp.sha1 init2 2019-08-25 00:46:40 -04:00
sm64.sh.sha1 Refresh 7 2020-03-01 22:42:52 -05:00
sm64.us.sha1 sm64coopdx 2023-10-30 01:03:36 -04:00
util.mk Update to Refresh 13 (#19) 2022-03-13 00:17:10 -08:00

sm64coopdx Logo sm64coopdx is online multiplayer mod for the Super Mario 64 PC port that synchronizes all entities and every level for multiple players. Fork & official continuation of sm64ex-coop.

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 clear ROM assets, however this is unnecessary for contributing because the .gitignore file already excludes ROM assets.

How to Play

The easiest way to play is by using coopdx-patcher. Simply drag and drop your ROM into the program or run coopdx-patcher "your_rom_name.z64".

How to Compile

Windows:

Download the newest version of the MSYS2 installer from here and install it.

Set up MSYS2.

Run the MINGW64 (mingw64.exe) prompt if you wish to build a 64-bit version of the executable, or the MINGW32 (mingw32.exe) prompt otherwise.

Enter pacman -Syuu in the prompt and hit Enter. Press Y when it asks if you want to update packages. If it asks you to close the prompt, do so, then restart it and run the same command again. This updates the packages to their latest versions.

Install dependencies.

Enter this command to install packages necessary to build sm64coopdx:

pacman -S unzip make git mingw-w64-i686-gcc mingw-w64-x86_64-gcc mingw-w64-i686-glew mingw-w64-x86_64-glew mingw-w64-i686-SDL2 mingw-w64-i686-SDL mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL python3

Linux:

Install build dependencies

The build system has the following package requirements:

  • python3 >= 3.6
  • libsdl2-dev
  • libglew-dev
  • git
  • libcurl
  • zlib

Debian / Ubuntu - targeting 64 bits

sudo apt install build-essential git python3 libglew-dev libsdl2-dev libz-dev libcurl4-openssl-dev

Debian / Ubuntu - targeting 32 bits

sudo apt install build-essential git python3 libglew-dev:i386 libsdl2-dev:i386 libz-dev:i386 libcurl4-openssl-dev:i386

Fedora - targeting 64 bits

sudo dnf install make gcc python3 glew-devel SDL2-devel zlib-devel libcurl-devel

Fedora - targeting 32 bits

sudo dnf install python3.i686 glew-devel.i686 SDL2-devel.i686 zlib-devel.i686 libcurl-devel.i686

Arch Linux

sudo pacman -S base-devel python sdl2 glew zlib-devel libcurl-devel

macOS

Install dependencies.

Firstly, install Homebrew, this will be used to download the dependencies.

After installing homebrew, open up the Terminal application, and run this command:

Arm:
brew install make mingw-w64 gcc sdl2 pkg-config glew glfw3 libusb audiofile coreutils
Intel:
brew install make mingw-w64 gcc gcc@9 sdl2 pkg-config glew glfw3 libusb audiofile coreutils

Obtain the source code.

You can either download the ZIP file from github, or clone it with git:

git clone https://github.com/coop-deluxe/sm64coopdx.git
cd sm64coopdx

Copy baserom(s) for asset extraction.

For each version (jp/us/eu) that you want to build an executable for, put an existing ROM at ./baserom.<version>.z64 for asset extraction.

For example, if you want to build the US version, there should be a ROM file called baserom.us.z64 in the sm64coopdx directory (meaning next to the Makefile). The US version is highly recommended.

If during the build process you get messages saying that the ROM has an incorrect hash, there is a possibility that it's a V64 ROM that needs to be byteswapped. To do that, use this web tool.

Run make. To turn certain features on and off, append any needed build flags to your make invocation like so:

Useful Flag information:

-j[2|4|8|16]: Jobs amount, may speed up compilation.

TARGET_BITS [32|64]: Compile 32-bit or 64-bit.

DISCORD_SDK [0|1]: Enable or disable Discord Game SDK.

COOPNET [0|1]: Enable or disable the CoopNet networking system.

HEADLESS [0|1]: Enable or disable headless mode (meant for servers.)

RENDER_API [GL|GL_LEGACY|D3D11|DUMMY]: Sets the rendering API.

WINDOW_API [SDL1|SDL2|DXGI|DUMMY] Sets the window API.

Windows / Linux:

make -j

macOS:

gmake -j2 OSX_BUILD=1

macOS Notes:

-j2 makes your computer allocate 2 cores to compiling, without this, it would be 1. -j with nothing is the absolute fastest, however may make your computer slow when doing other things. I would recommend -j2 on M-Series mac's.

Once it's done compiling, you will now have a .app file. If you would like to move it to the applications folder, you can run this terminal command:

cp build/us_pc/sm64coopdx.app /Applications/

If you want to move it elsewhere, I would recommend running:

cp build/us_pc/sm64coopdx.app ~/Downloads/

Then navigate to the Downloads folder, and move sm64coopdx.app to where you want it to be.

Goal (accomplished)

Create a mod for the PC port where multiple people can play together online.

Unlike previous multiplayer projects, this one synchronizes enemies and events. This allows players interact with the same world at the same time.

Lua

sm64coopdx is moddable via Lua, similar to Roblox and Garry's Mod's Lua APIs. To get started, click here to see the Lua documentation.