Fix For The Polynomial Startup Crash

Posted: November 26th, 2010 | Author: | Filed under: Hardware, Tips/Tutorials
Tags: , , , , , , ,

FINAL UPDATE: This post is a mess… this should not be a problem anymore for anyone. You should be on drivers newer than 11.2 or older than 10.5. This used to affect the BIT.TRIP games, but those run fine now as well. What has not yet been fixed in updated drivers is Cities in Motion.

FINAL FIX: Turns out you just need atigktxx.dll in the game folder! No mess, not even the main atioglxx.dll. Download the 10.4 dll here, place it where polynomial.exe is, done! I also noticed after installing Catalyst 11.2, the dll might not be needed anymore.

FIX ATTEMPT: I tried a brute force method, I put every driver file of 10.4 into the game folder. You can do this while still having whatever newer Catalyst you have installed, just run the 10.4 installer, cancel it, open a cmd prompt at C:\ATI\Support\10-4_vista64_win7_64_dd_ccc_wdm_enu\Packages\Drivers\ Display\W76A_INF\B_98282 or similar, then simply ‘expand -r *.* c:\pathtoyourgamefolder‘ and voila! I have not yet tried deleting any of the files 1 by 1 to see which ones are required to stop the BSOD so the game folder would look cleaner, but so far it works!

UPDATE2: mixed reports saying 10.12 is good, it’s almost a guarantee that it’s good for 5970 users that were stuttering, but it’s the same crash for me still on 10.12.

UPDATE: this might be affecting Bit.Trip Beat as well. Something to do with crossfire, but there are some reports of 5970s working fine.

So I finally attempted to try the demo of The Polynomial, but the driver is crashing on startup of the game (it’s in OpenGL). I’m trying this on a 4870×2, Catalyst 10.11 WHQL, latest CAP, Vista 64.

It might be something to do with crossfire, or at least in my case and this user. The developer is also active in that thread, and I’ll try to get some form of exposure to ATI/AMD, so we’ll see how this goes.


-The whole older driver package: refer to the working fix at the top of this page.

Current iD Tech games (with this side effect! depends on the visualizer options): doom3.exe, etqw.exe, prey.exe, quake4.exe, wolf2mp.exe

Riddick Butcher’s Bay profile looks like a bunch of detail is lost, and the bloom is lower resolution, yet the bright flashing lights are gone: sbzengine.exe

An older atioglxx.dll: I tried 10.2 and 10.4, the game launched without glitches, but has a BSOD soon after. This must be because crossfire changed at 10.5, as mixing dx10/11 dlls older than 10.5 would also BSOD in Shattered Horizon and Bad Company 2. If you’re ok with not having the latest drivers (if you don’t need the fixes in there), you may be able to get away with installing 10.4 and just the latest CAP.

RadeonPro recently added some OpenGL support, but the crossfire options are not functional just yet. I can’t think of any DX9 things to test if the ‘disable crossfire’ option is different from just disabling CatalystAI, but if it is, then this would end up a working solution once this app is updated.

Dark Athena, older Quakes, Unigine, FurMark, and a couple other profiles I attempted to launch act like the original game’s driver crash.


I will update this post if there’s a workaround better than the iD one, if there’s some combination of settings to try, or if either the drivers or game manage to fix it.

Last Modified: September 15th, 2011


Mastering Tip: Don’t Clip

Posted: November 16th, 2010 | Author: | Filed under: Music, Tips/Tutorials
Tags: , , , , , ,

I should get back to posting content, so here’s a quick tip if you’re making music, working on a voice track, or pretty much any audio you’re dealing with.

Digital audio has all kinds of fixed limits, one of which is amplitude or volume. If a sound is too loud, the wave will become ‘clipped‘, causing an obvious change in the sound that most people would identify as distortion.

The first thing I would do when I start a blank music or audio project is add a basic compressor to eliminate clipping as much as possible. As an example, this is what I stick on the master FX channel in FL Studio. It’s pretty much the default preset, but the attack and release are all the way down, and the ratio is up. When listening to any sound, quiet or loud, it seems to do the least modification while protecting from clipping. Any compressor should have about the same knobs or settings available for tweaking.

