Jump to content
IGNORED

Powernoid 2024 Release


Recommended Posts

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 by Brek Martin
Updated Binary
  • Like 2
Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

Posted (edited)

Thanks for trying it in the state it's in :D

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 :D

 

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 by Brek Martin
Link to comment
Share on other sites

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.

 

image.thumb.png.7ae7b25e5ca29b98550a2b1576cd1ccb.png

Edited by 42bs
Link to comment
Share on other sites

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.

 

Megaball.png

Link to comment
Share on other sites

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.

 

Megaball.png

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.

 

  • Like 1
Link to comment
Share on other sites

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 :D 

 

 

Link to comment
Share on other sites

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.

  • Like 2
Link to comment
Share on other sites

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.

 

 

 

Link to comment
Share on other sites

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 :D 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

Link to comment
Share on other sites

Posted (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 by Brek Martin
  • Like 1
Link to comment
Share on other sites

Posted (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.

Octagon_Collision.png

Edited by Brek Martin
Link to comment
Share on other sites

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.

Octagon_Collision.png

The edge cases in the collisions where one of the reasons my breakout was suspended ;/

 

demo.zip

Link to comment
Share on other sites

Posted (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 :D

 

I still say it's ballsy to post your source mid game!

 

Powernoid.c

Edited by Brek Martin
  • Like 1
Link to comment
Share on other sites

Posted (edited)

Ok I think it's a wrap :D 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 by Brek Martin
  • Like 1
Link to comment
Share on other sites

Posted (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 by Brek Martin
  • Like 1
Link to comment
Share on other sites

ZeroPage Homebrew is playing Powernoid on today's ZPH stream LIVE on Twitch! Hope you can join us!

 

Games:

 

Link to comment
Share on other sites

6 hours ago, ZeroPage Homebrew said:

ZeroPage Homebrew is playing Powernoid on today's ZPH stream LIVE on Twitch! Hope you can join us!

 

Games:

20240702-LetsPlay.thumb.jpg.68e0b4642b64059bb1a61eea7e310bf3.jpg

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 1
Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 4 weeks later...
Posted (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 by Brek Martin
  • Like 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...