Games: Only 10 15 More Sleeps until Locomotion!

… and then no sleep for a few weeks.

I’m really, really excited about Chris Sawyer’s Locomotion‘s impending release. Intellectually, I know Half-Life 2 is due out soon, but I don’t care. Locomotion is what I’m waiting for.

The Aussie Atari site says it’s 10 days out, and at an RRP of $49.95, I might have to buy two copies, put string through the second CD and wear it as a medallion.

I used to play Transport Tycoon at a friend’s place every night for about six months, IPX networked. The ritual involved much social pizza, and I gained about 10KG over the period! I’m hoping I can persuade myself to just peck at nuts or something similarly healthy while playing over the Internet with the new one.

I’m interested to see how it pans out – the Roller Coaster Tycoon-style track building doesn’t seem as intuitive as the old “point and click” system, but similarly the old system was pretty annoying in some ways… It also looks like there are no multi-platform stations from the screenshots so far, so I’m interested to see how that affects it all.

(as an aside, I’m testing private-to-this-blog posts for stuff that’s probably not of interest to most MSDN readers, apologies if it doesn’t work out…).

[Update 2 Sep] The Atari site was updated with the news that it’s now due September 17, at $69.95. Bugger! Oh well…

My New Toy: An Apple 20″ Wide Screen

The Desire

I finally succumbed to my desire, and decided to get one on Saturday, subject to the following conditions:

  • I had to drive to each Apple centre.
  • I could not call ahead to check availability.
  • It had to be in stock and available right then, otherwise no sale.

The reason for the cruel and unusual conditions is that I’m basically an impulse-buying machine. I try to go through the motions of doing “research” and “looking for feedback on the product first”, but the flat truth of it is that if you can convince me a product’s good, and raise my excitement threshold above my small-and-dwindling-in-my-old-age logical prevention limit, I’ll buy it without ever seeing it.

I had three Apple resellers in my only-slight-postcode-violation range, so set out for the first one, in North Sydney.

Half an hour later: Cunning Consumers Association: nil, Tristank: One Apple Cinema Display.

I got it home and plugged it straight in (I’ll skip the brief bit where I couldn’t find where to plug the power in) and blammo, after only a little fiddling, I had 1680×1050. Beats the absolute stuffing out of multimon. Perhaps two wouldn’t, but one certainly does. As a secondary aside – I wish that in multimon, you could extend the taskbar across both screens. That would be cool. I know it’s possible using dual-headed cards with Driver H4x, but I try to avoid them where possible…

The Problem

Now, everything is rosy at this point, and I figure I’ll restart the computer, so I do. And that’s when the screen goes blank. And stays blank. After about 5 seconds, I’m frowning. After 10, my heart has stopped. The tiny silver power light repeatedly flashes three times. And I wait, watch the hard disk indicator (thrashing away) watch the little keyboard indicators flash, and the mouse light up, and then the login screen comes up, after about 30 seconds.

My heart almost stops again.. No text mode support. No BIOS screen. And – no bootup screen avec blue caterpillar. Which implies VGA compatibility ain’t really there.

Admittedly, I’m spending less time fiddling around in text mode, but reinstalling Windows does occasionally happen here. Trying a full-screen CMD Prompt session (Alt-Enter) has the same problem.

So now, with a nice, clear definition of what to research, I find The Horde (well, maybe six or seven?) of PC users with the same problem.

Apple don’t seem to comment on it in their discussion forums (In fairness, Windows compatibility is what they claimed, not “PC/DOS” and well, it works in Windows, dunnit?), but the general vibe I’m getting is:

  • In general: seems to affect recent ATI cards. There have been scattered reports of a 9600XT working, not much else.
  • In general: NVidia cards tend to work better. Folk have stated that with a Geforce 5700, you get all text and boot screens.
  • Someone claimed somewhere that Apple uses “nonstandard DVI timings” and that this is the root of all evil. I don’t really understand why, but thought I’d mention the allegation in case it’s relevant.
  • Someone claimed that the “working” cards actually “draw” the text and lo-res graphics – emulating text/VGA mode via DVI.
  • BIOS updates for the cards involved *might* rectify the issue, but nobody with the issue tends to be in a position to spend any significant amount of time in text mode to flash the BIOS.
  • It’s been claimed that the motherboard BIOS/chipset is also a contributor to the question of workingness.

