#celeste linux on nintendo switch thread

1 messages · Page 3 of 1

silver merlin
#

unless you're running experimental arch linux port for aarch64 like me

manic tinsel
#

I’m just not a fan of the whole ppa thing

#

I’ve got “everything must be package” mentality

mystic umbra
#

congrats 2k messages

manic tinsel
#

If you pull up with an install script from Microsoft I’ll freak out and call treason

#

Hi DaNike! Thanks for popping in baddyhug

#

napkin wants to install Everest on their modded Nintendo Switch running Ubuntu aarch64.

#

napkin doesn’t have much technical knowledge in this area, so we’ve been helping them along and explaining what we’re doing.

silver merlin
#

though in this stage even if you install it you won't have sound

manic tinsel
#

We’ll wait for them to wake up, and then we’ll try a dotnet build of just MonoMod

manic tinsel
silver merlin
#

lmfao

manic tinsel
#

Gotta get those dollars back somehow

#

this gives me hope

#

maybe one day

silver merlin
#

we just need a talented dev to port that over to everest

#

what's next, celeste for ppc64le? /j

manic tinsel
#

Celeste on toaster.

upper hound
#

or ps3

silver merlin
#

PS3 is PPC64

upper hound
#

ah

silver merlin
#

those are big endian machines

upper hound
#

yeah i figured now without the le suffix

silver merlin
#

PPC64le is POWER8+

mystic umbra
#

isnt ppc what the wii ran?

silver merlin
#

though even if those can run celeste they will definitely won't have sound

#

yeah

manic tinsel
#

Time to rewrite FMOD pausefrogeline

upper hound
#

i hate it when they will definitely won't have sound /lh

silver merlin
#

unless someone makes library emulator from amd64 to ppc64le/loongarch64/riscv64/etc

mystic umbra
#

i think someone ran celeste on the wii already??

upper hound
#

i love processor architectures

manic tinsel
silver merlin
#

or somehow make that WASM version into linux shared library

mystic umbra
#

i vaguely remember though

#

maybe it was just an attempt

upper hound
mystic umbra
#

was that not 3ds

upper hound
#

i think

silver merlin
#

there's PICO-8 version for wii tho

upper hound
#

or no wait

#

maybe it could be the 3ds

mystic umbra
#

yeah i remember that

upper hound
#

idk i like just woke up half an hour ago

manic tinsel
#

going back to bed

mystic umbra
#

thankfully that went nowhere trollshiro

manic tinsel
#

me. I’m going back to bed

#

coincidentally we sent those two messages at the same time

#

bweh

upper hound
#

didn't expect to see danike show up tbh

silver merlin
#

ah timezone, fun

#

I'm on UTC+9 timezone

manic tinsel
#

I just daylight savings timed it

#

so I’m UTC-7 now

silver merlin
#

holy 16h difference

mystic umbra
#

holy shit its 7am for you

silver merlin
#

no

#

11pm

mystic umbra
#

i meant angel

silver merlin
#

oof

mystic umbra
#

its been a while since i got up before 10am on a sunday lmao

manic tinsel
#

yeah I usually get up at 8 or 9

silver merlin
#

almost monday here

manic tinsel
#

but because we gained an hour

#

I woke up at 7 and couldn’t go back to sleep

silver merlin
#

thankfully no lecture on mondays and fridays

mystic umbra
#

okay makes sense

manic tinsel
silver merlin
#

korea

#

south

manic tinsel
#

“south”

#

omg that’s hilarious the way you added that on at the end

silver merlin
#

if i were in nk i'd been executed

manic tinsel
#

for transness?

silver merlin
#

and gayness

manic tinsel
#

:<

#

I’m from China, immigrated to Canada

#

but you could tell from my about me

#

genuinely we’ve got people from around the world in this discord server trying to get Everest on this switch

#

truly an avengers assemble moment

silver merlin
#

yeah

manic tinsel
#

adamd I see you typing

dox yourself

upper hound
#

started out from one clueless person trying to run celeste on the switch to an entire group of clueless people trying to run celeste on the switch

mystic umbra
#

i mean we are just hanging out at this point

upper hound
#

yes

silver merlin
#

yeah lol

#

I did manage to run celeste on other aarch64 machine at least

#

my trustworthy macbook air-chan

manic tinsel
#

hooray

silver merlin
#

tho I'm currently on my threadripper workstation

#

my macbook air's in downstairs

manic tinsel
#

oh while you’re here “both my usernames are yuri characters also I was invited to Ubuntu summit”

silver merlin
#

lol

manic tinsel
#

are there any Rosetta specific bugs on Celeste?

silver merlin
#

dunno

#

don't use macOS

mystic umbra
#

yes

manic tinsel
#

awh

mystic umbra
#

piton dies for some users on rosetta

silver merlin
#

it's nested jit, what do you expect lol

manic tinsel
#

Recently someone had what seems like a graphics driver bug, where some decals appeared malformed when moving. This was on macOS, and I was never able to figure out why

mystic umbra
#

we hit this after the .net 8 upgrade, after a bunch of pain to figure out why the hell going from .net 7 to .net 8 made piton crash

silver merlin
mystic umbra
#

turns out rust is evil and trolled me hugely

manic tinsel
mystic umbra
#

there you go

manic tinsel
#

live 3paul reaction

mystic umbra
manic tinsel
mystic umbra
silver merlin
#

interesting

silver merlin
#

since most of the emulation problem comes from nested jit or 16k pagesize

#

at least for me

manic tinsel
#

then again, not many Mac gamers in the world

#

it’s not your first choice when you’re looking for gaming performance

silver merlin
#

even fewer mac linux gaymers

manic tinsel
#

