Intermediate

warning: Creating default object from empty value in /home/hplus/enchantedage.com/modules/taxonomy/taxonomy.pages.inc on line 33.
You've been doing it for a few years.
jwatte's picture

Christmas Lights!

Adafruit has some cool, bendable LED strips. You can buy up to 4 meters of them in a continuous strip, with 30, 60, or 144 LEDs per meter. You send the color to each of the LEDs as 24-bit RGB, using a serial bus (single-ended SPI) and a simple protocol.

The protocol for these DotStar LEDs wasn't documented, so I had to figure it out from the sample code. It's pretty easy:

jwatte's picture

DFRobot Nova Basic Kit -- Test Report

The kind folks at DFRobot sent me a sample of their "Nova Basic Kit" to test out.

jwatte's picture

Arduino ICSP programming header pinout

I've been wanting to put the ICSP 6-pin header onto a soldered Arduino circuit.

This is so that I can make "emergency" fixes even if I've removed the Atmega MCU from the USB-powered board I normally use to prototype and program. Also, even if I socket it on the destination board, moving it too many times back and forth risks significant damage to the pins!

jwatte's picture

boost::asio async_read_until may read more than the specified data!

This took me a while to track down. I figured I'd document it for posterity, and anyone else trying to do asynchronous networking in C++ using boost::asio. I'm using Ubuntu Server 10.04 LTS with gcc/g++, which uses boost version 1.40. The reason is that the "bytes transferred" argument to the callback is the number of bytes until the separator is found, but more bytes than that are decoded from the socket into the input stream.

jwatte's picture

FFT in XNA Content Pipeline for Beat Detection For The Win!

I worked a bit more on the FFT-based music visualizer program I started the other day, and it's doing great! A this point, I have a pretty solid rhythm extraction thing going, and I can use autocorrelation (through autoconvolution) of the extracted rhythm track to derive tempo. I'm assuming 4/4 beats here, but...

jwatte's picture

What can I do with music, really? FFT and the XNA content pipeline

I was unhappy with the low resolution of the visualization data that you get out of the XNA framework MediaPlayer. If you want to synchronize gameplay to music, the data you get is not sufficient.

jwatte's picture

The XNA Offline and Online Highscores Component Version 2 (distributed leaderboards, sort-of)

XNA Game Studio makes it possible to write games for the Xbox without being a developer with good publisher contacts and lots of money to pay for marketing and Xbox development kits. This is great!

However, because the XNA Indie Games system is not fully controlled by Microsoft, certain features of Xbox Live! are not available, because they would be too easily abused. These features include online Leaderboards, and unlockable Achievements.

The XNA community has developed alternatives to those functions. Many XNA games contain "Awardments" that can be unlocked, and many more XNA games use the XNA Network Highscores component to implement distributed, peer-to-peer highscore sharing. The name for this is generally "Online Highscores" rather than "Leaderboards," because the latter name is reserved for use by Microsoft-certified titles that use the real Xbox Live! functionality.

This article introduces version 2 of the XNA Online highscores component, which is free for you to use in your own game under the terms of the MIT license.

jwatte's picture

VMWare Workstation DNS doesn't work right

VMWare workstation is in many ways a great product. It allows you to do all kinds of nifty set-ups that let multiple virtual machines talk to each other and the rest of the world, within the confines of your local PC.

However, there are some problems with it. I have a couple of virtual machines that I use as a sandbox for developing networked applications at work. These are hosted inside a Dell Inspiron XPS 1330 laptop. The laptop travels between networks frequently. At work, it's usually plugged in, but sometimes gets un-plugged and goes on wireless-G. On the train, it goes on a Sprint WAN card. At home, it generally goes on another wireless-G network.

jwatte's picture

A simple approach to native network marshalling

I used to do serialization using all kinds of fancy templates and macros. You can create pretty elegant systems that way. However, at some point, simplicity should win out. Here's a system that might work just fine for you:

A simple packet class, which really is all you need:

class packet {
public:
  packet() : pos_(0) {}
  void append(void const *data, size_t size) {

jwatte's picture

More about that dungeon

While I'm thinking about lighting, I'm dropping in a camera, and a player model based on kW Animation and kW X-port. This is mainly for proportion, and to get a feeling for what a unified scene will look like.

Syndicate content