Caught on yet? On Wednesdays, and only on Wednesdays, if somebody manually twiddled certain bits in the monitor settings in a certain way, two events would occur during the same millisecond and caused the DB to throw an exception, and the error message that logged this would be exactly 81 bytes long including the null terminator, overflowing the 80-char buffer and causing the program to crash!
Thursday, July 30, 2015
Crashes only on Wednesdays
http://gyrovague.com/2015/07/29/crashes-only-on-wednesdays/
Labels:
Links
Friday, July 17, 2015
The View from the Front Seat of the Google Self-Driving Car
https://medium.com/backchannel/the-view-from-the-front-seat-of-the-google-self-driving-car-46fc9f3e6088
https://medium.com/@chris_urmson/the-view-from-the-front-seat-of-the-google-self-driving-car-chapter-2-8d5e2990101b
https://medium.com/@chris_urmson/the-view-from-the-front-seat-of-the-google-self-driving-car-chapter-2-8d5e2990101b
But we’re now driving enough — and getting hit enough — that we can start to make some assumptions about that real crashes-per-miles-driven rate; it’s looking higher than we thought. (Our cars, with safety drivers aboard, are now self-driving about 10,000 miles per week, which is about what a typical American adult drives in a year.) It’s particularly telling that we’re getting hit more often now that the majority of our driving is on surface streets rather than freeways; this is exactly where you’d expect a lot of minor, usually-unreported collisions to happen. Other drivers have hit us 14 times since the start of our project in 2009 (including 11 rear-enders), and not once has the self-driving car been the cause of the collision. Instead, the clear theme is human error and inattention. We’ll take all this as a signal that we’re starting to compare favorably with human drivers.
Labels:
Links
Wednesday, July 8, 2015
Wednesday, July 1, 2015
One dot per person for the entire US
http://demographics.coopercenter.org/DotMap/
This is a really good population map of the US, even ignoring that it has racial data too.
This is a really good population map of the US, even ignoring that it has racial data too.
Labels:
Links
Tuesday, June 30, 2015
Randomness in Doom
Doom's source code is all online. Someone posted a link to the RNG used, which is actually just returning a value from the same list of 256 numbers over and over in the same order:
There is an explanation of it here. I find these kinds of hacks, used in 80s and 90s era games to save space and increase speed, interesting.
Here is a story of a guy that replaced all the values with the same number:
unsigned char rndtable[256] = {
0, 8, 109, 220, 222, 241, 149, 107, 75, 248, 254, 140, 16, 66 ,
74, 21, 211, 47, 80, 242, 154, 27, 205, 128, 161, 89, 77, 36 ,
95, 110, 85, 48, 212, 140, 211, 249, 22, 79, 200, 50, 28, 188 ,
52, 140, 202, 120, 68, 145, 62, 70, 184, 190, 91, 197, 152, 224 ,
149, 104, 25, 178, 252, 182, 202, 182, 141, 197, 4, 81, 181, 242 ,
145, 42, 39, 227, 156, 198, 225, 193, 219, 93, 122, 175, 249, 0 ,
175, 143, 70, 239, 46, 246, 163, 53, 163, 109, 168, 135, 2, 235 ,
25, 92, 20, 145, 138, 77, 69, 166, 78, 176, 173, 212, 166, 113 ,
94, 161, 41, 50, 239, 49, 111, 164, 70, 60, 2, 37, 171, 75 ,
136, 156, 11, 56, 42, 146, 138, 229, 73, 146, 77, 61, 98, 196 ,
135, 106, 63, 197, 195, 86, 96, 203, 113, 101, 170, 247, 181, 113 ,
80, 250, 108, 7, 255, 237, 129, 226, 79, 107, 112, 166, 103, 241 ,
24, 223, 239, 120, 198, 58, 60, 82, 128, 3, 184, 66, 143, 224 ,
145, 224, 81, 206, 163, 45, 63, 90, 168, 114, 59, 33, 159, 95 ,
28, 139, 123, 98, 125, 196, 15, 70, 194, 253, 54, 14, 109, 226 ,
71, 17, 161, 93, 186, 87, 244, 138, 20, 52, 123, 251, 26, 36 ,
17, 46, 52, 231, 232, 76, 31, 221, 84, 37, 216, 165, 212, 106 ,
197, 242, 98, 43, 39, 175, 254, 145, 190, 84, 118, 222, 187, 136 ,
120, 163, 236, 249
};
int rndindex = 0;
int prndindex = 0;
// Which one is deterministic?
int P_Random (void)
{
prndindex = (prndindex+1)&0xff;
return rndtable[prndindex];
}
int M_Random (void)
{
rndindex = (rndindex+1)&0xff;
return rndtable[rndindex];
}
void M_ClearRandom (void)
{
rndindex = prndindex = 0;
}
There is an explanation of it here. I find these kinds of hacks, used in 80s and 90s era games to save space and increase speed, interesting.
Here is a story of a guy that replaced all the values with the same number:
What does it play like? I tried two values, 0x00 and 0xFF. With either value, the screen "melt" effect that is used at the end of levels is replaced with a level vertical wipe: the randomness was used to offset each column. Monsters do not make different death noises at different times; only one is played for each category of monster. The bullet-based (hitscan) weapons have no spread at all: the shotgun becomes like a sniper rifle, and the chain-gun is likewise always true. You'd think this would make the super-shotgun a pretty lethal weapon, but it seems to have been nerfed: the spread pattern is integral to its function.
With 0x00, monsters never make their idle noises (breathing etc.) On the other hand, with 0xFF, they always do: so often, that each sample collides with the previous one, and you just get a sort-of monster drone. This is quite overwhelming with even a small pack of monsters.
Labels:
Links
Friday, June 26, 2015
Sunday, June 21, 2015
Tuesday, June 16, 2015
Civilization 4 on Linux Via Wine
I have a week off, and figured I'd be productive by playing Civ continuously the entire time. I've used Wine a bit, but not much with modern games like Civ 4. It took me several hours, so I figured I'd document the process here for future reference.
To begin, get iso's of the game and two expansions. Wine doesn't work well with multidisc installations, but if you have isos you can mount them all before you begin. Also each disc is one independent installation. I have the actual discs, but found it much easier to download them.
It is also easier to use Wine as 32 bit, instead of trying to get 64 bit to work. Since I wasn't using Wine for anything important, I just deleted my ~/.wine directory. I then ran
Next, you'll need a shell script called Winetricks. You run Winetricks with arguments of various dlls and other things you need to be manually overridden. For Civ 4 you'll need msxml3 for sure. I ran
Run
Now, mount your 3 isos. Navigate to the directory containing the installs and run them via Wine (make sure you've exported WINEARCH=win32 first). The installs were straightforward. After you've installed Beyond the Sword, download the latest patch (3.19) and install that via Wine. The expansions will install the patches for the vanilla game, and the latest patch makes it no-cd so no need to download cracks.
You can navigate to ~/.wine/drive_c/. If you see "Program Files (x86)" it means you messed up with your export WINEARCH=win32's and installed the game as 64 bit. It may still work, but if not delete ~/.wine and try again.
The game is at: "~/.wine/drive_c/Program Files/Firaxis Games/Sid Meier's Civilization 4/Beyond the Sword/Civ4BeyondSword.exe". Run it via Wine. After it starts, you can exit and then find the config file at "~/My Games/Beyond the Sword/CivilizationIV.ini". If you are having trouble you can set FullScreen = 0 and find ScreenHeight and ScreenWidth and set them low. I have no trouble with full screen 1920x1080 though. Set NoIntroMovie = 1, AutoSaveInterval = 1, DisableFileCaching = 1, DisableCaching = 1, ModularLoading = 1.
After that you should be good. The game runs quite well, I've only noticed some slight graphics errors on some of the 3d animated leaders' faces. I did have crashing sometimes when attempting to open certain advisor windows (military advisor seemed most common). The Windows error message recommended I lower graphics settings and so I did from high to medium and haven't had a crash since.
To begin, get iso's of the game and two expansions. Wine doesn't work well with multidisc installations, but if you have isos you can mount them all before you begin. Also each disc is one independent installation. I have the actual discs, but found it much easier to download them.
It is also easier to use Wine as 32 bit, instead of trying to get 64 bit to work. Since I wasn't using Wine for anything important, I just deleted my ~/.wine directory. I then ran
export WINEARCH=win32 before I ran any wine command. Export will save that variable in your terminal window until you close it, but with multiple terminals open I found it safer to just compulsively enter it.Next, you'll need a shell script called Winetricks. You run Winetricks with arguments of various dlls and other things you need to be manually overridden. For Civ 4 you'll need msxml3 for sure. I ran
winetricks msxml3 msxml4 vcrun2003 quartz devenum corefonts lucida tahoma, because I found it somewhere on the internet.Run
winecfg and go to the Libraries tab. Find the library called gameux, and add it to the list of overrides, and then edit it to be disabled. I also found that Wine did not do a good job of guessing my graphics RAM, so I had to run wine regedit.exe and add the key HKCU>Software>Wine>Direct3D>VideoMemorySize and set the value to 512. Now, mount your 3 isos. Navigate to the directory containing the installs and run them via Wine (make sure you've exported WINEARCH=win32 first). The installs were straightforward. After you've installed Beyond the Sword, download the latest patch (3.19) and install that via Wine. The expansions will install the patches for the vanilla game, and the latest patch makes it no-cd so no need to download cracks.
You can navigate to ~/.wine/drive_c/. If you see "Program Files (x86)" it means you messed up with your export WINEARCH=win32's and installed the game as 64 bit. It may still work, but if not delete ~/.wine and try again.
The game is at: "~/.wine/drive_c/Program Files/Firaxis Games/Sid Meier's Civilization 4/Beyond the Sword/Civ4BeyondSword.exe". Run it via Wine. After it starts, you can exit and then find the config file at "~/My Games/Beyond the Sword/CivilizationIV.ini". If you are having trouble you can set FullScreen = 0 and find ScreenHeight and ScreenWidth and set them low. I have no trouble with full screen 1920x1080 though. Set NoIntroMovie = 1, AutoSaveInterval = 1, DisableFileCaching = 1, DisableCaching = 1, ModularLoading = 1.
After that you should be good. The game runs quite well, I've only noticed some slight graphics errors on some of the 3d animated leaders' faces. I did have crashing sometimes when attempting to open certain advisor windows (military advisor seemed most common). The Windows error message recommended I lower graphics settings and so I did from high to medium and haven't had a crash since.
Labels:
Stuff I Wrote
Saturday, June 13, 2015
Wednesday, June 10, 2015
The Making of Lemmings
http://readonlymemory.vg/the-making-of-lemmings/
Mike Dailly had seen tiny 5-pixel high sprites in games like Oids, a popular Atari ST shooter where the player’s ship rescued little android slaves, and thought that somewhere between this and a 16×16 sprite would be a sweet spot – where the small size made the Walker look big by comparison, but the animations were still good enough to impart character. One lunchtime he made an image of little men being crushed by weights, and shot by a laser gun – everyone loved it, and Gary Timmons added a few more traps. While everyone was laughing, Russell Kay was the first to say ‘There’s a game in that!’
Labels:
Links
Subscribe to:
Posts (Atom)
