All Projects → mkst → sm64-port

mkst / sm64-port

Licence: other
My mirror of the sm64-port. You probably want to look at the 3DS port branch: https://github.com/mkst/sm64-port/tree/3ds-port

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
assembly
5116 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to sm64-port

ocs
A one click setup for 3ds
Stars: ✭ 13 (-92.22%)
Mutual labels:  3ds, 3ds-homebrew
smmdb
cross console/emulator sharing platform for Super Mario Maker courses
Stars: ✭ 51 (-69.46%)
Mutual labels:  3ds, 3ds-homebrew
3DS.py
Python on your Nintendo 3DS
Stars: ✭ 90 (-46.11%)
Mutual labels:  3ds, 3ds-homebrew
3ds-hello-dlang
A 3DS homebrew example written in D!
Stars: ✭ 19 (-88.62%)
Mutual labels:  3ds, 3ds-homebrew
m3diaLib-CTR
A C++ library for easier homebrew development for the Nintendo 3DS
Stars: ✭ 39 (-76.65%)
Mutual labels:  3ds, 3ds-homebrew
libstarlight
3DS Homebrew Application Framework
Stars: ✭ 28 (-83.23%)
Mutual labels:  3ds, 3ds-homebrew
Notepad3DS
Text editor for the Nintendo 3DS console
Stars: ✭ 17 (-89.82%)
Mutual labels:  3ds, 3ds-homebrew
dses
Dead Simple Eula Set
Stars: ✭ 31 (-81.44%)
Mutual labels:  3ds, 3ds-homebrew
ctroller
Use your 3DS as a gamepad on linux
Stars: ✭ 34 (-79.64%)
Mutual labels:  3ds, 3ds-homebrew
Rich-Presence-U
Display your Nintendo games on Discord.
Stars: ✭ 77 (-53.89%)
Mutual labels:  3ds
3ds
Javascript front-end to the titledb API
Stars: ✭ 12 (-92.81%)
Mutual labels:  3ds
powerslaves
Taking PowerSaves as a slave to your will.
Stars: ✭ 28 (-83.23%)
Mutual labels:  3ds
old-browserhax
Fast and free old 3ds browser exploit for latest firmware.
Stars: ✭ 37 (-77.84%)
Mutual labels:  3ds
Sonic-1-2-2013-Decompilation
Sonic 1/2 (2013) Decompilation for New 3DS
Stars: ✭ 41 (-75.45%)
Mutual labels:  3ds
Sunshell
Multifunction shell for 3DS
Stars: ✭ 26 (-84.43%)
Mutual labels:  3ds-homebrew
secure-payment-confirmation
Explainer for Secure Payment Confirmation
Stars: ✭ 64 (-61.68%)
Mutual labels:  3ds
LocalFileShare
attempt at file sharing with local wlan n 3ds
Stars: ✭ 13 (-92.22%)
Mutual labels:  3ds-homebrew
new-browserhax-XL
Another one!
Stars: ✭ 32 (-80.84%)
Mutual labels:  3ds
3dsdb
3dsdb
Stars: ✭ 29 (-82.63%)
Mutual labels:  3ds
ACNL REditor
Animal Crossing New Leaf ROM Editor: Patch ACNL's code and files with QoL improvements to change the gameplay.
Stars: ✭ 35 (-79.04%)
Mutual labels:  3ds

Super Mario 64 Nintendo 3DS Port

This repo does not include all assets necessary for compiling the game. A prior copy of the game is required to extract the assets.

Changes vs. Vanilla 3DS Port

  • Based off Refresh 11
  • Stereo 3D support; use the mini-menu to switch between 3D (400px) and 800px modes (800PX/AA disabled in 3D mode)
  • Multi-threaded; audio thread runs on Core 1 on O3DS and Core 2 on N3DS; needs Luma v10.1.1 or higher
  • Naïve frame-skip if frame takes longer than 33.3ms (1 / 30 FPS) to render
    • Disable by building with DISABLE_N3DS_FRAMESKIP=1
  • Configurable controls via sm64config.txt
  • GFX_POOL_SIZE fix (support 60 FPS on 32bit platforms)
  • Mini-menu (tap touch-screen to trigger)
    • Enable/disable AA
    • Enable/disable 800px mode
    • Exit the game
  • Touch-screen camera controls similar to SM64DS
  • Support injection of SMDH file into the .3dsx
    • Change the 3ds/icon.png in the base of this repository before building.
  • To change the CIA banner, modify the 3ds/icon.png and 3ds/banner.png and use bannertool to generate new icon.icn and banner.bnr respectively.
  • Patches updated for 3DS:
  • Choice to disable audio at build-time; add build flag DISABLE_AUDIO=1

Building

After building, either install the .cia if you made one, or copy over the sm64.us.f3dex2e.3dsx into the /3ds directory on your SD card and load via The Homebrew Launcher.

Visit the wiki for information.

Docker

The following assumes a basic understanding of Docker; if you do not belong to the docker group, prefix those commands with sudo.

Clone Repository:

git clone https://github.com/mkst/sm64-port.git

Navigate into freshly checked out repo:

cd sm64-port

Copy in baserom.XX.z64:

cp /path/to/your/baserom.us.z64 ./ # change 'us' to 'eu', 'jp' or 'sh' as appropriate

Build with pre-baked image:

Change VERSION=us if applicable.

docker run --rm -v $(pwd):/sm64 markstreet/sm64:3ds make --jobs 4 VERSION=us cia

Linux / WSL (Ubuntu)

Tested successfully on Ubuntu 18.04 and 20.04. Does not work on 16.04.

