Thomas Jentzsch Posted January 18 Share Posted January 18 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 9 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 13 Author Share Posted March 13 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: Astroblast (DC Hack) (2023) (Thomas Jentzsch).bin 3 1 Quote Link to comment Share on other sites More sharing options...
McCallister Posted March 15 Share Posted March 15 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. 1 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 15 Author Share Posted March 15 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! Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 16 Author Share Posted March 16 (edited) 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 March 16 by Thomas Jentzsch 1 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.