I will gather some famiclone controllers and build a prototype of a shinobi tap on the next week.
@Danjovic I didn't quite understand what will differ between the Ninja Tap and the Shinobi Tap you are going to create. Will it be 100% compatible with the Ninja Tap?
@Danjovic I didn't quite understand what will differ between the Ninja Tap and the Shinobi Tap you are going to create. Will it be 100% compatible with the Ninja Tap?
I hope so. I have added a second feedback loop from pin 6 to pin 7 to allow differentiate between them, but that won't interfere with the operation.
The main difference is the feedback loop from pin 8 to pin 7 that was slightly changed to avoid the external circuit to force a 'high' level on pin 7 at the same time that the internal circuit on MSX is pulling the pin to 'low' level; therefore the functions that deal with Ninja Tap should always let the pin 7 in 'high' state to allow the pin state to be freely determined from the external side.
The commented code on DM system 2 driver behave like that. I believe that this issue was simply missed when they updated the code.
worth to mention that there is no need to mod the Ninja Tap c ircuit, it is just a matter of modify the tap detection routine to keep pin 7 'floating'. The remaiming code of DM 2 system does that, only the detection has this issue.
It occourred to me that the Ninja Tap can be modified to support the extra buttons of a FM-Towns controller with the aid of a decoder at each tap. Then the following addition to the Ninja Tap circuit could support FM Towns controllers
I totally suck at electronics so I'm having a bit of trouble keeping up with you. ^^
If I understand correctly the goal of the Shinobi Tap is to be 100% compatible with the Ninja Tap and to add support for the FM Town joystick (and their 4 buttons).
What is unclear to me is what seems to be the problem with the original Ninja Tap (a floating pin value) and/or its drivers.
The original drivers I integrated into MSXgl seem to work just fine with Jipe's real Ninja Tap, so I don't see what the problem is. It only happens in special cases?
I totally suck at electronics so I'm having a bit of trouble keeping up with you. ^^
If I understand correctly the goal of the Shinobi Tap is to be 100% compatible with the Ninja Tap and to add support for the FM Town joystick (and their 4 buttons).
No problem.
From the beginning: I am sure that the designers of Ninja-Tap had a NES controller protocol in mind when they designed the circuit of the NinJa Tap.
If you consider individually every one of the shift register chips (CD4021) with the DE-9 connector attached to a MSX joystick you will have essentially a NES controller
Now if you take every one of the four shift registers ICs (4021s) out of the Ninja Tap box, what reamains is pretty much the circuit of the Shinobi Tap. I other words the Shinobi is a cheap Multi-tap variant that uses (equally cheap) NES controllers, instead of MSX / Atari controllers.
What is unclear to me is what seems to be the problem with the original Ninja Tap (a floating pin value) and/or its drivers.
The MSX trigger pins can work either as an input or as an output, but the Output function has a peculiarity, it can only produce a "0 Volts" output. It can not force a "+5Volts" output directly.
If you write a '0' on either of the bits 0..3 of the register 15, the correspondent pin will be "pulled down" to "0 volts" level. On the other hand if you write '1' then the pin will be "floating" in the sense that nothing is forcing the level either to "+5Volts" or to "0 Volts". This is the default state of the register 15 for all triggers as initialized by BIOS.
The MSX trigger inputs are not properly floating because internally there are resistors tied to +5Volts that push the levels wakly to +5V, so a joystick port with nothing connected will read a series of '1's.
The problem with the circuit of the Ninja tap is that it connects the output of one normal IC (74ACT00) to the trigger B (pin 7) and by doing that it allows the existence of a condition where the external chip tries to force a "+5V" at pin 7 at the same time that the internal circuit of MSX tries to hold this pin at "0 Volts". This is basically a short circuit, and the "strongest" chipp will win, in the case is the ACT00 chip of the Ninja tap.
Such condition occurs only on the detection routine of the DM system 2. The remaining routines, to read the data are all OK.
In a previous post I have mentioned 2 points of the detection code that should be changed to avoid that to happen.
The Shinobi Tap circuit was altered in order to behave just like the Ninja Tap while avoiding the bus contention (fight). It should be detected as a Ninja Tap when pin 7 of the joystick port is kept high, but will fail if pin 7 is low.
The original drivers I integrated into MSXgl seem to work just fine with Jipe's real Ninja Tap, so I don't see what the problem is. It only happens in special cases?
I am reading the posts at the MSX village, and I believe that the problem that Jipe is facing may me due to the bus contention.
BTW the "FM Towns" controller support would be applicable to new developed Ninja-Tap Clone interfaces (Ninja-Towns ? lol!!! ).
Thank you. It's still a bit foggy, but you've cleared up the topic nicely.
I am reading the posts at the MSX village, and I believe that the problem that Jipe is facing may me due to the bus contention.
Jipe doesn't seem to have any problems with the original Ninja Tap (either with the MSXgl sample or the Gigamix games).
Are you talking about the Ninja Tap clone he's trying to make?
So, if I understand correctly, the creators of Ninja Tap designed a circuit that only works well with the specific components they used, but it doesn't work with other electronic components that should have the same function.
Is that right?
If you use the same composents, would it work?
the most relevant difference I have seen in ACT series datasheet compared to the HC is a greater capacity of driving a load (50mA x 25mA), and thus the Ninja Tap will be will be able to fight and win against the internal open collector on the msx.
The clone should work if bits 1 and 3 of PSG register 15 are kept high during NTAP routines.