1
0
mirror of https://github.com/DxWnd/DxWnd.reloaded synced 2024-12-30 09:25:35 +01:00
DxWnd.reloaded/build/help/Introduction.html
gho tik 36d3bd869b v2_03_73_src
Former-commit-id: 9754914d164fcaabfbb82e89cad744556e1afb18
2017-03-06 11:46:13 -05:00

109 lines
12 KiB
HTML

<html>
<head>
<title>Introduction</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 4.6.2.573">
<meta name="keywords" content="">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "DxWnd.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Introduction");
}
});
</script>
</head>
<body>
<div id="topic_header">
<div id="topic_header_content">
<h1 id="topic_header_text">Introduction</h1>
</div>
<div id="topic_header_nav">
<a href="GettingStarted.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<h3 class="rvps4"><span class="rvts0"><span class="rvts11">What is DxWnd?</span></span></h3>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">DxWnd is a Win32 hooker that intercepts and alter the behavior of window messages and APIs by means of &nbsp;event interception and code injection directed to the configured tasks in order to get a proper behavior of fullscreen programs, but in a windowed environment... too complicated? Well, actually DxWnd is a tool that does its best to let you run &nbsp;fullscreen applications in a window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Is that all? Well, no, not really..... Taking advantage of the hooked logic injected in the application, DxWnd does some more little tricks, that fall in two general categories: making your program more compatible to different environments and altering its time flow. So, that makes some old programs able to run on modern platforms (well, at least sometimes...) and to increase or decrease the game speed at your will. Have you always been a complete nerd with FPS? Here comes your revenge: bullet time wherever you need it!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<h3 class="rvps4"><span class="rvts0"><span class="rvts11">What is DxWnd for?</span></span></h3>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Let's start with the first one. Once upon a time (in the IT clock, that means a few years ago) people used to have clumsy PCs that in a slow and single-threaded environment tried to do their best to impress their owner with strength demonstrations, usually trying to move colored pixels on the screen in the fastest possible way. That custom was named videogaming, and implied using all tricky ways to improve the system performances. One common way to do that, was to hijack all hardware resources and dedicate them for this single purpose, of course disabling any attempt to run parallel tasks in other portions of the screen: the classic example being any videogame developed for Win95 and further.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Now, you guys may ask yourselves why should all this time be passed away and PC increased their power by a 100x times more, to keep playing the very same game in the very same environment. Someone is calling you on a chat? A new email message is arrived? You want to browse the net meanwhile? Something is happening on your favorite social network or MMPORPG? Forget about it! You're currently dealing with a task that wants 100% of your attention, even if it uses 1% of your PC power. So, why not attempting to push this old and invasive application within a window of its own? </span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">That's what DxWnd is mainly for: let fullscreen applications run pretending they're still in a fullscreen context, but actually within their own separate window. And, taking advantage of the code hooking needed to do so, in some case it may even happen that things are further improved, but we'll see this later.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A second certain fact is the technological evolution that has turned games from different windows operating systems (through Windows 95 to current Windows 8), CPU architectures (16, 32, 64 bits) and from old and tricky directdraw support to recent 3D libraries like direct3d 8/9/10/11, and OpenGL. This evolution has left some victims behind: a lot of wonderful games are no longer supported in the current environment, even despite the efforts Microsoft is making to support legacy. In some cases, DxWnd is crucial to recover these old glories of the past.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<h3 class="rvps4"><span class="rvts0"><span class="rvts11">Why develop DxWnd?</span></span></h3>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Now the second question: why someone should ever bother to develop a thing like this? This is different story. I started looking for a window-izer for a specific purpose: not having a dual monitor PC at home, I was looking for a way to debug fullscreen videogames. Looking in the net resources, I got references to an Asian (Japanese?) DxWnd project that seemed discontinued, but left an old copy of the C++ sources (unfortunately, not the most recent release) to be downloaded. After that, there were several attempts to translate and improve the program, but none shared the sources again. When I opened the project trying to understand the basic principle, I found that it was incredibly simple and yet sophisticated, acting I think in a very close way as virus or anti-virus programs do.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">So I just thought it was such a pity that this incredible piece of artwork of C++ programming could be left discontinued, and then I decided to “adopt” the project and continue it, even if in the meanwhile I bought a second monitor for my domestic PC. And for the same reason, I published the source code on SourceForge, a proper location for any open source piece of coding, and I encourage anyone to join the project and extend it further on. And let me thank again the mysterious coder whose only trail left to make a reference is SFB7: whoever you are, SFB7 (if this was your nick), thank you.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">From the time I published the first DxWnd releases, then, a lot of improvements have been made, &nbsp;most of them involving sophisticated techniques that I learnt from several great teachers, coming from SourceForge, CodeProject and anywhere else in the net. Thank you all, open source supporters!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<h3 class="rvps4"><span class="rvts0"><span class="rvts11">How does DxWnd work?</span></span></h3>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Well, actually there are several different ways you may write a fullscreen application, and that's why there are corresponding different ways to handle it hence some annoying configuration to do before.</span></p>
<p class="rvps2"><span class="rvts6">Please, bear in mind that DxWnd is still an experimental program, and then its configuration is still a little clumsy. This aspect will be improved and simplified at proper time, later on.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Anyway, these are the basic principles of the DxWnd behavior:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ol style="text-indent: 0px; margin-left: 24px; list-style-position: outside; list-style-type: decimal;">
<li value="1" class="rvps2"><span class="rvts6">DxWnd DOES NOT alter in any way the behavior of your software (either system or applications) when not active. When turned off, everything behaves as if DxWnd never run on your machine, or never existed at all.</span></li>
<li value="2" class="rvps2"><span class="rvts6">DxWnd DOES alter the behavior of your application software when running: it hooks custom code that changes the applications' behavior, hopefully in a positive way, but you never know. It's possible that because of hacks to the directdraw or other system code there might be annoying effects such as frozen screen, unresponsive keyboard and so on. Be patient and maybe you'll find a good game setting to play without side effects.</span></li>
<li value="3" class="rvps2"><span class="rvts6">This is tricky: unless you need code injection support (this will be explained later) when running, DxWnd affects ALL games in the shown list, no matter whether the cursor is highlighting a particular one, or if you started your game outside the DxWnd interface. That's why you need not activate the game from the DxWnd menu, but you could keep managing it as usual (clicking on desktop icons, shortcuts or whatsoever). So, remember this: whenever DxWnd is running, it impacts on ANY game it is configured on its game list, no matter if you didn't start it from DxWnd interface.</span></li>
<li value="4" class="rvps2"><span class="rvts6">Again, DxWnd is currently coded to make ONE SINGLE game working at a time, even if it could be possible to start and intercept more than one in parallel. In some cases, the games work together, but unpredictable things happen for instance when you try to control more than one game at a time. Maybe one day it will make it possible to play more games in parallel, but so far that feature is unsupported, so DxWnd is operating on one game (the fist started up) while the others will not be effected and should start normally in their original fullscreen mode.</span></li>
</ol>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">DxWnd stores ALL its settings on a couple of configuration files (dxwnd.ini for almost everything, and dxwnd.reg for altered registry keys configuration) in the very same folder where dxwnd.exe and the hooker dxwnd.dll are located. No info is written in the registry or anywhere else in the system. No installation procedure is required, just copy the files where you like better, create your own shortcut entries wherever you like and, whenever you're satisfied with some DxWnd setting, just back-up the configuration by simply copying the dxwnd.ini file somewhere else. Also, keep in mind that ALL changes are written on disk just when DxWnd exits safely, so whenever it crashes your configuration changes are certain to be lost.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">From release 2.02.22, then, it's also possible to export and import single pieces of configuration to separate files, so that people are encouraged to share working game configurations by sharing these files only.</span></p>
<p></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
Copyright &copy; 2016 by GHO. All Rights Reserved.</div>
</div>
</body>
</html>