added TB_IGT
This commit is contained in:
parent
25d4bc0627
commit
11e5421bf0
1 changed files with 90 additions and 0 deletions
90
examples/TB_InGameTimer/igt.cpp
Normal file
90
examples/TB_InGameTimer/igt.cpp
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "inc/smsJP.h"
|
||||||
|
|
||||||
|
//Basic in game timer
|
||||||
|
|
||||||
|
J2DTextBox textBox;
|
||||||
|
|
||||||
|
static unsigned int start; //OStime on timer start
|
||||||
|
unsigned int timerValue; //current OSTime - start
|
||||||
|
|
||||||
|
|
||||||
|
void OnDraw2D(J2DOrthoGraph* graphics)
|
||||||
|
{
|
||||||
|
Vector mariopos = **gpMarioPos;
|
||||||
|
|
||||||
|
|
||||||
|
/*============================================================================
|
||||||
|
TIMER
|
||||||
|
==============================================================================*/
|
||||||
|
|
||||||
|
|
||||||
|
unsigned int t_min; //displayed t_min
|
||||||
|
unsigned int t_sec; //displayed t_sec
|
||||||
|
unsigned int t_msec; //displayed t_msec
|
||||||
|
unsigned int t_ticksInMsec; //current OSTime in t_msec,
|
||||||
|
|
||||||
|
//Read timer state (external)
|
||||||
|
unsigned int *fpTimerState = (unsigned int *)0x817F0100;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
The Wii north bridge is clocked at 243 MHz instead of 162MHz (GCN) which gives us 60.75 MHz for the I/O clock
|
||||||
|
*/
|
||||||
|
|
||||||
|
//TODO: Replace with Stopwatch
|
||||||
|
|
||||||
|
t_ticksInMsec = (unsigned int)((double)((unsigned int)(OSGetTime() >> 15) & 0xDFFFFFFF)/(60750.0/32768.0));
|
||||||
|
|
||||||
|
if ((unsigned int)*fpTimerState == 0) {
|
||||||
|
start = t_ticksInMsec;
|
||||||
|
*fpTimerState = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//If shine hasn't been touched, update timerValue
|
||||||
|
if((unsigned int)*fpTimerState <= 1) {
|
||||||
|
timerValue = t_ticksInMsec - start;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set display values
|
||||||
|
t_min = timerValue / 60000;
|
||||||
|
t_sec = (timerValue / 1000) % 60;
|
||||||
|
t_msec = timerValue % 1000;
|
||||||
|
|
||||||
|
//Update textbox buffer
|
||||||
|
snprintf(J2DTextBox_GetStringPtr(&textBox),128*sizeof(char*),"(v0.62) TIME: %02d:%02d.%03d",t_min,t_sec,t_msec);
|
||||||
|
|
||||||
|
|
||||||
|
/*============================================================================
|
||||||
|
Draw
|
||||||
|
==============================================================================*/
|
||||||
|
|
||||||
|
|
||||||
|
//Run replaced branch
|
||||||
|
J2DGrafContext_Setup2D((J2DGrafContext*)graphics);
|
||||||
|
|
||||||
|
//Draw timerbox
|
||||||
|
J2DScreen_Draw((J2DScreen*)&textBox, 0, 0, (J2DGrafContext*)graphics, 0x81);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OnSetup(MarDirector* director)
|
||||||
|
{
|
||||||
|
JUTRect textRect;
|
||||||
|
|
||||||
|
//Run replaced branch
|
||||||
|
MarDirector_SetupObjects(director);
|
||||||
|
|
||||||
|
//allocate memory for textbox
|
||||||
|
char* info;
|
||||||
|
info = (char*)malloc(128*sizeof(char*));
|
||||||
|
|
||||||
|
//setup textbox
|
||||||
|
JUTRect_Set(&textRect, 0, 0, 512, 512);
|
||||||
|
J2DTextBox_Create(&textBox, 0, &textRect, GameFont, GameStrTable, 2, 0);
|
||||||
|
J2DTextBox_SetString(&textBox,info);
|
||||||
|
}
|
Reference in a new issue