Pad_Update

This commit is contained in:
krystalgamer 2024-09-30 18:53:42 +02:00
parent dd4d1feacb
commit 79c5741edb
4 changed files with 141 additions and 36 deletions

View File

@ -362,11 +362,11 @@ char Font::getCharIndex(char a2)
if (a2 == 165)
{
if (gSControl.field_14C <= 512)
if (gSControl[0].field_14C <= 512)
{
if (gSControl.field_14C != 512)
if (gSControl[0].field_14C != 512)
{
switch (gSControl.field_14C)
switch (gSControl[0].field_14C)
{
case 2:
return 1;
@ -379,7 +379,7 @@ char Font::getCharIndex(char a2)
return 24;
}
}
else if (gSControl.field_14C == 1024)
else if (gSControl[0].field_14C == 1024)
{
return 23;
}
@ -387,11 +387,11 @@ char Font::getCharIndex(char a2)
if (a2 == 167)
{
if (gSControl.field_148 <= 512)
if (gSControl[0].field_148 <= 512)
{
if (gSControl.field_148 != 512)
if (gSControl[0].field_148 != 512)
{
switch (gSControl.field_148)
switch (gSControl[0].field_148)
{
case 2:
return 1;
@ -404,7 +404,7 @@ char Font::getCharIndex(char a2)
return 24;
}
}
else if (gSControl.field_148 == 1024)
else if (gSControl[0].field_148 == 1024)
{
return 23;
}
@ -412,11 +412,11 @@ char Font::getCharIndex(char a2)
if (a2 == 166)
{
if (gSControl.field_144 <= 512)
if (gSControl[0].field_144 <= 512)
{
if (gSControl.field_144 != 512)
if (gSControl[0].field_144 != 512)
{
switch (gSControl.field_144)
switch (gSControl[0].field_144)
{
case 2:
return 1;
@ -429,7 +429,7 @@ char Font::getCharIndex(char a2)
return 24;
}
}
else if (gSControl.field_144 == 1024)
else if (gSControl[0].field_144 == 1024)
{
return 23;
}
@ -440,11 +440,11 @@ char Font::getCharIndex(char a2)
if (!DifficultyLevel)
return 0;
if (gSControl.field_140 <= 512)
if (gSControl[0].field_140 <= 512)
{
if (gSControl.field_140 != 512)
if (gSControl[0].field_140 != 512)
{
switch (gSControl.field_140)
switch (gSControl[0].field_140)
{
case 2:
return 1;
@ -457,7 +457,7 @@ char Font::getCharIndex(char a2)
return 24;
}
}
else if (gSControl.field_140 == 1024)
else if (gSControl[0].field_140 == 1024)
{
return 23;
}

View File

@ -1,14 +1,56 @@
#include "ps2pad.h"
#include "PCInput.h"
#include "PCShell.h"
#include "validate.h"
SControl gSControl;
SControl gSControl[NUM_CONTROLLERS];
EXPORT i32 Pad_IdleTime;
static int gPadActuator[255];
// @SMALLTODO
void Pad_Update(void)
// @Ok
// @Matching
i32 Pad_Update(void)
{
printf("void Pad_Update(void)");
Pad_IdleTime++;
u32 v3;
u32 v4;
PCINPUT_GetMappedStates(&v3, &v4);
if (PCSHELL_UpdateMouse())
Pad_IdleTime = 0;
for (i32 i = 0; i < NUM_CONTROLLERS; i++)
{
gSControl[i].field_16C = 65;
Pad_Button(&gSControl[i].Triangle, v3 & 0x80);
Pad_Button(&gSControl[i].Square, v3 & 0x40);
Pad_Button(&gSControl[i].Circle, v3 & 0x20);
Pad_Button(&gSControl[i].X, v3 & 0x10);
Pad_Button(&gSControl[i].LeftOne, v3 & 0x100);
Pad_Button(&gSControl[i].LeftTwo, 0);
Pad_Button(&gSControl[i].RightOne, v3 & 0x200);
Pad_Button(&gSControl[i].RightTwo, v3 & 0x400);
Pad_Button(&gSControl[i].Left, v3 & 4);
Pad_Button(&gSControl[i].Right, v3 & 8);
Pad_Button(&gSControl[i].Up, v3 & 1);
Pad_Button(&gSControl[i].Down, v3 & 2);
Pad_Button(&gSControl[i].AnalogueLeft, 0);
Pad_Button(&gSControl[i].AnalogueRight, 0);
Pad_Button(&gSControl[i].Start, v3 & 0x1000);
Pad_Button(&gSControl[i].Select, 0);
if ( !i )
{
Pad_Button(&gSControl[0].Crouch, v3 & 0x10);
Pad_Button(&gSControl[0].Jump, v3 & 0x80);
Pad_Button(&gSControl[0].SmartBomb, v3 & 0x40);
Pad_Button(&gSControl[0].SelectWeapon, v3 & 0x20);
}
}
DCPad_ExpireVibrations();
return 0;
}
// @NotOk
@ -57,7 +99,6 @@ void DCPad_Vibrate(i32,signed char,u8,u8)
printf("DCPad_Vibrate(i32,signed char,u8,u8)");
}
EXPORT i32 Pad_IdleTime;
// @Ok
// @Matching
@ -138,10 +179,45 @@ void Pad_SetAnalogueMapping(SControl *,u8,u8,u8,u8,i32,i32,i32,i32)
void validate_SControl(void)
{
VALIDATE_SIZE(SControl, 0x18C);
VALIDATE(SControl, Triangle, 0x0);
VALIDATE(SControl, Square, 0x10);
VALIDATE(SControl, Circle, 0x20);
VALIDATE(SControl, X, 0x30);
VALIDATE(SControl, LeftOne, 0x40);
VALIDATE(SControl, LeftTwo, 0x50);
VALIDATE(SControl, RightOne, 0x60);
VALIDATE(SControl, RightTwo, 0x70);
VALIDATE(SControl, Left, 0x80);
VALIDATE(SControl, Right, 0x90);
VALIDATE(SControl, Up, 0xA0);
VALIDATE(SControl, Down, 0xB0);
VALIDATE(SControl, AnalogueLeft, 0xC0);
VALIDATE(SControl, AnalogueRight, 0xD0);
VALIDATE(SControl, Start, 0xE0);
VALIDATE(SControl, Select, 0xF0);
VALIDATE(SControl, Crouch, 0x100);
VALIDATE(SControl, Jump, 0x110);
VALIDATE(SControl, SmartBomb, 0x120);
VALIDATE(SControl, SelectWeapon, 0x130);
VALIDATE(SControl, field_140, 0x140);
VALIDATE(SControl, field_144, 0x144);
VALIDATE(SControl, field_148, 0x148);
VALIDATE(SControl, field_140, 0x140);
VALIDATE(SControl, field_144, 0x144);
VALIDATE(SControl, field_148, 0x148);
VALIDATE(SControl, field_14C, 0x14C);
VALIDATE(SControl, field_16C, 0x16C);
}
void validate_SButton(void)

View File

@ -5,16 +5,6 @@
#include "export.h"
struct SControl
{
u8 pad[0x140];
i32 field_140;
i32 field_144;
i32 field_148;
i32 field_14C;
};
struct SButton
{
u8 Pressed;
@ -26,6 +16,43 @@ struct SButton
i32 TriggeredTime;
};
struct SControl
{
SButton Triangle;
SButton Square;
SButton Circle;
SButton X;
SButton LeftOne;
SButton LeftTwo;
SButton RightOne;
SButton RightTwo;
SButton Left;
SButton Right;
SButton Up;
SButton Down;
SButton AnalogueLeft;
SButton AnalogueRight;
SButton Start;
SButton Select;
SButton Crouch;
SButton Jump;
SButton SmartBomb;
SButton SelectWeapon;
i32 field_140;
i32 field_144;
i32 field_148;
i32 field_14C;
u8 padAfter14C[0x16C-0x14C-4];
i32 field_16C;
u8 padBottom[0x18C-0x16C-4];
};
EXPORT void Pad_SetDigitalMapping(SControl*, i32, i32, i32, i32);
EXPORT void Pad_ActuatorOff(u8, u8);
EXPORT u16 Pad_GetActuatorTime(u8, u8);
@ -40,10 +67,12 @@ EXPORT void Pad_ClearAllOne(i32);
EXPORT void Pad_ClearTriggers(SControl *);
EXPORT void Pad_InitAtStart(void);
EXPORT void Pad_SetAnalogueMapping(SControl *,u8,u8,u8,u8,i32,i32,i32,i32);
EXPORT void Pad_Update(void);
EXPORT i32 Pad_Update(void);
void validate_SControl(void);
void validate_SButton(void);
EXPORT extern SControl gSControl;
static const i32 NUM_CONTROLLERS = 1;
EXPORT extern SControl gSControl[NUM_CONTROLLERS];
#endif

View File

@ -343,9 +343,9 @@ void Shell_LegalScreen(void)
Front_ClearScreen();
DrawSync();
Pad_ClearTriggers(&gSControl);
Pad_ClearTriggers(gSControl);
Pad_Update();
Pad_ClearTriggers(&gSControl);
Pad_ClearTriggers(gSControl);
Sprite2* v0 = new Sprite2("LegalPC.bmp", 1, 0, 0, 3);
u32 v3 = Vblanks + 180;
@ -375,7 +375,7 @@ void Shell_LegalScreen(void)
Front_ClearScreen();
DrawSync();
Pad_ClearTriggers(&gSControl);
Pad_ClearTriggers(gSControl);
}
}