Modificar Usb loader v1.1s Fuente

estoy intentando modificar y mejorar el usb loader , pero no se porque se estira la imagen , he cogido el codigo fuente del 1.1s la he traducido le insertado la foto , he creado el canal .... ital
pero mi sorpresa es que se estira , estoy en HDtv .

imagen para crear el canal

Imagen

imagen para crear el DOl

Imagen

codigo de menu.c traducido al español
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <ogcsys.h>

#include "disc.h"
#include "menu.h"
#include "partition.h"
#include "restart.h"
#include "sys.h"
#include "utils.h"
#include "video.h"
#include "wbfs.h"
#include "wpad.h"

/* Constants */
#define ENTRIES_PER_PAGE   21
#define MAX_CHARACTERS      38

/* Gamelist variables */
static struct discHdr *gameList = NULL;

static u32 gameCnt = 0;
static s32 gameSelected = 0, gameStart = 0;


s32 __Menu_EntryCmp(const void *a, const void *b)
{
   struct discHdr *hdr1 = (struct discHdr *)a;
   struct discHdr *hdr2 = (struct discHdr *)b;

   /* Compare strings */
   return stricmp(hdr1->title, hdr2->title);
}

s32 __Menu_GetEntries(void)
{
   struct discHdr *buffer = NULL;

   u32 cnt, len;
   s32 ret;

   /* Get list length */
   ret = WBFS_GetCount(&cnt);
   if (ret < 0)
      return ret;

   /* Buffer length */
   len = sizeof(struct discHdr) * cnt;

   /* Allocate memory */
   buffer = (struct discHdr *)memalign(32, len);
   if (!buffer)
      return -1;

   /* Clear buffer */
   memset(buffer, 0, len);

   /* Get header list */
   ret = WBFS_GetHeaders(buffer, cnt, sizeof(struct discHdr));
   if (ret < 0)
      goto err;

   /* Sort entries */
   qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);

   /* Free memory */
   if (gameList)
      free(gameList);

   /* Set values */
   gameList = buffer;
   gameCnt  = cnt;

   /* Reset variables */
   gameSelected = gameStart = 0;

   return 0;

err:
   /* Free memory */
   if (buffer)
      free(buffer);

   return ret;
}

void __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;
         }
      }
   }

   /* List scrolling */
   index = (gameSelected - gameStart);

   if (index >= ENTRIES_PER_PAGE)
      gameStart += index - (ENTRIES_PER_PAGE - 1);
   if (index <= -1)
      gameStart += index;
}

char *__Menu_PrintTitle(char *name)
{
   static char buffer[MAX_CHARACTERS + 1];
   memset(buffer, 0, sizeof(buffer));
   strncpy(buffer, name,  MAX_CHARACTERS);
   return buffer;
}

void __Menu_PrintInfo(struct discHdr *header)
{
   f32 size = 0.0;

   /* Get game size */
   WBFS_GameSize(header->id, &size);

   /* Print game info */
   printf("    %s\n", header->title);
   printf("    (%c%c%c%c) (%.2fGB)\n\n", header->id[0], header->id[1], header->id[2], header->id[3], size);
}

void __Menu_PrintEntries(void)
{
   u32 cnt;

   /* No game list*/
   if (!gameCnt) {
      printf("\t>> No se han encontrado juegos!!\n\n");
      return;
   }

   /* Print game list */
   for (cnt = gameStart; cnt < gameCnt; cnt++) {
      struct discHdr *header = &gameList[cnt];

      /* Entries per page limit reached */
      if ((cnt - gameStart) >= ENTRIES_PER_PAGE)
         break;

      /* Print entry */
      printf(" %2s %s\n", (gameSelected == cnt) ? ">>" : "  ", __Menu_PrintTitle(header->title));
   }

   printf("\n");
}

void __Menu_Controls(void)
{
   u32 buttons = Wpad_WaitButtons();

   /* UP/DOWN buttons */
   if (buttons & WPAD_BUTTON_UP)
      __Menu_MoveEntry(-1);

   if (buttons & WPAD_BUTTON_DOWN)
      __Menu_MoveEntry(1);

   /* LEFT/RIGHT buttons */
   if (buttons & WPAD_BUTTON_LEFT)
      __Menu_MoveEntry((gameSelected-gameStart == 0) ? -ENTRIES_PER_PAGE : -(gameSelected-gameStart));

   if (buttons & WPAD_BUTTON_RIGHT)
      __Menu_MoveEntry((gameSelected-gameStart == (ENTRIES_PER_PAGE - 1)) ? ENTRIES_PER_PAGE : ENTRIES_PER_PAGE - (gameSelected-gameStart) - 1);

   /* HOME button */
   if (buttons & WPAD_BUTTON_HOME)
      Restart();

#ifndef SIMPLE_MODE

   /* PLUS (+) button */
   if (buttons & WPAD_BUTTON_PLUS)
      Menu_Install();

   /* MINUS (-) button */
   if (buttons & WPAD_BUTTON_MINUS)
      Menu_Remove();

#endif

   /* A button */
   if (buttons & WPAD_BUTTON_A)
      Menu_Boot();
}


