Neo Geo Track Ball Games

Hello, Dude..
Exciting topic this one but what happen here ?
Where this topic go ?

Is possibile that is dead in this way ?
 
Hello, Dude..
Exciting topic this one but what happen here ?
Where this topic go ?

Is possibile that is dead in this way ?
I've not seen anything much on this front in years, and I have too many open projects to dig into it myself. Pity as irritating maze is a hard one to justify picking up without any way to play it, definitely an issue if you're trying to complete the set as I am. I did see a full kit on the ebays awhile back, but it was 5k USD and no longer listed.
 
So my ADHD kicked in and I dug into this a bit more, folks are saying that a HAPP trackball hooked up directly to a MV1C or MV1B with UniBIOS 3.3 (not sure about 4) will work without an interface board... so I tracked down a copy of Irritating Maze at a price that didn't cause too much heart burn and I'll give it a try.
 
So my ADHD kicked in and I dug into this a bit more, folks are saying that a HAPP trackball hooked up directly to a MV1C or MV1B with UniBIOS 3.3 (not sure about 4) will work without an interface board... so I tracked down a copy of Irritating Maze at a price that didn't cause too much heart burn and I'll give it a try.
If you need help to test please ask!
 
If you need help to test please ask!
I'll post information as I get it.

Example: here's someone using a four player expansion board to wire up a trackball to a MV1F without needing the SIT PCB.
View: https://www.youtube.com/watch?v=sS1Ec9I584s


At least in theory, this is the same as using the eight pin side connector on the MV1C and MV1B. But I'm not sure which pin on the main board gets which of the X-dir, X-clk, Y-dir, Y-clk, +5, and GND pins from the trackball. I've been told that it's specifically the 3" HAPP trackball that works, but even then they can have different encoders and wiring harnesses.
 
So my ADHD kicked in and I dug into this a bit more, folks are saying that a HAPP trackball hooked up directly to a MV1C or MV1B with UniBIOS 3.3 (not sure about 4) will work without an interface board... so I tracked down a copy of Irritating Maze at a price that didn't cause too much heart burn and I'll give it a try.
Haha, I might have something undiagnosed but I did the same thing :D

According to https://wiki.neogeodev.org/index.php?title=SIT_board you would need P1/P2 output (REG_POUTPUT) since those pins controls the reading of the trackball. Most likely why the addon-board has pins spaning both P1 and P2 ports and also both controller port populated to the MVS. The trackball value looks to be a full byte so all REG_P1CNT bits looks to be used to signal to the BIOS what the movement is. Could also be just the lower 4 with a smaller delta value, so you can have those 4 buttons active.

I might be wrong but to me it looks like he made an alternative "SIT-board" without the fluff and just the controller part.
The big IC on the purple board looks to be a CPLD, just to handle values and flip the Latch/Clock/Data. There might also be a sensitivity setting included due to the fact that a big ball would not have the same resolution as a smaller ball etc.

Just some thoughts.. :)
 
Last edited:
Haha, I might have something undiagnosed but I did the same thing :D

According to https://wiki.neogeodev.org/index.php?title=SIT_board you would need P1/P2 output (REG_POUTPUT) since those pins controls the reading of the trackball. Most likely why the addon-board has pins spaning both P1 and P2 ports and also both controller port populated to the MVS. The trackball value looks to be a full byte so all REG_P1CNT bits looks to be used to signal to the BIOS what the movement is. Could also be just the lower 4 with a smaller delta value, so you can have those 4 buttons active.

I might be wrong but to me it looks like he made an alternative "SIT-board" without the fluff and just the controller part.
The big IC on the purple board looks to be a CPLD, just to handle values and flip the Latch/Clock/Data. There might also be a sensitivity setting included due to the fact that a big ball would not have the same resolution as a smaller ball etc.

Just some thoughts.. :)
It's hard to say for sure what's going on in that video, but at a minimum a simpler solution should exist for the trackball interface. The SIT board does a lot of other stuff, including controlling the air jets to distract the player. I'm hoping to figure something out akin to what I did with the mahjong controller (which I never really finalized but have a working prototype). https://www.arcade-projects.com/threads/diy-mahjong-controller.27806/page-3

There's a lot of weird and often conflicting information about the trackball interface... for example: this bit of text (unsourced) lists JAMMA pins that aren't in use as far as I know. Likewise I am not aware of any dip switch settings that might alter the behavior. So it seems like a lot is down to the BIOS where I'm told (possibly incorrectly) that UniBIOS 3.3 does some stuff to get it to all work but v4 doesn't.
1767659300841.png
 
