Pickle said:
f-cycles, what does your library offer over tried and true libraries like SDL and minlib?
This library support not only 320x240 (default video mode), but allow full range of video
mode from 720x480 (NTSC) or 720x576 (PAL) down to 80x60 (LCD), 96x60 (NTSC) or 96x72 (PAL).
Also, the default video mode has been corrected to enable all pixels on LCD to be display
correctly. Have you notice that there are 7 pixels on the last line on the right that keep
flicker when the last line is not solid? Well, this library configure the MMSP2 in order to
complete full scan of all pixel from the source memory to the LCD.
This library allow developer (especially those working on emulator) to get a Non-Interlaced
TV Output. Where only one field is transmit to the TV. Old machine were sending only 1 field
showing lower resolution but a non-flicker image. This library allow your program to configure
the video output this way!
This library is build using an extended chunk of memory reserved for Video (8 megs), where
you can combine the power of all layers available on GP2X: YUV, SPU, OSD, RGB and Cursor.
All hardware features for these layers can be configure and control via functions provided.
Those hardware features are emulated on PC allowing developer to pass all their time on PC,
while doing minimum of testing moving their file on the SD card to be tested on their GP2X.
The second CPU (940T) has a 6 Megs reserved to process its data (1 meg for code + stack).
Developer can modify the video and second CPU memory dimension as they are defines in
qbr_lowlevellib.h.
Also, the library give you full support for HID devices (keyboard, mouse, gamepad, ...). I
was talking to Rlyeh back in 2007 about my work on accessing and detecting HID devices. From
our discussion it was something that he wanted to add in minlib. I don't know if he did, but
this library does it. One of my goal was to create a game on TV using 2 wireless gamepad.
There are other features: TV Close-Caption, Output to .BMP files, also there is a 16-colors
text renderer which allow developer to easily write something on screen (as easy as writing
text in Basic on C64 but with the power of printf formating).
Dual hardware blitter and dual cpu supported. Also, the cursor which is a 4-bit sprite of
size 32x32 or 64x64, can be reserve and use for volume and pause for your software. By
starting your project using TinyMenu Sample, the developper already has a Main.c
configured to react, pause and display things on screen with this embedded.
For audio, you can found a pre-compiled version of mikmod for GP2X in it (samples\SpaceDemo).
You can see the basic set of functions and macros in:
qbr_lowlevellib.h
Additional functionality are provided in other include files: qbr_basictools.h,
qbr_lowleveldbg.h, qbr_tinymenu.h and qbr_lowlevelcc.h.
For more information, I suggest to download the library and you can try the .gpe or
.exe (under windows, you need to copy SDL.dll from bin directory in system32) files
located in Release directory of each sample. The YUV example is a good example of
what the hardware can do, a scrolling + water effect animation done with 1/4 of
image mirror and stretch in hardware on GP2X (but emulated on PC by the library).
So, in one word.. it's a boosted version of minlib. The only feature which I think people
may want is support for audio via hardware. I was using MikMod for playing song and
sounds effects for my demo and game prototypes.
Regards,