Nobody’s posted a camera shot of it working, so I can’t verify that it actually ever works, but I need to live in hope.

So, I’m looking for a new video card that supports the Cinema Display 20″, in that it does text mode, the bootup screen, and full-screen DOS prompts. If anyone can confirm that a particular make and model work, I’ll look at that. It’s a pity, as I really like my 9800. It was the sweet spot of the price/performance curve at the time.

I Love You Anyway

So as to not sound like it’s a negative diatribe: the monitor is just absolutely magic. I really like it, it’s amazing how much I was suffering from not having an extra 400 pixels horizontally without even knowing it. Network captures are easier to read, the ISA MMC can be expanded beyond the point of it being funny, I can stack three fixed-width websites horizontally, use Visual Studio with all the tabs pinned and still be able to see more of what I’m editing, have the Outlook Reading Pane take up a screen-sized chunk of real-estate… It’s really cool. All monitors should be this wide. I hope that in the future (oh – In The Future, There Will Be Robots – reminds me of a game I haven’t tried yet…) all (or at least, significantly more) monitors come this way. And so they’ll be cheaper (kinda oddly, the Apple option was the most reasonable(!?)).

In the meantime, I’ve been going through the back-catalogue of games to work out which ones do the widescreen thing; if you’re interested, the article’s posted here: The WideScreen Report Card.

PC Games Widescreen Report Card

The Wide Screen Report Card

I’m working through my vaguely-current catalogue of games to work out what works well in widescreen (nice alliteration there), and document any tweaks required, if I find them.

Test System:
Athlon XP 2800+
Abit AN7, 1GB RAM
ATI Radeon 9800 non-Pro 128MB
Apple Cinema Display 20″ LCD (the 2004 model).

I have Scale To Screen disabled in the ATI driver options; I’m trying to get native 1680×1050 res with no stretching “helper” where possible, and as a bonus, get a modified FOV/aspect ratio that suits the screen too. (The Apple Cinema Display doesn’t appear to do res switching on its own)

Joint Operations: Typhoon Rising

Has a “Widescreen” option, but it seems to have the opposite effect from what I’m looking for (squashes the screen horizontally into the defined resolution, in preparation for being re-stretched by a monitor(!?)).

Aspect ratio is adjusted by this, but I’m not convinced about the “rely on it being stretched” technique (or maybe I’ve got it backwards, and they’re assuming that people will have stretching, and are just trying to help out in the other direction?). I get a good framerate at 1280×1024, med-high detail, but I have a gig of RAM. Tip: folk that don’t have as much RAM tend to suffer as detail is increased, despite their ninja video card.

In Widescreen mode, it looks good enough, but I’m using driver scaling to stretch the “pinched” widescreen mode, and comparing it to the regular mode. I’m not sure which way is better yet.

Doom 3

Custom resolution required. Bring down the console (something like Ctrl-Alt-Tilde) and type:
set r_customwidth 1680
set r_customheight 1050
set r_mode -1


The last line restarts the video subsystem, and you should have native widescreen.

I’m not sure if it’s squashed or not, but it looks good.

X2: The Threat

With version 1.4, you just pick 1680×1050 from the list, and it works. Can’t really tell if it’s stretched, which is a Good Thing.

Max Payne 2

Squashy – Max seems somehow shorter! (I thought I remembered a “widescreen” option, but I can’t spot it) – just pick the resolution.

UT2004 / Alien Swarm / Red Orchestra

You need to edit one of the INI files in the System directory of the mod you’re using – it seems to work well (not sure if FOV is automatically modified or not).

find the [Windrv.WindowsClient] section in the UT2004.ini (or Modname.ini for other mods) and edit the two FullScreen lines:

Far Cry (1.1)

Just pick the resolution, and it’s perfect. Couldn’t fault it, it’s like an ad for the monitor! I now have a Far Cry screen as my desktop background. No offence to Doom 3 or anything, but Far Cry looks like a travel brochure, while Doom 3 looks like… well… hell. (A very pretty hell, but not really “light and airy” desktop background material).


