Category Archives: Troubleshooting

Cursor Lock FAQ and Future

Q. Cursor Lock doesn’t work for X program.

I understand that the underlying concepts involved in getting Cursor Lock to function correctly in Program Mode possibly exceed the capabilities of some users, e.g. casual teenage gamer.  So, if your eyes are glazing over at the prospect of having to figure out what is meant by a “Lock Program” and an “Open Program”, just skip Program Mode altogether and bask in the simplicity of User Mode.  In User Mode, Cursor Lock runs in the background and you control it with hotkeys.  There’s even a handy shortcut to User Mode in your Start Menu. Just don’t forget your hotkeys. 😉

However, if you’re more of the advanced sort, you’ll appreciate that Program Mode only runs when you need it and thus doesn’t waste resources.  Most people get hung up on the difference between the “Open Program” and the “Lock Program”, thus it is useful (and perhaps necessary) to understand the general execution flow, which is as follows.

Cursor Lock FlowchartBy separating the program that is executed from the one that is cursor-locked, it allows for launcher programs to be supported. Many programs (games) use launchers, which are executables that are separate from but are required to execute before the main program executable.  Steam can be considered a launcher.

Now if you’re grasping the operation of Program Mode but are still having problems, here’s what to do.

  1. You’ve got to select the appropriate executables for the Open/Lock Program fields, which can be tricky to figure out. Use Task Manager to help you see what processes go to what windows.
  2. If you’re having trouble finding the right launcher executable, you might try the forever-useful Procmon and setting it to monitor “Process and Thread Activity” before running the program in question.
  3. Next, try enabling the log file from Cursor Lock’s options.  Run a Cursor Lock shortcut or a “Test” and then read the log to help determine what happened.  You might find that Cursor Lock either closed before your desired program was locked or never locked at all, both of which suggest that the wrong executables were selected.
  4. Still not achieving a satisfactory cursor lock? Or something else weird happening?  At this point, I’d be glad to try to help you.  Leave a comment or send an email.

Q. The hotkeys won’t work.

This issue seems to be cropping up more and more, and I don’t really have a satisfactory answer as for why yet.  It also seems as though some programs will override all system hotkeys altogether, annoyingly enough.  The best advice I can give is as follows.

  1. Make sure Cursor Lock is actually running.  You should see cursorlock.exe in Task Manager.
  2. Try changing your hotkey combination to something else.  There may be conflicts with the current combination or perhaps it didn’t save correctly.
  3. If you’ve modified the hotkey combination used to toggle locking, make sure that change was saved to the configuration file, cursorlock.ini. If not, you may need to run Cursor Lock Setup with elevated permissions, i.e. Admin Mode, or try using the default hotkey combination of Ctrl-Alt-L instead.

Q. I can’t uninstall it.

That’s quite true.  There is no uninstall feature at present.  Although, there really isn’t much installed to be begin with, so I hope you’ll forgive my omission.  I do see the error in not including an uninstaller and will rectify this in future versions.  In the meantime, here’s how to uninstall Cursor Lock.

  1. Delete the directory that you installed Cursor Lock to.
  2. Delete the Start Menu folder for Cursor Lock (if enabled on installation).

Cursor Lock 3.0?

I’m frequently amazed that Cursor Lock is still relevant more than ten years after I first wrote it.  Although its focus was originally on correcting a multi-monitor support oversight, many users are now employing Cursor Lock for their windowed gaming needs instead.  This shift in audience from enthusiast gamers to gamers in general has had me thinking about how to further simplify Cursor Lock.

As mentioned in the FAQ above, Program Mode is great for efficiency but a pain for anyone but advanced users to figure out.  Personally, I loathe having yet another program running in the background on the off-chance that I might run a program that needed it.  But memory is cheap these days, so I must reluctantly deprecate Program Mode in favor of User Mode.  But, I’d like to make User Mode even better.  So that all the user would need to do is select the window to lock from a list of all open windows using a systray icon, and that window will always be locked whenever you use it.  I might even add support for the often-requested but niche use case of restricting the cursor to a user-defined area.

However, I would have done this already a year ago if it weren’t for my health being in such a dubious state the last several years.  But, if good health ever returns, believe me that an update to Cursor Lock will be the first thing I do.  In the meantime, I hope the FAQ helps.  Also, I’m sorry if I don’t answer your messages and comments promptly; there are a lot of days where I can’t even put together a cogent and well-thought-out response.  So again: FAQ.  And I’ll help when I can.

