|
|
Line 4: |
Line 4: |
| |description=Super Mario 64 3DS Port. | | |description=Super Mario 64 3DS Port. |
| |author=sm64-port | | |author=sm64-port |
| |lastupdated=2020/08/04 | | |lastupdated=2021/08/21 |
| |type=Platform | | |type=Platform |
| |version=2020 | | |version=2021 |
| |license=Mixed | | |license=Mixed |
| |download=https://dlhb.gamebrew.org/3dshomebrew/SuperMario643DS.rar | | |download=[https://dlhb.gamebrew.org/3dshomebrews/sm643ds.7z source only] |
| |website=https://github.com/sm64-port/sm64_3ds | | |website=https://github.com/sm64-port/sm64_3ds |
| |source=https://github.com/sm64-port/sm64_3ds | | |source=https://github.com/sm64-port/sm64_3ds |
| }} | | }} |
| <youtube>GiaddEwzxgM</youtube>
| | Super Mario 64 3DS is a port of the Super Mario 64 decompilation project that was completed in mid-2009. It is a full decompilation of Super Mario 64 (J), (U), and (E), ported to the 3DS. |
|
| |
|
| == Super Mario 64 3DS Port ==
| | Note that the repository does not include all assets necessary for compiling the port. A prior copy of the game is required to extract the required assets. |
|
| |
|
| This repo contains a full decompilation of Super Mario 64 (J), (U), and (E), ported to the 3DS. This repo does not include all assets necessary for compiling the port. A prior copy of the game is required to extract the required assets.
| | See also [https://github.com/mkst/sm64-port/tree/3ds-port mkst's Super Mario 64 3DS fork], which contains experimental features such as stereo 3D support, mini-menu to enable/disable AA (Anti-aliasing) and switch between 400/800px settings. |
|
| |
|
| == Installation == | | ==Screenshots== |
| | https://dlhb.gamebrew.org/3dshomebrews/sm643ds3.png |
| | https://dlhb.gamebrew.org/3dshomebrews/sm643ds4.png |
|
| |
|
| === Docker ===
| | https://dlhb.gamebrew.org/3dshomebrews/sm643ds5.png |
| | https://dlhb.gamebrew.org/3dshomebrews/sm643d36.png |
|
| |
|
| ==== 1. Copy baserom(s) for asset extraction ==== | | ==Media== |
| | '''Super Mario 64 3DS | Nintendo 3DS | Gameplay''' ([https://www.youtube.com/watch?v=yCnauBKGgTU Stranno]) <br> |
| | <youtube>yCnauBKGgTU</youtube> |
|
| |
|
| For each version (jp/us/eu) that you want to build a ROM for, put an existing ROM at <code>./baserom.<version>.z64</code> for asset extraction.
| | ==External links== |
| | * GitHub - https://github.com/sm64-port/sm64_3ds |
| | * GBAtemp - https://gbatemp.net/threads/super-mario-64-port.564431/post-9149383 |
| | * GBAtemp - https://gbatemp.net/threads/super-mario-64-port.564431/post-9229963 |
|
| |
|
| ==== 2. Create docker image ====
| | [[Category:3DS homebrew games]] |
| | | [[Category:Homebrew platform games on 3DS]] |
| <syntaxhighlight lang="bash">sudo docker build . -t sm64</syntaxhighlight>
| |
| ==== 3. Build ====
| |
| | |
| To build we simply have to mount our local filesystem into the docker container and build.
| |
| | |
| <syntaxhighlight lang="bash"># for example if you have baserom.us.z64 in the project root
| |
| sudo docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 sm64 make VERSION=${VERSION:-us} -j4
| |
| # if your host system is linux you need to tell docker what user should own the output files
| |
| sudo docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$UID sm64 make VERSION=${VERSION:-us} -j4</syntaxhighlight>
| |
| Resulting artifacts can be found in the <code>build</code> directory.
| |
| | |
| === Linux ===
| |
| | |
| ==== 0. Cloning repo ====
| |
| | |
| Run <code>git clone https://github.com/sm64-port/sm64_3ds.git</code>.
| |
| | |
| ==== 1. Copy baserom(s) for asset extraction ====
| |
| | |
| For each version (jp/us/eu) that you want to build a ROM for, put an existing ROM at <code>./baserom.<version>.z64</code> for asset extraction.
| |
| | |
| ==== 2. Install build dependencies ====
| |
| | |
| The build system has the following package requirements:
| |
| | |
| <pre>python3 >= 3.6
| |
| libaudiofile
| |
| devkitPro
| |
| ├──devkitARM
| |
| ├──devkitarm-crtls
| |
| ├──devkitarm-rules
| |
| ├──3dstools
| |
| ├──citro3d
| |
| ├──libctru
| |
| └──picasso</pre>
| |
| '''Debian / Ubuntu'''
| |
| | |
| <pre>sudo apt install build-essential pkg-config git python3 zlib1g-dev libaudiofile-dev</pre>
| |
| '''Arch Linux'''
| |
| | |
| <pre>sudo pacman -S base-devel python audiofile</pre>
| |
| Now follow https://devkitpro.org/wiki/devkitPro_pacman to install devkitPro. Run <code>sudo (dkp-)pacman -S 3ds-dev</code> after completing the <code>Updating Databases</code> section. Set the environment variables:
| |
| | |
| <pre>export DEVKITARM=/opt/devkitpro/devkitARM
| |
| export DEVKITPRO=/opt/devkitpro
| |
| export DEVKITPPC=/opt/devkitpro/devkitPPC
| |
| PATH=$PATH:/opt/devkitpro/tools/bin/</pre>
| |
| ==== 3. Build ROM ====
| |
| | |
| Run <code>make</code> to build the ROM (defaults to <code>VERSION=us</code>). Make sure your path to the repo is not too long or else this process will error, as the emulated IDO compiler cannot handle paths longer than 255 characters. Examples:
| |
| | |
| <pre>make -j4 # build (U) version with 4 jobs
| |
| make VERSION=jp -j4 # build (J) version instead with 4 jobs</pre>
| |
| === Windows ===
| |
| | |
| For Windows, install WSL and a distro of your choice following [https://docs.microsoft.com/en-us/windows/wsl/install-win10 Windows Subsystem for Linux Installation Guide for Windows 10] We recommend either Debian or Ubuntu 18.04 Linux distributions under WSL.
| |
| | |
| == Project Structure ==
| |
| | |
| <pre>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: asm 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
| |
| ├── 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
| |
| ├── text: dialog, level names, act names
| |
| ├── textures: skybox and generic texture data
| |
| └── tools: build tools</pre>
| |
| == Contributing ==
| |
| | |
| Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Run clang-format on your code to ensure it meets the project's coding standards.
| |