Difference between revisions of "User talk:TPAINROXX/WiiMoveIt"

From WiiBrew
Jump to: navigation, search
(Help - added ...)
Line 26: Line 26:
 
-->
 
-->
  
==Code (for corrections and help)==
+
==Source Code==
'''Code as of 6-28-09.
+
'''Code as of 7-11-09.
  
Currently the program doesn't work: either a blank screen or code dump.'''
+
Recoded. The only problem is the code dump I get when trying to use exit_menu(), but nothing major.''' I know there's some weird stuff going on, but I just wanted to update for current progress. Also some tests/debugging are included, but won't be in demo/release.
  
 +
 +
''' ''main.cpp'' '''
 
<source lang=cpp>
 
<source lang=cpp>
 +
/***********************************************/
 +
/*      WiiMoveIt - By Brandon Whitmire      */
 +
/*          Powered Using GRRLIB 4.0.0        */
 +
/***********************************************/
  
/*=========================================================
+
#include "games.hpp"
WARNING: Working file; be carful with editing.
 
  
WiiMoveIt - By: Brandon Whitmire
+
#ifndef __VER__
 +
#define __VER__ "1.0 DEMO"
 +
#endif
  
Thanks for GRRLIB, and to NoNameNo and Crayon for GRRLIB help.
+
int main()
//=========================================================
+
{
GRRLIB Download and Help Forum : http://grrlib.santo.fr
+
WiiLightOn();
*///=======================================================
+
 
//    START FILE INCLUSION
+
GRRLIB_Init();
 +
 +
WPAD_Init();
 +
 
 +
GRRLIB_texImg tex_font1 = GRRLIB_LoadTexture(font1);
 +
    GRRLIB_InitTileSet(&tex_font1, 32, 32, 32);
 +
 +
GRRLIB_Printf(300, 30, tex_font1, LIME, 2, "LOADING...");
 +
 +
GRRLIB_Render();
 +
 +
WPAD_SetDataFormat(WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR);
 +
 +
WPAD_SetVRes(0, 640, 480);
 +
 +
time(&start_time);
 +
 +
while(1)  //This displays the version and other version data.
 +
{
 +
clrscr();
 +
 +
GRRLIB_Printf(15, 30, tex_font1, AQUA, 1, "VERSION v%s", __VER__);
 +
 +
GRRLIB_Printf(15, 180, tex_font1, AQUA, 1, "DATE: %s", __DATE__);
 +
 +
GRRLIB_Printf(15, 330, tex_font1, AQUA, 1, "TIME: %s", __TIME__);
 +
 +
GRRLIB_Printf(380, 10, tex_font1, LIME, 2, "WIIMOVEIT");
 +
 +
GRRLIB_Render();
 +
 +
time(&cur_time);
 +
 +
if ( (cur_time - start_time) > 5 )
 +
{break;}
 +
 +
WPAD_ScanPads();
 +
 +
if  (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS)
 +
{break;}
 +
}
 +
 
 +
free(tex_font1.data);
 +
 +
intro();
 +
 +
exit_menu();
 +
 +
    GRRLIB_InitTileSet(&tex_font1, 32, 32, 32);
 +
 +
time(&start_time);
 +
 +
while(1) 
 +
{
 +
GRRLIB_FillScreen(BLACK);
 +
 +
GRRLIB_Printf(15, 30, tex_font1, AQUA, 1, "YOU CANCELLED!");
 +
 +
GRRLIB_Render();
 +
 +
time(&cur_time);
 +
 +
if ( (cur_time - start_time) > 5 )
 +
{break;}
 +
 +
WPAD_ScanPads();
 +
 +
if  (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS)
 +
{break;}
 +
}
 +
 +
free(tex_font1.data);
 +
 +
GRRLIB_Exit();
 +
 +
WiiLightOff();
 +
 +
return 0;
 +
}
 +
</source>
 +
 
 +
''' ''games.hpp'' '''
 +
<source lang=cpp>
 +
//---------------------------------------------------------
 +
//    games.cpp - Includes basic game engine/thing.
 +
//---------------------------------------------------------
 +
/*********************************************************/
 +
//---------------------------------------------------------
 +
//    GRRLIB - So Important it has its own spot....
 
//---------------------------------------------------------
 
//---------------------------------------------------------
//    Important Files & Headers
 
///////////////////////////////////////////////////////////
 
//To switch between version because SVN doesn't always work.
 
//Or I don't know how to use it (mostly this is the problem).
 
  
// #include "GRRLIB/GRRLIB/GRRLIB.h" //Version packed with GRRLIB 4.0.0
+
#include "GRRLIB/GRRLIB/GRRLIB.h" //Version packed with GRRLIB 4.0.0
 +
 
 +
//---------------------------------------------------------
 +
//    Regular Headers and Such
 +
//---------------------------------------------------------
  
#include "GRRLIB/SVN/GRRLIB.h"    //SVN Version; rev101.
 
 
///////////////////////////////////////////////////////////
 
 
#include <cstdlib>
 
#include <cstdlib>
 
#include <time.h> //For time comparison.
 
#include <time.h> //For time comparison.
Line 60: Line 152:
 
#include <iostream>  //May not be used; for basic output (originally).
 
#include <iostream>  //May not be used; for basic output (originally).
 
using namespace std;
 
using namespace std;
 +
 +
//=========================================================
 +
//    Start All File Inclusion
 +
//=========================================================
 +
 +
#include "fonts/font1.h"
 +
#include "fonts/font2.h"
 +
#include "fonts/font3.h"
  
 
//---------------------------------------------------------
 
//---------------------------------------------------------
//    Start All File Inclusion
+
//    Credits/Intro
 
//---------------------------------------------------------
 
//---------------------------------------------------------
  
#include "credits/intro.h"
+
#include "credits/BKGD.h"
#include "fonts/font.h"
+
#include "credits/GRRLIB.h"
 +
#include "credits/Wilber.h"
 +
#include "credits/BKW2.h"
 +
#include "credits/Devkitlogo.h"
  
 
//---------------------------------------------------------
 
//---------------------------------------------------------
//    For Regular Menu (aka "Lights Off")
+
//    Menu
 
//---------------------------------------------------------
 
//---------------------------------------------------------
  
#include "gfx/pointer1.h"
+
#include "Menu/Pointer.h"
  
#include "gfx/menu_pix/menu.h"
+
#include "Menu/WiiMoveIt.h"
  
#include "gfx/menu_pix/button1.h"
+
#include "Menu/Exit.h"
#include "gfx/menu_pix/button2.h"
 
#include "gfx/menu_pix/button3.h"
 
  
//---------------------------------------------------------
+
#include "Menu/Buttons/BButton.h"
//     For Inverted Menu (aka "Lights On")
+
#include "Menu/Buttons/WButton.h"
//---------------------------------------------------------
 
  
#include "gfx/pointer1_i.h"
+
#include "Menu/Buttons/Start.h"
 +
#include "Menu/Buttons/Options.h"
 +
#include "Menu/Buttons/Exit.h"
  
#include "gfx/menu_pix/menu_i/menu_i.h"
+
#include "Menu/Buttons/Button.h"
  
#include "gfx/menu_pix/menu_i/button1_i.h"
+
#include "Menu/Highlight.h"
#include "gfx/menu_pix/menu_i/button2_i.h"
+
#include "Menu/Highlight2.h"
#include "gfx/menu_pix/menu_i/button3_i.h"
 
  
 
//---------------------------------------------------------
 
//---------------------------------------------------------
Line 96: Line 197:
 
//---------------------------------------------------------
 
//---------------------------------------------------------
  
#include "gfx/menu_pix/options/options.h"
+
/***
#include "gfx/menu_pix/options/button.h"
+
  *
 +
  *
 +
  *
 +
  *TO BE CODED LATER
 +
  *
 +
  *
 +
  *
 +
***/
  
 
//---------------------------------------------------------
 
//---------------------------------------------------------
Line 126: Line 234:
 
//Game 5 - The Square
 
//Game 5 - The Square
  
//---------------------------------------------------------
+
//Game 6 - Fix TV
 +
 
 +
//=========================================================
 +
//
 
//    END OF FILE INCLUSION
 
//    END OF FILE INCLUSION
//---------------------------------------------------------
+
//
///////////////////////////////////////////////////////////
+
//=========================================================
//---------------------------------------------------------
 
 
//    Important Variables and Functions
 
//    Important Variables and Functions
//---------------------------------------------------------
+
//=========================================================
 
 
void GRRLIB_FreeTexture(struct GRRLIB_texImg *tex)  //Declared here because of errors relating to not being declared.
 
{ //This is still part of GRRLIB, though.
 
    free(tex->data);
 
    free(tex);
 
    tex = NULL;
 
}
 
  
 
//Easy color codes from Crayon...
 
//Easy color codes from Crayon...
Line 160: Line 263:
 
#define WHITE  0xFFFFFFFF
 
#define WHITE  0xFFFFFFFF
  
void clrscr()
+
Mtx GXmodelView2D;  //Needed for GRRLIB
 +
 
 +
void clrscr()       //"Clears Screen"...
 
{GRRLIB_FillScreen(BLACK);}
 
{GRRLIB_FillScreen(BLACK);}
 
Mtx GXmodelView2D;  //Needed for GRRLIB
 
  
 
//Wiimote 1
 
//Wiimote 1
ir_t ir1;  //IR Movement
+
ir_t ir1;  //IR Movement
 
 
orient_t or1;  //Orientation Movement
+
orient_t or1;  //Orientation Movement
  
time_t start_time, cur_time;  //Time delays/comparisons; may not be used.
+
time_t start_time, cur_time;  //Time delays/comparisons.
  
bool normal_menu  = true; //If true then the it will be "Lights Off" for the menu.
+
//Wii Light - Thanks to Crayon... again...
  
//---------------------------------------------------------
+
static vu32 *_wiilight_reg = (u32*)0xCD0000C0;
//    Rumble for IR Pointer Going Over a Button
 
//---------------------------------------------------------
 
  
bool do_rumble = true; //This is so the Wiimote only rumbles one time if it's on a button.
+
void WiiLightOff()
 +
{
 +
    *_wiilight_reg &= ~0x20;
 +
}
  
void rumble(u32 remote_channel)
+
void WiiLightOn()
 
{
 
{
if (do_rumble == true)
+
    *_wiilight_reg |= 0x20;
{
 
WPAD_Rumble(remote_channel, 1);
 
 
usleep(25000);
 
 
WPAD_Rumble (remote_channel, 0);
 
 
do_rumble = false;
 
}
 
 
}
 
}
  
 
//---------------------------------------------------------
 
//---------------------------------------------------------
//    Game and Score Functions and Variables
+
//    Simple IR Comparison Function; Faster to Code
 
//---------------------------------------------------------
 
//---------------------------------------------------------
  
#define GAME_NUM  1 //Number of [WORKING] games.
+
bool IRposition (int IRx1, int IRy1, int IRx2, int IRy2, ir_t IR_T)
#define WIN      true   //A constant to help with "Win/Lose Game" instead of "True/False Game".
+
/*                Min X    Min Y    Max X    Max Y    IR Struct (i.e. ir1)
#define LOSE   false  // "ditto"
+
Return true if a point lies within specified coodinates based off the IR.*/
 +
{return ((IRx1 <= IR_T.x) && (IRx2 >= IR_T.x) && (IRy1 <= IR_T.y) && (IRy2 >= IR_T.y));}
  
int  game_score = 0;  //Actual game score.
+
//---------------------------------------------------------
int  game_life  = 5;  //Make lives variable depending on difficulty/options.
+
//     Exit Function - GUI Version
bool game;   //This either increases your score or decreases your lives based on game performance.
+
//---------------------------------------------------------
bool game_easy = true;//The easy/hard difficulty variable.
 
  
void score()
+
void exit_menu()
{
+
{
/*
+
GRRLIB_texImg tex_Pointer = GRRLIB_LoadTexture(Pointer);
THIS IS GOOD IF YOU ARE NOT FAMILIAR WITH printf AND RELATED.
+
GRRLIB_texImg tex_Exit = GRRLIB_LoadTexture(Exit);
NORMALLY, I USE cout AND cin INSTEAD OF printf AND scanf.
+
GRRLIB_texImg tex_Highlight = GRRLIB_LoadTexture(Highlight);
 +
GRRLIB_texImg tex_Highlight2 = GRRLIB_LoadTexture(Highlight2);
  
EXCERPTED FROM DEV-CPP HELP ON INPUT/OUTPUT IN C.
+
while(1)
 
+
{
The % Format Specifiers:
+
GRRLIB_FillScreen(SILVER);
 
 
The % specifiers that you can use in ANSI C are:
 
 
 
      Usual variable type          Display
 
 
 
%c        char                    single character
 
%d (%i)   int                      signed integer
 
%e (%E)  float or double          exponential format
 
%f        float or double          signed decimal
 
%g (%G)  float or double          use %f or %e as required
 
%o        int                      unsigned octal value
 
 
 
%p        pointer                  address stored in pointer
 
%s        array of char            sequence of characters
 
%u        int                      unsigned decimal
 
%x (%X)  int                      unsigned hex value
 
*/
 
clrscr();
 
 
 
GRRLIB_texImg *tex_font = GRRLIB_LoadTexture(font);
+
GRRLIB_DrawImg(0, 0, tex_Exit, 0, 1, 1, SILVER);
GRRLIB_InitTileSet(tex_font, 16, 16, 32);
 
 
 
GRRLIB_Printf(100, 100, tex_font, BLACK, 2, "SCORE: %d", game_score );
+
WPAD_IR(WPAD_CHAN_0, &ir1);
 +
WPAD_Orientation(WPAD_CHAN_0, &or1); 
 +
 +
GRRLIB_DrawImg(ir1.x, ir1.y, tex_Pointer, or1.roll, ir1.z, ir1.z, SILVER);
 
 
GRRLIB_Printf(100, 175, tex_font, BLACK, 2, "LIVES: %d", game_life);
+
WPAD_ScanPads();
 
GRRLIB_Printf(100, 250, tex_font, BLACK, 2, (game_easy == true ? "DIFFICULTY: EASY" : "DIFFICULTY: HARD") );
 
 
GRRLIB_Render();
 
 
usleep(3000000);
 
 
GRRLIB_FreeTexture(tex_font);
 
 
 
clrscr();
+
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_HOME)//  Cancel
}
+
{break;}
 
 
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 
//    Main Game Program
 
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
 
 
void GAME()
 
{
 
clrscr();
 
 
//For All Games | Win & Lose |
 
GRRLIB_texImg *tex_Game_Win  = GRRLIB_LoadTexture(Game_Win);
 
GRRLIB_texImg *tex_Game_Lose  = GRRLIB_LoadTexture(Game_Lose);
 
GRRLIB_texImg *tex_Game_Over = GRRLIB_LoadTexture(Game_Over);
 
 
bool game_played[GAME_NUM];
 
 
 
for (int game_count = 1; game_count <= GAME_NUM; game_count++)  //This is to keep track of which games have been played
+
else if ( IRposition (476, 61, 625, 210, ir1) )  //Cancel
{game_played[game_count - 1] = false;}  //in a session.
 
 
 
while(1)
 
{
 
srand((unsigned)time(0)); //Generates a random number then starts a random game based off that number.
 
int random = ( (rand() % GAME_NUM)+1);
 
 
for (int game_count = 1; game_count <= GAME_NUM; game_count++)
 
 
{
 
{
if (game_played[game_count - 1] == true)
+
GRRLIB_DrawImg(476, 61, tex_Highlight, 0, 1, 1, SILVER);
{continue;} //If game has been played then it will go back to the beginning of the loop.
+
 +
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
 +
{break;}
 
}
 
}
//.........................................................
+
if (random == 1)
+
else if ( IRposition (16, 61, 165, 210, ir1) ) //To Wii Menu.
 
{
 
{
GRRLIB_texImg *tex_thing      = GRRLIB_LoadTexture(thing);
+
GRRLIB_DrawImg(16, 61, tex_Highlight, 0, 1, 1, SILVER);
GRRLIB_texImg *tex_game1_start = GRRLIB_LoadTexture(game1_start);
+
GRRLIB_texImg *tex_game1_play  = GRRLIB_LoadTexture(game1_play);
+
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
+
{SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);}
while(1)
 
{
 
GRRLIB_DrawImg(0, 0, tex_game1_start, 0, 1, 1, BLACK);
 
 
GRRLIB_DrawImg(ir1.x - (32), ir1.y - (26), tex_thing, or1.roll, ir1.z, ir1.z, BLACK);
 
 
GRRLIB_Render();
 
 
clrscr();
 
/*
 
if () //These are conditionals for declaring whether or not the game is won.
 
{game = WIN;}
 
 
else if ()
 
{game = LOSE;}
 
*/
 
}
 
 
game_played[0] = true;  //Game has been played.
 
 
GRRLIB_FreeTexture (tex_thing);
 
GRRLIB_FreeTexture (tex_game1_start);
 
GRRLIB_FreeTexture (tex_game1_play);
 
 
}
 
}
//.........................................................
+
/* else if (random == 2)
+
else if ( IRposition (221, 61, 420, 260, ir1) ) //To Loader.
{}
 
 
else if (random == 3)
 
{}
 
 
else if (random == 4)
 
{}
 
*/
 
if (game == WIN)
 
 
{
 
{
game_score++;
+
GRRLIB_DrawImg(221, 61, tex_Highlight2, 0, 1, 1, SILVER); //Box is slightly bigger.
+
GRRLIB_DrawImg( 0, 0, tex_Game_Win, 0, 1, 1, BLACK);
+
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)   
+
{exit(0);}  
if ( (game_score % 10) == 0 //You get an extra life for every 10 pts attained.
 
{game_life++;}
 
 
}
 
}
+
else if (game == LOSE)
+
else if ( IRposition (96, 271, 245, 420, ir1) ) //Turn off Wii.
 
{
 
{
game_life--;
+
GRRLIB_DrawImg(96, 271, tex_Highlight, 0, 1, 1, SILVER);
+
GRRLIB_DrawImg( 0, 0, tex_Game_Lose, 0, 1, 1, BLACK);
+
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
 +
{SYS_ResetSystem(SYS_POWEROFF, 0, 0);}
 
}
 
}
 
 
GRRLIB_Render();
+
else if ( IRposition (386, 271, 535, 420, ir1) )  //Reset Wii.
+
{
usleep(4000000);
+
GRRLIB_DrawImg(386, 271, tex_Highlight, 0, 1, 1, SILVER);
 
score(); //Displays score.
 
 
 
if (game_life <= 0) //To be conbined with score later (break won't work if in score();).
+
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
{
+
{SYS_ResetSystem(SYS_RESTART, 0, 0);}
GRRLIB_DrawImg( 0, 0, tex_Game_Over, 0, 1, 1, BLACK);
 
 
GRRLIB_Render();
 
 
usleep(4000000);
 
 
break;
 
 
}
 
}
 
+
 +
GRRLIB_Render();
 
}
 
}
 +
 +
free(tex_Exit.data);
 +
free(tex_Pointer.data);
 +
free(tex_Highlight.data);
 
}
 
}
  
 
//---------------------------------------------------------
 
//---------------------------------------------------------
//    Options Function
+
//    Intro
 
//---------------------------------------------------------
 
//---------------------------------------------------------
  
void OPTIONS()
+
void END() //Test.
 
{
 
{
/* Locations
+
GRRLIB_texImg tex_font2 = GRRLIB_LoadTexture(font2);
First Button: 
+
GRRLIB_InitTileSet(&tex_font2, 16, 16, 32);
 
+
X 540-152 = 388
+
time(&start_time);
Y 280-76  = 204
 
 
 
Second Button:
 
 
 
X 540-152 = 388
 
Y 380-76  = 304
 
*/
 
  GRRLIB_texImg *tex_options = GRRLIB_LoadTexture(options);
 
  GRRLIB_texImg *tex_button  = GRRLIB_LoadTexture(button);
 
  GRRLIB_texImg *tex_pointer1  = GRRLIB_LoadTexture(pointer1);
 
 
 
  while(1)
 
  {
 
WPAD_ScanPads();
 
 
 
if (WPAD_ButtonsDown(0) && WPAD_BUTTON_PLUS)
+
while(1)
 
{
 
{
GRRLIB_FreeTexture(tex_options);
+
clrscr();
GRRLIB_FreeTexture(tex_button);
+
 +
GRRLIB_Printf(25, 430, tex_font2, BLUE, 1.75, "END? - TO BE CONTINUED...");
 +
 +
GRRLIB_Render();
 
 
score();
+
time(&cur_time);
 
 
break;
+
if ((cur_time - start_time) >= 3)
 +
{break;}
 +
 
}
 
}
 
 
clrscr();
 
 
 
GRRLIB_DrawImg( 0, 0, tex_options, 0, 1, 1, BLACK);
+
free(tex_font2.data);
+
}
if (normal_menu == true) //Because the normal menu is "Lights Off"
+
 
{GRRLIB_DrawImg( 388, 204, tex_button, 0, 1, 1, BLACK);}
+
void intro()
+
{
if (game_easy == false)  //But easy is on and not easy is off.
+
GRRLIB_texImg tex_BKGD = GRRLIB_LoadTexture(BKGD);
{GRRLIB_DrawImg( 388, 304, tex_button, 0, 1, 1, BLACK);}
+
GRRLIB_texImg tex_GRRLIB = GRRLIB_LoadTexture(GRRLIB);
+
GRRLIB_texImg tex_Wilber = GRRLIB_LoadTexture(Wilber);
WPAD_IR(WPAD_CHAN_0, &ir1);           //For Wiimote 1 IR.
+
GRRLIB_texImg tex_BKW2 = GRRLIB_LoadTexture(BKW2);
WPAD_Orientation(WPAD_CHAN_0, &or1); //For Wiimote 1 orientation.
+
GRRLIB_texImg tex_Devkitlogo = GRRLIB_LoadTexture(Devkitlogo);
 
GRRLIB_DrawImg(ir1.x - 48, ir1.y - 45, tex_pointer1, or1.roll, ir1.z, ir1.z, BLACK);
 
 
GRRLIB_Render();
 
 
 
if ( ((ir1.x >= 388) & (ir1.x <= 540)) & ((ir1.y >= 204) & (ir1.y <= 280)) )
+
struct _intro_data
 
{
 
{
rumble(0);
+
int x, y; //Positions
+
WPAD_ScanPads();
+
int deg; //Degrees
 
 
if (WPAD_BUTTON_A & WPAD_ButtonsDown(0))
+
float sx, sy; //Scaling
{
+
} dINTRO, dGRRLIB, dGIMP, dBKW2, dDEVKIT; //d prefix added because of errors relating to texture loading.
if (normal_menu == true) //Lights off.
 
{normal_menu = false;}
 
 
else if (normal_menu == false)  //Lights on.
 
{normal_menu = true;}
 
}
 
 
 
}
+
dINTRO.sx = 0, dINTRO.sy = 0;
 
 
else if ( ((ir1.x >= 388) & (ir1.x <= 540)) & ((ir1.y >= 304) & (ir1.y <= 380)) )
+
while(1)
 
{
 
{
rumble(0);
+
GRRLIB_FillScreen(SILVER);
 +
 +
GRRLIB_DrawImg(0, 0, tex_BKGD, 0, dINTRO.sx, dINTRO.sy, SILVER);
 
 
 +
GRRLIB_Render();
 +
 +
if (dINTRO.sx >= 1) //Just to make sure...
 +
{break;}
 +
 
WPAD_ScanPads();
 
WPAD_ScanPads();
 
 
if (WPAD_BUTTON_A & WPAD_ButtonsDown(0))
+
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS) //For debugging; in case it never breaks.
{
+
{break;}
if (game_easy == true)
+
{
+
dINTRO.sx += .01;
game_easy = false;
+
dINTRO.sy += .01;
game_life = 3;
 
}
 
 
else if (game_easy == false)
 
{
 
game_easy = true;
 
game_life = 5;
 
}
 
}
 
 
}
 
}
 
 
else
+
dGRRLIB.x = (0 - tex_GRRLIB.w);
{do_rumble = true;}
+
dGRRLIB.y = (0 - tex_GRRLIB.h);
 +
 +
dGRRLIB.deg = 0;
 
 
  }
+
dBKW2.x = (0 - tex_BKW2.w);
 +
dBKW2.y = ((tex_BKW2.h / 2) + 240);  //240 is 1/2 of 480; the screen's height. This should center the image.
 
 
}
+
dBKW2.sx = 0, dBKW2.sy = 0;
 
 
//---------------------------------------------------------
 
//    Intro/Credits Function
 
//---------------------------------------------------------
 
 
 
void play_intro()
 
{
 
clrscr();
 
 
 
GRRLIB_texImg *tex_intro = GRRLIB_LoadTexture(intro);
+
bool BKW_switch = true;
 
 
GRRLIB_DrawImg( 0, 0, tex_intro, 0, 1, 1, BLACK);
+
dGIMP.x = 0;
 +
dGIMP.y = 0;
 
 
GRRLIB_Render();
+
unsigned int counter = 1;
 
 
usleep(400000);
+
dDEVKIT.deg = 0;
 
 
GRRLIB_FreeTexture(tex_intro);
 
 
 
clrscr();
 
}
 
//
 
///////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////
 
////-------------------------------------------------------////
 
////    Main Program                                      ////
 
////-------------------------------------------------------////
 
///////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////
 
//
 
int main()
 
{
 
GRRLIB_texImg *tex_pointer1  = GRRLIB_LoadTexture(pointer1);
 
 
 
GRRLIB_texImg *tex_menu      = GRRLIB_LoadTexture(menu);
+
time(&start_time);
 
 
GRRLIB_texImg *tex_button1    = GRRLIB_LoadTexture(button1);
+
while(1)
GRRLIB_texImg *tex_button2    = GRRLIB_LoadTexture(button2);
+
{
GRRLIB_texImg *tex_button3    = GRRLIB_LoadTexture(button3);
+
GRRLIB_FillScreen(SILVER);
 
 
GRRLIB_texImg *tex_pointer1_i = GRRLIB_LoadTexture(pointer1_i);
+
GRRLIB_DrawImg(0, 0, tex_BKGD, 0, 1, 1, SILVER);
 
GRRLIB_texImg *tex_menu_i    = GRRLIB_LoadTexture(menu_i);
 
 
GRRLIB_texImg *tex_button1_i  = GRRLIB_LoadTexture(button1_i);
 
GRRLIB_texImg *tex_button2_i  = GRRLIB_LoadTexture(button2_i);
 
GRRLIB_texImg *tex_button3_i  = GRRLIB_LoadTexture(button3_i);
 
 
    GRRLIB_Init(); //Starts GRRLIB
 
 
WPAD_Init();  //Start WPAD-related Stuff
 
 
WPAD_SetDataFormat(WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR);
 
 
 
WPAD_SetVRes(WPAD_CHAN_0, 640, 480);
+
GRRLIB_DrawImg( 120, 350, tex_Devkitlogo, (dDEVKIT.deg += 1), 1, 1, SILVER);
 
 
play_intro(); //Plays intro/credits
+
GRRLIB_DrawImg(dGRRLIB.x, dGRRLIB.y, tex_GRRLIB, dGRRLIB.deg, 1, 1, SILVER);
   
+
while(1)
+
GRRLIB_DrawImg(0, 0, tex_BKW2, 0, dBKW2.sx, dBKW2.sy, SILVER);
{
+
//***********MENU START******************************************************************************
+
if (BKW_switch)
 
+
{
GRRLIB_DrawImg( 0, 0, (normal_menu == true ? tex_menu : tex_menu_i), 0, 1, 1, BLACK);
+
dBKW2.sx += .05;
+
dBKW2.sy += .05;
WPAD_ScanPads();
+
+
if (dBKW2.sx >= .75)
//***********START***********************************************************************************
+
{BKW_switch = false;}
if ( ( (ir1.x >= 20) & (ir1.x <= 212) & ( (ir1.y >= 364) & (ir1.y <= 620) ) ) )
+
}
{
+
rumble(0);
+
else
 +
{
 +
dBKW2.sx -= .05;
 +
dBKW2.sy -= .05;
 +
 +
if (dBKW2.sx <= 0)
 +
{BKW_switch = true;}
 +
}
 +
 +
GRRLIB_DrawImg(dGIMP.x, dGIMP.y, tex_Wilber, 0, 1, 1, SILVER);
 +
 +
if (counter == 1)
 +
{
 +
dGIMP.x += 5;
 +
 +
if ( (dGIMP.x % 30) == 0)
 +
{counter++;}
 +
}
 
 
GRRLIB_DrawImg(20, 364, (normal_menu == true ? tex_button1 : tex_button1_i), 0, 1, 1, BLACK);
+
else if (counter == 2)
+
{
if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_A)
+
dGIMP.y += 5;
{GAME();}
+
}  
+
if ( (dGIMP.y % 30) == 0)
//************OPTIONS********************************************************************************
+
{counter--;}
else if ( ( (ir1.x >= 225) & (ir1.x <= 417) ) & ( (ir1.y >= 364) & (ir1.y <= 620) ) )
+
}
{
+
rumble(0);
+
GRRLIB_Render();
 
 
GRRLIB_DrawImg(225, 364, (normal_menu == true ? tex_button2 : tex_button2_i), 0, 1, 1, BLACK);
+
dGRRLIB.x += 3;
+
dGRRLIB.y += 2;
if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_A)
 
{OPTIONS();}
 
 
 
 
//************EXIT***********************************************************************************
 
else if ( ( (ir1.x >= 428) & (ir1.x <= 620) ) & ( (ir1.y >= 364) & (ir1.y <= 620) ) )
 
{
 
rumble(0);
 
 
 
GRRLIB_DrawImg(428, 364, (normal_menu == true ? tex_button3 : tex_button3_i), 0, 1, 1, BLACK);
+
dGRRLIB.deg++;
 
if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_A)
 
{goto exit;}
 
 
//************FOR RUMBLE*****************************************************************************
 
else
 
{do_rumble = true;}
 
//***********END LOOP }******************************************************************************
 
WPAD_IR(WPAD_CHAN_0, &ir1);          //For Wiimote 1 IR.
 
WPAD_Orientation(WPAD_CHAN_0, &or1); //For Wiimote 1 orientation.
 
 
 
GRRLIB_DrawImg(ir1.x - 48, ir1.y - 45, (normal_menu == true ? tex_pointer1 : tex_pointer1_i), or1.roll, ir1.z, ir1.z, BLACK);
+
time(&cur_time);
 
 
GRRLIB_Render();
+
if ( (cur_time - start_time) >= 10 )
 +
{break;}
 
 
clrscr();
+
WPAD_ScanPads();
}
 
//***********END*************************************************************************************
 
exit: //This is just in case I add anything after the loop, then it will exit correctly.
 
 
GRRLIB_FreeTexture(tex_pointer1);  //Not necessarily needed due to GRRLIB_Exit();, but here for future revision.
 
 
GRRLIB_FreeTexture(tex_menu);
 
 
GRRLIB_FreeTexture (tex_button1);
 
GRRLIB_FreeTexture (tex_button2);
 
GRRLIB_FreeTexture (tex_button3);
 
 
 
GRRLIB_FreeTexture (tex_pointer1_i);
+
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS)
+
{break;}
GRRLIB_FreeTexture (tex_menu_i);
+
}
 
GRRLIB_FreeTexture (tex_button1_i);
 
GRRLIB_FreeTexture (tex_button2_i);
 
GRRLIB_FreeTexture (tex_button3_i);
 
 
 
GRRLIB_Exit(); // Be a good boy, clear the memory allocated by GRRLIB
+
free(tex_BKGD.data);
 +
free(tex_GRRLIB.data);
 +
free(tex_Wilber.data);
 +
free(tex_BKW2.data);
 +
free(tex_Devkitlogo.data);
 
 
    return 0;
+
END(); //A test. Should be removed if it's here.
 
}
 
}
 +
</source>
  
//---------------------------------------------------------
+
<!-- I like saving stuff.
//    End of Program
 
//---------------------------------------------------------
 
  
</source>
 
 
:Hi, did you see that post: http://grrlib.santo.fr/forum/viewtopic.php?pid=795#p795 from 2009-06-30 17:14:17? -[[User:Crayon|Crayon]] 03:05, 7 July 2009 (UTC)
 
:Hi, did you see that post: http://grrlib.santo.fr/forum/viewtopic.php?pid=795#p795 from 2009-06-30 17:14:17? -[[User:Crayon|Crayon]] 03:05, 7 July 2009 (UTC)
 
   
 
   
 
::Oh no, I didn't see that. I'll start implementing it tomorrow (as I've been on vacation a few days...), but thanks Crayon once again! --[[User:TPAINROXX|<font face="VINETA BT"><font color="black">-TPAINROXX</font>/<font color="green">BKW</font></font>]] 03:19, 7 July 2009 (UTC)
 
::Oh no, I didn't see that. I'll start implementing it tomorrow (as I've been on vacation a few days...), but thanks Crayon once again! --[[User:TPAINROXX|<font face="VINETA BT"><font color="black">-TPAINROXX</font>/<font color="green">BKW</font></font>]] 03:19, 7 July 2009 (UTC)
 +
-->
 +
 +
New source code. [[User:TPAINROXX|<font face="VINETA BT"><font color="black">-TPAINROXX</font>/<font color="green">BKW</font></font>]] 22:29, 11 July 2009 (UTC)

Revision as of 00:29, 12 July 2009

WiiMoveIt

Game Suggestions

Hi TPAINROXX, I don't want to be rude, but you must work a little on your graphics for WiiMoveIt, it looks like something you did with powerpoint. (p.s. I like the idea of the game, I enjoy Smooth Moves). --Elisherer 09:32, 19 June 2009 (UTC)

Noted. I made some earlier today before reading your suggestion, so give me some feedback.--TPAINROXX/BKW 00:59, 20 June 2009 (UTC)

Help

...


Source Code

Code as of 7-11-09.

Recoded. The only problem is the code dump I get when trying to use exit_menu(), but nothing major. I know there's some weird stuff going on, but I just wanted to update for current progress. Also some tests/debugging are included, but won't be in demo/release.


main.cpp

/***********************************************/
/*       WiiMoveIt - By Brandon Whitmire       */
/*          Powered Using GRRLIB 4.0.0         */
/***********************************************/

#include "games.hpp"

#ifndef __VER__
#define __VER__ "1.0 DEMO"
#endif

int main()
{
	WiiLightOn();

	GRRLIB_Init();
	
	WPAD_Init();

	GRRLIB_texImg tex_font1 = GRRLIB_LoadTexture(font1);
    GRRLIB_InitTileSet(&tex_font1, 32, 32, 32);
	
	GRRLIB_Printf(300, 30, tex_font1, LIME, 2, "LOADING...");
	
	GRRLIB_Render();
	
	WPAD_SetDataFormat(WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR);
	
	WPAD_SetVRes(0, 640, 480);
	
	time(&start_time);
	
	while(1)  //This displays the version and other version data.
	{
		clrscr();
		
		GRRLIB_Printf(15, 30, tex_font1, AQUA, 1, "VERSION v%s", __VER__);
		
		GRRLIB_Printf(15, 180, tex_font1, AQUA, 1, "DATE: %s", __DATE__);
	
		GRRLIB_Printf(15, 330, tex_font1, AQUA, 1, "TIME: %s", __TIME__);
		
		GRRLIB_Printf(380, 10, tex_font1, LIME, 2, "WIIMOVEIT");
	
		GRRLIB_Render();
		
		time(&cur_time);
		
		if ( (cur_time - start_time) > 5 ) 
		{break;}
		
		WPAD_ScanPads();
		
		if  (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS) 
		{break;}
	}

	free(tex_font1.data);
	
	intro();
	
	exit_menu();
	
    GRRLIB_InitTileSet(&tex_font1, 32, 32, 32);
	
	time(&start_time);
	
	while(1)  
	{
		GRRLIB_FillScreen(BLACK);
		
		GRRLIB_Printf(15, 30, tex_font1, AQUA, 1, "YOU CANCELLED!");
	
		GRRLIB_Render();
		
		time(&cur_time);
		
		if ( (cur_time - start_time) > 5 ) 
		{break;}
		
		WPAD_ScanPads();
		
		if  (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS) 
		{break;}
	}
	
	free(tex_font1.data);
	
	GRRLIB_Exit();
	
	WiiLightOff();
	
	return 0;
}

games.hpp

//---------------------------------------------------------
//     games.cpp - Includes basic game engine/thing.
//---------------------------------------------------------
/*********************************************************/
//---------------------------------------------------------
//     GRRLIB - So Important it has its own spot....
//---------------------------------------------------------

#include "GRRLIB/GRRLIB/GRRLIB.h" //Version packed with GRRLIB 4.0.0

//---------------------------------------------------------
//     Regular Headers and Such
//---------------------------------------------------------

#include <cstdlib>
#include <time.h>	 //For time comparison.
#include <unistd.h>  //For usleep();
#include <wiiuse/wpad.h>
#include <iostream>  //May not be used; for basic output (originally).
using namespace std;

//=========================================================
//     Start All File Inclusion
//=========================================================

#include "fonts/font1.h"
#include "fonts/font2.h"
#include "fonts/font3.h"

//---------------------------------------------------------
//     Credits/Intro
//---------------------------------------------------------

#include "credits/BKGD.h"
#include "credits/GRRLIB.h"
#include "credits/Wilber.h"
#include "credits/BKW2.h"
#include "credits/Devkitlogo.h"

//---------------------------------------------------------
//     Menu
//---------------------------------------------------------

#include "Menu/Pointer.h"

#include "Menu/WiiMoveIt.h"

#include "Menu/Exit.h"

#include "Menu/Buttons/BButton.h"
#include "Menu/Buttons/WButton.h"

#include "Menu/Buttons/Start.h"
#include "Menu/Buttons/Options.h"
#include "Menu/Buttons/Exit.h"

#include "Menu/Buttons/Button.h"

#include "Menu/Highlight.h"
#include "Menu/Highlight2.h"

//---------------------------------------------------------
//     Options
//---------------------------------------------------------

/***
   *
   *
   *
   *TO BE CODED LATER
   *
   *
   *
***/

//---------------------------------------------------------
//     START GAME FILE INCLUSION BELOW
//---------------------------------------------------------

//For All Games 
	   #include "games/All/Game_Lose.h"
	   #include "games/All/Game_Win.h"
	   #include "games/All/Game_Over.h"

//Game 1 - Tunnel
       #include "games/Game 1 - Tunnel/game1_play.h"
       #include "games/Game 1 - Tunnel/game1_start.h"
       #include "games/Game 1 - Tunnel/thing.h"
       
//Game 2 - Target
       #include "games/Game 2 - Target/bkgd2.h"
       #include "games/Game 2 - Target/target.h"
       #include "games/Game 2 - Target/crosshair.h"
       
//Game 3 - Search Light
       
//Game 4 - SpaceTravel
       #include "games/Game 4 - SpaceTravel/Space4.h"
       #include "games/Game 4 - SpaceTravel/Spaceship.h"
	   
//Game 5 - The Square

//Game 6 - Fix TV 

//=========================================================
//
//     END OF FILE INCLUSION
//
//=========================================================
//     Important Variables and Functions
//=========================================================

//Easy color codes from Crayon...

#define BLACK   0x000000FF
#define MAROON  0x800000FF
#define GREEN   0x008000FF
#define OLIVE   0x808000FF
#define NAVY    0x000080FF
#define PURPLE  0x800080FF
#define TEAL    0x008080FF
#define GRAY    0x808080FF
#define SILVER  0xC0C0C0FF
#define RED     0xFF0000FF
#define LIME    0x00FF00FF
#define YELLOW  0xFFFF00FF
#define BLUE    0x0000FFFF
#define FUCHSIA 0xFF00FFFF
#define AQUA    0x00FFFFFF
#define WHITE   0xFFFFFFFF

Mtx GXmodelView2D;  //Needed for GRRLIB

void clrscr()       //"Clears Screen"...
{GRRLIB_FillScreen(BLACK);}

	//Wiimote 1
	ir_t ir1;  //IR Movement
	
	orient_t or1;  //Orientation Movement

time_t start_time, cur_time;  //Time delays/comparisons.

//Wii Light - Thanks to Crayon... again...

static vu32 *_wiilight_reg = (u32*)0xCD0000C0;

void WiiLightOff()
{
    *_wiilight_reg &= ~0x20;
}

void WiiLightOn()
{
    *_wiilight_reg |= 0x20;
}

//---------------------------------------------------------
//     Simple IR Comparison Function; Faster to Code
//---------------------------------------------------------

bool IRposition (int IRx1, int IRy1, int IRx2, int IRy2, ir_t IR_T)
/*                 Min X     Min Y     Max X     Max Y    IR Struct (i.e. ir1)
Return true if a point lies within specified coodinates based off the IR.*/
{return ((IRx1 <= IR_T.x) && (IRx2 >= IR_T.x) && (IRy1 <= IR_T.y) && (IRy2 >= IR_T.y));}

//---------------------------------------------------------
//     Exit Function - GUI Version
//---------------------------------------------------------

void exit_menu()
{		
	GRRLIB_texImg tex_Pointer = GRRLIB_LoadTexture(Pointer);
	GRRLIB_texImg tex_Exit = GRRLIB_LoadTexture(Exit);
	GRRLIB_texImg tex_Highlight = GRRLIB_LoadTexture(Highlight);
	GRRLIB_texImg tex_Highlight2 = GRRLIB_LoadTexture(Highlight2);

	while(1)
	{
		GRRLIB_FillScreen(SILVER);
	
		GRRLIB_DrawImg(0, 0, tex_Exit, 0, 1, 1, SILVER);
	
		WPAD_IR(WPAD_CHAN_0, &ir1);
		WPAD_Orientation(WPAD_CHAN_0, &or1);  
		
		GRRLIB_DrawImg(ir1.x, ir1.y, tex_Pointer, or1.roll, ir1.z, ir1.z, SILVER);
		
		WPAD_ScanPads();
		
		if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_HOME)//  Cancel
		{break;} 
		
		else if ( IRposition (476, 61, 625, 210, ir1) )  //Cancel
		{
			GRRLIB_DrawImg(476, 61, tex_Highlight, 0, 1, 1, SILVER);
		
			if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)  
			{break;}
		}
		
		else if ( IRposition (16, 61, 165, 210, ir1) ) //To Wii Menu.
		{
			GRRLIB_DrawImg(16, 61, tex_Highlight, 0, 1, 1, SILVER);
		
			if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
			{SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);} 
		}
		
		else if ( IRposition (221, 61, 420, 260, ir1) )  //To Loader.
		{
			GRRLIB_DrawImg(221, 61, tex_Highlight2, 0, 1, 1, SILVER);  //Box is slightly bigger.
		
			if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)  
			{exit(0);} 
		}
		
		else if ( IRposition (96, 271, 245, 420, ir1) )  //Turn off Wii.
		{
			GRRLIB_DrawImg(96, 271, tex_Highlight, 0, 1, 1, SILVER);
		
			if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
			{SYS_ResetSystem(SYS_POWEROFF, 0, 0);} 
		}
		
		else if ( IRposition (386, 271, 535, 420, ir1) )  //Reset Wii.
		{
			GRRLIB_DrawImg(386, 271, tex_Highlight, 0, 1, 1, SILVER);
		
			if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
			{SYS_ResetSystem(SYS_RESTART, 0, 0);} 
		}
		
		GRRLIB_Render();
	}
	
	free(tex_Exit.data);
	free(tex_Pointer.data);
	free(tex_Highlight.data);
}

//---------------------------------------------------------
//     Intro 
//---------------------------------------------------------

void END()  //Test.
{
	GRRLIB_texImg tex_font2 = GRRLIB_LoadTexture(font2);
	GRRLIB_InitTileSet(&tex_font2, 16, 16, 32);
	
	time(&start_time);
	
	while(1)
	{
		clrscr();
	
		GRRLIB_Printf(25, 430, tex_font2, BLUE, 1.75, "END? - TO BE CONTINUED...");
	
		GRRLIB_Render();
		
		time(&cur_time);
		
		if ((cur_time - start_time) >= 3)
		{break;}
	
	}
	
	free(tex_font2.data);
}

void intro()
{
	GRRLIB_texImg tex_BKGD = GRRLIB_LoadTexture(BKGD);
	GRRLIB_texImg tex_GRRLIB = GRRLIB_LoadTexture(GRRLIB);
	GRRLIB_texImg tex_Wilber = GRRLIB_LoadTexture(Wilber);
	GRRLIB_texImg tex_BKW2 = GRRLIB_LoadTexture(BKW2);
	GRRLIB_texImg tex_Devkitlogo = GRRLIB_LoadTexture(Devkitlogo);
	
	struct _intro_data
	{
		int x, y;	//Positions
		
		int deg;  //Degrees
		
		float sx, sy;  //Scaling
	} dINTRO, dGRRLIB, dGIMP, dBKW2, dDEVKIT; //d prefix added because of errors relating to texture loading.
	
	dINTRO.sx = 0, dINTRO.sy = 0;
	
	while(1)
	{
		GRRLIB_FillScreen(SILVER);
	
		GRRLIB_DrawImg(0, 0, tex_BKGD, 0, dINTRO.sx, dINTRO.sy, SILVER);
	
		GRRLIB_Render();
		
		if (dINTRO.sx >= 1) //Just to make sure...
		{break;}
		
		WPAD_ScanPads();
		
		if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS)  //For debugging; in case it never breaks.
		{break;}
		
		dINTRO.sx += .01;
		dINTRO.sy += .01;
	}
	
	dGRRLIB.x = (0 - tex_GRRLIB.w);
	dGRRLIB.y = (0 - tex_GRRLIB.h);	
	
	dGRRLIB.deg = 0;
	
	dBKW2.x = (0 - tex_BKW2.w);
	dBKW2.y = ((tex_BKW2.h / 2) + 240);  //240 is 1/2 of 480; the screen's height. This should center the image.
	
	dBKW2.sx = 0, dBKW2.sy = 0;
	
	bool BKW_switch = true;
	
	dGIMP.x = 0;
	dGIMP.y = 0;
	
	unsigned int counter = 1;
	
	dDEVKIT.deg = 0;
	
	time(&start_time);
	
	while(1)
	{
		GRRLIB_FillScreen(SILVER);
		
		GRRLIB_DrawImg(0, 0, tex_BKGD, 0, 1, 1, SILVER);
		
		GRRLIB_DrawImg( 120, 350, tex_Devkitlogo, (dDEVKIT.deg += 1), 1, 1, SILVER);
	
		GRRLIB_DrawImg(dGRRLIB.x, dGRRLIB.y, tex_GRRLIB, dGRRLIB.deg, 1, 1, SILVER);
			
			GRRLIB_DrawImg(0, 0, tex_BKW2, 0, dBKW2.sx, dBKW2.sy, SILVER);
			
			if (BKW_switch)
			{
				dBKW2.sx += .05;
				dBKW2.sy += .05;
				
				if (dBKW2.sx >= .75)
				{BKW_switch = false;}
			}
			
			else
			{
				dBKW2.sx -= .05;
				dBKW2.sy -= .05;
				
				if (dBKW2.sx <= 0)
				{BKW_switch = true;}
			}
			
			GRRLIB_DrawImg(dGIMP.x, dGIMP.y, tex_Wilber, 0, 1, 1, SILVER);
			
			if (counter == 1)
			{
				dGIMP.x += 5;
				
				if ( (dGIMP.x % 30) == 0)
				{counter++;}
			}
			
			else if (counter == 2)
			{
				dGIMP.y += 5;
				
				if ( (dGIMP.y % 30) == 0)
				{counter--;}
			}
	
		GRRLIB_Render();
		
		dGRRLIB.x += 3;
		dGRRLIB.y += 2;
		
		dGRRLIB.deg++;
		
		time(&cur_time);
		
		if ( (cur_time - start_time) >= 10 )
		{break;}
		
		WPAD_ScanPads();
		
		if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_PLUS)
		{break;}
	}
	
	free(tex_BKGD.data);
	free(tex_GRRLIB.data);
	free(tex_Wilber.data);
	free(tex_BKW2.data);
	free(tex_Devkitlogo.data);
	
	END(); //A test. Should be removed if it's here.
}


New source code. -TPAINROXX/BKW 22:29, 11 July 2009 (UTC)