Posted in Programming, Software, Troubleshooting | Tagged | Leave a comment

Memtest FTW!

For several weeks now, I’ve been having troubles with Serpent 3, my desktop PC.  It started randomly blue screening (aka Blue Screen of Death) with random error messages whenever I was playing Diablo 3 or watching video.  That coupled with the fact that I hadn’t changed any drivers or hardware recently led me to initially suspect that my only two month old video card (GeForce GTX 550 Ti) had gone bad.  (As always, I also suspected overheating, but the sensors weren’t indicating that as the culprit.)

I fiddled with video card drivers some just in case that helped—it did not. So, eventually, I swapped my new video card out for a Radeon HD 4650 that was lying around.  Although early signs were hopeful that I had isolated the video card as the problem, the swap actually had only slowed down the frequency of blue screens.

I was starting to think that I’d have to build a new system core (motherboard, CPU, and RAM), but I still knew of one more trick to try.  There’s a program called Memtest86+ that will repeatedly test your entire PC memory (RAM) to see if there are errors with it holding correct values.  I’ve used Memtest before to make sure new memory was good, but I’ve never actually seen it find any errors.  It didn’t take long before it did find errors this time, though.  I narrowed the problem down to two addresses around the 500MB mark in the first DIMM.

I had two memory addresses that were repeatedly returning errors in Memtest86+.

So I took that first stick of memory out and left the other matching stick in and tested again.  After three full passes, Memtest was showing no errors for this stick.  Next, I swapped sticks.  And as one might guess, errors galore.

So, I swapped the sticks again and also returned my beefy new video card to Serpent 3.  And I’ve enjoyed an entire evening of gaming and videos with zero blue screens.  Luckily, Diablo 3 doesn’t seem to demand more than 2 GB of memory.  Memtest FTW!

Posted in Hardware, Troubleshooting | Tagged , , | Leave a comment

Keeping Busy

Posts have been slow to come lately, but of course, this doesn’t mean I haven’t been working on anything. In addition, school just ended at the beginning of the month–this time for good, or so I think. I haven’t actually gotten my diploma in the mail yet. But, I’m pretty sure I graduated.

And now I’m being bombarded with queries about what, when, and where I’m going to get a job. So far, I’ve taken a passive approach to finding employment and, even with that minimal effort, have had a couple offers already. I think once I decide I’ve rested enough and start looking in earnest, I won’t have much trouble finding a great job.

Naturally, now that I’m done with school, I have a bunch of academic papers that I’m wanting to add to the site. Previously, I would just upload a Word “Web Page” version of papers, link them, write a little blurb, and that’d be it. However, I’ve grown weary of the full-frame white document backgrounds of all my uploaded papers and the disconnected feeling it brings to the site’s style. At first, I went about rectifying this with another PHP script where you pass in an ID for a particular paper listed in a database. However, I ran into a snag with this method because Word always exports Web Page image paths (and also <a name> internal links) relative to the document, and the script’s path would differ. My first fix was a client-side workaround using the <base href> tag which forces a document’s path to whatever you want. This worked decently enough, but of course, you can never be too sure of client-side support for a rather obscure tag (though FF2 and IE6 did seem to support it). My final fix was to “include” the wrapper script in the document itself (thereby eliminating the need for the aforementioned fix), obtaining the calling document using the $SCRIPT_NAME environmental variable. From there, the wrapper script reads the calling document’s title, url, body contents, and style contents, outputting them where necessary and giving the page a clean, stylized, embedded document look.

So far, I’ve only applied the wrapper script to some of the existing academic papers. This is taking longer than it sounds because I’m having to redo the Web Page export from Word. Apparently, in Word 2003, there is an option to export a “Filtered” Web Page, which removes all the Word-specific markup and reduces the file size by about 4KB + 10% of the overall size. I’m also doing more robust linking, both internal and external to the document. It should be fairly impressive once everything, previously existing and new, has been updated and linked into databases–I’ve even got some source code to put in this time around.