Think I have a glimmer of understanding. UniBIOS has a joystick and a trackball “cheat”, which changed default behaviors after v3.3 and the feature may have been broken at that point (reading that the new default locks users out of the UniBIOS menu since it stops recognizing some inputs while looking for a trackball). So what I think I’m seeing out there is a means by which the trackball behavior is using the player two direction inputs. Not a lot of documentation for the feature out there…
 
Sorry I never posted my findings. I went pretty far in studying the SIT board.

Wiring & protocol

Xa = V (18 ) = P2 UP
Xb = W (19) = P2 DOWN
Ya = X (20) = P2 LEFT
Yb = Y (21) = P2 RIGHT

$380001 (REG_POUTPUT)
D7 = ?
D6 = ?
D5 = P2 output
D4 = P2 output
D3 = P2 output
D2 = P1 output
D1 = P1 output
D0 = P1 output

D7 = ?
D6 = ?
D5 = Air jet
D4 = Card dispenser ?
D3 = Latch
D2 = Clock
D1 = Data
D0 = Trackball X /Y select

Read $380000

w $380001 0 Trackball X select
r $340000 Joypad port 2 inputs (REG_P2CNT)- read left/right A/B buttons (buttons A~D pass-through, left A = A, left B = B, right A = C, right B = D)
w $380001 0 Trackball X select
r $300000 Joypad port 1 inputs (REG_P1CNT) - read trackball X
w $380001 1 Trackball Y select
r $300000 Joypad port 1 inputs (REG_P1CNT) - read trackball Y
r $340000 Joypad port 2 inputs (REG_P2CNT)
w $380001 1, 5 x 14 Read trackball Y, Clock = 0, Data = 0 => Read trackball Y, Clock = 1, Data = 0
w $380001 3 Read trackball Y, Clock = 0, Data = 1
w $380001 7 Read trackball Y, Clock = 1, Data = 1
w $380001 1 Read trackball Y, Clock = 0, Data = 0
w $380001 5 Read trackball Y, Clock = 1, Data = 0
w $380001 3 Read trackball Y, Clock = 0, Data = 1
w $380001 B Read trackball Y, Latch = 1, Clock = 0, Data = 1
w $380001 1 Read trackball Y, Clock = 0, Data = 0
r $380000 Aux inputs (REG_STATUS_B) - Select/Start, etc.

D0 to switch between X and Y on P1 inputs
$3800001 for SIPO (Serial Input Parallel Output) + card dispenser? + air jet

P1 left (20) = card OK => routed to P2 18 (UP)
P1 right (21) = card error => routed to P2 19 (DOWN)
P1 A (22) = card empty => routed to P2 20 (LEFT)
P1 B => routed to P2 21 (RIGHT)
P1 select = P1 select
P1 C = NC
P1 D = NC

CPLD pinout (EPM7128SQC100-15, I populated the JTAG pins but of course it was locked)

1767678416744.png


Principle diagram

1767678538917.png


I also started to write the Verilog for the CPLD in Quartus but I can't locate the project for now.
 
Think I have a glimmer of understanding. UniBIOS has a joystick and a trackball “cheat”, which changed default behaviors after v3.3 and the feature may have been broken at that point (reading that the new default locks users out of the UniBIOS menu since it stops recognizing some inputs while looking for a trackball). So what I think I’m seeing out there is a means by which the trackball behavior is using the player two direction inputs. Not a lot of documentation for the feature out there…
Oohh, now I understand what you are after. Sorry for misunderstanding :)

Option 1: UniBIOS + trackball-hack <- you goal
Option 2: 236-BIOS + trackball SIT

Did a small dive into the 236-BIOS and following seems to be "needed".
Trackball is read by flipping bit 0 of REG_POUTPUT (0 = X, 1 = Y). The actually value then comes from REG_P1CNT for both X and Y with 8-bit.

These values are saved in this structure:
0x10FE02 = old X value
0x10FE03 = new X value
0x10FE04 = new delta (new X - old X)
0x10FE05 = old delta
...
0x10FE08 = old Y value
0x10FE09 = new Y value
0x10FE0A = new delta (new Y - old Y)
0x10FE0B = old delta

Values are also merged into the normal BIOS_P1/P2_CHANGE (0x10FD97 / 0x10FDD) structure with following bit mapping:
0 = Y-pos
1 = Y-neg
2 = X-pos
3 = X-neg
4 = P2 A-button
5 = P2 B-button
6 = P2 C-button
7 = P2 D-button

For the UniBIOS 4.0, it pretty much does the same thing by search for the NGH-number of Irritating Maze and then running the same value mangling as the 236-BIOS. Both versions also save 0x10FE0E and 0x10FEE8, but the test io-screen does not read from those so I would assume those are internal and not for the game to read.

This is more for reference so next up is to see what the UniBIOS 3.3 does :)
 
Oohh, now I understand what you are after.
For me, I just want to be able to play the cart. It's been an issue since it's so expensive, it's a gap in my collection I've not wanted to fill since it would just be a shelf piece. It seems like I'll be able to get it running in some manor or other, but I'd still like to see a SIT board replacement be pulled together and will help out as I can.

Went through my parts bin and I think I have an appropriate trackball, so just waiting on the cart to be delivered.
 
Well, both UniBIOS 3.3 and 4.0 pretty much does the same thing.

The flag from cheat-codes to enable joystick movement changes 0x10fe3a to 1 or 0. If 1, then it ignores the SIT-board input and moves on to read the normal joystick, with the B/C button as a multiplier. Everything is still written to 0x10FExx for the game to read from.

As long as a trackball acts as a joystick, with a UniBIOS, 3.3 or 4.0, it will probably work. My guess is that the trackball does not pull any line low when moved, but the opposite. If the Neo Geo MVS expect it to be pulled low, you would need to invert the signal somehow.

Far from impossible to make a small, simple board for this, maybe a challenge for tomorrow :)
 
If your goal it to play the game with a trackball but without a SIT board it will never happen.
The trackball uses quadrature encoding, for each direction (X and Y) there are two signals 90° out of phase.
Those signals are pulses and depending which one rises/falls first you know the direction and you can increment/decrement a counter.

You could however handcraft a simple version of the SIT board with a µPD4701.
 
Last edited:
For me, I just want to be able to play the cart. It's been an issue since it's so expensive, it's a gap in my collection I've not wanted to fill since it would just be a shelf piece.
Of course playing it as intended with real trackball support would be ideal (it would still be missing the air jets from the cab), but my Irritating Maze cart is not just a shelf piece. When I got it I played it a lot with the joystick, and really enjoyed the challenge and presentation. I still take it down from time to time about as much as any of my carts to play it again.
 
I'm tested today a spinner with a RPI 2040 to emulate Left & Righ similar to what we talking here but the feeling is not satisfactory, probably I was not good at programming.
 
I think that's the goal, and not just an excuse I made up to fill a gap in my collection with a game that's difficult to get running...
In that case just follow the diagram I posted above and replace the CPLD by a µPD4701:

1767813178325.png


Wiring:

P2 UP (edge side) = pin 1 (Xa)
P2 DOWN (edge side) = pin 2 (Xb)
P2 LEFT (edge side) = pin 4 (Ya)
P2 RIGHT (edge side) = pin 5 (Yb)
CN4.7 = pins 3 (RESET X) & 6 (RESET Y)
CN4.6 = pin 14 (!X /Y)
P1 UP (board side) = pin 16 (D0)
P1 DOWN (board side) = pin 17 (D1)
P1 LEFT (board side) = pin 18 (D2)
P1 RIGHT (board side) = pin 19 (D3)
P1 A (board side) = pin 20 (D4)
P1 B (board side) = pin 21 (D5)
P1 C (board side) = pin 22 (D6)
P1 D (board side) = pin 23 (D7)

Lastly tie pins 13 (U/!L) and 15 (!CS) to ground.
(And don't forget the power pins OFC).

Now if you don't want to build a solution that would plug in place of a real SIT board disregard the edge side and simply wire the trackball directly to the µPD4701.

(it would still be missing the air jets from the cab)
You'd need to amplify the signal coming from CN4.1, I can have a look at the transistor reference used on the original SIT board.
 
Of course playing it as intended with real trackball support would be ideal (it would still be missing the air jets from the cab), but my Irritating Maze cart is not just a shelf piece. When I got it I played it a lot with the joystick, and really enjoyed the challenge and presentation. I still take it down from time to time about as much as any of my carts to play it again.
Just got my copy in and have confirmed that the joystick cheat works as expected with UniBIOS v4. I'll try to dig into the v3.3 "trackball" cheat when I can. Not sure that there's any difference, but the old change logs for UniBIOS mentions a shift in behaviors at that point.

In that case just follow the diagram I posted above and replace the CPLD by a µPD4701:
Will need to see if I can track some UPD4701x chips, I may have some stashed away someplace but I may need to order some.
 
Back
Top