|
|
(9 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| {{Infobox 3DS Homebrews | | {{Infobox 3DS Homebrews |
| | title = Super Mario 64 | | |title=Super Mario 64 |
| | image = SuperMario643DS.jpg|250px | | |image=Sm643ds2.png |
| | type = Platform | | |description=Super Mario 64 3DS Port. |
| | version=unknown | | |author=sm64-port |
| | lastupdated = 2020/08/04 | | |lastupdated=2021/08/21 |
| | license = Mixed | | |type=Platform |
| | author = sm64-port | | |version=2021 |
| | website = https://github.com/sm64-port/sm64_3ds | | |license=Mixed |
| | download = https://dlhb.gamebrew.org/3dshomebrew/SuperMario643DS.rar | | |download=https://dlhb.gamebrew.org/3dshomebrews/sm643ds.7z Source Only |
| | source = https://github.com/sm64-port/sm64_3ds | | |website=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. 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. |
|
| |
|
| == Super Mario 64 3DS Port ==
| | 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. |
|
| |
|
| 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.
| | ==Screenshots== |
| | https://dlhb.gamebrew.org/3dshomebrews/sm643ds3.png |
| | https://dlhb.gamebrew.org/3dshomebrews/sm643ds4.png |
|
| |
|
| == Installation ==
| | https://dlhb.gamebrew.org/3dshomebrews/sm643ds5.png |
| | https://dlhb.gamebrew.org/3dshomebrews/sm643ds6.png |
|
| |
|
| === Docker === | | ==External links== |
| | | * GitHub (sm64-port) - https://github.com/sm64-port/sm64_3ds |
| ==== 1. Copy baserom(s) for asset extraction ====
| | * GitHub (mkst) - https://github.com/mkst/sm64-port/tree/3ds-port |
| | | * GBAtemp - https://gbatemp.net/threads/super-mario-64-port.564431/post-9149383 |
| 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.
| | * GBAtemp - https://gbatemp.net/threads/super-mario-64-port.564431/post-9229963 |
| | | * Github (Patches) - https://github.com/aspieweeb759/3ds-SM64-romhack-port-patches |
| ==== 2. Create docker image ====
| |
| | |
| <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.
| |