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,923
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.
  • K3Nv2 @ K3Nv2:
    It must be the 1st already
  • BakerMan @ BakerMan:
    1st of what?
  • BakerMan @ BakerMan:
    may?
  • K3Nv2 @ K3Nv2:
    Oh yeah it's in September
  • Xdqwerty @ Xdqwerty:
    @BakerMan, yea i think its different
  • BakerMan @ BakerMan:
    ok, because here it's in september, right before the fuckin school year starts
  • Xdqwerty @ Xdqwerty:
    good night
  • BakerMan @ BakerMan:
    as to you
  • K3Nv2 @ K3Nv2:
    How do you know if the night will be good when you're asleep
  • BakerMan @ BakerMan:
    because i didn't say i was asleep
  • BakerMan @ BakerMan:
    i said i was sleeping...
  • BakerMan @ BakerMan:
    sleeping with uremum
  • K3Nv2 @ K3Nv2:
    Even my mum slept on that uremum
  • TwoSpikedHands @ TwoSpikedHands:
    yall im torn... ive been hacking away at tales of phantasia GBA (the USA version) and have so many documents of reverse engineering i've done
  • TwoSpikedHands @ TwoSpikedHands:
    I just found out that the EU version is better in literally every way, better sound quality, better lighting, and there's even a patch someone made to make the text look nicer
  • TwoSpikedHands @ TwoSpikedHands:
    Do I restart now using what i've learned on the EU version since it's a better overall experience? or do I continue with the US version since that is what ive been using, and if someone decides to play my hack, it would most likely be that version?
  • Sicklyboy @ Sicklyboy:
    @TwoSpikedHands, I'll preface this with the fact that I know nothing about the game, but, I think it depends on what your goals are. Are you trying to make a definitive version of the game? You may want to refocus your efforts on the EU version then. Or, are you trying to make a better US version? In which case, the only way to make a better US version is to keep on plugging away at that one ;)
  • Sicklyboy @ Sicklyboy:
    I'm not familiar with the technicalities of the differences between the two versions, but I'm wondering if at least some of those differences are things that you could port over to the US version in your patch without having to include copyrighted assets from the EU version
  • TwoSpikedHands @ TwoSpikedHands:
    @Sicklyboy I am wanting to fully change the game and bend it to my will lol. I would like to eventually have the ability to add more characters, enemies, even have a completely different story if i wanted. I already have the ability to change the tilemaps in the US version, so I can basically make my own map and warp to it in game - so I'm pretty far into it!
  • TwoSpikedHands @ TwoSpikedHands:
    I really would like to make a hack that I would enjoy playing, and maybe other people would too. swapping to the EU version would also mean my US friends could not legally play it
  • TwoSpikedHands @ TwoSpikedHands:
    I am definitely considering porting over some of the EU features without using the actual ROM itself, tbh that would probably be the best way to go about it... but i'm sad that the voice acting is so.... not good on the US version. May not be a way around that though
  • TwoSpikedHands @ TwoSpikedHands:
    I appreciate the insight!
    TwoSpikedHands @ TwoSpikedHands: I appreciate the insight!