No fullscreen DOS support with this video card (clone ATI Radeon 9800) and monitor. No boot screen while XP loads. The first you get is the GUI. So I need a secondary monitor for BIOS updates etc. Nvidias sometimes seem to have better luck on this front.

Halo PC

Edit shortcut to add command line switch:

 -vidmode 1680,1050,60

Seems to work nicely, might be squashed a little, but it’s all good.

[Updated 2 Sep]

Operation Flashpoint (Resistance)

Still able to throw more polys at the CPU than it can handle in Very High detail mode, and still some of the best large-scale scenery graphics around (though the age is really starting to show). Squashy, though!

Star Wars Knights Of The Old Republic

Standard fixed 4:3 resolutions only – hacking the INI file just didn’t work.

Wolfenstein: Enemy Territory

I think I’m hitting an ATI driver issue here with the 9800 Pro, but I’m not sure. 1680×1050 mode (set through console as per Doom 3 instructions) seems to display through a 1280×1024 viewport, with the left and right sides clipped (vertical letterbox). There’s an r_customaspect=1 setting I’ve seen documented, but it’s just not working for me. Sigh. It’s disappointing – there’s an 860×480 widescreen mode (or something like that), but nothing that approaches fullscreen.

[Update 23 November 2004]

Half-Life 2 and Counter-Strike: Source

Native support, it rocks. Just pick 16:10 as the aspect ratio, and pick native res from there. Beautiful.

[Update 24 June 2005]

Battlefield 2:

Seems to work pretty well in the release version, though I don’t get AA with the 6600GT at 1680×1050.

Edit the shortcut command line to read something like: “C:\Games\BF2.EXE” +menu 1 +fullscreen 1 +szx 1680 +szy 1050

[Update 11 Sep 2004] A friend linked me up with this: The Wide Screen Gaming Forum . Loads of information and tweaks to get games to behave on a wide screen!

Sydney Visual FoxPro User Group Meeting…

Doing something different today: I was the Microsoft Warm Body (an official title*) for the Sydney Visual FoxPro User Group meeting at the Microsoft building, as regular host and (alleged) FoxPro user A Coat was out of town- in Redmond as it turns out, not sunny Queensland like Frank!

It seemed to go pretty well. The selection of pizzas was widely commented on and appreciated (and that’s about where my FoxPro expertise began, though I picked up a lot from Craig’s presentation) – and the pizza was My Responsibility. I like food responsibilities.

Craig Franklin ran through some of the new Reporting features (and a couple of Features-in-the-interesting-bug-or-gotcha-sense) in the upcoming Visual FoxPro 9.0.

Craig Bailey demonstrated a couple of cool anchoring techniques, and demonstrated report output conversions to Word and Excel using XFRX.

Next month, we try the Webcast Thing to link the Sydney and Melbourne Visual FoxPro User Groups, and November is OzFox 2004.

And one final plug, I just ran across the Fox Wiki, which looks like an excellent resource for FoxPro developers (and especially Aussie FoxPro folk).

I had a chat with Craig (Bailey) after the meeting about an RSS feed for the User Group (I spotted he was a FeedDemon user) – and before I managed to post this, he’s already gone and created a new blog for the group, complete with Atom feed! So, if you’re not already a syndication freak, go get an Atom-compatible aggregator and be notified of FoxPro Things!

SVFPUG: Thanks for having me!

Updated Comment Policy

After some well-meaning survey spam, I’ve needed to re-examine my blog comment policy.

So, severely off-topic comments (relative to the post subject) may be Moderated. ( I love euphemisms like “Moderated”, when what I really mean is “Annihilated” ).

If you’ve a non-commercial survey about blogging you’d like to encourage people to do it, this is probably the post entry to do that in, as it talks about blogging and comment policies.

Blog Comment Policy

I’m in favour of open comments on my blog. Usually, I receive “real” comments outweighing the spam by about 10 to 1, which I can deal with.

