Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Legal Stuff:
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
We make no warranties as to the usability or correctness of this code.
About the Source Code:
Included is almost all the source code to Descent 1, ver. 1.5. We removed
all code to which we did not own the copyright. This mainly involved low-
level sound and modem code.
Kevin Bentley, maintainer of the Descent Developer Resources and author of
Kahn, has agreed to support this code base through his website at
www.ladder.org/ddr. If you have questions or comments about the code, please
go there. Please do not contact Parallax Software, its employees or its
affiliates.
The following tools were used in the development of Descent:
Watcom C/C++, version 9.5
Microsoft Macro Assembler, version 6.1x
Opus Make, version 6.01
Have fun with the code!
Parallax Software Corporation
Jan. 12, 1998
Kevin Bentley's notes:
As included in this zip file, the source should compile and run with the following:
Watcom 10.6
Miscrosoft Macro Assembler 6.11
GNU (or compatible, such as Microsoft, or Borland) Make utility
To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory.
When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile.
The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.)
If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work.
To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement.
---
Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:
Q: Why are you releasing the source code?
Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code. There are two
reasons for this. One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.
Matt: That's a good thing?
Mike: Not really, except that it might make people think writing production
quality code isn't that hard.
Matt: That's a good thing?
Mike: Well, not really, unless they learn that they have to focus on
designing a brilliant game, rather than writing brilliant code.
Matt: Ah, that's a good thing.
Mike: Yeah, I don't think I understood that until we started working on
Descent. At first all I cared about was writing technically good code.
Matt: Then we ran out of money and all we cared about was finishing our game.
Mike: Right. Our code got ugly, but our game got done.
Matt: Writing code is easy. Finishing is hard.
Q: Is there any code you're particularly proud of?
Matt: No.
Mike: No.
Matt: I'm most ashamed of the vector intersection code.
Mike: Yeah, that's pretty bad.
Matt: Mike's AI code is the worst I've ever seen.
Mike: Only because you program with your eyes closed.
Matt: I'm proud we managed to finish without going bankrupt.
Mike: Yeah, finishing is all. Who said that?
Q: Seriously, what should people look at?
Matt: I really don't know. It's not like there's a lot of reusable code in
there. Some low level stuff could probably be used. The vector-matrix
library is probably fairly instructive.
Mike: The AI is an example of how not to write an AI system.
Matt: You're doing it the same way in FreeSpace, right?
Mike: Yeah.
Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.
Q: You're including the editor, right?
Mike: Yeah, people will be able to use our editor. On the whole, I doubt
it's any better than DMB2. And it doesn't run under Windows.
Q: What enhancements do you hope to see people make?
Matt: If an aftermarket sprouts for it, we'd be very happy. People ask for
lots of little features that we just don't have the time to add.
Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.
Matt: I don't think we can guess what people will do. We had no idea how
much would be done with third party levels.
Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?
Mike: We're not opposed to that in principle. They need to get written
permission from us, though. And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.
Q: Any plans to release the D2 source code?
Matt: No definite plans. Though, I guess I don't see why all our source
code wouldn't eventually get released.
Mike: Me, too. It loses commercial value in just a few years. And,
releasing it brings us closer to our customers, which is a very good thing
to do.
Q: Any final comments?
Mike: Yeah, have fun with the code.

About

The Descent 1 source code.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors