Plays an mpeg2 encoded video file on the casio prizm graphing calculator
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Changelog
Makefile
README Don't use LTO because it was crashing when enabled using GCC 7.2 Oct 8, 2017
filegui.c
filegui.h
fileicons.c
main.c
mpegtest.g3a
selected.png
unselected.png

README

This is a MPEG2 player based on libmpeg2.

The source code can be found at https://github.com/ComputerNerd/Casio-prizm-mpeg2-player

This is version 1.031

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.

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 libmpeg2/decode.c find
#define BUFFER_SIZE (1194 * 1024)
and replace it with
#define BUFFER_SIZE (384 * 216 * 2 - 4)
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
RANLIB=~/casio-gcc/bin/sh3eb-elf-gcc-ranlib NM=~/casio-gcc/bin/sh3eb-elf-gcc-nm AR=~/casio-gcc/bin/sh3eb-elf-gcc-ar ./configure --host=sh3eb-elf --build=x86_64-unknown-linux-gnu  CFLAGS="-m4a-nofpu -mb -O2 -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" --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