User talk:TPAINROXX/WiiMoveIt
< User talk:TPAINROXX
Jump to navigation
Jump to search
This is an old revision of this page, as edited by TPAINROXX (talk | contribs) at 02:25, 17 July 2009. It may differ significantly from the current revision. |
![]() |
To be updated after game release... |
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-16-09.
Yes, there's a lot of weird stuff going on, but I'm working on that. Also in settings.hpp part of the code is excerpted from teknecal's Tutorial 13 on saving and loading from XML files. I'll recode/fix it later. -TPAINROXX/BKW 00:25, 17 July 2009 (UTC)
main.cpp | |
---|---|
main.cpp | /***********************************************/
/* WiiMoveIt - By Brandon Whitmire */
/* Powered Using GRRLIB 4.0.0 */
/* main.cpp */
/***********************************************/
/************************************************
TODO:
-Add Music/Sound Effects
-Add Multiplayer
-Add More Games
-Add Better Games
-Add Bosses
-Add Storyline
-Add Videos
~Fix screenshot destination
~Use latest GRRLIB SVN
************************************************/
#ifndef main_WiiMoveIt_cpp //Not necessarily necessary, but...
#define main_WiiMoveIt_cpp
#include "games.hpp"
#define __VER__ "1.0 DEMO" //For version display
void game_version()
{
GRRLIB_texImg tex_font1 = GRRLIB_LoadTexture(font1);
GRRLIB_InitTileSet(&tex_font1, 32, 32, 32);
time(&start_time);
while(1) //This displays the version and other version data.
{
clrscr();
GRRLIB_Printf(60, 60, tex_font1, WHITE, 2, "LOADING...");
GRRLIB_Printf(15, 150, tex_font1, LIME, 1, "VERSION v%s", __VER__);
GRRLIB_Printf(15, 230, tex_font1, LIME, 1, "DATE: %s", __DATE__);
GRRLIB_Printf(15, 310, tex_font1, LIME, 1, "TIME: %s", __TIME__);
GRRLIB_Printf(15, 400, tex_font1, GREEN, 2, "WIIMOVEIT");
GRRLIB_Render();
time(&cur_time);
if ( (cur_time - start_time) > 5)
{break;}
}
free(tex_font1.data);
}
int main()
{
GRRLIB_texImg tex_font1 = GRRLIB_LoadTexture(font1);
GRRLIB_InitTileSet(&tex_font1, 32, 32, 32);
update_settings();
while(1)
{
clrscr();
load_settings() ? GRRLIB_Printf(60, 60, tex_font1, WHITE, 1, "SETTINGS LOADED!") : GRRLIB_Printf(60, 60, tex_font1, WHITE, 1, "ERROR LOADING SETTINGS!");
GRRLIB_Render();
WPAD_ScanPads();
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_HOME)
{break;}
}
free(tex_font1.data);
WLToggle();
GRRLIB_Init();
WPAD_Init();
WPAD_SetDataFormat(WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(0, 640, 480);
game_version(); //This displays the version and other version data.
intro();
exit_menu();
GRRLIB_Exit();
WLToggle();
return 0;
}
//---------------------------------------------------------
// End of main.cpp
//---------------------------------------------------------
#endif //main_WiiMoveIt_cpp |
games.cpp | |
---|---|
games.hpp | //---------------------------------------------------------
// games.cpp - Includes basic game engine.
//---------------------------------------------------------
/*********************************************************/
#ifndef games_WiiMoveIt_hpp //To prevent multiple inclusions.
#define games_WiiMoveIt_hpp
//---------------------------------------------------------
// GRRLIB - So Important it has its own spot....
//---------------------------------------------------------
#include "GRRLIB/GRRLIB/GRRLIB.h" //Version packed with GRRLIB 4.0.0
//---------------------------------------------------------
// Settings File
//---------------------------------------------------------
#include "settings.hpp"
//---------------------------------------------------------
// Regular Headers and Such
//---------------------------------------------------------
#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/intro/swirl.h"
#include "credits/intro/TPAINROXX.h"
#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"
//---------------------------------------------------------
// 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"... for quick screen clearing...
{GRRLIB_FillScreen(BLACK);}
time_t start_time, cur_time; //Time delays/comparisons.
/*Wiimote 1 DATA*/
ir_t ir1; //IR Movement
orient_t or1; //Orientation Movement
/*Wii Light - Thanks to Crayon... again...*/
static vu32 *_wiilight_reg = (u32*)0xCD0000C0;
/*
void WiiLightOff()
{*_wiilight_reg &= 0x20;}
void WiiLightOn()
{*_wiilight_reg |= 0x20;}
*/
bool do_wiilight = true; //For toggling on and off.
void WLToggle() //Toggles WiiLight on and off
{
if (wiilight) //From settings; if true then it does \/.
{do_wiilight ? *_wiilight_reg |= 0x20 : *_wiilight_reg &= 0x20;}
}
//---------------------------------------------------------
// Rumble Stuff
//---------------------------------------------------------
#define P1 0 //For easy understanding.
#define P2 1
bool do_rumble = true;
void rumble(u32 _wiimote_channel_or_PLAYER_NUMBER_)
{
if (rumbling)
{
if (do_rumble)
{
WPAD_Rumble( _wiimote_channel_or_PLAYER_NUMBER_, 1);
usleep(25000);
WPAD_Rumble( _wiimote_channel_or_PLAYER_NUMBER_, 0);
do_rumble = false;
}
}
}
//---------------------------------------------------------
// 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)
Returns 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_ScanPads();
if ( IRposition (476, 61, 625, 210, ir1) ) //Cancel
{
rumble(P1);
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.
{
rumble(P1);
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.
{
rumble(P1);
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.
{
rumble(P1);
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.
{
rumble(P1);
GRRLIB_DrawImg(386, 271, tex_Highlight, 0, 1, 1, SILVER);
if (WPAD_ButtonsHeld(0) && WPAD_BUTTON_A)
{SYS_ResetSystem(SYS_RESTART, 0, 0);}
}
else
{do_rumble = true;}
WPAD_IR(WPAD_CHAN_0, &ir1);
WPAD_Orientation(WPAD_CHAN_0, &or1);
GRRLIB_DrawImg( (ir1.x - tex_Pointer.w), (ir1.y - tex_Pointer.h), tex_Pointer, or1.roll, ir1.z, ir1.z, SILVER);
GRRLIB_Render();
}
free(tex_Exit.data);
free(tex_Pointer.data);
free(tex_Highlight.data);
free(tex_Highlight2.data);
}
//---------------------------------------------------------
// Intro
//---------------------------------------------------------
struct _intro_data
{
int x, y; //Positions
int deg; //Degrees
float sx, sy; //Scaling
} dINTRO, dGRRLIB, dGIMP, dBKW2, dDEVKIT, dTPR_BKW; //d prefix added because of errors relating to texture loading.
#define MAX_PIXELATE 1
bool no_do_it = true;
void TPAINROXX_BKW()
{
GRRLIB_texImg tex_swirl = GRRLIB_LoadTexture(swirl);
GRRLIB_texImg tex_swirl2; // For effects.
float pixelate = 0;
GRRLIB_texImg tex_TPR_BKW = GRRLIB_LoadTexture(TPAINROXX);
dTPR_BKW.deg = 0;
while(1)
{
clrscr();
GRRLIB_BMFX_Pixelate(tex_swirl, tex_swirl2, pixelate);
GRRLIB_DrawImg( (320 - tex_swirl2.w), (240 - tex_swirl2.h), tex_swirl2, dTPR_BKW.deg, 1, 1, BLACK);
if ( !(pixelate >= MAX_PIXELATE) )
{
pixelate += .02;
dTPR_BKW.deg++;
}
else
{
pixelate = 0;
dTPR_BKW.deg = 0;
GRRLIB_DrawImg( (320 - tex_TPR_BKW.w), ( (240 - tex_TPR_BKW.h) - tex_swirl2.h), tex_TPR_BKW, 0, 1, 1, BLACK);
if (no_do_it)
{
time(&start_time);
no_do_it = false;
}
time(&cur_time);
if ( (cur_time - start_time) > 5)
{break;}
}
GRRLIB_Render();
}
free(tex_TPR_BKW.data);
free(tex_swirl.data);
}
void intro()
{
// TPAINROXX_BKW();
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);
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;}
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_HOME)
{break;}
}
free(tex_BKGD.data);
free(tex_GRRLIB.data);
free(tex_Wilber.data);
free(tex_BKW2.data);
free(tex_Devkitlogo.data);
}
//---------------------------------------------------------
// End of games.cpp
//---------------------------------------------------------
#endif //games_WiiMoveIt_hpp |
settings.cpp | |
---|---|
settings.hpp | //---------------------------------------------------------
// settings.hpp - Includes settings/options.
//---------------------------------------------------------
/*********************************************************/
#ifndef settings_WiiMoveIt_hpp //To prevent multiple inclusions.
#define settings_WiiMoveIt_hpp
//---------------------------------------------------------
// XML Library from Beardface, so thanks.
// -lmxml needs to be added to makefile
//---------------------------------------------------------
#include "XML/mxml.h"
#include <cstdlib>
#include <zlib.h>
//=========================================================
// Settings Functions
//=========================================================
/**********************************************************
TODO:
-Convert to C++ or something (most of this code
has been excerpted from Tutorial 13 of teknecal's
codemii tutorials)
**********************************************************/
//---------------------------------------------------------
// Settings Variables
//---------------------------------------------------------
const char set_dest[] = "sd:/apps/WiiMoveIt_V1.0/data/settings/WiiMoveIt.xml";
bool rumbling = true;
#define EASY 0
#define NORMAL 1
#define HARD 2
unsigned int difficulty = EASY;
bool menu = true;
bool wiilight = true;
bool update_settings()
{
mxml_node_t *xml;
mxml_node_t *data;
xml = mxmlNewXML("1.0");
data = mxmlNewElement(xml, "settings");
char set1[1];
sprintf(set1, "%i", rumbling);
mxmlElementSetAttr(data, "rumble", set1);
char set2[1];
sprintf(set2, "%i", difficulty);
mxmlElementSetAttr(data, "difficulty", set2);
char set3[1];
sprintf(set3, "%i", menu);
mxmlElementSetAttr(data, "menu", set3);
char set4[1];
sprintf(set4, "%i", wiilight);
mxmlElementSetAttr(data, "wiilight", set4);
FILE *f;
f = fopen( set_dest, "wb");
if (f == NULL) //Settings failed
{
fclose(f);
return false;
}
else //Settings saved
{
mxmlSaveFile(xml, f, MXML_NO_CALLBACK);
fclose(f);
mxmlDelete(data);
mxmlDelete(xml);
return true;
}
}
bool load_settings()
{
mxml_node_t *tree;
mxml_node_t *data;
FILE *fp = fopen(set_dest, "rb");
if (fp == NULL)
{
fclose(fp);
return false;
}
else
{
fseek (fp , 0, SEEK_END);
long settings_size = ftell (fp);
rewind (fp);
if (settings_size > 0)
{
tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
fclose(fp);
data = mxmlFindElement(tree, tree, "settings", NULL, NULL, MXML_DESCEND);
if (mxmlElementGetAttr(data,"rumble"))
{
rumbling = atoi(mxmlElementGetAttr(data,"rumble"));
}
if (mxmlElementGetAttr(data,"difficulty"))
{
difficulty = atoi(mxmlElementGetAttr(data,"difficulty"));
if (difficulty > HARD)
{difficulty = HARD;}
}
if (mxmlElementGetAttr(data,"menu"))
{
menu = atoi(mxmlElementGetAttr(data,"menu"));
}
if (mxmlElementGetAttr(data,"wiilight"))
{
wiilight = atoi(mxmlElementGetAttr(data,"wiilight"));
}
mxmlDelete(data);
mxmlDelete(tree);
return true;
}
else
{
fclose(fp);
unlink(set_dest);
return false;
}
}
}
//=========================================================
// End of Settings Functions
//=========================================================
//---------------------------------------------------------
// Options
//---------------------------------------------------------
void options()
{
/***
*
*
*
*TO BE ADDED LATER
*
*
*
***/
}
//---------------------------------------------------------
// Screenshot Function
//---------------------------------------------------------
#define CONST_FILENAME 41
void SCRSHOT()
{
int scrshotfile = 1;
srand((unsigned)time(NULL));
const char def_filename[] = "sd:/apps/WiiMoveIt_v1.0/data/screenshots/";
char filename[scrshotfile];
while(1)
{
if ( (scrshotfile <= CONST_FILENAME))
{
filename[scrshotfile - 1] = def_filename[scrshotfile-1];
}
else
{
filename[scrshotfile - 1] = ((char) rand());
}
if (scrshotfile > 50) break;
scrshotfile++;
}
GRRLIB_ScrShot(filename);
}
//---------------------------------------------------------
// End of settings.hpp
//---------------------------------------------------------
#endif //settings_WiiMoveIt_hpp |