mirror of https://github.com/stella-emu/stella.git
Added mappable events for toggling TV color type and left/right A/B difficulty.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3180 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
26e9f15b86
commit
7350e8f6c1
|
@ -14,6 +14,11 @@
|
||||||
|
|
||||||
4.6.1 to 4.7: (mmm dd, 2015)
|
4.6.1 to 4.7: (mmm dd, 2015)
|
||||||
|
|
||||||
|
* Added mappable events for swapping TV color/BW, left difficulty A/B
|
||||||
|
and right difficulty A/B. This means that one key. joystick button,
|
||||||
|
etc can be used to toggle each event. Thanks to Buzbard of AtariAge
|
||||||
|
for the suggestion.
|
||||||
|
|
||||||
* Changed 'hidecursor' commandline argument (and associated UI item) to
|
* Changed 'hidecursor' commandline argument (and associated UI item) to
|
||||||
'cursor'. The new argument allows to set mouse cursor visibility
|
'cursor'. The new argument allows to set mouse cursor visibility
|
||||||
separately for both UI and emulation modes.
|
separately for both UI and emulation modes.
|
||||||
|
|
|
@ -162,8 +162,8 @@ MouseControl::MouseControl(Console& console, const string& mode)
|
||||||
myModeList.push_back(MouseMode("Mouse not used for current controllers"));
|
myModeList.push_back(MouseMode("Mouse not used for current controllers"));
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
for(MouseMode m: myModeList)
|
for(const auto& m: myModeList)
|
||||||
cerr << mode << endl;
|
cerr << m << endl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ class Event
|
||||||
ConsoleLeftDiffA, ConsoleLeftDiffB,
|
ConsoleLeftDiffA, ConsoleLeftDiffB,
|
||||||
ConsoleRightDiffA, ConsoleRightDiffB,
|
ConsoleRightDiffA, ConsoleRightDiffB,
|
||||||
ConsoleSelect, ConsoleReset,
|
ConsoleSelect, ConsoleReset,
|
||||||
|
ConsoleLeftDiffSwap, ConsoleRightDiffSwap, ConsoleColorSwap,
|
||||||
|
|
||||||
JoystickZeroUp, JoystickZeroDown, JoystickZeroLeft, JoystickZeroRight,
|
JoystickZeroUp, JoystickZeroDown, JoystickZeroLeft, JoystickZeroRight,
|
||||||
JoystickZeroFire, JoystickZeroFire5, JoystickZeroFire9,
|
JoystickZeroFire, JoystickZeroFire5, JoystickZeroFire9,
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "Settings.hxx"
|
#include "Settings.hxx"
|
||||||
#include "Sound.hxx"
|
#include "Sound.hxx"
|
||||||
#include "StateManager.hxx"
|
#include "StateManager.hxx"
|
||||||
|
#include "Switches.hxx"
|
||||||
#include "M6532.hxx"
|
#include "M6532.hxx"
|
||||||
#include "MouseControl.hxx"
|
#include "MouseControl.hxx"
|
||||||
#include "Version.hxx"
|
#include "Version.hxx"
|
||||||
|
@ -960,25 +961,107 @@ void EventHandler::handleEvent(Event::Type event, int state)
|
||||||
return;
|
return;
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Events which generate messages
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// Events which relate to switches()
|
||||||
case Event::ConsoleColor:
|
case Event::ConsoleColor:
|
||||||
if(state) myOSystem.frameBuffer().showMessage("Color Mode");
|
if(state)
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleBlackWhite, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("Color Mode");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Event::ConsoleBlackWhite:
|
case Event::ConsoleBlackWhite:
|
||||||
if(state) myOSystem.frameBuffer().showMessage("BW Mode");
|
if(state)
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleColor, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("BW Mode");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
case Event::ConsoleColorSwap:
|
||||||
|
if(state)
|
||||||
|
{
|
||||||
|
if(myOSystem.console().switches().tvColor())
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleBlackWhite, 1);
|
||||||
|
myEvent.set(Event::ConsoleColor, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("BW Mode");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleBlackWhite, 0);
|
||||||
|
myEvent.set(Event::ConsoleColor, 1);
|
||||||
|
myOSystem.frameBuffer().showMessage("Color Mode");
|
||||||
|
}
|
||||||
|
myOSystem.console().switches().update();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
case Event::ConsoleLeftDiffA:
|
case Event::ConsoleLeftDiffA:
|
||||||
if(state) myOSystem.frameBuffer().showMessage("Left Difficulty A");
|
if(state)
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleLeftDiffB, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("Left Difficulty A");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Event::ConsoleLeftDiffB:
|
case Event::ConsoleLeftDiffB:
|
||||||
if(state) myOSystem.frameBuffer().showMessage("Left Difficulty B");
|
if(state)
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleLeftDiffA, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("Left Difficulty B");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
case Event::ConsoleLeftDiffSwap:
|
||||||
|
if(state)
|
||||||
|
{
|
||||||
|
if(myOSystem.console().switches().leftDifficultyA())
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleLeftDiffA, 0);
|
||||||
|
myEvent.set(Event::ConsoleLeftDiffB, 1);
|
||||||
|
myOSystem.frameBuffer().showMessage("Left Difficulty B");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleLeftDiffA, 1);
|
||||||
|
myEvent.set(Event::ConsoleLeftDiffB, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("Left Difficulty A");
|
||||||
|
}
|
||||||
|
myOSystem.console().switches().update();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
case Event::ConsoleRightDiffA:
|
case Event::ConsoleRightDiffA:
|
||||||
if(state) myOSystem.frameBuffer().showMessage("Right Difficulty A");
|
if(state)
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleRightDiffB, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("Right Difficulty A");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Event::ConsoleRightDiffB:
|
case Event::ConsoleRightDiffB:
|
||||||
if(state) myOSystem.frameBuffer().showMessage("Right Difficulty B");
|
if(state)
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleRightDiffA, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("Right Difficulty B");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
case Event::ConsoleRightDiffSwap:
|
||||||
|
if(state)
|
||||||
|
{
|
||||||
|
if(myOSystem.console().switches().rightDifficultyA())
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleRightDiffA, 0);
|
||||||
|
myEvent.set(Event::ConsoleRightDiffB, 1);
|
||||||
|
myOSystem.frameBuffer().showMessage("Right Difficulty B");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myEvent.set(Event::ConsoleRightDiffA, 1);
|
||||||
|
myEvent.set(Event::ConsoleRightDiffB, 0);
|
||||||
|
myOSystem.frameBuffer().showMessage("Right Difficulty A");
|
||||||
|
}
|
||||||
|
myOSystem.console().switches().update();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
case Event::NoType: // Ignore unmapped events
|
case Event::NoType: // Ignore unmapped events
|
||||||
return;
|
return;
|
||||||
|
@ -2013,10 +2096,13 @@ EventHandler::ActionList EventHandler::ourEmulActionList[kEmulActionListSize] =
|
||||||
{ Event::ConsoleReset, "Reset", 0, true },
|
{ Event::ConsoleReset, "Reset", 0, true },
|
||||||
{ Event::ConsoleColor, "Color TV", 0, true },
|
{ Event::ConsoleColor, "Color TV", 0, true },
|
||||||
{ Event::ConsoleBlackWhite, "Black & White TV", 0, true },
|
{ Event::ConsoleBlackWhite, "Black & White TV", 0, true },
|
||||||
|
{ Event::ConsoleColorSwap, "Swap Color / B&W TV", 0, true },
|
||||||
{ Event::ConsoleLeftDiffA, "P0 Difficulty A", 0, true },
|
{ Event::ConsoleLeftDiffA, "P0 Difficulty A", 0, true },
|
||||||
{ Event::ConsoleLeftDiffB, "P0 Difficulty B", 0, true },
|
{ Event::ConsoleLeftDiffB, "P0 Difficulty B", 0, true },
|
||||||
|
{ Event::ConsoleLeftDiffSwap, "P0 Swap Difficulty", 0, true },
|
||||||
{ Event::ConsoleRightDiffA, "P1 Difficulty A", 0, true },
|
{ Event::ConsoleRightDiffA, "P1 Difficulty A", 0, true },
|
||||||
{ Event::ConsoleRightDiffB, "P1 Difficulty B", 0, true },
|
{ Event::ConsoleRightDiffB, "P1 Difficulty B", 0, true },
|
||||||
|
{ Event::ConsoleRightDiffSwap,"P1 Swap Difficulty", 0, true },
|
||||||
{ Event::SaveState, "Save State", 0, false },
|
{ Event::SaveState, "Save State", 0, false },
|
||||||
{ Event::ChangeState, "Change State", 0, false },
|
{ Event::ChangeState, "Change State", 0, false },
|
||||||
{ Event::LoadState, "Load State", 0, false },
|
{ Event::LoadState, "Load State", 0, false },
|
||||||
|
|
|
@ -500,7 +500,7 @@ class EventHandler
|
||||||
enum {
|
enum {
|
||||||
kComboSize = 16,
|
kComboSize = 16,
|
||||||
kEventsPerCombo = 8,
|
kEventsPerCombo = 8,
|
||||||
kEmulActionListSize = 75 + kComboSize,
|
kEmulActionListSize = 78 + kComboSize,
|
||||||
kMenuActionListSize = 14
|
kMenuActionListSize = 14
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,27 @@ class Switches : public Serializable
|
||||||
*/
|
*/
|
||||||
string name() const { return "Switches"; }
|
string name() const { return "Switches"; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Query the 'Console_TelevisionType' switches bit.
|
||||||
|
|
||||||
|
@return True if 'Color', false if 'BlackWhite'
|
||||||
|
*/
|
||||||
|
bool tvColor() const { return mySwitches & 0x08; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Query the 'Console_LeftDifficulty' switches bit.
|
||||||
|
|
||||||
|
@return True if 'A', false if 'B'
|
||||||
|
*/
|
||||||
|
bool leftDifficultyA() const { return mySwitches & 0x40; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Query the 'Console_RightDifficulty' switches bit.
|
||||||
|
|
||||||
|
@return True if 'A', false if 'B'
|
||||||
|
*/
|
||||||
|
bool rightDifficultyA() const { return mySwitches & 0x80; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Reference to the event object to use
|
// Reference to the event object to use
|
||||||
const Event& myEvent;
|
const Event& myEvent;
|
||||||
|
|
Loading…
Reference in New Issue