Pickup Line
Have you ever wish there were a better more convenient way to watch videos on the go in 2022? Is high resolution big screen phones with wireless audio headsets just not enough? Today is your lucky day because we will explore the world of video playback on the most advanced mobile platform ever. That is right, i am talking about the mighty Game Boy Advance .
Ways of Getting video on GBA are:
- Game Boy Video
- GBA Movie Player
- Play Yan Micro
Game Boy Video
This is the easiest way, you just go to a videogame store in 2005 and by one of the available titles in this format.
This type of video format is very interesting because it uses new (for the time) storage technology. At the time, gba cartridges used to ship with 32 MB of ROM. However, moves like the one Above would not fit in such small storage. Bigger memories were always possible but prices would rise significantly.
At the time there was this memory startup called Matrix (CNET article here). That was experimenting with something they originally called Matrix 3D memory. that was basically build semiconductors in layers, the ability to increase the size of a memory chip in 3 dimensions rather that 2 help alleviate this problem thus cartridge’s using this technology could incorporate 256 MB of memory.
In the picture above we can see the internals of one of this cartridges, you can se they consist of two chips, the one marked (AGB-M2SE-5) on the leftis the actual 3D memory, it probably contains 256 MB with the Shrek 2 memory in it. The more square chip on the right is a memory controller. This presumably performs two duties, knows how to decode the memory mapping on the memory chip, assuming needs special instructions, and do bank switching for the gba.
lets remember the GBA memory address space is only 24 bits and the word length is 16 bits. Thus it can only directly address 32 MB of memory, making some sort of bank switching control necesary.
The other interesting aspect of this video is that the video format is either uncompressed or have a very light compression, since the chip does not seems to have special hardware for decoding, thus relying completely on the GBA cpu and hardware.
The vide seems to compress on a frame basis, have some artifacts that are very visible and have very low framerate, from what I was able to measure is between 7 to 8 frames. (demo at the end, see the green gameboy screen .
GBA Movie Player
This requires you to have a few things in order to make it work.
- Compatible computer, mine at the time was a VIA C7 at 700 MHZ with widnows XP, which had the computing power of a toaster so. anything will do.
- A CF card, this are the weird cards with an ISA interface
- A CF reader
- the converting software. Which you can get from here. http://www.sozoryoku.us/zip/CrystalEng.rar
This little device I got it when I was probably 15, it was the first thing I ever bought online, and I ordered from the now defunct liksang.com. It seems was manufactured by a company named Movie Advance, probably from china.
This is how the cartridge looks, and curiously, that is the same memory brand and size that I originally acquired for mine.
Internally this has a very similar structure to the GBA video, containing only two chips, the one with the sticker, that I think is the flash memory containing the GBA code, and the black square, which I think is either a memory controller or an FPGA that acts as a memory controller.
I think as a poor mans IP protection they shaved the marks on the square chip so it will require more work to figure out exactly what it was :P.
On the other side there is only the interface for the CF card.
This cartridge can handle very big memories. I tried 2 GB flash card and seems to work with no problems. the original site says it supports FAT32 format, this format can handle memory up to 8 TB in size and I would not be surprised if it could handle a at least 5% of that size. which is still a very respectable 200 GB, haven’t tested it tho. This of course, means it is also implementing some sort of bank switching. I doubt the memory controller has any video decoding capabilities to aid with the video decompression so for this sistem I also asume it is relying entirely on the GBA processor to do any video decompresion.
The Framerate for this device seems to be between 10 and 11 FPS, and the video in high quality has less artifacts although I can see the color pallete being reduced and I see the saturation a bit high. Overall still looks very good. See the demo on the blue gba .
Play Yan Micro
Now we will see the holy grail of portable video devices, the Nintendo Play Yan. This is a product officially released by nintendo.
This is the one that I find the most interesting, it contains 3 ic inside and they shows us a completely different way of addressing the video playback problem.
Here some pictures of it.
The first IC is the alphamosaic VC01PXX-ES2, this is a mpeg decoder from alphamosaic, it is more well known as VC01 (Video Core). This is the first version of Video Core, and the only one released by alphamosaic before being acquired by broadcom. this same chip was used by some samsung phones. seems it supports a resolution of CIF (352×288) and can decompress MP4 video up to 1.5 Mips. Also internally it features an ARM processor presumably over 100 Mhz and 3D capabilities way beyond what the GBA have.
The other two chips are a mystery to me, One may be a memory controller or flash memory, and the other named Epson something something may be a coprocessor to interface with the GBA, but that is just speculation. Also it has a strange limitation, the memory size limit seems to be hard on 1GB. It uses SD cards.
The video in this system is also very interesting, because it has an actual decoder, it supports any valid mp4 file compressed as mpeg4 presumably to resolutions up to 352×288 and then it will be downscaled somewhere.
I personally made test with 240×160 resolution and the lowest compression with is close to lossless mode, resulting in high bitrate, (around 1.2 mips) and big file sizes, (around 400 mb per hour of video). The system worked fine with that and seems to handle 30 fps very well.
Since we are using a decoder in this device, the memory mapping can be different and I guess the video decoding is as follows.
- Decoder decodes frame
- the coprocessor may crop and adjust the frame to gba specs and maps it to a set memory address
- the GBA microcode just reads same memory address over and over again and just displays it.
Because of those possible steps, the GBA actually needs to process very little information, allowing it to potentially display higher framerates and color pallete, since it is no longer in charge of audio or video decompression.
Other point that I didn’t touch yet is audio quality, GBA only contains two 8 bit DAC, meaning the audio quality is effectively 8 bits, which means is very noisy.
the GBA Video and GBAMoviePlayer both rely solely on the GBA audio DAC. The playyan has an audio jack, with a standard 16 bit DAC, which gives CD quality audio. which is a world of difference.
The result is this mode has very visible frame rate, probably close to the 30 fps of my test video, no artifacts since my compression ratio is very low and an amazing color pallete. You can see the demo following the yellow GBA .
For this test, to make it the better possible one, I bought the play yan, got my GBAMoviePlayer from mexico, bought Shrek 2 as GBAVideo and in DVD. Ripped the dvd and convert it with mpeg2 to two different video formats.
For PlayYan
ffmpeg -i VTS_01_1.VOB -ac 2 -c:v mpeg4 -s 240×160 -qscale:v 1 shrek2.mp4
For GBAMoviePlayer
ffmpeg -i VTS_01_1.VOB -ac 2 -c:v libxvid -s 480×320 -qscale:v 1 shrek2.avi
followed by the best quality from the official GBAMoviePlayer converter.
This resulted in 3 files:
- Shrek2.mp4 with a size of 533 MB that I placed in the PlayYan
- Shrek2.GBM with a size of 251 MB containing the video for GBAMoviePlayer
- Shrek2.GBS with a size of 60 MB containing the audio for GBAMoviePlayer
And finally, here are the results of this experiment. Enjoy this video.
Remember
- Yellow (Top Left corner) is PlayYan
- Blue (Top Right corner) is GBA Movie Player
- Green (Bottom Right corner) is Shrek2 GBA Video
That is all, hopefully the video quality is so crappy that the youtube algorithm wont give me a strike. Fingers crossed.
Thanks.