Image Map Image Map
Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 24

Thread: Recreating the Mindset Keyboard

  1. #11
    Join Date
    Jan 2011
    Location
    Vancouver, BC
    Posts
    4,609
    Blog Entries
    3

    Default

    Think I've answered a lot of my questions on my own -- so here is what I've got so far for the top side of the board, using the image I imported as a guide. I actually am using both images at different points.. I'm using the back side to more precisely align the sockets, switching between them. It seems to work suspiciously well. Biggest challenge is figuring out the names of things, like the 'strip' below the controller socket.

    mindsetkb-vcfed-2.jpg
    mindsetkb-vcfed.jpg

    Here's larger versions:

    https://drive.google.com/file/d/1iKC...ew?usp=sharing

    Now of course, the sticky part is going to be figuring out where traces obscured by installed parts go. I've no idea how I'm going to tackle that. Best I can do is look at the info for each part and try to figure out what they would most likely interact with?

  2. #12
    Join Date
    Sep 2006
    Location
    Silicon Valley
    Posts
    2,018

    Default

    there is a netlist on bitsavers

    keyboard/KB_NL.txt
    which tells you what connects to what

    there are a couple of things i'd do differently, like using cherry keyswitches and putting the key matrix on the same board

    much of the complexity of the circuit is due to the joystick and mouse connectors being multiplexed with the keyboard data
    Last edited by Al Kossow; September 9th, 2019 at 09:14 AM.

  3. #13
    Join Date
    Jan 2011
    Location
    Vancouver, BC
    Posts
    4,609
    Blog Entries
    3

    Default

    I wish I had the skill to get down to one board. Thanks for pointing out the list. I remember looking at it but thought it didn't have everything for some reason. That'll help a lot!

    Do you think the PCB that has the keyswitches is basically one sided? I was looking at it last night and it *seems* like everything connects on the one side. There is only one pin on the header that doesn't seem to have a connection there.

    What is your thinking on Cherry vs Alps switches? Just better quality?

  4. #14
    Join Date
    Sep 2006
    Location
    Silicon Valley
    Posts
    2,018

    Default

    Quote Originally Posted by falter View Post
    What is your thinking on Cherry vs Alps switches? Just better quality?
    availability.
    there are also lots of good keycap sets available for Cherry

  5. #15
    Join Date
    Jan 2011
    Location
    Vancouver, BC
    Posts
    4,609
    Blog Entries
    3

    Default

    Man this is hard!

    I'm following the list to connect the J4 header to U5 but I'm having a lot of trouble figuring out how to get traces to the various pins without overlap. What the list shows and what the pictures *appear* to show at times seems to be contradictory. Hard to discern with that controller in the way.

  6. #16

    Default

    Routing is a profession and an art. If it were easy, everyone would do it. Be patient, don't give up. The reward for your hard work will be a board that is not only functional, but looks good too. And the bonus that you have expanded your context and learned a new skill.

    If you have photos of the original PCB, and using the netlist Al linked, you should be able to reverse a schematic. IMO that would be well worth the effort, since that will help make routing easier and will let KiCAD check your work and make sure things are wired and routed correctly.

    For the PCB, I assume you are using 2-layers? If you are willing to spend about 40% more on the PCB you can go to 4-layers, which will ease the routing. You should also be aware of the capabilities of whatever PCB shop you are going to use. It is totally possible to lay out a PCB that cannot be manufactured. I like to use OSHpark personally, but even if you use someone else, their design rules and capabilities will give you a good idea about what the limits are for a lower-cost, low-quantity PCB.

    Also, keep your traces as large as possible (within reason) while still being able to finish your layout. OSHpark will allow down to 0.127mm (5-mil) trace and space, but that does not mean you should be routing traces that small unless you really need to. Using traces around 0.2032mm (8-mil), 0.254mm (10-mil), or 0.3048mm (12-mil) is a better set of default sizes. I'm also an advocate for metric (which is used by most of the electronics industry these days), but try to be familiar with both systems. Older components will have units in inches, and modern parts will mostly all be metric. You can easily mix both in KiCAD, it does not care and you can adjust your grid based on whatever you need to for the task you are doing. After getting the component placement done, I tend to route on a 0.1mm grid.

  7. #17
    Join Date
    Jan 2011
    Location
    Vancouver, BC
    Posts
    4,609
    Blog Entries
    3

    Default

    Oh definitely not giving up. I am just confused because what my eyes see in pictures doesn't seem to line up well with the netlist, so wondering which to trust. Right now I am trusting the netlist and just trying to figure out how they routed the traces where they are obscured by the connector. The traces between this connector and U5 are all on one side as far as I can tell. I am still figuring kicad out, but overall it hasn't been too bad.

    I am sticking with 2 layer. My goal, being a beginner, was to keep it simple and just use images of the original board to trace on, and then the netlist to help where I couldn't see. I'm not sure how to AI link it. I will learn though.
    Last edited by falter; September 10th, 2019 at 03:12 PM.

  8. #18
    Join Date
    May 2011
    Location
    Outer Mongolia
    Posts
    1,556

    Default

    I second the idea of laying out a schematic for the board. I know it'll probably seem like a lot of busy work to connect a bazillion switch symbols in the appropriate grid, but once it's done it'll give you access to the electrical checking and routing aids KiCad has available. And, yep, routing is indeed an art. My first few attempts at laying out a board I kept routing myself into dead-ends over and over until I developed at least a little bit of a feel for how things should flow. (And don't forget, judicious use of vias can solve a lot of problems. It should be possible to do a keyboard in two layers, the trick is working out where you need to jump a column from one side to another.)

    Also, just in case you're having this problem: be sure to set up PCBnew so you can "drag" existing traces in one piece. For some reason my installation defaulted to having each individual segment as separate entities that would break apart if you tried to move one. Was positively infuriating.

  9. #19
    Join Date
    Sep 2006
    Location
    Silicon Valley
    Posts
    2,018

    Default

    looking at the pictures, the keyboard matrix is a single sided board with jumpers between the rows

    the key matrix is described in the mame driver as:

    static INPUT_PORTS_START(mindset)
    PORT_START("K00")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ PORT_CHAR('8') PORT_CHAR('*')
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K01")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Start")
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PAUSE) PORT_NAME("Pause")
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("Sys config")
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_NAME("Reset")
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K02")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F PORT_CHAR(UCHAR_MAMEKEY(F)
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K03")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(PGUP))
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Break")
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K04")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K05")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN))
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_NAME("Caps lock")

    PORT_START("K06")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_UNUSED)
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_NAME("Control")
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K07")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Return")
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K08")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END))
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_NAME("Alt")
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("Shift (Left)")
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("K09")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("Shift (Right)")
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PRTSCR) PORT_CHAR(UCHAR_MAMEKEY(PRTSCR)) PORT_NAME("Prt Scn")
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SCRLOCK) PORT_CHAR(UCHAR_MAMEKEY(SCRLOCK))

    PORT_START("K10")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_UNUSED)
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_UNUSED)
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_UNUSED)
    PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_UNUSED)
    PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_UNUSED)
    PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_UNUSED)

    PORT_START("MOUSEAXIS1")
    PORT_BIT(0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_MINMAX(0, 255) PORT_PLAYER(1)

    PORT_START("MOUSEAXIS0")
    PORT_BIT(0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_MINMAX(0, 255) PORT_PLAYER(1)

    PORT_START("MOUSEBTN")
    PORT_BIT(0x1cf, IP_ACTIVE_LOW, IPT_UNUSED)
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1)
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1)

    PORT_START("JOYSTICK")
    PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) PORT_8WAY
    PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) PORT_8WAY
    PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) PORT_8WAY
    PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) PORT_8WAY
    PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2)
    PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2)
    PORT_BIT(0x1c0, IP_ACTIVE_LOW, IPT_UNUSED)
    INPUT_PORTS_END

  10. #20
    Join Date
    Sep 2006
    Location
    Silicon Valley
    Posts
    2,018

    Default

    here is the keyboard layout with all the jumpers in red
    the teardrop shaped pads make them easy to spot
    kb_jumpers.jpg

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •