Homebrew RELEASE Sonic 3 AIR

Using Arch Linux here. My environment variables are set properly, it fails immediately. "No rule to build « obj/Switch/Oxygen/lemonscript/source/lemon/compiler/FunctionCompiler.o »".
I was able to fix this error by editing the path of "FunctionCompiler.cpp" in the Makefile, which was inside of a folder named "backend", and kept editing for every other error that followed.
sadly I'm now stuck during the Linking stage with errors like these:

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/OpenGLTexture.o: in function `_GLOBAL__sub_I__ZN13OpenGLTextureD2Ev':
OpenGLTexture.cpp:(.text.startup+0x8c): undefined reference to `lemon::detail::FlyweightStringManager::FlyweightStringManager()'

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/OpenGLTexture.o: in function `_GLOBAL__sub_D__ZN13OpenGLTextureD2Ev':
OpenGLTexture.cpp:(.text.exit+0xfc): undefined reference to `rmx::OneTimeAllocPool::~OneTimeAllocPool()'

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/Upscaler.o: in function `_GLOBAL__sub_I__ZN8Upscaler7startupEv':
Upscaler.cpp:(.text.startup+0x8c): undefined reference to `lemon::detail::FlyweightStringManager::FlyweightStringManager()'

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/Upscaler.o: in function `_GLOBAL__sub_D__ZN8Upscaler7startupEv':
Upscaler.cpp:(.text.exit+0xfc): undefined reference to `rmx::OneTimeAllocPool::~OneTimeAllocPool()'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:374: bin/Switch/sonic3air.elf] Error 1


if anyone that sees this has any idea of what went wrong please let me know.

Edit: part of the Terminal's output became emojis, awesome.
Edit2: attached the edited Makefile so that anyone may use it.
 

Attachments

Last edited by Surra,
  • Like
Reactions: raxadian
I was able to fix this error by editing the path of "FunctionCompiler.cpp" in the Makefile, which was inside of a folder named "backend", and kept editing for every other error that followed.
sadly I'm now stuck during the Linking stage with errors like these:

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/OpenGLTexture.o: in function `_GLOBAL__sub_I__ZN13OpenGLTextureD2Ev':
OpenGLTexture.cpp:(.text.startup+0x8c): undefined reference to `lemon::detail::FlyweightStringManager::FlyweightStringManager()'

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/OpenGLTexture.o: in function `_GLOBAL__sub_D__ZN13OpenGLTextureD2Ev':
OpenGLTexture.cpp:(.text.exit+0xfc): undefined reference to `rmx::OneTimeAllocPool::~OneTimeAllocPool()'

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/Upscaler.o: in function `_GLOBAL__sub_I__ZN8Upscaler7startupEv':
Upscaler.cpp:(.text.startup+0x8c): undefined reference to `lemon::detail::FlyweightStringManager::FlyweightStringManager()'

C:/devkitPro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.2.0/../../../../aarch64-none-elf/bin/ld.exe: obj/Switch/Oxygen/oxygenengine/source/oxygen/drawing/opengl/Upscaler.o: in function `_GLOBAL__sub_D__ZN8Upscaler7startupEv':
Upscaler.cpp:(.text.exit+0xfc): undefined reference to `rmx::OneTimeAllocPool::~OneTimeAllocPool()'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:374: bin/Switch/sonic3air.elf] Error 1


if anyone that sees this has any idea of what went wrong please let me know.

Edit: part of the Terminal's output became emojis, awesome.

Alternatively I have made the Windows version work on Wine and Proton, just not as full screen cause my video card is way too old.
 
Last edited by raxadian,
I assume a recompilation will be needed for the latest firmware?
Yeah, it won't work with the latest firmware/Atmosphere, I tried compiling it with the latest libnx, but I keep getting the same error as ShelbySann:

"No rule to build « obj/Switch/Oxygen/lemonscript/source/lemon/compiler/FunctionCompiler.o »".

I also tried the libnx ABI patcher:

but the game just freezes as soon as I open it.
 
  • Like
Reactions: Thorhax and cvskid
hi,
To continue using these ports, if there's no new compilation, you can use the patched version of Atmosphere. Some might say it's not the ideal solution, but it works.

Still better that using the Windows version wine/proton, cause the Switch doesn't have enough ram to run that well.

Also there is Sonic 3 Complete that being a Sega Genesis rom has no problems running in a Sega Genesis emulator.
 

Site & Scene News

Popular threads in this forum