This works
Code:
static s32 gameSelected = 0, gameStart = 0;
static s32 gameSelected2 = 1;
static s32 gameSelected3 = -1;
void __Menu_ShowGameImage(void)
{
ÂÂÂÂstruct discHdr *header = NULL;
ÂÂÂÂstruct discHdr *header1 = NULL;
ÂÂÂÂstruct discHdr *header2 = NULL;
ÂÂÂÂchar imgPath[100];
ÂÂÂÂchar imgPath2[100];
ÂÂÂÂchar imgPath3[100];
ÂÂÂÂPNGUPROP imgProp;
ÂÂÂÂPNGUPROP imgProp2;
ÂÂÂÂPNGUPROP imgProp3;
ÂÂÂÂIMGCTX ctx;
ÂÂÂÂIMGCTX ctx2;
ÂÂÂÂIMGCTX ctx3;
ÂÂÂÂs32 ret;
ÂÂÂÂs32 ret2;
ÂÂÂÂs32 ret3;
ÂÂÂÂ
ÂÂÂÂ// No game list
ÂÂÂÂif (!gameCnt)
ÂÂÂÂÂÂÂÂreturn;
//Get the disk info struct, which has the disk id we need:
ÂÂÂÂ// Get selected game
ÂÂÂÂheader ÂÂÂÂÂÂÂÂÂÂÂÂ= &gameList[gameSelected];
ÂÂÂÂ
ÂÂÂÂ//Previous Game selected
ÂÂÂÂheader1 ÂÂÂÂÂÂÂÂ= &gameList[gameSelected3];
ÂÂÂÂ
ÂÂÂÂ//Next Game selected
ÂÂÂÂheader2 ÂÂÂÂÂÂÂÂ= &gameList[gameSelected2];
//Create the image path:
ÂÂ
/* Select PNG data - this is the magic line! */
ÂÂÂÂsnprintf(imgPath, sizeof(imgPath), "fat0:/images/%c%c%c%c%c%c.png", ascii(header->id[0]), ascii(header->id[1]), ascii(header->id[2]), ascii(header->id[3]), ascii(header->id[4]), ascii(header->id[5]));
ÂÂÂÂctx = PNGU_SelectImageFromDevice(imgPath);
ÂÂÂÂif (!ctx){
ÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂ}
ÂÂÂÂ
ÂÂÂÂ/* Get image properties */
ÂÂÂÂret = PNGU_GetImageProperties(ctx, &imgProp);
ÂÂÂÂif (ret != PNGU_OK){
ÂÂÂÂÂÂÂÂPNGU_ReleaseImageContext(ctx);
ÂÂÂÂÂÂÂÂ/* No game image available so use default */
ÂÂÂÂÂÂÂÂctx = PNGU_SelectImageFromDevice("fat0:/images/noimage.png");
ÂÂÂÂÂÂÂÂif (!ctx)
ÂÂÂÂÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂÂÂÂÂ/* Get image properties */
ÂÂÂÂÂÂÂÂret = PNGU_GetImageProperties(ctx, &imgProp);
ÂÂÂÂÂÂÂÂif (ret != PNGU_OK)
ÂÂÂÂÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂ}
ÂÂÂÂ
ÂÂÂÂ//Select Previous img
ÂÂÂÂsnprintf(imgPath2, sizeof(imgPath2), "fat0:/images/small%c%c%c%c%c%c.png", ascii(header1->id[0]), ascii(header1->id[1]), ascii(header1->id[2]), ascii(header1->id[3]), ascii(header1->id[4]), ascii(header1->id[5]));
ÂÂÂÂctx2 = PNGU_SelectImageFromDevice(imgPath2);
ÂÂÂÂif (!ctx2){
ÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂ}
ÂÂÂÂ
ÂÂÂÂ/* Get image properties */
ÂÂÂÂret2 = PNGU_GetImageProperties(ctx2, &imgProp2);
ÂÂÂÂif (ret2 != PNGU_OK){
ÂÂÂÂÂÂÂÂPNGU_ReleaseImageContext(ctx2);
ÂÂÂÂÂÂÂÂ/* No game image available so use default */
ÂÂÂÂÂÂÂÂctx2 = PNGU_SelectImageFromDevice("fat0:/images/noimage.png");
ÂÂÂÂÂÂÂÂif (!ctx2)
ÂÂÂÂÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂÂÂÂÂ/* Get image properties */
ÂÂÂÂÂÂÂÂret2 = PNGU_GetImageProperties(ctx2, &imgProp2);
ÂÂÂÂÂÂÂÂif (ret2 != PNGU_OK)
ÂÂÂÂÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂ}
ÂÂÂÂ
ÂÂÂÂ//Select next img
ÂÂÂÂsnprintf(imgPath3, sizeof(imgPath3), "fat0:/images/small%c%c%c%c%c%c.png", ascii(header2->id[0]), ascii(header2->id[1]), ascii(header2->id[2]), ascii(header2->id[3]), ascii(header2->id[4]), ascii(header2->id[5]));
ÂÂÂÂctx3 = PNGU_SelectImageFromDevice(imgPath3);
ÂÂÂÂif (!ctx3){
ÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂ}
ÂÂÂÂ
ÂÂÂÂ/* Get image properties */
ÂÂÂÂret3 = PNGU_GetImageProperties(ctx3, &imgProp3);
ÂÂÂÂif (ret3 != PNGU_OK){
ÂÂÂÂÂÂPNGU_ReleaseImageContext(ctx3);
ÂÂÂÂÂÂÂÂ/* No game image available so use default */
ÂÂÂÂÂÂÂÂctx3 = PNGU_SelectImageFromDevice("fat0://images/noimage.png");
ÂÂÂÂÂÂÂÂif (!ctx3)
ÂÂÂÂÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂÂÂÂÂ/* Get image properties */
ÂÂÂÂÂÂÂÂret3 = PNGU_GetImageProperties(ctx3, &imgProp3);
ÂÂÂÂÂÂÂÂif (ret3 != PNGU_OK)
ÂÂÂÂÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂ}
ÂÂÂÂ
ÂÂÂÂ/* Draw image */
ÂÂÂÂ
ÂÂÂÂ//Draw previous image
ÂÂÂÂVideo_DrawPng(ctx2, imgProp2, 60, 110);
ÂÂÂÂ
ÂÂÂÂ//Draw current image
ÂÂÂÂVideo_DrawPng(ctx, imgProp, 240, 110);
ÂÂÂÂ
ÂÂÂÂ//Draw next image
ÂÂÂÂVideo_DrawPng(ctx3, imgProp3, 420, 110);
ÂÂÂÂ
ÂÂÂÂ/* Free image context */
ÂÂÂÂÂÂ PNGU_ReleaseImageContext(ctx);
ÂÂÂÂPNGU_ReleaseImageContext(ctx2);
ÂÂÂÂPNGU_ReleaseImageContext(ctx3);
ÂÂÂÂ//Get image properties, draw the image, release the context...
}
CODEvoid __Menu_MoveEntry(s8 delta)
{
ÂÂÂÂs32 index;
ÂÂÂÂ/* No game list */
ÂÂÂÂif (!gameCnt)
ÂÂÂÂÂÂÂÂreturn;
ÂÂÂÂÂÂÂÂ
if(delta>0)
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂif(gameSelected == gameCnt - 1)
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected = 0;
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂelse
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected +=delta;
ÂÂÂÂÂÂÂÂÂÂÂÂif(gameSelected >= gameCnt)
ÂÂÂÂÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂgameSelected = (gameCnt - 1);ÂÂÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂ}
ÂÂÂÂelse
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂif(!gameSelected)
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected = gameCnt - 1;ÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂelse
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected +=delta;
ÂÂÂÂÂÂÂÂÂÂÂÂif(gameSelected < 0)
ÂÂÂÂÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂgameSelected = 0;
ÂÂÂÂÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂ}
if(delta>0)
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂif(gameSelected2 == gameCnt - 1)
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected2 = 0;
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂelse
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected2 +=delta;
ÂÂÂÂÂÂÂÂÂÂÂÂif(gameSelected2 >= gameCnt)
ÂÂÂÂÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂgameSelected2 = (gameCnt - 1);ÂÂÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂ}
ÂÂÂÂelse
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂif(!gameSelected2)
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected2 = gameCnt - 1;ÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂelse
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected2 +=delta;
ÂÂÂÂÂÂÂÂÂÂÂÂif(gameSelected2 < 0)
ÂÂÂÂÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂgameSelected2 = 0;
ÂÂÂÂÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂ}
if(delta>0)
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂif(gameSelected3 == gameCnt - 1)
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected3 = 0;
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂelse
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected3 +=delta;
ÂÂÂÂÂÂÂÂÂÂÂÂif(gameSelected3 >= gameCnt)
ÂÂÂÂÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂgameSelected3 = (gameCnt - 1);ÂÂÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂ}
ÂÂÂÂelse
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂif(!gameSelected3)
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected3 = gameCnt - 1;ÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂelse
ÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂgameSelected3 +=delta;
ÂÂÂÂÂÂÂÂÂÂÂÂif(gameSelected3 < 0)
ÂÂÂÂÂÂÂÂÂÂÂÂ{
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂgameSelected3 = 0;
ÂÂÂÂÂÂÂÂÂÂÂÂ}
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂ}
the rest as always
Here the main.c (most likely you need to change the position of the small pictures)
http://www.zshare.net/download/58471270e6bd8d3d/
and the dol
http://www.zshare.net/download/584713972521b836/