Oh cool, I didn’t know!
I’ll go check it out, thanks!
I want to try to use Rust myself as well to build a library and I wonder how it’ll turn out (especially since I do Win32 hacks mostly lol).
Oh cool, I didn’t know!
I’ll go check it out, thanks!
I want to try to use Rust myself as well to build a library and I wonder how it’ll turn out (especially since I do Win32 hacks mostly lol).
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.
It’s just their ego showing through.
It basically now comes down to the current devs depending on new Rust devs for anything that interacts with Rust code.
They could just work together with Rust devs to solve any issues (API for example).
But their ego doesn’t allow for it. They want to do everything by themselves because that’s how it always was (up until now).
Sure, you could say it’s more efficient to work on things alone for some people, and I’d agree here, but realistically that’s not going to matter because the most interactivity that exists (at the moment) between Rust and C in Linux is… the API. Something that they touch up on once in a while. Once it’s solid enough, they don’t have to touch it anymore at all.
This is a completely new challenge that the Linux devs are facing now after a new language has been introduced. It was tried before, but now it’s been approved. The only person they should be mad at is Linus, not the Rust devs.
I’m surprised nobody thought of the demoscene twisters
I can confirm. I feel miserable here. 14 days of 30c and above.
No AC in the house. I am living in the basement lol
Help.
Oh this is the “next gen” update? That would explain things.
Oh well…
Technical question - does the script extender use signature/pattern scanning at all?
It sounds to me that it may have broken because it doesn’t use it.
You could say “oh they recompiled it so the registers changed” but I highly doubt they changed the code that much or touched optimization flags.
It’s not bad at all, actually. The interpreter is excellent and the Apple devices are fast.
The benchmark game would be Gran Turismo, where it can lag really badly in the menus. But other than that, a lot of the games run just fine.
Ridge Racer
Gran Turismo
GTA Liberty City Stories
GTA Vice City Stories
God of War Ghost of Sparta
Maybe Tekken 5 DR if you can stand playing it on a portable device.
Loco Roco
And if you’re into Yugioh - Tag Force are some of the best games in the series.
That’s my list OTOH.
It’s already been done. Black Box’s NFS Carbon until Undercover all have ad clients built in that did that exact thing (displaying real ads on billboards).
Luckily it doesn’t work but if someone were to buy the domain it could be dangerous.
A little thing called the “Massive Ad client” exists in NFS Carbon, Pro Street, Undercover and even World.
It was used to download ads off the internet and display them in the game’s own billboards.
It was also an entrypoint for a NFS World hack too lol so ripbozo EA
A little thing called the “Massive Ad client” exists in NFS Carbon, Pro Street, Undercover and even World.
It was used to download ads off the internet and display them in the game’s own billboards.
It was also an entrypoint for a NFS World hack too lol so ripbozo EA
AFAIK LUnix exists as the “little Unix” project aiming to run on the Commodore 6502 computers.
There’s even a video where someone got it to run on a Famicom.
They kinda don’t have the sources there. That’s a decompilation by IDA in that image.
But nevertheless they could run it if they set up an arm64 machine, technically.
One thing, I don’t know why
I bought a PS5 with no games to buy
I got banned from “World News @ lemmy.ml”
Gee, what else is new?
I’ve worked with Dennis in the past on NFSMods.
Surprised it took this long for something like this to happen.
Yep, shadow games had actual repercussions.
The manga is about various different types of games (not just Duel Monsters) and the darkness revolves around the Millenium Items. Shadow Games are initiated by the wielder of an item and the loser (or worse, cheater) dies.
The closest we got are the Season 0 and the first movie.
But don’t disregard the japanese original animes that do involve the new direction. They can get quite dark too.
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.