Changes

Jump to navigation Jump to search
6,801 bytes removed ,  10:02, 3 May 2008
m
no edit summary
Line 12: Line 12:     
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.
 
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.
  −
If someone can improve it put any improvements in the Updates section at the bottom ;-)
  −
  −
===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>
  −
#include <ogc/ios.h>
  −
#include <ogc/stm.h>
  −
#include <ogc/es.h>
  −
#include <ogc/gu.h>
  −
#include <ogc/usb.h>
  −
#include <bte/bte.h>
  −
  −
static void *xfb = NULL;
  −
static GXRModeObj *rmode = NULL;
  −
  −
#define USB_ALIGN __attribute__ ((aligned(32)))
  −
  −
#define MAX_WIIMOTES 4
  −
  −
#include "GRRLIB.h"
  −
  −
#include "wiiuse.h"
  −
  −
#include "../gfx/music.h"
  −
#include "../gfx/cursor.h"
  −
#include "../gfx/impact.h"
  −
  −
typedef void (*Loader_Entry)(void);
  −
static u32 *xjb;
  −
  −
wiimote** wiimotes;
  −
  −
Loader_Entry loader = (Loader_Entry)0x80001800;
  −
  −
extern u16 *GRRLIB_buffer;
  −
unsigned int buttonA=0;
  −
unsigned int buttonB=0;
  −
unsigned int buttonUp=0;
  −
unsigned int buttonDown=0;
  −
unsigned int buttonLeft=0;
  −
unsigned int buttonRight=0;
  −
unsigned int buttonPlus=0;
  −
unsigned int buttonMinus=0;
  −
unsigned int buttonHome=0;
  −
unsigned int buttonOne=0;
  −
unsigned int buttonTwo=0;
  −
unsigned int rumble=0;
  −
unsigned int irx=0,iry=0;
  −
  −
void wiimote_event(struct wiimote_t* wm, int event)
  −
{
  −
    wiiuse_rumble(wiimotes[0], rumble);
  −
switch (event) {
  −
case WIIUSE_EVENT:
  −
  −
buttonB=0;
  −
buttonA=0;
  −
buttonUp=0;
  −
buttonDown=0;
  −
buttonLeft=0;
  −
buttonRight=0;
  −
buttonPlus=0;
  −
buttonMinus=0;
  −
buttonHome=0;
  −
buttonOne=0;
  −
buttonTwo=0;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_B))
  −
buttonB=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_A))
  −
    buttonA=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_UP))
  −
    buttonUp=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_DOWN))
  −
    buttonDown=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_LEFT))
  −
    buttonLeft=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_RIGHT))
  −
    buttonRight=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_HOME))
  −
    buttonHome=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_ONE))
  −
    buttonOne=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_TWO))
  −
    buttonTwo=1;
  −
  −
if (IS_PRESSED(wm, WIIMOTE_BUTTON_PLUS))
  −
    buttonPlus=1;
  −
  −
if ( IS_PRESSED(wm, WIIMOTE_BUTTON_MINUS))
  −
    buttonMinus=1;
  −
  −
break;
  −
  −
default:
  −
break;
  −
}
  −
  −
}
  −
  −
void hello(void)
  −
{
  −
    printf("    Hello world!\n");
  −
printf("    v 0.45");
  −
}
  −
  −
void menutext(void)
  −
{
  −
    printf("    Menu\n");
  −
printf("    ----\n");
  −
printf("    Home        = Return to loader\n");
  −
printf("    Up  !!      = Elf Loader\n");
  −
printf("    Down !!      = System Utils\n");
  −
printf("    Left !      = Fun\n");
  −
printf("    Right        = Reboot Wii\n");
  −
    return;
  −
}
  −
  −
void clearscreen(void)
  −
{
  −
int y;
  −
    for(y=0;y<34;y++)
  −
printf("                                                                          \n");
  −
}
  −
  −
void checkAndReload(void) {
  −
  if((buttonHome==1)){
  −
    loader();
  −
  }
  −
}
  −
  −
