A Mind Lost

Anything and everything.

Yasm Crashing

While messing about attempting to build a plethora of software with MinGW, I came across an oddity with Yasm.  When building software for personal use, I generally pass gcc the “-march=native” option, which instructs gcc to figure out which features are available on the host system, and to tweak instruction scheduling to match it.

When building Yasm (an assembler) with this option, the resultant binary would immediately crash.

Compiling with -march set to “corei7” produced a program that ran just fine, but using “corei7-avx” again resulted in a crash.

$ gdb yasm.exe
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from <...>\yasm-1.2.0\build.corei7-avx\yasm.exe...done.
(gdb) run
Starting program: <...>\yasm-1.2.0\build.corei7-avx\yasm.exe
[New Thread 2292.0x7b8]

Program received signal SIGILL, Illegal instruction.
0x00409fe2 in BitVector_Boot ()
(gdb)

Since I have no idea what BitVector_Boot is or does, and I really doubt that an assembler will have much of a noticeable improvement with AVX, the simplest solution is to just use “-march=corei7”.

I really don’t know why it wouldn’t work anyway. I have a Corei5-2500K processor, which supports AVX. I found but a single reference to someone else encountering this, so it doesn’t appear to be a common problem.

Advertisements

Back to World of Warcraft

A while back my brother sent me a Scroll of Resurrection for World of Warcraft, which gives a week of free gameplay in an effort to lure back players.  I’ve had my account since February of ’05, a few months after launch, though I’ve taken intermittent breaks here and there.  My last, and longest, break began shortly after Cataclysm’s launch, around March of 2011.  Before cancelling, did I manage to get two of my characters to 85, and a few to 81/82.

I’ve never really had good luck with finding guilds.  I’m not a hopper, I try to stay fairly loyal.  But I’m also the kind of person who tries to help out whenever I can, and in the end I usually get crapped on.

During The Burning Crusade, when Karazhan was the raid to do, I watched as the guild I’d been in for a year and a half swelled with new members.  Gradually, these new members pushed me out of my raiding position, even those raids I had explicitly signed up for and was expecting to do.  Needless to say, it happened once too many times and I /gquit.  I found out a month later that three of the people who “got geared” via those Kara runs jumped ship to another guild as soon as their gear was good enough.

With Mists of Pandaria’s launch drawing ever closer, the pre-expansion lull is definitely noticeable.  While I’ll probably be one of the many people who line up outside the local Future Shop for the midnight launch with the intention of scoring a Collector’s Edition, I can’t really say that I’m all that excited.  My biggest complaint with WoW, and this has been true for the last four years, is that the “endgame” experience is lacking.  It’s a never ending cycle that goes like this:

1. Collect gear to do more difficult content.
2. Collect gear from difficult content.
3. Wait for new content, while doing increasingly less-difficult content.
4. Go to 2.

For me, there’s no longer much satisfaction in the endless gear upgrade circle.  I want more than just replacing blue items with purple items while waiting for the next expansion.  I want to continue to develop my character when the maximum level has been reached, rather than just changing his clothing!

EverQuest addressed this with its Alternate Advancement system.  Introduced with the Shadows of Luclin expansion, AA (as it was shortened to) allowed the player to allocate a portion of their earned experience to a separate leveling mechanic upon reaching level 51.  If I remember right, it required the same amount of experience to go from 50 to 51 to gain an AA “level”.  Gaining AA levels granted the character points that could be allocated to Generic, Archetypical and Class-specific abilities.

The basic bonuses one could assign AA points to included increasing base stats, protection stats, movement speed, and regeneration.  Archetypical AA abilities fell in to four categories: Fighter, Priest, Caster and Hybrid.  They included increasing damage done, reducing damage taken (avoidance and mitigation), spell effectiveness and a host of other abilities.  Finally, the Class-specific abilities included, as one might well guess, a variety of class-specific buffs such as improved dual-wielding hit chance, mass group buffing, transformations (into an elemental, for example), cooldown reductions, and far too many other abilities to mention.

This gave the player much more customization, and in my opinion was an amazing addition.  It also allowed a lot of differentiation between two characters of the same class.  Two tanking type characters could spend their AA points in different ways.  One could be a soak tank, with a larger HP pool, while the other might instead opt for a mitigation tank, reducing damage taken.

World of Warcraft, on the other hand, has given us a seven year and counting endless gear grind.  Really, they haven’t innovated very much at all.  The Glyph system, while a nice addition, doesn’t offer much in the way of variety.  For each class and spec combination, the number crunchers have long advised the players on which glyphs to use and which to avoid.

