Hacking a Game From 2000 To Run On Windows 11

  Рет қаралды 74,492

Nathan Baggs

Nathan Baggs

Күн бұрын

Пікірлер: 291
@nathanbaggs
@nathanbaggs 4 күн бұрын
Want early access to new videos and some behind the scenes content? Consider becoming a channel member kzbin.info/door/QvW_89l7f-hCMP1pzGm4xwjoin I also have coffee - 0xcoffee.com
@ThePlayerOfGames
@ThePlayerOfGames 3 күн бұрын
Thank you for your videos, they've certainly inspired me to watch many hours of ghidra tutorials
@teeteenine2222
@teeteenine2222 3 күн бұрын
so back in the day people would use certain colors to represent transparency like magenta or cyan so that might be why the balls has magenta around them
@ExonerativeKoala
@ExonerativeKoala 4 күн бұрын
ERROR_SUCCESS hits close to home
@KillerQ13
@KillerQ13 4 күн бұрын
Error: No error
@avramlevitter6150
@avramlevitter6150 4 күн бұрын
It's why I dislike the entire return-code paradigm. It's so easy to have this happen
@hubertnnn
@hubertnnn 4 күн бұрын
Its a normal thing. Since you always have to return something and that something must be an error code, then what do you return if there is no error? Well, you return the error code of success.
@ChichaGad
@ChichaGad 4 күн бұрын
Windows XP: _ X "Task failed successfully" [ OK ]
@sanphir3
@sanphir3 3 күн бұрын
I'm with you! ERROR_SUCCESS is taking me back 😂
@markexclamation
@markexclamation 4 күн бұрын
The value corresponding to magenta was often used as the masking value in old games. There is probably a function in ddraw to set this masking value to magenta so when the drawing operation occurs (the blit) it will not draw those pixels to the screen. Thats better than changing them to white I think.
@soviut303
@soviut303 4 күн бұрын
It has to do with the fact that unlike white or black, magenta is a really uncommon colour to be used in most game's graphics, so it makes an excellent colour to be used for 1-bit transparency.
@TheLukasDirector
@TheLukasDirector 2 күн бұрын
Exactly. It's like how green is used on greenscreens. IIRC, MS Visual Studio also used to have magenta as the transparency color for .ico files and the like (in place of something like a checkerboard).
@alessandroceloria
@alessandroceloria Күн бұрын
​@@TheLukasDirector Windows itself also used it. I vividly remember exporting and editing sprites for taskbar elements from Windows XP's explorer.exe and transparency was encoded as magenta there as well! I don't remember if those were BMPs or ICOs but seems like a pretty consistent choice from Microsoft
@TheLukasDirector
@TheLukasDirector Күн бұрын
@@alessandroceloria Interesting, never knew you could do that through Explorer. The VS version I last did this on was 2005 by the way, so definitely XP era. As for your taskbar sprites: standard Windows .bmps have no transparency AFAIK, so those ought to have been .icos.
@keckstreme
@keckstreme 4 күн бұрын
OH MY GOD I was searching for this exact game for years! And I randomly stumbled upon it in a youtube video. This is a game I loved playing when I was little. After 13+ years I will be able to play it again!!!! Thanks Nathan!
@Mwapaca
@Mwapaca 4 күн бұрын
We were playing it on a windows 98 computer with my brother, without internet it was almost the only things to do with roller coaster tycoon 2 and sim city 3000. Good times.
@FR4M3Sharma
@FR4M3Sharma 4 күн бұрын
There's another fun game called Jardinains it's also a Brick Breaker and works on win10/11
@ChadDore
@ChadDore 4 күн бұрын
I knew there had to be other people who liked this game. I remember trying out all the breakout clones I could find on the internet about 20 years ago and this one really stuck out.
@FR4M3Sharma
@FR4M3Sharma 4 күн бұрын
@@ChadDore Hi Chad. How far are you into the reimplementation? What's the name of the project on github?
@ChadDore
@ChadDore 4 күн бұрын
@@FR4M3Sharma I'm calling it "Paddles, Balls, Blocks and Walls" lol, I'm not sure if that was a good idea. Nathan put a link to it in the description under the video. I'm only about a week in, I started first in Python but then switched to Godot which I've really been wanting to learn anyway. I have a lot of things in the works for it. Will probably post a video about it later this evening. Hopefully I can do the original some justice!
@micaiahstevens8840
@micaiahstevens8840 4 күн бұрын
As a fellow game developer, I don't want to go too overboard here. AS I really enjoy your presentations and the passion and amount of work it takes. I almost wish I had the time, and patience to do what you do. SOOO talking about Magenta, and it really sounds though as you missed a FUN time of EARLY game development. The color is a masking color that represents transparency. I think by overriding DirectX 3 you're missing its magic that is taking the mask OR them together or some such magic. Personally, I never understand the behind the scenes, or forget how it worked exactly. I never got a good working game back in the day. Anyways felt it was simple yet missed in your comments and confusion. I am SURE you are well familiar with the concepts just not seeing it in an image. Thanks for doing a GREAT job, this ia super useful skillset.
@pixelcatcher123
@pixelcatcher123 4 күн бұрын
i use 0xABCDEF to make something trans but yes i remember a game where u had a guildsign wich u can customize it with gimp or something and there was magenta to represent transparency but if i remember right it was a bmp
@renhoeknl
@renhoeknl 4 күн бұрын
I used this method to get animated backgrounds in the early 90's I think. Change your background to a solid magenta, run a movie clip on repeat in a player and then minimizing the player. The videocard would then replace the magenta background with the movie.
@dddanmar
@dddanmar 4 күн бұрын
+1 Magenta was the non PNG transparency layer in a lot of cases
@Sypaka
@Sypaka 4 күн бұрын
Even Windows XP is guilty of that. They use AVI for the animation on the "copy files" dialogue. Guess the color.
@bradallen8909
@bradallen8909 3 күн бұрын
Anything involving DirectX is not “early” game development.
@ChadDore
@ChadDore 4 күн бұрын
Thanks Nathan! I bow to your greatness!
@nathanbaggs
@nathanbaggs 4 күн бұрын
Thanks for the fun challenge (:
@tangocat73
@tangocat73 2 күн бұрын
Out of curiosity , I downloaded the game, and fiddled around a bit in Lutris under Linux Mint, using WINE. To my surprise, it worked, with sounds, controls and everything. It is funny that nowadays Linux plays vintage DOS and Windows 95/98 games better than modern Windows 11.
@berthold64
@berthold64 Күн бұрын
still not using linux
@Mario583a
@Mario583a Күн бұрын
"If I recall. NTvdm never got a port to 64-bit since the CPU mode it relied on for fast 16-bit code execution gets disabled when a x86 processor is switched into long mode. WineVDM is likely translating 16-bit instruction calls to 32-bit and then passing that off to Windows"
@jtsiomb
@jtsiomb 4 күн бұрын
The purple thing is the "colorkey" there should be a IDirectDrawSurface::SetColorKey call which sets which color should be skipped (be transparent) when blitting with source color key enabled. Using palettes is not "how direct draw works", it's how 256-color video modes work. Direct draw supports all available video modes supported by the hardware, including true color. And the fake 3D letters with the ball sprites is a classic demoeffect called "vectorballs".
@mopanda81
@mopanda81 21 сағат бұрын
thanks for putting a name to it!
@_boux
@_boux 4 күн бұрын
I was curious, so I downloaded the original Block 1.30 game (from the wayback machine link in the github page's readme). I'm on Linux and I heard that wine is really good with super old windows software. So I just double-clicked the exe and the game ran as-is. All the visual effects were intact (such as the particle explosion when hitting a brick). Pretty cool
@nathanbaggs
@nathanbaggs 4 күн бұрын
Interesting, maybe Linux is the best way to play Windows games. This was still a fun challenge though
@InnerEagle
@InnerEagle 4 күн бұрын
@@nathanbaggs Considering there are many ways to do it, it's still fun to do it physically
@iliqiliev
@iliqiliev 4 күн бұрын
Thank you, I was curious the whole time if Wine would have just run it and I'm happy that it did.
@Dewm_
@Dewm_ 3 күн бұрын
​@@nathanbaggs Despite WINE really being meant for operating systems other than Windows to run applications; windows itself is more than capable! Before I made the full time switch to Linux I actually enjoyed utilizing "WineD3D" for windows, and other various projects to run windows games in Vulkan for either better compatibility or improved CPU scheduling and frame times in some cases.
@Mario583a
@Mario583a Күн бұрын
@@nathanbaggs From a comment of MichealMJD's video of [Run 16 Bit Programs on 64 Bit Windows]: If I recall. NTvdm never got a port to 64-bit since the CPU mode it relied on for fast 16-bit code execution gets disabled when a x86 processor is switched into long mode. WineVDM is likely translating 16-bit instruction calls to 32-bit and then passing that off to Windows
@ac15cr
@ac15cr 5 күн бұрын
Chad coming in with a chad challenge
@nathanbaggs
@nathanbaggs 5 күн бұрын
And a fun challenge it was
@cheese5742
@cheese5742 4 күн бұрын
There was this mmo i used to play that used magenta in its launcher for pixels that are supposed to not be drawn / be transparent, probably what is happening here too.
@hubertnnn
@hubertnnn 4 күн бұрын
I wonder what was first, usage of magenta to define transparency in the bitmap, or showing magenta on screen when something cannot be correctly rendered. In both cases someone really hated magenta.
@nikkiofthevalley
@nikkiofthevalley 4 күн бұрын
​@@hubertnnnIt's more that 1, 0, 1 magenta is a color that is basically never used, so it can be used as a special indicator.
@jamesread11
@jamesread11 4 күн бұрын
I feel like a lot of the issues you had were self inflicted because you wanted to run in windowed view, could yoh not run full window with multi monitor and give the app one monitor and run debug on the other monitor and alt tab to it? Great work by the way your technical knowledge and ability blows my mind
@nathanbaggs
@nathanbaggs 4 күн бұрын
So I do have a second monitor, but the full screen mode also changes the resolution so alt+tab doesn't really work. I tried to show this but OBS didn't really like it so I guess it looks like I glossed over it a bit. I also wanted to make it windowed so Chad could easily run it whilst doing his port, without taking over the fullscreen
@qwert_au
@qwert_au 4 күн бұрын
I know these videos are an insane amount of work, but I really do love watching them. They're very entertaining- coming from a non-programmer with an interest in the topic. I hope you keep doing them!
@plusplusplus9837
@plusplusplus9837 4 күн бұрын
Awesome! I’m glad your leap of faith in running this outside of a VM was rewarded
@nathanbaggs
@nathanbaggs 4 күн бұрын
Me too
@mads2k5
@mads2k5 4 күн бұрын
This NathanAI is crazy! You simply throw some emails at it and it gives you the best answers!
@rojovision
@rojovision 4 күн бұрын
Yeah like you surmised, the magenta color is the placeholder for transparency because the data would have likely been loaded as RGB not RGBA at the time DirectX 3 was in use. I'm not sure graphics chips of the era could efficiently do transparency blending in the way it's done now, but I don't recall the details. Not super important, but It's a bit strange that a game from 2000 would be using DX3 since we were already at like version 8 or 9 by then. DX3 is from the Windows 95 era.
@phill6859
@phill6859 4 күн бұрын
Windows NT 4 was officially DX3. Windows 2000 shipped with DX7, and someone did take DX5 and DX6, I believe from a beta version of Windows 2000 when it was called NT5, and made it work with NT4. I used it in the late 90s, because I needed NT4 for stability. I suspect the developer of the game may have been using NT4 or wanted to support NT4
@hubertnnn
@hubertnnn 4 күн бұрын
Its probably due to backwards compatibility. If you make a game in DX8 it will only run on Win 2000, if more than 50% of devices were still using 95, 98, or maybe even 3.11, then its better to use older libraries and make the game run on more devices, then limiting your market just to those who can afford the newest.
@themightiestofbooshes9443
@themightiestofbooshes9443 4 күн бұрын
you got a chuckle out of me when you said DirectX 3 was a "fine vintage"
@stolenlaptop
@stolenlaptop 4 күн бұрын
I thought of 7 as a full bodied with hints of fruit.
@themightiestofbooshes9443
@themightiestofbooshes9443 4 күн бұрын
@@stolenlaptop I really enjoyed 9, but many would call it too overdeveloped; trying to be too many things all at once. I miss it. On that note, my favorite would have to be 11. It's a bit young, yes, but it has a lot of good flavor to it.
@orestes_io
@orestes_io 4 күн бұрын
Insane skill level. I learn so much with every one of your videos. It's like a Sherlock Holmes case every time!
@tomysshadow
@tomysshadow 4 күн бұрын
My guess is that the initial crash with editing the resource could be due to the NXCOMPAT flag. It's possible the game was compiled to use DEP but never tested on an OS that actually had it (like XP or later) so it crashes when it believes it should be able to edit that section. You then editing the permissions on the section to make it writable might have snowballed into the problem with LoadImage, which probably assumes the section is read only (though that's purely speculative.) If you see solid magenta (or occasionally blue, or bright green) as a background to the image, that is usually meant to serve as transparency (not white!) in an image format that would otherwise not support transparency. That was common in games of this era, it's like a green screen for sprites. It's magenta specifically because it's a pretty uncommon colour to use in the sprites themselves.
@nathanbaggs
@nathanbaggs 4 күн бұрын
Interesting insight! Yeah I assumed the magenta was for alpha, setting it to white was a quick and dirty way of making progress. I think other people have commented a more correct way of handling this
@tomysshadow
@tomysshadow 4 күн бұрын
btw, I know you like investigating these issues for yourself - but dgVoodoo3 likely would fix any DirectDraw related problems. I think it has an option to force windowed as well. DxWnd could also be worth a shot trying first
@mari2.
@mari2. Күн бұрын
It works fine on XP, guessing the NT 6.0 Overhaul with Vista broke it's rendering method.
@jowadmax1921
@jowadmax1921 4 күн бұрын
Thank you Nathan for another awesome video. In the spirit of showcasing more tools to the audience, it might be interesting to find a way to incorporate Frida into one of your videos. Based on my understanding, it's a great tool for injecting, instrumenting, and prototyping live binary modifications. It would be cool to see it!
@eintim1980
@eintim1980 4 күн бұрын
Hey, instead of going through the struggle of inserting Shellcode to load your own dll into the programs entrypoint, you can also just modify the import table of the executable so windows loads the dll for you while loading the pe file. I personally prefer it as it's simpler and pretty much universal.
@Kirillow
@Kirillow 4 күн бұрын
Thats what I'm saying. Just imbed the resource to the CFF executable and deep null zero will compress the render to the direct draw funtion setup.
@nathanbaggs
@nathanbaggs 4 күн бұрын
There's multiple ways of doing these things, this was just the one I decided to use. It's quite an organic process which I try to cover in the video. I initially patched the exe to just change the CreateWindowsEx flags and when that was too restrictive I just changed the patch to load a DLL
@hubertnnn
@hubertnnn 4 күн бұрын
Would it be possible to just make a new executable that does only 2 things: 1. Preloads your dll 2. Calls main() function from the actual executable This would be an universal solution that will work on everything, and all you would have to change is the name of the exe file that you are calling main from .
@partoftheworlD
@partoftheworlD 4 күн бұрын
@@hubertnnn it can be done even easier, create a new segment with patch inside an existing exe and replace OEP with patch function that passes control to the game after all the magic is done and after launching exe there will be something like call patch; jmp game_main;
@mariestarlight
@mariestarlight 4 күн бұрын
I'd love to see you get Jezzball working on windows 11. I loved that game and the clones are missing features of the original.
@Patashu
@Patashu 4 күн бұрын
For windows 3.1 era games running on modern windows, you can try something called 'winevdm'. It doesn't always work, but it let me play Castle of the Winds.
@Dewm_
@Dewm_ 3 күн бұрын
I absolutely love your presentation here. It's calm, easy to follow along, and sprinkled with the right amount of humor where it counts! I absolutely love your step-by-step approach here, as it really gives an idea behind the kind of process such a task would have. Once I'm out of school I really gotta dig into properly understanding assembly, as I find the process of debugging like this to be extremely interesting and satisfying.
@LukeAvedon
@LukeAvedon 5 күн бұрын
COM is a wild crazy thing.
@nathanbaggs
@nathanbaggs 5 күн бұрын
It is known
@SpitfyaUK
@SpitfyaUK 4 күн бұрын
Another awesome video Nathan. Keep up the great work! Been in love since I stumbled up on your early Worms one.
@Patashu
@Patashu 4 күн бұрын
Very nicely done. There are so many games like this that got left behind when the way computers offer graphics changed.
@amshermansen
@amshermansen 4 күн бұрын
Seeing Magenta as the masking colour sure brings back a lot of memories. Lots of games also used a strong green as an alternative.
@gamingcube939
@gamingcube939 2 күн бұрын
0:02 Chad introduces himself and explains his issue with the Block game. 0:28 Nathan confirms that he finds Chad's question to be an interesting challenge. 0:56 Nathan starts the debugger and discovers the cause of the program's error. 2:18 Nathan hypothesizes that the game uses Direct Draw for rendering. 3:54 The creation of the Direct Draw object is discussed. 9:46 Nathan realizes that the game is designed to run in fullscreen mode, which poses a problem. 10:38 Nathan explains how the blit function works in copying graphical data. 11:12 The debugger reveals an error while trying to load the bitmap. 12:34 Nathan modifies the code to render the game correctly. 14:30 Chad happily informs Nathan that the game is now functioning on his machine as well.
@KaziQTR
@KaziQTR 4 күн бұрын
You can still use a VM. All you have to do is use a Linux dist. as a KVM host and do GPU passthrough (and any other device you want really) to be used by VM. I have been playing all my modern Steam and other platform games like this for years now. It's a regular VM like you can use snapshots or migrate. If you use hardware passthrough though you can't use live migration or sleep etc. Those are some of the downsides that I never use anyway. You can take away internet give or take things to/from VM. It's really neat. I guess the keywords to look for is KVM, GPU passthrough, Virtio. With these keywords you will see abundant information about VM with GPU passthrough.
@xanderplayz3446
@xanderplayz3446 3 күн бұрын
Or you know, use Hyper-V, or if you use Home, just upgrade to Pro and apply a *mass* amount of *grave* to the turkey. But yeah, KVM works insanely well. Even without GPU passthrough and proper drivers (I use SPICE qxl), I can get very good desktop performance on QEMU.
@klokbaske
@klokbaske 3 күн бұрын
"Somewhere in the last quarter of a century, something has changed!" - splendid analysis!
@vynxie
@vynxie 4 күн бұрын
11:55 REACTOS MENTIONED 🥂🎉
@Hectik17
@Hectik17 4 күн бұрын
Haha that art attack clip, what a throwback
@LordHog
@LordHog 9 сағат бұрын
Your video found its way onto my feed, randomly. This was a very interesting deep dive in resolving execution issues encountered. Great content. Sub’d and will definitely need to check out the other videos on this channel
@kritikusi-666
@kritikusi-666 4 күн бұрын
my man here living on the edge testing random software outside virtualization haha. Kudos to you! Also this was fantastic peace.
@TechX18-d4h
@TechX18-d4h 4 күн бұрын
tried the original game under wine 9.0 (since my main OS is Linux) and it works just fine. it is scaled 1:1 at the top left of the screen but otherwise playable! i wonder if wine just isnt as picky as windows in terms of the things mentioned in the video?
@Mario583a
@Mario583a Күн бұрын
From a comment of MichealMJD's video of [Run 16 Bit Programs on 64 Bit Windows]: If I recall. NTvdm never got a port to 64-bit since the CPU mode it relied on for fast 16-bit code execution gets disabled when a x86 processor is switched into long mode. WineVDM is likely translating 16-bit instruction calls to 32-bit and then passing that off to Windows
@Zetornator
@Zetornator 4 күн бұрын
Man, thanks for sharing your steps and educating us on how you think on each error and line you come across, this whole debugging using IDA, Ghidra OR x64dbg should have been its own subject in CS...currently on my 3rd year and i already feel like i need to dedicate more time on such projects like yours. Personally i would Love to see more examples on how to debug/hack an old online game so you can re-enable their online feature like hosting, joining etc, (yes i remember the video on worms, its my favourite.)...i always wished i could try to go back in time and play was "Darkspore" so video by video you are giving me more and more hype to start debugging for the fun of it even though my schedule is full of assignments.💀
@Kirillow
@Kirillow 4 күн бұрын
Yeah man just blip it to the primary from the resource subsection string of the executable. The debugger will return extended zero function host. This undocumented function will compare the size of the image resource. To get the screen resolution index arrey you need to find the pallet code in the image data. All the colours will be correct if you blend the operation from the reboot. If it does not interpret this as the level data find the offset in the dll function and load the resource from the disc. Easy.
@antpalmer5856
@antpalmer5856 4 күн бұрын
This is absolutely stellar! Ive been meaning to learn game RE techniques but have zero clue where to start, especially when it comes to using Ghidra and sifting through windows API docs. How do you learn any of this?
@pascalmathieu9332
@pascalmathieu9332 4 күн бұрын
Hi I remember that magenta color was used to render transparency (No rgba was available, just rbg, so one color was reserved to set full transparency) For exemple, you can set your backgroud color of the desktop in magenta, and you can have your tv card rendering in place of the magenta on the desktop. You can use it in icones too, and I think in that case the first top left pixel set the transparency color.
@sergdudk
@sergdudk 20 сағат бұрын
I love your content and sense of humor mate! thank you, please keep them coming 🙏
@aspzx
@aspzx 4 күн бұрын
That fake 3D effect is actually pretty cool.
@Dr.W.Krueger
@Dr.W.Krueger 2 күн бұрын
Trivial effect. We did this back in the mid 80s. 😂
@doemaeries
@doemaeries 2 күн бұрын
Interesting fact regarding the magenta thing. I had a Sony Ericsson K800i back in the days. You could install some custom themes on it and they also used magenta for transparency
@philreed1605
@philreed1605 4 күн бұрын
I didn’t keep up with most of that but I enjoyed the journey. Question, could you have used a second monitor for the debug tools and kept the game running full screen?
@morwar_
@morwar_ 4 күн бұрын
That was amazing. I don't know if you answered this before, but would you know if games overlays such as steam, nvidia or discord are implemented by hooking functions? It would be interesting to know how they do it.
@johnhudson9167
@johnhudson9167 4 күн бұрын
I’m guessing that the pink is maybe a reserved colour. When I use to program tv boxes (e.g. Sky) back in the early 2000s, we used #ff00ff to indicate transparency (i.e. show the video playing underneath).
@johnnysvensson
@johnnysvensson 3 күн бұрын
Since it is rendering in indexed mode(8 bits with a palette) the magenta is most likely supposed to be the color key/signaling transparency. edit: seems like a good bunch of folks pointed this out already :)
@karbinunit
@karbinunit 4 күн бұрын
Used Wine 9, on my Debian Linux with Cinnamon desktop, no problem, runs nicely, FPS 80 (see that in the bottom right) but sound is missing. Can see the folder there are no wav files present. Cant read the text files, as in Japanese? Can see some information, talking about the wav files. :)
@zxcvb_bvcxz
@zxcvb_bvcxz 4 күн бұрын
it's a second download from the page you downloaded the game from.
@armstrongskyview2810
@armstrongskyview2810 4 күн бұрын
Your a fantastic engineer, can i ask if you know of a site that offers older cracked sodtware.
@MegaMoto85
@MegaMoto85 Күн бұрын
Disruptor is a original playstation game and a Doom clone. The files within the PS1 Iso are WAD's, just like Wad's in the doom folder, how much work would it be to port this game to windows with x-input support, and maybe better framerate? :D
@TacoTuesdey
@TacoTuesdey 2 күн бұрын
my favorite breakout was called DX BALL and it was great. you could create your own custom levels and everything.
@Barret161
@Barret161 4 күн бұрын
I'm stil amazed by those videos. And I still have my question of "is it possible to run Warhammer 40k Dawn of War 1 with more than 4GB of RAM?" or at least make it not crash.
@Kirillow
@Kirillow 4 күн бұрын
You need to change IMAGE_SCN to null point renderer and make sure it uses canonical first function of COM that returns to the pointer that returns to another ponter that is basically like C++ v-table function of 50 by its in (divided by 20 exe) and do it for ALL (not some) of objects. Then you just patch the binary arguments and change the original function to load code cave. You'll be fine. If you have troubles use IET in the dll with CFF explorer. Enjoy your game!
@theladyfingers___
@theladyfingers___ 4 күн бұрын
I dida little basic programming as a kid, and then became a bit of an Excel formula wiz, but watching this is like being flicked out of the boxing ring with your competitor's pinky. Amazing stuff!
@LINUXBANDIT
@LINUXBANDIT 4 күн бұрын
Wonder if it might be easier to play it via wine on linux.
@nathanbaggs
@nathanbaggs 4 күн бұрын
Looking at the comments I believe this is the case
@maxpoulin64
@maxpoulin64 4 күн бұрын
I tried and it just works out of the box, but the window size is incorrect so you have to wrap it in gamescope but apart from that, runs perfectly.
@bradallen8909
@bradallen8909 3 күн бұрын
You do realise that WINE runs on many, many different operating systems? Not just Linsux.
@daniel7875-g9n
@daniel7875-g9n 4 күн бұрын
altough i dont understand of half whats going on, i really like your style of explaining. keep up and youll be big on yt soon !
@nathanbaggs
@nathanbaggs 4 күн бұрын
Thanks!
@Aeduo
@Aeduo 2 күн бұрын
I'm sure this was mostly an academic exercise but, would using directdraw or other DLLs from wine or reactOS have gotten this working? Also considering how much work is necessary to NOT have a program able to draw all over the screen, it kinda explains all the odd little desktop critter applications in win 3.x.
@blakegriplingph
@blakegriplingph 2 күн бұрын
Would it be more convenient to inject code using a readily available .ASI loader? Also, I have a very old game I wanted to patch so it reads from a different user directory rather than the install folder. Maybe this is worth investigating?
@rubisetcie
@rubisetcie 4 күн бұрын
I loved every second of video! Truly a great demonstration of what clever reverse engineering can do! If you wonder about the magenta background in the bitmaps, from what I learned, this specific color was often used as a sort of "chroma key", destined to be replaced by transparency... I have also used it in my own game, MCM. :)
@Vicorcivius
@Vicorcivius 4 күн бұрын
I would love to see this kind of ingenuity used to make windows 11 games run on windows 7.
@drastically143
@drastically143 4 күн бұрын
Still don't understand everything, but your work is mesmerizing!
@DrMattBug
@DrMattBug 3 күн бұрын
I love the explanations of what you're doing. I'm not sure I'm the target audience, because my particular flavour dyslexic brain really struggles with abstract, symbolic representations, but it feels like a fun adventure to come along on :-)
@mo938
@mo938 4 күн бұрын
If I were even half as skilled at....... anything... as you are at programming, I’d be thrilled. You're awesome, Nathan!
@nathanbaggs
@nathanbaggs 4 күн бұрын
Just got to keep learning and improving (:
@Melechtna
@Melechtna 4 күн бұрын
I can actually shed some insight into the magenta thing. I don't know the SPECIFIC reason why, but, in the late 80s, early 90s, magenta was just the color used for transparency, pure and simple. Some games would change the default color for transparency, but given real transparency was basically not a thing back then, you had to basically mask out a color, and that shade of magenta was just...how it was done.
@johanoern
@johanoern 2 күн бұрын
Love these kind of videos 🎉🎉
@zap0xfce2
@zap0xfce2 3 күн бұрын
OMG pink backlight glow! Make it more pink and brighter xD
@test-rj2vl
@test-rj2vl 3 күн бұрын
Just out of curiosity, do you have VMware? Since they made VMware workstation free now you might give it a try to see if you still get the same error as in 1:47. I just recently made a discovery that GTA Vice City runs with nice playable frame rate inside VMware which made me think that they might have better graphics support. Because you never know what you get from the internet and if you help enough people then the question is not if but when you get malware. For VMware there is also a GPU passthrough so so if you really need you might even be able install real graphics driver instead of VMware tools although for me GTA VC run fine with just VMware tools installed.
@petemc4190
@petemc4190 Күн бұрын
"go full art attack" genuinely didn't think that one needed explaining and could just be casual chat
@WareNetwork2000
@WareNetwork2000 2 күн бұрын
Sounds like a very fun Breakout clone. It reminds me of another old DirectX Breakout clone called DX-Ball which IIRC runs fine on Windows 11.
@billyjoejimbob75
@billyjoejimbob75 18 сағат бұрын
It runs on 7 for sure.
@WareNetwork2000
@WareNetwork2000 18 сағат бұрын
@@billyjoejimbob75That's good to hear.
@joopie46614
@joopie46614 4 күн бұрын
Great video! Always love seeing a fellow low-level programmer and reverse engineering in one video trying to poke at and fix random obscure things and problems
@DrKaspertje
@DrKaspertje 4 күн бұрын
Oh, now I understand how those mods for games used to work, where they gave you a tiny DLL with a name like d3dx9_26.dll. I always thought that was weird, because those DLLs were used for DirectX, but now I presume that was just a way to guarantee being able to run a bit of code in the memory space of the process, with very little effort from the end user, and they probably just passed through all the DirectX calls.
@joe-skeen
@joe-skeen 4 күн бұрын
I legit just finished getting together a DosBox-X setup that can run any Windows 9x programs as if it was a standalone program on the modern host operating system
@electrowizard2000
@electrowizard2000 4 күн бұрын
Share with the class please! Sounds awesome
@joe-skeen
@joe-skeen 4 күн бұрын
@electrowizard2000 I posted it on my GitHub
@peasedustin
@peasedustin 4 күн бұрын
loved this game and saw the thumbnail and went back in time!
@Winsane
@Winsane 3 күн бұрын
This sounds like something DxWnd might be helpful for. It has been fixing things like this for decades and the developer is still at it.
@webfischi
@webfischi 4 күн бұрын
So I have to email to get a game I love fixed? Or do I have to be a member? I'll try it anyway...
@HideoV
@HideoV 4 күн бұрын
it was very common for magenta to significy transparency, eg in RPG maker character sheets
@cougar-town
@cougar-town 4 күн бұрын
So essentially just gotta patch the window display mode or something for the application for it to run properly? or is there more to it?
@MrRecorder1
@MrRecorder1 3 күн бұрын
Oh... Nathan Braggs in my feed! I had an idea, maybe for something that maybe is interesting: The San Andreas "Hot Coffee Mod". How did it actually work? I have no idea until today, if it was an actual mod or just disabling some flag in some cebsored-out code. Felt like the latter, but I do not know actually...
@CrAzYpotpie
@CrAzYpotpie 23 сағат бұрын
It is documented in countless places online and KZbin. It is official content that Rockstar developed and cut, but parts of were leftover in the first release builds of the game.
@Kerbiter
@Kerbiter 4 күн бұрын
I actually wonder if any of DDraw wrappers fix this already. CnC-DDraw or DDrawCompat perhaps.
@renhoeknl
@renhoeknl 4 күн бұрын
Complete noob here, but would it not be easier to create a custom ddraw.dll, drop it in the local game directory and pass all calls to the real ddraw? Then only customizing those calls where needed?
@tomysshadow
@tomysshadow 4 күн бұрын
This is a real strategy, it's called a Proxy DLL, and yes personally speaking this would be my preferred method as it's a bit more elegant IMO. But hooking works too
@nathanbaggs
@nathanbaggs 4 күн бұрын
I still needed to hook CreateWindowEx etc to make it windowed, so once I set up all the hooking chuff for that it seemed easier to continue down that parh
@renhoeknl
@renhoeknl 4 күн бұрын
@nathanbaggs Again, complete noob here, enjoyed the video, just asking out of interest. Instead of making the game windowed, would it have worked to leave it full screen and use things like the debugger on a second monitor?
@dustlosty
@dustlosty 4 күн бұрын
fun fact! windows xp (and likely older versions too) used magente as transparency
@MrR0b3rt
@MrR0b3rt 4 күн бұрын
Actually proud of myself for understanding about 50% 🤣 I do feel I learn a lot from your videos, thanks! But it does make me feel old when talking about this era 😂😂😂
@nathanbaggs
@nathanbaggs 4 күн бұрын
Hopefully we can get that to 100% with some more videos (:
@desolatorXT
@desolatorXT 4 күн бұрын
A notorious game that won't run on modern windows and that i loved when i was little is Corsairs Gold (worked on windows 9x). I would be grateful if u could do the same for that one...
@KunalVaidya
@KunalVaidya 3 күн бұрын
Are you able to play NFS porsche unleashed on latest OS ?
@soundspark
@soundspark 4 күн бұрын
Not only does user32.dll differ between Windows versions, but being a basic system file it can be changed during updates.
@nathanbaggs
@nathanbaggs 4 күн бұрын
Indeed
@DavidMadeira29
@DavidMadeira29 3 күн бұрын
Don't play that Bricks game on linux, especially that one specific version if you ever been a drug addict. I don't know. Namastè.
@bradymeyer5941
@bradymeyer5941 4 күн бұрын
255 means white however it can be pink like in source just like ths missing texture
@MinkSquared
@MinkSquared 4 күн бұрын
This and jardinains were genuinely my favourite childhood games
@tybaltsbutters
@tybaltsbutters 12 сағат бұрын
jardinains, gun metal and little fighter were my favourites. i still play the steam edition of jardinains time to time.
@nicoful86
@nicoful86 3 күн бұрын
This is amazing ❤
@Ch40zz
@Ch40zz 4 күн бұрын
Should've used VMWare, they have proper DirectX emulation on the CPU and can run even modern games somewhat quick (DirectX11)
@FooneTuring
@FooneTuring 4 күн бұрын
Very nice! It's like a KZbin of one of my game hacking threads, but way more entertaining.
@AzaIndustries
@AzaIndustries 2 күн бұрын
Just got it to run on linux without any work. I just found "block 130" online downloaded it and ran with default wine, works but screen a little small. Fired up steam and used proton/wine and game works flawlessly. Idk why MS has such a hard time supporting their own shit. Linux should be the future for any passionate gamer that cares about history. Great video though, the technical stuff is always interesting to see.
@sledgex9
@sledgex9 4 күн бұрын
Why didn't you first try to run the binary in "Compatibility mode"? Maybe it would work then.
@PeterVC
@PeterVC 4 күн бұрын
Back in the day, magenta was the standard color used for transparency.
@Vicorcivius
@Vicorcivius 4 күн бұрын
If you want a real challenge, Run windows 11 games on windows 7. Then and only then will you understand the true power of windows 7.
@Miiiasm
@Miiiasm 3 күн бұрын
You know you can also just export your main dll function and add it as an import to the executable, then just call it, comfier than patching to a code cave and calling LoadLibrary :)
@M0nster0114
@M0nster0114 2 күн бұрын
could you get Sid Meier's Colonization windows, working on windows 11
@georgehelyar
@georgehelyar 4 күн бұрын
Magenta is generally the colour key for transparent, when there is no alpha channel.
@TheDudeAbidesYo
@TheDudeAbidesYo 4 күн бұрын
I would keep a dedicated bare metal pc to experiment on. Trust me. I have unintentionally ruined two computers with persistent malware.
@bradallen8909
@bradallen8909 3 күн бұрын
No you haven’t. Malware doesn’t damage your hardware.
@TheDudeAbidesYo
@TheDudeAbidesYo 3 күн бұрын
@bradallen8909 BlackLotus is an example of UEFI malware that is persistent. When you get an infection like this it is they are difficult to detect and even harder to remove. Sometimes they cannot be removed due to the same protections that are supposed to prevent them in the first place.
@ruben_balea
@ruben_balea 3 күн бұрын
Does anyone know where Windows/DirectX stores the names of executables that need special handling? The executable of "Commandos - Behind the Enemy lines" was unsurprisingly called "commandos" except in the original version of the game in Spanish (Pyro Studios was a Spanish company) where it was called "comandos" with a single "m" which is the correct way to write it in Spanish. The thing is that in any modern version of Windows if the executable is called "commandos" it works correctly, but if it is called "comandos" it shows an error message that DirectX 5 is not found. It's enough to rename the file but I would like to know where they hid the name of the executable. So I assume that when a new version of DirectX broke compatibility with this game they added a patch to make DirectX do something differently when the executable that calls DirectX is called "commandos" There are more games that won't run if renamed and whatever DirectX does with such apps is not available via the Windows compatibility options.
@sdjhgfkshfswdfhskljh3360
@sdjhgfkshfswdfhskljh3360 3 күн бұрын
I was hoping to see few bytes changed in exactly the right places. What a mess I saw instead. On the other hand, if it works, then it is correct.
@soviut303
@soviut303 4 күн бұрын
So many other games made with DirectDraw still work just fine. Is there some reason the game was intentionally developed this way? Are these oversights?
@darktherapy
@darktherapy 3 күн бұрын
To me this sounds like “the game knows where its rendering by knowing here it’s not rendering..”
EA Won’t Sell This Game - So I Hacked It
18:31
Nathan Baggs
Рет қаралды 270 М.
The Minecraft Mods Exposed for MALICIOUS Code...
14:58
TheMisterEpic
Рет қаралды 320 М.
Муж внезапно вернулся домой @Oscar_elteacher
00:43
История одного вокалиста
Рет қаралды 8 МЛН
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 23 МЛН
小路飞和小丑也太帅了#家庭#搞笑 #funny #小丑 #cosplay
00:13
家庭搞笑日记
Рет қаралды 14 МЛН
Smart Sigma Kid #funny #sigma
00:33
CRAZY GREAPA
Рет қаралды 33 МЛН
IT/OT Convergence and PLC Vulnerabilities- Webinar by Salvador Technologies
50:46
CPU Cores are the new Megahertz
23:19
Jeff Geerling
Рет қаралды 47 М.
What’s the Deal with Base Plates?
13:31
Practical Engineering
Рет қаралды 669 М.
Hacking a weird TV censoring device
20:59
Ben Eater
Рет қаралды 3,2 МЛН
How Cache Works Inside a CPU
9:20
BitLemon
Рет қаралды 10 М.
I Made an Electronic Chessboard Without Turns
14:32
From Scratch
Рет қаралды 384 М.
I Hacked Diablo II To Use Modern Graphics
13:16
Nathan Baggs
Рет қаралды 327 М.
Turbo Fan Dusters are getting out of hand
14:08
Torque Test Channel
Рет қаралды 1 МЛН
What is the Smallest Possible .EXE?
17:04
Inkbox
Рет қаралды 529 М.
Муж внезапно вернулся домой @Oscar_elteacher
00:43
История одного вокалиста
Рет қаралды 8 МЛН