Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Subjunctive
Sep 12, 2006

✨sparkle and shine✨

ColdPie posted:

No. If you're distributing binary software, just target Win32 and run it in Wine. Win32 is the only stable ABI on Linux (web is too, I guess).

I can’t tell if you’re making fun of me or giving me really good advice.

Adbot
ADBOT LOVES YOU

Cartoon Man
Jan 31, 2004


Deck arrived, works great. Picked up Stray to be my first Deck game, it’s cute as all hell. I about cried at the beginning when my furball fell and got injured.

Insanite
Aug 30, 2005

Subjunctive posted:

I can’t tell if you’re making fun of me or giving me really good advice.

Well…

https://www.gamingonlinux.com/2022/08/valve-dev-understandably-not-happy-about-glibc-breaking-easy-anti-cheat-on-linux/

HopperUK
Apr 29, 2007

Why would an ambulance be leaving the hospital?

Cartoon Man posted:

Deck arrived, works great. Picked up Stray to be my first Deck game, it’s cute as all hell. I about cried at the beginning when my furball fell and got injured.

Oh man, good luck with the rest of it

ColdPie
Jun 9, 2006

Subjunctive posted:

I can’t tell if you’re making fun of me or giving me really good advice.

Definitely not making fun.


Lol didn't expect to see myself quoted when I opened this article. I guess you can now tack "pulse->pipewire" onto the end of that list, too.

ExcessBLarg!
Sep 1, 2001

Subjunctive posted:

I can’t tell if you’re making fun of me or giving me really good advice.
When your platform ships with multiple versions a massive compatibility shim that sees rigorous testing and considerable (almost exclusive) in-field usage, sure, it makes sense to target software to it. That says more about the Herculean effort of Proton and Wine than anything inherent to the Win32 ABI though.

For Linux native development, GNU libc goes quite well out of its way to provide bug-for-bug ABI compatibility for applications originally linked against older versions of glibc. The issue with EAC isn't the ABI, it has to do with the format of the underlying binaries themselves and is an issue for applications that have to parse binary contents (say, for attestation purposes in an anti-cheat package).

For the most part Linux-native development is, fine, especially with Flatpaks that provide a consistent set of library major versions. But if you're making a game that needs anri-cheat then sure maybe make use of Proton compatibility instead.

ExcessBLarg! fucked around with this message at 11:58 on Aug 17, 2022

Defenistrator
Mar 27, 2007
Ask me about my burritos
Spent 400 bucks just to be addicted to a 4$ game lol. Vampire survivors is fun.

HopperUK
Apr 29, 2007

Why would an ambulance be leaving the hospital?

Defenistrator posted:

Spent 400 bucks just to be addicted to a 4$ game lol. Vampire survivors is fun.

You are using your Steam Deck correctly!

Subjunctive
Sep 12, 2006

✨sparkle and shine✨

Is there a way to keep Steam on my desktop from needing my Steam Guard code to re-login after I play a game on the Deck? The Deck doesn't seem to have the opposite problem, so I'm hoping there's a way.

Cowman
Feb 14, 2006

Beware the Cow





Mat Cauthon posted:

Just got my deck, it was a pretty quick turnaround from confirming the order to getting it delivered. Right about a week before it showed up here.

What are the best resources for getting emulators up and running on this? Any recommendations on games to pick up, or things to set up right out of the gate?

Emudeck is what you need. It doesn't provide a BIOS/Firmware for the emulators that need it due to legal reasons but they're easy to find and not difficult to install.

I've only done the Playstation emulators but to install them just get the BIOS and look at where the emulator searches for the BIOS and plop them there. It's way easier if you just copy/paste the directory into Dolphin (what they call the Explorer) and go directly to it.

It's pretty easy to set up and if you do PS2 emulation make sure to disable the PS2-Legacy Parser in Steam ROM Manager otherwise you'll get doubles in your steam library.

I've got it mostly set up on my deck and can walk you through it if you want, just PM me. I haven't done switch emulation so I don't know how that works.

