News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_mr_lou

4-player adapter? // MultiPlay MX4 Expansion

Started by mr_lou, 11:36, 29 June 15

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Bryce

Quote from: MacDeath on 16:50, 29 June 15
Yeah, when it is time to get free cards by being a betatester, there are many volunteers, but when it is time to deliver productions to use those cards.... oops...
:laugh:
the card works well, it just needs games.  ;D

That's a bit unfair. Maybe you could say it about other people, but mr_lou is one person who definitely supports the development of new hardware every time.

Bryce.

mr_lou

Thank you Bryce.

Is there any chance you can take a look at Toto's prototype, and tell us your thoughts on it? Perhaps ask @gerald too what he thinks?

It would be awesome if the hardware developers could all agree that this is how the "standard 4-player adapter" should be.  :)

gerald

Quote from: mr_lou on 19:14, 29 June 15
Thank you Bryce.

Is there any chance you can take a look at Toto's prototype, and tell us your thoughts on it? Perhaps ask @gerald too what he thinks?

It would be awesome if the hardware developers could all agree that this is how the "standard 4-player adapter" should be.  :)
In order to save some IO port I would do the following :
- Use the PPI port C address (used to select keyboard line) and use the non decoded lines 10 to 11 to select 2 more to joysticks. That requires decoding that port and a 4 bit DFF.
- add a 4 to 1 mux on controlled by line value to select one of 4 joystick accordingly (line 6, 9, 10, 11). Each joystick having its connector
- have a cable that connect the output of the mux to the original joystick port.

Doing so gives us :
- 4 joystick port, without clash between them (thanks to the mux). However they still can clash with the keyboard.
- 2 of these port are compatible with the original one
- getting additional joystick state only require extending the current keyboard scan to 2 more lines.

The only drawback is the space required by all the DB9 connectors

TFM

Quote from: mr_lou on 13:19, 29 June 15
I heard that too, but I also recall TFM saying something about it only being because the Y-splitter wasn't made correctly.
@TFM are you there?


Yes, that's right. Adding Diodes will solve the problem. Now how to get 4 players up gaming?


If only using the joystick port of the CPC6128 we have too 'exits' and seven 'inputs'. Now if we add a very small board which separates the signals from joysticks we could use the two 'exits' as 01, 10 and 11 (not 00, which would just say - nothing happens -). So 3 * 7 + 21... Four players need 4 directions + fire equals 4 * 5 + 20!!!
Cool works!!!!!!!!!!!!!!!!!!  :) :) :)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

TFM

Quote from: TotO on 14:56, 29 June 15
It is true. Because the spare line is sadly not wired on PLUS.


Right. And by adding a short piece of wire or a diode (I forgot which one it was), it can be very easy be patched. Even people who are not super solderers can do it. And all Plusses should be upgraded that way anyway (imho).  :) :) :)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

MacDeath

QuoteThat's a bit unfair. Maybe you could say it about other people, but mr_lou is one person who definitely supports the development of new hardware every time.
I wasn't implying anything mr_lou specific... it was a general comment. I don't have any specific name to name. :D

Sorry if this was taken as such.

Bryce

Quote from: TFM on 20:06, 29 June 15

Yes, that's right. Adding Diodes will solve the problem. Now how to get 4 players up gaming?


If only using the joystick port of the CPC6128 we have too 'exits' and seven 'inputs'. Now if we add a very small board which separates the signals from joysticks we could use the two 'exits' as 01, 10 and 11 (not 00, which would just say - nothing happens -). So 3 * 7 + 21... Four players need 4 directions + fire equals 4 * 5 + 20!!!
Cool works!!!!!!!!!!!!!!!!!!  :) :) :)

That's a neat idea, but would involve major changes to the Firmware.
@Gerald: If I recall correctly, you've already done a PS/2 keyboard expansion that interfaces to the CPC at exactly the right spot. Would it not be easiest to add the two new Joystick ports to this expansion?

Bryce.

mr_lou

I see some great input.

I should probably clarify something though.

I'm not sure why it's called a "4-player adapter". But the C64 people calls it that too, even though it's actually just a 2-player adapter. But adding those two to the existing two ports makes it possible to connect 4 joysticks.

So, I'm thinking the board should just offer 2 additional joystick ports, not 4.

Standard CPC's will then of course also need a proper Y-splitter for the existing joystick port.

My vote goes for anything that requires no modification of the CPC. Even if it is just a single diode or wire needed to be soldered. Most people simply won't do it.
We need something that will work on all models without any fuzz.  :)

My personal preference will be a standalone board, without any other stuff. But I'm thinking, if the hardware guys agrees on the protocol, then the adapter could exist in many forms, and included on various other boards too.

TFM

Let's boil it down:

- 4 Players can be done
- The firmware will of course only support two joysticks
- An  new I/O card can make the four new ports very quick to handle
- A solution which targets the keyboard matrix will allow to play all games (which allow to 'define keys')

Now another thing. In case one would do a new interface, it could be an advantage to add interrupt capability to have a high resolution (and also simplify things somehow - ok, only my pov).


TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

gerald

Quote from: Bryce on 21:13, 29 June 15
@Gerald: If I recall correctly, you've already done a PS/2 keyboard expansion that interfaces to the CPC at exactly the right spot. Would it not be easiest to add the two new Joystick ports to this expansion?
It would be difficult space wise, the original PC2CPC is internal : where to put the additional DE09 port  ;)
Quote from: mr_lou on 21:41, 29 June 15
I'm not sure why it's called a "4-player adapter". But the C64 people calls it that too, even though it's actually just a 2-player adapter. But adding those two to the existing two ports makes it possible to connect 4 joysticks.

So, I'm thinking the board should just offer 2 additional joystick ports, not 4.
That's what TotO's interface do, but the 2 additional joysticks are on specific IO ports (for Z80 point of view) and requires specific code for reading them.
But that solution does not help regarding joystick 0 / joystick 1 clash.

What I was proposing is a solution that : allow 4 joysticks, without clash, using the same keyboard scan function extended to have two more lines.

In both case, no modification are required to the CPC.

TFM

How can you access two more lines without hardware modification? The 6128 has 9 pin out and.... anything else needs to go to the keyboard connector!?!? Where do I miss the point?
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

gerald

Quote from: TFM on 22:22, 29 June 15
How can you access two more lines without hardware modification? The 6128 has 9 pin out and.... anything else needs to go to the keyboard connector!?!? Where do I miss the point?
The joystick port exposes 7 row of the keyboard matrix + 2 lines.
The idea is to have an extension that deal with the 4 joysticks lines (selected like the keyboard lines : same IO port, but managed the extension) and send the rows to the AY by being connected to the joystick port.

mr_lou

Quote from: gerald on 22:01, 29 June 15
It would be difficult space wise, the original PC2CPC is internal : where to put the additional DE09 port  ;) That's what TotO's interface do, but the 2 additional joysticks are on specific IO ports (for Z80 point of view) and requires specific code for reading them.
But that solution does not help regarding joystick 0 / joystick 1 clash.

That's how I understood it too. It can't be accessed from BASIC without a set of RSX commands.
However, the joystick 0 / joystick 1 clashing should be solved with a proper Y-splitter with diodes.

Quote from: gerald on 22:01, 29 June 15
What I was proposing is a solution that : allow 4 joysticks, without clash, using the same keyboard scan function extended to have two more lines.

So your 4-player adapter requires no set of RSX commands in order to use it from BASIC? If so, that surely sounds sweet.
Does that also mean, that any game that offers redefinition of controls, can receive signals from this 4-player adapter?

Dizrythmia

I guess this explains why Y cables have problems with joysticks conflicting with each other. I assume the mod in the Joystick Splitter - CPCWiki  article would correct that?

mr_lou

Quote from: Dizrythmia on 07:27, 30 June 15
I guess this explains why Y cables have problems with joysticks conflicting with each other. I assume the mod in the Joystick Splitter - CPCWiki  article would correct that?

Yes, that's what they say.  :)
So having a Y-splitter with diodes for existing 2-player games is a good idea. But it sounds like this 4-player adapter might be solving that problem too, when gerald says that two of the ports on this new 4-player adapter is compatible with the existing two.

TotO

Quote from: gerald on 22:01, 29 June 15what TotO's interface do, but the 2 additional joysticks are on specific IO ports (for Z80 point of view) and requires specific code for reading them.
In all cases, you need a specific code to read more than 2 controllers... Here, by reading the I/O port.
i.e. from BASIC: JOYA=INP(&F990) : JOYB=INP(&F991)

Quote from: gerald on 22:01, 29 June 15But that solution does not help regarding joystick 0 / joystick 1 clash.
Sure, because I don't handle JOY0 and JOY1.
Amstrad put this part into the JY-2 controller, to reduce the computer cost. So, it is not a proplem if peoples use a JY-2 controller, a properly built Y-cable or a PLUS computer.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

mr_lou

Quote from: TotO on 07:49, 30 June 15
In all cases, you need a specific code to read more than 2 controllers...

How does one read input from your 2-player adapter?

TotO

#42
Quote from: mr_lou on 07:59, 30 June 15
How does one read input from your 2-player adapter?
From BASIC, like I wrote in my previous post.
JOYA=INP(&F990) : JOYB=INP(&F991)

For example, to test the JOYA:
10 PRINT BIN$(INP(&F990),8):GOTO 10
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

mr_lou

Quote from: TotO on 08:12, 30 June 15
From BASIC, like I wrote in my previous post.
JOYA=INP(&F990) : JOYB=INP(&F991)

For example, to test the JOYA:
10 PRINT BIN$(INP(&F990),8):GOTO 10

Oh, I thought you were referring to the other 4-player adapter when talking about the INP commands.
Well, I think that's a good way of doing it, because it doesn't require any RSX commands.

@gerald, will your 4-player adapter be readable the same way? Or how does one read that?
Sorry for asking stupid questions. I'm not a hardware guy.

If yes, it would be great if hardware developers could just agree that joystick 3 would be on &F990 and joystick 4 would be on &F991 and give the same values for directions. That way anyone could make his own adapter.
If no, then how does one read the input from BASIC with your adapter idea gerald?

TotO

#44
My first idea was to offer four (A, B, C, D) new inputs using ports: F990, F991, F992, F993
Because it is accurate like arcade machine and easy to build and use.
Now, I thing that 2 (A, B) controllers is enough and allow to fit on a MX4 board.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

andycadley

Quote from: TotO on 09:38, 30 June 15
My first idea was to offer four (A, B, C, D) new inputs using ports: F990, F991, F992, F993
Because it is accurate like arcade machine and easy to build and use.
Now, I thing that 2 (A, B) controllers is enough and allow to fit on a MX4 board.

The problem with that idea is the complete lack of compatibility with existing software. It would recreate the terrible situation with joysticks on the spectrum.

mr_lou

Quote from: andycadley on 10:01, 30 June 15
The problem with that idea is the complete lack of compatibility with existing software. It would recreate the terrible situation with joysticks on the spectrum.

I don't see how.
Existing games will still use the existing port (splitable into 2 if you want).
The 2 additional ports will only be used for 4-player games, as far as I can see - just like the C64 adapter is used.

TotO

#47
Quote from: andycadley on 10:01, 30 June 15
The problem with that idea is the complete lack of compatibility with existing software.
Compatibility with what? Nothing in the past use more than 2 joysticks on CPC.  :-\
Today, MegaBlaster and QuadRaster already use it.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

gerald

Quote from: mr_lou on 07:23, 30 June 15
So your 4-player adapter requires no set of RSX commands in order to use it from BASIC? If so, that surely sounds sweet.
Does that also mean, that any game that offers redefinition of controls, can receive signals from this 4-player adapter?
You will need either RSX or a FW patch to access the additional joystick, just because the FW does not know they exist.
The only advantages over TotO's solution are :
  - No additional IO space required, we use an existing IO address
  - Access is method is identical to keyboard and joysticks0/1. Only 2 more lines to scan


mr_lou

Hm....

So, Toto's solution is compatible with existing games. Megablasters was made in 1994, so the adapter must have been invented 11 years ago already?
I'm definitely in favour of not inventing new protocols, because that will exactly create the compatibility problem andy talks about.

I'm not interested in having 2 different kinds of joystick adapters to switch between. One should be sufficient.

Considering that Toto's solution is compatible with existing games, and gerald's idea requires RSX commands or FW patching, I have to lean towards Toto's board.

I have to ask, @gerald, why create a new protocol? Is the benefit of saving IO space really that valuable? Are we talking a really significant speed-up compared to the existing adapter?

Not saying we can't have both, but I don't see myself adding support for both adapters in whatever games I would create...

Powered by SMFPacks Menu Editor Mod