Later on if I’m going for a specific final sound, I could use a more powerful chain of compressors, equalizers, etc, but always have some kind of a compressor on the final master output. Let’s take a look at the difference this makes:

Here is a kick sample where I increased the volume way beyond the original. If left alone, you can see how it is clipping when the limits are hit. It almost looks like a square wave, which is quite a different sound from the original sine. With the compressor enabled, the wave does still change a bit, but it’s not as harsh and won’t be as obvious to the listener’s ears.

Now you may want to have a distorted sound like the drum track or a voice that sounds like it’s on a walkie-talkie. I would stick the distortion chain on a separate FX channel and still have a light compressor on the master channel. This leaves room for other sounds that need to be untouched.

Last Modified: March 30th, 2011

No Comments »

Formatting Twitter’s Date/Time With PHP

Posted: August 18th, 2010 | Author: | Filed under: Tips/Tutorials
Tags: , , , , ,

This should save you a little googling. When you look at the XML that the Twitter API gives you, each tweet has a ‘created_at‘ timestamp.

It looks like this: Wed Aug 18 18:22:29 +0000 2010. Not too friendly, but it’s really simple to convert it to a unix timestamp, then format it with PHP’s date function.

Step 1: Make the unix timestamp with strtotime(). Now it’s turned into 1282155749, which is just what we need even though it looks worse.

Step 2: Format with date(). ‘l M j \- g:ia‘ turns it into ‘Wednesday Aug 18 – 12:22pm‘. You have total control of how it looks thanks to that date() function of PHP.

I pretty much dumped it all into a single line on one of the things I was working on. This is after I retrieved the XML into a variable called $xml.

echo date("l M j \- g:ia",strtotime($xml->status[0]->created_at));
Last Modified: August 18th, 2010


Disable WordPress’s Visual Editor On Specific Posts

Posted: July 11th, 2010 | Author: | Filed under: Tips/Tutorials
Tags: , , , ,

Simple and quick tip for WordPress. You might run into this if you have code snippets or other things in the HTML view that get malformed once you enter the visual view of the editor.

This WP plugin covers the basic functionality. The minor issue is that you have to open the post’s edit view to input the custom field, instead of having a button in the list of posts section of the admin area. Maybe there is a plugin for editing custom fields ajax-style, or a richer version of this visual/html toggle that I may have missed.

Last Modified: March 4th, 2011


Disable Auto-Eject On Empty Drives

Posted: July 6th, 2010 | Author: | Filed under: Tips/Tutorials
Tags: , , ,

Have you tried to double click on a hard drive in MyComputer, only to accidentally click your optical drive and have it eject? This gets annoying if you’re trying to be quiet at night, or if you have one of those cases with a door that covers up the drive bays. Luckily it’s a simple fix, but you won’t be able to use the built in Windows burning functionality. You should be able to still use third-party burning tools like ImgBurn just fine. (In fact I need my options and project files, so I’m never using built in OS stuff anyway)

In the registry, go to: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

Add a DWORD called NoCDBurning and set it to 1.

That’s it. Log off and on again to make it work. This might be just a Vista and 7 feature, but try it on XP if it ejects as well.

Last Modified: July 6th, 2010

No Comments »

Opening WordPress Comment Author URLs In A New Window

Posted: June 10th, 2010 | Author: | Filed under: Tips/Tutorials
Tags: , , ,

Here’s a short tip on how to add target=”_blank” to the HTML code generated by WordPress’s comment_author_link(). I can’t seem to get it to work as a filter inside comments.php, but I found a forum post that does what’s needed as a WP plugin. Apparently it needs WP2.5 and up. The simplest way would be modifying the core WP files, but that’s a bad idea due to any updates overwriting your changes, making you do them over again.

Plugin Name: Edit Comment Author
Version: 0.1
Description: Automatically adds target="_blank" to comment author links
Author: Jay Gilford
Author URI:
Plugin URI:
global $wp_version;
$exit_message = 'This plugin requires Wordpress 2.5 or newer. <a href="">Please Update!</a>';
if(version_compare($wp_version, '2.5', '<')) {
add_filter('get_comment_author_link', 'comment_author_link_edit');
function comment_author_link_edit($content) {
    $content = str_replace('<a ', '<a target="_blank"', $content);
    return $content;


Save it as a PHP file, then upload to your WP plugins directory and enable the ‘Edit Comment Author’ plugin.

Last Modified: June 10th, 2010


VERY Powerful Batch Rename Application

Posted: May 18th, 2010 | Author: | Filed under: Software, Tips/Tutorials
Tags: , , , , , ,

Here’s a real time-saver. If you ever needed to rename or enumerate a bunch of files, and have been manually doing it up till now, then this is the program just for you. Ant Renamer is full of common actions you might have run into when dealing with larger amounts of files, such as photos of a vacation or frames of an animation.

You can add characters, search and replace strings, use the file date for its name, use EXIF information, or even run a regular expression on your file list. It displays what the output will look like at the bottom as a preview. Finally, there’s an Undo button if you make a mistake.

Check it out next time you have some heavy renaming to do. It’s freeware and even includes source code or translation files if you’re inclined to start modifying it.

Last Modified: March 30th, 2011

No Comments »

Making Unreal Engine 3 Games Their Smoothest

Posted: May 15th, 2010 | Author: | Filed under: Software, Tips/Tutorials
Tags: , , , , ,

UPDATE: On some newer UE3 games, enabling vsync either in-game or from the .ini files causes severe stuttering, particularly in crossfire. If you run into such a game, you need to use D3DOverrider to force triple buffering. I can confirm this on a 4870×2 and a 570m in UDK, Tribes Ascend, Blacklight, Monday Night Combat, Hawken, and probably some others. Single GPU or Crossfire, same type of low framerate and stutter caused by vsync without triple buffering. Otherwise, no problems with a lot of older games like Borderlands.

Quick tip for Unreal Engine: Fix the awful defaults. Mainly, set the smooth framerate option to match your refresh, enable vsync, and disable mouse smoothing.

Any movement or animation on any monitor screen is visually smoothest when it’s synchronized to the screen’s output, or refresh, rate. Vsync does just that. The Aero theme of Vista/7 looks nice and smooth when things are moving because it always has vsync enabled. Similarly, games should also have it enabled whenever possible. This even applies if you’re getting lower fps that’s not completely aligned to your refresh. For example in Crysis, I’ve seen it go around 35-45 fps, but looking really jerky until vsync is enabled.

Watch out for increased input lag, however. This is when you push a button or move your mouse, the action that should appear on screen gets delayed. Different engines handle this side effect better than others. Source engine appears to get almost unplayable with vsync enabled, unless you cap the game with fps_max (removed in Left 4 Dead and Left 4 Dead 2, so it’s a little more annoying). Unreal seems to be quite nice with vsync, especially since the engine can be set to render only up to your refresh to avoid the input lag seen in Left 4 Dead. Unreal also appears to have triple buffering built in, helping if your system cannot render as fast as your refresh: It won’t just jump straight down to half fps, but render as fast as it can with light ticking stutters.

Anyway, on with the Unreal tweaks. You’ll need the *Engine.ini and *Input.ini files for the game you’re adjusting. You’ll have to figure out where they’re located, but it’s usually either in MyDocuments or AppData. Here are a few:

Alien Breed 1 #MyDocs#\My Games\UnrealEngine3\AlienBreedEp1Game\Config\
Borderlands #MyDocs#\My Games\Borderlands\WillowGame\Config\
Homefront #MyDocs#\My Games\HOMEFRONT\GCGame\Config\
Mass Effect #MyDocs#\BioWare\Mass Effect\Config\
Medal of Honor #MyDocs#\EA Games\Medal of Honor\Config\
Mirror’s Edge #MyDocs#\EA Games\Mirror’s Edge\TdGame\Config\
Moonbase Alpha #MyDocs#\My Games\Moonbase Alpha\MoonBaseAlphaGame\Config\
Rock of Ages #MyDocs#\My Games\UnrealEngine3\BoulderGame\Config\
Sanctum #MyDocs#\My Games\Sanctum\SanctumGame\Config\
Section 8 #MyDocs#\My Games\Section8\S8Game\Config\
UT3 #MyDocs#\My Games\Unreal Tournament 3\UTGame\Config\

Under the Engine.ini, find the smooth framerate parameters. When set to false, I noticed lots of stuttering in Mirror’s Edge, so I always keep it on just as it is by default. I just put the min at 0. More importantly, fix the max since it’s always at 62 at default (why!), make it 60 or whatever your refresh rate is:


Also find the vsync toggle if there is none in your in-game options, might as well do it now since you’re in the Engine.ini:

UseVsync=True (note the message at the top of this page)

Now go to the Input.ini. It seems that in Unreal Engine, when you’re fps starts dropping with mouse smoothing enabled (which is usually default), the mouse movement starts accelerating! This completely throws your aiming way off. Turn smoothing off and your movements should be the same on screen whether you’re 60, 40, 20, or any fps:


Now your Unreal Engine based game is as smooth as it can be! Unless of course your system isn’t powerful enough to sustain 60/refresh framerates, but it’s still less jerky than if the image was tearing or your mouse control was changing speeds. Have fun!

Of course, this is all separate from any actual in-game options that raise or lower details. Even if you can’t stay at a constant 60 (or whatever your refresh is), these tweaks still apply to make it smoothest even at lower fps.

Last Modified: September 23rd, 2013


Disable Network Thumbs.db Generation

Posted: May 10th, 2010 | Author: | Filed under: Tips/Tutorials
Tags: , , , , , , , , ,

When I got Vista, I noticed something ‘annoying’ when I was browsing some folders over the network/lan. A thumbs.db file was generated into any folder that included images inside, either from hovering over one with the mouse, or browsing it. This totally messes up your folder list if you need to arrange by the modified date instead of by name, and your folders are weeks/months/years old. This will be a ‘brute force’ method, blocking both network and local thumbs.db generation, without gpedit.msc or any reg keys. Windows 7 probably might work too.

Go here: C:\Users\YOURNAME\AppData\Local\Microsoft\Windows (you can also paste %LocalAppData%\Microsoft\Windows into your explorer address bar)

Go to Organize>Folder and Search Options>View (or Tools>Folder Options>View in the address bar, push Alt if your address bar is hidden)

(If you are hiding any files, enable the ‘Show hidden files and folders‘ option AND turn OFF ‘Hide protected operating system files‘.)

Enable ‘Always show icons, never thumbnails‘ for now. This will be so you can delete the existing local thumbs.db files. Go into the Explorer folder (so you’re in ‘…\AppData\Local\Microsoft\Windows\Explorer‘). Delete everything in here, which should be a bunch of thumbs.db files pertaining to different pixel sizes.

Open the Properties of this Explorer folder and go to Security>Advanced>Permissions>Edit. Turn off ‘Include inheritable permissions from this object’s parent‘, then ‘Remove‘ on the dialogue that comes up. It should say that there are no groups or users with access to this object. Hit Apply/OK and keep OK’ing till you’re done with the properties of the Explorer folder.

Now you can re-enable your thumbnails by unticking ‘Always show icons, never thumbnails’ and go back to your preferred hidden files options as well.

That’s it. Thumbs.db is permanently blocked from being generated anywhere. The OS is blocked from generating them on each folder of a network share that you’re browsing, and also from taking up local space. According to a reply in this thread, they had some ‘save/save as’ issues in Word 2003, but I’m not seeing any issue on Word 2007 or any other application. If you have an issue, post a comment here, and we could probably adjust the permissions to work around that while still blocking thumbs.db generation.

Last Modified: August 29th, 2011


Twitter To Flash With Clickable URLs

Posted: April 13th, 2010 | Author: | Filed under: Tips/Tutorials
Tags: , , , , , , , ,

UPDATE2: Looks like twitter changed something and the XML timeline no longer works.
UPDATE: I will make a new post soon about caching tweets onto your server instead of loading them each time off Twitter, which has usage limits.

Ever needed to display a twitter feed within Flash, while making any links clickable? Here is one way to do just that, using the Twitter API and PHP.

At the time, I was having trouble working with regular expressions (to spot urls) in ActionScript 2. After some digging and testing, I mashed up bits of code that retrieve the raw XML that twitter sends out, create a new simple XML of pure tweets, surround any urls with HTML link tags, then have flash load this new XML. That actually turned out to be a good thing by not having it all in ActionScript, since anything else that can load XMLs can now use the new small XML of tweets.

Let’s get started then.

You can get a detailed XML of tweets from Twitter by going to*USER*.xml?count=#, where *USER* is the account name, and # is the number of tweets to display. You can omit ?count, which will display the same default amount that shows up on a twitter page (20 tweets). For example, Future Shop posts deals here. If you look at the URL, the account name is ‘FS_Deals’, so if we wanted to see the latest 5 tweets from them in XML, we’d go to

As you can see, that’s quite a bit messy and quite a lot of data. We just want 5 little tweets.

Now there is some security check in either Twitter or Flash, so you’ll need a proxy script to load in Twitter’s XML. This one seems to work fine (see notes at bottom). I’ll name it ‘kn-twitterproxy.php‘. We’ll modify the final output/echo so that it’s a simple XML of tweets, plus a regular expression for the urls per tweet:

$xml = new SimpleXMLElement($response);
$top = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<tweets type=\"array\">";
for ($i = 0; $i < count($xml->status); $i++) {
  $tweets[$i] = $xml->status[$i]->text;
  $tweets[$i] = preg_replace('@(http://([\w-.]+)+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?)@',
               '<a href="$1" target="_blank">$1</a>', $tweets[$i]);
  $inside .= "\n<tweet>\n  <message>".$tweets[$i]."</message>\n</tweet>";
$bottom = "\n</tweets>";
echo $top.$inside.$bottom;

In the above code, we first load up Twitter’s XML into PHP. $top will be the beginning of our clean XML that’s about to be read by flash. The for loop goes through every tweet, stores the message as an item of the $tweets array, modifies the item by surrounding the url with HTML link code using a regular expression (you could probably add bold or italic tags too), then makes a new <tweet> line for each. $bottom is the end of the clean XML, pretty simple closing of <tweets>. Then the final output gets sent, which looks something like this:

<?xml version="1.0" encoding="UTF-8"?>
<tweets type="array">
    <message>A Tweet</message>
    <message>Another Tweet</message>

If you want to get other data from Twitter’s XML about the tweet, just add it in as necessary. For example, to have the time, you can add $time[$i] = $xml->status[$i]->created_at;, then in the $inside, you can add <time>”.$time[$i].”\n right before <message>. (Adjust your flash text fields accordingly)

For Flash, you’ll just read in that newly created XML and use it to your needs. In this example, it will be 5 dynamic textboxes.

Make sure each one is set to ‘Render text as HTML‘, plus use variables instead of instance names.

var myXML:XML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = function(success) {
  if (success) {
    var messages = [];
    for (i=0; i < myXML.firstChild.childNodes.length; i++) {
      messages[i] = (myXML.firstChild.childNodes[i].childNodes[0]);
      _root["tweet"+(i+1)] = messages[i];

Finally, a little ActionScript to load the XML, and a for loop to make it easier to fill each textbox out.

Here is the result. Grab the example files if you need to as well.

-Line 30 in the PHP proxy seems to give an error regarding ‘safe mode’ on some hosts. Commenting it out seems to work fine. Maybe someone can tell me what it does.
-The ActionScript is in AS2, but AS3 should be very similar as it’s just a simple XML load.
-If you’re adding extra things like the tweet’s time, don’t forget to target the right ‘childNode‘ with ActionScript. If you had first <message>, then <time>, you’d add a line in the for loop that would be something like times[i] = (myXML.firstChild.childNodes[i].childNodes[1]); since is the second node. (<message> being first, it’s childNodes[0])

I hope you have gotten some ideas from this post for whatever twitter integration you’re working on.

Last Modified: October 19th, 2012