You have been the 'God' of our lives for this gaming life, and you have such power in all of us. Thanks for creating the BUILD engine and for making Duke Nukem 3D possible!! :D
Can I ask you if you have some official additional maps for the game? And I would really like to see you having maps made by yourself... :)
Awesoken at
A little excessive, but thanks, Fernando! : )
> Can I ask you if you have some official additional maps for the game?
Which game? Duke3D or Ken-Build? I've only designed interesting maps for Ken-Build. I included a few of my best maps with the Ken-Build distribution on my website. If you use Windows (who doesn't), I recommend you use the Windows port, which is called JFBuild on this site. I've made other maps for Ken-Build, and I will consider releasing them someday... but they're nowhere near as good as some of the Duke maps you see today!
Fernando at
Awesoken said
Which game? Duke3D or Ken-Build? I've only designed interesting maps for Ken-Build. I included a few of my best maps with the Ken-Build distribution on my website. If you use Windows (who doesn't), I recommend you use the Windows port, which is called JFBuild on this site. I've made other maps for Ken-Build, and I will consider releasing them someday... but they're nowhere near as good as some of the Duke maps you see today!
I've personally asked for Duke3d levels, but I've played Ken-Build, very interesting. Nice work!
I would really like to play your Duke3d maps, if you have made. And about Duke3d today maps, I have some old maps since when Duke was young, if you want to check them out, tell me. Thanks for the reply.
Awesoken at
I've never made any maps for Duke 3D.
Because you're such a curious guy, I posted 8 more Ken-Build maps on my website. Look for XTRAMAPS.ZIP. Enjoy!
Alexey at
POLYMOST.BAS
Hello, Ken
Could you, please, release the original POLYMOST.BAS code somewhere on your site?
I found it rather hard for me to look through the C-code... :(
Thank you in advance!
Awesoken at
The could you please release [x] thread
I don't think it will help you much, but I'll grant your request anyway : ) I added it to my Build source code page Good luck!
ChEeZeBaLL at
Awesoken said
I've never made any maps for Duke 3D.
The man who wrote the graphics engine never made any maps at all? :shock:
JonoF at
ChEeZeBaLL said
The man who wrote the graphics engine never made any maps at all? :shock:
Some of us are better programmers than map designers. :)
Jonathon
Rider at
JonoF said
ChEeZeBaLL said
The man who wrote the graphics engine never made any maps at all? :shock:
Some of us are better programmers than map designers. :)
Jonathon
so the programmers hire mappers and before you know it you can tell everyone you started apogee!
well that may be a bit off, but you get the idea.
KillerQ13 at
AdPlug
Not really a release but something to mention on the site.
The AdPlug WinAmp Plug-In uses Ken's YM3812 (aka Adlib) emulator. I used it to get me some nostalgia from old Apogee game music (IMF files). New sound cards don't support Adlib so it was great hearing it again.
Awesoken at
The could you please release [x] thread
Adplug comes with 2 Adlib emulators actually - the one that isn't mine is default. It's a matter of opinion which one is better. My Adlib emulator is also being used in Jan Lonnberg's port of Ken's Labyrinth: LAB-SDL (Both projects include the source code to my emulator.)
In other news, the latest version of DOSBox (0.62) supports Adlib capture to file. This is something I've been wanting for years - and I'm glad they finally did it! It would be nice to see an Adlib grabber in VDMSOUND as well : P
KillerQ13 at
You wouldn't happen to be a fan of Bobby Prince's and Robert A. Allen's game music would ya, Ken?
cragtek at
ChEeZeBaLL said
Awesoken said
I've never made any maps for Duke 3D.
The man who wrote the graphics engine never made any maps at all? :shock:
How could anyone compete with The Levelord?
Fernando at
The Levelord is my main influence for level editing... he's another GOD in Duke3D Mapping!
Awesoken at
You wouldn't happen to be a fan of Bobby Prince's and Robert A. Allen's game music would ya, Ken?
Bobby Prince - sure. I still remember his tunes from Commander Keen, Wolfenstein, Doom, and of course Duke 3D. Sometimes, I even play them on the piano : ) His tunes tends to be quite repetitive though - which is not my style, but for background music it's ok.
I actually had no idea who Robert Allen was until I used google. I see he wrote some music for the old Epic games. I remember Jazz Jackrabbit had nice music... probably because it was the first game I remember to use wavetable style music.
Alexey at
Hello, Ken
I don't think it will help you much...
I think (and I suppose, that not only I think so), that everything you release on your site (especially source codes, of course, along with QuickBasic codes) are VERY helpful and useful.
Especially for a MUCH less experienced person and a beginner (like me :).
Thank you very much for doing this!
You wrote that you have many of .BAS programs on your HD and that you might
add a QuickBasic page on your site. It would be great to see it in some future...
Also you wrote, that Build Engine project was first started in QuickBasic.
It would be also great to see a QuickBasic codes, related to Build Engine
along with QuickBasic and C codes of (or related to) build1, buildgrid and buildsec demos.
And it would be very interesting to see "the beginnings" of your 6 degrees of freedom texture-mapped polygon engine...
It would be very interesting to see that things, when you get time to release it.
Thank you in advance.
Awesoken at
You wrote that you have many of .BAS programs on your HD and that you might add a QuickBasic page on your site. It would be great to see it in some future...
It takes a lot of time to re-learn how to use old programs, make sure they still work, write documentation for it, and update my website. I still plan to add many QB programs at some point, but it's only going to happen on a day when I'm really bored : P
It would be also great to see a QuickBasic codes, related to Build Engine along with QuickBasic and C codes of (or related to) build1, buildgrid and buildsec demos.
I think you'll be pleasantly surprised ... I added some things to BUILGRID.ZIP just now. I had to spend nearly 2 hours just getting the stupid map editor to work again. : P
And it would be very interesting to see "the beginnings" of your 6 degrees of freedom texture-mapped polygon engine...
Another day, my friend.
Alexey at
Ken,
Awesoken said
You wrote that you have many of .BAS programs on your HD and that you might add a QuickBasic page on your site. It would be great to see it in some future...
It takes a lot of time to re-learn how to use old programs, make sure they still work, write documentation for it, and update my website. I still plan to add many QB programs at some point, but it's only going to happen on a day when I'm really bored : P
I think, that it would be fine if you just toss an archive of your
.BAS programs (an archive of your QuickBasic programs directory)
somewhere on your site (a newly added QuickBasic page for example).
I think that there is no need for documentation (readme.txt) files just to each
of the program. Even comments in .BAS files arent that necessary, I think, that
if there are SOME comments in .BAS file, it'll already be great!
Awesoken said
And it would be very interesting to see "the beginnings" of your 6 degrees of freedom texture-mapped polygon engine...
Another day, my friend.
Ken, could you please just explain a little how does it work (briefly)?
Does it also (like Build :) doesnt use BSP-trees for visibility determination and hidden surface emoval?
What is the "rendering concept" of it?
Is it a portal renderer?
How does it perform visibility determination and hidden surface removal?
Awesoken at
"the beginnings" of your 6 degrees of freedom texture-mapped polygon engine...
Ken, could you please just explain a little how does it work (briefly)?
There is nothing new or interesting about my old 6dof engine. It was called "Polytex" and all it did was convert a Build map to list of generic polygons, generate a BSP on-the-fly at startup, and let you fly around the map. That's it. No editor. No collision detection. No sprites. I avoided the whole issue of hidden surface removal by rendering the whole map in back to front order... which results in correct output, but a lot of overdraw. Unfortunately, this solution is only useful for small maps.
A few years later, I tried a portal-style 6dof engine. Once again, it loaded and converted Build maps to its own native format at startup. This time, I used front-to-back rendering. It was faster than "Polytex" for large maps since it only rendered the visible areas. I used a span-buffer to keep track of which pixels were already written. All I needed now was a list of polygons in front-to-back order. I could have done that with a BSP, but I was unwilling to use an algorithm that would have split polygons. Naturally, I ran into a brick wall : ) What I learned was: in 3D, it is not always possible to select an un-obstructed polygon without resorting to polygon splitting of some kind.
Fernando at
Official EDITART Release question
Hey Ken!
I know you've released the BUILD Source Code in 2000, and that it's release marked a whole new perspective of such. But something was living on my mind for a long time and now's the time to ask you...
If you are the author of EDITART as well, is the source code planned to be released or due to any type of issues will not be released? The reason why I write is that I though it can be a great addition to the JF-Ports series to add the ported EDITART program to each of the JF-Build Games bundles.
Sorry if what I've wrote here was already asked...
Awesoken at
The could you please release [x] thread
My original Build source code distribution includes EDITART.C. I'm guessing the reason why nobody has ported it is because it runs ok under Windows XP. Also, my code contains a lot of VGA-specific hacks to make things unpleasant.
With Jonathon Fowler's port, you can bypass most of EDITART by using the DEF syntax to import your own 32-bit textures (see the "definetexture" command). The reason I say "most of" is because the current version requires you to define dummy textures in EDITART to make things scale correctly. Hopefully, we can fix this in the future.
Anonymous at
Ken, how did you get that machine instructions to do an interrupt in moushack.txt?
Thank you. : )
Awesoken at
Well, first you need to learn 8086 assembler. If you don't know that, then the rest of my explanation will be totally meaningless to you. Also, it helps to look at the "CALL ABSOLUTE" example in the QuickBasic help. It shows how to set up the stack registers (SP and BP) properly. If you mess that part up, you'll get a crash nearly every time.
There is a 16-bit assembler and disassembler built into all versions of Windows (from Dos 1.0 right up to Windows XP) called DEBUG.EXE. I used this to assist with the conversion from assembler to machine language.
In my first example, I will show you how to do some reverse engineering by going the other way (machine language to assembler). This is how you disassemble the code from moushack.txt:
C:\qb>debug
-a
0B6F:0100 db 55,8b,ec,8b,76,06,8b,14
0B6F:0108 db 8b,76,08,8b,0c,8b,76,0a
0B6F:0110 db 8b,1c,8b,76,0c,8b,04,cd
0B6F:0118 db 33,8b,76,06,89,14,8b,76
0B6F:0120 db 08,89,0c,8b,76,0a,89,1c
0B6F:0128 db 8b,76,0c,89,04,5d,ca,08
0B6F:0130 db 00,00,00,00
-u
0B6F:0100 55 PUSH BP
0B6F:0101 8BEC MOV BP,SP
0B6F:0103 8B7606 MOV SI,[BP+06]
0B6F:0106 8B14 MOV DX,[SI]
0B6F:0108 8B7608 MOV SI,[BP+08]
0B6F:010B 8B0C MOV CX,[SI]
0B6F:010D 8B760A MOV SI,[BP+0A]
0B6F:0110 8B1C MOV BX,[SI]
0B6F:0112 8B760C MOV SI,[BP+0C]
0B6F:0115 8B04 MOV AX,[SI]
0B6F:0117 CD33 INT 33
0B6F:0119 8B7606 MOV SI,[BP+06]
0B6F:011C 8914 MOV [SI],DX
0B6F:011E 8B7608 MOV SI,[BP+08]
-u
0B6F:0121 890C MOV [SI],CX
0B6F:0123 8B760A MOV SI,[BP+0A]
0B6F:0126 891C MOV [SI],BX
0B6F:0128 8B760C MOV SI,[BP+0C]
0B6F:012B 8904 MOV [SI],AX
0B6F:012D 5D POP BP
0B6F:012E CA0800 RETF 0008
...
-q
And I derived the original code this way:
C:\qb>debug
-a
0B6F:0100 push bp
0B6F:0101 mov bp,sp
0B6F:0103 mov si,[bp+6]
0B6F:0106
-u
0B6F:0100 55 PUSH BP
0B6F:0101 89E5 MOV BP,SP
0B6F:0103 8B7606 MOV SI,[BP+06]
...
-q
(Hmm.. interesting... 8BEC and 89E5 are aliases in machine code. : )
akula65 at
Ken's observation about the aliased instructions made me curious. I did some digging in ancient Intel and Microsoft programmer references, and it turns out there are a whole class of aliases for register-to-register MOV operations:
______mem to reg/reg to reg
____________|
8BEC=1000 1011 11(10 1)(100)
__________________|_____|
_________________BP____ SP
________reg to mem
____________|
89E5=1000 1001 11(10 0)(101)
__________________|_____|
_________________SP____BP
If the next to last bit in the the first byte is set (a.k.a. the direction bit), then the encoding specifies a memory-to-register or register-to-register MOV, but if it is clear, then a register-to-memory MOV will occur. If this direction bit is set, then the bits 3-5 in the second byte specify the destination register, but if the direction bit is clear, then bits 3-5 specify the source register. Notice that the first two bits of the second byte in both instructions are set which signifies that the "mode" of the MOV in this case is register-to-register even though the direction bit in the second instruction indicates that this SHOULD be a MOV to a memory location.
The upshot of all this is that it apparently works the same for any valid register pair. I tried assembling 8BEE and 89F5 and in both instances they disassemble as MOV BP, SI. I found a piece of code at this site (http://www.rskey.org/detail.asp?manufacturer=Atari&model=Portfolio) where you can see the same variation for MOV BP, SP that Ken noted as well as the predicted variation for MOV SP, BP where both 8BE5 and 89EC are equivalent.
I guess the only interesting question left is whether or not the number of clock cycles required is precisely the same for the variations (at least for old processors).
Anonymous at
Ken could you please release the source to your Kentris game?
Awesoken at
You got it! I added KENTRIS.C to the game distribution:
http://advsys.net/ken/download.htm#kentris
Sebastian at
Awesoken said
You got it! I added KENTRIS.C to the game distribution:
http://advsys.net/ken/download.htm#kentris
coool... KEN, when can we expect the code to voxlap?! I'm so curious about it. Or do you have any big projects running with it?
Anonymous at
Awesoken said
You got it! I added KENTRIS.C to the game distribution:
http://advsys.net/ken/download.htm#kentris
Thank you very much Ken :D :D :D
Awesoken at
I am thinking about releasing the Voxlap source code relatively soon. I haven't been doing anything with it lately and there's no sense in having it rot on my hard drive forever. I just need to find some time to clean it up and prepare the code for release.
Hazard at
Hi Ken, could you please release the Sourcecode of the CaveDemo's justfly.exe? There is some stuff (like the weapon and projectile code) that i'd like to take a look at.
Thanks,
Tim
Awesoken at
... could you please release the Sourcecode of the CaveDemo's justfly.exe?
JUSTFLY.C is more Tom's code than mine. I'm sure he would be fine with a release but I need to check with him first.