This is more of a front-end to libmpeg2 The source code can be found at https://github.com/ComputerNerd/Casio-prizm-mpeg2-player Version 1.03 To use this program you will see a file browser I have it set to show *.m2v files because there is no audio but it may play mpeg2 with audio (untested) but it will be ignored As for what resolution you should make the video I would not go over half of screen resolution it should support 384x216 maximum but malloc errors are encountered While the video is playing press exit to go back to the file browser if you want to do such. To compile libmpeg2 you will first need to make some changes First edit include/mpeg2.h Replace mpeg2dec_t * mpeg2_init (void); with mpeg2dec_t * mpeg2_init (uint8_t * buf); Then in decode.c change the value of #define BUFFER_SIZE to (160 * 1024) and find mpeg2dec_t * mpeg2_init (void) and replace it with mpeg2dec_t * mpeg2_init (uint8_t * buf) Find (uint8_t *) mpeg2_malloc (BUFFER_SIZE + 4, MPEG2_ALLOC_CHUNK); and replace it with buf; Now run ./configure --host=sh3eb-elf --build=x86_64-unknown-linux-gnu CFLAGS="-m4a-nofpu -mb -O2 -flto -mhitachi -Wall -I$HOME/Documents/libfxcg/include" LDFLAGS="-L$HOME/Documents/libfxcg/lib -nostartfiles -T$HOME/Documents/libfxcg/toolchain/prizm.x -Wl,-static -Wl,-gc-sections -Wl,-O2 -O2 -flto" --with-gnu-ld --without-x --disable-sdl --disable-largefile && make You will probably need to change some of the paths Also make will not finish but that is ok the only thing that does not get built is a demonstration the library gets built so it is fine. To encode video I used the following avisynth script AviSource("FILE PATH HERE") BilinearResize(176,96) ChangeFPS(128,13) AssumeFPS("ntsc_video") ConvertToYV12() To encode the video I used HC encoder http://hank315.nl/ There are some settings that you should be aware of please use 1:1 ratio for pixels Also if you want height to be a multiple of 16 instead of 32 make sure progress sequence is checked (In settings 2) Icon from http://www.pubzi.com/f/Movie-icon.svg