I've tryed to modify the mr mirko examples trying to put the sprite and zda examples together but no joy. could anyone see what the problem is with the code.
Thanks for looking
Updated to current code yet still no luck.
Code:
// written 2004 Mirko Roller mirko@mirkoroller.de
// Example shows you how to use sprites, and clear the screen...
// The sprites are generated with: bmp2raw -x name.bmp name.raw
#include "gp32.h"
#include "fileio.h"
#include "zda.h"
//extern unsigned char modfile[];
u16 *framebuffer[2];
char swapper=0;
void swap_screen () {
gp_setFramebuffer(framebuffer[swapper],1);
swapper++; if (swapper == 2) swapper=0;
}
int main() {
int spritex=-150;
int x;
int framerate=0;
int refreshrate=0;
char buffer[64]="Framerate: ";
framebuffer[0] = (u16*) FRAMEBUFFER1;
framebuffer[1] = (u16*) FRAMEBUFFER2;
gp_setCpuspeed(133);
u16 *uncompressed;
char header_12bytes[12]; // The ZDA header is always 12 Bytes big
char *full_header; // The full headersize depend on content
char *compressed;
int real_headersize;
int usize,csize,offset,err;
{
smc_read("dev0:\\GPMM\\data.zda",header_12bytes,0,12); // read in the 12 bytes header.
real_headersize=gp_zda_headersize(header_12bytes); // calculate the real headersize
full_header = (char*) malloc(real_headersize); // malloc space for full header
smc_read("dev0:\\GPMM\\data.zda",full_header,0,real_headersize); // read in the full header
csize = gp_zda_csize (full_header, "garfield.raw"); // get compressed size of file
usize = gp_zda_usize (full_header, "garfield.raw"); // get uncompressed size of file
offset = gp_zda_offset(full_header, "garfield.raw"); // get the offset for file, counting from file beginning
compressed = (char*) malloc(csize); // temp buffer for compressed file
uncompressed = (char*) malloc(usize); // buffer for uncompressed data
err=smc_read("dev0:\\GPMM\\data.zda",compressed,offset,csize); // read in the compressed data
err = gp_uncompressZDA( (u8*)uncompressed, &usize, (u8*)compressed, &csize ); // uncompress
}
gp_initRTC();
refreshrate=gp_initFramebuffer(framebuffer[0],16,85);
gp_clearRTC();
while (1) {
// Drawing in Sprite header mode, only usefull if the sprite got a header.
swap_screen();
gp_clearFramebuffer16(framebuffer[swapper],0xffff); // very very fast asm, faster than memset
gp_drawSpriteH (uncompressed, 0, 0, framebuffer[swapper]);
framerate++;
if (gp_getRTC() > 63) {sprintf(buffer,"Zip: %d Unzip:%d ",csize,usize);framerate=0;gp_clearRTC(); }
gp_drawString(20,220,20,buffer,0xffff,framebuffer[swapper]);
if (gp_getButton()&BUTTON_A) gp_Reset();
}
// free all memory
free (full_header);
free (compressed);
free (uncompressed);
}
Thanks for looking
Updated to current code yet still no luck.