Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From d50e59820ffd3209d2f5856dbe2ea3f50e917ee4 Mon Sep 17 00:00:00 2001
- From: gocha <gochaism@gmail.com>
- Date: Mon, 10 Jan 2011 17:43:45 +0900
- Subject: [PATCH 3/3] Add and fix Autofire for D-pad.
- ---
- win32/win32.cpp | 46 +++++++++++++++++++++++++---------------------
- win32/wsnes9x.cpp | 36 ++++++++++++++++++------------------
- win32/wsnes9x.h | 20 ++++++++++++++++----
- 3 files changed, 59 insertions(+), 43 deletions(-)
- diff --git a/win32/win32.cpp b/win32/win32.cpp
- index 2b0f44d..7556d8a 100644
- --- a/win32/win32.cpp
- +++ b/win32/win32.cpp
- @@ -865,38 +865,38 @@ void S9xWinScanJoypads ()
- PadState[0] |= ToggleJoypadStorage[J].A||TurboToggleJoypadStorage[J].A ? 128 : 0;
- PadState[1] = 0;
- - PadState[1] |= ToggleJoypadStorage[J].Right ? 1 : 0;
- - PadState[1] |= ToggleJoypadStorage[J].Left ? 2 : 0;
- - PadState[1] |= ToggleJoypadStorage[J].Down ? 4 : 0;
- - PadState[1] |= ToggleJoypadStorage[J].Up ? 8 : 0;
- - PadState[1] |= ToggleJoypadStorage[J].Start||TurboToggleJoypadStorage[J].Start ? 16 : 0;
- + PadState[1] |= ToggleJoypadStorage[J].Right||TurboToggleJoypadStorage[J].Right ? 1 : 0;
- + PadState[1] |= ToggleJoypadStorage[J].Left||TurboToggleJoypadStorage[J].Left ? 2 : 0;
- + PadState[1] |= ToggleJoypadStorage[J].Down||TurboToggleJoypadStorage[J].Down ? 4 : 0;
- + PadState[1] |= ToggleJoypadStorage[J].Up||TurboToggleJoypadStorage[J].Up ? 8 : 0;
- + PadState[1] |= ToggleJoypadStorage[J].Start||TurboToggleJoypadStorage[J].Start ? 16 : 0;
- PadState[1] |= ToggleJoypadStorage[J].Select||TurboToggleJoypadStorage[J].Select ? 32 : 0;
- - PadState[1] |= ToggleJoypadStorage[J].Y||TurboToggleJoypadStorage[J].Y ? 64 : 0;
- - PadState[1] |= ToggleJoypadStorage[J].B||TurboToggleJoypadStorage[J].B ? 128 : 0;
- + PadState[1] |= ToggleJoypadStorage[J].Y||TurboToggleJoypadStorage[J].Y ? 64 : 0;
- + PadState[1] |= ToggleJoypadStorage[J].B||TurboToggleJoypadStorage[J].B ? 128 : 0;
- }
- // auto-hold AND regular key/joystick presses
- - if(S9xGetState(Joypad[J+8].Left))
- + if(S9xGetState(Joypad[J+8].Autohold))
- {
- PadState[0] ^= (!S9xGetState(Joypad[J].R)||!S9xGetState(Joypad[J+8].R)) ? 16 : 0;
- PadState[0] ^= (!S9xGetState(Joypad[J].L)||!S9xGetState(Joypad[J+8].L)) ? 32 : 0;
- PadState[0] ^= (!S9xGetState(Joypad[J].X)||!S9xGetState(Joypad[J+8].X)) ? 64 : 0;
- PadState[0] ^= (!S9xGetState(Joypad[J].A)||!S9xGetState(Joypad[J+8].A)) ? 128 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Right)) ? 1 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Right_Up)) ? 1 + 8 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Right)) ? 1 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Right_Up)) ? 1 + 8 : 0;
- PadState[1] ^= (!S9xGetState(Joypad[J].Right_Down)) ? 1 + 4 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Left)) ? 2 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Left_Up)) ? 2 + 8 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Left_Down)) ? 2 + 4 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Down)) ? 4 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Up)) ? 8 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Start)||!S9xGetState(Joypad[J+8].Start)) ? 16 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Left)) ? 2 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Left_Up)) ? 2 + 8 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Left_Down)) ? 2 + 4 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Down)) ? 4 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Up)) ? 8 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Start)||!S9xGetState(Joypad[J+8].Start)) ? 16 : 0;
- PadState[1] ^= (!S9xGetState(Joypad[J].Select)||!S9xGetState(Joypad[J+8].Select)) ? 32 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].Y)||!S9xGetState(Joypad[J+8].Y)) ? 64 : 0;
- - PadState[1] ^= (!S9xGetState(Joypad[J].B)||!S9xGetState(Joypad[J+8].B)) ? 128 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].Y)||!S9xGetState(Joypad[J+8].Y)) ? 64 : 0;
- + PadState[1] ^= (!S9xGetState(Joypad[J].B)||!S9xGetState(Joypad[J+8].B)) ? 128 : 0;
- }
- - bool turbofy = !S9xGetState(Joypad[J+8].Up); // All Mod for turbo
- + bool turbofy = !S9xGetState(Joypad[J+8].TempTurbo); // All Mod for turbo
- //handle turbo case! (autofire / auto-fire)
- if(turbofy || ((GUI.TurboMask&TURBO_A_MASK))&&(PadState[0]&128) || !S9xGetState(Joypad[J+8].A )) PadState[0]^=(joypads[J]&128);
- @@ -908,9 +908,9 @@ void S9xWinScanJoypads ()
- if(turbofy || ((GUI.TurboMask&TURBO_STA_MASK))&&(PadState[1]&16) || !S9xGetState(Joypad[J+8].Start )) PadState[1]^=((joypads[J]&(16<<8))>>8);
- if(turbofy || ((GUI.TurboMask&TURBO_SEL_MASK))&&(PadState[1]&32) || !S9xGetState(Joypad[J+8].Select)) PadState[1]^=((joypads[J]&(32<<8))>>8);
- if( ((GUI.TurboMask&TURBO_LEFT_MASK))&&(PadState[1]&2) ) PadState[1]^=((joypads[J]&(2<<8))>>8);
- - if( ((GUI.TurboMask&TURBO_UP_MASK))&&(PadState[1]&9) ) PadState[1]^=((joypads[J]&(8<<8))>>8);
- + if( ((GUI.TurboMask&TURBO_UP_MASK))&&(PadState[1]&8) ) PadState[1]^=((joypads[J]&(8<<8))>>8);
- if( ((GUI.TurboMask&TURBO_RIGHT_MASK))&&(PadState[1]&1) ) PadState[1]^=((joypads[J]&(1<<8))>>8);
- - if( ((GUI.TurboMask&TURBO_RIGHT_MASK))&&(PadState[1]&4) ) PadState[1]^=((joypads[J]&(4<<8))>>8);
- + if( ((GUI.TurboMask&TURBO_DOWN_MASK))&&(PadState[1]&4) ) PadState[1]^=((joypads[J]&(4<<8))>>8);
- if(TurboToggleJoypadStorage[J].A ) PadState[0]^=(joypads[J]&128);
- if(TurboToggleJoypadStorage[J].B ) PadState[1]^=((joypads[J]&(128<<8))>>8);
- @@ -920,6 +920,10 @@ void S9xWinScanJoypads ()
- if(TurboToggleJoypadStorage[J].R ) PadState[0]^=(joypads[J]&16);
- if(TurboToggleJoypadStorage[J].Start ) PadState[1]^=((joypads[J]&(16<<8))>>8);
- if(TurboToggleJoypadStorage[J].Select) PadState[1]^=((joypads[J]&(32<<8))>>8);
- + if(TurboToggleJoypadStorage[J].Left ) PadState[1]^=((joypads[J]&(2<<8))>>8);
- + if(TurboToggleJoypadStorage[J].Up ) PadState[1]^=((joypads[J]&(8<<8))>>8);
- + if(TurboToggleJoypadStorage[J].Right ) PadState[1]^=((joypads[J]&(1<<8))>>8);
- + if(TurboToggleJoypadStorage[J].Down ) PadState[1]^=((joypads[J]&(4<<8))>>8);
- //end turbo case...
- diff --git a/win32/wsnes9x.cpp b/win32/wsnes9x.cpp
- index 80e5dc4..4effbe8 100644
- --- a/win32/wsnes9x.cpp
- +++ b/win32/wsnes9x.cpp
- @@ -814,7 +814,7 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
- for (int J = 0; J < 5; J++)
- {
- extern bool S9xGetState (WORD KeyIdent);
- - if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Left))) // enabled and Togglify
- + if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Autohold))) // enabled and Togglify
- {
- SJoypad & p = ToggleJoypadStorage[J];
- if(wParam == Joypad[J].L) p.L = !p.L;
- @@ -829,10 +829,10 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
- if(wParam == Joypad[J].Right) p.Right = !p.Right;
- if(wParam == Joypad[J].Up) p.Up = !p.Up;
- if(wParam == Joypad[J].Down) p.Down = !p.Down;
- -/// if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
- -/// if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
- -/// if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
- -/// if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
- +// if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
- +// if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
- +// if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
- +// if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
- if(!Settings.UpAndDown)
- {
- if(p.Left && p.Right)
- @@ -841,7 +841,7 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
- p.Up = p.Down = false;
- }
- }
- - if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Down))) // enabled and turbo-togglify (TurboTog)
- + if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Autofire))) // enabled and turbo-togglify (TurboTog)
- {
- SJoypad & p = TurboToggleJoypadStorage[J];
- if(wParam == Joypad[J].L) p.L = !p.L;
- @@ -852,23 +852,23 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
- if(wParam == Joypad[J].X) p.X = !p.X;
- if(wParam == Joypad[J].Start) p.Start = !p.Start;
- if(wParam == Joypad[J].Select) p.Select = !p.Select;
- -/// if(wParam == Joypad[J].Left) p.Left = !p.Left;
- -/// if(wParam == Joypad[J].Right) p.Right = !p.Right;
- -/// if(wParam == Joypad[J].Up) p.Up = !p.Up;
- -/// if(wParam == Joypad[J].Down) p.Down = !p.Down;
- -/// if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
- -/// if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
- -/// if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
- -/// if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
- -/* if(!Settings.UpAndDown)
- + if(wParam == Joypad[J].Left) p.Left = !p.Left;
- + if(wParam == Joypad[J].Right) p.Right = !p.Right;
- + if(wParam == Joypad[J].Up) p.Up = !p.Up;
- + if(wParam == Joypad[J].Down) p.Down = !p.Down;
- +// if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
- +// if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
- +// if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
- +// if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
- + if(!Settings.UpAndDown)
- {
- - if(p.Left && p.Right && )
- + if(p.Left && p.Right)
- p.Left = p.Right = false;
- if(p.Up && p.Down)
- p.Up = p.Down = false;
- - }*/
- + }
- }
- - if(wParam == Joypad[J+8].Right) // clear all
- + if(wParam == Joypad[J+8].ClearAll) // clear all
- {
- {
- SJoypad & p = ToggleJoypadStorage[J];
- diff --git a/win32/wsnes9x.h b/win32/wsnes9x.h
- index 6e561ed..0a88ca7 100644
- --- a/win32/wsnes9x.h
- +++ b/win32/wsnes9x.h
- @@ -464,10 +464,22 @@ struct SCustomKeys {
- struct SJoypad {
- BOOL Enabled;
- - WORD Left;
- - WORD Right;
- - WORD Up;
- - WORD Down;
- + union {
- + WORD Left;
- + WORD Autohold;
- + };
- + union {
- + WORD Right;
- + WORD ClearAll;
- + };
- + union {
- + WORD Up;
- + WORD TempTurbo;
- + };
- + union {
- + WORD Down;
- + WORD Autofire;
- + };
- WORD Left_Up;
- WORD Left_Down;
- WORD Right_Up;
- --
- 1.7.3.1.msysgit.0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement