This is a collection of python tools to manipulate ROMs of identity chips from the Tron Lightcycle / Run Identity Program.
Note: facial images of Identity Program figures are not stored/displayed digitally; they are small images printed on transparent film inside the head which are projected onto the face via one of 3 LEDs.
Given an identity chip image, it will extract all the audio into WAV files.
Given some WAV files, a path to output the ROM image to, and an RGB value, this script will generate a 4MB binary file that can then be written to an SPI flash chip such as the ones used in identity chips.
Here is the front and back of the PCB inside an identity chip. It uses a 2MB SPI flash memory chip (specifically an XT25F16B from XTX Tech) The PCB includes a pinout of the gold fingers that are exposed when the PCB is inside its plastic cover.
I have designed a PCB that uses an 150-mil SOIC8 flash memory chip soldered into a hole in the center of the PCB in order to fit within the identity chip socket. Use at your own risk.
Audio is stored as big endian 16-bit mono PCM data with a sample rate of 12KHz (same sample rate as Droid Depot personality chip audio). The lower 4 bits of each sample need to be zero. Starting at 0x00000E of the ROM is an address table. Each entry is 5 bytes, the first two bytes are 0x01FF and the following 3 bytes are the address for the audio data. At offset 0x001002 is a 3 byte value that represents the color the LEDs will display when the chip is inserted. The first byte represents the red value, the second byte is the green value, the third byte is the blue value.