File: Console.cxx

package info (click to toggle)
stella 0.7-2
  • links: PTS
  • area: non-free
  • in suites: hamm, slink
  • size: 864 kB
  • ctags: 1,158
  • sloc: cpp: 6,615; ansic: 492; makefile: 224; asm: 31
file content (96 lines) | stat: -rw-r--r-- 2,820 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//============================================================================
//
//    SSSS    tt          lll  lll              
//   SS  SS   tt           ll   ll                
//   SS     tttttt  eeee   ll   ll   aaaa    "An Atari 2600 VCS Emulator"
//    SSSS    tt   ee  ee  ll   ll      aa      
//       SS   tt   eeeeee  ll   ll   aaaaa   Copyright (c) 1995,1996,1997
//   SS  SS   tt   ee      ll   ll  aa  aa         Bradford W. Mott
//    SSSS     ttt  eeeee llll llll  aaaaa    
//
//============================================================================

/**
  Controls the console switches for the system.

  @author  Bradford W. Mott
  @version $Id: Console.cxx,v 1.2 1997/05/17 19:00:05 bwmott Exp $
*/

#include <string.h>
#include "Console.hxx"
#include "System.hxx"
#include "BasTerm.hxx"

//============================================================================
// Constructor
//============================================================================
Console::Console(System& system)
    : mySystem(system)
{
  myTimer = 0;
  mySwitches = 0xff;

  if(strcmp(mySystem.properties().find("Console.RightDifficulty"), "B") == 0)
    mySwitches &= ~0x80;
  else
    mySwitches |= 0x80;  

  if(strcmp(mySystem.properties().find("Console.LeftDifficulty"), "B") == 0)
    mySwitches &= ~0x40;
  else
    mySwitches |= 0x40;  

  if(strcmp(mySystem.properties().find("Console.TelevisionType"), "Color") == 0)
    mySwitches |= 0x08;
  else
    mySwitches &= ~0x08;  
}
 
//============================================================================
// Destructor
//============================================================================
Console::~Console()
{
}

//============================================================================
// Update the console switches
//============================================================================
void Console::update()
{
  if(mySystem.terminal().eventState(BasicTerminal::Color))
    mySwitches |= 0x08;
  else if (mySystem.terminal().eventState(BasicTerminal::BlackAndWhite))
    mySwitches &= ~0x08;

  if(mySystem.terminal().eventState(BasicTerminal::RightDifficultyA))
    mySwitches &= ~0x80;
  else if(mySystem.terminal().eventState(BasicTerminal::RightDifficultyB))
    mySwitches |= 0x80;

  if(mySystem.terminal().eventState(BasicTerminal::LeftDifficultyA))
    mySwitches &= ~0x40;
  else if(mySystem.terminal().eventState(BasicTerminal::LeftDifficultyB))
    mySwitches |= 0x40;

  if(mySystem.terminal().eventState(BasicTerminal::Select))
  {
    mySwitches &= ~0x02;
    myTimer = 4;
  }

  if(mySystem.terminal().eventState(BasicTerminal::Reset))
  {
    mySwitches &= ~0x01;
    myTimer = 4;
  }

  // See if it's time to release the levers yet
  if(myTimer > 0)
    --myTimer;
  else
    mySwitches |= 0x03;
}