Some Poketch System button functions

This commit is contained in:
Trainer Riley 2024-05-31 18:45:12 -07:00
parent 49b8b9f244
commit e56149fddc
22 changed files with 62 additions and 59 deletions

View File

@ -11,7 +11,7 @@ typedef void (* PoketchButtonCallback)(u32, u32, u32, void *);
enum ButtonManagerState {
BUTTON_MANAGER_STATE_NULL = 0,
BUTTON_MANAGER_STATE_TOUCH,
BUTTON_MANAGER_STATE_OUT,
BUTTON_MANAGER_STATE_SLIDEOUT, // Slid touch off of button but did not release
BUTTON_MANAGER_STATE_TAP,
BUTTON_MANAGER_STATE_DOUBLETAP,
BUTTON_MANAGER_STATE_TIMER0,

View File

@ -55,7 +55,10 @@ enum PoketchFieldEventID {
};
enum PoketchScreenCoordinates {
POKETCH_SCREEN_MINX = 16,
POKETCH_SCREEN_MINY = 16,
POKETCH_SCREEN_MAXX = 207,
POKETCH_SCREEN_MAXY = 175,
};
typedef struct PoketchSystem PoketchSystem;
@ -107,15 +110,15 @@ BOOL PoketchSystem_IsSystemShutdown(PoketchSystem *poketchSys);
void PoketchSystem_SendFieldEvent(PoketchSystem *poketchSys, enum PoketchFieldEventID eventID, u32);
BOOL PoketchSystem_CheckTouch(PoketchSystem *poketchSys);
enum PoketchAppID PoketchSystem_CurrentAppID(PoketchSystem *poketchSys);
void PoketchSystem_SetAppFunctions(PoketchAppInitFunction param0, PoketchAppShutdownFunction param1);
void PoketchSystem_SetAppFunctions(PoketchAppInitFunction initFunction, PoketchAppShutdownFunction shutdownFunction);
void PoketchSystem_NotifyAppLoaded(PoketchSystem *poketchSys);
void PoketchSystem_NotifyAppUnloaded(PoketchSystem *poketchSys);
void ov25_02254274(PoketchAppSaveFunction param0, void * param1);
void PoketchSystem_SetSaveFunction(PoketchAppSaveFunction saveFunction, void *saveData);
UnkStruct_ov25_02254560 * ov25_02254418(void);
void ov25_02254424(u32 param0);
void ov25_02254444(u32 param0, u32 param1);
BOOL ov25_0225446C(u32 * param0, u32 * param1);
BOOL ov25_022544BC(u32 * param0, u32 * param1);
BOOL PoketchSystem_IsTouchingDisplay(u32 *x, u32 *y);
BOOL PoketchSystem_TappedDisplay(u32 *x, u32 *y);
BOOL ov25_0225450C(const PoketchSystem *poketchSys);
void ov25_02254518(const PoketchSystem *poketchSys, PoketchButtonManager * param1);
BOOL ov25_02254534(const PoketchSystem *poketchSys);

View File

@ -39,8 +39,8 @@ BOOL TouchScreen_Touched(void);
* @return TRUE if the touch screen is tapped, FALSE otherwise.
*/
BOOL TouchScreen_Tapped(void);
BOOL sub_020227A4(u32 * param0, u32 * param1);
BOOL sub_020227C0(u32 * param0, u32 * param1);
BOOL TouchScreen_TouchLocation(u32 *x, u32 *y);
BOOL TouchScreen_TapLocation(u32 *x, u32 *y);
int sub_020227DC(const TouchScreenHitTable *hitTable, u32 param1, u32 param2);
BOOL sub_02022830(const TouchScreenHitTable *hitTable, u32 param1, u32 param2);

View File

@ -48,7 +48,7 @@ int ov19_021D60A8 (UnkStruct_ov19_021D6104 * param0)
v0 = 1;
v1 = (param0->unk_1C == 0);
if (sub_020227A4(&v2, &v3)) {
if (TouchScreen_TouchLocation(&v2, &v3)) {
param0->unk_14 = v2;
param0->unk_18 = v3;
}

View File

@ -205,7 +205,7 @@ static u32 Button_OnPressed(PoketchButton *button, BOOL touched, BOOL tapped)
}
} else if (touched) {
PoketchButton_ChangeState(button, BUTTON_STATE_IDLE);
return BUTTON_MANAGER_STATE_OUT;
return BUTTON_MANAGER_STATE_SLIDEOUT;
} else {
// We don't reset the timer because we want to check for double tap with the same timer
if (button->doubleTapTime) {

View File

@ -76,9 +76,9 @@ static BOOL PoketchSystem_IsAppShutdown(PoketchSystem *poketchSys);
static BOOL PoketchSystem_ButtonInit(PoketchSystem *poketchSys);
static void PoketchSystem_ButtonShutdown(PoketchSystem *poketchSys);
static void PoketchSystem_ButtonUpdate(PoketchSystem *poketchSys);
static void ov25_022542E4(u32 buttonID, u32 buttonEvent, u32 touchEvent, void *system);
static void PoketchSystem_OnButtonEvent(u32 buttonID, u32 buttonEvent, u32 touchEvent, void *system);
static BOOL ov25_022543EC(UnkStruct_ov25_02254560 * param0, u32 param1);
static inline BOOL inline_ov25_0225446C(u32 param0, u32 param1);
static inline BOOL PoketchSystem_InsideScreenBounds(u32 param0, u32 param1);
// the order of this array determines the app order in the poketch.
static const struct {
@ -313,8 +313,8 @@ static void PoketchEvent_UpdateApp(PoketchSystem *poketchSys)
}
switch (poketchSys->buttonState) {
case 3:
case 5:
case BUTTON_MANAGER_STATE_TAP:
case BUTTON_MANAGER_STATE_TIMER0:
poketchSys->unk_0C = 0;
poketchSys->unk_05 = 1;
ov25_022547D0(poketchSys->unk_1C, 4);
@ -544,7 +544,7 @@ void PoketchSystem_NotifyAppUnloaded(PoketchSystem *poketchSys)
poketchSys->appState = POKETCH_APP_STATE_NONE;
}
void ov25_02254274 (PoketchAppSaveFunction saveFunction, void * saveData)
void PoketchSystem_SetSaveFunction(PoketchAppSaveFunction saveFunction, void *saveData)
{
PoketchSystem *poketchSys = PoketchSystem_GetFromFieldSystem();
@ -560,7 +560,7 @@ static const TouchScreenHitTable sMainPoketchButtons[] = {
static BOOL PoketchSystem_ButtonInit(PoketchSystem *poketchSys)
{
poketchSys->buttonManager = PoketchButtonManager_New(sMainPoketchButtons, NELEMS(sMainPoketchButtons), ov25_022542E4, poketchSys, 7);
poketchSys->buttonManager = PoketchButtonManager_New(sMainPoketchButtons, NELEMS(sMainPoketchButtons), PoketchSystem_OnButtonEvent, poketchSys, 7);
if (poketchSys->buttonManager != NULL) {
PoketchButtonManager_SetButtonTimer(poketchSys->buttonManager, 0, 0, 7);
@ -583,9 +583,9 @@ static void PoketchSystem_ButtonUpdate(PoketchSystem *poketchSys)
PoketchButtonManager_Update(poketchSys->buttonManager);
}
static void ov25_022542E4 (u32 buttonID, u32 buttonEvent, u32 touchEvent, void *system)
static void PoketchSystem_OnButtonEvent(u32 buttonID, u32 buttonEvent, u32 touchEvent, void *system)
{
PoketchSystem * poketchSys = (PoketchSystem *)system;
PoketchSystem *poketchSys = (PoketchSystem *)system;
if (ov25_0225450C(poketchSys) == FALSE) {
switch (touchEvent) {
@ -647,7 +647,7 @@ static void ov25_022542E4 (u32 buttonID, u32 buttonEvent, u32 touchEvent, void *
buttonEvent = BUTTON_MANAGER_STATE_NULL;
}
break;
case BUTTON_MANAGER_STATE_OUT:
case BUTTON_MANAGER_STATE_SLIDEOUT:
if ((poketchSys->unk_30 == 7) || (poketchSys->unk_30 == 10)) {
buttonEvent = BUTTON_MANAGER_STATE_TAP;
}
@ -698,39 +698,39 @@ void ov25_02254444 (u32 param0, u32 param1)
}
}
static inline BOOL inline_ov25_0225446C (u32 param0, u32 param1)
static inline BOOL PoketchSystem_InsideScreenBounds(u32 x, u32 y)
{
if (((u32)(param0 - 16) < (u32)(207 - 16)) & ((u32)(param1 - 16) < (u32)(175 - 16))) {
if (((u32)(x - POKETCH_SCREEN_MINX) < (u32)(POKETCH_SCREEN_MAXX - POKETCH_SCREEN_MINX)) & ((u32)(y - POKETCH_SCREEN_MINY) < (u32)(POKETCH_SCREEN_MAXY - POKETCH_SCREEN_MINY))) {
return TRUE;
}
return FALSE;
}
BOOL ov25_0225446C (u32 * param0, u32 * param1)
BOOL PoketchSystem_IsTouchingDisplay(u32 *x, u32 *y)
{
PoketchSystem *poketchSys = PoketchSystem_GetFromFieldSystem();
if ((poketchSys->unk_05 == 0) && (ov25_0225450C(poketchSys) == 0)) {
if (sub_020227A4(param0, param1)) {
return inline_ov25_0225446C(*param0, *param1);
if (TouchScreen_TouchLocation(x, y)) {
return PoketchSystem_InsideScreenBounds(*x, *y);
}
}
return 0;
return FALSE;
}
BOOL ov25_022544BC (u32 * param0, u32 * param1)
BOOL PoketchSystem_TappedDisplay(u32 *x, u32 *y)
{
PoketchSystem *poketchSys = PoketchSystem_GetFromFieldSystem();
if ((poketchSys->unk_05 == 0) && (ov25_0225450C(poketchSys) == 0)) {
if (sub_020227C0(param0, param1)) {
return inline_ov25_0225446C(*param0, *param1);
if (TouchScreen_TapLocation(x, y)) {
return PoketchSystem_InsideScreenBounds(*x, *y);
}
}
return 0;
return FALSE;
}
BOOL ov25_0225450C (const PoketchSystem *poketchSys)
@ -770,7 +770,7 @@ SaveData* PoketchSystem_SaveData(const PoketchSystem *poketchSys)
return poketchSys->saveData;
}
int PoketchSystem_BorderColor (const PoketchSystem *poketchSys)
int PoketchSystem_BorderColor(const PoketchSystem *poketchSys)
{
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(poketchSys->saveData);

View File

@ -208,7 +208,7 @@ static BOOL ov29_02256404 (UnkStruct_ov29_0225621C * param0)
{
u32 v0, v1;
if (ov25_0225446C(&v0, &v1)) {
if (PoketchSystem_IsTouchingDisplay(&v0, &v1)) {
if (((u32)(v0 - 16) < (u32)(172 - 16)) & ((u32)(v1 - 16) < (u32)(166 - 16))) {
v0 = (v0 - 16) >> 1;
v1 = (v1 - 16) >> 1;
@ -228,7 +228,7 @@ static BOOL ov29_02256460 (UnkStruct_ov29_0225621C * param0)
{
u32 v0, v1;
if (ov25_0225446C(&v0, &v1)) {
if (PoketchSystem_IsTouchingDisplay(&v0, &v1)) {
if (((u32)(v0 - 16) < (u32)(172 - 16)) & ((u32)(v1 - 16) < (u32)(166 - 16))) {
v0 = (v0 - 16) >> 1;
v1 = (v1 - 16) >> 1;

View File

@ -61,7 +61,7 @@ static BOOL ov31_022561D4 (void ** param0, PoketchSystem * param1, BGL * param2,
if (ov31_02256228(v0, param1, param2, param3)) {
if (SysTask_Start(ov31_022563CC, v0, 1) != NULL) {
*param0 = v0;
ov25_02254274(ov31_022563B0, v0);
PoketchSystem_SetSaveFunction(ov31_022563B0, v0);
return 1;
}
}
@ -254,7 +254,7 @@ static BOOL ov31_0225646C (UnkStruct_ov31_02256228 * param0)
if (ov31_022565B4(param0->unk_1EC, 1)) {
u32 v0, v1;
if (ov25_0225446C(&v0, &v1)) {
if (PoketchSystem_IsTouchingDisplay(&v0, &v1)) {
if ((v0 >= 16) && (v1 >= 16)) {
v0 = (v0 - 16) / 8;
v1 = (v1 - 16) / 8;

View File

@ -153,7 +153,7 @@ static BOOL ov32_02256308 (UnkStruct_ov32_0225621C * param0)
}
if (ov32_0225655C(param0->unk_74, 2)) {
param0->unk_04.unk_64 = ov25_0225446C(&(param0->unk_04.unk_68), &(param0->unk_04.unk_6C));
param0->unk_04.unk_64 = PoketchSystem_IsTouchingDisplay(&(param0->unk_04.unk_68), &(param0->unk_04.unk_6C));
if (param0->unk_04.unk_64) {
param0->unk_04.unk_66 = TouchScreen_Tapped();

View File

@ -210,7 +210,7 @@ static BOOL ov33_022563D0 (UnkStruct_ov33_0225621C * param0)
return 0;
}
param0->unk_04.unk_4C = ov25_0225446C(&param0->unk_04.unk_50, &param0->unk_04.unk_54);
param0->unk_04.unk_4C = PoketchSystem_IsTouchingDisplay(&param0->unk_04.unk_50, &param0->unk_04.unk_54);
if (param0->unk_04.unk_4C) {
if (((u32)(param0->unk_04.unk_50 - 16) < (u32)(207 - 16)) & ((u32)(param0->unk_04.unk_54 - 16) < (u32)(175 - 16))) {

View File

@ -201,7 +201,7 @@ static BOOL ov34_022562F0 (UnkStruct_ov34_0225621C * param0)
static BOOL ov34_022563E4 (UnkStruct_ov34_0225621C * param0, u32 * param1, u32 * param2)
{
if (ov25_0225450C(param0->unk_4C) == 0) {
if (sub_020227C0(param1, param2)) {
if (TouchScreen_TapLocation(param1, param2)) {
if (((u32)((*param1) - 24) < (u32)(200 - 24)) & ((u32)((*param2) - 24) < (u32)(168 - 24))) {
return 1;
}

View File

@ -193,7 +193,7 @@ static BOOL ov40_02256388 (UnkStruct_ov40_0225621C * param0)
if (ov25_0225450C(param0->unk_2C) == 0) {
u32 v0, v1;
if (sub_020227C0(&v0, &v1)) {
if (TouchScreen_TapLocation(&v0, &v1)) {
if (((u32)(v0 - 16) < (u32)(207 - 16)) & ((u32)(v1 - 16) < (u32)(175 - 16))) {
return 1;
}

View File

@ -283,7 +283,7 @@ static BOOL ov41_02256564 (UnkStruct_ov41_02256220 * param0)
{
u32 v0, v1;
if (ov25_0225446C(&v0, &v1)) {
if (PoketchSystem_IsTouchingDisplay(&v0, &v1)) {
if (((u32)(v0 - 16) < (u32)(171 - 16)) & ((u32)(v1 - 16) < (u32)(165 - 16))) {
v0 = (v0 - 16) >> 1;
v1 = (v1 - 16) >> 1;
@ -304,7 +304,7 @@ static BOOL ov41_022565C4 (UnkStruct_ov41_02256220 * param0)
{
u32 v0, v1;
if (ov25_0225446C(&v0, &v1)) {
if (PoketchSystem_IsTouchingDisplay(&v0, &v1)) {
if (((u32)(v0 - 16) < (u32)(171 - 16)) & ((u32)(v1 - 16) < (u32)(165 - 16))) {
v0 = (v0 - 16) >> 1;
v1 = (v1 - 16) >> 1;

View File

@ -187,7 +187,7 @@ static BOOL ov42_02256398 (void)
{
u32 x, y;
if (ov25_022544BC(&x, &y)) {
if (PoketchSystem_TappedDisplay(&x, &y)) {
x = (112 - x) * (112 - x);
y = (144 - y) * (144 - y);

View File

@ -168,7 +168,7 @@ static BOOL ov49_02256348 (UnkStruct_ov49_0225621C * param0)
if (ov25_0225450C(param0->unk_0C) == 0) {
u32 v0, v1;
if (sub_020227A4(&v0, &v1)) {
if (TouchScreen_TouchLocation(&v0, &v1)) {
if ((136 <= v1) && (v1 < 160) && (48 <= v0) && (v0 < 184)) {
u32 v2 = (v0 - 48) / 16;

View File

@ -656,7 +656,7 @@ static int ov56_02256BC0 (UnkStruct_ov56_02256468 * param0)
switch (v0) {
case 0:
ov56_0225717C(param0, 0);
sub_020227A4(&v1, &v2);
TouchScreen_TouchLocation(&v1, &v2);
ov56_02256994(param0->unk_1FC[2], v2);
if (param0->unk_2D8.unk_00 > 3) {

View File

@ -2462,7 +2462,7 @@ void ov62_02233664 (UnkStruct_ov62_0223359C * param0)
BOOL v3;
BOOL v4 = 0;
v3 = sub_020227A4(&v0, &v1);
v3 = TouchScreen_TouchLocation(&v0, &v1);
if (param0->unk_14) {
sub_0200D33C(param0->unk_18[0]);
@ -3290,7 +3290,7 @@ static void ov62_02234440 (UnkStruct_0208C06C * param0)
param0->unk_41D8.unk_00 = 1;
param0->unk_41D8.unk_04 = 0;
sub_020227C0(&v0, &v1);
TouchScreen_TapLocation(&v0, &v1);
sub_0208BA30(param0->unk_41D8.unk_08);
sub_0208B8B0(param0->unk_41D8.unk_08, 1);
sub_0208B9E0(param0->unk_41D8.unk_08, 1);

View File

@ -116,7 +116,7 @@ int ov76_0223B278 (UnkStruct_ov76_0223DE00 * param0, u8 param1)
param0->unk_324[v0].unk_05 = 190;
param0->unk_324[v0].unk_06 = 70;
sub_020227A4(&v1, &v2);
TouchScreen_TouchLocation(&v1, &v2);
param0->unk_324[v0].unk_05 = v1;
param0->unk_324[v0].unk_06 = v2;

View File

@ -1166,7 +1166,7 @@ static BOOL ov76_0223DF94 (UnkStruct_ov76_0223DE00 * param0)
BOOL v14;
v13 = param0->unk_D4.unk_00;
v14 = sub_020227A4(&v11, &v12);
v14 = TouchScreen_TouchLocation(&v11, &v12);
if (v14) {
int v15;

View File

@ -535,7 +535,7 @@ static BOOL ov111_021D10B8 (UnkStruct_ov111_021D0F7C * param0)
param0->unk_15[param0->unk_0E] = v3;
param0->unk_0E++;
sub_020227A4(&v0, &v1);
TouchScreen_TouchLocation(&v0, &v1);
sub_0200E084(&param0->unk_5C[15], 0);
GXLayers_EngineBToggleLayers((GX_PLANEMASK_BG0), 0);
param0->unk_08 = 2;

View File

@ -1008,7 +1008,7 @@ void ov116_02263BA0 (UnkStruct_ov116_02262A8C * param0)
u32 v0, v1;
s16 v2, v3;
BOOL v4;
BOOL v5 = sub_020227A4(&v0, &v1);
BOOL v5 = TouchScreen_TouchLocation(&v0, &v1);
TouchScreenHitTable * v6;
int v7;

View File

@ -139,26 +139,26 @@ BOOL TouchScreen_Tapped(void)
return gCoreSys.touchPressed;
}
BOOL sub_020227A4 (u32 * param0, u32 * param1)
BOOL TouchScreen_TouchLocation(u32 *x, u32 *y)
{
if (gCoreSys.touchHeld) {
*param0 = gCoreSys.touchX;
*param1 = gCoreSys.touchY;
return 1;
*x = gCoreSys.touchX;
*y = gCoreSys.touchY;
return TRUE;
}
return 0;
return FALSE;
}
BOOL sub_020227C0 (u32 * param0, u32 * param1)
BOOL TouchScreen_TapLocation(u32 * x, u32 * y)
{
if (gCoreSys.touchPressed) {
*param0 = gCoreSys.touchX;
*param1 = gCoreSys.touchY;
return 1;
*x = gCoreSys.touchX;
*y = gCoreSys.touchY;
return TRUE;
}
return 0;
return FALSE;
}
int sub_020227DC (const TouchScreenHitTable *hitTable, u32 param1, u32 param2)