From 11e5421bf0016593b4da050dba94d8e44a41595d Mon Sep 17 00:00:00 2001 From: BitPatty Date: Thu, 23 Feb 2017 18:42:14 +0100 Subject: [PATCH] added TB_IGT --- examples/TB_InGameTimer/igt.cpp | 90 +++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 examples/TB_InGameTimer/igt.cpp diff --git a/examples/TB_InGameTimer/igt.cpp b/examples/TB_InGameTimer/igt.cpp new file mode 100644 index 0000000..df6bab4 --- /dev/null +++ b/examples/TB_InGameTimer/igt.cpp @@ -0,0 +1,90 @@ +#include +#include +#include +#include +#include +#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); +}