Edit: Or join the discord, it's quite helpful!

Cowman fucked around with this message at 14:51 on Aug 17, 2022

jokes
Dec 20, 2012

Uh... Kupo?

I think it's extremely stupid how Emudeck doesn't explicitly say that to use steam rom manager, you click 'preview' then click 'generate app list' and 'save app list' within the gui-- I had no idea. It just says "use steam rom manager", I thought I needed to do so much more!

It works really well-- like a dream! I use the buttons on the back for things like toggling 2x speed, changing screen layouts for DS, things like that and it's all just plain great. Skipping the emulators and getting right to the game out of your steam library is the best way to do it.

jokes fucked around with this message at 14:53 on Aug 17, 2022

Cowman
Feb 14, 2006

Beware the Cow





jokes posted:

I think it's extremely stupid how Emudeck doesn't explicitly say that to use steam rom manager, you click 'preview' then click 'generate app list' and 'save app list' within the gui-- I had no idea. It just says "use steam rom manager", I thought I needed to do so much more!

It works really well-- like a dream! I use the buttons on the back for things like toggling 2x speed, changing screen layouts for DS, things like that and it's all just plain great. Skipping the emulators and getting right to the game out of your steam library is the best way to do it.

If I can take screenshots of desktop mode, I'll do a walkthrough of how to set up EmuDeck for everyone later today. It's really quite easy but it can be intimidating.

Edit: Ok I can't take screenshots of desktop mode from what I can tell but I'll do a writeup over my lunch break of the steps I took to install it and post it in this thread.

Cowman fucked around with this message at 14:59 on Aug 17, 2022

jokes
Dec 20, 2012

Uh... Kupo?

Cowman posted:

If I can take screenshots of desktop mode, I'll do a walkthrough of how to set up EmuDeck for everyone later today. It's really quite easy but it can be intimidating.

That would be really amazing-- maybe someone can pop it into the OP if possible too so people can easily refer back to it. It is really, really easy to set up looking back on it but a completely new person would probably find it daunting.

I'd recommend showing the installation via default firefox which comes pre-installed, for new people, to make it as simple as possible.

Subjunctive
Sep 12, 2006

✨sparkle and shine✨

Cowman posted:

Edit: Ok I can't take screenshots of desktop mode from what I can tell but I'll do a writeup over my lunch break of the steps I took to install it and post it in this thread.

Can you bind a button to Shift+PrtScr or just PrtScr, or run spectacle somehow?

aarstar
Mar 7, 2004
It basically says that on their page unless I’m misunderstanding.

https://www.emudeck.com/#how_to_install

jokes
Dec 20, 2012

Uh... Kupo?

I don't think it used to say that, but I think they really revamped the whole emudeck website. Good to know! poo poo! I had to watch some loving youtube video.

Why does nobody type instructions out anymore I don't want to watch a 16 minute video on how to run chkdsk in a command prompt or something.

Chubby Henparty
Aug 13, 2007


As a suggestion, I've been using anydesk for anything vaguely technical in desktop mode (as well as using its file transfer) to avoid having to use the keyboard or button shortcuts. Might help for taking screenshots and formatting posts?

E: Avoiding double posting: There' s one game ('Horace', an epic-store game, installed through Heroic) that I just can't get running. All I know how to do is try some of the 3 streams of wine variant offered through Heroic. I'll see if I can just get steam to point directly at horace.exe next but if there' s any guide out there that will actually help me figure out what it needs that would be great...)

Chubby Henparty fucked around with this message at 15:41 on Aug 17, 2022

Cowman
Feb 14, 2006

Beware the Cow





Since I can't take screenshots in Desktop mode I figured I'd go ahead and do a writeup of what to do:
To get to Desktop Mode just push the steam button, navigate down to Power and select Switch to Desktop Mode

