Episode: 1324 Title: HPR1324: Porting Mega Happy Sprite To Windows Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr1324/hpr1324.mp3 Transcribed: 2025-10-17 23:33:57 --- so I love you, I love you I love you, I love you I love you, I love you I love you, I love you My happy sprite is a sprite editor that I wrote some while ago, like in 2009 So a good number of years ago, it's a sprite editor for the Psychogenesis It doesn't run on the Psychogenesis, it just makes sprites for use on the Psychogenesis It runs natively on Unix systems But I ported it to Windows about a year ago because of popular demand What I used to build a Windows program is the Ming W32 build environment That is for Unix I tried installing Ming W32 on OpenVSD and Linux and build miserably But I got working on FreeBSD, so that's good I'll talk about how to get working on FreeBSD First thing I want to do is install some ports Go to a slash user, slash ports, slash double And that you'll see some sub-directories called Ming W32-asterit And so you want to install, make install Ming W32-Bin-MSVCRT Ming W32-Bin-Utiles Ming W32-GCC Ming W32-Pthreads And finally, Ming W32-ZLIM Those are all the, we're not using open SSL or anything fancy, those are Just the Pthreads and ZLIMID primarily And the actual build environment we're using to build mega-happy sprite Mega-happy sprites will depend on the LibSDL And I'll talk about how to install LibSDL in a moment Once you've made and made installed those programs You'll see that it populated a directory called slash user, slash local, slash Ming W32 And in that directory, you have sub-directories, BIN For instance, Lib and Include What we want to do is, mostly I don't know where to bin, see what's the side of it You can see that all the standard development tools are there R as CPP, GCC, LD, Object Copy, Object Dump, ForenLib, ReadAlpha, and so on Strings and Strip And a couple of new ones that you're not familiar with, WingDMC WingD Res, I'll talk about those in a bit So I'm mostly on over the LibDirectory And you see a bunch of libraries, these libraries are what you're going to be linking against They're not ELF archives, rather they're cough archives The library format that we're going to be using For Ming W32s is cough So yeah, these libraries get linked specifically with the Ming 32 BINY TILs and GCC And then, mostly on over to the Include directory, these are all the inclusion files with definitions and whatnot for various windowy things Like, Windows, Windows, SX, and WinAir and so on So this is the complete environment here This is the complete make environment right here, this is everything you need Except for libSDL We want to add libSDL to this So I'm mostly on over to libSDL.org and go to the Download section You'll see the Wii Bottom Development Libraries, Win32 What you want to download is STL-double-version number www.tarr.gz So go ahead and download this and uncompress it You'll see it creates a nice little directory for you, STL-version number And in it you'll see some familiar things, you'll see a slash BIN That's cool, you'll see a slash lib and slash include What you want to do is copy everything in slash BIN And include and lib BIN is not also necessary, but it helps To have that copy as well, just so you know where the BIN files are The only thing that BIN really includes is STL can big And we're not using STL for big, so it's not really necessary It does include a runtime library You might be familiar if you're familiar with Windows That DLL files, this contains STL.DLL Which you'll need in your runtime environment So again, go ahead and copy those files BIN, lib, and include into slash user, slash local, slash MING W32, BIN, info, and ink directories We're almost done now, what we need now is STL image, some was added over the STL website again Again, that's a lib, STL.org And go to libraries and search for STL image What you want to do is go to the website Which is ugly, really ugly And download STLimage-double-versionnumber-bc.zip And once you have unzip that You'll see that it creates A directory called STL underscore image-versionnumber In that directory, you'll see include in lib Which is awesome, that's the two things you want In lib you have a sub directory.x86 Copy, STLimage.lib From that to your user slash local MING W32 slash lib And copy the include files as well And then your set, we have a complete make environment for MING W 32 So what you want to do is run it and use it Which is pretty straightforward Instead of typing GCC, you type MING W32-GCC And it should create a program for you So now that we've got a MING W32 environment And filing environment, I'll set up Actually porting My experience porting MING W32-GCC was actually pretty trivial My MING W32-GCC doesn't depend on Unix domain sockets Or anything that's obviously units It's pretty straightforward Just depending on STL Which is ported to windows All I really did was modify my MING file If you download the source from MING W32-GCC You'll notice that there are two MING files There's one you just call MING file And there's another one called MING file that windows I just pretty much changed the environment variable CC to MING W32-GCC And that's about it Including some of the libraries I'll let you know with the libraries we have to include If you want to make an STL application There are a few that you need to include First of all, you need to define MING And there's a variable they're called MING So you dash capital D main equals STL main And then you want to specify dash M windows I believe this is for architecture Which happens to be windows And then you want to link against MING W32 The MING W32 library So that would be dash L MING W32 And then the user 32 library The GDI32 library And then MM library The DXG UID library And then STL main STL and STL image libraries And so yeah There's a couple of things That this does It produces a mega dot EXC file Instead of just a mega out file That is directly You can run that on a windows computer I happen to Generate the mega dot EXC files And to a directory Called windows Where I have those files That I was talking about STL.DLL And STL image.DLL And look JPEG.DLL And that's it Those library files that I was talking about I actually get packaged with the run time With the actual program file And so windows will use those dynamic libraries If they're in the same directory And so it's good to package stuff With those libraries You don't necessarily have to You can hope that people have the libraries But chances are they don't So it's good to package those things With the binary The couple of things I had to look out for was There is no real path On windows Real path being a Particularly library call That's converts a path Like Slash mega Slash dot Slash cons To plain old slash cons And so I had to replace that And that's about it I had to modify my Loader to deal with the Slashes that go the other way And that's it Like there wasn't really much to Deporting this So you notice that there's mega That Ico in the mega happy Sprite service code file That happens to be the actual icon file You can save that with begin Begin below and save those files And then what you need to do Is edit mega rc And have the ID icon mega dot Ico In there to identify That there is an icon In the red script After that you want to run Ming W32 dash Wind res, wind res To generate a res Cop file You do that with these arguments Wind res, mega dot RC Dash O Cop Dash of a lowercase O That was a capital O before Mega dot res And then you can link against mega dot res As you would a regular object file And that includes your Your icon And let's see here What else What else I believe that's it So the hard part was getting the Make environment all set up The easy part was actually Parting it So I hope you guys have fun Parting the programs to windows What are you crazy people On Linux we don't want to Deal with windows But you know some people do And some people don't So it's not for everyone Just if you want to have your windows Program to working on windows You can definitely do it In a Unix environment So take care everyone And happy hacking Bye bye You have been listening to HackerPublic Radio At HackerPublicRadio.org We are a community podcast network The releases shows every week day On day through Friday Today's show, like all our shows Was contributed by a HPR listener Like yourself If you ever consider recording a podcast Then visit our website to find out How easy it really is HackerPublic Radio was founded By the digital dog pound And the infonomicum computer cloud HPR is funded by the binary revolution At binref.com All binref projects Are proudly sponsored by luna pages From shared hosting To custom private clouds Go to luna pages.com For all your hosting needs Unless otherwise stasis Today's show is released on the Creative Commons Attribution Share a line www.HackerPublic Radio