No teaming / Piping with more than 4 players. No hacking or cheating. No using any type of recoil script or macro. No box jumping. No bear glitching. No building in any loot spawns. No building / glitching inside rocks.No microphone spamming. No spamming in chat. No spamming campfires. No racism, period. No DDoS threats towards the server or any players. Jokingly cheating / hacking will result in a ban. Don't impersonate an admin or another player. Do not be toxic. Crouch running and Alt-Jumping are ALLOWED. Use the Help Desk for any questions you might have about these rules. If you believe your item has been removed by mistake, please contact Steam Support.
Please see the instructions page for reasons why this item might not work within Rust. No matter if you are here due to nostalgia, tired of KOS or player interaction in modern rust, welcome. In this simple & short guide I'll teach you how to join a rust server legacy in 2020 in matter of 10 minutes.
By clicking the button will send you to shield.net redirect where you will have to log in through steam, this is the window after you log in through your steam account. After receiving the confirmation email and clicking the link you are now registered and ready to play. Simply fill out the information and select the server you want to join.
This item will only be visible to you, admins, and anyone marked as a creator. This item will only be visible in searches to you, your friends, and admins.
Little did I know that I was about to hop into one of the greatest games I would ever play, which created long-lasting friendships and memories that to this day I still look back on. The new Rust felt like an impostor of the original, an attempt to cover up something so great that never got the proper attention it deserved.
Why spit in the face of the thousands of fans who spent $20 on what they were advertised, an arcade like survival game. Below are some reasons as to why the new Rust is simply not the good old Legacy that thousands fell in love with.
Whereas Legacy had an entirely opposite approach, allowing for more fun firefights and ultimately creating a greater experience with more memories. It was fun, pretty much arcade-like, the map was loving, the guns were great to use and every area had their own unique feel to them.
Making Legacy its very own standalone game would keep the current fans of the new Rust happy and bring back thousands of old players. The feeling of running into split-rad and finding an M4 or any gun was amazing, coming back to base with your first weapon made for a great sense of achievement.
Legacy firefights were instant registration when a bullet hit your target, making for faster-paced adrenaline rushed fighting. A game that didn't die out due to diminishing numbers, but was scrapped for something that felt so disconnected to the original.
Sign this petition to show Garry and Face punch that it deserves to be back, for the memories, for those long weekends of constant firefights and raiding, when survival games had real passion in them... This target disables SSE2 support and only emits instructions available on the original Intel Pentium from 1993.
So, for fun, I wanted to try compiling a binary that works on similarly old systems. After a quick search online it seems that the Visual C++ 2005 tool set is the last one that officially supports building for Windows 98.
A quick Windows 10 VM and Visual Studio installation later, I've copied the whole Microsoft Visual Studio 8 folder over to my host machine, knowing from previous endeavors that the CLI tools in Microsoft's C/C++ tool set are pretty much portable, as long as the environment variables are set correctly. The tool set includes a handful of batch files like vsvars32.bat, setting the proper paths and variables automatically.
I've copied it and altered all the paths to point to the correct locations on my host machine. Since I was sure that some tinkering with rust and/or the standard library will be necessary, I've checked out the Rust repo.
It took me an embarrassingly large amount of time to get the idea to run the linking command manually: It took me embarrassingly long again when retracing the steps while writing this blog post, since I didn't bother checking what caused it to “fail successfully”.
It has finally linked successfully, but the executable requires the VC 2005 redistribute, which I have installed on both the Windows 98 SE system and my host computer. This is highly discouraged for regular applications, but so is trying to compile for Windows 98 targets I guess.
I have tried running the executable with Kernel throughout this journey, but AddVectoredExceptionHandler is not one of the APIs it provides. I have actually done this part directly after setting up the Rust compilation by just searching for i586-pc-windows-msvc.
This changes the says module used for any 32-bit Windows of course, instead of just i586-pc-windows-msvclegacy, but I couldn't find any way to conditionally compile for a specific target triple, since that is not directly exposed as a configuration option. All C FFI declarations used for interfacing with Windows are neatly packed in c.rs, where I removed the declarations for AddVectoredExceptionHandler, SetThreadStackGuarantee and a few structs needed for those, since the compilation settings in the Rust codebase rightfully deny any unused code.
The next tool I have utilized was Hydra, a reverse engineering and code analysis tool set. So the most sensible thing to do is to open a hex editor, find the string RtlCaptureContext and replacing it with an import name that definitely exists in Windows 98, filling any additional space with \0.
We use Allying 1.10, which runs perfectly fine on Windows 98, like in the good of' times! After firing up Only and loading the executable, checking that everything works as expected, I've gone back to the import list to find out which kernel function would be a good candidate to set a breakpoint on.
Whitefish seemed like a good candidate, so I've reloaded the executable in Only, right-clicked in the disassembly window, selected Search for all intermodular calls, found two call to Whitefish, set breakpoints on both, pressed “play” to have the program running until a breakpoint and ... Even after helping Only by explicitly marking it as data and re-analyzing the binary, no additional calls seemed to be found.
The breakpoint hits, we see our string as a parameter on the stack, and step over the call. That the Windows NT console Rust targets is Unicode/UTF-16, so my attempt at writing a byte string directly to stout was converted to Unicode anyways (notice how Only also shows the string passed in as parameter as UNICODE), and that I have added uni cows incorrectly, since WriteConsoleW definitely is one of the supported functions.
We can see that “advapi32.lib”, “ws2_32.lib”, “Sean.lib”, and “licit.lib” are added before the linker arms from the.cargo/config, meaning the respective /nod (/Default ; disable default import) entries are without effect, and functions imported from these would not be wrapped by uni cows, as the linker priority order goes from left to right. Starting from here, all the Rust source code links will point to the tree at the exact commit I was at when working on this, since some features (e.g. #70093) are newer than the 1.43.1 that is current at the time of writing.
Until this point, each and every new executable needs to be edited to “remove” the RtlCaptureContext import that is still added somehow. In order to find the source, the tool dump bin, part of the MSC tool set, comes to help.
Si denote: Disabling backtrack support reduced the binary size by about 50 KiB, interesting! It works without further changes because NT 3.51 uses the same PE subsystem version 4 that NT4 and Windows 98 SE use, both of which are (more or less) supported by the VC2005 linker.