mirror of
https://github.com/dborth/vbagx.git
synced 2024-11-22 10:39:18 +01:00
Forgot to include the new file.
This commit is contained in:
parent
e0f60f7ba6
commit
31937a037e
@ -31,7 +31,7 @@
|
||||
#include "gba/GBAinline.h"
|
||||
|
||||
u32 MetroidZeroInput(unsigned short pad) {
|
||||
u32 J = StandardMovement(pad) | DecodeGamecube(pad) | DecodeClassic(pad) | DecodeKeyboard(pad);
|
||||
u32 J = StandardMovement(pad) | DecodeClassic(pad) | DecodeKeyboard(pad);
|
||||
u8 BallState = CPUReadByte(0x30015df); // 0 = stand, 1 = crouch, 2 = ball
|
||||
u16 Health = CPUReadByte(0x3001536); // 0 = stand, 1 = crouch, 2 = ball
|
||||
static u16 OldHealth = 0;
|
||||
@ -50,6 +50,7 @@ u32 MetroidZeroInput(unsigned short pad) {
|
||||
if (BallState == 1) // Can't enter morph ball without pressing C!
|
||||
J &= ~VBA_DOWN;
|
||||
|
||||
bool MorphBallButton = 0;
|
||||
#ifdef HW_RVL
|
||||
WPADData * wp = WPAD_Data(pad);
|
||||
|
||||
@ -109,13 +110,7 @@ u32 MetroidZeroInput(unsigned short pad) {
|
||||
|
||||
// Morph Ball
|
||||
if ((wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_d & WPAD_NUNCHUK_BUTTON_C)) {
|
||||
if (BallState == 2) { // ball
|
||||
Morph = -1;
|
||||
} else if (BallState == 1) {
|
||||
Morph = 2;
|
||||
} else {
|
||||
Morph = 1;
|
||||
}
|
||||
MorphBallButton = true;
|
||||
}
|
||||
// Missile
|
||||
if (wp->btns_h & WPAD_BUTTON_DOWN) {
|
||||
@ -163,6 +158,20 @@ u32 MetroidZeroInput(unsigned short pad) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
{
|
||||
u32 gc = PAD_ButtonsHeld(pad);
|
||||
u32 pressed = PAD_ButtonsDown(pad);
|
||||
if (pressed & PAD_BUTTON_X) MorphBallButton = true;
|
||||
if (gc & PAD_BUTTON_A) J |= VBA_BUTTON_B; // shoot beam
|
||||
if (gc & PAD_BUTTON_B) J |= VBA_BUTTON_A; // jump
|
||||
if (gc & PAD_BUTTON_Y) MissileCount = 1; // missile
|
||||
if (gc & PAD_TRIGGER_Z) J |= VBA_BUTTON_START; // map
|
||||
if (gc & PAD_TRIGGER_L) J |= VBA_BUTTON_L; // aim up/down
|
||||
if (gc & PAD_BUTTON_START) J |= VBA_BUTTON_SELECT; // toggle super missiles
|
||||
if (gc & PAD_TRIGGER_R) J |= VBA_BUTTON_R; // ???
|
||||
}
|
||||
switch (MissileCount) {
|
||||
case 1:
|
||||
case 2:
|
||||
@ -178,7 +187,15 @@ u32 MetroidZeroInput(unsigned short pad) {
|
||||
MissileCount = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (MorphBallButton) {
|
||||
if (BallState == 2) { // ball
|
||||
Morph = -1;
|
||||
} else if (BallState == 1) {
|
||||
Morph = 2;
|
||||
} else {
|
||||
Morph = 1;
|
||||
}
|
||||
}
|
||||
switch (Morph) {
|
||||
case 1:
|
||||
J &= ~(VBA_UP | VBA_DOWN | VBA_LEFT | VBA_RIGHT | VBA_BUTTON_L);
|
||||
@ -218,7 +235,6 @@ u32 MetroidZeroInput(unsigned short pad) {
|
||||
Morph = 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
return J;
|
||||
}
|
||||
|
350
source/ngc/inputmortalkombat.cpp
Normal file
350
source/ngc/inputmortalkombat.cpp
Normal file
@ -0,0 +1,350 @@
|
||||
/****************************************************************************
|
||||
* Visual Boy Advance GX
|
||||
*
|
||||
* Carl Kenner April 2009
|
||||
*
|
||||
* inputmortalkombat.cpp
|
||||
*
|
||||
* Wii/Gamecube controls for Mortal Kombat
|
||||
***************************************************************************/
|
||||
|
||||
#include <gccore.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <ogcsys.h>
|
||||
#include <unistd.h>
|
||||
#include <wiiuse/wpad.h>
|
||||
|
||||
#include "vba.h"
|
||||
#include "button_mapping.h"
|
||||
#include "audio.h"
|
||||
#include "video.h"
|
||||
#include "input.h"
|
||||
#include "gameinput.h"
|
||||
#include "vbasupport.h"
|
||||
#include "wiiusbsupport.h"
|
||||
#include "gba/GBA.h"
|
||||
#include "gba/bios.h"
|
||||
#include "gba/GBAinline.h"
|
||||
|
||||
u32 MK1Input(unsigned short pad) {
|
||||
u32 J = StandardMovement(pad) | DecodeKeyboard(pad);
|
||||
u8 Health = gbReadMemory(0xc695);
|
||||
static u8 OldHealth = 0;
|
||||
|
||||
// Rumble when they lose health!
|
||||
if (Health < OldHealth)
|
||||
systemGameRumble(5);
|
||||
OldHealth = Health;
|
||||
|
||||
#ifdef HW_RVL
|
||||
WPADData * wp = WPAD_Data(pad);
|
||||
|
||||
// Punch
|
||||
if (wp->btns_h & WPAD_BUTTON_UP || wp->btns_h & WPAD_BUTTON_LEFT)
|
||||
J |= VBA_BUTTON_B;
|
||||
// Kick
|
||||
if (wp->btns_h & WPAD_BUTTON_DOWN || wp->btns_h & WPAD_BUTTON_RIGHT)
|
||||
J |= VBA_BUTTON_A;
|
||||
// Block
|
||||
if ((wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z))
|
||||
J |= VBA_BUTTON_A | VBA_BUTTON_B; // different from MK2
|
||||
// Throw
|
||||
if (wp->btns_h & WPAD_BUTTON_A)
|
||||
J |= VBA_BUTTON_B | VBA_RIGHT; // CAKTODO check which way we are facing
|
||||
// Pause
|
||||
if (wp->btns_h & WPAD_BUTTON_MINUS)
|
||||
J |= VBA_BUTTON_SELECT;
|
||||
// Start
|
||||
if (wp->btns_h & WPAD_BUTTON_PLUS)
|
||||
J |= VBA_BUTTON_START;
|
||||
// Special move
|
||||
if (wp->btns_h & WPAD_BUTTON_B)
|
||||
{
|
||||
// CAKTODO
|
||||
}
|
||||
|
||||
if (wp->exp.type == WPAD_EXP_CLASSIC) {
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_UP) J |= VBA_UP;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_X | WPAD_CLASSIC_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_A | WPAD_CLASSIC_BUTTON_B)) J |= VBA_BUTTON_A;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR) J |= VBA_BUTTON_B | VBA_RIGHT; // CAKTODO
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_BUTTON_B | VBA_BUTTON_A; // block
|
||||
}
|
||||
|
||||
#endif
|
||||
{
|
||||
u32 gc = PAD_ButtonsHeld(pad);
|
||||
// DPad moves
|
||||
if (gc & PAD_BUTTON_UP) J |= VBA_UP;
|
||||
if (gc & PAD_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (gc & PAD_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (gc & PAD_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (gc & PAD_BUTTON_START) J |= VBA_BUTTON_START;
|
||||
if (gc & (PAD_BUTTON_B | PAD_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (gc & (PAD_BUTTON_A | PAD_BUTTON_X)) J |= VBA_BUTTON_A;
|
||||
if (gc & PAD_TRIGGER_Z) J |= VBA_BUTTON_B | VBA_RIGHT; // CAKTODO
|
||||
if (gc & PAD_TRIGGER_R) J |= VBA_BUTTON_B | VBA_BUTTON_A; // block
|
||||
}
|
||||
return J;
|
||||
}
|
||||
|
||||
u32 MK4Input(unsigned short pad)
|
||||
{
|
||||
u32 J = StandardMovement(pad) | DecodeKeyboard(pad);
|
||||
u8 Health = 0;
|
||||
static u8 OldHealth = 0;
|
||||
|
||||
// Rumble when they lose health!
|
||||
if (Health < OldHealth)
|
||||
systemGameRumble(20);
|
||||
OldHealth = Health;
|
||||
|
||||
#ifdef HW_RVL
|
||||
WPADData * wp = WPAD_Data(pad);
|
||||
|
||||
// Punch
|
||||
if (wp->btns_h & WPAD_BUTTON_UP || wp->btns_h & WPAD_BUTTON_LEFT)
|
||||
J |= VBA_BUTTON_B;
|
||||
// Kick
|
||||
if (wp->btns_h & WPAD_BUTTON_DOWN || wp->btns_h & WPAD_BUTTON_RIGHT)
|
||||
J |= VBA_BUTTON_A;
|
||||
// Block
|
||||
if ((wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z))
|
||||
J |= VBA_BUTTON_START;
|
||||
// Throw
|
||||
if (wp->btns_h & WPAD_BUTTON_A)
|
||||
J |= VBA_BUTTON_B | VBA_RIGHT; // CAKTODO check which way we are facing
|
||||
// Pause
|
||||
if (wp->btns_h & WPAD_BUTTON_MINUS)
|
||||
J |= VBA_BUTTON_SELECT;
|
||||
// Start
|
||||
if (wp->btns_h & WPAD_BUTTON_PLUS)
|
||||
J |= VBA_BUTTON_START;
|
||||
// Special move
|
||||
if (wp->btns_h & WPAD_BUTTON_B)
|
||||
{
|
||||
// CAKTODO
|
||||
}
|
||||
if (wp->exp.type == WPAD_EXP_CLASSIC) {
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_UP) J |= VBA_UP;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_X | WPAD_CLASSIC_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_A | WPAD_CLASSIC_BUTTON_B)) J |= VBA_BUTTON_A;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR) J |= VBA_BUTTON_B | VBA_RIGHT; // CAKTODO
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_BUTTON_START; // block
|
||||
}
|
||||
#endif
|
||||
{
|
||||
u32 gc = PAD_ButtonsHeld(pad);
|
||||
// DPad moves
|
||||
if (gc & PAD_BUTTON_UP) J |= VBA_UP;
|
||||
if (gc & PAD_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (gc & PAD_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (gc & PAD_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (gc & PAD_BUTTON_START) J |= VBA_BUTTON_START;
|
||||
if (gc & (PAD_BUTTON_B | PAD_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (gc & (PAD_BUTTON_A | PAD_BUTTON_X)) J |= VBA_BUTTON_A;
|
||||
if (gc & PAD_TRIGGER_Z) J |= VBA_BUTTON_B | VBA_RIGHT; // CAKTODO
|
||||
if (gc & PAD_TRIGGER_R) J |= VBA_BUTTON_START; // block
|
||||
}
|
||||
|
||||
return J;
|
||||
}
|
||||
|
||||
u32 MKAInput(unsigned short pad)
|
||||
{
|
||||
u32 J = StandardMovement(pad) | DecodeKeyboard(pad);
|
||||
u8 Health = 0;
|
||||
static u8 OldHealth = 0;
|
||||
|
||||
// Rumble when they lose health!
|
||||
if (Health < OldHealth)
|
||||
systemGameRumble(20);
|
||||
OldHealth = Health;
|
||||
|
||||
#ifdef HW_RVL
|
||||
WPADData * wp = WPAD_Data(pad);
|
||||
|
||||
// Punch
|
||||
if (wp->btns_h & WPAD_BUTTON_UP || wp->btns_h & WPAD_BUTTON_LEFT)
|
||||
J |= VBA_BUTTON_B;
|
||||
// Kick
|
||||
if (wp->btns_h & WPAD_BUTTON_DOWN || wp->btns_h & WPAD_BUTTON_RIGHT)
|
||||
J |= VBA_BUTTON_A;
|
||||
// Block
|
||||
if ((wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z))
|
||||
J |= VBA_BUTTON_R;
|
||||
// Run (supposed to be change styles)
|
||||
if ((wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & WPAD_NUNCHUK_BUTTON_C))
|
||||
J |= VBA_BUTTON_L;
|
||||
// Throw
|
||||
if (wp->btns_h & WPAD_BUTTON_A)
|
||||
J |= VBA_RIGHT; // CAKTODO check which way we are facing
|
||||
// Pause
|
||||
if (wp->btns_h & WPAD_BUTTON_PLUS || wp->btns_h & WPAD_BUTTON_MINUS)
|
||||
J |= VBA_BUTTON_SELECT;
|
||||
// Special move
|
||||
if (wp->btns_h & WPAD_BUTTON_B)
|
||||
{
|
||||
// CAKTODO
|
||||
}
|
||||
if (wp->exp.type == WPAD_EXP_CLASSIC) {
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_UP) J |= VBA_UP;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_X | WPAD_CLASSIC_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_A | WPAD_CLASSIC_BUTTON_B)) J |= VBA_BUTTON_A;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR) J |= VBA_RIGHT; // CAKTODO
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_BUTTON_R; // block
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_L) J |= VBA_BUTTON_L; // run
|
||||
}
|
||||
#endif
|
||||
{
|
||||
u32 gc = PAD_ButtonsHeld(pad);
|
||||
// DPad moves
|
||||
if (gc & PAD_BUTTON_UP) J |= VBA_UP;
|
||||
if (gc & PAD_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (gc & PAD_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (gc & PAD_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (gc & PAD_BUTTON_START) J |= VBA_BUTTON_START;
|
||||
if (gc & (PAD_BUTTON_B | PAD_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (gc & (PAD_BUTTON_A | PAD_BUTTON_X)) J |= VBA_BUTTON_A;
|
||||
if (gc & PAD_TRIGGER_Z) J |= VBA_RIGHT; // CAKTODO
|
||||
if (gc & PAD_TRIGGER_R) J |= VBA_BUTTON_R; // block
|
||||
if (gc & PAD_TRIGGER_L) J |= VBA_BUTTON_L; // block
|
||||
}
|
||||
|
||||
return J;
|
||||
}
|
||||
|
||||
u32 MKTEInput(unsigned short pad)
|
||||
{
|
||||
static u32 prevJ = 0, prevPrevJ = 0;
|
||||
u32 J = StandardMovement(pad) | DecodeKeyboard(pad);
|
||||
bool throwButton = false;
|
||||
u8 Health;
|
||||
u8 Side;
|
||||
if (RomIdCode & 0xFFFFFF == MKDA)
|
||||
{
|
||||
Health = CPUReadByte(0x3000760); // 731 or 760
|
||||
Side = CPUReadByte(0x3000747);
|
||||
} else {
|
||||
Health = CPUReadByte(0x3000761); // or 790
|
||||
Side = CPUReadByte(0x3000777);
|
||||
}
|
||||
u32 Forwards, Back;
|
||||
if (Side == 0) {
|
||||
Forwards = VBA_RIGHT;
|
||||
Back = VBA_LEFT;
|
||||
} else {
|
||||
Forwards = VBA_LEFT;
|
||||
Back = VBA_RIGHT;
|
||||
}
|
||||
|
||||
// Rumble when they lose health!
|
||||
static u8 OldHealth = 0;
|
||||
if (Health < OldHealth)
|
||||
systemGameRumble(20);
|
||||
OldHealth = Health;
|
||||
|
||||
#ifdef HW_RVL
|
||||
WPADData * wp = WPAD_Data(pad);
|
||||
|
||||
// Punch
|
||||
if (wp->btns_h & WPAD_BUTTON_UP || wp->btns_h & WPAD_BUTTON_LEFT)
|
||||
J |= VBA_BUTTON_B;
|
||||
// Kick
|
||||
if (wp->btns_h & WPAD_BUTTON_DOWN || wp->btns_h & WPAD_BUTTON_RIGHT)
|
||||
J |= VBA_BUTTON_A;
|
||||
// Block
|
||||
if ((wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z))
|
||||
J |= VBA_BUTTON_R;
|
||||
// Change styles
|
||||
if ((wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & WPAD_NUNCHUK_BUTTON_C))
|
||||
J |= VBA_BUTTON_L;
|
||||
// Throw
|
||||
if (wp->btns_h & WPAD_BUTTON_A) throwButton=true;
|
||||
// Pause
|
||||
if (wp->btns_h & WPAD_BUTTON_MINUS)
|
||||
J |= VBA_BUTTON_SELECT;
|
||||
// Start
|
||||
if (wp->btns_h & WPAD_BUTTON_PLUS)
|
||||
J |= VBA_BUTTON_START;
|
||||
// Special move
|
||||
if (wp->btns_h & WPAD_BUTTON_B) {
|
||||
// CAKTODO
|
||||
}
|
||||
// Speed
|
||||
if (wp->btns_h & WPAD_BUTTON_1 || wp->btns_h & WPAD_BUTTON_2) {
|
||||
J |= VBA_SPEED;
|
||||
}
|
||||
if (wp->exp.type == WPAD_EXP_CLASSIC) {
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_UP) J |= VBA_UP;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_X | WPAD_CLASSIC_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (wp->btns_h & (WPAD_CLASSIC_BUTTON_A | WPAD_CLASSIC_BUTTON_B)) J |= VBA_BUTTON_A;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR) throwButton = true;
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_BUTTON_R; // block
|
||||
if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_L) J |= VBA_BUTTON_L; // run
|
||||
}
|
||||
#endif
|
||||
{
|
||||
u32 gc = PAD_ButtonsHeld(pad);
|
||||
// DPad moves
|
||||
if (gc & PAD_BUTTON_UP) J |= VBA_UP;
|
||||
if (gc & PAD_BUTTON_DOWN) J |= VBA_DOWN;
|
||||
if (gc & PAD_BUTTON_LEFT) J |= VBA_LEFT;
|
||||
if (gc & PAD_BUTTON_RIGHT) J |= VBA_RIGHT;
|
||||
if (gc & PAD_BUTTON_START) J |= VBA_BUTTON_START;
|
||||
if (gc & (PAD_BUTTON_B | PAD_BUTTON_Y)) J |= VBA_BUTTON_B;
|
||||
if (gc & (PAD_BUTTON_A | PAD_BUTTON_X)) J |= VBA_BUTTON_A;
|
||||
if (gc & PAD_TRIGGER_Z) J |= throwButton = true;
|
||||
if (gc & PAD_TRIGGER_R) J |= VBA_BUTTON_R; // block
|
||||
if (gc & PAD_TRIGGER_L) J |= VBA_BUTTON_L; // change styles
|
||||
}
|
||||
if (throwButton)
|
||||
{
|
||||
if ((prevJ & Forwards && prevJ & VBA_BUTTON_A && prevJ & VBA_BUTTON_B) || ((prevPrevJ & Forwards) && !(prevJ & Forwards)))
|
||||
J |= Forwards | VBA_BUTTON_A | VBA_BUTTON_B; // R, R+1+2 = throw
|
||||
|
||||
else if (prevJ & Forwards)
|
||||
{
|
||||
J &= ~Forwards;
|
||||
J &= ~VBA_BUTTON_A;
|
||||
J &= ~VBA_BUTTON_B;
|
||||
}
|
||||
else
|
||||
J |= Forwards;
|
||||
|
||||
}
|
||||
|
||||
if ((J & 48) == 48)
|
||||
J &= ~16;
|
||||
if ((J & 192) == 192)
|
||||
J &= ~128;
|
||||
prevPrevJ = prevJ;
|
||||
prevJ = J;
|
||||
|
||||
return J;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user