static void wpad_config(u8 num) { int i,j; int max = MAX_KEYS; u8 quit; char msg[30]; u32 current = 255; /* check wiimote status */ if (WPAD_Probe(num, ¤t) != WPAD_ERR_NONE) { WaitPrompt("Wiimote is not connected !"); return; } /* index for wpad_keymap */ u8 index = current + (num * 3); /* loop on each mapped keys */ for (i=0; i<max; i++) { /* remove any pending buttons */ while (WPAD_ButtonsHeld(num)) { WPAD_ScanPads(); VIDEO_WaitVSync(); } /* user information */ ClearScreen(); sprintf(msg,"Press key for %s",keys_name[i]); WriteCentre(254, msg); SetScreen(); /* wait for input */ quit = 0; while (quit == 0) { WPAD_ScanPads(); /* get buttons */ for (j=0; j<20; j++) { if (WPAD_ButtonsDown(num) & wpad_keys[j]) { wpad_keymap[index][i] = wpad_keys[j]; quit = 1; j = 20; /* leave loop */ } } } /* wait for input */ } /* loop for all keys */ /* removed any pending buttons */ while (WPAD_ButtonsHeld(num)) { WPAD_ScanPads(); VIDEO_WaitVSync(); } }
void DrawMenu (char items[][20], int maxitems, int selected) { int i; int ypos; ypos = (330 - (maxitems * fheight)) >> 1; ypos += 90; ClearScreen (); WriteCentre (134, menutitle); for (i = 0; i < maxitems; i++) { if (i == selected) WriteCentre_HL (i * fheight + ypos, (char *) items[i]); else WriteCentre (i * fheight + ypos, (char *) items[i]); } SetScreen (); }
void WriteCentre_HL( int y, char *string) { gx_texture *texture = gxTextureOpenPNG(Overlay_bar_png,0); if (texture) { gxDrawTexture(texture, 0, y-fheight, 640, fheight,240); if (texture->data) free(texture->data); free(texture); } WriteCentre(y, string); }
/******************************* gamepad support *******************************/ static void pad_config(int num, int padtype) { int i,j,max; u16 p; u8 quit; char msg[30]; u32 pad = PAD_ScanPads() & (1<<num); if (!pad) { sprintf(msg, "PAD #%d is not connected !", num+1); WaitPrompt(msg); return; } /* configure keys */ max = (padtype == DEVICE_6BUTTON) ? MAX_KEYS : (MAX_KEYS - 3); for (i=0; i<max; i++) { /* remove any pending keys */ while (PAD_ButtonsHeld(num)) { VIDEO_WaitVSync(); PAD_ScanPads(); } ClearScreen(); sprintf(msg,"Press key for %s",keys_name[i]); WriteCentre(254, msg); SetScreen(); /* check buttons state */ quit = 0; while (quit == 0) { VIDEO_WaitVSync(); PAD_ScanPads(); p = PAD_ButtonsDown(num); for (j=0; j<8; j++) { if (p & pad_keys[j]) { config.pad_keymap[num][i] = pad_keys[j]; quit = 1; j = 9; /* exit loop */ } } } } }
/**************************************************************************** * Rom Info Menu * ****************************************************************************/ void RomInfo () { char msg[128]; int rlen, ypos; ClearScreen (); strcpy (menutitle, ""); ypos = 140; /* Title */ WriteCentre (ypos , "Game Information"); /* Rom name */ ypos += fheight + fheight/2; sprintf(msg,"Internal Name - %s",rom.name); WriteCentre (ypos , msg); /* ROM Size */ rlen = 16384 * mbc.romsize; rlen = rlen / 1024; if ((rlen/1024) == 0) sprintf(msg,"Rom Size - %d Ko",rlen); else sprintf(msg,"ROM Size - %d Mo",rlen/1024); ypos += fheight; WriteCentre (ypos , msg); /* RAM Size */ sprintf(msg,"RAM Size - %d Ko",mbc.ramsize); ypos += fheight; WriteCentre (ypos , msg); /* Type */ ypos += fheight; if (hw.cgb) WriteCentre (ypos , "Type - GameBoy COLOR"); else WriteCentre (ypos , "Type - GameBoy MONO"); /* Memory Controller Type */ switch (mbc.type) { case MBC_NONE: sprintf(msg,"MBC Type - NONE"); break; case MBC_MBC1: sprintf(msg,"MBC Type - MBC1"); break; case MBC_MBC2: sprintf(msg,"MBC Type - MBC2"); break; case MBC_MBC3: sprintf(msg,"MBC Type - MBC3"); break; case MBC_MBC5: sprintf(msg,"MBC Type - MBC5"); break; case MBC_RUMBLE: sprintf(msg,"MBC Type - RUMBLE"); break; case MBC_HUC1: sprintf(msg,"MBC Type - HUC1"); break; case MBC_HUC3: sprintf(msg,"MBC Type - HUC3"); break; } ypos += fheight; WriteCentre ( ypos , msg); /* Internal battery */ ypos += fheight; if (mbc.batt) WriteCentre (ypos , "Internal SRAM Batt. - YES"); else WriteCentre (ypos , "Internal SRAM Batt. - NO"); /* Internal RTC */ ypos += fheight; if (rtc.batt) WriteCentre (ypos , "Internal RTC - YES"); else WriteCentre (ypos , "Internal RTC - NO"); ypos += 2*fheight; WriteCentre (ypos , "Press A to exit"); SetScreen (); WaitButtonA (); }
static void wpad_config(u8 num, u8 exp, u8 padtype) { int i,j,max; u8 quit; char msg[30]; u32 current = 255; /* check wiimote status */ WPAD_Probe(num, ¤t); if (((exp > WPAD_EXP_NONE) && (current != exp)) || (current == 255)) { if (exp == WPAD_EXP_NONE) sprintf(msg, "WIIMOTE #%d is not connected !", num+1); if (exp == WPAD_EXP_NUNCHUK) sprintf(msg, "NUNCHUK #%d is not connected !", num+1); if (exp == WPAD_EXP_CLASSIC) sprintf(msg, "CLASSIC #%d is not connected !", num+1); WaitPrompt(msg); return; } /* index for wpad_keymap */ u8 index = exp + (num * 3); /* loop on each mapped keys */ max = (padtype == DEVICE_6BUTTON) ? MAX_KEYS : (MAX_KEYS - 3); for (i=0; i<max; i++) { /* remove any pending buttons */ while (WPAD_ButtonsHeld(num)) { WPAD_ScanPads(); VIDEO_WaitVSync(); } /* user information */ ClearScreen(); sprintf(msg,"Press key for %s",keys_name[i]); WriteCentre(254, msg); SetScreen(); /* wait for input */ quit = 0; while (quit == 0) { WPAD_ScanPads(); /* get buttons */ for (j=0; j<20; j++) { if (WPAD_ButtonsDown(num) & wpad_keys[j]) { config.wpad_keymap[index][i] = wpad_keys[j]; quit = 1; j = 20; /* leave loop */ } } } /* wait for input */ } /* loop for all keys */ /* removed any pending buttons */ while (WPAD_ButtonsHeld(num)) { WPAD_ScanPads(); VIDEO_WaitVSync(); } }