Guest User

snes9xgit: [gocha] Add and fix Autofire for D-pad.

a guest
Jan 10th, 2011
625
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. From d50e59820ffd3209d2f5856dbe2ea3f50e917ee4 Mon Sep 17 00:00:00 2001
  2. From: gocha <gochaism@gmail.com>
  3. Date: Mon, 10 Jan 2011 17:43:45 +0900
  4. Subject: [PATCH 3/3] Add and fix Autofire for D-pad.
  5.  
  6. ---
  7. win32/win32.cpp   |   46 +++++++++++++++++++++++++---------------------
  8.  win32/wsnes9x.cpp |   36 ++++++++++++++++++------------------
  9.  win32/wsnes9x.h   |   20 ++++++++++++++++----
  10.  3 files changed, 59 insertions(+), 43 deletions(-)
  11.  
  12. diff --git a/win32/win32.cpp b/win32/win32.cpp
  13. index 2b0f44d..7556d8a 100644
  14. --- a/win32/win32.cpp
  15. +++ b/win32/win32.cpp
  16. @@ -865,38 +865,38 @@ void S9xWinScanJoypads ()
  17.                 PadState[0] |= ToggleJoypadStorage[J].A||TurboToggleJoypadStorage[J].A      ? 128 : 0;
  18.  
  19.                 PadState[1]  = 0;
  20. -               PadState[1] |= ToggleJoypadStorage[J].Right  ?   1 : 0;
  21. -               PadState[1] |= ToggleJoypadStorage[J].Left   ?   2 : 0;
  22. -               PadState[1] |= ToggleJoypadStorage[J].Down   ?   4 : 0;
  23. -               PadState[1] |= ToggleJoypadStorage[J].Up     ?   8 : 0;
  24. -               PadState[1] |= ToggleJoypadStorage[J].Start||TurboToggleJoypadStorage[J].Start  ?  16 : 0;
  25. +               PadState[1] |= ToggleJoypadStorage[J].Right||TurboToggleJoypadStorage[J].Right   ?   1 : 0;
  26. +               PadState[1] |= ToggleJoypadStorage[J].Left||TurboToggleJoypadStorage[J].Left     ?   2 : 0;
  27. +               PadState[1] |= ToggleJoypadStorage[J].Down||TurboToggleJoypadStorage[J].Down     ?   4 : 0;
  28. +               PadState[1] |= ToggleJoypadStorage[J].Up||TurboToggleJoypadStorage[J].Up         ?   8 : 0;
  29. +               PadState[1] |= ToggleJoypadStorage[J].Start||TurboToggleJoypadStorage[J].Start   ?  16 : 0;
  30.                 PadState[1] |= ToggleJoypadStorage[J].Select||TurboToggleJoypadStorage[J].Select ?  32 : 0;
  31. -               PadState[1] |= ToggleJoypadStorage[J].Y||TurboToggleJoypadStorage[J].Y      ?  64 : 0;
  32. -               PadState[1] |= ToggleJoypadStorage[J].B||TurboToggleJoypadStorage[J].B      ? 128 : 0;
  33. +               PadState[1] |= ToggleJoypadStorage[J].Y||TurboToggleJoypadStorage[J].Y           ?  64 : 0;
  34. +               PadState[1] |= ToggleJoypadStorage[J].B||TurboToggleJoypadStorage[J].B           ? 128 : 0;
  35.             }
  36.             // auto-hold AND regular key/joystick presses
  37. -           if(S9xGetState(Joypad[J+8].Left))
  38. +           if(S9xGetState(Joypad[J+8].Autohold))
  39.             {
  40.                 PadState[0] ^= (!S9xGetState(Joypad[J].R)||!S9xGetState(Joypad[J+8].R))      ?  16 : 0;
  41.                 PadState[0] ^= (!S9xGetState(Joypad[J].L)||!S9xGetState(Joypad[J+8].L))      ?  32 : 0;
  42.                 PadState[0] ^= (!S9xGetState(Joypad[J].X)||!S9xGetState(Joypad[J+8].X))      ?  64 : 0;
  43.                 PadState[0] ^= (!S9xGetState(Joypad[J].A)||!S9xGetState(Joypad[J+8].A))      ? 128 : 0;
  44.  
  45. -               PadState[1] ^= (!S9xGetState(Joypad[J].Right))  ?   1 : 0;
  46. -               PadState[1] ^= (!S9xGetState(Joypad[J].Right_Up))  ? 1 + 8 : 0;
  47. +               PadState[1] ^= (!S9xGetState(Joypad[J].Right))      ? 1     : 0;
  48. +               PadState[1] ^= (!S9xGetState(Joypad[J].Right_Up))   ? 1 + 8 : 0;
  49.                 PadState[1] ^= (!S9xGetState(Joypad[J].Right_Down)) ? 1 + 4 : 0;
  50. -               PadState[1] ^= (!S9xGetState(Joypad[J].Left))   ?   2 : 0;
  51. -               PadState[1] ^= (!S9xGetState(Joypad[J].Left_Up)) ?   2 + 8 : 0;
  52. -               PadState[1] ^= (!S9xGetState(Joypad[J].Left_Down)) ?  2 + 4 : 0;
  53. -               PadState[1] ^= (!S9xGetState(Joypad[J].Down))   ?   4 : 0;
  54. -               PadState[1] ^= (!S9xGetState(Joypad[J].Up))     ?   8 : 0;
  55. -               PadState[1] ^= (!S9xGetState(Joypad[J].Start)||!S9xGetState(Joypad[J+8].Start))  ?  16 : 0;
  56. +               PadState[1] ^= (!S9xGetState(Joypad[J].Left))       ? 2     : 0;
  57. +               PadState[1] ^= (!S9xGetState(Joypad[J].Left_Up))    ? 2 + 8 : 0;
  58. +               PadState[1] ^= (!S9xGetState(Joypad[J].Left_Down))  ? 2 + 4 : 0;
  59. +               PadState[1] ^= (!S9xGetState(Joypad[J].Down))       ?     4 : 0;
  60. +               PadState[1] ^= (!S9xGetState(Joypad[J].Up))         ?     8 : 0;
  61. +               PadState[1] ^= (!S9xGetState(Joypad[J].Start)||!S9xGetState(Joypad[J+8].Start))   ?  16 : 0;
  62.                 PadState[1] ^= (!S9xGetState(Joypad[J].Select)||!S9xGetState(Joypad[J+8].Select)) ?  32 : 0;
  63. -               PadState[1] ^= (!S9xGetState(Joypad[J].Y)||!S9xGetState(Joypad[J+8].Y))      ?  64 : 0;
  64. -               PadState[1] ^= (!S9xGetState(Joypad[J].B)||!S9xGetState(Joypad[J+8].B))      ? 128 : 0;
  65. +               PadState[1] ^= (!S9xGetState(Joypad[J].Y)||!S9xGetState(Joypad[J+8].Y))           ?  64 : 0;
  66. +               PadState[1] ^= (!S9xGetState(Joypad[J].B)||!S9xGetState(Joypad[J+8].B))           ? 128 : 0;
  67.             }
  68.  
  69. -           bool turbofy = !S9xGetState(Joypad[J+8].Up); // All Mod for turbo
  70. +           bool turbofy = !S9xGetState(Joypad[J+8].TempTurbo); // All Mod for turbo
  71.  
  72.             //handle turbo case! (autofire / auto-fire)
  73.             if(turbofy || ((GUI.TurboMask&TURBO_A_MASK))&&(PadState[0]&128) || !S9xGetState(Joypad[J+8].A      )) PadState[0]^=(joypads[J]&128);
  74. @@ -908,9 +908,9 @@ void S9xWinScanJoypads ()
  75.             if(turbofy || ((GUI.TurboMask&TURBO_STA_MASK))&&(PadState[1]&16) || !S9xGetState(Joypad[J+8].Start )) PadState[1]^=((joypads[J]&(16<<8))>>8);
  76.             if(turbofy || ((GUI.TurboMask&TURBO_SEL_MASK))&&(PadState[1]&32) || !S9xGetState(Joypad[J+8].Select)) PadState[1]^=((joypads[J]&(32<<8))>>8);
  77.             if(           ((GUI.TurboMask&TURBO_LEFT_MASK))&&(PadState[1]&2)                                    ) PadState[1]^=((joypads[J]&(2<<8))>>8);
  78. -           if(           ((GUI.TurboMask&TURBO_UP_MASK))&&(PadState[1]&9)                                      ) PadState[1]^=((joypads[J]&(8<<8))>>8);
  79. +           if(           ((GUI.TurboMask&TURBO_UP_MASK))&&(PadState[1]&8)                                      ) PadState[1]^=((joypads[J]&(8<<8))>>8);
  80.             if(           ((GUI.TurboMask&TURBO_RIGHT_MASK))&&(PadState[1]&1)                                   ) PadState[1]^=((joypads[J]&(1<<8))>>8);
  81. -           if(           ((GUI.TurboMask&TURBO_RIGHT_MASK))&&(PadState[1]&4)                                   ) PadState[1]^=((joypads[J]&(4<<8))>>8);
  82. +           if(           ((GUI.TurboMask&TURBO_DOWN_MASK))&&(PadState[1]&4)                                    ) PadState[1]^=((joypads[J]&(4<<8))>>8);
  83.  
  84.             if(TurboToggleJoypadStorage[J].A     ) PadState[0]^=(joypads[J]&128);
  85.             if(TurboToggleJoypadStorage[J].B     ) PadState[1]^=((joypads[J]&(128<<8))>>8);
  86. @@ -920,6 +920,10 @@ void S9xWinScanJoypads ()
  87.             if(TurboToggleJoypadStorage[J].R     ) PadState[0]^=(joypads[J]&16);
  88.             if(TurboToggleJoypadStorage[J].Start ) PadState[1]^=((joypads[J]&(16<<8))>>8);
  89.             if(TurboToggleJoypadStorage[J].Select) PadState[1]^=((joypads[J]&(32<<8))>>8);
  90. +           if(TurboToggleJoypadStorage[J].Left  ) PadState[1]^=((joypads[J]&(2<<8))>>8);
  91. +           if(TurboToggleJoypadStorage[J].Up    ) PadState[1]^=((joypads[J]&(8<<8))>>8);
  92. +           if(TurboToggleJoypadStorage[J].Right ) PadState[1]^=((joypads[J]&(1<<8))>>8);
  93. +           if(TurboToggleJoypadStorage[J].Down  ) PadState[1]^=((joypads[J]&(4<<8))>>8);
  94.             //end turbo case...
  95.  
  96.  
  97. diff --git a/win32/wsnes9x.cpp b/win32/wsnes9x.cpp
  98. index 80e5dc4..4effbe8 100644
  99. --- a/win32/wsnes9x.cpp
  100. +++ b/win32/wsnes9x.cpp
  101. @@ -814,7 +814,7 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
  102.     for (int J = 0; J < 5; J++)
  103.     {
  104.         extern bool S9xGetState (WORD KeyIdent);
  105. -       if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Left))) // enabled and Togglify
  106. +       if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Autohold))) // enabled and Togglify
  107.         {
  108.             SJoypad & p = ToggleJoypadStorage[J];
  109.             if(wParam == Joypad[J].L) p.L = !p.L;
  110. @@ -829,10 +829,10 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
  111.             if(wParam == Joypad[J].Right) p.Right = !p.Right;
  112.             if(wParam == Joypad[J].Up) p.Up = !p.Up;
  113.             if(wParam == Joypad[J].Down) p.Down = !p.Down;
  114. -///                    if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
  115. -///                    if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
  116. -///                    if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
  117. -///                    if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
  118. +//         if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
  119. +//         if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
  120. +//         if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
  121. +//         if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
  122.             if(!Settings.UpAndDown)
  123.             {
  124.                 if(p.Left && p.Right)
  125. @@ -841,7 +841,7 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
  126.                     p.Up = p.Down = false;
  127.             }
  128.         }
  129. -       if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Down))) // enabled and turbo-togglify (TurboTog)
  130. +       if(Joypad[J].Enabled && (!S9xGetState(Joypad[J+8].Autofire))) // enabled and turbo-togglify (TurboTog)
  131.         {
  132.             SJoypad & p = TurboToggleJoypadStorage[J];
  133.             if(wParam == Joypad[J].L) p.L = !p.L;
  134. @@ -852,23 +852,23 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
  135.             if(wParam == Joypad[J].X) p.X = !p.X;
  136.             if(wParam == Joypad[J].Start) p.Start = !p.Start;
  137.             if(wParam == Joypad[J].Select) p.Select = !p.Select;
  138. -///                    if(wParam == Joypad[J].Left) p.Left = !p.Left;
  139. -///                    if(wParam == Joypad[J].Right) p.Right = !p.Right;
  140. -///                    if(wParam == Joypad[J].Up) p.Up = !p.Up;
  141. -///                    if(wParam == Joypad[J].Down) p.Down = !p.Down;
  142. -///                    if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
  143. -///                    if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
  144. -///                    if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
  145. -///                    if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
  146. -/*                 if(!Settings.UpAndDown)
  147. +           if(wParam == Joypad[J].Left) p.Left = !p.Left;
  148. +           if(wParam == Joypad[J].Right) p.Right = !p.Right;
  149. +           if(wParam == Joypad[J].Up) p.Up = !p.Up;
  150. +           if(wParam == Joypad[J].Down) p.Down = !p.Down;
  151. +//         if(wParam == Joypad[J].Left_Down) p.Left_Down = !p.Left_Down;
  152. +//         if(wParam == Joypad[J].Left_Up) p.Left_Up = !p.Left_Up;
  153. +//         if(wParam == Joypad[J].Right_Down) p.Right_Down = !p.Right_Down;
  154. +//         if(wParam == Joypad[J].Right_Up) p.Right_Up = !p.Right_Up;
  155. +           if(!Settings.UpAndDown)
  156.             {
  157. -               if(p.Left && p.Right && )
  158. +               if(p.Left && p.Right)
  159.                     p.Left = p.Right = false;
  160.                 if(p.Up && p.Down)
  161.                     p.Up = p.Down = false;
  162. -           }*/
  163. +           }
  164.         }
  165. -       if(wParam == Joypad[J+8].Right) // clear all
  166. +       if(wParam == Joypad[J+8].ClearAll) // clear all
  167.         {
  168.             {
  169.                 SJoypad & p = ToggleJoypadStorage[J];
  170. diff --git a/win32/wsnes9x.h b/win32/wsnes9x.h
  171. index 6e561ed..0a88ca7 100644
  172. --- a/win32/wsnes9x.h
  173. +++ b/win32/wsnes9x.h
  174. @@ -464,10 +464,22 @@ struct SCustomKeys {
  175.  
  176.  struct SJoypad {
  177.      BOOL Enabled;
  178. -    WORD Left;
  179. -    WORD Right;
  180. -    WORD Up;
  181. -    WORD Down;
  182. +    union {
  183. +        WORD Left;
  184. +        WORD Autohold;
  185. +    };
  186. +    union {
  187. +        WORD Right;
  188. +        WORD ClearAll;
  189. +    };
  190. +    union {
  191. +        WORD Up;
  192. +        WORD TempTurbo;
  193. +    };
  194. +    union {
  195. +        WORD Down;
  196. +        WORD Autofire;
  197. +    };
  198.      WORD Left_Up;
  199.      WORD Left_Down;
  200.      WORD Right_Up;
  201. --
  202. 1.7.3.1.msysgit.0
RAW Paste Data