void Menu_Format(void)
{
   partitionEntry partitions[MAX_PARTITIONS];

   u32 cnt, sector_size;
   s32 ret, selected = 0;

   /* Clear console */
   Con_Clear();

   /* Get partition entries */
   ret = Partition_GetEntries(partitions, &sector_size);
   if (ret < 0) {
      printf("[+] ERROR: No se han encontrado particiones! (ret = %d)\n", ret);

      /* Restart */
      Restart_Wait();
   }

loop:
   /* Clear console */
   Con_Clear();

   printf("[+] Escoge la particion que quieres \n");
   printf("    formatear:\n\n");

   /* Print partition list */
   for (cnt = 0; cnt < MAX_PARTITIONS; cnt++) {
      partitionEntry *entry = &partitions[cnt];

      /* Calculate size in gigabytes */
      f32 size = entry->size * (sector_size / GB_SIZE);

      /* Selected entry */
      (selected == cnt) ? printf(">> ") : printf("   ");
      fflush(stdout);

      /* Valid partition */
      if (size)
         printf("Partition #%d: (tamaño = %.2fGB)\n",       cnt + 1, size);
      else
         printf("Partition #%d: (no puede formatearse)\n", cnt + 1);
   }

   partitionEntry *entry = &partitions[selected];
   u32           buttons = Wpad_WaitButtons();

   /* UP/DOWN buttons */
   if (buttons & WPAD_BUTTON_UP) {
      if ((--selected) <= -1)
         selected = MAX_PARTITIONS - 1;
   }

   if (buttons & WPAD_BUTTON_DOWN) {
      if ((++selected) >= MAX_PARTITIONS)
         selected = 0;
   }

   /* B button */
   if (buttons & WPAD_BUTTON_B)
      return;

   /* Valid partition */
   if (entry->size) {
      /* A button */
      if (buttons & WPAD_BUTTON_A)
         goto format;
   }

   goto loop;

format:
   /* Clear console */
   Con_Clear();

   printf("[+] Estas seguro que desear formatear\n");
   printf("    esta particion?\n\n");

   printf("    Partition #%d\n",                  selected + 1);
   printf("    (tamaño = %.2fGB - type: %02X)\n\n", entry->size * (sector_size / GB_SIZE), entry->type);

   printf("    Presiona el boton A para continuar.\n");
   printf("    Presiona el boton B para volver.\n\n\n");

   /* Wait for user answer */
   for (;;) {
      u32 buttons = Wpad_WaitButtons();

      /* A button */
      if (buttons & WPAD_BUTTON_A)
         break;

      /* B button */
      if (buttons & WPAD_BUTTON_B)
         goto loop;
   }

   printf("[+] Formateando, por favor espere...");
   fflush(stdout);

   /* Format partition */
   ret = WBFS_Format(entry->sector, entry->size);
   if (ret < 0) {
      printf("\n    ERROR! (ret = %d)\n", ret);
      goto out;
   } else
      printf(" OK!\n");

out:
   printf("\n");
   printf("    Presiona cualquier tecla para continuar...\n");

   /* Wait for any button */
   Wpad_WaitButtons();
}

void Menu_Install(void)
{
   static struct discHdr header ATTRIBUTE_ALIGN(32);

   s32 ret;

   /* Clear console */
   Con_Clear();

   printf("[+] Estas seguro que quieres instalar a\n");
   printf("    un nuevo juego?\n\n");

   printf("    Presiona el boton A para continuar.\n");
   printf("    Presiona el boton B para volver.\n\n\n");

   /* Wait for user answer */
   for (;;) {
      u32 buttons = Wpad_WaitButtons();

      /* A button */
      if (buttons & WPAD_BUTTON_A)
         break;

      /* B button */
      if (buttons & WPAD_BUTTON_B)
         return;
   }

   /* Disable USB mode */
   Disc_SetUSB(NULL);

   printf("[+] Inserta el DVD del juego...");
   fflush(stdout);

   /* Wait for disc */
   ret = Disc_Wait();
   if (ret < 0) {
      printf("\n    ERROR! (ret = %d)\n", ret);
      goto out;
   } else
      printf(" OK!\n");

   printf("[+] Cargando el disco DVD...");
   fflush(stdout);

   /* Open disc */
   ret = Disc_Open();
   if (ret < 0) {
      printf("\n    ERROR! (ret = %d)\n", ret);
      goto out;
   } else
      printf(" OK!\n\n");

   /* Check disc */
   ret = Disc_IsWii();
   if (ret < 0) {
      printf("[+] ERROR: No es un disco de WII!!\n");
      goto out;
   }

   /* Read header */
   Disc_ReadHeader(&header);

   /* Check if game is already installed */
   ret = WBFS_CheckGame(header.id);
   if (ret) {
      printf("[+] ERROR: El juego ya esta instalado!!\n");
      goto out;
   }

   printf("[+] Instalando el juego, por favor espere...\n\n");

   printf("    %s\n",           header.title);
   printf("    (%c%c%c%c)\n\n", header.id[0], header.id[1], header.id[2], header.id[3]);

   /* Install game */
   ret = WBFS_AddGame();
   if (ret < 0) {
      printf("[+] ERROR en la instalacion! (ret = %d)\n", ret);
      goto out;
   }

   /* Reload entries */
   __Menu_GetEntries();

out:
   printf("\n");
   printf("    Presione cualquier tecla para continuar...\n");

   /* Wait for any button */
   Wpad_WaitButtons();
}

