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
@ThePlayerOfGames3 күн бұрын
Thank you for your videos, they've certainly inspired me to watch many hours of ghidra tutorials
@teeteenine22223 күн бұрын
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
@ExonerativeKoala4 күн бұрын
ERROR_SUCCESS hits close to home
@KillerQ134 күн бұрын
Error: No error
@avramlevitter61504 күн бұрын
It's why I dislike the entire return-code paradigm. It's so easy to have this happen
@hubertnnn4 күн бұрын
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.
@ChichaGad4 күн бұрын
Windows XP: _ X "Task failed successfully" [ OK ]
@sanphir33 күн бұрын
I'm with you! ERROR_SUCCESS is taking me back 😂
@markexclamation4 күн бұрын
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.
@soviut3034 күн бұрын
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.
@TheLukasDirector2 күн бұрын
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Күн бұрын
@@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Күн бұрын
@@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.
@keckstreme4 күн бұрын
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!
@Mwapaca4 күн бұрын
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.
@FR4M3Sharma4 күн бұрын
There's another fun game called Jardinains it's also a Brick Breaker and works on win10/11
@ChadDore4 күн бұрын
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.
@FR4M3Sharma4 күн бұрын
@@ChadDore Hi Chad. How far are you into the reimplementation? What's the name of the project on github?
@ChadDore4 күн бұрын
@@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!
@micaiahstevens88404 күн бұрын
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.
@pixelcatcher1234 күн бұрын
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
@renhoeknl4 күн бұрын
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.
@dddanmar4 күн бұрын
+1 Magenta was the non PNG transparency layer in a lot of cases
@Sypaka4 күн бұрын
Even Windows XP is guilty of that. They use AVI for the animation on the "copy files" dialogue. Guess the color.
@bradallen89093 күн бұрын
Anything involving DirectX is not “early” game development.
@ChadDore4 күн бұрын
Thanks Nathan! I bow to your greatness!
@nathanbaggs4 күн бұрын
Thanks for the fun challenge (:
@tangocat732 күн бұрын
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Күн бұрын
still not using linux
@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"
@jtsiomb4 күн бұрын
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".
@mopanda8121 сағат бұрын
thanks for putting a name to it!
@_boux4 күн бұрын
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
@nathanbaggs4 күн бұрын
Interesting, maybe Linux is the best way to play Windows games. This was still a fun challenge though
@InnerEagle4 күн бұрын
@@nathanbaggs Considering there are many ways to do it, it's still fun to do it physically
@iliqiliev4 күн бұрын
Thank you, I was curious the whole time if Wine would have just run it and I'm happy that it did.
@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Күн бұрын
@@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
@ac15cr5 күн бұрын
Chad coming in with a chad challenge
@nathanbaggs5 күн бұрын
And a fun challenge it was
@cheese57424 күн бұрын
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.
@hubertnnn4 күн бұрын
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.
@nikkiofthevalley4 күн бұрын
@@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.
@jamesread114 күн бұрын
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
@nathanbaggs4 күн бұрын
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_au4 күн бұрын
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!
@plusplusplus98374 күн бұрын
Awesome! I’m glad your leap of faith in running this outside of a VM was rewarded
@nathanbaggs4 күн бұрын
Me too
@mads2k54 күн бұрын
This NathanAI is crazy! You simply throw some emails at it and it gives you the best answers!
@rojovision4 күн бұрын
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.
@phill68594 күн бұрын
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
@hubertnnn4 күн бұрын
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.
@themightiestofbooshes94434 күн бұрын
you got a chuckle out of me when you said DirectX 3 was a "fine vintage"
@stolenlaptop4 күн бұрын
I thought of 7 as a full bodied with hints of fruit.
@themightiestofbooshes94434 күн бұрын
@@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_io4 күн бұрын
Insane skill level. I learn so much with every one of your videos. It's like a Sherlock Holmes case every time!
@tomysshadow4 күн бұрын
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.
@nathanbaggs4 күн бұрын
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
@tomysshadow4 күн бұрын
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.Күн бұрын
It works fine on XP, guessing the NT 6.0 Overhaul with Vista broke it's rendering method.
@jowadmax19214 күн бұрын
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!
@eintim19804 күн бұрын
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.
@Kirillow4 күн бұрын
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.
@nathanbaggs4 күн бұрын
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
@hubertnnn4 күн бұрын
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 .
@partoftheworlD4 күн бұрын
@@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;
@mariestarlight4 күн бұрын
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.
@Patashu4 күн бұрын
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_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.
@LukeAvedon5 күн бұрын
COM is a wild crazy thing.
@nathanbaggs5 күн бұрын
It is known
@SpitfyaUK4 күн бұрын
Another awesome video Nathan. Keep up the great work! Been in love since I stumbled up on your early Worms one.
@Patashu4 күн бұрын
Very nicely done. There are so many games like this that got left behind when the way computers offer graphics changed.
@amshermansen4 күн бұрын
Seeing Magenta as the masking colour sure brings back a lot of memories. Lots of games also used a strong green as an alternative.
@gamingcube9392 күн бұрын
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.
@KaziQTR4 күн бұрын
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.
@xanderplayz34463 күн бұрын
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.
@klokbaske3 күн бұрын
"Somewhere in the last quarter of a century, something has changed!" - splendid analysis!
@vynxie4 күн бұрын
11:55 REACTOS MENTIONED 🥂🎉
@Hectik174 күн бұрын
Haha that art attack clip, what a throwback
@LordHog9 сағат бұрын
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-6664 күн бұрын
my man here living on the edge testing random software outside virtualization haha. Kudos to you! Also this was fantastic peace.
@TechX18-d4h4 күн бұрын
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Күн бұрын
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
@Zetornator4 күн бұрын
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.💀
@Kirillow4 күн бұрын
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.
@antpalmer58564 күн бұрын
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?
@pascalmathieu93324 күн бұрын
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.
@sergdudk20 сағат бұрын
I love your content and sense of humor mate! thank you, please keep them coming 🙏
@aspzx4 күн бұрын
That fake 3D effect is actually pretty cool.
@Dr.W.Krueger2 күн бұрын
Trivial effect. We did this back in the mid 80s. 😂
@doemaeries2 күн бұрын
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
@philreed16054 күн бұрын
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_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.
@johnhudson91674 күн бұрын
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).
@johnnysvensson3 күн бұрын
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 :)
@karbinunit4 күн бұрын
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_bvcxz4 күн бұрын
it's a second download from the page you downloaded the game from.
@armstrongskyview28104 күн бұрын
Your a fantastic engineer, can i ask if you know of a site that offers older cracked sodtware.
@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
@TacoTuesdey2 күн бұрын
my favorite breakout was called DX BALL and it was great. you could create your own custom levels and everything.
@Barret1614 күн бұрын
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.
@Kirillow4 күн бұрын
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___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!
@LINUXBANDIT4 күн бұрын
Wonder if it might be easier to play it via wine on linux.
@nathanbaggs4 күн бұрын
Looking at the comments I believe this is the case
@maxpoulin644 күн бұрын
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.
@bradallen89093 күн бұрын
You do realise that WINE runs on many, many different operating systems? Not just Linsux.
@daniel7875-g9n4 күн бұрын
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 !
@nathanbaggs4 күн бұрын
Thanks!
@Aeduo2 күн бұрын
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.
@blakegriplingph2 күн бұрын
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?
@rubisetcie4 күн бұрын
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. :)
@Vicorcivius4 күн бұрын
I would love to see this kind of ingenuity used to make windows 11 games run on windows 7.
@drastically1434 күн бұрын
Still don't understand everything, but your work is mesmerizing!
@DrMattBug3 күн бұрын
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 :-)
@mo9384 күн бұрын
If I were even half as skilled at....... anything... as you are at programming, I’d be thrilled. You're awesome, Nathan!
@nathanbaggs4 күн бұрын
Just got to keep learning and improving (:
@Melechtna4 күн бұрын
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.
@johanoern2 күн бұрын
Love these kind of videos 🎉🎉
@zap0xfce23 күн бұрын
OMG pink backlight glow! Make it more pink and brighter xD
@test-rj2vl3 күн бұрын
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Күн бұрын
"go full art attack" genuinely didn't think that one needed explaining and could just be casual chat
@WareNetwork20002 күн бұрын
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.
@billyjoejimbob7518 сағат бұрын
It runs on 7 for sure.
@WareNetwork200018 сағат бұрын
@@billyjoejimbob75That's good to hear.
@joopie466144 күн бұрын
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
@DrKaspertje4 күн бұрын
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-skeen4 күн бұрын
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
@electrowizard20004 күн бұрын
Share with the class please! Sounds awesome
@joe-skeen4 күн бұрын
@electrowizard2000 I posted it on my GitHub
@peasedustin4 күн бұрын
loved this game and saw the thumbnail and went back in time!
@Winsane3 күн бұрын
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.
@webfischi4 күн бұрын
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...
@HideoV4 күн бұрын
it was very common for magenta to significy transparency, eg in RPG maker character sheets
@cougar-town4 күн бұрын
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?
@MrRecorder13 күн бұрын
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...
@CrAzYpotpie23 сағат бұрын
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.
@Kerbiter4 күн бұрын
I actually wonder if any of DDraw wrappers fix this already. CnC-DDraw or DDrawCompat perhaps.
@renhoeknl4 күн бұрын
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?
@tomysshadow4 күн бұрын
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
@nathanbaggs4 күн бұрын
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
@renhoeknl4 күн бұрын
@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?
@dustlosty4 күн бұрын
fun fact! windows xp (and likely older versions too) used magente as transparency
@MrR0b3rt4 күн бұрын
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 😂😂😂
@nathanbaggs4 күн бұрын
Hopefully we can get that to 100% with some more videos (:
@desolatorXT4 күн бұрын
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...
@KunalVaidya3 күн бұрын
Are you able to play NFS porsche unleashed on latest OS ?
@soundspark4 күн бұрын
Not only does user32.dll differ between Windows versions, but being a basic system file it can be changed during updates.
@nathanbaggs4 күн бұрын
Indeed
@DavidMadeira293 күн бұрын
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è.
@bradymeyer59414 күн бұрын
255 means white however it can be pink like in source just like ths missing texture
@MinkSquared4 күн бұрын
This and jardinains were genuinely my favourite childhood games
@tybaltsbutters12 сағат бұрын
jardinains, gun metal and little fighter were my favourites. i still play the steam edition of jardinains time to time.
@nicoful863 күн бұрын
This is amazing ❤
@Ch40zz4 күн бұрын
Should've used VMWare, they have proper DirectX emulation on the CPU and can run even modern games somewhat quick (DirectX11)
@FooneTuring4 күн бұрын
Very nice! It's like a KZbin of one of my game hacking threads, but way more entertaining.
@AzaIndustries2 күн бұрын
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.
@sledgex94 күн бұрын
Why didn't you first try to run the binary in "Compatibility mode"? Maybe it would work then.
@PeterVC4 күн бұрын
Back in the day, magenta was the standard color used for transparency.
@Vicorcivius4 күн бұрын
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.
@Miiiasm3 күн бұрын
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 :)
@M0nster01142 күн бұрын
could you get Sid Meier's Colonization windows, working on windows 11
@georgehelyar4 күн бұрын
Magenta is generally the colour key for transparent, when there is no alpha channel.
@TheDudeAbidesYo4 күн бұрын
I would keep a dedicated bare metal pc to experiment on. Trust me. I have unintentionally ruined two computers with persistent malware.
@bradallen89093 күн бұрын
No you haven’t. Malware doesn’t damage your hardware.
@TheDudeAbidesYo3 күн бұрын
@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_balea3 күн бұрын
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.
@sdjhgfkshfswdfhskljh33603 күн бұрын
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.
@soviut3034 күн бұрын
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?
@darktherapy3 күн бұрын
To me this sounds like “the game knows where its rendering by knowing here it’s not rendering..”