• 0 Posts
  • 36 Comments
Joined 8 months ago
cake
Cake day: March 21st, 2024

help-circle
  • PPSSPP will attempt to establish connection to any IP or domain that is put in the ad-hoc server text box. So, much like a web browser, it entirely depends on where you tell it to connect.

    That being said, as for any security concerns, I am unaware of any exploits and/or wrongdoings with PPSSPP code, so you should be safe. It only passes the data directly between the emulated games and the chat box feature.


  • So, for PPSSPP multiplayer, you either need to be in a LAN with the other players or, as you’ve said, forward the port.

    So, if you’re on the same LAN as your friend(s), it’s as easy as setting the IP address to the host (on all the clients) and the same wifi channel in PPSSPP settings.

    If you wish to play online, it gets tricky. Most cellular data providers are behind something known as a CGNAT, which basically prohibits port forwarding.

    The only solution and workaround to this is to use a VPN tunnel that can put you in a virtual LAN with your friends but over the internet. One of the most commonly used software on PC for this is LogMeIn Hamachi. Not sure if there is anything like it on Android, though.

    I’ve actually set up a Yu-Gi-Oh Tag Force tournament for DLE but that quickly went nowhere after a couple episodes lol







  • Similarly how SilentPatch and the WidescreenFix fixes various bugs and adds improvements, mine does as well.

    As a matter of fact, I used to maintain ThirteenAG’s WFP for NFS. Now I’m focused on my own thing mostly. (Forked it off of it but barely any of the code is left lol)

    It’s called NFS-MultiFix. (I made one ages ago in 2017 for ProStreet but I’m reviving the project now).

    It’s a going to basically be an all-in-one thing. So, from basic things like a widescreen fix, to the added ability to change resolutions of environment maps and shadows, fixing clipped/popin shadows in Undercover, fixing crashes, fixing some crap gameplay features, resizable windowed mode, etc. Basically, making it a version of the game that it deserves to be on PC.

    It’s a genuinely pretty massive set of fixes spanning over 80 cpp/hpp files with about 500 lines of code on average. I made sure to optimize every nitty-gritty and I ended up with a smaller DLL size than the average widescreen fix while adding so many more features.

    I also have a design rule in place - it must do its best effort to work in every possible version of the game without crashing. This includes demo versions of the same games. (This sadly doesn’t count DRM but nothing I can do about that)

    That being said, I am currently focused on ProStreet (as I’m also the main coder in Team Pepega for the Pepega Mod) and I hope to make a release within the next year. It should be available for every Black Box NFS on PC (except The Run and World)

    If you wanna check out what I made so far, check out the Reformed mod for Undercover. I made an exclusive release for those guys because frankly, Undercover is the worst one out of the bunch (in terms of code).


  • Silent is a real cool dude. I’ve interacted with him directly and he’s always been helpful.

    I assume the code was closed only because it was a bit of a hodge podge he had to clean up. (Well, that and the GTA modding scene is a bit, uh, toxic, to say the least)

    I’m currently in a similar position for Black Box NFS games. It’s taken me over a year so far and I’m still not fully satisfied to release anything because there’s so much code to span over 6 (similar, but different) games.



  • It’s very good.

    Basically, there is one maintainer in the AUR (the name escapes me, jonathon I think it was?) who applies the necessary patches to the old NVIDIA drivers to make them run with a modern Linux kernel.

    Of course, there won’t be any Wayland support, but the experience is acceptable as long as you temper your expectations in terms of graphics API support. (No vulkan sadly)

    I hadn’t used it myself but I know a person who does and loves it. iGPU handles Wayland stuff while the NVIDIA is there for the heavy lifting in Xorg.




  • The way I did it is by trying to solve more and more advanced problems with simpler tools/features, then looking at more advanced features and seeing where they could be applied to make the problem solving simpler. Rinse and repeat.

    An easy example that I can remember is making arrays that dynamically expand. I started with the barebones malloc and worked out how to use std::vector (and other list types) in its place.

    Understanding that concept is, what I believe, to be the foundation of learning programming.

    I’m no pro whatsoever, but using this method really helps me pick up and learn new languages.




  • I’ll preface this by saying that I’m not familiar with Rust nor Hearthstone at all, but I do deal with D3D9 and D3D11 on Windows to do similar things. Hopefully this will give you insights how you could approach this. (Closest I’ve done was code injection on Android)

    The most common and robust approach to this is to hook/detour the API functions that the game imports from the renderer backend.

    One way you usually do this is by creating a dummy library which overrides/intercepts the system library and passes through every function call to the API, except for the ones you need, you’d put your code before/after the passthrough. This usually requires you to gather all exported symbols and re-create them, which is a very tedious but rewarding task, as it usually is very stable and can work around things such as DRM.

    Usually, since that sits quite low on the application’s code stack, it is most efficient for it to be a more general-purpose hook which can load other libraries. Examples would be things like the ASI loader or Reshade on Windows.

    Another way would be to do code injection via library side-loading. Essentially, you can simply load a library that performs the code hooks and does necessary renderer API hooking. This is usually done in combination with the previous method (it being a “plugin” loader), however, it is also possible to modify game binaries to call dlopen to load your library and its exported function as an entrypoint (in which case you need to do platform’s CPU assembly code for a bit).

    Those are the entrypoints for your code. After that, it is all about necessary render backend code that you need to do in order to draw graphics/text/etc.

    In C/C++ land I’d just tell you to use Dear ImGui, but seeing as that doesn’t exist for Rust, you’re kinda on your own.

    Same with the API detouring. Ideally, you’d make a plugin loader that does the job for you. Not sure if that exists in Rust yet.

    For references, Vulkan overlays such as MangoHUD or ReShade could be useful to help you figure out how to draw stuff on screen.

    As for the rest of your code - it can run in a separate thread that does the job for you as the game runs. Or, make a client-server relationship and make the game hook be the server for your info that you need.



  • And that’t the crux of the issue. Stenzek doesn’t actually understand the reality of licensing.

    The reality is this - you can’t do anything without a lawyer. Laweyrs cost money (pro bono isn’t a thing in the copyright world AFAIK, but IANAL).

    If he wanted to avoid this, then maybe he should’ve kept it closed source from the beginning. Chinese sellers on AliExpress couldn’t care less about licensing anyway, so that way he’d have at least some protection.

    IMO his course of action so far has been wrong.

    What he should’ve done is this:

    1. Cause a stir
    2. Get support from the community
    3. Open up donations for the project (or just himself, since you don’t want a repeat of Yuzu)

    He could even go after Arcade1up legally if he raised funds, but that’s not even worth the time if you ask me.