Homebrew  Updated

[Beta] Super Metroid Switch Port

gqPkeCR.png


Hey guys! I already released this but not publicly, I made a switch port of the really cool pc port of Super Metroid, its still on an early state but its fully playable, compared to my old zelda 3 port, this comes with some cool features like support of native recording and in the future im gonna try to add even more stuff!

KuWi.jpg
CYxw.jpg

IMG_3018.jpg
yt96.jpg
icon.png



7hHdmsD.png

Requirements
  • You require a rom of Super Metroid ( It needs to be called sm.smc )
  • Latest atmosphere ( You can get it from here )
  • A device with Windows / Linux or MacOS to build the rom with DevKitPro
  • Git

Building
  • Clone the super metroid repository from here, make sure to specify the --recursive argument
  • Download and install DevKitPro from here
  • If using windows, make sure to prefix all the pacman commands with dkp-
  • On the terminal, switch to sm/src/platform/switch and type make
  • When the build finish, transfer the .ini, nro and your sm.smc rom to your switch using usb or ftp
  • Enjoy <3!
Commands

Bash:
git clone --recursive https://github.com/snesrev/sm
(dkp)-pacman -S git switch-dev switch-sdl2 switch-tools
cd sm/src/platform/switch
make -j$(nproc)

Supported Versions
  • Super Metroid - da957f0d63d14cb441d215462904c4fa8519c613

HoV8irR.png

Missing Stuff
  • Rumble support
  • A settings menu using imgui or any other library
  • Saves tied to the selected user

zwcEcEO.png

PD: If you like my work, please support me here, im gonna try to keep working on this incredible ports <3
 
Last edited by Lywx,

Badablek

Well-Known Member
Member
Joined
Jan 23, 2006
Messages
517
Trophies
1
Age
43
XP
2,919
Country
France
@Lywx first, thanks for the switch port

I'm using the pre-compiled binary posted by zerofalcon (thanks to him too), and as I had some time, I was able to play it nearly 'til the end. Nearly, because it crashes every time I'm fighting Mother Brain (second battle)


So I tried to compile directly from the sources, in order to use the best updated build. It compiles, with a lot of warnings, it runs...but it crashes if I use a door.
  • If I launch a new game, I can complete the space colony (no crash, no glitch, no graphical issues), but on Zebes, I have graphical garbage (no HUD, duplicate ship), the counter (top left) appears and stays at 299, and the first door I cross makes it crash
  • If I launch a save (Samus's ship), I have graphical garbage (no HUD, duplicate ship), the counter (top left) appears and stays at 299, and the first door I cross in Zebes makes it crash

Is there any chance you can provide a pre-compiled binary from the latest sources ? Or tell me if there is some top secret command-line to compile it correctly ?

I'm on Windows 11, devkitpro, all libraries updated (see spoiler below), I succesfully compile Atmosphere every time a new version is coming. I compile a lot of Switch stuff without a problem. SM is the only one I'm not able to compile correctly :(

E:\devkitPro\homebrews\switch\sm\src\platform\switch>pacman -Syu
:: Synchronizing package databases...
mingw32 is up to date
mingw64 is up to date
ucrt64 is up to date
clang64 is up to date
msys is up to date
dkp-libs is up to date
dkp-windows is up to date
:: Starting core system upgrade...
there is nothing to do
:: Starting full system upgrade...
there is nothing to do

E:\devkitPro\homebrews\switch\sm\src\platform\switch>pacman -Q
3ds-cmake 1.5.0-1
3ds-examples 20220129-1
3ds-pkg-config 0.28-5
3dslink 0.6.1-1
3dstools 1.3.0-1
armv4t-pkg-config 0.28-1
autoconf-wrapper 20221207-1
autoconf2.13 2.13-6
autoconf2.69 2.69-3
autoconf2.71 2.71-2
automake-wrapper 20221207-1
automake1.10 1.10.3-4
automake1.11 1.11.6-6
automake1.12 1.12.6-6
automake1.13 1.13.4-7
automake1.14 1.14.1-6
automake1.15 1.15.1-4
automake1.16 1.16.5-1
automake1.6 1.6.3-3
automake1.7 1.7.9-3
automake1.8 1.8.5-4
automake1.9 1.9.6-3
base 2022.06-1
base-devel 2022.12-2
bash 5.2.015-1
bash-completion 2.11-3
binutils 2.40-1
bison 3.8.2-4
brotli 1.0.9-8
bsdtar 3.6.2-3
bzip2 1.0.8-4
ca-certificates 20230311-1
citro2d 1.6.0-1
citro3d 1.7.0-1
coreutils 8.32-5
curl 8.0.1-1
dash 0.5.12-1
db 5.3.28-4
default-arm7 0.7.4-7
deko3d 0.4.0-1
devkitA64 r21-3
devkitA64-gdb 11.2-1
devkitARM r60-9
devkitARM-gdb 13.1-1
devkitPPC r42.2-1
devkitPPC-gdb 7.7.1-1
devkita64-cmake 1.1.2-1
devkita64-rules 1.0.1-2
devkitarm-cmake 1.2.1-1
devkitarm-crtls 1.2.1-1
devkitarm-rules 1.3.0-1
devkitppc-cmake 1.1.3-1
devkitppc-rules 1.1.1-1
devkitpro-keyring 20180316-1
diffstat 1.65-1
diffutils 3.9-1
dkp-cmake-common-utils 1.5.1-1
dos2unix 7.4.4-1
dstools 1.3.1-1
dswifi 0.4.2-1
file 5.44-5
filesystem 2023.02.07-1
findutils 4.9.0-3
flex 2.6.4-3
gamecube-examples 20210525-1
gamecube-pkg-config 0.28-5
gamecube-tools 1.0.4-1
gawk 5.2.1-2
gba-examples 20190122-1
gba-tools 1.2.0-2
gcc-libs 11.3.0-3
gdbm 1.23-1
general-tools 1.2.0-3
getent 2.18.90-4
gettext 0.21-2
git 2.40.1-1
glib2 2.76.1-1
gmp 6.2.1-2
gnupg 2.2.41-1
gperf 3.1-5
grep 1~3.0-6
grit 0.9.2-1
groff 1.22.4-4
gzip 1.12-2
hactool 1.4.0-3
heimdal 7.8.0-3
heimdal-libs 7.8.0-3
icu 72.1-1
inetutils 2.4-1
info 7.0.3-1
less 629-1
libargp 20110921-4
libasprintf 0.21-2
libassuan 2.5.5-2
libbz2 1.0.8-4
libcbor 0.10.2-1
libcrypt 2.1-4
libctru 2.2.1-1
libcurl 8.0.1-1
libdb 5.3.28-4
libedit 20221030_3.1-1
libexpat 2.5.0-1
libfat-gba 1.1.5-1
libfat-nds 1.1.5-1
libfat-ogc 1.2.0-1
libffi 3.4.4-1
libfido2 1.13.0-1
libfilesystem 0.9.14-2
libgba 0.5.2-2
libgcrypt 1.10.2-1
libgdbm 1.23-1
libgettextpo 0.21-2
libgnutls 3.8.0-1
libgpg-error 1.47-1
libgpgme 1.20.0-1
libhogweed 3.8.1-1
libiconv 1.17-1
libidn2 2.3.4-2
libintl 0.21-2
libksba 1.6.3-1
libltdl 2.4.7-3
liblz4 1.9.4-1
liblzma 5.4.2-1
libmetalink 0.1.3-3
libnds 1.8.2-1
libnettle 3.8.1-1
libnghttp2 1.52.0-1
libnpth 1.6-1
libnx 4.3.0-1
libogc 2.4.0-1
libopenssl 3.1.0-2
libp11-kit 0.24.1-4
libpcre 8.45-3
libpcre2_8 10.42-1
libpsl 0.21.2-1
libreadline 8.2.001-3
libsqlite 3.41.2-3
libssh2 1.10.0-3
libtasn1 4.19.0-1
libtonc 1.4.3-3
libtool 2.4.7-3
libunistring 1.1-2
libutil-linux 2.35.2-3
libxml2 2.10.4-1
libxslt 1.1.37-1
libzstd 1.5.5-1
lz4 1.9.4-1
m4 1.4.19-2
make 4.4.1-1
maxmod-gba 1.0.15-1
maxmod-nds 1.0.15-1
mingw-w64-x86_64-SDL2 2.26.5-1
mingw-w64-x86_64-SDL2_net 2.2.0-1
mingw-w64-x86_64-a52dec 0.7.4-4
mingw-w64-x86_64-binutils 2.40-2
mingw-w64-x86_64-brotli 1.0.9-5
mingw-w64-x86_64-bzip2 1.0.8-2
mingw-w64-x86_64-c-ares 1.19.0-1
mingw-w64-x86_64-ca-certificates 20230311-1
mingw-w64-x86_64-cairo 1.17.8-1
mingw-w64-x86_64-ccache 4.8-1
mingw-w64-x86_64-crt-git 10.0.0.r258.g530c58e17-2
mingw-w64-x86_64-curl-winssl 8.0.1-1
mingw-w64-x86_64-expat 2.5.0-1
mingw-w64-x86_64-faad2 2.10.1-1
mingw-w64-x86_64-flac 1.4.2-1
mingw-w64-x86_64-fluidsynth 2.3.2-1
mingw-w64-x86_64-fontconfig 2.14.2-1
mingw-w64-x86_64-freetype 2.13.0-1
mingw-w64-x86_64-fribidi 1.0.12-1
mingw-w64-x86_64-gcc 12.2.0-11
mingw-w64-x86_64-gcc-ada 12.2.0-11
mingw-w64-x86_64-gcc-fortran 12.2.0-11
mingw-w64-x86_64-gcc-libgfortran 12.2.0-11
mingw-w64-x86_64-gcc-libs 12.2.0-11
mingw-w64-x86_64-gcc-objc 12.2.0-11
mingw-w64-x86_64-gdb 13.1-4
mingw-w64-x86_64-gdb-multiarch 13.1-4
mingw-w64-x86_64-gettext 0.21.1-1
mingw-w64-x86_64-giflib 5.2.1-3
mingw-w64-x86_64-glib2 2.76.1-1
mingw-w64-x86_64-gmp 6.2.1-5
mingw-w64-x86_64-graphite2 1.3.14-2
mingw-w64-x86_64-harfbuzz 7.1.0-1
mingw-w64-x86_64-headers-git 10.0.0.r258.g530c58e17-1
mingw-w64-x86_64-hiredis 1.1.0-2
mingw-w64-x86_64-isl 0.26-1
mingw-w64-x86_64-jbigkit 2.1-4
mingw-w64-x86_64-lame 3.100-3
mingw-w64-x86_64-lerc 4.0.0-1
mingw-w64-x86_64-libdeflate 1.18-1
mingw-w64-x86_64-libffi 3.4.4-1
mingw-w64-x86_64-libgccjit 12.2.0-11
mingw-w64-x86_64-libgcrypt 1.10.2-1
mingw-w64-x86_64-libgpg-error 1.47-1
mingw-w64-x86_64-libiconv 1.17-3
mingw-w64-x86_64-libidn2 2.3.4-1
mingw-w64-x86_64-libjpeg-turbo 2.1.5.1-1
mingw-w64-x86_64-libmad 0.15.1b-4
mingw-w64-x86_64-libmangle-git 10.0.0.r258.g530c58e17-1
mingw-w64-x86_64-libmpeg2-git r1108.946bf4b-1
mingw-w64-x86_64-libogg 1.3.5-1
mingw-w64-x86_64-libpng 1.6.39-1
mingw-w64-x86_64-libpsl 0.21.2-4
mingw-w64-x86_64-libsecret 0.20.5-2
mingw-w64-x86_64-libsndfile 1.2.0-2
mingw-w64-x86_64-libssh2-wincng 1.10.0-2
mingw-w64-x86_64-libsystre 1.0.1-4
mingw-w64-x86_64-libtasn1 4.19.0-1
mingw-w64-x86_64-libtheora 1.1.1-7
mingw-w64-x86_64-libtiff 4.5.0-1
mingw-w64-x86_64-libtre-git r128.6fb7206-2
mingw-w64-x86_64-libunistring 1.1-1
mingw-w64-x86_64-libvorbis 1.3.7-1
mingw-w64-x86_64-libwebp 1.3.0-2
mingw-w64-x86_64-libwinpthread-git 10.0.0.r258.g530c58e17-1
mingw-w64-x86_64-libxml2 2.10.4-1
mingw-w64-x86_64-lld 16.0.2-1
mingw-w64-x86_64-llvm 16.0.2-1
mingw-w64-x86_64-lzo2 2.10-2
mingw-w64-x86_64-make 4.4-2
mingw-w64-x86_64-mpc 1.3.1-1
mingw-w64-x86_64-mpdecimal 2.5.1-1
mingw-w64-x86_64-mpfr 4.2.0.p4-1
mingw-w64-x86_64-mpg123 1.31.3-1
mingw-w64-x86_64-nasm 2.16.01-1
mingw-w64-x86_64-ncurses 6.4.20230211-1
mingw-w64-x86_64-ntldd-git r19.7fb9365-2
mingw-w64-x86_64-openssl 3.1.0-1
mingw-w64-x86_64-opus 1.4-2
mingw-w64-x86_64-p11-kit 0.24.1-5
mingw-w64-x86_64-pcre2 10.42-1
mingw-w64-x86_64-pixman 0.42.2-1
mingw-w64-x86_64-pkgconf 1~1.8.0-2
mingw-w64-x86_64-portaudio 1~19.7.0-4
mingw-w64-x86_64-python 3.10.11-1
mingw-w64-x86_64-readline 8.2.001-6
mingw-w64-x86_64-sqlite3 3.41.2-1
mingw-w64-x86_64-tcl 8.6.12-2
mingw-w64-x86_64-termcap 1.3.1-6
mingw-w64-x86_64-tk 8.6.12-1
mingw-w64-x86_64-tools-git 10.0.0.r258.g530c58e17-1
mingw-w64-x86_64-tzdata 2023c-1
mingw-w64-x86_64-vulkan-headers 1.3.248-1
mingw-w64-x86_64-vulkan-loader 1.3.248-1
mingw-w64-x86_64-windows-default-manifest 6.4-4
mingw-w64-x86_64-wineditline 2.205-3
mingw-w64-x86_64-winpthreads-git 10.0.0.r258.g530c58e17-1
mingw-w64-x86_64-winsparkle 0.7.0-5
mingw-w64-x86_64-winstorecompat-git 10.0.0.r258.g530c58e17-1
mingw-w64-x86_64-wxwidgets3.0-msw-libs 3.0.5.1-16
mingw-w64-x86_64-wxwidgets3.2-common-libs 3.2.2.1-2
mingw-w64-x86_64-wxwidgets3.2-msw-libs 3.2.2.1-2
mingw-w64-x86_64-xxhash 0.8.1-2
mingw-w64-x86_64-xz 5.4.2-1
mingw-w64-x86_64-zlib 1.2.13-3
mingw-w64-x86_64-zstd 1.5.5-1
mintty 1~3.6.4-1
mmutil 1.10.1-1
mpfr 4.2.0.p4-1
msys2-keyring 1~20230316-1
msys2-launcher 1.5-1
msys2-runtime 3.4.6-2
nano 7.2-1
ncurses 6.4-1
nds-examples 20200727-1
nds-pkg-config 0.28-4
ndstool 2.2.0-2
nettle 3.8.1-1
openssh 9.3p1-1
openssl 3.1.0-2
p11-kit 0.24.1-4
pacman 6.0.2-4
pacman-contrib 1.9.0-1
pacman-mirrors 20221016-1
patch 2.7.6-2
perl 5.36.0-1
perl-Authen-SASL 2.16-3
perl-Clone 0.46-1
perl-Convert-BinHex 1.125-2
perl-Encode-Locale 1.05-2
perl-Error 0.17029-1
perl-File-Listing 6.15-1
perl-HTML-Parser 3.81-1
perl-HTML-Tagset 3.20-3
perl-HTTP-Cookies 6.10-2
perl-HTTP-Daemon 6.16-1
perl-HTTP-Date 6.05-1
perl-HTTP-Message 6.44-1
perl-HTTP-Negotiate 6.01-3
perl-IO-HTML 1.004-2
perl-IO-Socket-SSL 2.081-1
perl-IO-Stringy 2.113-1
perl-LWP-MediaTypes 6.04-1
perl-MIME-tools 5.510-1
perl-MailTools 2.21-1
perl-Net-HTTP 6.22-1
perl-Net-SMTP-SSL 1.04-2
perl-Net-SSLeay 1.92-4
perl-TermReadKey 2.38-5
perl-TimeDate 2.33-2
perl-Try-Tiny 0.31-1
perl-URI 5.17-2
perl-WWW-RobotRules 6.02-2
perl-libwww 6.67-1
picasso 2.7.1-2
pinentry 1.2.1-1
pkgconf 1.9.4-1
ppc-pkg-config 0.28-5
rebase 4.5.0-4
sed 4.9-1
switch-box2d 2.4.1-1
switch-bulletphysics 2.88-3
switch-bzip2 1.0.8-1
switch-cmake 1.5.0-1
switch-curl 7.69.1-5
switch-enet 1.3.17-1
switch-examples 20201219-1
switch-ffmpeg 4.3.1-1
switch-flac 1.3.2-4
switch-freetype 2.13.0-1
switch-giflib 5.1.4-2
switch-glad 0.1.27-1
switch-glfw 3.3.4-2
switch-glm 0.9.9.7-2
switch-harfbuzz 7.1.0-1
switch-jansson 2.11-2
switch-libass 0.14.0-1
switch-libconfig 1.7.2-3
switch-libdrm_nouveau 1.0.1-2
switch-libexpat 2.2.5-2
switch-libfribidi 1.0.12-1
switch-libgd 2.2.5-2
switch-libjpeg-turbo 2.1.2-2
switch-libjson-c 0.16-1
switch-liblzma 5.2.4-2
switch-liblzo2 2.10-2
switch-libmad 0.15.1b-3
switch-libmikmod 3.3.11.1-2
switch-libmodplug 0.8.9.0-2
switch-libmpv 0.33.0-1
switch-libogg 1.3.4-2
switch-libopus 1.3-2
switch-libpcre2 10.33-1
switch-libpng 1.6.39-2
switch-libsamplerate 0.1.9-2
switch-libsodium 1.0.18-1
switch-libssh2 1.10.0-1
switch-libtheora 1.2.0alpha1-1
switch-libtimidity 0.2.6-2
switch-libvorbis 1.3.7-1
switch-libvorbisidec 1.2.1-2
switch-libvpx 1.8.0-2
switch-libwebp 1.0.2-2
switch-libxml2 2.9.8-3
switch-libzstd 1.4.4-1
switch-lz4 1.9.3-1
switch-mbedtls 2.16.6-3
switch-mesa 20.1.0-4
switch-miniupnpc 2.1.20190824-1
switch-mpg123 1.25.10-4
switch-ode 0.16.1-1
switch-oniguruma 6.9.2-2
switch-openal-soft 1.21.1-4
switch-opusfile 0.10-3
switch-physfs 3.2.0-1
switch-pkg-config 0.28-4
switch-sdl2 2.0.14-1
switch-sdl2_gfx 1.0.4-2
switch-sdl2_image 2.0.4-1
switch-sdl2_mixer 2.0.4-2
switch-sdl2_net 2.0.1-3
switch-sdl2_ttf 2.0.15-1
switch-smpeg2 2.0.0-1
switch-tinyxml2 6.0.0-2
switch-tools 1.12.0-1
switch-wslay 1.1.0-1
switch-zlib 1.2.13-1
switch-zziplib 0.13.69-3
tar 1.34-3
tcl 8.6.12-3
tex3ds 2.3.0-1
texinfo 7.0.3-1
texinfo-tex 7.0.3-1
tftp-hpa 5.2-4
time 1.9-3
tzcode 2023c-1
uam 1.1.0-2
util-linux 2.35.2-3
wget 1.21.3-2
which 2.21-4
wii-examples 20210525-1
wii-pkg-config 0.28-5
wiiload 0.5.2-1
xz 5.4.2-1
zip 3.0-3
zlib 1.2.13-1
zstd 1.5.5-1



When compiling SM :
...
linking sm.elf
built ... sm.nacp
built ... sm.nro
 
Last edited by Badablek,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Psionic Roshambo @ Psionic Roshambo: I did use a bot for Diablo III though but no ban there lol