Jump to content
LaunchBox Community Forums


  • Content count

  • Joined

  • Last visited

Community Reputation

75 Excellent


About Nielk1

  • Rank
    32-Bit GPU

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @Lahma This is all sounding very familiar. I recall running into the issue because I was injecting the shortcut into Steam as ASCII mangling the UTF8 characters but generating my shortcut ID properly, so they were out of sync. I'll need to look through your logic some time to see what I can do to get a cleaner Steam interop working without all the weird stuff I do now. I need a clean Steam Context for a lot of things and wrapping Steam4NET2 as a base is giving me a lot of issues. Is any of your code online yet?
  2. @Lahma FOUND IT! I'm not sure what API you are using. I was/am still using the old Steam4NET2 API that I have to keep up to date for any unstafe functions (functions that Steam itself uses that change location and stuff that were the bane of my existence). Anyway, check this out here: https://github.com/Nielk1/GameLaunchProxy/commit/0e47a7a8662b687e992cce663494b613fdd0b04e#diff-8383a708f32c5565f1e7e3bf7b24c53dR92
  3. @Lahma I recall the é issue in my LaunchProxy thing but I can't remember how/if I dealt with it as it's been so long since I poked the code. Just mentioning it in case I had worked around it there'd be code to look at, but I honestly can't remember if it was sorted.
  4. I'm sure the blocking is an accident of how some part of RL works with its bezel and other display logic. IDK if I can solve it but I've been too busy to do a lot lately (hence why my own Steam Proxy has fallen into disrepair).
  5. Yes. It gives access to chat and a web browser (of admittedly dubious quality) as well as, if you are using Big Picture or a Steam Controller, controller configuration.
  6. The entire point of launching through Steam is to access its overlay, especially if you use a Steam Controller.
  7. For some reason I've not yet discovered RL's launch structure seems to block the overlay. I've not determined if it's due to the overlay hooking the wrong level or process hierarchy because I've not had a chance to dig into it.
  8. That's good to hear. I wish the plugin system had been around when I started this project, as this is the perfect candidate for that. I will definitely check out your code when it's up. I have my old SteamTools plugin that also needs a ton of work, so when I have time again to work on plugins things could get a bit interesting.
  9. I have never used such a thing before but it sounds very interesting. I normally work in the managed world and rarely have to interface with stuff like this. When my other projects clear up I do plan to get back to this and trying to make a more stable API layer out of it. Honestly I normally dig around github until I find a user who's put table dumps up. I am able to use IDA (I've used it to do ASM injections to N64 game save-states and to reverse engineer simplistic encryption logic) but I do so quite rarely if I can help it as the ASM world is one that leaves me tied to a reference sheet the entire time I am digging around.
  10. Writing only works if Steam isn't running. Reading works fine if Steam is running; at least I haven't had any file locking or anything.
  11. @Lahma Rarely, maybe twice. That specific vftable doesn't change often. Other ones change a lot more often that I use for other things, but this one's pretty stable. You'll also note I wrote a custom parser for the binary VTF formatted file that holds the shortcuts to get around using the unsafe functions whenever possible. These functions are the functions the Steam client itself uses to talk to the Steam libraries, hence why they change randomly.
  12. Yea it's a virtual function table that's a real pita. I often dig around and find someone else's vftable dump but sometimes I have to use IDA myself. I wish I could avoid all these "unsafe" functions.
  13. The program is rather old vs LaunchBox so some stuff is done in it in an odd way. The logic was supposed to do the following: Attempt to find an existing shortcut, use it if it exists (such as from ICE) Attempt to find and rename the SteamProxy shortcut, if it works, use it Attempt to find the platform shortcut and use it Attempt to find the SteamProxy shortcut and use it without renaming it All of this assumed that an address offset error would be catch-able, but it was not, so it basically failed hard when step 2 failed. I have an entirely new design I want to use (a new program from scratch) but I've not had time. There is this amazing function that doesn't make much sense for existing that adds a shortcut to Steam that disappears after Steam is closed and cannot be edited by the user in the Steam client which is a great candidate. I am also still looking for a good way to catch these errors. One way a LB plugin I made called SteamTools survives is the fact its Steam4NET is wrapped in a proxy application because of the 32bit interface, but even then it doesn't respond very kindly because the 32bit proxy application can't properly report an error back along the loopback it uses for IPC. The fact functions could move also makes things a bit rough since if someone is on the Steam beta client they could have crashing while someone not does not, so an address fix would have to be released at just the right time and people grab it. I was thinking about maybe an automated method of correction but the software would have to detect that it has the wrong version of Steam4NET for the Steam instance that is running and grab a new one. Edit: For note, the original proxy's entire purpose was to load fonts temporarily into Windows in such a way they would not stay loaded and even if everything crashed they'd be done after a system reboot. All the Steam stuff was an afterthought.
  14. @guygizmo I welcome pull requests. Be aware that some of the dependencies, like my Steam4NET fork can be a bit hairy. I have been thinking about moving all this stuff to a "company/group" page on github to move it away from the unrelated projects as it's starting to span a few repositories. I also need to work out some bugs in my context and stuff. Quite proud of the fact it works though, especially dealing with the 64 vs 32bit issue.