void console(void) {
  −
    xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
  −
xjb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
  −
CON_Init(xfb,20,120,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();
  −
}
  −
  −
void sysutils(void) {
  −
return;
  −
}
  −
  −
void shutdown(void) {
  −
    __STM_Init();
  −
STM_RebootSystem();
  −
__STM_Close();
  −
}
  −
  −
void fun(void) {
  −
  −
    clearscreen();
  −
__STM_Init();
  −
 
  −
    printf("    FUN\n");
  −
printf("    ---\n\n");
  −
  −
int ver;
  −
int revma;
  −
int revmi;
  −
int di_fd;
  −
static u8 stm_inbuf[0x20] ATTRIBUTE_ALIGN(32);
  −
static u8 stm_iobuf[0x20] ATTRIBUTE_ALIGN(32);
  −
  −
ver=IOS_GetVersion();
  −
revma=IOS_GetRevisionMajor();
  −
revmi=IOS_GetRevisionMinor();
  −
    printf("    IOS Version : %d  Revision : %d.%d \n\n", ver, revma, revmi);
  −
  −
  −
di_fd=IOS_Open("/dev/di",1);
  −
    ((u32*)stm_inbuf)[0x00] = 0x70000000;
  −
IOS_Ioctl( di_fd, stm_inbuf[0x00], stm_inbuf, 0x20, stm_iobuf, 0x20);
  −
printf("    DVD ID : %s \n\n",stm_iobuf);
  −
IOS_Close(di_fd);
  −
  −
//GRRLIB_DrawImg(10,50, music_width, music_high, music_img, 0, 1);
  −
//GRRLIB_Render();
  −
  −
printf("    Press + to rumble\n");
  −
printf("    Press - to stop\n\n");
  −
  −
printf("    Press A to continue\n");
  −
while(1) {
  −
VIDEO_WaitVSync();
  −
if ((buttonA==1)){
  −
    console();
  −
            clearscreen();
  −
        menutext();
  −
__STM_Close();
  −
        return;     
  −
    }
  −
if ((buttonPlus==1)){
  −
    rumble=1;
  −
}
  −
if ((buttonMinus==1)){
  −
    rumble=0;
  −
}
  −
}
  −
}
  −
  −
void menu(void) {
  −
    clearscreen();
  −
menutext();
  −
while(1) {
  −
VIDEO_WaitVSync();
  −
    checkAndReload();
  −
if ((buttonLeft==1)){
  −
            fun();
  −
    }
  −
if ((buttonRight==1)){
  −
            shutdown();
  −
    }
  −
if ((buttonDown==1)){
  −
    //sysutils();
  −
}
  −
if ((buttonUp==1)){
  −
    //elfloader();
  −
}
  −
    }
  −
}
  −
  −
  −
void start(void) {
  −
if((buttonB==1)) {
  −
  menu();
  −
}
  −
}
  −
  −
int main(int argc, char **argv) {
  −
  −
    /****************************************************************************
  −
Initialise Video
  −
    Initialise GCPad for input
  −
****************************************************************************/
  −
  −
GRRLIB_buffer=(u16 *)malloc(640*240*2);
  −
  −
VIDEO_Init();
  −
PAD_Init();
  −
  −
//rmode = &TVPal528IntDf;
  −
  −
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;
  −
}
  −
  −
console();
  −
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
  −
  −
printf("    Press 1&2\n\n");
  −
  −
*((u32*)0xcd0000c0) |= 0x100;
  −
bte_init();
  −
bte_start();
  −
wiimotes = wiiuse_init(MAX_WIIMOTES,wiimote_event);
  −
wiiuse_find(wiimotes, MAX_WIIMOTES, 5);
  −
wiiuse_connect(wiimotes, MAX_WIIMOTES);
  −
wiiuse_set_leds(wiimotes[0], WIIMOTE_LED_1);
  −
wiiuse_rumble(wiimotes[0], 1);
  −
usleep(200000); /* 200ms */
  −
wiiuse_rumble(wiimotes[0], 0);
  −
  −
clearscreen();
  −
  −
GRRLIB_InitVideo();
  −
GRRLIB_Start();
  −
GRRLIB_FillScreen(0x0000);
  −
GRRLIB_Render();
  −
  −
console();
  −
  −
    /****************************************************************************
  −
Main code
  −
****************************************************************************/
  −
  −
hello();
  −
printf("\n");
  −
printf("    My first native wii homebrew\n\n");
  −
printf("    Press B :-)\n\n");
  −
  −
while(1) {
  −
VIDEO_WaitVSync();
  −
start();
  −
}
  −
  −
return 0;
  −
}
  −
  −
  −
  −
</source>
  −
  −
== Updates ==
  −
  −
These may be updates/fixes for the code above
  −
* I was able to compile your code.  I think you need the most recent cvs of the libogc use Drack's guide
  −
http://www.tehskeen.com/forums/showthread.php?t=2968
  −
** Thanks for that now i just have an error about usb functions in libbte
  −
Also you should not include .c files in the header.
  −
<source lang="c">
  −
  −
</source>
 
569

edits

Navigation menu