Monday, March 24, 2008

ACID, ACID2 and ACID3 test results for all popular browsers by date

Since the ACID3 test was released by the Web Standards Project on March 3, lots of companies have scrambled to update their browsers to perform better on the test. No one browser has passed the test since it was released, though there seems to be a neck-to-neck race between Safari, Firefox and Opera. All three are putting out new betas (in different paces) that score better and better.

Since this seems so much like a race, I felt like putting up an overview. I tested all three ACID tests on current and older versions of Netscape, Internet Explorer, Firefox, Opera and Safari (for Windows) and determined as accurate as possible when each browser passed each test for the first time. I will update the ACID3 test results when they become available.

Some data taken from Anomalous Anomaly.


ACID1 test:

ACID1 test results

Notes:

  • I couldn't find when Safari first passed the ACID1 test. Windows builds only started at version 3.0, and I don't have a Mac.
  • It's possible Internet Explorer passed the test with an earlier 6.0 build, but it's both very hard to find them and very hard to get them running without messing up your system.


ACID2 test:


ACID2 test results

Notes:

  • Netscape never passed the ACID2 test before it was discontinued. Its final result looks like this. If that looks a lot like what the latest stable Firefox renders, remember that Netscape switched to the latest (stable) Gecko engine, also used by Firefox, before putting out the last build.
  • Safari and Opera passed this test first, and it took Firefox and Internet Explorer so long to accomplish this feat, that only their recent betas pass it now. How embarrassing.


ACID3 test:


ACID3 test results

Notes:

  • The red line marks the releae of the ACID3 test. To see a big picture that goes back all the way to 1997, see here. It has several peaks where browsers performed worse with new versions, and I have no idea why.
  • Almost every browser picked up on the ACID3 test and updated their browsers. Only Internet Explorer didn't, and that's probably only because they just put out the first beta of IE 8 three days after ACID3 was released, along with several proud posts that it passed ACID2.
  • The switch to the latest Gecko rendering engine by Netscape can be seen very nicely here, as the Netscape line merges into the Firefox line with the last Netscape version.
  • Not pictured: the Firefox score drop from 59% to 52% since they released 3.0 beta 1 (on a newer rendering engine) earlier than 2.0.0.12 (with the old rendering engine).
  • Opera is making a GIANT leap several weeks before ACID3 was released, which shows that they were putting a lot of effort into being compliant even before the test was released.
  • Safari is putting a lot of effort into passing the ACID3 test right now. Each Webkit nightly is scoring better.


TODO: maybe I'll add the CSS3 selector test later on.


UPDATES:

  • March 26: New Firefox 2.0.0.13 scores no better on ACID3. Webkit nightly r31306 goes from 95% to 96%.

  • March 26 again: THE RACE HAS BEEN WON! Both the latest Webkit nightly and the current internal Opera build now pass 100% of the ACID3 test! Congratulations to both teams. Opera wins for having a 100% score just hours before Webkit did. Webkit takes the medal for having the first publicly available build that passes ACID3 - Opera promises the public build later this week.

  • March 27: It seems Opera is generally credited with the first Acid3 100% pass, and that Safari's Webkit cheated by implementing only the part of the SMIL protocol that was required to pass the relevant test.

  • March 28: Opera made their internal WinGogi build available (the one that scores 100% on Acid3) and I added it to the graph. It's the peak on 26 March, obviously. Most of the Acid3 changes will not be in the Kestrel engine scheduled for Opera 9.5, which explains why the latest 9.5 alpha build scores just 79%.

  • April 2nd: Firefox 3.0 beta 5 scores 71% over the 68% of beta 4.

  • April 17th: Firefox 2.0.0.0.14 scores 53% over the 52% of 2.0.0.13. It seems clear they are focusing more on Firefox 3 for standards compliance now.

  • April 18th: Safari 3.1.1 scores 74% as opposed to the last 3.1 version. The latest Opera weekly build scores 79% like its predecessors. I've updated the Acid3 graph to show the results the latest version of each browser gives, even if this is a stable version and a better scoring beta was released earlier. If I have some time left later I'll split the lines into stable and beta.

  • April 25th: Opera 9.5 beta 2 scores 79% like its predecessors.

  • May 17th: Mozilla Firefox 3 Release Candidate 1 scores no higher than the betas: 71%.

  • June 5th: Mozilla Firefox 3 Release Candidate 2 still only at 71%. It doesn't seem like FireFox 3 will score any higher than this.

  • June 10th: Opera 9.5 RC scores 83%. Their latest weekly builds have been slowly creeping up on the Acid3 test.

  • June 12th: Opera 9.5 was released today and it scores 83% on Acid3.

  • June 20th: Safari 3.1.2 scores 75% over the previous version's 74%.

  • July 31st: The Firefox 3.1 alpha Shiretoko scores a surprising 83%, bringing it on par with Opera.

  • September 6th: Added Google Chrome to the list. It seems to update discretely, I got only 55% on the first version but reinstalling today yielded 77% (or sometimes 79%) and the build number had changed from 1583 to 1798. The Safari 4.0 beta from June 10th scores 100%!

  • September 8th: Mozilla Firefox 3.1 alpha 2 and Opera 9.60 beta 1 RC were both released on September 5th and both score 85%!

  • October 8th: While Google Chrome is still on 79%, the latest Chromium nightly builds have updated the Webkit engine version on October 1st, and it's scoring 100% on ACID3 since build 2778! There's only one timing issue (test 26) and the image doesn't look like the reference pic completely - big red cross in top-right corner and 'linktest failed' below the score). Chromium is already at build 3001 at the time of writing, so expect the official Google Chrome builds to duplicate this soon.

  • October 15th: Mozilla Firefox 3.1 beta 1 is out and scores 89%, finally passing Opera for the first time since March.

  • December 4th: Opera 10 alpha 1 was released today and it scores 100%, as expected. It's also MUCH quicker than the WinGogi build they put out sometime ago.

  • December 8th: Mozilla Firefox 3.1 beta 2 scores 93%.

Sunday, March 02, 2008

How to use the Wii Guitar Hero III guitar on Guitar Hero III for the PC

Right! I'm going to explain to you how to get the Les Paul from Guitar Hero III: Legends of Rock for the Nintendo Wii to work with Guitar Hero III: Legends of Rock for the PC. I took a lot of this from the Wiihacks post on using your Wiimote as a mouse in Windows so if something isn't clear enough, go read that first.


*UPDATE* March 6: the GlovePIE script is now DONE. I just added the correct keybinding to the + key (Backspace instead of Escape) and changed the whammy code to use the mouse for whammying. It's not as smooth as I'd like, but it's the best you can get.
*UPDATE* March 5: updated the script to be three times shorter, and added support for Star Power activation by tilting the guitar. The Wiimote will also rumble for a second when you do this, somewhat like it does in GH3 for the Wii. Yay!


Why?

Because GH3 for the PC has better graphics and STEREO SOUND, and I wanted to see if it could be done. These guys got most of it working and I've had some tips from them. You've all seen the videos of people using the Wiimote as a mouse, and some of you probably have seen some of Johnny Chung Lee's videos where he uses the Wiimote as cheap implementations of head tracking solutions and multi-touch whiteboard screens.
I got the whole thing working in about an hour, on Windows XP. The GlovePIE script (which is completely my own) took about three days work off and on.


What do I need?

You're going to need the following things:

  • A Nintendo Wii controller and a Wii Les Paul guitar controller, obviously.

  • Guitar Hero III: Legends of Rock for the PC

  • A bluetooth adapter or USB dongle - If your computer doesn't already have one (look in the Device Manager to check this), you can get a cheap one that plugs into your USB port from eBay. I got one for $1 and it works fine.

  • BlueTooth drivers - If your computer doesn't have them already (Windows Vista should) and the above bluetooth adapter/dongle didn't have a driver CD included, get the free BlueSoleil drivers.

  • GlovePIE 0.30 or newer - this interprets the signals from the Wiimote and can map them to key presses. Version 0.30 added support for the Wii guitar.

  • A bit of persistence to get the GlovePIE script to work right :-)

Connect the Wiimote to your PC via Bluetooth

This should be the easiest part. Plug the Bluetooth dongle in if you have one, then install the BlueSoleil drivers. The Microsoft Bluetooth stack will NOT work, unless have a Bluetooth device that is in the list of compatible devices on the WiiBrew wiki.


Once the Bluetooth part is setup, put the Wiimote in discovery mode by pressing 1+2, then let your Bluetooth device on the PC discover it. It should find something like Nintendo RVL-CNT-01, which offers a Human Interface Device (HDI) service. If the Wiimote LEDs stop flashing, press them again until your PC finds the Wiimote and the service. When that's done, connect to the HID service.


