Game controller: Difference between revisions

From OLPC
Jump to navigation Jump to search
m (→‎Hardware: Added the Signaling heading.)
(eliminate EC reference -- only true for some XO models.)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Hardware ==
== Hardware ==
The game controller of an XO laptop comprises fives buttons for activation, eight identical switches on the system board and traces on the board, connecting the switches to the [[Ec_specification|embedded controller]]. The Linux [http://linuxcommand.org/man_pages/xev1.html xev] command can be used to display the signal produced when a switch is closed or opened. Switch closure is reported as a KeyPress event; switch opening as a KeyRelease event. The large [[rocker]] button at the lower left corner of the screen can activate the underlying four switches, one, two, three or four together depending upon how it is tilted. Not all combinations are possible. For example, if the upper and lower switches are closed, then at least one of the left and right switches is closed. The four buttons at the lower right of the screen operate similarly but allow any combination of the underlying four switches to be closed simultaneously. Some of the more peculiar combinations of buttons provide "[[cheat codes]]" when the machine is powered up.
The game controller of an XO laptop is a [https://en.wikipedia.org/wiki/D-pad D-pad] or [[rocker]] at the lower left corner of the display and a set of four [https://en.wikipedia.org/wiki/Gamepad#Fifth_Generation action buttons] at the lower right; therefore a total of four buttons for user activation. Beneath the rocker are four switches on the system board. More switches are beneath the action buttons. The rocker can activate the underlying switches, one, two, three or four together depending upon how it is tilted. Not all combinations are possible. For example, if the upper and lower switches are closed, then at least one of the left and right switches is closed. The action buttons operate similarly but allow any combination of the underlying switches to be closed simultaneously. Some of the combinations provide "[[cheat codes]]" when the machine is powered up.


== Signaling ==
== X Events ==
Signals generated by the embedded controller are typical of the [https://en.wikipedia.org/wiki/Computer_keyboard#Miscellaneous keypad] of a conventional computer keyboard. The rocker produces KP_Up, KP_Right, KP_Down, KP_Left. The right buttons produce KP_Prior, KP_End, KP_Next and KP_Home. Keycodes and keysyms are available by using the xev command.
The Linux [http://linuxcommand.org/man_pages/xev1.html xev] command may be used to show events produced when a switch is closed or opened. Switch closure is reported as a KeyPress event; switch opening as a KeyRelease event. Events generated by the embedded controller are typical of the [https://en.wikipedia.org/wiki/Computer_keyboard#Miscellaneous keypad] of a conventional computer keyboard. The rocker produces KP_Up, KP_Right, KP_Down, KP_Left. The right buttons produce KP_Prior, KP_End, KP_Next and KP_Home. Keycodes and keysyms are also available from xev, pygame, and GTK+.


== Design History; Suggestions and Considerations ==
== Design History; Suggestions and Considerations ==

Latest revision as of 23:48, 4 January 2016

Hardware

The game controller of an XO laptop is a D-pad or rocker at the lower left corner of the display and a set of four action buttons at the lower right; therefore a total of four buttons for user activation. Beneath the rocker are four switches on the system board. More switches are beneath the action buttons. The rocker can activate the underlying switches, one, two, three or four together depending upon how it is tilted. Not all combinations are possible. For example, if the upper and lower switches are closed, then at least one of the left and right switches is closed. The action buttons operate similarly but allow any combination of the underlying switches to be closed simultaneously. Some of the combinations provide "cheat codes" when the machine is powered up.

X Events

The Linux xev command may be used to show events produced when a switch is closed or opened. Switch closure is reported as a KeyPress event; switch opening as a KeyRelease event. Events generated by the embedded controller are typical of the keypad of a conventional computer keyboard. The rocker produces KP_Up, KP_Right, KP_Down, KP_Left. The right buttons produce KP_Prior, KP_End, KP_Next and KP_Home. Keycodes and keysyms are also available from xev, pygame, and GTK+.

Design History; Suggestions and Considerations

Left Side (Directional Pad/Joystick)

The left should include a directional pad or joystick to use in pointing or directional manipulation.

In order of preference we should include:

1. A circular "rocker" on top of four contacts but made of a single piece of plastic that allows for easy 8-way directional pointing.

2. In the interests of space, the 4-way directional pad could be replaced with a short joystick. We'd like to avoid the clunkiness and fragility of most cellphone joysticks. A good example of a gaming joystick would be in either the GP2X, the GP32 (an earlier version of the GP2X) or the controller on the NeoGeo. For examples, see the first three examples in the photos section below.

3. A Sony Playstation-like 4-way directional-pad with single piece of plastic but exposed or shaped into 4 roughly distinct buttons and shaped to allow pointing in diagonals (see the Playstation controller or Nintendo controller for examples).

Right Side (Buttons)

Since there is additional room on the right side, we should take advantage of this and include 4 buttons. The ideal layout would be in a diamond shape so it could be used a more traditional four-way directional pad if necessary.

If two buttons are used instead of three, they should be distinct buttons and placed an angle from each other with the right button above the left. A third extra button offset either above or below would be useful.

We do not recommend using a 4 directional rocker "dpad" on the right hand side. There are several reasons for this. First, because there is a well-established convention to lay out separate buttons on the right hand side, as evidenced by numerous controller illustrations below. Second, naming the controls becomes difficult. For example, instructing someone to "press down" becomes ambiguous - did you mean down on the left rocker, or down on the right rocker? Third, many games utilize multiple button combinations on the right hand side wich are difficult..

Other game controllers

Reviews and Overviews

Examples and Pictures

http://www.ossblog.it/uploads/gp2x_2.jpg

http://www.retro-games.co.uk/neogeo/hngp_bluesys.gif

http://gruson.guillaume.free.fr/images/Consoles/neogeo-pocket.gif

http://www.retro-games.co.uk/neogeo/hngp_bw.jpg

http://www.viewonline.com/pages/articles/images/messiahcontrollers.jpg

http://www.axess.com/twilight/console/detail/vb.jpg

http://www.hartware.de/media/reviews/322/gp32.jpg

http://www.gamestech.com/playstation2_info/controller/PSX2_Neo_Geo_Stick_2/neo2.jpg

http://epsilon.media.mit.edu/~mako/controllers/psp.jpg

http://epsilon.media.mit.edu/~mako/controllers/Nintendo_ds_bg_2.png

http://epsilon.media.mit.edu/~mako/controllers/211219.jpg

http://epsilon.media.mit.edu/~mako/controllers/retropad1_large.jpg

http://www.circuitcity.com/IMAGE/product/detail/nin/PC.NIN.DOLACK2.LT.JPG

http://epsilon.media.mit.edu/~mako/controllers/controllers-ps3.jpg

http://epsilon.media.mit.edu/~mako/controllers/controller_s1.jpg

http://www.retrousb.com/images/neogeo1_med.jpg

Genesis controller.jpg

http://www.seganet.com.br/images/full_dreamcast_controller.gif

http://z.about.com/d/vgstrategies/1/0/Y/ps2controller.jpg

http://media.arstechnica.com/staff/fatbits.media/n64-controller.jpg