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
527
Trophies
1
Age
43
XP
2,954
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
  • The Real Jdbye @ The Real Jdbye:
    but that's a long shot
  • The Real Jdbye @ The Real Jdbye:
    i think only the red mario kart edition phat was v5
  • BigOnYa @ BigOnYa:
    A woman with no arms and no legs was sitting on a beach. A man comes along and the woman says, "I've never been hugged before." So the man feels bad and hugs her. She says "Well i've also never been kissed before." So he gives her a kiss on the cheek. She says "Well I've also never been fucked before." So the man picks her up, and throws her in the ocean and says "Now you're fucked."
    +2
  • BakerMan @ BakerMan:
    lmao
  • BakerMan @ BakerMan:
    anyways, we need to re-normalize physical media

    if i didn't want my games to be permanent, then i'd rent them
    +1
  • BigOnYa @ BigOnYa:
    Agreed, that why I try to buy all my games on disc, Xbox anyways. Switch games (which I pirate tbh) don't matter much, I stay offline 24/7 anyways.
    +1
  • AncientBoi @ AncientBoi:
    I don't pirate them, I Use Them :mellow:. Like I do @BigOnYa 's couch :tpi::evil::rofl2:
    +1
  • cearp @ cearp:
    @BakerMan - you can still "own" digital media, arguably easier and better than physical since you can make copies and backups, as much as you like.

    The issue is DRM
    +1
  • cearp @ cearp:
    You can buy drm free games / music / ebooks, and if you keep backups of your data (like documents and family photos etc), then you shouldn't lose the game. but with a disk, your toddler could put it in the toaster and there goes your $60

    :rofl2:
  • cearp @ cearp:
    still, I agree physical media is nice to have. just pointing out the issue is drm
    +1
  • rqkaiju2 @ rqkaiju2:
    i like physical media because it actually feels like you own it. thats why i plan on burning music to cds
  • cearp @ cearp:
    It's nice to not have to have a lot of physical things though, saves space
    +1
  • AncientBoi @ AncientBoi:
    Nor clothes 🤮 . Saves on time, soap, water and money having to wash them. :D
  • SylverReZ @ SylverReZ:
    @rqkaiju2, Physical media is a great source for archiving your data, none of that cloud storage shiz.
    +1
  • AncientBoi @ AncientBoi:
    [squeezes @SylverReZ onto a physical media, then archives you in my old stuff box] :tpi::rofl2::tpi:
    +1
  • BakerMan @ BakerMan:
    guys, should i change my pfp to one of these or keep it the same?
    iu

    iu

    (i guess i could change it to one of my other pfps too, but i just want to see what you guys think first)
  • SylverReZ @ SylverReZ:
    @BakerMan, Up to you.
  • BakerMan @ BakerMan:
    smug sonic time lmao
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    Chronic The HempHog
  • DilllyDabDharma @ DilllyDabDharma:
    I'm new! Hi!
    DilllyDabDharma @ DilllyDabDharma: I'm new! Hi!