The Wowwee Alive Elvis utilizes a cartridge which contains all of his songs and monologues. Opening the cartridge, we found that it contained a single IC. We looked up the datasheet for this IC and determined that it was a 32MB 3.3v NAND flash. Using the datasheet and a multimeter, we were able to determine the pinout of the cartridge connector.
Knowing that xD and Smartmedia flash cards, typically used in cameras and MP3 players use a straight-through NAND flash interface, we compared the pinouts of the cards with the pinouts of the cartridge. We found that all needed signals were present to connect the cartridge directly to a USB xD/Smartmedia reader and dump the cartridge contents.
What we found was a very pleasant surprise! The cartridge is formatted as a standard FAT16 volume viewable by Windows, Linux, Mac, etc..
There are 123 files on the cartridge which takes up about 26.5MB of the 32MB cartridge. The cartridge is not write protected and there is approximately 5MB free.
First, we looked at the audio clips. The 8 Song titles, 8 Songs, 8 Karaoke versions of the songs, and 37 monologues are all regular MP3s with the file extension, *.dat. The audio clips are endcoded with these settings: 44.1kHZ, 128kb/s Joint Stereo.
For every audio clip, there is an animation script associated with it. Its filename is the same as the audio clip, but with a *.txt extension. It is not a text file and cannot be opened or edited with a text editor. Instead one must edit the files with a hex editor (or a custom program) once the format is decoded.
There is also one MSDOS *.exe file on the cartridge. Running it calculates the checksums of all files on the cartridge and the total checksum. It looks like it is used in production to ensure that none of files are corrupted before shipping.
What this means, so far, is that it should be possible to customize Elvis' behavior in his three modes of operation: Songs, Monologues, and Karaoke; including making him an entirely different character. Combined with GWJax's articles on customizing the Elvis skin, this makes for a great entry-level animatronics platform for halloween displays, etc...
What we cannot do, so far, using this method:
- Connect Elvis to a PC to control him in real-time
- Modify any of his voice and animations when in autonomous mode
- Create any level of interactivity using his IR sensors
- Add more sensors, motors, etc...
This limits the usefulness of this hack, but techniques are being discussed to utilitze this method to its fullest, however, it should be good enough for simple displays. Further research is being done to accomplish the rest of the above list.
Things left to do:
1. Modify Elvis to accept custom cartridges --DONE!
Option A: Modify USB smartmedia reader with cartridge slot
Option B: Create custom cartridge with xD adapter ---DONE!
Option C: Install xD or Smartmedia socket in the Elvis bust
2. Decode the animation scripts and write a program to create custom scripts --- 1/2 DONE (still need a decent program to make animations)
3. Dump flash on Elvis mainboard, determine its contents and develop a method for reflashing it in-circuit ---- DONE!
4. Possibly replace the CPU on the Elvis main board to accomplish full interactivity, addition of hardware, and real-time computer control
4. Determine practical methods of applying this knowledge to completely modify the behavior of the Elvis bust into a programmable and interactive animatronics platform.