I’m leaving automatic moderation disabled for the time being, but I’ll “moderate” comments that…

  • Don’t relate to the subject matter of the post
  • Are obviously comment/link spam
  • Don’t pass the “my mother would be offended” test
  • Look like “mail merge” type comments
  • I feel like deleting at the time. Yes, this is my unequivocal “I’m deleting posts randomly” clause.

…whenever I see them.

And I reserve the made-up right to change this policy at any time, with no notice, and Moderate yo’ donkey.

Publishing RDP (Terminal Servers, XP Remote Desktop) with TSWeb (and ISA 2004)

My last post on TSWeb (aka TSAC or Remote Desktop Web Connection) continues to be one of my most-hit blogs, so I spent a little time working with the TSWeb default connection page to try to simplify some of the bits that people were asking about. The aforementioned post describes how it works – this is more focused on the “getting it set up” part.

So, here’s a quick how-to guide on publishing multiple internal RDP servers using ISA 2004, a single external IP Address and a mildly edited TSWeb connection page that allows you to specify the connection port number as well.

Jump to the port mapping bit
Jump to the new TSWeb Connection pages bit

You Will Need:

ISA 2004 installed as an edge firewall (Server Publishing of internal IPs must be available)
NB if your router/firewall/edge device can do Port Address Translation, it’ll work just as well, but the specific steps here are for ISA. If you have additional external firewalls, further configuration will be required.

A Web Server with the TSWeb package installed on it (an internal desktop may also be fine for this).

The hacked-up connection page (sorry about the formatting, it’s just an example!) in the TSWeb directory (by default, c:\Inetpub\TSWeb, I think).

Before We Start Fiddling

Check that the regular TSWeb works correctly within your network.

Web Publish the TSWeb directory

If you’re not web publishing and are more an “MSTSC” kind of person, then skip this step. Otherwise, if you want to actually use the Web connection software, you need to publish the TSWeb files.

