atari7800: control hooked up, more or less

This commit is contained in:
goyuken 2012-12-15 02:36:38 +00:00
parent 158e6a5dd6
commit 2983c23920
3 changed files with 28 additions and 15 deletions

View File

@ -24,8 +24,11 @@ namespace BizHawk.Emulation
_frame++;
_islag = true;
ControlAdapter.Convert(Controller, theMachine.InputState);
theMachine.ComputeNextFrame(avProvider.framebuffer);
_islag = false; // until we put in a working lagometer
if (_islag)
{
LagCount++;
@ -110,8 +113,11 @@ namespace BizHawk.Emulation
return ms.ToArray();
}
public ControllerDefinition ControllerDefinition { get { return Atari7800ControllerDefinition; } }
Atari7800Control ControlAdapter;
public ControllerDefinition ControllerDefinition { get; private set; }
public IController Controller { get; set; }
/*
public static readonly ControllerDefinition Atari7800ControllerDefinition = new ControllerDefinition
{
Name = "Atari 7800 Basic Controller",
@ -121,7 +127,7 @@ namespace BizHawk.Emulation
"P2 Up", "P2 Down", "P2 Left", "P2 Right", "P2 B1", "P2 B2",
"Reset", "Select"
}
};
};*/
class ConsoleLogger : ILogger
{
@ -188,6 +194,12 @@ namespace BizHawk.Emulation
logger);
theMachine.Reset();
ControlAdapter = new Atari7800Control(theMachine);
if (ControlAdapter.ControlType.Name != "Atari 7800 ProLine Joystick Controller")
throw new Exception("For now, only Atari 7800 ProLine Joystick games are supported.");
ControllerDefinition = ControlAdapter.ControlType;
if (avProvider != null)
avProvider.Dispose();
avProvider.ConnectToMachine(theMachine);

View File

@ -995,40 +995,41 @@ namespace BizHawk.MultiClient
Global.AutofireAtari2600Controls = autofireA2600Controls;
var a7800Controls = new Controller(Atari7800.Atari7800ControllerDefinition);
var a7800Controls = new Controller(Atari7800Control.ProLineJoystick);
a7800Controls.BindMulti("P1 Up", Global.Config.Atari7800Controller[0].Up);
a7800Controls.BindMulti("P1 Left", Global.Config.Atari7800Controller[0].Left);
a7800Controls.BindMulti("P1 Right", Global.Config.Atari7800Controller[0].Right);
a7800Controls.BindMulti("P1 Down", Global.Config.Atari7800Controller[0].Down);
a7800Controls.BindMulti("P1 B1", Global.Config.Atari7800Controller[0].Button1);
a7800Controls.BindMulti("P1 B2", Global.Config.Atari7800Controller[0].Button2);
a7800Controls.BindMulti("P1 Trigger", Global.Config.Atari7800Controller[0].Button1);
a7800Controls.BindMulti("P1 Trigger 2", Global.Config.Atari7800Controller[0].Button2);
a7800Controls.BindMulti("P2 Up", Global.Config.Atari7800Controller[1].Up);
a7800Controls.BindMulti("P2 Left", Global.Config.Atari7800Controller[1].Left);
a7800Controls.BindMulti("P2 Right", Global.Config.Atari7800Controller[1].Right);
a7800Controls.BindMulti("P2 Down", Global.Config.Atari7800Controller[1].Down);
a7800Controls.BindMulti("P2 B1", Global.Config.Atari7800Controller[1].Button1);
a7800Controls.BindMulti("P2 B2", Global.Config.Atari7800Controller[1].Button2);
a7800Controls.BindMulti("P2 Trigger", Global.Config.Atari7800Controller[1].Button1);
a7800Controls.BindMulti("P2 Trigger 2", Global.Config.Atari7800Controller[1].Button2);
a7800Controls.BindMulti("Reset", Global.Config.Atari2600ConsoleButtons[0].Reset);
a7800Controls.BindMulti("Select", Global.Config.Atari2600ConsoleButtons[0].Select);
//FIXME
//a7800Controls.BindMulti("Reset", Global.Config.Atari2600ConsoleButtons[0].Reset);
//a7800Controls.BindMulti("Select", Global.Config.Atari2600ConsoleButtons[0].Select);
Global.Atari7800Controls = a7800Controls;
var autofireA7800Controls = new AutofireController(Atari7800.Atari7800ControllerDefinition);
var autofireA7800Controls = new AutofireController(Atari7800Control.ProLineJoystick);
autofireA7800Controls.BindMulti("P1 Up", Global.Config.Atari7800AutoController[0].Up);
autofireA7800Controls.BindMulti("P1 Left", Global.Config.Atari7800AutoController[0].Left);
autofireA7800Controls.BindMulti("P1 Right", Global.Config.Atari7800AutoController[0].Right);
autofireA7800Controls.BindMulti("P1 Down", Global.Config.Atari7800AutoController[0].Down);
autofireA7800Controls.BindMulti("P1 B1", Global.Config.Atari7800AutoController[0].Button1);
autofireA7800Controls.BindMulti("P1 B2", Global.Config.Atari7800AutoController[0].Button2);
autofireA7800Controls.BindMulti("P1 Trigger", Global.Config.Atari7800Controller[0].Button1);
autofireA7800Controls.BindMulti("P1 Trigger 2", Global.Config.Atari7800Controller[0].Button2);
autofireA7800Controls.BindMulti("P2 Up", Global.Config.Atari7800AutoController[1].Up);
autofireA7800Controls.BindMulti("P2 Left", Global.Config.Atari7800AutoController[1].Left);
autofireA7800Controls.BindMulti("P2 Right", Global.Config.Atari7800AutoController[1].Right);
autofireA7800Controls.BindMulti("P2 Down", Global.Config.Atari7800AutoController[1].Down);
autofireA7800Controls.BindMulti("P2 B1", Global.Config.Atari7800AutoController[1].Button1);
autofireA7800Controls.BindMulti("P2 B2", Global.Config.Atari7800AutoController[1].Button2);
autofireA7800Controls.BindMulti("P2 Trigger", Global.Config.Atari7800Controller[1].Button1);
autofireA7800Controls.BindMulti("P2 Trigger 2", Global.Config.Atari7800Controller[1].Button2);
Global.AutofireAtari7800Controls = autofireA2600Controls;

View File

@ -454,7 +454,7 @@ namespace BizHawk.MultiClient
{
return "|.|";
}
else if (ControlType == "Atari 7800 Basic Controller")
else if (ControlType == "Atari 7800 ProLine Joystick Controller")
{
return "|.|"; //TODO
}