Bomber Battle game (MSX 1) release date

Страница 2/2
1 |

By Amaury Carvalho

Resident (41)

Аватар пользователя Amaury Carvalho

17-10-2022, 18:09

It's really an interesting idea to include support for NinjaTap into MSXBAS2ROM through MSX BASIC's native STICK and STRIG functions. It will allow to use it not only in the Bomber Battle game, but in any other game compiled with MSXBAS2ROM.

Are there any clones of this device sold nowadays? I found this site referring to reverse engineering the schematics and code, but apparently it's still at an early stage.

A clear example (assembly code using the new ports) or documentation of the original device will be nice too.

Do you know if OpenMSX emulates this hardware?

By aoineko

Paragon (1138)

Аватар пользователя aoineko

17-10-2022, 19:16

Last OpenMSX dev build support 1 Ninja Tap (real machine support 2). If you prefer official release, you will have to wait for the next one.

MSXVillage user Bastion Rebel is preparing a batch of new Ninja Tap clone.

MSXgl (C library) have native support for this hardware but I also provide a binary driver to be used under Basic.
Add s_usr.bin (https://github.com/aoineko-fr/MSXgl/raw/main/projects/sample...) to your disk, BLOAD it and set DEF USR=&C007.
Then you have 10 id to be set in USR() function to:

0: Check Ninja Tap presence (return number of available players).

-1: Update Ninja Tap data (should be called once a frame).

1~8: Return the corresponding joystick status.

Assembler code can be found in ninjatap.c (https://github.com/aoineko-fr/MSXgl/blob/main/engine/src/dev...) from line 67.

By aoineko

Paragon (1138)

Аватар пользователя aoineko

17-10-2022, 20:27

You can also use Danjovic code (same behavior I think): https://github.com/Danjovic/MSX/blob/master/ShinobiTap/ReadT...

By Amaury Carvalho

Resident (41)

Аватар пользователя Amaury Carvalho

17-10-2022, 21:29

After a fast glimpse on the MSXgl NinjaTap driver code I think it can be used as base to implement this support natively on the MSX BASIC functions instead of USR().

For example, as controller parameter on STICK we can have something like this:

STICK( < ControllerNumber > ) 

Standard controllers on both ports (default)
0 	Cursor keys
1 	Joystick 1
2 	Joystick 2 

Ninja Tap on port 1, standard controller on port 2
0      Cursor keys
1      Joystick 1  (joy 1 from NT)
2      Joystick 2  (joy 2 from NT)
3      Joystick 3  (joy 3 from NT)
4      Joystick 4  (joy 4 from NT)
5      Joystick 5  (port 2)

Standard controller on port 1, Ninja Tap on port 2
0      Cursor keys
1      Joystick 1  (port 1)
2      Joystick 2  (joy 1 from NT)
3      Joystick 3  (joy 2 from NT)
4      Joystick 4  (joy 3 from NT)
5      Joystick 5  (joy 4 from NT)

Ninja Tap on both ports
0      Cursor keys
1      Joystick 1  (joy 1 from NT on port 1)
2      Joystick 2  (joy 2 from NT on port 1)
3      Joystick 3  (joy 3 from NT on port 1)
4      Joystick 4  (joy 4 from NT on port 1)
5      Joystick 5  (joy 1 from NT on port 2)
6      Joystick 6  (joy 2 from NT on port 2)
7      Joystick 7  (joy 3 from NT on port 2)
8      Joystick 8  (joy 4 from NT on port 2)
Страница 2/2
1 |