I’ve been working on the Company of Heroes map mentioned last time some more. I haven’t made a lot of progress, but nevertheless, I’m almost done with the playable area of the map. Beyond the playable area is the “out of bounds” (OOB) area, which is mainly just for making the map setting look realistic and “not like a table-top” so they say. It’s basically the same idea as my wrapper script, smoothing out the differences between the playable area and the surrounding environment. The OOB won’t take nearly as long to construct as the playable area has, though, because it will mostly be low-poly pine tree groves and the stream and road rolling off into the distance. Anyways, here’s a screenshot of the area I have been working on lately–a raided German AA site. It looks a bit stylized because I’ve been playing around with filters for the final version’s loading screen.


In other news, I did my first No-DVD crack for a game last week. Of course, I can’t give any more information about availability of the crack or what game it was for. But still, it’s a notably L33T personal achievement and a stepping stone in my learning assembler (or disassembler rather) through practical uses. Previously, I’ve already done a bug fix for a game in assembler and a mod for a game in pseudo-assembler. Besides a thorough disassembler (like IDA), I’ve learned the best tools are NOP (No Operation) and JMP (Jump) to either “comment out operations” or make conditional statements (various forms of Jump If) always or never take the jump. Even though I love this kind of reverse engineering programming/troubleshooting, sifting through millions of lines of assembler code takes a lot out of a person, and thus I don’t expect to be doing a lot of it in the near future.

Posted in Academics, Modding, Troubleshooting, Website | Tagged , , , | Leave a comment

Fixing a Playstation 2

(This post was originally part of the previous one, but I felt that it was too long and two separate topics.)

Here’s an example of a project that I couldn’t post on until it was resolved. Over winter break, Kaylen decided to open up her Playstation 2 and blow on the DVD drive lens to fix read errors. Even though she was following an Internet guide, something happened that made the PS2 unable to power on when reassembled. So I told her not to worry because I would fix it when we were next together–even though I’d never even seen a PS2 up close before.

Initial speculation on the power problem was the awkwardly positioned power and eject buttons and cable which Kaylen had torn out from the mainboard upon first opening the case. We tried numerous ways of repositioning the cable into its connector and the red standby light would come on but not the green power light. I’m not sure if I was driven more by the need to troubleshoot the device or just take it apart, but I proceeded with further disassembly so that I could test the power supply fuse and current. Although there was a mishap with shorting some AC power, the fuse and current tested fine.

At this point, I was stumped as most of the “ultimate PS2 repair” guides dealt mostly with disc read errors and I couldn’t even get it to turn on. After hunting around on Google for a while, I came up with an awesome find, though…an official PS2 service manual complete with exploded views, detailed electrical schematics, block diagrams of the architecture, printed wiring board diagrams, parts lists, and even a disassembly guide. This thing was so detailed that it even had the functions of the individual pins on the ICs labeled; you could practically build your own PS2 with this manual in hand. (I put together a collection of all the manuals and guides I used with restrictions removed here. Hope they can help someone, but shhh…don’t tell anybody.) I used this to further test some of the possible problems such as all the fuses on the mainboard, the power supply output (the pinout is 12V, 12V, GND, GND by the way), and even the circuitry for the power button and cable–all were fine.

Defeated, I started putting the PS2 back together. Then, I noticed a small, transparent blue sheet of plastic that must have fallen out of the casing at some point during disassembly. Its width was exactly the same as the power button cable. Without a second thought, I shoved it into the connector with the cable and turned on the power supply. And wouldn’t you know it, when I hit the power button, it turned green and the console started to boot. It was this stupid piece of plastic that Kaylen must have dropped into the case all along. Oh well, at least I took the whole thing apart and didn’t break it–quite an achievement. Although, there were a couple screws left over after reassembly.

Even after it was running again, the disc read errors remained. I tried adjusting the tray alignment knob for hours, which had audio CDs and video DVDs working, but not game DVDs. Ultimately, all it took was cleaning the lens thoroughly with some rubbing alcohol and a Q-tip. Now Kaylen can get her dance dance dance on. I hear she’s “not an ordinary fella”.

And the moral of this story? Clean the fucking lens with a commercial cleaner disc first.

Posted in Troubleshooting | Tagged | Leave a comment

Lessons in Overclocking

