Pop n' Bounce Rotary: Revisited

NeoTurfMasta

DANCE DANCE KARNOV!,
20 Year Member
Joined
Jan 18, 2001
Posts
4,234
Ok. We have a lot of smart people here, I think its time we figure this thing out.

Background info:

Pop 'n Bounce has a controller option in it's soft dip settings.
2.jpg


How-to screen shows a rotary controller instead of the joystick.
1.jpg


When you play the game with this option enabled, the A button (fire) is replaced with D on the joystick. All other directions and buttons move the paddle to the left. Below is the summary of how far it travels.

Up = least
Dn = least + 1
Lt... ditto
Rt...
A...
B...
C = farthest

I started thinking about the secret option on Tempest 2000 on the Jaguar. I believe the hack was originally programmed with an atari 2600 driving controller. Basically a rotary encoder. They hacked the jag controller and used Left and Right to connect to A/B of a rotary encoder.

Background on the Atari Hack

I attempted something similar and no dice. Wasnt expecting it to work, but it was a start. Tried this:
encoder.png


Soooooo, there ya have it. Ideas, thoughts?
 

Xian Xi

JammaNationX,
15 Year Member
Joined
Dec 1, 2005
Posts
27,762
I'm guessing it uses something like the IM sub pcb for interfacing but instead of a trackball that plugs in.
 

NeoTurfMasta

DANCE DANCE KARNOV!,
20 Year Member
Joined
Jan 18, 2001
Posts
4,234
I'm guessing it uses something like the IM sub pcb for interfacing but instead of a trackball that plugs in.

I really dont think Video System made a separate board for this. I think we would have seen something like that by now. I'm confident you cant hack the IM board to do it. The 2P side uses UDLR as they XY axis on the trackball.
 

Xian Xi

JammaNationX,
15 Year Member
Joined
Dec 1, 2005
Posts
27,762
What pins where you connecting the circuit to?
 

ne7

Geese's Thug
15 Year Member
Joined
Aug 12, 2008
Posts
272
have you tried quick fire input to see if that controls speed of turn? Looking at that I'm thinking they might have just hooked up a simple timer (like variable autofire) to the key/button input line to control speed? :)

/goes and plugs in his pop n bounce cart (actually just fixed up the hori too :)
 
Last edited:

NeoTurfMasta

DANCE DANCE KARNOV!,
20 Year Member
Joined
Jan 18, 2001
Posts
4,234
I have tried several different pins on the jamma edge and the joystick.

Hadn't thought about an autofire circuit. I have a hori as well. The thing we also need to figure out is how to move the paddle to the right. So far messing with the buttons just moves it to the left.

I know we can figure this out.
 

ne7

Geese's Thug
15 Year Member
Joined
Aug 12, 2008
Posts
272
just tried it m8 -

A+B+C held down with autofire (or just rhythmic tapping) will make the bat go crazy and cover the entire bottom of the screen (right + left :) ), it must just be a question of what combo or double button press makes it hit the right hand side...

prob easiest way to check this out is to hack yourself a high score patch cheat and test it via the name input after losing a round (checking what keys go up and what keys give a down signal)

I'm messing with it now too :)
\o_
 

ne7

Geese's Thug
15 Year Member
Joined
Aug 12, 2008
Posts
272
Unibios patch:
wr -mem-
0x63 0x108238

Will give u a nice fat highscore :D

Holding button C reverses direction of A/B button (if not holding C, A will go up, holding C makes A shift letters down etc) directional input it seems on highscore screen
 
Last edited:

massimiliano

ネオジオ,
20 Year Member
Joined
Feb 27, 2004
Posts
3,250
I should have an SNK rotary around... do you think is there any way to hook it and try? :scratch:

edit:

btw, I can also check Iritating Maze setup, but far from connecting it and try to play..can't really say what other test to do, let me know in case!
 
Last edited:

JMKurtz

Tech Support Moderator,
20 Year Member
Joined
Aug 12, 2000
Posts
1,655
I remember seeing something in the mame source code for this game and a spinner. Never really looked into it since I don't have a spinner. That may give you some insight into what ports/values are used/needed.

Jeff
 

NeoTurfMasta

DANCE DANCE KARNOV!,
20 Year Member
Joined
Jan 18, 2001
Posts
4,234
I should have an SNK rotary around... do you think is there any way to hook it and try? :scratch:

edit:

btw, I can also check Iritating Maze setup, but far from connecting it and try to play..can't really say what other test to do, let me know in case!

I have both the SNK rotary and the IM setup. The SNK rotary wouldnt be a very smooth motion for the bat at the bottom. I'm sure it could be rigged to work though. The IM board just wont do it.

Jeff,

I emailed Haze a few days ago to see if the had any info he could pull out of it. I wouldnt know where to start with looking at mame code to be honest.
 

ne7

Geese's Thug
15 Year Member
Joined
Aug 12, 2008
Posts
272
starts at line #9143 in neodrvr.c - see; http://mamedev.org/source/src/mame/drivers/neodrvr.c.html

static INPUT_PORTS_START( popbounc )
PORT_START("IN0")
STANDARD_DIPS
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)0)

PORT_START("IN1")
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)1)

STANDARD_IN2

STANDARD_IN3

STANDARD_IN4

/* Fake inputs read by CUSTOM_INPUT handlers */
PORT_START("IN0-0")
PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20)

PORT_START("IN0-1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* note it needs it from 0x80 when using paddle */
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )

PORT_START("IN1-0")
PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(2)

PORT_START("IN1-1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* note it needs it from 0x80 when using paddle */
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
INPUT_PORTS_END

Raz might also be able to shed light on it? (whether on right track re-buttons etc) ^

Apparently it already 'works' with paddle support in Mame! I had no idea... crazy...
 
Last edited:

DanAdamKOF

Iori's Flame
20 Year Member
Joined
Jun 15, 2002
Posts
8,255
I have a little bit of experience with rotary encoders playing with beatmania home version turntables.

You have two sensors (emitter shining into a light sensor) reading teeth on a wagon wheel, as the spokes cross through the sensors it changes the signal. There's a gray-coded "siren" looking pattern the sensors emit to show clockwise/counter-clockwise, see here: http://en.wikipedia.org/wiki/Rotary_encoder#Incremental_rotary_encoder

based on the rate of change of the sensor states the software can derive speed.

When I killed a sensor on one turntable, it was stuck (high or low, I can't remember), and by shorting one of the sensor outputs to ground (forcing it to look "on"), I believe I too could move my turntable one direction.

So if you're playing with buttons, maybe try holding some down while tapping others to get another direction out of it. Maybe you couldn't move because it needs some discrete logic for some reason and needs one sensor inverted or something arbitrary like that? No clue, wild guess.

MAME source: http://mamedev.org/source/src/mame/drivers/neodrvr.c.html
ctrl+F for popbounc

Code:
 9143  static INPUT_PORTS_START( popbounc )
 9144      PORT_START("IN0")
 9145      STANDARD_DIPS
 9146      PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)0)
 9147  
 9148      PORT_START("IN1")
 9149      PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
 9150      PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)1)
 9151  
 9152      STANDARD_IN2
 9153  
 9154      STANDARD_IN3
 9155  
 9156      STANDARD_IN4
 9157  
 9158      /* Fake inputs read by CUSTOM_INPUT handlers */
 9159      PORT_START("IN0-0")
 9160      PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20)
 9161  
 9162      PORT_START("IN0-1")
 9163      PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
 9164      PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
 9165      PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
 9166      PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
 9167      PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* note it needs it from 0x80 when using paddle */
 9168      PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
 9169      PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
 9170  
 9171      PORT_START("IN1-0")
 9172      PORT_BIT( 0xff, 0x00, IPT_DIAL  ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(2)
 9173  
 9174      PORT_START("IN1-1")
 9175      PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
 9176      PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
 9177      PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
 9178      PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
 9179      PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* note it needs it from 0x80 when using paddle */
 9180      PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
 9181      PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
 9182  INPUT_PORTS_END
 
Last edited:

smkdan

Galford's Armourer
Joined
Dec 30, 2009
Posts
452
Watching MAME in action with the paddle can help you see how the game reacts to iput. Start a recent version with the debugger enabled ("mame64 popbounc -debug" into cmd line). Hit ctrl+M to open a memory window and enter "300000" into the text box. Hit F5 to run the game and keep the memory window somewhere in view. Only the leftmost 2 digits on any row matter for this. What you see in those 2 digits are what the system sees from the 8 controller input pins in P1 port. To see P2, move to 340000 instead of 300000. Move the paddle around and watch the values as you play.

When I looked at a while ago the setup look pretty simple. I don't build arcade controls so I'm not familiar with what you feature set you can get with dials today, but the controller must have some binary up/down counter that is clocked by rotation of a free spinning dial. Maybe you have to add some discrete logic depending on what's available. Clockwise rotation makes it count up, counterclockwise counts down and leaving it alone just holds the current counter value. The current counter value is at any fed to the controller inputs. Only 7bits for the counter seem to be used by the game and 1 bit is used for a single button.
 
Last edited:

NeoTurfMasta

DANCE DANCE KARNOV!,
20 Year Member
Joined
Jan 18, 2001
Posts
4,234
Thanks man, I'll start messing with that tonight.

Is there anything in your debug/bios stuff that will allow me to do the same test on real hardware? I could even probably do it on NeoCD system.
 

smkdan

Galford's Armourer
Joined
Dec 30, 2009
Posts
452
I don't have a controller test that lets you see MAME shows in the test I wrote about but a full featured controller test that includes that sort of thing would be a good feature anyway. I can include something like that in my cart BIOS soon. Something that includes the hex or decimal value for what the controller port sees?
 

Neo Alec

So Many Posts
No Time
For Games.
25 Year Member
Joined
Dec 7, 2000
Posts
15,806
I've always been very curious about this. I tried to make it work in MAME but I am generally very bad at making MAME do what I want.

Thank you for working on this.
 

ne7

Geese's Thug
15 Year Member
Joined
Aug 12, 2008
Posts
272
what smkdan said makes a lot of sense when you look at what i saw with messing with diff joysticks/controllers and autofire input :) another interesting thing is the behaviour I saw of the C button reversing directional input of letters in combination with holding down the A or B keys on the highscore name input screen... would be flipping great to get this working :)
 

shadows

Mature's Make-up Artist
Joined
Apr 18, 2010
Posts
1,352
Wouldnt something like the sub pcb Capcom/Mitchell did for Puzz Loop 2 and other games of the genre work for this?
 

ne7

Geese's Thug
15 Year Member
Joined
Aug 12, 2008
Posts
272
shadows; possibly, but I should think whatever they had planned to be plugged in was into the controller ports of compatible mvs boards (just guessing based on what I've seen already; would have made it much cheaper to make :D )
 

smkdan

Galford's Armourer
Joined
Dec 30, 2009
Posts
452
I added a controller test in the BIOS that should be usable for all types of controller input and may help with building the rotary controller. Hold ABCD on power up and choose controller test. The "HEX" and "DEC" values on each column show the 8bit value of whatever the controller is showing like MAME would've displayed (START/SEL not included). It has 8 columns of inputs for the 8 possible outputs on the controller port for things like mahjong, 4P etc. It's only going to show different values if the controller actually reacts differently to the outputs on the port. The only thing I should mention is that a regular controller will show button D stuck on for half of the columns but that's normal for all the original controllers with their wiring. MAME emulates switched controller inputs for popnbounc but I'm not sure if the game needs anything more than 1 button where button D normally goes and a 7bit counter value on the other inputs.
 

NeoTurfMasta

DANCE DANCE KARNOV!,
20 Year Member
Joined
Jan 18, 2001
Posts
4,234
I added a controller test in the BIOS that should be usable for all types of controller input and may help with building the rotary controller. Hold ABCD on power up and choose controller test. The "HEX" and "DEC" values on each column show the 8bit value of whatever the controller is showing like MAME would've displayed (START/SEL not included). It has 8 columns of inputs for the 8 possible outputs on the controller port for things like mahjong, 4P etc. It's only going to show different values if the controller actually reacts differently to the outputs on the port. The only thing I should mention is that a regular controller will show button D stuck on for half of the columns but that's normal for all the original controllers with their wiring. MAME emulates switched controller inputs for popnbounc but I'm not sure if the game needs anything more than 1 button where button D normally goes and a 7bit counter value on the other inputs.

You never cease to amaze me man. I'll work on this this week. Thanks again!
 

codecrank

Whip's Subordinate
10 Year Member
Joined
May 2, 2011
Posts
1,751
Anyone have a source for the Seimitsu LS-29 spinners?

Good luck on that one, Seimitsu discontinued them long ago. The old taito ones used for arkanoid work exactly the same but are easy to find. I am using them on Arkanoid returns on the F3, which originally used the LS-29 in japan.
 
Top