Set up a Web Publishing rule that exposes the /tsweb/* folder from the internal Web Server to the External network. (It’s good to keep it locked down to just that folder and contents if that’s all you’re publishing).

Test the Web Publishing rule – from the Internet, you should be able to connect to and display the connection page, but actually connecting to any internal computers should not be possible (yet). If you can’t get to the page at this point, troubleshoot that first.

Server Publish Each RDP Server On Its Own Unique Port

ISA 2004 allows you to adjust port assignments while publishing, and that’s what these steps show you how to accomplish: we’re going to map the external IP address of the server to the internal IP address of the client, using slightly different ports: for eg, will map to (the default TS port, so no changes are required on the client). The next one might be 3391, 3392 and so on – it’s basically arbitrary, and up to you.

If you have another firewall that can do Port Address Translation, these steps won’t apply directly, but the theory’s the same.

1. Right-click Firewall Policy, create a new Server Publishing rule. Call it something descriptive, like “RDP to Barry’s PC”, or “TS01 ext port 3390”.

2. Type the IP address of the machine on the internal network, hit Next.

3. Pick the RDP Server protocol, then click the Ports… button.

Ports button

4. This is where the magic happens – unlike ISA 2000, you can modify either end of the connection to point at a non-standard port. In this case, we’re just incrementing the default RDP port 3389 by one, to 3390. Firewall ports are the “listening” port for incoming traffic, Published Server ports are the ports for the internal server.

Server Publishing Ports Dialog where the port change can be made

5. When you’ve set the above, choose the External network to listen on (it will only work for connections to the External NIC)

External listener

6. When you’re done, the rule should look something like this (before clicking Apply – don’t forget to click Apply before trying it!)

The Finished Rule

Once the internal machine is Server Published, test it with the standalone RDP client from an external client (Start, Run, MSTSC) (we’re not testing the Web version yet). On RDP clients version 5.1 (XP) and above, it should now work when you type into the connection dialog box. Note that the Web version does not support this syntax by default, so the out-of-box Web version won’t work yet. That’s what the example page below lets you do!

If you’re having a problem connecting using MSTSC externally, you need to troubleshoot and fix that problem now. Assuming everything else works, one vaguely-likely possibility is that the internal server is not a SecureNAT client (that is, it doesn’t route unknown IP addresses back through the ISA Server using its Default Gateway).

If you’re in this situation but happy with your internal routing, and don’t want to reconfigure it for the published server, you can modify the rule properties so that requests appear to come from the ISA Server computer, rather than from the Internet (the default for a Server Publishing rule – cool thing, in 2004 this is a per-rule setting, not a global setting as in ISA 2000).

To NAT or to Proxy?

Alternatively, look at the ISA Server Monitoring snap-in, Logging section to work out whether a rule is preventing access.

Configure The External Connection Page

I hacked up the TSWeb-supplied default.htm file to produce an external.htm file (actually, two files with the same name in different zip files, in the same zip file. Got it? You just use the one you like better).

The basic difference is that the modified versions can handle a servername and port, instead of just a server name. The ServerList page demonstrates a selectable list of servers:

Selection Box Example

while the ServerTyped version lets the user manually type the name and port of the server using the servername:port format:

Typed Name Example

They’re both fundamentally the same file that fiddle in the same way with the AdvancedSettings2.RdpPort property to work their magic – just with comments in different places – and they’re just an example, all care taken, but no responsibility accepted. There Might Be Bugs*. Download them both here.

So, open the package that you want to use, then put the external.htm file in the TSWeb directory on the web server. It won’t affect any of the existing files in that folder.

If you’re using the selection list of servers file, you’ll need to find the EDITEDIT bit of the HTML, and replace the example domain names and ports with your own real domain name (or external IP address, but domains are easier to use and less hassle in case of IP address changes) and port, then save the file.

Then, try browsing to , and try it out – it should all work.

Good luck…

[Update 17 Aug 2004] And wouldn’t you know it – Tom’s had this out for a while, though focused on the port mechanics rather than the Web bits. And I thought I was being so novel!

ISA 2004: New-Style Log Filtering and Export

I covered how I usually end up filtering ISA 2000 logs in a previous post.

With ISA 2004, the game’s changed!

By default, ISA will log to a local MSDE instance, and the new MMC includes a Monitoring section that includes all sorts of useful information, including the new Logging interface. (You can set ISA to log to a text file or a SQL Server instead, but I haven’t tried it yet).

Using the Logging interface you’re able to perform queries against live connections or stored data, and select only the criteria that interest you (say, connections from a certain client IP over the last hour), so you can skip the “try to open the 800MB proxy log file in Notepad to strip out a page or three of relevant results” step entirely! The interface doesn’t list every possibly useful field by default (you can add any available columns if you’d like to see them), but once you have a summary result set you’re happy with, you can hit the “Copy All Results to Clipboard” Task Pane link, and the hidden information becomes visible again in the usual Firewall Log style, complete with column headings.

What does appear to be missing is a simple way to export the portion of the log on display directly to a file, but going via the Clipboard seems reasonable for most troubleshooting usage scenarios (eg, the ones I’m mostly interested in), given that filtering can show you exactly what you’re interested in.

Filters can also be saved and loaded if you have one you’re particularly fond of.

ISA 2004: User Mappings and Failed VPN Connections

I was working with a customer troubleshooting a VPN connection problem last night.

The short version is: If you’re seeing VPN Connections fail for no obvious reason, check to see if you have User Mapping enabled in the ISA VPN properties. It’s described as a feature that lets non-Windows users be mapped to Windows user groups, but I’m not (yet) clear on how it works – only that if you don’t know you need it, you probably don’t, so un-tick it! My initial assumption was that it let RADIUS do the authentication, but RADIUS authentication for VPN connections doesn’t depend on this setting and works without it, so I’m a tad clueless for the time being.

The symptom that turning this feature off fixed was a client being able to connect to the ISA Server via PPTP and successfully authenticate (IAS logs show the user was authenticated successfully), but then near-instantly fail to make it from authentication to connection – from memory, an error 691 on the client.

[Update] If you copy the “Failed VPN Connection Attempt” line of the ISA Logs to the clipboard and see this error: FWX_E_VPN_USER_MAPPING_FAILED, you’re having a User Mapping problem, so the above might apply.