Changes

Jump to navigation Jump to search
4,527 bytes added ,  20:07, 15 April 2008
New page: I am currently coding ( attempting ;-) ) a package of seemingly random bits of code that may server a purpose, may not but, it is just to learn C and have some fun with my wii. ===Code du...
I am currently coding ( attempting ;-) ) a package of seemingly random bits of code that may server a purpose, may not but, it is just to learn C and have some fun with my wii.

===Code dump : ===

<source lang="c">
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <ogcsys.h>
#include <gccore.h>
#include <ogc/ipc.h>
#include <stdarg.h>
#include <ctype.h>
#include <unistd.h>
#include <assert.h>

static void *xfb = NULL;
static GXRModeObj *rmode = NULL;

#include "ios.c"
#include "stm.c"
#include "es.h"

#include "../gfx/music.h"

typedef void (*Loader_Entry)(void);
static u32 *xbb;

Loader_Entry loader = (Loader_Entry)0x80001800;

void clearscreen(void)
{
int y;
for(y=0;y<34;y++)
printf(" \n");
}

void menutext(void)
{
printf("Menu\n");
printf("----\n");
printf("Start + Z = Return to loader\n");
printf("A !! = Elf Loader\n");
printf("B !! = System Utils\n");
printf("Y ! = Fun\n");
printf("X !! = Shutdown Wii\n");
return;
}

void checkAndReload(void) {
PAD_ScanPads();
int buttonsDown = PAD_ButtonsHeld(0);
if( (buttonsDown & PAD_TRIGGER_Z) && (buttonsDown & PAD_BUTTON_START)) {
loader();
}
}

void sysutils(void) {
bool pressed;

pressed=false;

clearscreen();

printf("System Utils Menu\n");
printf("-----------------\n\n");
printf("X = Load IOS37\n");
printf("Y = Load IOS9\n");
printf("B = Go Back\n");
printf("Press A to continue \n");
while((pressed=false)) {
VIDEO_WaitVSync();
PAD_ScanPads();
int buttonsDown = PAD_ButtonsHeld(0);
if (buttonsDown & PAD_BUTTON_X){
__IOS_LaunchNewIOS(37);
pressed=true;
}
if (buttonsDown & PAD_BUTTON_Y){
IOS_ReloadIOS(9);
pressed=true;
}
if (buttonsDown & PAD_BUTTON_B){
pressed=true;
}
}
return;
}

void hello(void)
{
printf("Hello world!\n");
printf("v 0.15");
}

void shutdown(void) {
static u8 stm_inbuf[0x20] ATTRIBUTE_ALIGN(32);
static u8 stm_iobuf[0x20] ATTRIBUTE_ALIGN(32);
int fd;

fd=0;
fd=IOS_Open("/dev/stm/immediate", 2);
IOS_Ioctl(fd, 0x2004, stm_inbuf, 0x20, stm_iobuf, 0x20);
IOS_Close(fd);
}

void fun(void) {
printf("FUN\n");

int ver;
int revma;
int revmi;

ver=IOS_GetVersion();
revma=IOS_GetRevisionMajor();
revmi=IOS_GetRevisionMinor();
printf("IOS Version : %d Revision : %d.%d \n\n", ver, revma, revmi);

printf("Press A to continue\n");
while(1) {
VIDEO_WaitVSync();
PAD_ScanPads();
int buttonsDown = PAD_ButtonsHeld(0);
if (buttonsDown & PAD_BUTTON_A){
clearscreen();
menutext();
return;
}
}
}

void menu(void) {
clearscreen();
menutext();
while(1) {
VIDEO_WaitVSync();
checkAndReload();
PAD_ScanPads();
int buttonsDown = PAD_ButtonsHeld(0);
if (buttonsDown & PAD_BUTTON_Y){
fun();
}
if (buttonsDown & PAD_BUTTON_X){
//shutdown();
}
if (buttonsDown & PAD_BUTTON_B){
//sysutils();
}
if (buttonsDown & PAD_BUTTON_A){
//elfloader();
}
}
}


void start(void) {
PAD_ScanPads();
int buttonsDown = PAD_ButtonsHeld(0);
if(buttonsDown & PAD_BUTTON_START) {
menu();
}
}

int main(int argc, char **argv) {

/****************************************************************************
Initialise Video
Initialise GCPad for input
****************************************************************************/

VIDEO_Init();
PAD_Init();

switch(VIDEO_GetCurrentTvMode()) {
case VI_NTSC:
rmode = &TVNtsc480IntDf;
break;
case VI_PAL:
rmode = &TVPal528IntDf;
break;
case VI_MPAL:
rmode = &TVMpal480IntDf;
break;
default:
rmode = &TVNtsc480IntDf;
break;
}

xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
xbb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);

VIDEO_Configure(rmode);
VIDEO_SetNextFramebuffer(xfb);
VIDEO_SetBlack(FALSE);
VIDEO_Flush();
VIDEO_WaitVSync();
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();

/****************************************************************************
Main code
****************************************************************************/

hello();
printf("\n");
printf("My first native wii homebrew\n");
printf("\n");

while(1) {
VIDEO_WaitVSync();
start();
}

return 0;
}
</source>
569

edits

Navigation menu