Last edited by Wavy,
I've found this post from 2015, haven't tried it but there are chances of it working https://gbatemp.net/threads/converting-elf-to-cia-how.399353/#post-5723948
I'll just use the 3DSX Launcher as it's easier, and I don't want to tinker with the rsf file in case if that breaks something.I've found this post from 2015, haven't tried it but there are chances of it working https://gbatemp.net/threads/converting-elf-to-cia-how.399353/#post-5723948
You don't have your environment variables set correctly. Either edit your existing variables to match this in your bashrc, or add them if they don't exist. Also, I recommend replacing bash with zsh or another shell. It'll make life easier as bash doesn't really handle the export function all that well.I get this error when trying to compile on Arch Linux
cc1: error: '-mfloat-abi=hard': selected processor lacks an FPU
export PATH=$HOME/bin:/usr/local/bin:/opt/devkitpro/tools/bin/:$PATH
export DEVKITARM=/opt/devkitpro/devkitARM
export DEVKITPRO=/opt/devkitpro
export DEVKITPPC=/opt/devkitpro/devkitPPC
echo $PATH
It works now. I can play sm64 on 3DS. ThanksYou don't have your environment variables set correctly. Either edit your existing variables to match this in your bashrc, or add them if they don't exist. Also, I recommend replacing bash with zsh or another shell. It'll make life easier as bash doesn't really handle the export function all that well.
DO NOT issue these as direct commands.
You'll have to reload your terminal after making this edit. You can also see if your PATH is correct with this command.Code:export PATH=$HOME/bin:/usr/local/bin:/opt/devkitpro/tools/bin/:$PATH export DEVKITARM=/opt/devkitpro/devkitARM export DEVKITPRO=/opt/devkitpro export DEVKITPPC=/opt/devkitpro/devkitPPC
Code:echo $PATH
You can edit controls by heading to the source by editing controller_3ds.c at sm64_3ds/src/pc/controller/controller_3ds.cIs there a version with the jump button on B and the dive button on Y?
--------------------- MERGED ---------------------------
Is there a version with the jump button in B and dive on Y?
Is there a guide for compiling it into a .cia file with 800px mode?You can edit controls by heading to the source by editing controller_3ds.c at sm64_3ds/src/pc/controller/controller_3ds.c
They really should of made it as a config file instead of recompiling it
I'm not quite sure on how to use 800px mode, but I know how to make a .ciaIs there a guide for compiling it into a .cia file with 800px mode?
makerom -v -f cia -o sm64_3ds.cia -DAPP_ENCRYPTED=false -rsf sm64_rsf.rsf -target t -exefslogo -elf sm64_3ds.elf -icon icon.icn -banner banner.bnr
Now copy the sm64.us.f3dex2e.3dsx.elf (or something along those lines) file from sm64/build/<VERSION>_3ds into your directory with Makerom
Sorry for the late reply. But maybe try this tutorial instead as it's much better than my one.I downloaded the files from the post below yours and those file weren't in them. Where do you find that folder?
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `start_rumble.part.0':
thread6.c:(.text+0x1c): undefined reference to `osMotorStart'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x4c): undefined reference to `gRumblePakSchedulerMesgQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x50): undefined reference to `gRumblePakPfs'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `stop_rumble.part.0':
thread6.c:(.text+0x74): undefined reference to `osMotorStop'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0xa4): undefined reference to `gRumblePakSchedulerMesgQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0xa8): undefined reference to `gRumblePakPfs'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `init_rumble_pak_scheduler_queue':
thread6.c:(.text+0xd8): undefined reference to `gRumblePakSchedulerMesgQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0xdc): undefined reference to `gRumblePakSchedulerMesgBuf'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `block_until_rumble_pak_free':
thread6.c:(.text+0x100): undefined reference to `gRumblePakSchedulerMesgQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `release_rumble_pak_control':
thread6.c:(.text+0x114): undefined reference to `gRumblePakSchedulerMesgQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `queue_rumble_data':
thread6.c:(.text+0x140): undefined reference to `gRumbleDataQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `func_sh_8024C89C':
thread6.c:(.text+0x150): undefined reference to `gRumbleDataQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `is_rumble_finished_and_queue_empty':
thread6.c:(.text+0x198): undefined reference to `gCurrRumbleSettings'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x19c): undefined reference to `gRumbleDataQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `reset_rumble_timers':
thread6.c:(.text+0x1d0): undefined reference to `gCurrRumbleSettings'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `reset_rumble_timers_2':
thread6.c:(.text+0x258): undefined reference to `gCurrRumbleSettings'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `func_sh_8024CA04':
thread6.c:(.text+0x270): undefined reference to `gCurrRumbleSettings'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `cancel_rumble':
thread6.c:(.text+0x28c): undefined reference to `osMotorInit'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2d4): undefined reference to `osMotorStop'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2e0): undefined reference to `gRumblePakPfs'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2ec): undefined reference to `gRumbleDataQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2f0): undefined reference to `gCurrRumbleSettings'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `thread6_rumble_loop':
thread6.c:(.text+0x4c0): undefined reference to `osMotorInit'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x584): undefined reference to `gRumbleDataQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x58c): undefined reference to `gCurrRumbleSettings'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x594): undefined reference to `gRumbleThreadVIMesgQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5a0): undefined reference to `gRumblePakPfs'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `create_thread_6':
thread6.c:(.text+0x5e0): undefined reference to `osCreateThread'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5f0): undefined reference to `osStartThread'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5f4): undefined reference to `gRumbleThreadVIMesgBuf'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5f8): undefined reference to `gRumbleThreadVIMesgQueue'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x600): undefined reference to `gRumblePakThread'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `rumble_thread_update_vi':
thread6.c:(.text+0x630): undefined reference to `gRumbleThreadVIMesgQueue'
collect2: error: ld returned 1 exit status
make: *** [Makefile:901: build/sh_3ds/sm64.sh.f3dex2e.elf] Error 1
The Shindou version is only experimental, which will cause build errors.the sh build for the Shindou edition doesn't compile, right? the other 3 compiled alright
Code:/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `start_rumble.part.0': thread6.c:(.text+0x1c): undefined reference to `osMotorStart' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x4c): undefined reference to `gRumblePakSchedulerMesgQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x50): undefined reference to `gRumblePakPfs' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `stop_rumble.part.0': thread6.c:(.text+0x74): undefined reference to `osMotorStop' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0xa4): undefined reference to `gRumblePakSchedulerMesgQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0xa8): undefined reference to `gRumblePakPfs' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `init_rumble_pak_scheduler_queue': thread6.c:(.text+0xd8): undefined reference to `gRumblePakSchedulerMesgQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0xdc): undefined reference to `gRumblePakSchedulerMesgBuf' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `block_until_rumble_pak_free': thread6.c:(.text+0x100): undefined reference to `gRumblePakSchedulerMesgQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `release_rumble_pak_control': thread6.c:(.text+0x114): undefined reference to `gRumblePakSchedulerMesgQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `queue_rumble_data': thread6.c:(.text+0x140): undefined reference to `gRumbleDataQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `func_sh_8024C89C': thread6.c:(.text+0x150): undefined reference to `gRumbleDataQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `is_rumble_finished_and_queue_empty': thread6.c:(.text+0x198): undefined reference to `gCurrRumbleSettings' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x19c): undefined reference to `gRumbleDataQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `reset_rumble_timers': thread6.c:(.text+0x1d0): undefined reference to `gCurrRumbleSettings' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `reset_rumble_timers_2': thread6.c:(.text+0x258): undefined reference to `gCurrRumbleSettings' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `func_sh_8024CA04': thread6.c:(.text+0x270): undefined reference to `gCurrRumbleSettings' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `cancel_rumble': thread6.c:(.text+0x28c): undefined reference to `osMotorInit' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2d4): undefined reference to `osMotorStop' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2e0): undefined reference to `gRumblePakPfs' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2ec): undefined reference to `gRumbleDataQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x2f0): undefined reference to `gCurrRumbleSettings' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `thread6_rumble_loop': thread6.c:(.text+0x4c0): undefined reference to `osMotorInit' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x584): undefined reference to `gRumbleDataQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x58c): undefined reference to `gCurrRumbleSettings' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x594): undefined reference to `gRumbleThreadVIMesgQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5a0): undefined reference to `gRumblePakPfs' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `create_thread_6': thread6.c:(.text+0x5e0): undefined reference to `osCreateThread' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5f0): undefined reference to `osStartThread' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5f4): undefined reference to `gRumbleThreadVIMesgBuf' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x5f8): undefined reference to `gRumbleThreadVIMesgQueue' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: thread6.c:(.text+0x600): undefined reference to `gRumblePakThread' /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/ld: build/sh_3ds/src/game/thread6.o: in function `rumble_thread_update_vi': thread6.c:(.text+0x630): undefined reference to `gRumbleThreadVIMesgQueue' collect2: error: ld returned 1 exit status make: *** [Makefile:901: build/sh_3ds/sm64.sh.f3dex2e.elf] Error 1
Yea who does outside of Super Mario 3D All-Stars ikr?does it even really matter lol, who actually plays the shindou version. honestly no need
i mean maybe but i just downloaded a cia of it with hd mario and was just done with it, working on that other version doesnt really matterMaybe I can help with something, maybe I'm doing something wrong, just checking