As I mentioned in my last post a week ago, I had a hunch that the CPU was the source of all my locking issues in games. Originally, I suspected the clock was too high at ~100Mhz over stock, 2158 (166*13) @ 2262 (174*13). However, while researching Athlon XP’s on Wikipedia, I noticed that none of the Thoroughbred’s were set above 1.65 Volts, yet I had mine set to 1.70 Volts for years. I can’t recall now why I set the core voltage up .05v; it could have been that my original overclock demanded it for stability, there was a perceived need for increased voltage for better stability, or just my own ignorance at the time. It seems reasonable that the voltage is responsible partly, if not completely, for the instability. Increasing the voltage is often necessary to maintain higher clock rates, but they also add to the watts of thermal energy the CPU puts out (increasing the likelihood of overheating). It is also my speculation that increased voltage puts more demand on the capacitors that regulate the CPU power, potentially causing over-voltage failure, and it just so happens that I noticed a couple slightly burst capacitors recently (as seen in the photos below)–wondering if there’s a correlation.

Since I still couldn’t be sure if the problem was the core voltage or not, I was planning a battery of tests the day after Christmas to find a suitable CPU clock. I’d recently realized that my chipset and memory were both rated for a 200Mhz front-side bus, but I had been keeping it close to the CPU’s default of 166. Luckily, I got my 2700+ a couple months before AMD started locking the multiplier by default; therefore, I would be able to drop the multiplier and raise the FSB, roughly maintaining the CPU clock while increasing the memory bandwidth. I was hoping this strategy would allow me to lower the CPU clock as much as necessary and make up the performance with increased bandwidth. The only unknown factor was possible increased CPU latency due to the lower multiplier.

I spent five or more hours running through my test battery, which consisted of Sandra 2005 CPU Arithmetic, CPU Multimedia, and Memory Bandwidth tests; some or all of 3DMark 2005’s game and CPU tests; and the Half-Life 2 benchmark (which apparently is only available through Counter-Strike: Source now). 3DMark’s GPU tests were understandably unhelpful, except later on when I discovered that the Firefly test was extremely memory-intensive. As I tried to find the maximum stable FSB clock, this test proved most helpful. Half-Life 2 showed little responsiveness to the increased memory bandwidth and was only slightly more affected by the CPU clock, even when the video card wasn’t the bottleneck. Sandra’s tests were the most consistently telling of raw performance. As expected, memory bandwidth scaled quite linearly with increased FSB clock. And although the multimedia benchmark was mostly useless, the arithmetic benchmark showed slight performance degradation due to a lower CPU multiplier; but in the end, it was much more affected by CPU clock speed.

Tnews250he benchmarking sequence I took was to decrease the multiplier by .5 each time and then bring the FSB up until the CPU clock was about 2200Mhz. However, when I reached 11*200, I noticed that HL2 and the 3DMark were exhibiting strange crashing. I tried lowering the FSB until I brought these crashes under control (~190Mhz). However, at 11.5*190, the CPU clock was too low, so I raised the multiplier to 12 and set the FSB to 186Mhz for a comfortable 2232Mhz. This has proved to be very stable over the last week, so my next move is to bump up the FSB to 188, which would bring the CPU clock to nearly the same as it has been for the last few years and ultimately show that the core voltage was the problem all along. All these tests were run with a core voltage of 1.65v (stock).

The only problem with using a multiplier of 12 instead of 13, is that most programs identify my CPU as a 2400+ instead of 2700+. But really, it’s more like a 3200+ in terms of performance.

I’ve been enjoying my new stability by playing through Half-Life 2 Episodes 1 and 2 in the last week. Yes, episode 2 was that good that I wanted to play it again. It was much easier to appreciate the game without random locking and with commentaries turned on. I was surprised how often Valve mentioned changing the game in response to the actions of playtesters. This seems like something more developers should pay better attention to.

Posted in Benchmarking, Hardware, Troubleshooting | Tagged , | Leave a comment

Mantises are still having sex.

This is just something I remembered I took a picture of a while back, and I thought “what better place for this than the interwebs!”. Really, how often do you see praying mantises fucking on the side of a trailer? Like… never.