Definitions:
Dolphin is referring to the file explorer not the gamecube/wii emulator.
Discover is the app store to install various free programs specifically for Linux. It's very easy to navigate and the shortcut is the second icon from the steam deck logo at the bottom left of the screen. It looks like a shopping bag to me. EmuDeck is not on there so don't bother searching for it.

Notes before we begin:
Some emulators require a BIOS file. PS1,2,3 WiiU and Switch as examples need them. If a game won't start, check to see if that emulator requires a BIOS file.
on Windows, internal files are saved in paths like: "C:\<whatever>", but on the Deck, internal files are saved under "home\deck". For example your downloads on Windows are saved in C:\Users\<My Name>\Downloads. But on the Deck, downloads are saved to the Deck in home\deck\Downloads (Thanks jokes for explaining this)
Don't try to test ROMs in Desktop mode, they boot up in full screen and won't read your inputs. It's a real pain in the rear end to shut them down too. Save yourself the hassle and just test them in gaming mode.
An easy way to handle this is to install the steam link app onto your laptop/desktop and then remotely connect to your deck so you can use a mouse/keyboard instead of the touchpads. It's 100% doable with just the steam deck, this is just another option.

In Gaming Mode:
Some useful key presses via emudeck:

-STEAM+left on the DPAD shows PPSSPP settings
-Retroarch settings are accessible by pressing L3+R3.
(Thanks again jokes)

Basic controls for Desktop mode are:
Right Trigger is left mouse click
Right touchpad controls the mouse
Clicking the right touchpad is a left mouse click (I find it easier to just do R2 for clicking)
Right stick controls the mouse
Left stick scrolls up and down
Steam + X brings up the keyboard
Either use the left stick or the right/left touchpads to type (click on the thumbpad or hit A to select the letter)

