@ahron123456 There is a FAQ linked to in the video description. It explains the concept. As for tool-assisted speedruns, see TASVideos for more information. It is possible for both DOS (e.g. Commander Keen 5) and Windows (e.g. Cave Story).
@tekkn0logik Thank you for the kind words. Yet, I too have much to aim for, many people whom I don't quite measure favorably up to. It is a lengthy profession.
preview.tinyurl dot com/657m3sn -- This contains the version exactly as shown in the video.
preview.tinyurl dot com/6f2k35b -- This contains a refined version. Among other things, it is laid out more modularly, and it contains ellipsoid-based collision checking.
@HappyAfroamerican The FAQ linked to in the movie description (which one should usually read before posting a comment) answers this question and many others.
So, this will work on a dos 6.22 Pentium 2 machine?
I don't know much about cross-compiling, but did you compile using Linux Static Binaries and tell it "hey I need this for MSDOS"?
I heard the latest port of mesa for djgpp was version 6.3 (made in 2005)
I thought programming in older libs and headers would be harder because you're dependent on new functions and you're like "shit, it's 2005, this function in OpenGL doesn't exist in this version".
@commodore256 It runs on DOS, but not in real time.
Cross-compilation means compiler runs on one platform and produces code for another platform. DJGPP always produces DOS programs, regardless which OS you run it on.
As for Mesa, I used Mesa-7.10.2 (the newest available) and compiled it manually. I had to minorly change a few of its source files. I used ./configure --host=i586-pc-msdosdjgpp and a ton of other options (YouTube comment length limit prevents me from posting the rest).
@Bisqwit The point was to demonstrate OSMesa, which renders 3D graphics without need for a graphics card, let alone a 3D graphics card. I only used DOS because that happens to be the only environment that I had set up video recording for.
@Bisqwit How well would it run a custom Win 98SE machine with a 2.8Ghz P4 and a S3 Trio?
I already knew what cross compiling means.
But I would of worried about runtime libs, sometimes I would get a error with glquake and it would say it could not find opengl32.dll (dll hell) and that is solved by fining the dll file, but your engine didn't need the dos runtime libs
Did the cross compiler put all of the runtime dependencies in the exe?
@commodore256 You are welcome to try. The display card does not matter; this does software rendering. Yes, the DOS program is statically compiled. However, I rather suggest you compile a native version for your OS and use OpenMP. That's what I did for the encoding, anyway. (But if you are going to test this, you will need the textures as well.)
@sebamstrad Correction. The editor runs in 16-bit. But the 3D program is 32-bit. It is compiled using DJGPP, and it runs in protected mode using a DOS extender.
@kw1ksh0t Thanks, but I have no plans of entering a competitive field. There is always someone better, more skilled, more efficient and more entertaining. As for simply doing stuff for impressions and education, I've already got my channel right here.
@LunaVorax Yes, it is available. However, to run it you must first compile and run the program (makemaps) which generates the lighting layer files (lmap*.raw, rmap*.raw, smap*.raw). I did not include them because it's a bit too large a download for my server to serve. You can run it on your operating system of choice; it's portable. The dos-compiled opengl test program is dos_goal.exe within the package.
@LunaVorax And when entering the URL; triplecheck and make sure to remove the invisible garbage characters that YouTube inserts in the URL to thwart people trying to give helpful instruction. I found one in the between of "l" and "e" in "examples".
Haha, thanks for the quick reply. I myself know the basics already. I can understand your basic code, but you're doing quite some complex mathematical calculations/declarations which I have no idea how to decipher.
Do you know what they do exactly? Or are some of them things you just do to get that result you want?
@Garteal The mathematical calculations and declarations are both common vector/matrix calculations that you simply must learn if you do 3D/vector programming, and at some points they are the result of experimentation that was done before creating the video.
@Garteal Thank you for the feedback. I suggest you get a good tutorial that teaches the basics of _programming_, i.e. the core concepts: while-loop, if-then, for-loop, subroutines (functions), parameters, variables, types, all that. These are the core blocks behind almost every proramming language. Then you choose whatever programming language you can quickest get to produce something rewarding. For me it was BASIC, for you might be Lua or Python. C and C++ are more rarely that. I.d.k. about C#.
@inricheetos That's what "done all in software" means. I used OSMesa, which is an all-software implementation that renders into memory buffers. It does not even require the computer to have a display card at all.
@Bisqwit I had just gotten DJGPP installed into a folder just for DOS programs and I have DOSBox configured to emulate a basic Pentium with 16MB of RAM and its mounted to a folder where DOS programs get installed on with their own folders.
Got DJGPP installed correctly too. How do I set up DJGPP and what should I do to compile this OpenGL program with it
@Dakkiller1 I have not actually been able to make DJGPP compile C++ programs in plain MS-DOS (which DOSBox emulates). The C++ system requires long file name support (from Windows 95 onwards), which DOSBox does not provide. In order to compile, I used a Linux-hosted DJGPP installation, i.e. compiler which runs in Linux and produces MS-DOS executables. You could also do it in 32-bit Windows. For setting up DJGPP, please see documentation at delorie.com; I am sorry but I cannot help you with it.
I also read earlier that you ran it directly on Linux. Did you like built a executable for Linux and like found a way to like record the footage from Linux?
Also, since DJGPP was last updated in 2002, I supposed you also seperately downloaded old Linux library's like maybe this old one I heard about called svgalib something which I heard about from a readme file of an Demoscene demo from 1996 which had both DOS and Linux executables. Will the 1994 Linux port of Doom run on 2005Linux
@Dakkiller1 I ran the compiler on Linux, and it produced an executable for MS-DOS. Which was too slow to run under DOS (just that it _works_), so I also compiled it as a Linux executable and used that for the actual video. As for DJGPP being updated, I compiled my own DJGPP version, using the most recent GCC build at that time. So my current DJGPP version is based on GCC 4.6.0, which was released in March 25, 2011. No "old Linux libraries" were necessary. Everything was recent, including OSMesa.
preview.tinyurl dot com/657m3sn -- This contains the version exactly as shown in the video.
preview.tinyurl dot com/6f2k35b -- This contains a refined version. Among other things, it is laid out more modularly, and it contains ellipsoid-based collision checking.
@PushJWC While this _can_ be done in DOSBox, it's not exactly fast. I have to crank the CPU cycles setting really high for it to appear smooth from the perspective of the emulated system, and even then, the FPS is quite low on the host computer. In fact, I ran this program on the actual host (Linux x86_64) rather than in DOS, to get real time performance. That's because of software rendering. Hardware OpenGL would of course be blazing fast, but I could not use it.
@son1cgu1tar This was my first OpenGL program ever. So no, no 3D game. (I have made a few other games, all 2D, but they are all rather simple and not too original.) But regarding this 3D thing I have some concepts that I want to try out, perhaps we'll see more of that later. Now if I just can figure out the vector mathematics needed...
What I love about your videos is that you really love the art of design and understand it so well, the end result is that you're able take the person watching it to another world. It's almost like you're able create cameras that film hidden dimensions or other places in the universe.
@Louix94 Thank you for the feedback! Your words are too kind.
But I have read source code as a hobby for many years. Some of them are really good and entertaining. In a way, I want to return the favor :-) I want to make source code that speaks for itself and whose primary audience is humans, not computers. Sometimes I have to compromise though. I wish all code could be self-explanatory and insightful, but once in a while you just need to mash in a boring sequence to get the computer to do stuff.
I wish I was even half as good as you in programming... :(
Viturien 2 days ago
I cried sir. Thank you.
MrDef112 1 week ago
Anyone else thought this was sped up and then looked at the time and realized he was doing this in real-time? o.o
MenkoDany 2 weeks ago
Hey , what do you mean with Tool-Assisted?
I always wanted to know how to make a Tool-Assisted-Movie from DOS or Windows , i was thinking that is impossible
ahron123456 2 weeks ago
@ahron123456 There is a FAQ linked to in the video description. It explains the concept. As for tool-assisted speedruns, see TASVideos for more information. It is possible for both DOS (e.g. Commander Keen 5) and Windows (e.g. Cave Story).
Bisqwit 2 weeks ago
You are the most talented programmer I've seen on YouTube. I aspire to someday have skills as good as yours.
tekkn0logik 2 weeks ago
@tekkn0logik Thank you for the kind words. Yet, I too have much to aim for, many people whom I don't quite measure favorably up to. It is a lengthy profession.
Bisqwit 2 weeks ago
I'm standing speechless. Amazing piece of work!
Berzeger 3 weeks ago
I think i saw Mario at the top.
gmodkid1 3 weeks ago
I think i saw Mario's head at the top.
gmodkid1 3 weeks ago
Gosh. I have never seen such complex C++. That looks just wonderful, you should make an indie game!
misternumberuno 1 month ago
Where can we get the actual source code for this?
theOnlyHe110 1 month ago
@theOnlyHe110 Here.
preview.tinyurl dot com/657m3sn -- This contains the version exactly as shown in the video.
preview.tinyurl dot com/6f2k35b -- This contains a refined version. Among other things, it is laid out more modularly, and it contains ellipsoid-based collision checking.
Bisqwit 1 month ago
Oh my god! Amazing work, mate!
pufixas 1 month ago
How do you type this fast and this smooth?
HappyAfroamerican 1 month ago
@HappyAfroamerican The FAQ linked to in the movie description (which one should usually read before posting a comment) answers this question and many others.
Bisqwit 1 month ago
@Bisqwit How do you reply to a comment this fast? Are you omnipresent or something? D:
HappyAfroamerican 1 month ago
@HappyAfroamerican I get an e-mail notification of comments. I check e-mail every few hours, and you had just posted the previous comment.
Bisqwit 1 month ago
So, this will work on a dos 6.22 Pentium 2 machine?
I don't know much about cross-compiling, but did you compile using Linux Static Binaries and tell it "hey I need this for MSDOS"?
I heard the latest port of mesa for djgpp was version 6.3 (made in 2005)
I thought programming in older libs and headers would be harder because you're dependent on new functions and you're like "shit, it's 2005, this function in OpenGL doesn't exist in this version".
So you're using the mesa in squeeze?
commodore256 1 month ago
@commodore256 It runs on DOS, but not in real time.
Cross-compilation means compiler runs on one platform and produces code for another platform. DJGPP always produces DOS programs, regardless which OS you run it on.
As for Mesa, I used Mesa-7.10.2 (the newest available) and compiled it manually. I had to minorly change a few of its source files. I used ./configure --host=i586-pc-msdosdjgpp and a ton of other options (YouTube comment length limit prevents me from posting the rest).
Bisqwit 1 month ago
@Bisqwit The point was to demonstrate OSMesa, which renders 3D graphics without need for a graphics card, let alone a 3D graphics card. I only used DOS because that happens to be the only environment that I had set up video recording for.
Bisqwit 1 month ago
@Bisqwit How well would it run a custom Win 98SE machine with a 2.8Ghz P4 and a S3 Trio?
I already knew what cross compiling means.
But I would of worried about runtime libs, sometimes I would get a error with glquake and it would say it could not find opengl32.dll (dll hell) and that is solved by fining the dll file, but your engine didn't need the dos runtime libs
Did the cross compiler put all of the runtime dependencies in the exe?
commodore256 1 month ago
@commodore256 You are welcome to try. The display card does not matter; this does software rendering. Yes, the DOS program is statically compiled. However, I rather suggest you compile a native version for your OS and use OpenMP. That's what I did for the encoding, anyway. (But if you are going to test this, you will need the textures as well.)
Bisqwit 1 month ago
The mode you used is 0x13 or 13h aka VGA/MCGA colour mode.
gdm413229 2 months ago
One fascinating coded realm. Your small mistakes are a part of what makes it so beatiful.
LifeWaste1618 2 months ago
IN 16BIT ??? *.*
sebamstrad 2 months ago
@sebamstrad Correction. The editor runs in 16-bit. But the 3D program is 32-bit. It is compiled using DJGPP, and it runs in protected mode using a DOS extender.
Bisqwit 2 months ago
Hyvää yötä :D
patepoju 2 months ago
LOL! No fucking idea whats going on! :D
TeamChesus 2 months ago
You rock!
thezurator 2 months ago
are you a pinoy ??
ReinuAntipuesto 2 months ago
@ReinuAntipuesto Nope.
Bisqwit 2 months ago
O_O
lespy2033 2 months ago
I came here cauz of omfgninja. and i was like whut....
mr123412341234 2 months ago 14
@mr123412341234 same here
HowHighAreYou96 2 months ago
Wtf is Mario doing here ?
zimica3000 2 months ago
Dude...you, demoscene, now.
kw1ksh0t 2 months ago 9
@kw1ksh0t Thanks, but I have no plans of entering a competitive field. There is always someone better, more skilled, more efficient and more entertaining. As for simply doing stuff for impressions and education, I've already got my channel right here.
Bisqwit 2 months ago 3
@Bisqwit Wwo, I'm impressed! btw... is this speed up footage? Or do you really type that quick
sglegomania 2 months ago
@sglegomania Suggest you read the movie description, and especially the FAQ linked to in it!
Bisqwit 2 months ago
Great work! I like the dithering and lighting you applied; the end result has a nice look.
zxc1000zxcv 2 months ago
@zxc1000zxcv Thanks!
Bisqwit 2 months ago
What text editor is this?
shi234 3 months ago
@shi234 One that I made myself for the purpose of creating these videos...
Bisqwit 3 months ago 4
Is the compiled file available for download? I want to run it on my actuall i586 MS-DOS machine :)
LunaVorax 3 months ago
@LunaVorax Yes, it is available. However, to run it you must first compile and run the program (makemaps) which generates the lighting layer files (lmap*.raw, rmap*.raw, smap*.raw). I did not include them because it's a bit too large a download for my server to serve. You can run it on your operating system of choice; it's portable. The dos-compiled opengl test program is dos_goal.exe within the package.
See: bisqwit.iki.fi (slash) jutut/kuvat/programming_examples/opengl-example-test_dos.7z
Bisqwit 3 months ago
@LunaVorax And when entering the URL; triplecheck and make sure to remove the invisible garbage characters that YouTube inserts in the URL to thwart people trying to give helpful instruction. I found one in the between of "l" and "e" in "examples".
Bisqwit 3 months ago
Haha, thanks for the quick reply. I myself know the basics already. I can understand your basic code, but you're doing quite some complex mathematical calculations/declarations which I have no idea how to decipher.
Do you know what they do exactly? Or are some of them things you just do to get that result you want?
Garteal 5 months ago
@Garteal The mathematical calculations and declarations are both common vector/matrix calculations that you simply must learn if you do 3D/vector programming, and at some points they are the result of experimentation that was done before creating the video.
Bisqwit 3 months ago
Beautiful video, excellent programming and with the addition of that soundtrack, this is a masterpiece! I really like this video.
As an programmer myself, I find this very inspiring. Whenever I watch this video, it makes me want to program and master the languages.
I'm currently still learning/playing with C++/C#. I hope I'll eventually get to this stage.
Where/when did you start learning your favorite language?
Do you have any tips for us -starting- folks?
Garteal 5 months ago
@Garteal Thank you for the feedback. I suggest you get a good tutorial that teaches the basics of _programming_, i.e. the core concepts: while-loop, if-then, for-loop, subroutines (functions), parameters, variables, types, all that. These are the core blocks behind almost every proramming language. Then you choose whatever programming language you can quickest get to produce something rewarding. For me it was BASIC, for you might be Lua or Python. C and C++ are more rarely that. I.d.k. about C#.
Bisqwit 5 months ago
Does it render on CPU?
inricheetos 5 months ago
@inricheetos That's what "done all in software" means. I used OSMesa, which is an all-software implementation that renders into memory buffers. It does not even require the computer to have a display card at all.
Bisqwit 5 months ago
glut is realy old...why dont you switch to SDL
it has it's oun sound system but you probably use OpenAL for that
pghg022 6 months ago
@pghg022 I did not use Glut.
Bisqwit 6 months ago
Great music, good tutorial, thanks for the efforts.
computerex 7 months ago
How do you compile the original code in Code::Block
Dakkiller1 8 months ago
@Dakkiller1 Please clarify your question. I cannot see a reference to a "Code::Block" in my source code.
Bisqwit 8 months ago
@Bisqwit I meant CodeBlocks, Its an IDE that comes with alot of crap and stuff
Dakkiller1 8 months ago
@Dakkiller1 Ah. Then you obviously know more about it than I do!
I know the commandline inside out, i.e. how to run GCC directly.
Bisqwit 8 months ago
@Bisqwit I had just gotten DJGPP installed into a folder just for DOS programs and I have DOSBox configured to emulate a basic Pentium with 16MB of RAM and its mounted to a folder where DOS programs get installed on with their own folders.
Got DJGPP installed correctly too. How do I set up DJGPP and what should I do to compile this OpenGL program with it
Dakkiller1 4 months ago
@Dakkiller1 I have not actually been able to make DJGPP compile C++ programs in plain MS-DOS (which DOSBox emulates). The C++ system requires long file name support (from Windows 95 onwards), which DOSBox does not provide. In order to compile, I used a Linux-hosted DJGPP installation, i.e. compiler which runs in Linux and produces MS-DOS executables. You could also do it in 32-bit Windows. For setting up DJGPP, please see documentation at delorie.com; I am sorry but I cannot help you with it.
Bisqwit 4 months ago
@Bisqwit Oh
I also read earlier that you ran it directly on Linux. Did you like built a executable for Linux and like found a way to like record the footage from Linux?
Also, since DJGPP was last updated in 2002, I supposed you also seperately downloaded old Linux library's like maybe this old one I heard about called svgalib something which I heard about from a readme file of an Demoscene demo from 1996 which had both DOS and Linux executables. Will the 1994 Linux port of Doom run on 2005Linux
Dakkiller1 4 months ago
@Dakkiller1 I ran the compiler on Linux, and it produced an executable for MS-DOS. Which was too slow to run under DOS (just that it _works_), so I also compiled it as a Linux executable and used that for the actual video. As for DJGPP being updated, I compiled my own DJGPP version, using the most recent GCC build at that time. So my current DJGPP version is based on GCC 4.6.0, which was released in March 25, 2011. No "old Linux libraries" were necessary. Everything was recent, including OSMesa.
Bisqwit 4 months ago
@Bisqwit
Can you upload the code ? (The fixed version)
labobo 8 months ago
@labobo Yes.
preview.tinyurl dot com/657m3sn -- This contains the version exactly as shown in the video.
preview.tinyurl dot com/6f2k35b -- This contains a refined version. Among other things, it is laid out more modularly, and it contains ellipsoid-based collision checking.
Bisqwit 8 months ago
@Bisqwit thanks
labobo 8 months ago
@PushJWC While this _can_ be done in DOSBox, it's not exactly fast. I have to crank the CPU cycles setting really high for it to appear smooth from the perspective of the emulated system, and even then, the FPS is quite low on the host computer. In fact, I ran this program on the actual host (Linux x86_64) rather than in DOS, to get real time performance. That's because of software rendering. Hardware OpenGL would of course be blazing fast, but I could not use it.
Bisqwit 9 months ago
Just awesome, from the data programmed to the actual scene
Did you ever thought about, or ever made a full game on DOS ?
son1cgu1tar 9 months ago
@son1cgu1tar This was my first OpenGL program ever. So no, no 3D game. (I have made a few other games, all 2D, but they are all rather simple and not too original.) But regarding this 3D thing I have some concepts that I want to try out, perhaps we'll see more of that later. Now if I just can figure out the vector mathematics needed...
Bisqwit 9 months ago
What I love about your videos is that you really love the art of design and understand it so well, the end result is that you're able take the person watching it to another world. It's almost like you're able create cameras that film hidden dimensions or other places in the universe.
Another great video, please keep inspiring!
Louix
Louix94 9 months ago
@Louix94 Thank you for the feedback! Your words are too kind.
But I have read source code as a hobby for many years. Some of them are really good and entertaining. In a way, I want to return the favor :-) I want to make source code that speaks for itself and whose primary audience is humans, not computers. Sometimes I have to compromise though. I wish all code could be self-explanatory and insightful, but once in a while you just need to mash in a boring sequence to get the computer to do stuff.
Bisqwit 9 months ago
Beautiful music. Is it from Lufia?
ZidaneTribal93 9 months ago
@ZidaneTribal93 Yes, it is from Lufia.
Bisqwit 9 months ago