Brek Martin Posted June 15 Share Posted June 15 (edited) Powernoid 2024 - 29th July. At the title screen, Press A to launch a new ball, or Pause to activate EEPROM support. Without this prompt from the user each session, EEPROM support will never be activated. Press B during play to pause the game, and any action button to resume. Player gets five balls for a new game, and remaining balls are displayed in pause screen. The game has several "pinball like" gimmicks including multiball! Performs reasonably well with Lynx emulators, and EEPROM save is tested with Felix. Level One - Teleporter Level 2x - Spinwheel Pop Bumper Level Three - Teleporter and Gentle Spinwheel Level Four - Wormhole and Multiball Level Five - Plain No Frills Levels Six to Ten are duplicates of the first five, with colour variations. This project is more or less completed within the initial two week target. Every feature in the iOS version has been implemented in the Lynx version. The most recent update is optimisation to address some slow down. Powernoid contains original Audio sample playback, and original EEPROM support. Thanks to Bastian for answering some questions about both. Code to manipulate Lynx ROM bus pins are direct interpretation of Bastian's asm. Code to rotate the data in and out are adapted from Ben Eater's YouTube video. The original Sony PSP version of Powernoid (2009) is still on YouTube! Enjoy Powernoid.lnx Edited July 29 by Brek Martin Updated Binary 2 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 15 Author Share Posted June 15 I already like the way I introduced a new ball back then. Better than now. The ball followed the bat until player pressed fire. Anyway, it can't be quite like this on a Lynx of course, but I don't see any reason why the fun elements can't be reproduced. The boring prototype I'd prefer to be solid before moving on. Quote Link to comment Share on other sites More sharing options...
Jess Ragan Posted June 16 Share Posted June 16 Just played it. It is very basic... I would suggest a "hook" to differentiate it from other Breakout style games, and it sounds like you've already got one planned. If you're planning to incorporate elements of pinball, I'd suggest playing other Breakout clones which do this, like Capcom's Block Block and Namco's Geebee series. Also, Breakout games don't typically work all that well with a landscape (yoko, or horizontal) orientation. There's just not enough room to catch the ball when it falls, a problem I noticed with the recent Steam game Strikey Sisters. You could flip the playfield, the way the Lynx version of KLAX does, but that means having to redesign the game from scratch, and you're probably not eager to do this. One other thing... you may want to let the player release a new ball with the tap of a button, like Arkanoid does. Can I ask how you're making this? Are you using C or C++ for the programming language? There's no BASIC for the Lynx to the best of my knowledge; otherwise I would be dipping my toe into Lynx development as well. Bravo if you are using C; I never got a taste for that programming language, myself. 1 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 16 Author Share Posted June 16 (edited) Thanks for trying it in the state it's in It's C in CC65. I don't see how that's particularly commendable. I suspect people actually use C properly with lynx, and slow things down as a result with their function calls with arguments, and private variables, all formally and technically correct, when spaghetti code will actually perform! Boring and basic, yes. I think it's the right time to hit problems. The game can easily run at twice the speed through frame skip, and you wouldn't know, but that will probably be a powerup brick for a particular level. Tap button to release ball... already said it in the post right above yours It's news to me that other clones do pinball elements. I will have to check that out. Vertical? Hmmm... I know about Fission, it has good ideas, but I have mixed feelings about it. My Tetris (Tate-Tris) will be vertical, but that's more out of necessity than I think this would be. It could be that I'm simply adverse to vertical games on this platform. It has occurred to me that the bottom row of bricks could go, because it could be a little difficult there. I'm hopeless at determining game difficulty. The main tester of my last game was heaps better than me at it. I'm influenced by Megaball for Commodore Amiga. Edited June 16 by Brek Martin Quote Link to comment Share on other sites More sharing options...
42bs Posted June 16 Share Posted June 16 (edited) The paddle seems to be "flat", if the ball hits with 90° it is reflected with 90°. I think the "original" paddle is a curve, to that there incoming angle is never the outgoing. Edited June 16 by 42bs Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 16 Author Share Posted June 16 On the flat part yes, but not quite. If you hit an edge it will make a different sound and always reflect to the side of the bat that was hit. The rest is angle of incidence reflection. Again... Amiga Megaball... what I played as a teenager. The Megaball bat is pictured, But I'm not really stuck on that idea. In fact it's easier because I currently have five bat collision areas. I wonder what the "original" game is? I will have to play more, or at least watch more on YouTube. I did play Megaball yesterday and realised mouse control is absolute position, just like touch screen on smartphone, much more conducive to control of this than a Lynx D-pad, but have to make do. Quote Link to comment Share on other sites More sharing options...
42bs Posted June 17 Share Posted June 17 9 hours ago, Brek Martin said: On the flat part yes, but not quite. If you hit an edge it will make a different sound and always reflect to the side of the bat that was hit. The rest is angle of incidence reflection. Again... Amiga Megaball... what I played as a teenager. The Megaball bat is pictured, But I'm not really stuck on that idea. In fact it's easier because I currently have five bat collision areas. I wonder what the "original" game is? I will have to play more, or at least watch more on YouTube. I did play Megaball yesterday and realised mouse control is absolute position, just like touch screen on smartphone, much more conducive to control of this than a Lynx D-pad, but have to make do. Ok "original" might be wrong wording, but all breakout variants I played use a "flat" paddle on the screen, but reflection is done as if it is curved. 1 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 17 Author Share Posted June 17 If that's what's most common then that's probably how it should be. I assume that means you could hit it toward 90 degrees if you hit the ball close to the centre of the bat, but I'll watch more of the games on YouTube. I blame the Lynx for buying an oscilloscope today Quote Link to comment Share on other sites More sharing options...
Jess Ragan Posted June 17 Share Posted June 17 I mean, you could turn the paddle slightly to adjust the trajectory. Flipper Slipper for the ColecoVision did this, but it didn't do it WELL. If you can make it work, that could be the angle you're looking for to make this game unique, no pun intended. 2 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 17 Author Share Posted June 17 On 6/16/2024 at 12:29 PM, Jess Ragan said: There's no BASIC for the Lynx to the best of my knowledge; otherwise I would be dipping my toe into Lynx development as well. Bravo if you are using C; I never got a taste for that programming language, myself. Noted, and I'll add it to the list of games to YouTube! I like to do programming continuously, but I've been forced to interrupt this project for a couple of reasons. Your hesitation with C is irrational by the way. You can learn C syntax, and then copy any BASIC program line by line as C, and do it very quickly, so long as you're proficient with the syntax of both languages. This means that your thinking need not change. That does not mean the opposite however, and does not mean you'll be taking full advantage of C. For example, if you're given a C program that makes extensive use of pointers, good luck directly porting that in the same manner, without changing your thinking, to BASIC.... but the other way round is a good start. Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 17 Author Share Posted June 17 You've unwittingly typed the correct strings into the thread to cause me to let it go early. It changes nothing from my end other than exposing myself early. It was destined to be open. I wonder if anyone has had the guts to do this the source file ends with log. I'll do collision differently if I run out of processing time for a frame. Lynx has a collision buffer, but I'd do that separate with actual brick ID as values in a custom collision buffer. A comment on Discord alluded to another idea as well. Both offer something, but complicate things for beginners I think. main.c Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 17 Author Share Posted June 17 It's my first "lots of angles" ball movement on a platform that doesn't have floats & trig. I figure the offset tables are quick. There's no penalty for 32 angles, but it just seems like overkill at this resolution! Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 19 Author Share Posted June 19 (edited) Proof for the WIP thing, and I'm committed to it, but it does come last. I've got more uniqueness to add to Breakout than Tetris, so that simply gives it more merit. Even when It's dual orientation it will be called Tate-Tris. Edited June 19 by Brek Martin 1 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 22 Author Share Posted June 22 (edited) Ok, there's a version to play with two funky gadgets that interact with the ball, while I work on the third. Collision detection between two circular objects was never going to happen with bounding boxes, so I have created collision buffer maps. There are actually four, so in the case of the spinwheel, the reflected angle can appear semi-random, and prevent the ball being stuck bouncing back and forth forever. If the collision map isn't perfect, it can be made perfect by filling in some missing values. Refer to the angle graphic on graph paper posted above to see the meaning of reflected angles in the map. The spinwheel never causes the ball to pass through it, unlike the iOS version in the video, which can. Edited June 22 by Brek Martin Quote Link to comment Share on other sites More sharing options...
sage Posted June 22 Share Posted June 22 3 hours ago, Brek Martin said: Ok, there's a version to play with two funky gadgets that interact with the ball, while I work on the third. Collision detection between two circular objects was never going to happen with bounding boxes, so I have created collision buffer maps. There are actually four, so in the case of the spinwheel, the reflected angle can appear semi-random, and prevent the ball being stuck bouncing back and forth forever. If the collision map isn't perfect, it can be made perfect by filling in some missing values. Refer to the angle graphic on graph paper posted above to see the meaning of reflected angles in the map. The spinwheel never causes the ball to pass through it, unlike the iOS version in the video, which can. The edge cases in the collisions where one of the reasons my breakout was suspended ;/ demo.zip Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 22 Author Share Posted June 22 (edited) 1 hour ago, sage said: The edge cases in the collisions where one of the reasons my breakout was suspended ;/ I've updated the binary in the first post to align it with this source. There's a few ways I could tackle it, but in this case, when the two objects are always the same size (6x6 ball and 16x16 circle), the constant collision bitmap may be the sum of both dimensions (22x22). I still check a 22x22 pixel bounding box for a frame, and only look at the collision buffer when the ball is within it. Not so bad. I assume that image is meant to be "hi colour"? It's a shame it doesn't go over well on new displays. In Fury, I'm creating the same fragmentation because it's difficult to see on original displays I still say it's ballsy to post your source mid game! Powernoid.c Edited June 22 by Brek Martin 1 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 25 Author Share Posted June 25 (edited) Ok I think it's a wrap Updated the first post. I might come back to this at some stage. ps... I wonder if it should use D-pad left for paddle left, and A button for paddle right... like pinball does. Edited June 25 by Brek Martin 1 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted June 29 Author Share Posted June 29 (edited) This is now updated in the first post with original EEPROM code implemented for high score save support. The game will act like an original Lynx game unless commanded to activate EEPROM driver each session by pressing the pause button in the title screen. Otherwise it will not even attempt to read it's own save file. Edited June 29 by Brek Martin 1 Quote Link to comment Share on other sites More sharing options...
+ZeroPage Homebrew Posted July 2 Share Posted July 2 ZeroPage Homebrew is playing Powernoid on today's ZPH stream LIVE on Twitch! Hope you can join us! Tue Jul 2, 2024 | LIVE @ 6PM PT | 9PM ET | 1AM GMT+1Day WATCH LIVE: https://twitch.tv/zeropagehomebrew/ WATCH LATER: https://youtube.com/zeropagehomebrew/ Games: Fury (2024 Final | Lynx) by Brek Martin @Brek Martin Powernoid (2024 WIP | Lynx) by Brek Martin @Brek Martin Bubbler (2024 WIP | Lynx) by KanedaFr @KanedaFr Paratroopers (2024 WIP | Lynx) by James Higgs @jum Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted July 3 Author Share Posted July 3 6 hours ago, ZeroPage Homebrew said: ZeroPage Homebrew is playing Powernoid on today's ZPH stream LIVE on Twitch! Hope you can join us! Tue Jul 2, 2024 | LIVE @ 6PM PT | 9PM ET | 1AM GMT+1Day WATCH LIVE: https://twitch.tv/zeropagehomebrew/ WATCH LATER: https://youtube.com/zeropagehomebrew/ Games: Fury (2024 Final | Lynx) by Brek Martin @Brek Martin Powernoid (2024 WIP | Lynx) by Brek Martin @Brek Martin Bubbler (2024 WIP | Lynx) by KanedaFr @KanedaFr Paratroopers (2024 WIP | Lynx) by James Higgs @jum Thanks for having my games on your stream, and congrats to the other two programmers with games. I'm going to keep watching for the other two. I do agree you got some unfair bat collision detection, and will certainly look at it next. Glad you guys liked them, and say hello to Atari! I was unable to join chat on the big TV. 1 Quote Link to comment Share on other sites More sharing options...
+ZeroPage Homebrew Posted July 3 Share Posted July 3 38 minutes ago, Brek Martin said: Thanks for having my games on your stream, and congrats to the other two programmers with games. I'm going to keep watching for the other two. I do agree you got some unfair bat collision detection, and will certainly look at it next. Glad you guys liked them, and say hello to Atari! I was unable to join chat on the big TV. Thanks for watching the stream! It was a ton of fun playing both of your games. I wanted to play them even longer but had to get to the other two games. 🙂 I'll say hello to Atari for you! - James Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted July 4 Author Share Posted July 4 This could be called the ZPH update I made a point about my collision detection with the gimmick objects, while not using the same detection buffer mechanism with the bat. 1 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted July 6 Author Share Posted July 6 Executable in the first post is aligned with this source, and done! Not sure what to do next, but I'm interested in music. Powernoid.c 1 Quote Link to comment Share on other sites More sharing options...
Brek Martin Posted July 29 Author Share Posted July 29 (edited) Updated binary in the first post is aligned with this source. This is largely optimisation such as a multiply I was doing for each ball movement need only be done on change of angle, and some things like that for performance to address some stuttering in some situations. Powernoid.c Edited July 29 by Brek Martin 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.