Anyways, that’s not the real reason for this post. Actually, there’s not much of a reason. I just wanted to ramble about my latest gaming. I’m not sure if it’s sad or not, but I’ve been having the most fun playing old games lately. Specifically, I played both campaigns of Warcraft 2, plus most of the Human campaign in the expansion pack (Beyond the Dark Portal). After a week-long intermission of playing NOLF, I moved on to another oldie: Command and Conquer (free here). However, the NOD campaign wasn’t as fun as the GDI one; GDI has too many versatile heavy weapons. If you don’t have some SAM sites yet, they’ll fuck you up with helicopters and especially air strikes. If you don’t have 5 light tanks, you’ll get rocked by a mammoth tank. And no more carting engineers into their base in an APC to jack their shit. :( So, I gave up on NOD and switched to C&C: Red Alert. Occasionally, I get an urge to play C&C: Renegade again. It’s too cool being in the middle of a strategy game. Alas, I never finished Renegade the two times I tried.

I’m not sure exactly what sparked this bought of classic gaming–maybe nothing in particular, but I’ve got some guesses. One is that my system is falling below the acceptable performance level for most new games. I was looking forward to playing Bioshock until I found out about the steep system requirements. Even though the community has fixed the video card shader requirements somewhat, I still feel like I’m having trouble getting into the game because of performance issues–try battling a Big Daddy with 6fps. Another reason for not playing recent video games is that I feel like I’m turning into the demographic old gamer that only enjoys strategy or nostalgic gaming. Hopefully, a game will come along soon to prove this wrong, though. The final reason is that my taste for them has been soured by constant bugginess and instability problems. It seems like every game I’ve played recently has had at least one problem I’ve needed to google, even the older games. Let’s go through a list, shall we…

  • Red Alert: Problems installing under XP. Fix: Run the DOS installer under compatibility mode for Win95 or just copy the install directory to your hard drive. Don’t forget to patch it.
  • No One Lives Forever: No music. Fix: Run DXDIAG, under Music tab, disable “Default Port Acceleration”. Apparently, NOLF uses MIDI music with their own sound font.
  • Warcraft II: Doesn’t run in XP. Fix: Get the Battle.Net edition.
  • Sven Coop: Can’t play online. Fix: Crack the authentication, because WON is dead. Check out Steamless Project, but probably don’t bother with the WON alternatives.
  • Dark Messiah: Overheated my video card initially, but then just started randomly freezing halfway through the game. Fix: Gave up on this one.
  • Stalker: Oh, where to begin. Fix: Play Deus Ex or Oblivion.
  • And finally, Fortress Forever…

I’ve been pretty excited off and on over the last year about Fortress Forever, the source engine remake of Half-Life’s Team Fortress Classic mod. Well, I finally checked up on it recently and noticed they finished it in September, weeks before the launch of TF2 in fact. But of course, when I got onto an empty server to give it a whirl, I locked up within minutes. Googling around, I came up with several supposed fixes to the generic “looping sound crash/freeze”. I dunno about crashes, but whenever my system freezes and the sound loops every few seconds, I know it’s a video card problem. Sure enough, most of the fixes were of the video card variety. So I tried the typical “update your drivers” fix, thus finding out that ATI has inadvertently (or maybe not) started phasing out AGP cards from its newest drivers (7.7+). Shit, my Direct3D wouldn’t even initialize with the 7.9 Cats. I went back to the next latest set of Omega drivers (based on 7.4) because I enjoy the control panel that doesn’t force bloatware rape on your system like the Catalyst Control Center that fucked my system over last time I installed it. But part of the Omega control panel doesn’t work for some reason, so I may end up going back to 7.6 + ATI’s control panel from some old Cat version (4.12?).

Long story short, the drivers weren’t the issue. I tried lowering sound card acceleration in DXDIAG and setting FF to launch in Direct3D 8.0. None of this did any good. Then I got a hint that reminded me of a “fix” I used to get Stalker working. You may recall from this news post, how I set some Paged Pool parameters to stop Stalker from freezing. At the time, I was unsure that such a change to the memory management would affect other programs negatively. From my understanding, setting PagedPoolSize to 0xFFFFFFFF basically just told Windows to use as big a pool as it could, thus making it difficult to run out. Apparently, the source engine doesn’t like this. After I forced a value of 402653184 (Dec) bytes (384MB), I was able to play an entire game of the classic map Well as a sniper. (Betting this fix may also work for my Dark Messiah troubles, as it also uses the source engine.) I’m still feeling out this new TFC, but it was still great fun and everyone in the community is awesome. I had some problems sniping though, at first…I kept trying to make lag shots like I was still on a 56K modem. Nope, you don’t need much lead with 70ms ping.

Oh…and FUCK YOU, STALKER! Ukrainian piece of shit.

Posted in Gaming, Troubleshooting | Tagged , , , , , , , | Leave a comment