Archive for November, 2008
Bleh, I wanted to play Touhou tonight but I don’t have access to my Windows machine (as it’s at home). The obvious option is to get Touhou playing through Wine. I had Wine 1.1.4 installed, and Subterranean Animism almost got to the main menu (but stalled out with a bunch of pixel shader stuff not working). I figured I could go through and hack the pixel shader code until it lied about whether or not it worked or something.
But first I decided to update wine to 1.1.9 (the most recent version in ports) so I could start hacking with the most recent version of the code. Unfortunately…
hark@kanaria> wine th11.exe wine: could not load L"C:\\Program Files\\th11\\th11.exe": Invalid address
Did a bit of digging, and found a similar problem from a couple years ago on a Redhat forum (or something) pointing out that it’s a mmap issue. I just updated my system to RELENG_7_1, so I was like “oh shit” until I found this post about a regression in Wine 1.1.8. For some reason, that patch still isn’t in ports, but I’m rebuilding Wine now to see if that fixes it.
If it does, I’ve got a couple of hours of hacking time before I want to be asleep :)
EDIT: Haha I finally got the new version of Wine patched and rebuilt, and now Touhou doesn’t hang, it crashes X11 entirely. Fuck it!!!!!2 comments
I’ve been fiddling around with Control.Concurrent.STM to have Erlang-like message passing capabilities in a networked application, and holy shit is it fucking awesome. I was honestly thinking about going back and using Erlang for this thing (though I’ve forgotten most of the syntax and don’t want to forget what I’ve learned about Haskell) simply because the constructs is provides make writing networked applications a breeze (effectively, process-centric design).
But it looks like you can do effectively the same thing in Haskell with STM’s transactional channels which are effectively a set of FIFO pipes to transfer data from one thread to another. It’s basically the same setup as Erlang, except you use forkIO instead of spawn and have to explicitly create the pipes with newTChan, rather than using spawn and the process ID returned by it.
Though I guess you could just wrap the calls to newTChan and forkIO in a function, wrap them in a tuple, then treat that tuple like an Erlang process ID. Not sure how a process would acquire it’s own “process ID” to bind to the child (so the child can send back messages), but whatever, inconsequential.
Hooray Peyton `Simon` Jones!
Back at my parent’s house for Thanksgiving. I spent the evening disassembling and reassembling laptops (and made a couple of pumpkin pies!). My little brother’s old Dell XPS M170 was apparently broken, so I was asked to take a look at it. First, the 80WH battery is completely dead which is a bit of a shame. It booted fine at first, then the screen filled with nasty graphical artifacts.
I figured it might have been something fucked on the HDD (since that’s a safe first guess), so I swapped to my FreeBSD drive and rebooted. This time, the graphical artifacts were there during the BIOS splash screen, lawds. At that point, I figured it was either a loose cable (best case), a shot display assembly (unlikely) or a busted GPU. So I popped the thing open and started disassembly.
Thankfully, the XPS 170 uses basically all the same components as my Inspiron 6000, except that it’s got a 7800 GPU in there instead of an X300 (and has an extra cooling vent, which is nice). The case itself is one of those shitty shiny cases with too much flashy wank (blue LEDs and shit), but it’s got a nice 17″ widescreen display.
As far as disassembly goes, I didn’t even bother looking up the service manuals, simply because it’s so similar to my laptop (which I’ve disassembled quite a few times). Pulled everything apart, down to the motherboard. Didn’t find any loose cables, bust caps or signs of destruction, so I got out my laptop, gutted it too, then started swapping parts to see what was broken.
Putting the HDD into my laptop booted fine; threw the RAM into mine as well and ran it through a few cycles of memtest86. Then I swapped the display assemblies, and that’s working as well (and oh goodness, I actually really do like the glossy finish over the matte finish that I’ve got. I thought I’d hate it being so shiny, but it’s surprisingly clear and crisp!), which basically left the CPU, motherboard and GPU to fault. Arguably, I could have swapped CPUs (since they’ve got the same model number), but I don’t have any thermal paste on me, so it would have been icky. There’s no point in replacing the motherboard or GPU, simply because those parts are too expensive to warrant replacement.
So instead I scrapped the machine; took the mini PCI wireless card, the power adapter and the RAM (which had better timings than the stuff I’m using). Honestly, I’m amazed at the wireless card — I’ve had so much fucking trouble with wireless being balls, and with this new one I’m hijacking the neighbor’s connection with ease (through a SSH tunnel, of course!). I’m not sure if I damaged my old card by blowing up a couple AC adapters, or if the antenna cables just popped off (they’re really fucking hard to keep attached to the card; I kind of want to hotglue them or something). Thought about taking the keyboard and trackpad too (mine are wearing out), but the thought of how much semen is on them kind of turned me off.
Haven’t decided what I’m going to do with the rest of the components though. The screen is fucking beautiful. What I really want to do is to grab a shit laptop minus screen off eBay for cheap, a touch screen layer for the screen, then hack everything apart and build myself a cool slate. Probably won’t get around to doing that for awhile :3
Also holy shit I just watched Howl’s Moving Castle for the first time. Best shit ever mang.
I haven’t gone to work a day this week so far; I feel really fucking lazy with Thanksgiving coming up and all. I tried to do some work at home both today and yesterday and got as far as opening up vim, but I’m so fucking tired of this stupid project. Bawwww etc.
hark@kanaria> time ./Ports 27.14 real 24.25 user 0.54 sys hark@kanaria> echo "SELECT COUNT(*) FROM raw_index;" | sqlite3 hs-ports.db 16413
Which is actually usably fast and reasonably sane, since INDEX gets updated with the ports tree. Honestly I don’t even feel like doing anything more on this — it’s just too boring lol. [sauce]
dongs dongs dongs11 comments