1. Install Firefox via the convenient shortcut on the start menu on the bottom of the screen.
2. Go to https://www.emudeck.com and download the app
3. You'll download a file called EmuDeck.desktop, move it to the desktop and double click it.
4. EmuDeck will begin to install itself
5. Select Expert Mode (Don't worry it's mostly defaults here)
6. Select SD Card for the Install Location if you have one, otherwise select Internal
7. Turn off the ones that require a password (unless you have a password and want to install them. I haven't so I don't know what they do) and deselect Bezels because they're apparently extremely ugly.
8. Hit OK and then select a Theme (Doesn't really matter which one you pick afaik)
9. Hit OK and then you get a list of Emulators to install. The only one I'd recommend deselecting is PS2-Legacy but it's up to you.
10. Select the ones you want to use widescreen hacks. You can always change this in emulator options later. (I deselect all of them because widescreen looks really stretched).
11. Hit OK and then Hit OK on the reset configurations screen (This might be only if you're updating/reinstalling, if it doesn't show up don't worry about it)
12. Wait for EmuDeck to install! It'll automatically go through everything and install everything to the right locations.
13. It'll pop up asking you for login info for RetroArch Achievements. I don't have an account there so I just hit cancel and it continues along.
14. For me it pops up a warning about Yuzu not being configured, it might do this for you or it might not. I haven't messed with Yuzu so that's probably why. Just hit OK if it does pop up.
15. You're done! EmuDeck is installed! Hit Exit because you don't have any ROMs yet so you don't need to go to the Steam ROM Manager.

Installing ROMs:
After downloading some ROMs onto the Deck, it's time to install them. This is extremely easy and intuitive so don't worry. For this example, I'll install some PS2 ROMs and also walk you through where to put the BIOS that you obtained legally just like the ROMs. This is going to be assuming you selected SD Card for the previous steps. If you didn't, try to find the folder I mention at first and then follow the instructions. Hopefully someone else can fill in the blanks for that part.

1. The default download folder is the aptly named "Downloads" folder. Your ROMs and BIOS that you download are going to be here.
2. Open Dolphin (the file explorer not the emulator)
3. On the menu on the far left, scroll all the way down and under "Removable Devices" you'll see your SD Card called "primary". Double click that and open it up.
4. You'll see a folder called "Emulation" open that up
5. There's a folder called ROMs, open that up
6. Navigate to the folder named after the console your ROMs are on. In this example it's a PS2 ROM so we'll go to the ps2 folder.
7. Drop all your ROMs in this folder
8. Run EmuDeck Compression Tool, this will optimize the ROMs into the most compressed version to save you space. Hit OK on everything that pops up and let it run. This will take a while.
9. Open Steam ROM Manager
10. It'll shut down Steam so wait a minute and the controls will come back to you
11. Under Parsers, disable EmulationStationDE, Emulators and Sony Playstation 2 - old version (This only needs to be done once or when you reset settings on Steam ROM Manager)
12. Go back up to the top and select "Preview" at the top left
13. Click Generate App List
14. Wait for the "Remaining Providers" at the top middle to go away (It's gathering images for your steam library)
15. When that's done, click "Save app list" and then you're done! Return to gaming mode and play your games!

The nice thing is that this installs the ROMs into everybody's library. No matter how many accounts you have attached to the deck, they all will get the ROMs added to their library with images and everything.

Installing a BIOS for emulators that need it:
I haven't messed with Yuzu so I can't write anything for that unfortunately. This is specifically for PS1,2,3 and WiiU emulation. It's all the same process so it's probably the same with the Switch emulator. I'm assuming you've downloaded the BIOS and it's sitting in the Downloads folder.

1. Open up the emulator in Desktop Mode by clicking the steam deck logo in the lower left and navigating to "Games" and then clicking the emulator you want in the menu to the right
2. Find the BIOS option for the specific emulator. I'll be using DuckStation- QT as my example (It's Settings -> BIOS Settings)
3. You'll see a directory option, go back to Dolphin the file explorer and navigate to that directory (You can cheat by clicking the Folder title at the top and just copying over the directory. I don't know if you can copy/paste but you can go to the base directory and just navigate from there.) Make sure you enable seeing hidden folders by clicking the 3 bars at the upper right and enabling "Show Hidden Files". Some BIOS folders might be in hidden directories.
4. If needed make a folder in the base folder for your specific console. As an example, in Duckstation QT the default pathway was /run/media/mmcblk0p1/Emulation/bios so I made a psx_bios folder and then copied my BIOS files to there.
5. If you had to make a folder, go back to the emulator and add on the folder name to the end of the directory (you can either click Browse or just click the pathway and manually enter it)

With that the BIOS is installed, it's slightly different per emulator so you'll have to do some navigating yourself to find the right setting and folder locations.

If I got anything wrong please correct me, I did a reinstall of EmuDeck instead of a clean install but I believe it just runs through a clean install anyways so it should be the same regardless. If someone installed it Internally instead of the SD Card please do a separate writeup of the differences.

Cowman fucked around with this message at 16:41 on Aug 17, 2022

jokes
Dec 20, 2012

Uh... Kupo?

That looks great to me. I'm reading it as if I'm my wife trying to figure out how to do this poo poo right after getting a Deck.

To that end, I'd put in instructions to get to desktop mode before the "basic controls" for desktop mode part.

I'd recommend:

-putting in a note early on that "Dolphin" is the file explorer, and shares a name with an emulator for gamecube
-maybe putting in a note early on that "Discover" is an app store for installing apps like Firefox, among others
-putting in a note early on that some emulators require a bios file or else they just plain won't work
-putting in a note early on that the controller's inputs don't work in Desktop mode if Steam isn't on, but it automatically launches when you switch to desktop mode

Maybe, as useful knowledge for total beginners to Deck/Linux, explaining that on Windows, internal files are saved in paths like: "C:\<whatever>", but on the Deck, internal files are saved under "home\deck". For example your downloads on Windows are saved in C:\Users\<My Name>\Downloads. But on the Deck, downloads are saved to the Deck in home\deck\Downloads.

jokes fucked around with this message at 16:09 on Aug 17, 2022

Heran Bago
Aug 18, 2006




Can someone who speaks fluent Linux please translate this for me?

E: I get the end result and it's hosed up but I mean more why is it like this.

Heran Bago fucked around with this message at 16:16 on Aug 17, 2022

Cowman
Feb 14, 2006

Beware the Cow





jokes posted:

That looks great to me. I'm reading it as if I'm my wife trying to figure out how to do this poo poo right after getting a Deck.

To that end, I'd put in instructions to get to desktop mode before the "basic controls" for desktop mode part.

I'd recommend:

-putting in a note early on that "Dolphin" is the file explorer, and shares a name with an emulator for gamecube
-maybe putting in a note early on that "Discover" is an app store for installing apps like Firefox, among others
-putting in a note early on that some emulators require a bios file or else they just plain won't work
-putting in a note early on that the controller's inputs don't work in Desktop mode if Steam isn't on, but it automatically launches when you switch to desktop mode

Maybe, as useful knowledge for total beginners to Deck/Linux, explaining that on Windows, internal files are saved in paths like: "C:\<whatever>", but on the Deck, internal files are saved under "home\deck". For example your downloads on Windows are saved in C:\Users\<My Name>\Downloads. But on the Deck, downloads are saved to the Deck in home\deck\Downloads.

Edited that info in there, thanks for the suggestions! (I just straight quoted you on the last one). One thing though is that the controls do work if Steam isn't running. It's the default control scheme that I posted. If they didn't work then you wouldn't be able to run Steam ROM Manager as it shuts down Steam to do its thing.

Cowman fucked around with this message at 16:23 on Aug 17, 2022

Disappointing Pie
Feb 7, 2006
Words cannot describe what a disaster the pie was.
I used emudeck to setup the emulators but no extra buttons seem to be mapped? The DS emulator I can’t swap screens, I want to be able to map fast forward and or save states for SNES and Genesis to the back buttons. Are y’all just going into the actual emulators in desktop mode and changing settings in there?

avantgardener
Sep 16, 2003

jokes posted:

That looks great to me. I'm reading it as if I'm my wife trying to figure out how to do this poo poo right after getting a Deck.


I'd add for anyone who doesn't know - install the steam link app onto your laptop or desktop and use that to easily connect remotely to your deck so you can use a mouse and keyboard for doing desktop mode admin.

It pretty much sets itself up and is much easier than using the deck itself, or a dock, or ssh or vnc or whatever. I'm assuming that everyone with a deck also owns a PC of some sort.

Cowman
Feb 14, 2006

Beware the Cow





Disappointing Pie posted:

I used emudeck to setup the emulators but no extra buttons seem to be mapped? The DS emulator I can’t swap screens, I want to be able to map fast forward and or save states for SNES and Genesis to the back buttons. Are y’all just going into the actual emulators in desktop mode and changing settings in there?

The controls get weird on some of the emulators, they don't really tell you what button you're pushing. What I would do is just set whatever you want to do to a keyboard button then go into the steam controller settings and map whatever you want to that button. As an example, the WiiU emulator has Tab as the default button to switch screens so I bound every back trigger to Tab. Unfortunately I don't know what the default button is for Citra but you can go into the controller settings and set it to something there.

Subjunctive
Sep 12, 2006

✨sparkle and shine✨

GTO posted:

I'd add for anyone who doesn't know - install the steam link app onto your laptop or desktop and use that to easily connect remotely to your deck so you can use a mouse and keyboard for doing desktop mode admin.

It pretty much sets itself up and is much easier than using the deck itself, or a dock, or ssh or vnc or whatever. I'm assuming that everyone with a deck also owns a PC of some sort.

I did this but I can't detect my Deck when running Steam Link on my desktop. Did you have to configure anything on the Deck side?

I wonder if this is more mDNS fuckery from my router.

MarcusSA
Sep 23, 2007

I love the work people are doing on emulators but drat sometimes it feels like they intentionally make things as obtuse as possible.

jokes
Dec 20, 2012

Uh... Kupo?

Disappointing Pie posted:

I used emudeck to setup the emulators but no extra buttons seem to be mapped? The DS emulator I can’t swap screens, I want to be able to map fast forward and or save states for SNES and Genesis to the back buttons. Are y’all just going into the actual emulators in desktop mode and changing settings in there?

Each emulator is different, sometimes there’s no controller configuration.

Usually I use the game pad with trackpads setting for each game I gently caress with, map the buttons on the back to be specific keystrokes that I then map in the emulator settings to perform certain functions (all done within gaming mode). For example the bottom left button on the back I always map to semicolon, and then I make all the emulators’ fast-word toggle be mapped to semicolon. Then if I want to play a game at 2X speed I just push that button across all the emulators.

Some useful key presses via emudeck:

-STEAM+left on the DPAD shows PPSSPP settings
-Retroarch settings are accessible by pressing L3+R3.

Anyone know how to change the size of the screens in Citra? I want one screen to be big but the other one small, but not THAT small.

Aardvark Barber
Sep 7, 2007

Delivery in less than two minutes or your money back!




Here's the official shortcuts list from

https://github.com/dragoonDorise/EmuDeck

Opopanax
Aug 8, 2007

I HEX YE!!!


EmuDeck is way less complicated than it looks, the trick is to go to their website and follow those instructions exactly. If you try to do it yourself it’s an incomprehensible mess, if you follow their step by step guide it’s up and running in minutes

pseudorandom name
May 6, 2007

Heran Bago posted:

Can someone who speaks fluent Linux please translate this for me?

E: I get the end result and it's hosed up but I mean more why is it like this.

Philosophically, or this particular technical issue?

So, this particular technical issue is simple. About 16 years ago glibc & binutils developers changed how symbol resolution works in shared libraries, which lead to a huge performance improvement in application startup but was incompatible with the existing method. glibc and binutils are the things that actually do the symbol resolution, so this isn't wasn't a big problem since they were both changed simultaneously to use the new method, but the possibility existed that there were programs in the wild that relied on the old method and would break if the old method was removed. So their solution to this backward compatibility problem was to duplicate the data -- shared libraries would have the new format hash table which is what actually got used in practice, and there would also be a duplicate copy of the data in the old format hash table just in case something needed it. This backward compatibility decision came with the intention that one day the redundant & obsolete data would stop getting generated because nothing used it anymore. 16 years passed, and they decided to finally stop including the obsolete format data because surely nothing uses it anymore, right?

Unfortunately, EAC newly started depending on the obsolete data only just a year ago and stops working if it isn't present. Apparently Shovel Knight also requires it, which is weird. (I can understand an anti-cheat program wanting to muck around in low-level stuff like symbol tables but not an ordinary game like Shovel Knight, but I digress.)

When this issue got reported to the glibc developers, they declared EAC and Shovel Knight to be broken in a very "Am I out of touch? No, it is the children who are wrong." moment. In some sense, they're right. They've been meaning to remove the old format hash table eventually for the last 16 years, and they finally did it. Unfortunately, they never really communicated this publicly -- there was no notice that this was finally going to happen and no grace period where glibc detected applications that relied on the deprecated soon-to-be-removed feature and warned about it in your system logs or whatever, they just turned it off one day and shipped it and things started breaking.

And this is where they became unreasonable, because what the Adults have figured out is that your Application Binary Interface isn't what you say it is and it definitely isn't what you wish it to be, in practice your ABI is whatever is experimentally observed to be true. They call this Hyrum's Law.

Microsoft built the entire Windows platform around this principle, because if you want people to keep giving you money, you have to make sure that their stuff keeps working after they buy a new version of Windows. (And they've taken this to some wild extremes -- if a defective program has a 1 in 1000 chance of crashing and a change to Windows lowers that to 1 in 10 or 1 in 100, then it is Windows that is broken, not the trashfire made by idiots. If a working system is produce by two variables, Windows and piece of poo poo application, and the user changes one of the variables (Windows) and keeps the other (the turd) the same, and the turd stops working, then the user is going to blame the thing that changed (Windows) not the thing that stayed the same (the turd), no matter who is actually at fault.)

The bonkers thing is that this change was done to glibc to save 16 kilobytes of disk space that isn't ever used at runtime. The logical thing would be to revert the change and keep generating the obsolete data, but they don't want to do that for some insane reason. It might be Open Sores fanaticism, glibc used to be particularly infested with that, and while they generally care a lot about maintaining a stable ABI and backwards compatibility, in this case the victim is a closed-source anti-tampering program relying on internal implementation details and interfering with 16 year old plans, and that may be setting off their religious zeal. Or they might be frustrated that once again something external is interfering with the long-held plans (glibc has had a bad malloc for decades because emacs relied on its internal implementation and it took them years to untangle that mess). But I think its more likely they just need to work around to doing the right thing while saving face.

Hammer Bro.
Jul 7, 2007

THUNDERDOME LOSER

Haha. I should've known more about that than I did, but now I do. Thanks!

Sapozhnik
Jan 2, 2005

Nap Ghost

linux

linux never changes

e: do these people not have jobs at whatever company pays them to maintain core infrastructure? where if you answer your boss with "but i don't want to do that, it's not ~elegant~" then the next thing out of his mouth is "you're fired"?

Athanatos
Jun 7, 2006

Est. 1967

I added this to the OP.

If there are any more great guides or tips, etc I should put in there, quote me and link them please!

Someone can also make a new post launch thread with an OP if you are all about that life, but I'll edit in whatever.

Cowman
Feb 14, 2006

Beware the Cow





Athanatos posted:

I added this to the OP.

If there are any more great guides or tips, etc I should put in there, quote me and link them please!

Someone can also make a new post launch thread with an OP if you are all about that life, but I'll edit in whatever.

Aardvark Barber posted:



Here's the official shortcuts list from

https://github.com/dragoonDorise/EmuDeck

this should be added because I had no idea this existed and it's incredibly useful. Also thanks for adding my tutorial to the OP!

pseudorandom name
May 6, 2007

Sapozhnik posted:

e: do these people not have jobs at whatever company pays them to maintain core infrastructure? where if you answer your boss with "but i don't want to do that, it's not ~elegant~" then the next thing out of his mouth is "you're fired"?

They work for Red Hat and by extension IBM, and Red Hat/IBM DGAF about the Steam Deck.

An additional wrinkle is that apparently EAC also uses a bunch of GLIBC_PRIVATE functions that got removed as a part of the merger of libc and libpthread/librt. As the name GLIBC_PRIVATE suggests, they're an internal implementation detail and they're not going to come back. So their position could be, yes, we broke EAC by removing the DT_HASH table, but we also broke EAC by removing all those GLIBC_PRIVATE functions, and we are absolutely not going to add any of the GLIBC_PRIVATE functions back so there's no real point in adding the DT_HASH table back either since EAC is going to have to fix their poo poo regardless.

Another thing to consider is that anti-tampering programs like EAC and Denuvo do a bunch of gross stuff on Windows too, stuff that Microsoft adamantly does not support like making raw system calls instead of calling functions in KERNEL32.DLL/etc. (every new build of Windows randomizes the system call numbers specifically to prevent applications from doing this), and the anti-tampering vendors have to continuously update their software to keep working as Windows changes.

So glibc refusing to budge for gross anti-tampering hacks could be them refusing to cater to this bullshit in the same way that Microsoft refuses to cater to this bullshit.

I personally think that the DT_HASH should be added back since that's trivially easy to do and costs nothing and anybody relying on GLIBC_PRIVATE symbols should go gently caress themselves.

pseudorandom name fucked around with this message at 17:44 on Aug 17, 2022

Antigravitas
Dec 8, 2019

Die Rettung fuer die Landwirte:
People who work on glibc are a special bunch. In a way I get it, you're responsible for a codebase almost as important as Linux itself, you're going to have to be particular about everything or get pulled apart by everyone's very urgent and special requests.

That said, not emitting deprecation warnings for a few years is inexcusable.

jokes
Dec 20, 2012

Uh... Kupo?

Cowman posted:

this should be added because I had no idea this existed and it's incredibly useful. Also thanks for adding my tutorial to the OP!

I agree, that chart is need-to-know for emudeck.

Thank you for writing that guide, btw!

mistermojo
Jul 3, 2004

this thing is great, I love having suspend/resume for PC games. SteamOS is a lot less snappy than I was expecting even when there's no game running though. but hey it's early access

ExcessBLarg!
Sep 1, 2001

pseudorandom name posted:

When this issue got reported to the glibc developers, they declared EAC and Shovel Knight to be broken in a very "Am I out of touch? No, it is the children who are wrong." moment. In some sense, they're right. They've been meaning to remove the old format hash table eventually for the last 16 years, and they finally did it. Unfortunately, they never really communicated this publicly -- there was no notice that this was finally going to happen and no grace period where glibc detected applications that relied on the deprecated soon-to-be-removed feature and warned about it in your system logs or whatever, they just turned it off one day and shipped it and things started breaking.
Exactly how is glibc supposed to emit such a warning? If you're calling open(2) on the binary and manually parsing its contents, glibc doesn't know you're reading DT_HASH. I don't know exactly what EAC does here, if it's completely manually parsing ELF or if it's using libbfd for some of it, but it's entirely possible that if glibc tried to emit deprecation warnings for this they wouldn't be triggered, or would be ignored anyways.

Now, glibc does emit deprecation warnings for other stuff, so they're not fundamentally opposed to giving notice.

pseudorandom name posted:

And this is where they became unreasonable, because what the Adults have figured out is that your Application Binary Interface isn't what you say it is and it definitely isn't what you wish it to be, in practice your ABI is whatever is experimentally observed to be true. They call this Hyrum's Law.
I think it's a stretch to say that the DT_HASH section of the binary is part of the ABI in the first place. If nothing else, EAC is certainly doing things that are far out of the norm for a traditional Linux application. Which, is fine, it's a very unique piece of software, but it's also unsurprising that this kind of thing, happens.

It also makes me wonder what exactly EAC does with DT_HASH anyways. If it's reading the contents for attestation purposes, that could be problematic because the loader actually use DT_GNU_HASH and so it might be possible to construct a binary that behaves differently between the EAC verification pass and runtime, and potentially lead to cheat injection.

pseudorandom name posted:

The bonkers thing is that this change was done to glibc to save 16 kilobytes of disk space that isn't ever used at runtime. The logical thing would be to revert the change and keep generating the obsolete data, but they don't want to do that for some insane reason.
If it turns out the only significant modern consumer on Linux systems is EAC I don't think it's unreasonable for the glibc folks to say "fix it" and move on. The biggest consumer of EAC itself is Valve/Steam Deck, then Valve can just keep "bad" versions of glibc out of SteamOS until EAC is updated.

Is Valve/EAC seriously suggesting they should continue to use a 16-year deprecated feature for which they're the only modern consumer, for reasons?

ExcessBLarg! fucked around with this message at 18:03 on Aug 17, 2022

Adbot
ADBOT LOVES YOU

Cowman
Feb 14, 2006

Beware the Cow





jokes posted:

I agree, that chart is need-to-know for emudeck.

Thank you for writing that guide, btw!

I had someone instruct me on how to install EmuDeck in the discord and then I figured out the rest through googling and just tinkering so I thought I'd share it so others don't have to scrounge for it like I did. I'm seriously obsessed with this thing and figuring out how to do all sorts of stuff with it so I'll probably do a write-up of the different emulators when I get around to tinkering with them (still have to figure out how to get the Dolphin emulator to work properly with Wii motion controls).

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply