Building SM64 for Nintendo Switch from sm64ex-alo Repository

Hi, I hope the next steps help to somebody, first forgive my bad English, is no my native language.

After the project «n64decomp» finished lots of forks emerged. One of them is the SM 64 PC Port which have as aim to be a port of n64decomp for modern devices.

Some of these ports was for the Switch console and become real on the fork fgsfdsfgs that fork seems to be staled, Now @AloXado320 have resumed the work with the repository AloUltraExt and add some features and converged the latest code with latest refresh from the decomp project.

Switch Building Process

If you read the guide:

https://github.com/fgsfdsfgs/sm64pc/wiki/Compiling-for-Nintendo-Switch

The steps are loosely explained, but they don’t work well for me, so I decided read a lot of documentation and the official SM64 thread completely.

I choose to use for this set of instructions the MSYS environment, which for me is easy to setup and as it is an enclosed environment which is not affected by other software on your computer, I mainly use Windows, but as MINGW is a Cygwin environment I think the steps could be easy extrapolated to Linux environments.

First you need Install a MSYS environment:
The latest instructions for install the MSYS environment are on https://gbatemp.net/threads/install-msys-environment.652234/ if you don't have one working, use them.

After you have the MSYS environment working you need to install DevKitPro
For that you can follow the instructions on the tutorial https://gbatemp.net/threads/setup-a-devkitpro-environment-on-windows.652238/

Now you can start the building process:
First install the prerequisites


In a MinGW64 shell (or MinGW32 if you have a Windows 32 bit edition, why will you do today?). Be sure the prompt shows MINGW64 or MINGW32 if not you started the wrong shell, close it and open the right one.
a.png
b.png


Please execute the next command, several times until you get the message "there is nothing to do", you can be asked to restarts the MINGW64 environment few times:
pacman -Syuu --needed --noconfirm

Then execute the next commands:

Code:
pacman -Syuu --needed --noconfirm base-devel git make mercurial python3 subversion unzip autoconf automake libtool pkg-config autoconf-wrapper mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-glew mingw-w64-x86_64-SDL2 mingw-w64-x86_64-toolchain mingw-w64-x86_64-SDL switch-dev devkitA64 dkp-toolchain-vars libnx switch-tools switch-mesa switch-libdrm_nouveau switch-sdl2

Once the installation end, verify the MSYS2 database again:

pacman -Syuu --needed --noconfirm

Clone the repository, using the --recursive option in order to clone all the trees.

Code:
cd ~/
git clone --recursive https://github.com/AloUltraExt/sm64ex-alo

The repository is cloned to a subfolder of the "Home" directory of MinGWXX Shell, on the prompt "~" means your home directory.

You need copy a legal copy of the original ROM in the cloned directory, it must be in "Big Endian" format.

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

By example, for US version:
./baserom.us.z64
that file should have this Checksums:
MD5: 20b854b239203baf6c961b850a4a51a2 *baserom.us.z64
SHA: 9bef1128717f958171a4afac3ed78ee2bb4e86ce *baserom.us.z64
SHA256: 17ce077343c6133f8c9f2d6d6d9a4ab62c8cd2aa57c40aea1f490b4c8bb21d91 *baserom.us.z64

copy the file to the path c:\msys64\home\<USERNAME>\sm64ex-alo

If your ROM isn't on Big Endian format, use https://hack64.net/tools/swapper.php to convert it.

Now the environment is ready to build Switch version using any combination of the options you like, by example:
Code:
cd ~/sm64ex-alo
make TARGET_SWITCH=1 BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 HIGH_FPS_PC=1

Will activate a better camera handling, enable the drawing of far objects on the game, Fixes some texture related bugs (by example smoke), AND 60 FPS patch.
sadly the actual repo is not so compatible with multiple cores, so please do not use -j parameter.
After the process ends the NRO is on the build subfolder.
Code:
Build succeeded.
==== Build Details ====
File:           build/us_nx/sm64.us.f3dex2e.nro
Version:        us
Target:         Nintendo Switch


If you like to add texture packs to the build you put them on the switch\us_nx\sm64ex_res path, thanks to @JAGSTAX for the tip.


Additional Note:
For Build Windows version you can run the command without the TARGET_SWITCH=1 parameter.


Trying on a Ubuntu Virtual Machine and worked just fine:
1739733344609.png

For Ubuntu I had to install DevKitPro (https://devkitpro.org/wiki/devkitPro_pacman)

Then install the packages:

Bash:
sudo apt install git make python3 subversion unzip autoconf automake libtool pkg-config autoconf cmake

pacman -Syu --needed --noconfirm devkit-env switch-dev devkitA64 dkp-toolchain-vars libnx switch-tools switch-mesa switch-libdrm_nouveau switch-sdl2

Then
Bash:
cd ~
rm -rf sm64ex-alo
git clone --recursive https://github.com/AloUltraExt/sm64ex-alo
cd ~/sm64ex-alo

YOU MUST TO COPY YOUR LEGALLY ACQUIRED ROM WITH MD5: 20b854b239203baf6c961b850a4a51a2 TO: ~/sm64ex-alo/baserom.us.z64

Then you can build the NRO:

Bash:
make TARGET_SWITCH=1 BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 EXT_OPTIONS_MENU=1 QOL_FIXES=1 QOL_FEATURES=1 MOUSE_ACTIONS=1 EXT_DEBUG_MENU=1


BE SURE YOU COPY THE CORRECT ROM TO THE REPO ROOT AND HAVE THE CORRECT NAME.


BUILD OPTIONS
Build optionDefaultPossible valuesDescription
AUDIO_APISDL2SDL2Select audio backend. There's only one right now.
BETTERCAMERA00, 1If 1, build with analog camera support (uses Puppycam).
CHEATS_ACTIONS10, 1Enable cheats
COMMAND_LINE_OPTIONS10, 1Enable Command Line Options
CONTROLLER_APISDL2SDL2Specify list of controller backends to use. There's only one right now.
DEBUG00, 1If 1, build with debug symbols and default optimization level. Otherwise build with -O2. 1 simple debug compile, 2 max debug compile
DISCORDRPC00, 1If 1, enable Discord Rich Presence support. Only works on x86_64.
DISCORDRPC00, 1Enable Discord Rich Presence
EXT_DEBUG_MENU00, 1Menú para opciones de depuración simples
EXT_OPTIONS_MENU10, 1If 1, enable Options menu. Accessed from the Pause menu by pressing R.
EXTENDED_BOUNDS00, 1Enable extended bounds
EXTERNAL_DATA00, 1If 1, load textures and soundbanks from external files. Allows you to use texture packs. The default data is copied to a res folder next to the produced executable. (En Switch va en la carpeta raíz), para PC no lo genera
GODDARD_MFACE10, 1Enable Goddard (Mario Face)
HIGH_FPS_PC00, 1Enable 60 fps interpolation
MOUSE_ACTIONS00, 1Soporte para el ratón para versiones de escritorio, solo funciona en modos SDL, se está trabajando aún en el modo DirectX.
NODRAWINGDISTANCE00, 1If 1, build with disabled draw distance (every object is active at all times). May affect gameplay.
OSX_BUILD00, 1If 1, build for OSX.
PORT_MOP_OBJS00, 1Parche de más objetos creado por Kaze
PORT_MOP_OBJS00, 1Kaze MOP Objects Port, disabled by default
QOL_FEATURES00, 1Mejora de Características
QOL_FIXES00, 1Mejoras de Calidad de vida
QOL_REDONE10, 1Quality of life redone files
RENDER_APIGLGL, GL_LEGACY, D3D11, D3D12Select rendering backend to use. GL corresponds to OpenGL 2.1 (gfx_opengl.c), GL_LEGACY corresponds to OpenGL 1.3 (gfx_opengl_legacy.c). Direct3D backends will also force WINDOW_API to DXGI.
RM2C00, 1Accept RM2C level folder output https://github.com/AloXado320/rom-manager-2-c
RUMBLE_FEEDBACK10, 1Enable rumble functions (Originally in Shindou)
TARGET_BITS32, 64,TARGET_BITS=n appends some compiler flags for an n-bit build. If the value is empty, the option does nothing, assuming your native toolchain will set everything up by itself. Use this only if you're having trouble otherwise.
TARGET_RPI00, 1If 1, select optimal settings for Raspberry PI hardware. See the main article (https://github.com/sm64pc/sm64pc/wiki/Helper-compiling-script-for-Raspberry-Pi) on that.
TARGET_WEB00, 1If 1, build Emscripten version. See the main article (https://github.com/sm64pc/sm64pc/wiki/Compiling-for-the-web) on that.
TEXTSAVES00, 1If 1, use INI-based save format instead of binary EEPROM dumps. Experimental.
TEXTURE_FIX00, 1If 1, enable various texture-related bugfixes (e.g. fixes the smoke texture).
VANILLA_CHECKS10, 1Enable level vanilla checks
VERSIONusus, eu, jp, shWhich ROM to use. The selected ROM has to be in the repo folder with the name baserom.$VERSION.z64. sh is currently broken.
WINDOW_APISDL2SDL2, DXGISelect windowing backend. GL renderers force SDL2 and D3D renderers force DXGI for now, so you don't need to specify this.
WINDOWS_BUILD0, 1If 1, build for Windows. Usually set automatically if building on Windows.
WINDOWS_CONSOLE00, 1If 1, append -mconsole to Windows CFLAGS, making a console window appear while the game is running. Can be useful for debugging purposes.

Use nsp-forwarder.n8.io to create a customized Forwarder. Now supporting Atmosphère > 1.8.0


Troubleshooting
  • If you get the error gcc: command not found or make: gcc: No such file or directory you did not install all needed packages or run the wrong Shell, be sure of running «MINGW32» or «MINGW64» and what that is pointed on the prompt in purple.
  • If the ROM is missing or wrong format/version you get the error Failed to open baserom.us.z64! Verify the correct ROM at the c:\msys64\home\<username>\sm64ex-alo folder.
  • If you get the error make: *** No targets specified and no makefile found. Stop. You are on the wrong folder the last make command should be run from c:\msys64\home\<username>\sm64ex folder.
  • Be sure of get the responses Target: i686-w64-mingw32 or Target: x86_64-w64-mingw32 when you run the command gcc -v if else other is shown on screen you install the wrong gcc package or you are on the «MSYS» shell, remember the process should be run on «MINGW32» or «MINGW64» shells.
 
Last edited by impeeza,

AloXado320

New Member
Newbie
Joined
Sep 3, 2016
Messages
4
Trophies
0
Age
25
XP
171
Country
Peru
I'm the author of sm64ex-alo, thanks for these instructions, I'm just realizing now about these.

I would like to update the README with proper instructions on how to build each target instead of using outdated ones I linked from since they weren't explained properly as you said.

I would like to add additional input support to the Switch such as touch support for example.

We could discuss about the Switch port on Discord if you want to (username is aloxado320, same as here)
 

impeeza

¡Kabito!
OP
Member
Joined
Apr 5, 2011
Messages
8,457
Trophies
4
Age
46
Location
At my chair.
XP
30,057
Country
Colombia
I'm the author of sm64ex-alo, thanks for these instructions, I'm just realizing now about these.

I would like to update the README with proper instructions on how to build each target instead of using outdated ones I linked from since they weren't explained properly as you said.

I would like to add additional input support to the Switch such as touch support for example.

We could discuss about the Switch port on Discord if you want to (username is aloxado320, same as here)
wow, thanks a lot for taking the time of reading the guide, the instructions no well explained are inherited from a very old SM64 repository.
If I can help on anything count on me, I don't use Discord so often but if I can help, I will use a little more.
My discord user is Impeezag

Had you time to review the PR67 of the https://github.com/AloUltraExt/sm64ex-alo/ repository?
 

Brawl345

Well-Known Member
Member
Joined
Jan 14, 2012
Messages
786
Trophies
2
Website
wiidatabase.de
XP
3,011
Country
Germany
the controller option is missing
You can't configure the controls on console ports with this version because it's explicitly disabled in the code (not implemented I guess). What I did was editing the
src/pc/controller/controller_switch.c file: https://github.com/AloUltraExt/sm64...src/pc/controller/controller_switch.c#L65-L81 and editing the values there.

For example for the official NSO N64 controller you must only change:

C:
if(pressed & HidNpadButton_B)             pad->button |= A_BUTTON;
to
C:
if(pressed & HidNpadButton_B)             pad->button |= B_BUTTON;

and then make clean & recompile
 
  • Like
Reactions: JAGSTAX

JAGSTAX

Member
Newcomer
Joined
Oct 18, 2024
Messages
11
Trophies
0
Age
36
XP
45
Country
Australia
You can't configure the controls on console ports with this version because it's explicitly disabled in the code (not implemented I guess). What I did was editing the
src/pc/controller/controller_switch.c file: https://github.com/AloUltraExt/sm64...src/pc/controller/controller_switch.c#L65-L81 and editing the values there.

For example for the official NSO N64 controller you must only change:

C:
if(pressed & HidNpadButton_B)             pad->button |= A_BUTTON;
to
C:
if(pressed & HidNpadButton_B)             pad->button |= B_BUTTON;

and then make clean & recompile
Thank you so much for that! Perfect. Have you found anyway to trigger the Rumble for the N64 controller? This is great and thanks again! You made my day.
 
Last edited by JAGSTAX,
  • Love
Reactions: impeeza

AloXado320

New Member
Newbie
Joined
Sep 3, 2016
Messages
4
Trophies
0
Age
25
XP
171
Country
Peru
Thank you so much for that! Perfect. Have you found anyway to trigger the Rumble for the N64 controller? This is great and thanks again! You made my day.
I could add proper N64 controller support, vibration doesn't work there since it only set on general controllers.
Post automatically merged:

You can't configure the controls on console ports with this version because it's explicitly disabled in the code (not implemented I guess). What I did was editing the
...

For example for the official NSO N64 controller you must only change:

C:
if(pressed & HidNpadButton_B)             pad->button |= A_BUTTON;
to
C:
if(pressed & HidNpadButton_B)             pad->button |= B_BUTTON;

and then make clean & recompile
I would like to add proper controller bindings without them clashing the options menu themselves (so you don't get stuck unless you delete config) to have your own bindings, compared to PC, naming buttons would be way easier there.
 

JAGSTAX

Member
Newcomer
Joined
Oct 18, 2024
Messages
11
Trophies
0
Age
36
XP
45
Country
Australia
I could add proper N64 controller support, vibration doesn't work there since it only set on general controllers.
Post automatically merged:


I would like to add proper controller bindings without them clashing the options menu themselves (so you don't get stuck unless you delete config) to have your own bindings, compared to PC, naming buttons would be way easier there.
WOW That would awesome! I'd be the first to check that out for sure!
 

[Truth]

Well-Known Member
Member
Joined
Mar 21, 2006
Messages
1,085
Trophies
1
Location
Mushroom Kingdom
XP
2,688
Country
Germany
Is there a list of what exactly QOL_FIXES/FEATURES does? I'd like to know if that's worth enabling, as they're disabled by default.
QOL_REDONE probably replaces them and is on by default.
Post automatically merged:

Thank you for the really good guide @impeeza :wub:

Worked perfectly with the US version.

With the EU version, which I want to use, i get the following error:
Code:
Compiling: src/audio/port_eu.c -> build/eu_nx/src/audio/port_eu.o
src/audio/port_eu.c: In function 'create_next_audio_buffer':
src/audio/port_eu.c:148:9: error: implicit declaration of function 'audio_reset_session' [-Wimplicit-function-declaration]
  148 |         audio_reset_session();
      |         ^~~~~~~~~~~~~~~~~~~
src/audio/port_eu.c:152:23: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  152 |         func_802ad7ec((u32) msg);
      |                       ^
src/audio/port_eu.c: In function 'func_802ad7a0':
src/audio/port_eu.c:266:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  266 |             (OSMesg)(u32)((D_EU_80302014 & 0xff) << 8 | (D_EU_80302010 & 0xff)),
      |             ^
make: *** [Makefile:1641: build/eu_nx/src/audio/port_eu.o] Error 1

I opened an issue on GitHub.
 
Last edited by [Truth],
  • Like
Reactions: impeeza

AloXado320

New Member
Newbie
Joined
Sep 3, 2016
Messages
4
Trophies
0
Age
25
XP
171
Country
Peru
QOL_REDONE probably replaces them and is on by default.
Post automatically merged:

Thank you for the really good guide @impeeza :wub:

Worked perfectly with the US version.

With the EU version, which I want to use, i get the following error:
Code:
Compiling: src/audio/port_eu.c -> build/eu_nx/src/audio/port_eu.o
src/audio/port_eu.c: In function 'create_next_audio_buffer':
src/audio/port_eu.c:148:9: error: implicit declaration of function 'audio_reset_session' [-Wimplicit-function-declaration]
  148 |         audio_reset_session();
      |         ^~~~~~~~~~~~~~~~~~~
src/audio/port_eu.c:152:23: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  152 |         func_802ad7ec((u32) msg);
      |                       ^
src/audio/port_eu.c: In function 'func_802ad7a0':
src/audio/port_eu.c:266:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  266 |             (OSMesg)(u32)((D_EU_80302014 & 0xff) << 8 | (D_EU_80302010 & 0xff)),
      |             ^
make: *** [Makefile:1641: build/eu_nx/src/audio/port_eu.o] Error 1

I opened an issue on GitHub.
Fixed, a file was missing a header include, it should build now.
 
  • Love
Reactions: [Truth] and impeeza

BoKKeR

New Member
Newbie
Joined
Mar 30, 2018
Messages
3
Trophies
0
Age
30
XP
83
Country
Sweden
Ran into the following problem compiling on ubuntu 64bit


Code:
make TARGET_SWITCH=1 BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 HIGH_FPS_PC=1
extracting levels/ending/cake.png
cake /tmp/assetebccyevn levels/ending/cake.png
Traceback (most recent call last):
  File "/home/bokker/Desktop/supermario64-build/sm64ex-alo/extract_assets.py", line 313, in <module>
    main() if __name__ == "__main__" else None
    ^^^^^^
  File "/home/bokker/Desktop/supermario64-build/sm64ex-alo/extract_assets.py", line 255, in main
    subprocess.run(
  File "/usr/lib/python3.12/subprocess.py", line 548, in run
    with Popen(*popenargs, **kwargs) as process:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: './tools/skyconv'
Makefile:441: *** Failed to extract assets from US ROM.  Stop.

The problem seems to be that the skytool is for arm64?

Code:
file ./tools/skyconv
./tools/skyconv: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, strippe
 

impeeza

¡Kabito!
OP
Member
Joined
Apr 5, 2011
Messages
8,457
Trophies
4
Age
46
Location
At my chair.
XP
30,057
Country
Colombia
Ran into the following problem compiling on ubuntu 64bit


Code:
make TARGET_SWITCH=1 BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 HIGH_FPS_PC=1
extracting levels/ending/cake.png
cake /tmp/assetebccyevn levels/ending/cake.png
Traceback (most recent call last):
  File "/home/bokker/Desktop/supermario64-build/sm64ex-alo/extract_assets.py", line 313, in <module>
    main() if __name__ == "__main__" else None
    ^^^^^^
  File "/home/bokker/Desktop/supermario64-build/sm64ex-alo/extract_assets.py", line 255, in main
    subprocess.run(
  File "/usr/lib/python3.12/subprocess.py", line 548, in run
    with Popen(*popenargs, **kwargs) as process:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: './tools/skyconv'
Makefile:441: *** Failed to extract assets from US ROM.  Stop.

The problem seems to be that the skytool is for arm64?

Code:
file ./tools/skyconv
./tools/skyconv: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, strippe
Hello there, I just tried MINGW64's MSYS2 and worked fine:

1736013378548.png


Trying on a Ubuntu Virtual Machine and worked just fine:
1736014548298.png

For Ubuntu I had to install DevKitPro (https://devkitpro.org/wiki/devkitPro_pacman)

Then install the packages:

Bash:
sudo apt install git make python3 subversion unzip autoconf automake libtool pkg-config autoconf cmake

pacman -Syu --needed --noconfirm devkit-env switch-dev devkitA64 dkp-toolchain-vars libnx switch-tools switch-mesa switch-libdrm_nouveau switch-sdl2

Then
Bash:
cd ~
rm -rf sm64ex-alo
git clone --recursive https://github.com/AloUltraExt/sm64ex-alo
cd ~/sm64ex-alo

YOU MUST TO COPY YOUR LEGALLY AQUIRED ROM WITH MD5: 20b854b239203baf6c961b850a4a51a2 TO: ~/sm64ex-alo/baserom.us.z64

Then you can build the NRO:

Bash:
make TARGET_SWITCH=1 BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 EXT_OPTIONS_MENU=1 QOL_FIXES=1 QOL_FEATURES=1 MOUSE_ACTIONS=1 EXT_DEBUG_MENU=1


BE SURE YOU COPY THE CORRECT ROM TO THE REPO ROOT AND HAVE THE CORRECT NAME.

for me the tool work fine:

1736014900479.png
 

JAGSTAX

Member
Newcomer
Joined
Oct 18, 2024
Messages
11
Trophies
0
Age
36
XP
45
Country
Australia
Thank you impeeza for this awsome guide.

What HD texture pack do you recommend using for this version? I have tried the RENDER96 from the following repo but it doesn't work well.


Use this pack I made up for the build. RENDER96 Downscaled Pack + 3D All Stars updated textures mixed in. Perfect. Also has cleaned up Sound pack. I was one of the DEVs that helped build R96 Texture packs a few years ago.

https://www.mediafire.com/file/absbmylzbc0f4fk/sm64ex_res.7z/file
sm64 (4).jpg
sm64 (2).jpg
sm64 (5).jpgsm64 (11).jpgsm64 (12).jpgsm64 (13).jpgsm64 (6).jpgsm64 (3).jpg
 

Attachments

  • sm64 (14).jpg
    sm64 (14).jpg
    164.4 KB · Views: 6
  • sm64 (15).jpg
    sm64 (15).jpg
    245.2 KB · Views: 5
Last edited by JAGSTAX,
  • Like
Reactions: ROMKILLA

DolphinCube

Cubin' Around
Member
Joined
Oct 4, 2017
Messages
171
Trophies
1
XP
829
Country
United States
Hello there, I just tried MINGW64's MSYS2 and worked fine:

View attachment 479052

Trying on a Ubuntu Virtual Machine and worked just fine:
View attachment 479055
For Ubuntu I had to install DevKitPro (https://devkitpro.org/wiki/devkitPro_pacman)

Then install the packages:

Bash:
sudo apt install git make python3 subversion unzip autoconf automake libtool pkg-config autoconf cmake

pacman -Syu --needed --noconfirm devkit-env switch-dev devkitA64 dkp-toolchain-vars libnx switch-tools switch-mesa switch-libdrm_nouveau switch-sdl2

Then
Bash:
cd ~
rm -rf sm64ex-alo
git clone --recursive https://github.com/AloUltraExt/sm64ex-alo
cd ~/sm64ex-alo

YOU MUST TO COPY YOUR LEGALLY AQUIRED ROM WITH MD5: 20b854b239203baf6c961b850a4a51a2 TO: ~/sm64ex-alo/baserom.us.z64

Then you can build the NRO:

Bash:
make TARGET_SWITCH=1 BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 EXT_OPTIONS_MENU=1 QOL_FIXES=1 QOL_FEATURES=1 MOUSE_ACTIONS=1 EXT_DEBUG_MENU=1


BE SURE YOU COPY THE CORRECT ROM TO THE REPO ROOT AND HAVE THE CORRECT NAME.

for me the tool work fine:

View attachment 479056
I tried compiling for switch with devkitpro using your instructions and I got this error. Do you know a fix?

1737843356416.png


UPDATE: in sm64ex-alo/tools/makefile if you change line 49. Which is
CSS:
  armips_LDFLAGS += -municode
and just replace everything with
CSS:
  armips_LDFLAGS += -Wunicode
everything gets fixed and it compiles. Already made a ticket on the github about it. But yeah. It's just a typo
 
Last edited by DolphinCube,
  • Love
Reactions: impeeza

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    BigOnYa @ BigOnYa: lol, 6.1" screen, and only $999