Most of the macOS usage I’ve seen is for creative work, which is why I kind of do want one

#

which definitely doesn’t stem from my hatred of windows. No of course not why would you

silver merlin
#

it does have quite good performance if you manage to run games

manic tinsel
#

I was booting back into my Windows partition last night to try and set up music production, because as we all know Linux audio is so ahhh and WINE will murder me

#

and my shell froze like 10 different times

#

Only times Arch Linux froze on me:

  • an incorrect bottles configuration x2
  • slurp and hyprpicker didn’t exit cleanly and became zombie
#

Windows froze 10! Times! In one session!

#

I feel like I’ve like. Seen the light or something and can’t go back 😭

mystic umbra
#

the only times arch has frozen for me was due to hardware failures lmao

manic tinsel
#

And this is especially true because I have a mid-tier laptop from like 2019

#

and it still works just fine in Arch

#

but Windows drags its feet like “are u sure u don’t wanna buy a shiny new computer”

silver merlin
#

arch's pretty solid minux arch arm

manic tinsel
#

Like I put my graphics settings to max while playing PEAK and it didn’t freeze the shell. Whole lotta lag but it still hung in there

silver merlin
#

arch arm: super slow update, partially updated packages causing problems

manic tinsel
#

I also hear the AUR has issues

#

I don’t think it’s possible to distribute multiple architectures through one AUR package?

silver merlin
#

AUR is "user" repository

#

it is possible

manic tinsel
#

but most people don’t?

silver merlin
#

some aur packages are already multiarch capable

#

though most of the time just makepkg'ing after adding aarch64 will work

manic tinsel
#

mmmm.

#

there is that assumption that people only need x86_64 though

silver merlin
#

electron apps need manual intervention since it's output dir is different on aarch64

manic tinsel
#

Electron 3paul

#

Oh I should take my meds

silver merlin
#

but well except that it works quite smoothly

manic tinsel
#

good software poorly maintained

silver merlin
#

that's why I'm hoping for proper arch linux ports aarch64 release

manic tinsel
#

it snowed last night,,,

#

it’s so cold

#

this is general for nerds btw

copper bane
#

i can't

#

i think

#

you tell me if any of those work

#

buh i keep forgetting i modded my switch and then its so weird waking up and turning it up to this thing 💔 💔

manic tinsel
#

Doing everything through the terminal with no GUI would be way too much for you at this stage

copper bane
#

oh

manic tinsel
#

-# but it would save storage

copper bane
#

eeeeehhhhh

#

i put 40gb on the partition

#

instead of 25

manic tinsel
#

how did it get wiped in the first place anyway?

copper bane
#

i was messing around with some homebrew, and i opened a corrupted one and it messed around with some files i think?

manic tinsel
#

huh.

copper bane
#

i tried to keep the switchroot/ubuntu-noble files but it didnt work and i got my data wiped anyway when wiping my sd card
i wiped it manually, but prayed it didn't delete my files basically

#

my save data and everything else is intact, i just have to redownload animal crossing

manic tinsel
#

well when you wipe the card you wipe the whole card

copper bane
#

yeah but i kept the files inside n stuff rivsob

#

where are my glasses i cant see

manic tinsel
#

wdym

#

you can’t wipe something while keeping its contents intact?

copper bane
#

eh whatever
it got wiped and i had to spend like 30 minutes getting back to where we were

upper hound
#

clone your sd card with a cloning utility imo

copper bane
#

noted

manic tinsel
#

anyways,,

#

open your terminal in Documents/Everest/external/MonoMod

#

we will try what DaNike suggested

copper bane
#

hold on i'm checking if celeste runs

#

`FULLSCREEN
GAME DISPLAYED (in 6079ms)
System.DllNotFoundException: libfmodstudio.so.10 assembly:<unknown assembly> type:<unknown type> member:(null)
at (wrapper managed-to-native) FMOD.Studio.System.FMOD_Studio_System_Create(intptr&,uint)
at FMOD.Studio.System.create (FMOD.Studio.System& studiosystem) [0x00005] in <d7b2abb405ec4c97954549f0a02e4a41>:0
at Celeste.Audio.Init () [0x00010] in <d7b2abb405ec4c97954549f0a02e4a41>:0
at Celeste.GameLoader.LoadThread () [0x0000c] in <d7b2abb405ec4c97954549f0a02e4a41>:0
at Celeste.RunThread.RunThreadWithLogging (System.Action method) [0x00000] in <d7b2abb405ec4c97954549f0a02e4a41>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.ComponentModel.Win32Exception (0x80004005): Access denied
at System.Diagnostics.Process.StartWithShellExecuteEx (System.Diagnostics.ProcessStartInfo startInfo) [0x00102] in <4deb318bb3254cab91ca66698a056198>:0
at System.Diagnostics.Process.Start () [0x00032] in <4deb318bb3254cab91ca66698a056198>:0
at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) [0x0001b] in <4deb318bb3254cab91ca66698a056198>:0
at System.Diagnostics.Process.Start (System.String fileName) [0x00006] in <4deb318bb3254cab91ca66698a056198>:0
at Monocle.ErrorLog.Open () [0x00014] in <d7b2abb405ec4c97954549f0a02e4a41>:0
at Celeste.RunThread.RunThreadWithLogging (System.Action method) [0x00018] in <d7b2abb405ec4c97954549f0a02e4a41>:0
at Celeste.RunThread+<>c__DisplayClass1_0.<Start>b__0 () [0x00000] in <d7b2abb405ec4c97954549f0a02e4a41>:0
at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00017] in <12b418a7818c4ca0893feeaaf67f1e7f>:0
at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x0008d] in <12b418a7818c4ca0893feeaaf67f1e7f>:0
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x00031] in <12b418a7818c4ca0893feeaaf67f1e7f>:0
at System.Threading.ThreadHelper.ThreadStart () [0x0000b] in <12b418a7818c4ca0893feeaaf67f1e7f>:0

=================================================================
Native Crash Reporting

Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.

=================================================================
Native stacktrace:

napkin@napkin-piracy:~/Documents/celeste$ `

