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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
// license:BSD-3-Clause
// copyright-holders:R. Belmont
/*********************************************************************
Apple II analog joysticks
*********************************************************************/
#include "emu.h"
#include "bus/a2gameio/joystick.h"
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
// device type definition
DEFINE_DEVICE_TYPE(APPLE2_JOYSTICK, apple2_joystick_device, "a2joy", "Apple II analog joysticks")
//**************************************************************************
// PARAMETERS
//**************************************************************************
#define JOYSTICK_DELTA 80
#define JOYSTICK_SENSITIVITY 50
#define JOYSTICK_AUTOCENTER 80
//**************************************************************************
// INPUT PORTS
//**************************************************************************
static INPUT_PORTS_START( apple2_joystick )
PORT_START("joystick_1_x") /* Joystick 1 X Axis */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_NAME("P1 Joystick X")
PORT_SENSITIVITY(JOYSTICK_SENSITIVITY)
PORT_KEYDELTA(JOYSTICK_DELTA)
PORT_CENTERDELTA(JOYSTICK_AUTOCENTER)
PORT_MINMAX(0,0xff) PORT_PLAYER(1)
PORT_CODE_DEC(KEYCODE_4_PAD) PORT_CODE_INC(KEYCODE_6_PAD)
PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH)
PORT_START("joystick_1_y") /* Joystick 1 Y Axis */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y) PORT_NAME("P1 Joystick Y")
PORT_SENSITIVITY(JOYSTICK_SENSITIVITY)
PORT_KEYDELTA(JOYSTICK_DELTA)
PORT_CENTERDELTA(JOYSTICK_AUTOCENTER)
PORT_MINMAX(0,0xff) PORT_PLAYER(1)
PORT_CODE_DEC(KEYCODE_8_PAD) PORT_CODE_INC(KEYCODE_2_PAD)
PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH)
PORT_START("joystick_2_x") /* Joystick 2 X Axis */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_NAME("P2 Joystick X")
PORT_SENSITIVITY(JOYSTICK_SENSITIVITY)
PORT_KEYDELTA(JOYSTICK_DELTA)
PORT_CENTERDELTA(JOYSTICK_AUTOCENTER)
PORT_MINMAX(0,0xff) PORT_PLAYER(2)
PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH)
PORT_START("joystick_2_y") /* Joystick 2 Y Axis */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y) PORT_NAME("P2 Joystick Y")
PORT_SENSITIVITY(JOYSTICK_SENSITIVITY)
PORT_KEYDELTA(JOYSTICK_DELTA)
PORT_CENTERDELTA(JOYSTICK_AUTOCENTER)
PORT_MINMAX(0,0xff) PORT_PLAYER(2)
PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH)
PORT_START("joystick_buttons")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(1) PORT_CODE(KEYCODE_ENTER_PAD)PORT_CODE(JOYCODE_BUTTON2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(2) PORT_CODE(JOYCODE_BUTTON1)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(2) PORT_CODE(JOYCODE_BUTTON2)
INPUT_PORTS_END
//**************************************************************************
// DEVICE IMPLEMENTATION
//**************************************************************************
apple2_joystick_device::apple2_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, APPLE2_JOYSTICK, tag, owner, clock)
, device_a2gameio_interface(mconfig, *this)
, m_joy_x(*this, "joystick_%u_x", 1U)
, m_joy_y(*this, "joystick_%u_y", 1U)
, m_buttons(*this, "joystick_buttons")
{
}
ioport_constructor apple2_joystick_device::device_input_ports() const
{
return INPUT_PORTS_NAME(apple2_joystick);
}
void apple2_joystick_device::device_start()
{
}
u8 apple2_joystick_device::pdl0_r()
{
return m_joy_x[0]->read();
}
u8 apple2_joystick_device::pdl1_r()
{
return m_joy_y[0]->read();
}
u8 apple2_joystick_device::pdl2_r()
{
return m_joy_x[1]->read();
}
u8 apple2_joystick_device::pdl3_r()
{
return m_joy_x[1]->read();
}
READ_LINE_MEMBER(apple2_joystick_device::sw0_r)
{
return BIT(m_buttons->read(), 4);
}
READ_LINE_MEMBER(apple2_joystick_device::sw1_r)
{
return BIT(m_buttons->read(), 5);
}
READ_LINE_MEMBER(apple2_joystick_device::sw2_r)
{
return BIT(m_buttons->read(), 6);
}
READ_LINE_MEMBER(apple2_joystick_device::sw3_r)
{
return BIT(m_buttons->read(), 7);
}
|