Jump to content
IGNORED

Accelerated Driving Controller


Recommended Posts

While testing The Core 2 in the @ZeroPage Homebrew stream, James mentioned that some kind of acceleration would be nice. This should allow slow (precise) and fast (accelerated) paddle positioning.

This finally motivated me to have a closer look at this idea. The attached ROM shows the result. Please give it a try, especially using real hardware. The blue paddle moves one pixel per driving controller step. It is obvious that this would not be fast enough for a long range paddle. The red paddle uses my new acceleration code. You can move it the whole range (152 pixel) quite fast and still pretty precisely position it pixel perfect. I hope this will work well enough with real games too.

 

I think this idea could be used for games like Tempest. Or, to convert existing joystick games which would work better with a paddle, into using the driving controller instead. This is much easier and more feasible than adding paddle code into an existing kernel.

 

I have attached the (non optimized) source code too. There you can easily tweak the acceleration/deceleration using the constants ACCEL, VAR_DECEL and MIN_DECEL.

Dynamic_Driving.bin Dynamic_Driving.asm

  • Like 9
Link to comment
Share on other sites

  • 1 month later...

To be able to compare my code with real paddle precision, I went ahead and hacked Astroblast to use paddles or the driving controller. You can either play with paddles in the left port or with a driving controller in the right port. Each game starts with paddles enabled, but as soon as you turn the DC wheel, the code will detect the DC and switch control to it (Note: If that happens without turning the DC wheel while you want to use the paddle, just turn the DC wheel by ~45°).

 

Please try with real controllers, keyboard input does not do justice here.

 

IMO the DC controls are somewhere in the middle between paddles and joystick. You can move pretty fast, but no as precise as a paddle. Also, for a paddle, the guns position is directly linked to the paddle wheel, while for the DC, this varies.

 

Feedback welcome!

 

Note: If you want to configure Stella, please note Stella doesn't auto detect the controllers and that Astroblast has the paddles swapped. So follow the screenshot:

image.png.0dbbd824656365061372bd2bb8567b61.png

 

Astroblast (DC Hack) (2023) (Thomas Jentzsch).bin

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

On 3/13/2023 at 10:51 AM, Thomas Jentzsch said:

IMO the DC controls are somewhere in the middle between paddles and joystick. You can move pretty fast, but no as precise as a paddle. Also, for a paddle, the guns position is directly linked to the paddle wheel, while for the DC, this varies.

 

Feedback welcome!

I'm not sure what else to add to this assessment, as it's pretty spot on! DC moves faster than the joystick, but not smooth enough to make me forget about the paddles. 

 

There were two difficulties I noticed. The first, quickly moving from one side of the screen to the other would sometimes result a quick "jump" backwards before making it to the other side of the screen. The second, small movements are tricky. It was harder to move your ship in the position right next to your current one than it was to go across the screen. 

 

 

 

 

 

 

 

 

  • Thanks 1
Link to comment
Share on other sites

5 hours ago, McCallister said:

I'm not sure what else to add to this assessment, as it's pretty spot on! DC moves faster than the joystick, but not smooth enough to make me forget about the paddles. 

Agreed. I have an idea how to smoothen the movement, but that would probably have other negative effects. Maybe I will give it a try.

 

Please remember that a paddle needs ~60° wheel turn for 150 pixel movement, while a DC would need 3375°! Which means, the resolution is by a factor of ~55 lower. No code "magic" can fully compensate this. :) 

5 hours ago, McCallister said:

There were two difficulties I noticed. The first, quickly moving from one side of the screen to the other would sometimes result a quick "jump" backwards before making it to the other side of the screen.

Could be a double turn, which continues to move into the last detected single turn. We only have 4 bit to work with.

5 hours ago, McCallister said:

The second, small movements are tricky. It was harder to move your ship in the position right next to your current one than it was to go across the screen. 

I decided for a fast acceleration due to the nature of the game. With different parameters, the precise positioning could become better. At the cost of slower overall movement.

 

Thanks a lot for your feedback!

Link to comment
Share on other sites

Here is another version, now with smoothed movement. The gun is not as fast as in the previous hack, so you need more wheel turning.

 

BTW: Astroblast is not the best example for the driving controller code, because it checks the controller only every 2nd frame. That increases the chance of missed turn steps. You will notice these, when turning the wheel rapidly, especially when changing direction.

Astroblast (DC Hack V2) (2023) (Thomas Jentzsch).bin

Edited by Thomas Jentzsch
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...