Setup GlovePIE to use the Wiimote

Now that the Wiimote is connected to your PC, open up GlovePIE. Go to File > Open and open the script called TestWiimote.PIE in the OldScripts folder. Now click RUN and wave around your Wiimote. There should be numbers changing in the debug window in response to your waving. If they don't change, either your Wiimote is not connected properly, or your Bluetooth stack is incompatible with the Wiimote.


If you got GlovePIE working, you can try this mouse script from the Wii Hacks blog and fiddle around with it. Tilting your Wiimote should control the mouse cursor, and it should make the Wiimote vibrate when you hit the screen. A and B control the mouse buttons.


Setup GlovePIE to use the Wii guitar controller

Now for the hard part. You'll need a custom script to interpret the signals from the Wii guitar and map them to keys on your keyboard. The script I wrote to do this is below, you can copy and paste it into GlovePIE (don't forget to save it) and change it to your liking.



Key.Ctrl = False
Key.LeftShift = False
Key.LeftAlt = False
Key.RightAlt = False

debug = 'whammy=' + wiimote.Guitar.WhammyBar + ', pitch=' + RemoveUnits(Wiimote.Pitch)

//change these to your liking (use debug info)
var.whammythreshold = 0.55
var.starpowerangle = 50

//bind frets to V-C-X-Z etc
Keyboard.V = Wiimote.Guitar.Fret1
Keyboard.C = Wiimote.Guitar.Fret2
Keyboard.X = Wiimote.Guitar.Fret3
Keyboard.Z = Wiimote.Guitar.Fret4
Keyboard.A = Wiimote.Guitar.Fret5
//make the 4 wiimote leds light up with the first 4 frets
Wiimote.Led1 = Wiimote.Guitar.Fret1
Wiimote.Led2 = Wiimote.Guitar.Fret2
Wiimote.Led3 = Wiimote.Guitar.Fret3
Wiimote.Led4 = Wiimote.Guitar.Fret4
//other mappings
Keyboard.Space = Wiimote.Guitar.Minus
Keyboard.W = Wiimote.Guitar.StrumDown
Keyboard.E = Wiimote.Guitar.StrumUp
Keyboard.Backspace = Wiimote.Guitar.Plus

//make whammy when whammy is pushed
If Wiimote.Guitar.WhammyBar > var.whammythreshold
   Mouse.x = Wiimote.Guitar.WhammyBar
EndIf
//push star power button when guitar is tilted
If RemoveUnits(Wiimote.Pitch) > var.starpowerangle
   Key.Space = True
   Wiimote.Rumble = True
   Wait 1000 ms
   Key.Space = False
   Wiimote.Rumble = False
EndIf

A few things to note on this script:

It maps most of the Wii guitar controls to the default mappings of GH3 for the PC. E.g. the frets G-R-Y-B-O are mapped to V, C, X, Z and A. Look around in the script, it's really easy to do.


To configure the whammy, run the script and look at the debug value for the whammy bar. My guitar gave a value of 0.55 for the whammy bar in rest, so you'll only want GlovePIE to send it to GH3 when a value greater than 0.55 is registered (or it'll be constantly whammying). Change the line 'var.whammythreshold = ...' so that it has the value there that your whammy bar sends while in rest.


If you tilt the guitar higher than 50 degrees, Star Power is activated. If you like it better when it's at 30 degrees, or 90 degrees, change the var.starpowerangle value. Use the debug value to find your best angle.


Whichever mappings you use in the script doesn't really matter, as long as you configure GH3 for the PC to use the same mappings. So if you have the script setup to send 'Q' when you press the orange fret, setup GH3 for PC so that the 'Q' presses the orange fret.


Other stuff you can do


Besides accomplishing this great feat, you can:

  • Plug your bigass flatscreen into the PC, set it as the primary screen and rock out in an even higher resolution!

  • Add new songs to GH3! This is possible in the PC version only (at least with minimal effort). See this thread on the ScoreHero forums. I've already added a few songs, and it turns out to work best when you have FretsOnFire songs to be imported - those already have separate channels for song/rhythm/guitar sounds, though it is also possible with normal mp3 files.

That's it!

Using this setup, I got my Wii guitar working great with GH3 for the PC. You might not be able to get the same scores since the Bluetooth connection sometimes seems to drop things or lag a bit, but it's great for getting that extra graphics quality boost that you won't get on the Wii. :-) Have fun!