Switchblade UI

By Blue2k on Sunday 6 January 2013 21:34 - Comments (2)
Category: -, Views: 5.357

I'm not sure how familiar people are with the company Razer, but I've been a fan of them for quite a while now. I'll spare you the list of mice, keyboards and other peripherals from Razer that I own but it definitely is north of ten. Razer has been expanding into new markets lately with controllers, tablets and even notebooks. One of their technologies called Switchblade UI was of particular interest to me. As a geek and with a career focused on software development, customization is high on my list of desired features.

http://assets.razerzone.com/minisite/switchblade_ui/images/home-bg.jpg

Switchblade resembles the regular touchpad found on most laptops but takes it to the next level. It basically adds an LCD screen underneath the touchpad and allows you to use that screen as an additional display or auxiliary display. Part of the setup are also 10 keys with small LCD screens inside, allowing for additional customization. The keys are reminiscent of the Optmius Maximus keyboard that almost became vaporware a few years ago. The hardware doesn't only come with the Razer Blade laptop, but is also available on a standalone keyboard Razer sells. The touchpad has the size of a Macbook Pro's trackpad and is very responsive. It's better than any trackpad I've ever used that wasn't a Mac. The Macbook Pro still has an advantage here as OSX allows for very tight integration with the trackpad. That's difficult to achieve for Razer as the best they can do is provide a driver for Windows.

Switchblade UI consists of the hardware and some software that allows you to view things like YouTube videos, Facebook,Ttwitter, email and even a (IE-based) browser on the touchpad screen. It also allows you to transform the touchpad into a numpad or take screenshots in-game and preview / organize them. These are the default basic capabilities. Razer also provides an SDK that allows you to create additional apps for the whole setup (touchpad screen and 10 LCD keys).

http://assets.razerzone.com/eeimages/products/769/razer-dstalk-ultimate-carousel-1.png

The SDK provides you with some examples and a DLL that you can include in C++ projects (or communicate to from managed .NET code). The exposed API is pretty clean and allows you to send messages or data to the display's framebuffer or to the individual keys. It also allows you to subscribe to events from the touchpad and keys. The API exposes enough to be able to develop a wide variety of software for Switchblade UI. On the development forums I've seen someone working on a pretty extensive video-player that allows you to browse your video collection on the touchpad screen and watch videos.

Even though the SDK hasn't been around very long it's clear that Razer needs to spend time on pushing this technology a bit more. With only one keyboard and two versions of the Razer laptop sporting the technology there aren't many people in possession of it. Getting interest from developers will require a wider audience and more ways for people to get their hands on it. The keyboard isn't cheap and the laptop is definitely a luxury item for the price (but definitely worth the price-tag). Even more unfortunate is that currently the SDK doesn't work with Windows 8, so after I upgraded my Blade to Windows 8 I lost the option to explore the SDK... Here's hoping that Razer gets a bit more traction with this, because it's an interesting technology and actually works well.

P.S for Linux: The touchpad uses Synaptics technology and thus works out of the box on Linux with the Synaptics driver for Xorg. The ten LCD keys behave as configurable keys. Unfortunately, the display shows whatever was on it when you left Windows. I believe it's hooked up to the USB bus, so either the windows driver needs to be reverse engineered or perhaps Wine could run some of the Switchblade UI software components.

PCSX2

By Blue2k on Wednesday 2 January 2013 01:28 - Comments (6)
Category: -, Views: 4.702

Having never owned an original Playstation (PSX) and being absolutely fascinated with the Gran Turismo series exposed me to Bleem! initially and PCSX eventually. Both are Sony PlayStation emulators, allowing you to play games intended for the PlayStation on a regular PC. I've played Gran Turismo (GT) 1 and especially GT 2 for countless of hours on emulators.

http://upload.wikimedia.org/wikipedia/commons/thumb/3/39/PSX-Console-wController.jpg/640px-PSX-Console-wController.jpg

In the early days of PSX emulation the goal was to achieve compatibility with as many games as possible, and maintain stable frame-rates. As emulators and PC hardware improved there was an opportunity to improve the visuals and leverage hardware accelerated rendering. The end result is a fully playable PSX game that handles and looks better than when it was running on the PSX hardware.

http://img331.imageshack.us/img331/2486/25nj.jpg

Even though the PSX's CPU architecture (RISC) uses a different set of instructions than that of a regular PC, the 33Mhz CPU was 'slow' enough to be emulated reasonably well. PCSX recompiles the RISC instructions on the fly to CISC based ones and emulates other calls to components in the PSX hardware. The result is that a PC will have to work harder than the original hardware, but can eventually produce the same results (a playable game).

At the time of the introduction of the Playstation 2 (PS2) the emulator scene (mainly the users) became very excited at the prospect of emulating the new version of the PlayStation. The developers quickly realized that is was going to be a monumental effort to accomplish as the PS2 has several chips working in very close collaboration. Even though the clockspeed of the main CPU (Emotion Engine) was only 300Mhz, the GPU and supporting co-processors made for a very complex system. All components are required to be very tightly synchronized and two-way communication between components happens often enough to cause problems.

Work started anyway on PCSX2, and while progress was very slow, a few simple games were 'loading' within a couple of years. It eventually took 5 years of development (and PC hardware improvements) to get some games into a playable state. To stress the complexity of the PS2's internals: multithread-support was introduced more than 10 years after the start of the project because of its inherent complexity.

http://upload.wikimedia.org/wikipedia/commons/thumb/3/39/PS2-Versions.png/542px-PS2-Versions.png

Anyway, so how did this train of thought start? On a rainy day last week (there are plenty of them here in Seattle) I decided to install the PCSX2 again. I had tried it 5 or 6 years ago and forgot about it. Last time I had tried it, games didn't run at full speed and the games I was interested in (Gran Turismo) weren't even close to working. Without much hope I gave it a try on my laptop and launched GT4. After enjoying the brilliant intro to the game (at 60fps) and working my way through smooth menu transitions I was able to race around Laguna Seca at a steady 60fps!

Imagine my surprise when I noticed in the log that NVidia Optimus had selected the wrong GPU! It was running on the integrated Intel 4000 chipset. Forcing it to use the dedicated 660m GPU it was capable of maintaining 60 fps in races with 5 other cars. The only place where it dropped to the high 40 and low 50 fps was on the Stage 5 night track. Apparently PCSX2 still has some issues with high numbers of light sources. Nevertheless, having PCSX2 render at 3 times the native PS2 resolution and enabling FSAA yields a picture quality that could fool people into thinking it was a PS3 game... Maybe.

http://i4.minus.com/iUms9coH7kMuW.jpg

Have a look at the developer blogs and prepare to be amazed about what makes PCSX2 such an incredible achievement. Besides it being a great emulator, it also shows what open-source projects can achieve.