With the redesigned (or excised, if you prefer) talent system of MoP, World of Warcraft is losing the only real feeling of customization it had.  Sure, there has always been the cookie-cutter specs that one had to use if they wanted to remain competetive, but at least there was the illusion of choice.  And by max-level, there was usually a few talent points left that could be allocated where the player wanted after all the core requirements were met.

After playing the recently released Diablo III (and being sadly underwhelmed by the game as a whole), I can only say that I wish the D3 and MoP developers worked on different continents from one another, with no communications between them.  World of Warcraft is shaping up to be Diablo III, only on a different world and with a monthly subscription fee.

I continue to hope that Blizzard will add some sort of secondary leveling system that will allow players to customize their characters beyond just the “gotta get the new ilvl 9000 item from that raid” we’ve had for so long, but I shall not be holding my breath for it.  They continue to dumb the game down to appeal to more subscribers, and it seems like ample choices in character customization are #1 on the chopping block.

Oh, and then there’s the Transmogrification system.  Compared to Lord of the Rings: Online, Warcraft’s implementation is a joke.  In LotRO, one can opt to display a costume rather than their equipped gear, and it’s no more difficult to use than equipping the costume item to the appropriate slot and clicking a “Show This Outfit” button.  In true Blizzard fashion, the Transmog system is little more than another gold sink, where each wardrobe change requires spending in-game money to change the appearance of a worn item.  Disappointing, to say the least.  Every time a piece of gear is upgraded, the player must pull the piece they want their gear to look like out of the bank (or the other new gold sink, Void Storage), and again pay to apply the appearance transformation to the new item.

I really don’t know why I keep going back to WoW.  I have missed out on about 95% of the raiding content over the course of the game’s lifetime, have only made two lasting friends who no longer play very much anyway, and on the whole don’t find the game to be very compelling any more.  Sure, leveling characters is fun for me, and I do enjoy a lot of the quests and their dialog, and the story as a whole is interesting enough.  Yet once I reach the level cap, I just move on to the next character and plow through it all again.  Every expansion leaves me feeling less satisfied than the previous, and I know this feeling is going to reach critical mass eventually.

YouTube Service Scam

Seems the scam artists of the Internet are trying a new trick.  After seeing mail from Blizzard, Runescape, and a bunch of other MMO’s, as well as various banking sites, it looks like they’re trying to use the YouTube name now.

YouTube Service has sent you a message:

Your video has been approved
To:*****@*******.com

http:// http://www.youtube.com/watch?v=zK1qRu97Wx&feature=topvideos_mp
You can reply to this message by visiting your inbox.

Don’t click on the fake YouTube links, they lead to “http://russ.vndv.com/impeccable.html&#8221;.  I didn’t actually open it, so I’ve no idea what kind of scam they’re running.  Neither did I bother looking up the domain to try to determine which asshole of the Internet this one is.

*Edit* I just checked my junk mail, and found nearly 20 more of these with minor variations in the subject, and some linking to other sites.

Edit with GIMP Context Menu

I’ll keep this one short and to the point.

After installing GIMP 2.6.12 for Windows, I noticed the “Edit with GIMP” entry in the context menu for image files was missing (that’s the menu that pops up when right-clicking on a file).

One Google later and I was reading a blog post on “Thoughtful Code” that pointed me to the correct registry key.  A few minor changes to Mr. Reiter’s solution and I was good to go.

[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\edit]
@=&Edit with GIMP

[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\edit\command]
@="C:\Program Files (x86)\GIMP-2.0\bin\gimp-2.6.exe" "%1"

The “@” refers to the “(Default)” value in a key.  I opted to set GIMP as the default edit action rather than creating a separate menu item, and set the shortcut key to “E” (that’s what the ampersand in “&Edit with GIMP” does).  I also had to change the path, as I use a 32-bit GIMP on Windows 7 x64.

For the quick ‘n easy, copy and paste the following to a text file with the .reg extension (such as Edit_with_GIMP.reg), and run it.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\edit]
@="&Edit with GIMP"

[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\edit\command]
@=hex(2):22,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,\
  00,46,00,69,00,6c,00,65,00,73,00,20,00,28,00,78,00,38,00,36,00,29,00,5c,00,\
  47,00,49,00,4d,00,50,00,2d,00,32,00,2e,00,30,00,5c,00,62,00,69,00,6e,00,5c,\
  00,67,00,69,00,6d,00,70,00,2d,00,32,00,2e,00,36,00,2e,00,65,00,78,00,65,00,\
  22,00,20,00,22,00,25,00,31,00,22,00,00,00

Media Playback Problems Part 2

I wrote up a long post about my media playback problems, thought I’d fixed it, played two files without a problem, hit post and went to watch a few videos.  The problem returned, my frustration trebled.

I thought I had fixed it by installing ffdshow-tryouts and Haali’s splitter.  I was mistaken.

In the end, unplugging the television and running the single LED display has completely eliminated all sync and frame dropping problems.  I just played back a 22 minute video with not a single dropped frame and Sync Offsets of 0 throughout according to MPC-HC’s statistics.

I don’t know if the videocard just cannot handle both displays, or if there’s some trickery I need to try to make it perform better, but needless to say it is bloody frustrating.

Media Playback Problems

One of the things I really dislike about reinstalling Windows, whether from need or just masochism, is that I run in to all sorts of problems that I’ve never seen before.  For example, my D-Link DWA-552’s poor performance.  That’s half the reason I bother with this blog.  I’ve a terrible memory, so keeping track of the issues and my attempts at fixing them just seems like a Good Idea.  And if I can point someone else in the right direction, even better.

After fixing my audio problems I had hoped that my media playback difficulties would be resolved as well, but this was not to be.

I run a dual display setup off of my single EVGA nVidia GeForce 460 GTX.  DVI-1 connects to a 24″ Samsung SyncMaster BX2431 LED display via a DVI-to-HDMI cable, while the HDMI connection is plugged in to a 40″ Samsung LN40D630 LCD television.  The TV’s audio is plugged in to my desktop’s 2.1 speaker setup via a 3.5mm TRS plug for those moments when I need a bit more boom.

Aside from the obvious hardware changes of a new processor, motherboard (and the differences in onboard hardware), and the recently upgraded wireless card, the only other big change is upgrading Windows 7 x64 to Service Pack 1.

My preferred media player, Media Player Classic – Home Cinema has suffered terribly from dropped video frames and the audio has refused to stay in sync, growing progressively worse as the video plays on.  VLC media player fares a little better, but while playing it averages 35-50% dropped frames according to its playback statistics.  Sometimes it’s not quite as noticeable, but being near sighted has made me annoyingly sensitive to things like frame skipping and tearing (and dead/stuck pixels in a display, to my everlasting irritation).

I’ve tried everything I can think of, upgrading/downgrading/upgrading my audio drivers for my motherboard’s built-in Realtek HDAudio hardware, using the latest beta nVidia driver, and disabling Aero in favour of the Windows Classic appearance.  I’ve twiddled services, changed audio output settings, all to no avail.

The last step I tried, and the one that seems to have finally prevailed, was to install Haali Media Splitter and a recent SVN build of ffdshow-tryouts by clsid.  I set the splitter to handle everything it could, and set ffdshow to only allow whitelisted programs due to incompatibilities with certain games that I happen to play (such as Fallout 3).

MPC-HC needed a bit more tweaking to make it use ffdshow and mkvsplitter.

I think I’ve got it right, although I’m pretty clueless when it comes to the gory details of media playback on Windows.  Either way, this appears to work and MPC-HC claims it’s using ffdshow, with the notification area icons backing it up.

So far so good.  I’ve watched two videos that were horrendous, exhibiting the sync and frame dropping issues as soon as playback began.  Using the external filters appears to have cleared up my issues completely.  I haven’t looked in to enabling DXVA in ffdshow for acceleration yet, I’m just happy I can watch videos flawlessly now.

 

Well, it looks like I spoke too soon, the sync problems are back with a vengeance.

 

This is bloody annoying.

 

Oh, and happy 36th birthday to me.

Pausing and Buzzing Sound

A few weeks back I went through a round of upgrades and handing-down, where my father received my first-gen Core i5-750 and I upgraded to an i5-2500K.  The old computer has performed exceptionally since I put it together, with hardly a problem, and the old man doesn’t need the horsepower of a slightly more modern system.

The new machine has the aforementioned “unlocked” Core i5 2500K, stock clocked at 3.3GHz (with SpeedStep enabled), with 8GB of Kingston DDR3 1600 RAM at 1333, which is what the BIOS first set it to; I’ve not been arsed to bump it manually since the performance improvements would be so negligible as to be unnoticeable.  The motherboard is an ASUS P8P67 Rev3.1, featuring onboard sound, gigabit ethernet, and bluetooth.  Graphics are handled by a GeForce 460 GTX, and wireless connectivity by a D-Link DWA-552 wireless N adapter.  The graphics and wireless card previously inhabited the i5-750 machine, and worked without problems for over a year.

When watching a video, be it in Media Player Classic, VideoLan or YouTube, or listening to music with foobar2000, the interface will become unresponsive and the audio will buzz for about a second.  This happens frequently but inconsistently.

Searching for other folks with this problem, and hopefully a solution, didn’t turn up much until I came across a link leading to “the Sycon’s DPC Latency Checker“.  This program measures the latency of Deferred Procedure Calls (the link describes the concept in detail), where a problem free computer should produce output that looks somewhat like this (I am using the samples from Sycon’s site, I didn’t screencap my own use):

When there’s a problem, it looks more like:

While I wasn’t quite seeing such predictable spikes, I was getting high latency at intermittent intervals.  Determining the cause of the high latency, a poorly performing device driver, is to go through every non-essential device in Device Manager, and disable it.  After going through the first few that came to mind (the nVidia audio driver, Realtek audio driver, and Intel gigabit LAN), I finally disabled the D-Link wireless adapter and watched as the red spikes disappeared.

The suggested solution is to update the driver for the offending device and hope that the problem is fixed.  Unfortunately, the driver for this adapter hasn’t been updated since late August of 2010!

Instead I took a quick trip to a local computer shop and picked up an ASUS PCE-N15 wireless adapter (which uses a Realtek chip).  It took just a few minutes to swap adapters and plug everything back in.

So far I’ve watched an x264 720p video with DTS audio while writing this and maxing out my network bandwidth for about 45 minutes, keeping the DPC Latency checker in the background.  While it’s peaked at 721µs, it has remained in the green and the whole video played without a single stutter.

It’s odd that I never saw this behaviour previously with (almost) exactly the same hardware.  The D-Link never caused problems before (except for an issue when I was dual-booting to Linux).

The replacement adapter “only” cost just a bit less than $40 CDN.  I’ve read many accounts of people who recommend one stay clear of ASUS hardware, but after four motherboards, a DVD and BluRay burner, as well as an ASUS notebook, I’ve yet to encounter a significant problem.  Well, okay, they did ship the notebook with Windows Vista.  But aside from that, I’ve not had an issue with their products.

VirtualBox HostAudioNotResponding

Starting a VirtualBox virtual machine results in a warning popup:

This is because Windows/the audio driver has disconnected the devices due to nothing being plugged in to the relevant ports.  Modern audio hardware has a feature called jack sensing, and can disable the respective devices when there’s nothing to receive input from or send input to.

Plugging my headset/mic combo into the front-panel audio connectors results in the microphone recording source being enabled.

If you want these sources to be available to your VM, ensure they’re plugged in before starting it.

Configure failing under MinGW

A while back (almost a year, wow), I had problems with Windows 7 “locking” executable files, preventing their deletion and overwriting.  Recently I’ve run in to problems again, specifically when running NASM’s configure script, though I’d imagine it can happen any time.

I believe the Application Experience service is acting up again.  Going through the Windows Event Viewer, there are multiple entries in the System log indicating that the Application Experience service is being started and, approximately 45 seconds later, stopping.  The times coincide with my attempts to run the configure script.  Coincidentally, my display driver just crashed.  Sometimes I really hate computers.

Anyway, we’ve had Windows Vista for five years last month (!), and Windows 7 for just over two years.  I don’t, to my knowledge, run any software that isn’t Windows 7 safe, so disabling the Application Experience service once and for all shouldn’t be an issue at this point.  The problem is that just disabling the service causes problems as mentioned in my previous post on the issue.

A bit more digging around brought me to Black Viper’s entry on the service in question, complete with a description of how to turn off this “feature” entirely.  This needs to be done via the Local Group Policy Editor, a feature which may not be available on all versions of Windows.

Using the Run dialog (WinKey+R), run “gpedit.msc”.  Navigate to Local Computer Policy->Computer Configuration->Administrative Templates->Windows Components->Application Compatibility.  The two settings we’re interested in are “Turn off Application Compatibility Engine” and “Turn off Program Compatibility Assistant Engine”.

All that’s left is to set the Application Experience service to disabled and reboot.

There’s a bevy of additional “tweaks” that can be made with the Policy Editor; Google can be your friend.  Double check before you enable/disable anything!  Also, if you do this, be aware of what you’re installing – make sure you use software that is known to work properly with Windows 7.  Now I’m off to restart.

Media Center Extender Woes

I spent a few hours banging my head in frustration trying to get Windows 7 and my XBox 360 to work together.  Windows Media Center was failing to connect, and not providing any helpful error messages.  I dug through firewall rules, services, the event log viewer, anything I could think of, but nothing was working.

In the event viewer, under Applications and Services Logs -> Media Center, the only slightly helpful error I could find was “Media Center Extender Setup failed as the Extender was detected on the network but the UPnP search for the Extender failed (timed out after 20000ms).

Anyway, long story short, it turns out that if Internet Connection Sharing is in use (which it is, I run an old wired router from my desktop’s ethernet connection to allow my television and blu-ray player to connect to the Internet), Media Center barfs and can’t connect.  So the fix, in my case, was as simple as turning off Internet Sharing on my wireless connection.

I found no documentation on any of Microsoft’s support sites mentioning this as a reason for MCE to not work.  In fact, their troubleshooting documentation is pretty crappy all around.