dvwjr on 1/9/2006 at 09:33
Quote Posted by "Obeejw"
Really, there's no other remapping program that compares to the usefulness of this, not just in SS1 but in other old games. I do understand what people are saying, this kind of thing pops-up every once in a while, but I think Tradekeys covers everyones needs so that they don't need something else, and thus, don't need to create more threads.
I think for the Win9x family you have again provided the same solution as in previous 'finds'. I think it is FINE for Win9x systems. Congrats.
However for WinNT/2K/XP/2003 its usefulness is again, debatable. Why? Because it does not apply 'per user'. It does not allow a log-off/logon to activate and then a log-off/logon UserID to de-activate. No, it requires a re-boot - then a logon. Play System Shock with custom keys. Then change back to original keys, with a re-boot, again to de-activate. Log back in, back to normal. Just as in the other thread, OK if you don't mind a dedicated System Shock custom keyboard and PC during that entire time...
Here is the part of the source code for TradeKeys, from the ZIP file included with the download. Unlike Win9x - this is how the scancodes are modified for the WinNT/2K/XP/2003 family of operating systems. Just like all the other solutions for WinNT/2K/XP/2003 - it is merely a front-end for the registry changes necessary to re-map scancodes. Nothing more.
Line 455 of TradeKeysDlg.cpp:
Code:
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Keyboard Layout", 0, KEY_SET_VALUE, &hKey);
What does Microsoft say about the use of the Registry to re-map scancodes on Win2K, WinXP, Win2003?
Quote:
The following disadvantages are recognized:
• Once the map is stored in the registry, a system reboot is required to activate it.
• The mappings stored in the registry work at system level and apply to all users. These mappings cannot be set to work differently depending on the current user.
• The current implementation restricts the functionality of the map such that mappings always apply to all keyboards connected to the system. It is not currently possible to create a map on a per-keyboard basis.
Source: (
http://www.microsoft.com/whdc/device/input/w2kscan-map.mspx) Scan Code Mapper for Windows Windows Hardware Developer Central -
Device Fundamentals>Input and HID Technologiesdvwjr
Obeejw on 1/9/2006 at 12:45
My reply to this is:
Why not just install Windows 98SE on a second hard-drive and save yourself a HUGE amount of trouble with old games?. I did it and I've never looked back. The information on how to setup a dual-boot config is easy to find on the web, and a 10gb HDD is like $5. Seriously, being able to simply install a game and then play it without any mucking around (besides setting up sound and memory for DOS games) is heaven. It bewilders me why people go to such excessive lengths with like 5 programs and hacks to get SS1 to run.
It's usefulness in Windows NT/XP is debatable. Infact it's probably not practical at all. But I don't care, I've got Win98 :P. Thanks for the technical info though, it's definitely useful in understanding how these things work.
-let's sign our posts
Vigil on 1/9/2006 at 12:55
Well if you want to look at it that way, I think a lot of people would agree that buying another hard drive and installing an entire OS just to play System Shock with custom controls counts as excessive lengths as well ;)
Qaladar on 1/9/2006 at 20:27
Regardless of how great it is once running, having to reboot your computer every time you want to play a game gets old real fast.
dvwjr on 1/9/2006 at 22:12
Quote Posted by "Obeejw"
It bewilders me why people go to such excessive lengths with like 5 programs and hacks to get SS1 to run.
Well, five additional programs for the enhanced CD-ROM version of SYSTEM SHOCK on WinXP - much of that is 'urban' myth that happens on this
(and other) forums. The only real problem with SYSTEM SHOCK running properly with the WinNT family NTVDM environment is what Mok discovered
(and patched) in 2003 - the SYSTEM SHOCK code wrote to memory that it did not allocate from a DPMI server. This was masked in the DOS environment when it was first released because the less stringent Dos/4GW DPMI host portion of the DPMI host/client extender built into SYSTEM SHOCK did not GPF when this programming error occured. Mok found out that when the DOS/4GW client was operating under the stricter Windows DPMI v0.9 host this coding error was exposed as the game would GPF.
(All hail Mok!) If this coding error had NOT been present then SYSTEM SHOCK would have functioned in the WinNT family NTVDM environment from Day One. Patch the code once and you are fixed forever.
WinXP(SP2) provides a fair SoundBlaster 2.0 emulation with General MIDI to boot. VDMsound for SB16 emulation is an option, not a requirement
(though a nice one). No programs required here.
The ever mentioned
'slow mouse' in the NTVDM environment is not a SYSTEM SHOCK problem - it is a Microsoft NTVDM problem due to the failure to properly implement the Mouse API Int33h AX=000Fh function call. So use of the crippled MOUSE2KV.EXE is to correct an NTVDM problem, not a SYSTEM SHOCK code problem - though the user just knows he has a 'slow mouse' outside the default 320x200 video resolution. The code could be fixed to mask the NTVDM API errors.
The supposed necessity for NOLFB.COM is another comforting myth. The purpose of NOLFB is to mask a VESA BIOS from reporting its LFB support. The SYSTEM SHOCK code makes no attempt to use the Linear Frame Buffer method to manipulate video memory. It is all Int 10h AX=4F05h calls - in other words 'bank select'. SYSTEM SHOCK was written in 1993/1994 when the VESA VBE v1.2 standard was in effect. VBE 2.0 and its API support for LFB did not happen until after SYSTEM SHOCK shipped in 1994. Another program not needed.
The only other need for
'extra' programs/hacks comes from extending past the 640x480 VESA mode 101h video resolution. Then one has to play with VGA.SYS so that one can use VESA modes 103h and 105h because the default VGA.SYS won't let a full-screen NTVDM use the Video BIOS to touch certain registers. If the video adapter driver writers had let a full-screen NTVDM touch all video registers when it handed-off control to the full-screen session - none of this mucking around with the default VGA.SYS would be necessary. One time patch and all VESA games work for NVIDIA adapters. Not so on Matrox, not sure about ATI.
FYI,
dvwjr
Obeejw on 2/9/2006 at 01:23
Quote Posted by Vigil
Well if you want to look at it that way, I think a lot of people would agree that buying another hard drive and installing an entire OS just to play System Shock
with custom controls counts as excessive lengths as well ;)
But I didn't say that :confused:
What about the hundreds of other classic games that can run with no trouble on Win98?. Do I really have to cover
everything in my response so that you know exactly what I'm thinking?. I think it's pretty obvious that you should assume I didn't mean just SS1.
I wish I could Kolya, but I can't download 60mb right now as I'm on 56k dialup. I could give a go in a day or two though. It looks really cool, would it work on one of those new USB keys that you can run programs off without modifying the host computer's HDD?
doctorfrog on 2/9/2006 at 02:39
Well, I'm certainly not saying meh. Though I figured programs like this existed, I never bothered to find them, but now... well now I have no excuse not to play SS1. I'm a numberpad guy; I like my meese axes inverted and my left hand unWASD'd.
Drat on 2/9/2006 at 02:53
Quote Posted by Obeejw
It looks really cool, would it work on one of those new USB keys that you can run programs off without modifying the host computer's HDD?
It would. Generally you should avoid running anything on a USB drive has has to write a lot of data, but with SS1 it would only be save games, and those would be relatively small.
Kolya on 2/9/2006 at 03:00
Quote Posted by Obeejw
I wish I could Kolya, but I can't download 60mb right now as I'm on 56k dialup. I could give a go in a day or two though. It looks really cool, would it work on one of those new USB keys that you can run programs off without modifying the host computer's HDD?
Take your time it's not urgent. And yeah it's meant to be playable from an USB stick. Not sure what you mean by those "new USB sticks". Anyway it's not necessary to modify the harddrive for it.