void Menu_Remove(void)
{
   struct discHdr *header = NULL;

   s32 ret;

   /* No game list */
   if (!gameCnt)
      return;

   /* Selected game */
   header = &gameList[gameSelected];

   /* Clear console */
   Con_Clear();

   printf("[+] Estas seguro que deseas eliminar\n");
   printf("    este juego?\n\n");

   /* Show game info */
   __Menu_PrintInfo(header);

   printf("    Presiona el boton A para continuar.\n");
   printf("    Presiona el boton B para volver.\n\n\n");

   /* Wait for user answer */
   for (;;) {
      u32 buttons = Wpad_WaitButtons();

      /* A button */
      if (buttons & WPAD_BUTTON_A)
         break;

      /* B button */
      if (buttons & WPAD_BUTTON_B)
         return;
   }

   printf("[+] Eliminando el juego, por favor espere...");
   fflush(stdout);

   /* Remove game */
   ret = WBFS_RemoveGame(header->id);
   if (ret < 0) {
      printf("\n    ERROR! (ret = %d)\n", ret);
      goto out;
   } else
      printf(" OK!\n");

   /* Reload entries */
   __Menu_GetEntries();

out:
   printf("\n");
   printf("    Presiona cualquier tecla para continuar...\n");

   /* Wait for any button */
   Wpad_WaitButtons();
}

void Menu_Boot(void)
{
   struct discHdr *header = NULL;

   s32 ret;

   /* No game list */
   if (!gameCnt)
      return;

   /* Selected game */
   header = &gameList[gameSelected];

   /* Clear console */
   Con_Clear();

#ifdef SIMPLE_MODE
   printf("\n");

   /* Show game info */
   __Menu_PrintInfo(header);

   printf("\n\n");

#else
   printf("[+] Estas seguro de cargar este juego?\n");
   printf("    este juego?\n\n");

   /* Show game info */
   __Menu_PrintInfo(header);

   printf("    Presiona el boton A para continuar.\n");
   printf("    Presiona el boton B para volver.\n\n\n");

   /* Wait for user answer */
   for (;;) {
      u32 buttons = Wpad_WaitButtons();

      /* A button */
      if (buttons & WPAD_BUTTON_A)
         break;

      /* B button */
      if (buttons & WPAD_BUTTON_B)
         return;
   }

#endif

   printf("[+] Ejecutando el juego de Wii, por favor espere...\n");

   /* Set USB mode */
   Disc_SetUSB(header->id);

   /* Open disc */
   ret = Disc_Open();
   if (ret < 0) {
      printf("    ERROR: No se a podido ejecutar el juego! (ret = %d)\n", ret);
      goto out;
   }

   /* Boot Wii disc */
   Disc_WiiBoot();

   printf("    Returned! (ret = %d)\n", ret);

out:
   printf("\n");
   printf("    Presiona cualquier tecla para continuar...\n");

   /* Wait for button */
   Wpad_WaitButtons();
}


void Menu_Loop(void)
{
   s32 ret;

   /* Open USB device */
   ret = WBFS_Open();

   /* Show warning */
   if (ret < 0) {
      /* Clear console */
      Con_Clear();

      printf("[+] ERROR:\n\n");

      printf("    no se ha encontrado particion WBFS!\n");
      printf("    Necesitas crear una.\n\n");

#ifndef SIMPLE_MODE
      printf("    Presiona el boton A para formatear una particion.\n");
#endif
      printf("    Presiona el boton B para reiniciar.\n\n");

      /* Wait for user answer */
      for (;;) {
         u32 buttons = Wpad_WaitButtons();

#ifndef SIMPLE_MODE
         /* A button */
         if (buttons & WPAD_BUTTON_A)
            break;
#endif

         /* B button */
         if (buttons & WPAD_BUTTON_B)
            Restart();
      }

#ifndef SIMPLE_MODE
      /* Format device */
      Menu_Format();

      /* Reopen USB device */
      WBFS_Open();
#endif
   }

   /* Get game list */
   __Menu_GetEntries();

   /* Menu loop */
   for (;;) {
      f32 free, used;

      /* Clear console */
      Con_Clear();

      /* Get free space */
      WBFS_DiskSpace(&used, &free);

      printf("[+] Escoje el juego que quieres ejecutar:\n\n");

      /* Print game list */
      __Menu_PrintEntries();

      printf("[+] Esp. Usado: %.2fGB, Libre: %.2fGB", used, free);

      /* Controls */
      __Menu_Controls();
   }
}
0 respuestas