manic tinsel
#

oh.

copper bane
manic tinsel
#

uhhh

#

everything’s all messed up now

#

I have no idea why FMOD is gone

#

perhaps we missed a step somewhere

copper bane
#

it worked before so i probably fucked up

#

somewhere
it was 5am so it was expected but like still bad

upper hound
#

do you have the arm64 fmodstudio shared object

#

somehow

manic tinsel
#

we did

#

we no longer do

#

sigh

#

may I suggest starting from scratch again

copper bane
#

sure

manic tinsel
#

because i don’t have a clear idea of what you did and didn’t do

copper bane
#

wait do i have to wipe my linux or do we continue from here

manic tinsel
#

so troubleshooting will be hell

#

you can nuke all folders in Documents

#

redownload Celeste from itch

#

and we will be once again

upper hound
#

on it

#

allocating 0xcafebabe bytes from the heap and writing garbage to it

manic tinsel
#

NOOOO

copper bane
#

okay 2 minutes and the game will finish downloading

#

it has finished the downloadig

manic tinsel
#

unzip it in documents like last time

#

open your terminal in documents

#

git clone https://github.com/pixelomer/Celeste-ARM64

#

cd Celeste-ARM64

#

./patch.sh ../celeste/Celeste.exe

#

(assuming the name of the Celeste folder is celeste like last time)

copper bane
#

it is dw

#

tell me what to do next while it patches

manic tinsel
#

go back into your celeste folder and open the file called Celeste in KWrite

#

replace its text with

#
#!/usr/bin/env bash

LD_LIBRARY_PATH="$(pwd)/lib-arm64" mono Celeste.exe
#

copy the lib-arm64 folder and back it up somewhere safe

#

and then use your PC to make a backup of all of this

#

preferably by using a cloning utility to clone the SD card but zipping and uploading to Google Drive might work too

upper hound
#

the cloning utility makes an image of your entire sd card to a file

#

which you can also use to restore from

#

it's like taking a snapshot of your sd card that you can revert

copper bane
#

im sending it to google drive

#

it was sent to google drive

#

whar now

manic tinsel
#

you know how to use cd now, right?

#

I’ll give a formal explanation if not

#

~ refers to your home directory, /home/napkin

#

. refers to the directory you’re currently in

#

and .. refers to one directory up from the one you’re in

#

so, to go back to Documents from Documents/Celeste-ARM64, you would type cd ..

#

do that now

copper bane
#

holy moly the magic runes of magicness work

manic tinsel
#

yippee

#

we’re going to get the Everest code again now

#

git clone https://github.com/EverestAPI/Everest

#

and then cd Everest to go into the newly created folder

copper bane
manic tinsel
#

so DaNike said we should try building the MonoMod component of Everest on its own as a test

upper hound
#

mm is in external/MonoMod

manic tinsel
#

so type in cd external/MonoMod

upper hound
manic tinsel
#

GAAAHHHHH

upper hound
#

or git submodule update --init --recursive atp

manic tinsel
#

I forgor

#

updated order of commands

#

git clone https://github.com/EverestAPI/Everest

#

cd Everest

#

then

#

git submodule update --init --recursive

#

then cd external/MonoMod

upper hound
#

-# or --recurse if --recursive complains that it doesn't exist

copper bane
#

i dont think its complaining

copper bane
upper hound
#

okay cus i remember one command complaining

#

now dotnet build if you have the .net 9 sdk installed

#

and mono and everything else

copper bane
#

i don't think i do

#

i don't

manic tinsel
#

what!!

#

does it say you have 8 instead of 9

upper hound
#

i dont think they installed the sdk or mono at all

manic tinsel
#

no they have mono

copper bane
upper hound
#

oh lol

manic tinsel
#

I’m going to pass away

upper hound
#

you need a newer sdk

copper bane
# manic tinsel no they have mono

