Joystick Interfaces on +2A

135

Comments

  • edited April 2014
    I like the auto-fire feature, and so I would want any new joystick interface to use the "standard" pin-out:-
    1 - Up
    2 - Down
    3 - Left
    4 - Right
    5 - Fire 3 (if used)
    6 - Fire 1
    7 - +5V
    8 - 0V/Ground
    9 - Fire 2 (if used)

    Mark
    Sinclair FAQ Wiki
    Repair Guides. Spanish Hardware site.
    WoS - can't download? Info here...
    former Meulie Spectrum Archive but no longer available :-(
    Spectranet: the TNFS directory thread

    ! Standby alert !
    “There are four lights!”
    Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb!
    Looking forward to summer in Somerset later in the year :)
  • edited April 2014
    I suppose if we're going to have CPLD inputs for every single input and buffers selecting the inputs then there's no reason to try to multiplex the joysticks with their ground pins etc. Therefore autofire sticks would Just Work.
  • edited April 2014
    That's not exactly standard. Autofire is great if you have it, but it can be destructive if you don't. There are joysticks around that use pin 7 as an extra fire button. Connect that up to +5V and when you push the button you ground 5V and crash everything. SEGA pads for example use Pin 7 for the select button and expect +5V on Pin 5. COMCON modified Quickshot joysticks so that they used the Pin 7 line as FIRE-2, and it was 'standard' for Amstrad joysticks to do the same, as it was the only extra wire commonly found in a joystick cable. It's best not to supply +5V at all unless you're sure the joystick supports it.

    Other joysticks from different machines use different pins for the second fire button. I'd say if you're going to supply 5V, you make it optional. Also, if you're going for a second fire button, you pool the remaining pins together (including pin 7 if it's not set to +5V) as one extra bit. You could have three PCB jumper pins in a row and a single jumper to connect the middle one (wired to pin 7 on the joystick) to either +5V or into the pool of FIRE-2 controls. You just don't get joysticks with 3 buttons.

    The 0V / +5V as common thing comes from Sinclair-like keypress interfaces, or specifically interfaces that combine Kempston and Sinclair ports. Because one requires the bits inverted compared to the other, they use 0V as the common on one joystick, and +5V as common on the other. Try and use one of those pads that has an autofire you can't turn off and they go mental.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    Of the joystick interfaces that I have examined, most use 0V for the common. Some "Kempston" compatable interfaces (including maybe an actual Kempston IIRC) use +5V as a common.
    Once joystick manufacturers started including auto-fire, the interface makers appeared to move to only using 0V for the common.

    For the Sinclair Interface Two, it uses 0V as the common. But has no +5V feed to the connectors.
    For "Kempston" compatable interfaces that use 0V as common, they use inverting buffers to get the signal polarity right.

    Yes there are differing arrangements for the +5V line and the fire button.
    The +5V on pin 7 is correct for the Atari computers that I have and for the small number of Spectrum joystick interfaces that I have that support auto-fire.

    So when I add/design/modify joystick interfaces I include a 100 ohm resister for protection. This will limit the fault current to 50mA.

    Mark
    Sinclair FAQ Wiki
    Repair Guides. Spanish Hardware site.
    WoS - can't download? Info here...
    former Meulie Spectrum Archive but no longer available :-(
    Spectranet: the TNFS directory thread

    ! Standby alert !
    “There are four lights!”
    Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb!
    Looking forward to summer in Somerset later in the year :)
  • edited April 2014
    If you look inside a DK'Tronics twin-port interface (Kempston and Sinclair) you'll see one port uses 0V as common and biases the other pins high; the other port uses +5V as common and biases the other pins low. So when they're joined on the data bus, one set is the inverse of the other.

    If you connect a SEGA MegaDrive pad to an interface that provides +5V on the Atari Pin 7, you can cause a crash and reset. A resistor is a good idea to try and protect against that, but still, if that's the only wire in the joystick lead it has for a second fire button, you're blocking it.

    I don't see the problem with simply making the +5V supply user-selectable.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    Err, I'm not disagreeing :o
    For new designs including pin headers and jumper shunt links is logical.

    I have a number of joystick interfaces, but don't have a DK'Tronics twin-port interface (Kempston and Sinclair). But it does not surprise me that they use different common pin arrangements.

    Mark
    Sinclair FAQ Wiki
    Repair Guides. Spanish Hardware site.
    WoS - can't download? Info here...
    former Meulie Spectrum Archive but no longer available :-(
    Spectranet: the TNFS directory thread

    ! Standby alert !
    “There are four lights!”
    Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb!
    Looking forward to summer in Somerset later in the year :)
  • edited April 2014
    The great thing about standards... :)

    standards.png
  • edited April 2014
    Well, it's no surprise for the Spectrum to have multiple joystick options; it'll just have a few more!

    Though seriously, if a game has four players, joystick options for the first three are already pretty certain. It's just the last guy will either be Keyboard, K-55, K-FFFE, or everyone on ZXI Joysticks 0-3. In theory.

    And probably best if your game doesn't rely on the number keys to set up the controls, so someone on Sinclair-2 doesn't screw up the settings!
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    OK, I'll change the menu system so that letters change the controls.... that's gonna look messy, better still... just tell them to put the joystick down and select the controls using keyboard, now start the game, you can pick up the joystick now

    That's why it is better to have the options on a spare page and if there is a joystick fiddler in the group, just tell them to leave it alone for a minute (second warning is a punch to the arm).

    If someone designs another joystick interface then I will try and crowbar it in, but as it stands, Sinclair 1+2,Kempston 31 and K55 should be ideal.

    The other main thing that needs to be done is the updating the emulators to support 4 joysticks.
  • edited April 2014
    Mat - if I send you a converted RAM Kempston interface, can you use it? I mean, do you have a splitter or Kempston interface with a through-port? It's an upright type with the socket on the front. I do also have a genuine Kempston flat interface I could do if you prefer, although it needs a new joystick socket.

    I do have a DK'Tronics 2-port that I may be able to adapt to Kempston & K-55, but it'll take a lot of work; almost as much as building a new one. Not sure when I can get round to that.

    Personally I'm inclined to stick with K-55 too. As you say, we're still around and can still update the games. If the Russians want to use port #FFFE then they'll have to build their own interface to do that much decoding. And at some point I'll write up the scheme for ZXI Joysticks if anyone wants to use it in future, for some 8-player extravaganza.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    MatGubbins wrote: »
    If someone designs another joystick interface then I will try and crowbar it in, but as it stands, Sinclair 1+2,Kempston 31 and K55 should be ideal.

    The other main thing that needs to be done is the updating the emulators to support 4 joysticks.

    To have the right to judge about the degree of perfection, you need to know the criteria of ideality. This criterion is Occam's razor. In accordance with this principle, port #37 is redundant. The ideal option is to use port #FFFE!
  • edited April 2014
    Well then, once you've built one, you can come back and tell us all about it.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    Black_Cat wrote: »
    The ideal option is to use port #FFFE!

    I know that in your mind this is a great idea and not a problem at all, but I would have thought that by now you would have got the message that no-one here agrees with you...
  • edited April 2014
    guesser wrote: »
    I know that in your mind this is a great idea and not a problem at all, but I would have thought that by now you would have got the message that no-one here agrees with you...

    :) For the constructive dialogue it would be better if you will speak on your own behalf, and will substantiate your opinion with facts.

    P.S. Thanks for redrawn Amstrad model schematics. :)
  • edited April 2014
    'For the constructive dialogue' it would be better if you were willing to consider a compromise position.

    You insist on a fully decoded system (which is impractical in itself) that simply will not work with the majority of genuine machines. I don't know how many times I have to repeat it before you get it - what you are asking for does not work for anyone on WoS. You are trying to defend some very bad design decisions by some of your fellows with a proposal that does not work. While you hold to that position, there's no point even trying to discuss it with you. That is a fact.

    If someone designed a machine with a built-in 'Kempston' joystick interface that does not test address line A5 then they made a big, big mistake. That is also a fact.

    Clearly there are some Russian clones for which K-55 is unsuitable. But port #FFFE is an even worse choice if you consider original machines. These are also facts.

    But here are two options for compromise:

    (1) If you want an interface that uses port #FFFE then someone from the Russian clone community will have to build one. No-one in the Western-European crowd with original machines is going to build one because it will not work with our machines. If you do build one, then people can add support for it to their games. But until you or someone from your community builds it, you will not see any support.

    (2) Consider the ZXI standard for Spectrum and Spectrum-Clone communications for the future and which of the Russian clones can and will support it, and sacrifice the ones that don't. Or modify new ones so that they do.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    And now the facts:
    joefish wrote: »
    You insist on a fully decoded system

    It's a lie. Nothing like I said not.
    joefish wrote: »
    that simply will not work with the majority of genuine machines.

    How do you justify your conclusion? How can you make such conclusions without seeing circuitry?
    joefish wrote: »
    You're trying to defend some very bad design decisions by some of your fellows with a proposal that does not work.

    Bad design decision is to take 256 port address for the device whose usefulness is highly questionable. Good design decision is to take only one port #FFFE.
  • edited April 2014
    It is up to you to demonstrate how your idea will work for all machines.
    Otherwise, stop wasting our time.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    joefish wrote: »
    No-one in the Western-European crowd with original machines is going to build one because it will not work with our machines.

    Why you need a device that will not work on the clones Amstrad? Of course, this device will work on +2a,b/+3.
  • edited April 2014
    Black_Cat wrote: »
    Bad design decision is to take 256 port address for the device whose usefulness is highly questionable. Good design decision is to take only one port #FFFE.

    As we have discussed many times in the past none of us posses a time machine to go back and change what ports were used in the eighties. Joefish's intention is to work around the limitations while maintaining compatibility as best as can be achieved.

    We acknowledge the fact that this is contrary to your ideas about development, but this is Joefish's thread about joysticks for his games to work with British speccies and peripherals. What Russian computers do is entirely irrelevant because they are different...
  • edited April 2014
    How will #FFFE work on +2A/B/3? The machine is built so that if A0 is 0 then you cannot override the data on the data bus with your own input. Demonstrate a way to do this if you are so sure. Otherwise stop repeating the same mis-information.

    Also, if the lower data byte of the data bus contains #FE then you must be sure that all upper bits are 1 otherwise the IN will be mistaken for a keyboard read. So you must test AT LEAST 9 BITS of the address to be sure the read is #FFFE.

    On all real Spectrums, IN 55 can be determined by testing one address line (A3) and that will distinguish it from Keyboard, Kempston, Sinclair, ZXI, DivIDE and most clone disk interfaces. This is far easier to implement in hardware.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    Black_Cat wrote: »
    Of course, this device will work on +2a,b/+3.

    No, it will cause a bus collision when the ASIC also responds to the IN instruction. If you've found a solution to that problem then I'm sure everyone will eat their hat and build joystick interfaces on port 0xFFFE...


    Of course I'm 99% sure I know what your "solution" to that is already.
  • edited April 2014
    guesser wrote: »
    No, it will cause a bus collision when the ASIC also responds to the IN instruction. If you've found a solution to that problem then I'm sure everyone will eat their hat and build joystick interfaces on port 0xFFFE...


    Of course I'm 99% sure I know what your "solution" to that is already.

    This is solved very simply, and I have already talked about this in another branch.
  • edited April 2014
    Black_Cat wrote: »
    This is solved very simply, and I have already talked about this in another branch.
    No, that's a lie. You said you could but you still have not demonstrated how it can work. You are still just wasting time - you have not provided any useful information.
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    Black_Cat wrote: »
    This is solved very simply, and I have already talked about this in another branch.

    Exactly, and as you well know no-one here considers that a solution. You are either being wilfully stubborn or are just an idiot who can't understand that not everyone in the world is the same as you.
  • edited April 2014
    joefish wrote: »
    No, that's a lie. You said you could but you still have not demonstrated how it can work. You are still just wasting time - you have not provided any useful information.

    He's talking about opening the speccy and cutting tracks to add an IORQGE line again. I suggest just treating him as a troll and ignoring him so the discussion can continue :roll:
  • edited April 2014
    I thought he meant this:
    Black_Cat wrote: »
    I know how to connect the port #FFFE to +3, it is very simple. With edge connectors you need to get an address, and the input Sinclair Joystick to submit data.

    In other words, sacrifice one joystick port so you can read another. Or build a multiplexer that has to read the edge connector and take over the existing joystick ports. If it will even work. Somehow I don't consider that the easy option. Anyway, how can that work? If it did, surely keypresses on the different rows would already be colliding?
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    joefish wrote: »
    I thought he meant this:

    Oh, ahem. I stand corrected then! My apologies Black_Cat, I never saw that post so jumped to the conclusion above :o
  • edited April 2014
    Even if it works, it's still a ridiculously complicated solution to a problem that only exists on Russian machines.

    If it's a Russian machine, it's easier to implement as a normal interface.
    If it's not a Russian machine, there are far simpler solutions to getting a fourth joystick to work.

    Why does one solution have to be forced onto everyone else?
    Joefish
    - IONIAN-GAMES.com -
  • edited April 2014
    joefish wrote: »
    Why does one solution have to be forced onto everyone else?

    Well this is why I personally think it's better to just not treat Russian Z80 computers like the Pentagon etc as the same thing as a Spectrum.
    They have a certain degree of compatibility being the same processor and similar video and i/o, but hardware that is designed to be compatible with one computer's ecosystem won't work with another because they are not the same. Trying to devise standards that are compatible with all the existing hardware and software available for both systems simultaneously is a fools errand.
  • edited April 2014
    joefish wrote: »
    In other words, sacrifice one joystick port so you can read another. Or build a multiplexer that has to read the edge connector and take over the existing joystick ports. If it will even work. Somehow I don't consider that the easy option. Anyway, how can that work? If it did, surely keypresses on the different rows would already be colliding?


    To sacrifice one connector is not necessary. Because the device must work not only on the clones +2a,b/+3, but on the ZX Spectrum, it must include all four joystick interface.

    P.S. Please don't try to refer to exUSSR clones, about which you know nothing, we'll deal with them ourselves.
Sign In or Register to comment.