User:JCoug/Hacking Goals

= Introduction =

The purpose of this page is so I can outline specific goals to accomplish, steps to reach those goals, and current progress toward each step. My blog is for reporting my day-to-day experiences, this is to track what I am trying to accomplish and what relevant information I have found toward accomplishing those goals. These are intended for me alone, so any goals other people make on this page will likely just be reverted back out. However, feel free to add information to the discussion page on this topic if you can contribute information or help in some way on reaching these goals. = GOAL: Web Page hosting = The Screenplay already has an HTTPD program running that will do simple webpage + cgi script hosting. What I want to do is make a webpage that will allow me to organize my videos, classify (using links), and download over the web. This is the project I am currently working on.

= GOAL: Replace Menu =

Replace the screenPlay menu with a more functional, open source jukebox. While flashing other player firmwares may meet some aspects of this goal, it will not be met until all of the source is fully available for adding your own features.

Step: Determine how to control RTD 1262
There are no known specs that are publicly available for the RTD 1262. I have tried to contact the company regarding the specs but have been unable to obtain any. So the way I propose to accomplish this step is to reverse engineer the DvdPlayer program on the ScreenPlay Pro to see how they are controlling the chip.

Progress
we know it is a Mipsel compiled C++ program. I have located a mips decompiler called SimIt-MIPS that claims to be able to reconstruct the code as C++ source. I have not yet built the decompiler or tried it out on the DvdPlayer program.

Step: Determine framebuffer structure
while the RTD 1262 will take care of displaying the decoded video stream, the main processor will still need to draw the lines and text for the menu.

Progress
I was able to write a small utility that showed me graphically, in 2K chunks, what a memory dump of my ScreenPlay Pro looked like. I was able to find a location in memory that looked like the menu that was displayed when I made the memory capture (doing cat /dev/mem &gt; /tmp/hddmedia/memdump.bin to dump all of memory out to a disk file). I determined that the screen consisted of a 64 x 32 array of bytes making up a tile, and the tiles being 24 x 18 to make up the entire screen, although there is some other data on the 23rd and 24th tiles in the row. It is stored 2 bytes per pixel, which comes out to 5 bits per channel per pixel. In each two byte pair, the colors were encoded as for instance:  The byte pair 0x10 0x82 would break down into 00010  000 10 0 00010 where the one unaccounted for bit does not appear to be used. The tile layout is quite different. The first row (and all odd rows) of tiles are laid out 0-23 in that order. The second row (and all even rows) of tiles are laid out as tiles 2,3,0,1 order. I have written a program that decodes and displays that content and will make it available when I can. It also shows other blocks in memory where there is what I believe is streamed video in decoded form. = GOAL: Set up a toolchain on the ScreenPlay Pro =
 * Red: highest 5 bits of the low byte.
 * Blue: lowest 5 bits of the high byte.
 * Green: higest 2 bits of the high byte and lowest 3 bits of the low byte.

This makes it easier to compile programs for the ScreenPlay Pro that can work on the ScreenPlay Pro using the libaries and kernel already on the player. This makes it easier to develop CPP programs directly on the player where you can quickly see what the results are without having to transfer the compiled programs back and forth from a cross compiler.

Step: Setup Ubuntu with cross compiler and uclibc toolchain
In order to build a toolchain that can be mounted, I had to configure Ubuntu with all the tools for making a MIPSEL toolchain. buildroot at uclibc made this task less difficult, although it presented some challenges of its own.

Progress
Completed. I can rebuild an ext2 file with a toolchain that can be chrooted to. I am able to select different utilities, some of which it will compile, others that don't compile. I am using the GCC 4.2.4 compiler with uClibc version 0.9.28 and linux version 2.6.12.6. These versions matched what the player has on it.

Step:Integrate iomega GPLed source
Iomega hasn't provided everything, but they provided enough that I was able to get a similar uClibc library. Compiling against this library has yielded more programs that function without any problems. This includes SSH. What I have left to do is to assemble the instructions and make the modified buildroot available.

= GOAL: Get VSFTP on SPP= Finished. My blog contains the details.