oh i forgot my discord pronouns thing is who made my pfp (which is outdated, i made this one myself for halloween, it's not my normal pfp), i'm a male man he him btw

upper hound
#

alright

copper bane
#

anyway

manic tinsel
#

we will have to use the install script.

copper bane
#

is that bad

manic tinsel
#

It ticks me off is all

#

you’ve probably learned a lot

#

so can you remove dotnet-sdk-9.0 with apt?

copper bane
#

sudo apt-get remove dotnet-sdk-9.0?

manic tinsel
#

yes!

#

my goat

copper bane
#

IM SMART

manic tinsel
#

Go to your downloads or wherever you see fit

upper hound
#

i think you can just apt without apt-get but shh

manic tinsel
#

and then curl -F https://dot.net/v1/dotnet-install.sh --output dotnet-install.sh

copper bane
#

whats curl

upper hound
#

when you snip_sleep

#

curl is a http client

#

its like wget if you've heard of that

manic tinsel
#

send thing over internet wave

#

receive thing over internet wave

#

curl does that

copper bane
#

nice

upper hound
#

see URL

manic tinsel
#

is -F not follow redirects

upper hound
#

mmm delicious discord

upper hound
manic tinsel
#

💔

#

replace -F with -L

upper hound
manic tinsel
#

shhhhhhh

upper hound
#

id probably put this in ~

manic tinsel
#

uhhhh

#

yeah

#

if its done its done

copper bane
#

-# adreneline im so hungry rn im starving

manic tinsel
#

but if not maybe listen to snip 😭

copper bane
#

-# also it's done

manic tinsel
#

ok

#

i think you can just

#

./dotnet-install.sh

#

and it installs the latest stable

upper hound
#

id --help first if that works

copper bane
#

permission denied

#

do i sudo

manic tinsel
#

no

#

just give yourself permissions to execute

#

chmod +x dotnet-install.sh

copper bane
#

fancy

manic tinsel
#

where +x means add execute permission

upper hound
#

744 my beloved

manic tinsel
manic tinsel
#

-# sobeline

copper bane
#

is this good

manic tinsel
#

wait one second

upper hound
manic tinsel
#

it says you can ./dotnet-install.sh --channel LTS so I'm assuming all args are optional

upper hound
# upper hound yeah

if you ls -l dotnet-install.sh the beginning of the line should have -rwxr--r--

#

or at least start with -rwx

copper bane
#

so i run that?

manic tinsel
#

ls -l shows file permissions

#

you can do that if you wanna see ✨runes✨

copper bane
#

oh

#

wrong inage

#

magic computer language

manic tinsel
#

the first - means no special permissions
the next three mean your permissions: rwx means you can read, write and execute
the next three mean permissions in your user group: rwx means everyone else in your user group can also read write and execute
the next three mean permissions for everyone else: r-x means everyone else in your user group can read and execute, but they can't edit the file

upper hound
#

everyone outside of your user group for the last one

#

user, group, others

copper bane
#

interesting

#

this is so cool lmfao

#

im finally learning computer magic language

upper hound
#

the permissions in octal are 775

copper bane
#

well
some of it atleast

manic tinsel
#

anyways you can ./dotnet-install.sh now i think

copper bane
#

it works

manic tinsel
#

what version does it install? does it say?

copper bane
upper hound
#

oh it installed 8

#

we don't want 8

#

we need 9.0.300+

copper bane
#

what do i run then

manic tinsel
#

./dotnet-install.sh --version 9.0.300

#

or something

#

busy applying for college today, please ping + expect slow responses

copper bane
#

applying for college?

#

damn

#

good luck

manic tinsel
#

thank you!

#

I'm not that much older than you lol

copper bane
#

how do you know how old i am

manic tinsel
#

well, you have said you're a teenager

copper bane
#

oh

#

i forgor

manic tinsel
#

anyways, try that command

copper bane
#

it worked

manic tinsel
#

go back to Documents/Everest/external/MonoMod

#

and then dotnet build

copper bane
#

didnt we just install that

manic tinsel
#

what!!!

#

maybe try restarting

#

might not be loaded in yet

copper bane
upper hound
#

you'll need to add the dotnet executable to PATH

manic tinsel
#

doe sit not do that automatically

upper hound
# copper bane

here it says its only in the current process path if we're sourcing the script, which we're not

copper bane
manic tinsel
#

balls

upper hound
#

what do you see in ~/.dotnet/sdk

#

also run dotnet --info

copper bane
manic tinsel
#

to list the files within a directory use ls

upper hound
#

whenever we ask you to see what's inside a directory we imply that you run ls on it

copper bane
#

gotcha

manic tinsel
#

so ls ~/.dotnet/sdk

#

ls -a will show hidden files, i.e. those starting with a .

copper bane
upper hound
#

and -l will show extra info like permissions

#

ok so the sdks are there

#

uhh

#

export DOTNET_HOME=$HOME/.dotnet i think

#

then try dotnet --info again

#

you're on kde right

#

isnt there a screenshot tool

#

no wait you're on gnome because ubuntu

copper bane
#

i don't even have print screen on this keyboard i think

manic tinsel
#

kubuntu

upper hound
#

nvm

#

didnt the kubuntu download get compromised sometime ago

manic tinsel
#

surely

copper bane
#

what

copper bane
upper hound
#

its xubuntu nvm

#

ok this is kinda useless

#

ah i got the envvar wrong

#
export DOTNET_ROOT=$DOTNET_HOME
export DOTNET_HOME=
#

this will rename the DOTNET_HOME envvar to DOTNET_ROOT

#

@copper bane

copper bane
#

i run those 2 commands?

upper hound
#

yea

#

then echo $DOTNET_ROOT and check if it's /home/napkin/.dotnet

copper bane
#

it is

upper hound
#

ok now your dotnet should work

#

dotnet --list-sdks

#

is 9.0.300 in there

copper bane
#

it dont say anything

upper hound
#

what if export DOTNET_ROOT="$DOTNET_ROOT/" and then the list-sdks command

#

you can up arrow to rerun commands in your history

copper bane
upper hound
#

maybe it wants the /sdk suffix

#

oh ensure it's in the path. alright

copper bane
#

whar

upper hound
#

if you echo $PATH do you see dotnet in here

copper bane
#

yes

upper hound
#

what is in there

copper bane
upper hound
#

oh lmao

#

it included the tools folder but not $DOTNET_HOME

#

so

export DOTNET_ROOT="$HOME/.dotnet"
export PATH="$PATH:$DOTNET_ROOT"
copper bane
#

done

upper hound
#

ok now dotnet --list-sdks

copper bane
#

nothing

upper hound
#

what is in ls $DOTNET_ROOT

copper bane
upper hound
#

what does it want then sigh

#

do i have to get up from bed and open my vps

copper bane
mystic umbra
#

what does which dotnet output

upper hound
#

probably /var/lib/dotnet or something

#

i may be speaking bs

copper bane
upper hound
#

ok close enough i think

mystic umbra
#

do /home/napkin/.dotnet/dotnet --list-sdks

copper bane
mystic umbra
#

well there we go

upper hound
#

ok so it's using the wrong dotnet wholestare

#

i had a feeling

#

why wouldn't it be reading the $DOTNET_ROOT tho

mystic umbra
#

your dotnet setup is immensely cursed and messed up so i dont think i would even try to fix it at this point lmao

mystic umbra
#

dotnet just does not care about that env var

upper hound
#

d

mystic umbra
#

(/usr/share/d does not exist on my filesystem)

upper hound
#

ik

mystic umbra
#

so yeah probably just use /home/napkin/.dotnet/dotnet from now on

upper hound
#

imo alias dotnet=/home/napkin/.dotnet/dotnet

#

if thats how alias works

mystic umbra
#

yeah but if they ever restart the terminal session that will be gone and the next person helping will be incredibly confused peaceline

copper bane
upper hound
#

bashrc

#

anyways uh yeah

#

i installed it from scratch and it works

#

oh it actually shows the env var when running --info wholestare

#

til

upper hound
#

or do i have to unset

mystic umbra
#

i forgot

#

it probably does

copper bane
manic tinsel
#

what the fuck

#

well.

#

/home/napkin/.dotnet/dotnet build then

#

jank

#

ping @copper bane?

copper bane
#

sorry for the wait i almost made my air fryer explode

#

i also showered

#

my air fryer is literally melting pls help

manic tinsel
#

uh

#

please don’t set your house on fire

copper bane
manic tinsel
#

oh?

#

the thing just succeeded?

#

it just worked?

copper bane
#

its doing magic

manic tinsel
#

waoh

#

let's wait

#

yellow is warning, so its OK

#

red is error, which means something went wrong

copper bane
#

its taking a while

#

a lot of yellow

#

no red tho

upper hound
#

you can ignore yellows since you're just a user

copper bane
#

RED

#

NOOOOO

upper hound
#

send the error

copper bane
upper hound
#

EXEC : ERROR : Unexpected

#

very helpful

copper bane
manic tinsel
#

@muted egret help...

muted egret
#

what on earth

#

can you send the generated msbuild.binlog

copper bane
#

how do that

muted egret
#

easiest would probably be to rsync it off the device then upload

#

but pick any method

manic tinsel
#

where is it generated?

upper hound
#

this server supports up to 100 mb file uploads btw

muted egret
manic tinsel
#

so just in whatever/MonoMod

muted egret
#

ye

manic tinsel
#

@copper bane open up your file browser to Documents/Everest/external/MonoMod

#

and find a file named msbuild.binlog

copper bane
#

ty lmfao

manic tinsel
#

I don't do these kinda things with dotnet either so this is a learning experience for me as well

muted egret
#

alright gimme a mo to look at it

upper hound
#

how does one read binlog files actually

#

can you just open them up in vs

copper bane
#

me?

upper hound
#

no, i'm asking danike

copper bane
#

oh sorry

muted egret
manic tinsel
#

we're getting into territory where this is starting to become magical runes for me

#

danike the higher power has come to aid us in our time of need

upper hound
copper bane
#

but like extremely shocking how so many people have come to help with this

#

this is starting to become a fully fledged project atp

manic tinsel
#

after we finish this you'll be able to use linux on your own

#

you could install linux on your main computer and you'd understand how to do several things

copper bane
#

how does one do that without sacrificing windows

#

or my files

manic tinsel
#

we'll get there when we finish these shenanigans

copper bane
#

gotcha

upper hound
#

hm

copper bane
#

oh god i have school tomorrow it wil be 10x harder to be here to run commands on the funny console

#

unless i don't go
somehow

manic tinsel
#

do not skip school for the nintendo switch modding session.

#

I also have school so I won't be around

copper bane
#

i'll brb in a min
i'm gonna restore some files on my cfw

upper hound
#

so this command is failing

/home/napkin/.nuget/packages/vezel.zig.toolsets.linux-arm64/0.14.1.1/tools/zig cc -target aarch64-linux-none -c -o /home/napkin/Documents/Everest/external/MonoMod/artifacts/obj/MonoMod.Core/debug_net5.0/arm64/linux/exhelper_linux_macos_arm64.S.o /home/napkin/Documents/Everest/external/MonoMod/src/MonoMod.Core/Platforms/Architectures/arm64/exhelper_linux_macos_arm64.S -g -O1

muted egret
#

yep

#

the question is why

#

seems like the build for net5 is failing with an exec error first, that's corrupting the zig cache, and that's causing all the others to fail

upper hound
#

is aarch64-linux-none a valid compilation target

muted egret
#

it should be

#

by which i mean it works when running from an x64 host

muted egret
copper bane
#

in a bit

upper hound
#

that none confused me

muted egret
#

i will ask though

#

why does everest build monomod itself

copper bane
#

auusahghgrahg i have way too many downloads my internet is dying

upper hound
mystic umbra
#

because of patcher iirc

#

the latest nuget pkg is too old for us

muted egret
#

is there anything actually new in patcher

mystic umbra
#

there was a bugfix from popax that we rely on

muted egret
#

i see

mystic umbra
muted egret
#

i mean i don't push nuget packages for patcher ever, so i'm not surprised

mystic umbra
#

yeah

manic tinsel
#

LMAO

muted egret
#

tracks

#

ok, try deleting ~/.cache/zig

#

then try again

upper hound
#

so just rm -r that folder

copper bane
#

rm -r ~/.cache/zig?

upper hound
#

yes

#

with a / after cache

#

yeah

copper bane
#

it dint do anything
or well
didt say anhitng

muted egret
#

rm doesn't give output except in error cases

copper bane
#

oh

#

gotcha

#

do i run the command again?

manic tinsel
#

yeah press up arrow twice

copper bane
#

same

manic tinsel
#

still says CacheCheckFailed?

copper bane
#

yes

#

same text same thing no change

manic tinsel
#

most verbose error message:

muted egret
#
export ZIG_GLOBAL_CACHE_DIR="$(pwd)/artifacts/zig-cache"
export ZIG_LOCAL_CACHE_DIR="$ZIG_GLOBAL_CACHE_DIR"

and try again

manic tinsel
#

this is so jank 😭

copper bane
#

same thing

muted egret
#

does artifacts/zig-cache exist?

manic tinsel
#

(MonoMod/artifacts/zig-cache)

muted egret
#

all is relative to cwd, which is the monomod source root

copper bane
muted egret
#

what's in it?

copper bane
#

h

#

o

muted egret
#

and to be clear, you're seeing CacheCheckFailed, not an EXEC error?

copper bane
muted egret
#

very cool names zig

copper bane
manic tinsel
upper hound
muted egret
#

and if you delete that new zig-cache, then retry, you still get the same thing?

copper bane
#

same thing

#

what

#

i deleted it

#

why is it

#

there

#

again

#

what

manic tinsel
#

because it's running the command again and generating a new cache

#

i think

copper bane
#

oh

manic tinsel
#

theory: this error is hiding another much more sinister error!!

#

uh

#

yeah genuinely what is going on

copper bane
upper hound
manic tinsel
copper bane
#

chat are we cooked

manic tinsel
#

maybe related?

muted egret
#

i mean it can clearly write to the cache dir now though

manic tinsel
#

yeah,,

#

because you exported the new envs.

muted egret
#

possibly silly idea

#

what does /home/napkin/.nuget/packages/vezel.zig.toolsets.linux-arm64/0.14.1.1/tools/zig cc --help give you

copper bane
#

oh that is way too long

muted egret
#

ok that's expected

manic tinsel
#

zig arch is correct then

muted egret
#
echo "#include<stdio.h>\nint main(){printf(\"test\\n\");return 0;}" > test.c
/home/napkin/.nuget/packages/vezel.zig.toolsets.linux-arm64/0.14.1.1/tools/zig cc test.c -o ./test
./test
manic tinsel
#

lmao

upper hound
#

this should output test

manic tinsel
#

cd to a different place before you try this ^^

muted egret
#

meh

#

it won't conflict with anything in the source dir

upper hound
#

also might be worth it to check if ~/.local/share/zig exists

copper bane
upper hound
#

it's 3 lines

muted egret
#

you can put && between them if you like

upper hound
#

they don't know what && does

copper bane
upper hound
#

so just run them line by line

copper bane
muted egret
#

huh

#

well

manic tinsel
#

what!!

upper hound
muted egret
#

that's something at least

upper hound
#

banger

#

does gcc work

manic tinsel
#

in general? probably
idk if we can use it as a drop-in replacement here though

muted egret
#

we cannot

#

cross-compilation with gcc is kinda hell

#

@copper bane what does sudo coredumpctl list give you

manic tinsel
#

-# here we go!!

copper bane
#

command not found

#

sudo: coredumpctl: command not found

manic tinsel
#

😭 ubuntu

copper bane
#

was i supposed to run it in monomod folder?

muted egret
#

isn't ubuntu a full systemd distro?

upper hound
#

it's kubuntu

muted egret
muted egret
upper hound
#

ah

muted egret
#

i believe arm64 mandates hardware float

manic tinsel
#

this is so far out of my league

upper hound
#

oh wait the invalid instruction is in the executable, not zig cc

manic tinsel
#

I don't know if I have anything to contribute here unfortunately

copper bane
upper hound
#

yeah

#

thats what i mean

muted egret
#

ubuntuuuuuu

upper hound
#

the issue says it's in the target exec

muted egret
#

what the fuck is apport

manic tinsel
#

kde moment

upper hound
#

apport is core dump reporting

#

what does ulimit -c give

manic tinsel
#

I remember this

copper bane
#

just that

upper hound
#

set ulimit -c unlimited

#

then run the compiler again and get the error again

#

the core dump should be in /var/lib/apport/coredump/...

muted egret
#

while you're at it do sudo sysctl -w kernel.core_pattern=core

#

way easier to work with that way

#

I hate that everything tries to jack coredumps

upper hound
#

i think you can just disable apport

#

not sure if this'll undo the core pattern change

copper bane
upper hound
#

/home/napkin/.nuget/packages/vezel.zig.toolsets.linux-arm64/0.14.1.1/tools/zig cc test.c -o ./test

copper bane
muted egret
#

now is there a core file in your current directory

upper hound
#

i think you can just send that here?

copper bane
#

its red

muted egret
#

send it here

copper bane
upper hound
#

hm wait can i cross-compile the exhelper to arm64

#

i got zig locally

muted egret
#

yes

#

that's what we do during build

#

works on macos-arm64, and windows- and linux- x64

upper hound
#

i dont think i can just send the dll then, can i

#

or shared object or whatever

muted egret
#

i mean, can hack the build system a touch to use a prebuilt one

#

but i would like to know why this is failing

upper hound
#

yeah obviously

muted egret
#

it's probably an issue in zig

upper hound
#

think so too

muted egret
#

might just patch everest to pull mm.core/mm.runtimedetour from nuget as a real solution here

#

argh is the coredump not a full memory dump

manic tinsel
#

@copper bane translation: there is likely a bug in zig that prevents it from building exhelper on your system. snip will build it for you and send it over discord

#

what does exhelper even do though

muted egret
#

how in the weeds do you want for an answer

copper bane
upper hound
#

well tbh id like to know what mm does behind the scenes too

manic tinsel
#

decently?

muted egret
manic tinsel
#

I'm not sure what your answer would constitute so give it your best shot lol

#

oh that's readable

#

cool 👍

upper hound
#

so it lets unmanaged exceptions be handled in .net?

muted egret
#

it lets them be propagated

upper hound
#

right

#

it says that

#

so this means we can get a AccessViolationException from unmanaged code, right

#

if we get a segfault

muted egret
#

we need it for the jit hooks, because the jit uses native exceptions to tell the vm about some compilation errors

upper hound
#

ah

muted egret
#

and, as described, normally the unwinder can't unwind through managed code, so we use the exception helper to let us do that manually

#

for macos-arm64, the shared library also implements the core memory protection bullshit necessary for MAP_JIT handling

upper hound
#

i don't fully understand what mm does behind the scenes other than the fact it hooks the jit to do its magic

muted egret
#

its so we know when the runtime recompiles methods so we can keep hooks on them

upper hound
#

i see

manic tinsel
#

DaNike are you going to report this to the zig people?

#

if it turns out to be a zig bug as inferred

muted egret
#

@copper bane can you do echo 0x1f > /proc/self/coredump_filter, run the compiler again, then send the new coredump

copper bane
#

what was the compiler

manic tinsel
#

big zig command

#

/home/napkin/.nuget/packages/vezel.zig.toolsets.linux-arm64/0.14.1.1/tools/zig cc test.c -o ./test

#

zig can act as a drop-in compiler for C, where compiler basically means "translator to machine code"
compile is also synonymous with build in this context

copper bane
manic tinsel
#

b i g

#

oh you have nitro lmao

muted egret
#

that's more the size i was expecting

#

also i have no idea if this is actually the same issue as seen trying to compile exhelper

#

just that it is an issue

#

@manic tinsel think you can get everest to use packages for runtimedetour and co?

manic tinsel
#

what is a co

#

and you should be asking snip that question, they're an actual dev, while I just have Linux and C# experience

muted egret
#

fair enough

upper hound
#

uhh let me see

#

do we need anything from the submodule, i'm not that experienced with mm stuff

muted egret
#

well you said you need up-to-date patcher ye?

upper hound
#

wartori did

muted egret
#

ah

#

well presumably that is necessary then

#

but utils+core+runtimedetour should probably come through packages

upper hound
#

okay seems like this is just a bunch of refs

mystic umbra
#

yes you could use the nuget pkgs for anything other than patcher and hookgen

upper hound
#

alright

#

hold on @mystic umbra isnt the patch merged into mm now

mystic umbra
#

which patch

upper hound
#

popax' one

mystic umbra
#

yeah it was merged on 2022 or something

upper hound
#

okay so we're up to date with the mm repo? no divergent commits?

mystic umbra
#

we pull the reorg branch directly so no

#

mm luckily is not in an nlua situation

upper hound
#

is this just to freeze the branch at this commit

#

since its a submodule

mystic umbra
#

yeah

upper hound
#

sick

#

latest ver will work right

muted egret
#

@copper bane can you give me a xxd /sys/devices/system/cpu/cpu0/regs/identification/*

muted egret
copper bane
muted egret
#

slap a sudo out front then

upper hound
#

so sudo xxd ...

#

seems to compile

#

but it also needs to compile mm.core

copper bane
muted egret
#

really??

copper bane
#

why sudo no work

upper hound
#

i'll try installing to make sure it runs

#

seems to patch

#

aaaand it dies

Ver 1.4.0.0-fna [Everest: 0-dev]
11/02/2025 23:13:54
System.IO.FileNotFoundException: Could not load file or assembly 'MonoMod.Core, Version=1.3.2.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
File name: 'MonoMod.Core, Version=1.3.2.0, Culture=neutral, PublicKeyToken=null'
   at MonoMod.RuntimeDetour.Hook..ctor(MethodBase source, MethodInfo target, DetourConfig config, Boolean applyByDefault)
   at MonoMod.RuntimeDetour.Hook..ctor(MethodBase source, MethodInfo target, DetourConfig config)
   at MonoMod.RuntimeDetour.Hook..ctor(MethodBase source, MethodInfo target)
   at Celeste.Mod.Helpers.LegacyMonoMod.LegacyDynamicDataCompatHooks.InstallHook() in Celeste.Mod.mm/Mod/Helpers/LegacyMonoMod/DynamicData.cs:line 18
   at Celeste.Mod.Helpers.LegacyMonoMod.LegacyMonoModCompatLayer.Initialize() in Celeste.Mod.mm/Mod/Helpers/LegacyMonoMod/Misc.cs:line 19
   at Celeste.Mod.Everest.Boot() in Celeste.Mod.mm/Mod/Everest/Everest.cs:line 426
   at Celeste.Celeste..ctor() in Celeste.Mod.mm/Patches/Celeste.cs:line 312
   at Celeste.Celeste.orig_Main(String[] args)
manic tinsel
#

:(

manic tinsel
upper hound
#

hold on it didn't copy the core dll i think

manic tinsel
upper hound
#

gonna clear the build cache and try again

#

it's still 1.3.1.0

muted egret
#

try find /sys/devices/system/cpu/cpu0/regs/identification -type f -print -exec sudo xxd {} \;

upper hound
#

fixed it

copper bane
upper hound
#

ok so i got it to compile, patch and run

#

but it still compiles core i noticed

#

should i be worried

muted egret
#

yes i think so

upper hound
#

i guess i could make the submodule reuse latest mm packages?

#

niiiiiiiiiice

#

ok lets patch

#

works and runs it seems

#

you have git there right

manic tinsel
#

yes he has git

#

banger

#

snip you're our saviour

#

thank you danike as well for diving into the kernel mines

muted egret
#

ok this might be a bit much, but i want to know anyway

#

down at the bottom, there's a little c program

#

i want you to compile it with the system compuler and run it

manic tinsel
#

hm.

#

download this, and in the same folder, run the terminal command gcc test-feature-registers.c -o test-feature-registers

#

this will make the code into system code for your cpu to read

#

next you'll type ./test-feature-registers to test it out

#

@copper bane this is your task

copper bane
#

gimme a min

#

im making

#

coffee

upper hound
#

then to apply the patches

cd ~/Documents/Everest
git am everest-packagereference.patch
cd external/MonoMod
git am monomod-packagereference.patch
copper bane
#

back sorry

#

holy shit

#

shit gettin serious

#

@manic tinsel

manic tinsel
copper bane
#

is that good or bad

manic tinsel
#

this program is intended to help uncover the mysteries of your cpu

#

the switch said "no"

copper bane
#

nintendo doesnt want us to dwelve in

muted egret
#

that's actually what i expected tbh

copper bane
#

😔

muted egret
#

this is good though

#

this is an actionable issue in zig

#

@copper bane what's your kernel version (run uname -a)

copper bane
#

Linux napkin-piracy 4.9.140-l4t #5 SMP PREEMPT Thu Sep 26 11:18:43 EDT 2024 aarch64 aarch64 aarch64 GNU/Linux

muted egret
#

i see

#

upgrade your kernel lmao

manic tinsel
#

@copper bane how did you install Linux again?

muted egret
manic tinsel
#

ah.

copper bane
#

💔

manic tinsel
#

I mean theoretically you can just apt dist upgrade

upper hound
#

we can just apt dist-upgrade right

manic tinsel
#

..right?

copper bane
#

oh wait is that why it sometimes says to reset the system to update???

manic tinsel
#

no

#

KDE wants you to reboot every time you run apt-get upgrade iirc

#

but that's not completely necessary

copper bane
#

permission denied, sudo?

manic tinsel
#

yes

#

and

#

apt-get dist-upgrade

#

with dash

copper bane
#

so sudo apt-get dist-upgrade?

manic tinsel
#

yes

copper bane
#

gotcha

manic tinsel
#

I'm sorry for putting you through all that 😭

upper hound
#

ah

manic tinsel
#

what?

#

but it refused?

upper hound
#

did you run sudo apt update first

muted egret
#

does ubuntu let you compile and use your own kernel

manic tinsel
muted egret
#

it does not

copper bane
upper hound
#

id do that

muted egret
#

that would be useful behavior

manic tinsel
#

apt-get update right

upper hound
#

also yeah what danike said, it does not run update first

muted egret
#

and thus is antithetical to apt

manic tinsel
#

-# 😭

copper bane
#

so, sudo apt-get update and then sudo apt-get dist-upgrade?

manic tinsel
#

yes

copper bane
upper hound
#

awesome

#

i would run sudo apt autoremove

#

maybe that'll fix the dotnet weirdness

copper bane
#

was waiting for confirmation

#

so i didnt fuck anything up

#

done

upper hound
#

what does which dotnet show

copper bane
#

nothing

upper hound
#

what if

export DOTNET_ROOT=$HOME/.dotnet
export PATH="$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools"
#

and then which dotnet

copper bane
#

/home/napkin/.dotnet/dotnet

upper hound
#

ok sick

#

@mystic umbra fixed the dotnet situation

manic tinsel
upper hound
#

yeah

manic tinsel
upper hound
#

okay so do the patches now

#

let's see if that works

mystic umbra
mystic umbra
#

ive been ftl-ing really hard happylandeline

upper hound
#

have you been swimming in bytes

mystic umbra
#

this pr will be quite silly

upper hound
#

i saw

mystic umbra
#

anyway

#

we are nearing 3k messages, is this wr already?

copper bane
#

do i need to put my email

upper hound
#

are you fr

copper bane
upper hound
#

nah you can just put whatever technically

copper bane
#

i'll put my email just to be safe
uuuhhh how do i do that again

upper hound
#

the command tells you wholestare

copper bane
#

oh

muted egret
#

could also use git apply instead of am

upper hound
#

oh i used format-patch

#

does apply work on that

copper bane
upper hound
#

okay that worked

#

now the mm patch

copper bane
#

yay monkjoy

upper hound
#

worked again

#

now cd ../..

#

and try to dotnet publish -c Release

copper bane
#

🙏

#

no errors

#

50 warnings

upper hound
#

no errors though, right

copper bane
#

yes

#

only yello

upper hound
#

fuck yes

copper bane
manic tinsel
#

LET'S GOOOOO

copper bane
#

uuuhhh

#

now what

manic tinsel
#

now you dotnet run Celeste.dll peaceline
-# and we see the one thousand libs we're missing

upper hound
#

ok so

cp -r MiniInstaller/bin/Release/net8.0/publish/ ~/Documents/celeste
cp -r Celeste.Mod.mm/bin/Release/net8.0/publish/ ~/Documents/celeste
#

assuming thats where your celeste is

manic tinsel
#

yes that is correct

#

these commands copy MiniInstaller and the other mod libs to your celeste folder

upper hound
#

then

cd ~/Documents/celeste
dotnet run MiniInstaller.dll
copper bane
#

uuuuuhhhhhhh

#

okay so what first what then and what last

upper hound
#

you need the files to be in the celeste folder, right

manic tinsel
#

just follow Snip's lead

copper bane
upper hound
#

oh without the run.

#

ig

copper bane