sudo su -

apt-get update && \
    apt-get install -y \
        binutils-mips-linux-gnu \
        bsdmainutils \
        build-essential \
        libaudiofile-dev \
        pkg-config \
        python3 \
        wget \
        unzip \
        zlib1g-dev

wget https://github.com/devkitPro/pacman/releases/download/v1.0.2/devkitpro-pacman.amd64.deb \
  -O devkitpro.deb && \
  echo ebc9f199da9a685e5264c87578efe29309d5d90f44f99f3dad9dcd96323fece3 devkitpro.deb | sha256sum --check && \
  apt install -y ./devkitpro.deb && \
  rm devkitpro.deb

dkp-pacman -Syu 3ds-dev --noconfirm

wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.17/makerom-v0.17-ubuntu_x86_64.zip \
  -O makerom.zip && \
  echo 976c17a78617e157083a8e342836d35c47a45940f9d0209ee8fd210a81ba7bc0  makerom.zip | sha256sum --check && \
  unzip -d /opt/devkitpro/tools/bin/ makerom.zip && \
  chmod +x /opt/devkitpro/tools/bin/makerom && \
  rm makerom.zip

exit

cd

git clone https://github.com/mkst/sm64-port.git

cd sm64-port

# go and copy the baserom to c:\temp (create that directory in Windows Explorer)
cp /mnt/c/temp/baserom.us.z64 ./

sudo chmod 644 ./baserom.us.z64

export PATH="/opt/devkitpro/tools/bin/:~/sm64-port/tools:${PATH}"
export DEVKITPRO=/opt/devkitpro
export DEVKITARM=/opt/devkitpro/devkitARM
export DEVKITPPC=/opt/devkitpro/devkitPPC

make --jobs 4
make cia # optional if you want a .cia

Windows (MSYS2)

WSL is the preferred route, but you can also use MSYS2 (MINGW64) to compile.

For each instruction copy and paste the contents into the MING64 console.

Get MSYS2:

Navigate to https://www.msys2.org/ and download the installer.

Install and Run MINGW64:

Next, Next, Next, Finish (keep the box checked to "Run MSYS 64bit now").

Add keyserver for package validation:

pacman-key --recv BC26F752D25B92CE272E0F44F7FD5492264BB9D0 --keyserver keyserver.ubuntu.com
pacman-key --lsign BC26F752D25B92CE272E0F44F7FD5492264BB9D0

Add DevKitPro keyring:

pacman -U --noconfirm https://downloads.devkitpro.org/devkitpro-keyring.pkg.tar.xz

Add DevKitPro package repositories:

cat <<EOF >> /etc/pacman.conf
[dkp-libs]
Server = https://downloads.devkitpro.org/packages
[dkp-windows]
Server = https://downloads.devkitpro.org/packages/windows
EOF

Update dependencies:

pacman -Syu --noconfirm

MINGW64 may close itself when done, if it does, find MSYS2 MinGW 64bit in your Start Menu and open again.

Install Dependencies:

pacman -S 3ds-dev git make python3 mingw-w64-x86_64-gcc unzip --noconfirm

Download makerom:

wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.17/makerom-v0.17-win_x86_64.zip

Extract makerom:

unzip -d /opt/devkitpro/tools/bin/ makerom-v0.17-win_x86_64.zip

Setup Environment Variables:

export PATH="$PATH:/opt/devkitpro/tools/bin" && echo "OK!"
export DEVKITPRO=/opt/devkitpro && echo "OK!"
export DEVKITARM=/opt/devkitpro/devkitARM && echo "OK!"
export DEVKITPPC=/opt/devkitpro/devkitPPC && echo "OK!"

Clone Repository:

git clone https://github.com/mkst/sm64-port.git

Navigate into freshly checked out repo:

cd sm64-port && echo "OK!"

Copy in baserom.XX.z64:

This assumes that you have create the directory c:\temp via Windows Explorer and copied the Super Mario 64 baserom.XX.z64 to it.

cp /c/temp/baserom.us.z64 ./ && echo "OK!" # change 'us' to 'eu', 'jp' or 'sh' as appropriate

Compile 3dsx:

make VERSION=us --jobs 4 # change 'us' to 'eu', 'jp' or 'sh' as appropriate

Create .cia:

make VERSION=us cia # change 'us' to 'eu', 'jp' or 'sh' as appropriate

Other Operating Systems

TBD; feel free to submit a PR.

Project Structure

sm64
├── actors: object behaviors, geo layout, and display lists
├── asm: handwritten assembly code, rom header
│   └── non_matchings: asm for non-matching sections
├── assets: animation and demo data
│   ├── anims: animation data
│   └── demos: demo data
├── bin: C files for ordering display lists and textures
├── build: output directory
├── data: behavior scripts, misc. data
├── doxygen: documentation infrastructure
├── enhancements: example source modifications
├── include: header files
├── levels: level scripts, geo layout, and display lists
├── lib: SDK library code
├── rsp: audio and Fast3D RSP assembly code
├── sound: sequences, sound samples, and sound banks
├── src: C source code for game
│   ├── audio: audio code
│   ├── buffers: stacks, heaps, and task buffers
│   ├── engine: script processing engines and utils
│   ├── game: behaviors and rest of game source
│   ├── goddard: Mario intro screen
│   ├── menu: title screen and file, act, and debug level selection menus
│   └── pc: port code, audio and video renderer
├── text: dialog, level names, act names
├── textures: skybox and generic texture data
└── tools: build tools

Credits

  • Credits go to Gericom for the sm64_3ds port that this flavour is based off.
  • All those who have contributed PRs!

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].