Jump to content
IGNORED

Plink


SmittyB

Recommended Posts

898669657_PlinkTitle.thumb.png.c3c0dec0cdcc1c078b4d49a21d47a68c.png

135242662_PlinkGame.thumb.png.537e3527f464c056d7c67531518b1ffc.png

 

Introducing Plink, a new 1 or 2 player paddle game for the 7800.

 

This is a small project I started with the intention to have something completed by the end of the year so isn't something too complicated. The goal is simply to rack up your score by hitting blocks or bouncing the ball off the right side of the screen.

The 2 player mode is choppy at the moment where things aren't optimised but it's playable enough.

 

It currently all fits in 32K, but I'm using a 128K+RAM format as I'm using the cart RAM for the background effects. I'm quite pleased that I've been able to get it looking this good using just 320A, and it's useful as a proof of concept / template for a bitmapped display.

 

Plink_20201115.a78 Plink_20201115.bin

  • Like 17
Link to comment
Share on other sites

Looks great! I love paddle games, and the 7800 doesn't have a lot of them. I did a video capture from a7800 and uploaded it to YouTube. No audio though, unfortunately, but that sounds great, too. I hope I get a chance to try this on real hardware with paddles eventually.

 

 

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

4 hours ago, Karl G said:

Looks great! I love paddle games, and the 7800 doesn't have a lot of them. I did a video capture from a7800 and uploaded it to YouTube. No audio though, unfortunately, but that sounds great, too. I hope I get a chance to try this on real hardware with paddles eventually.

Hey Karl, I'm trying to get controls to work with a7800, are you using the mouse to control the paddle in the emulator?

 

No matter what I do I can't get it any response from the mouse to control the game. What are your settings?

 

- James

Link to comment
Share on other sites

1 minute ago, ZeroPage Homebrew said:

Hey Karl, I'm trying to get controls to work with a7800, are you using the mouse to control the paddle in the emulator?

 

No matter what I do I can't get it any response from the mouse to control the game. What are your settings?

 

- James

Hit tab to change controller settings after launching the game, change the first controller to mouse, then choose the reset option to restart the emulation with that option active. After that, mouse left and right motion will be paddle motion. 

  • Thanks 1
Link to comment
Share on other sites

12 minutes ago, Karl G said:

Hit tab to change controller settings after launching the game, change the first controller to mouse, then choose the reset option to restart the emulation with that option active. After that, mouse left and right motion will be paddle motion. 

Ah, I was definitely missing the 'Reset' option.

 

So, the mouse DEFINITELY does some thing now, unfortunately the thing it does is rapidly reset/pause/unpause the game when I move the mouse. Same behaviour whether I set it to Amiga Mouse or ST Mouse. ? The same weird reset/pause/unpause happens pressing up and down on the keyboard too. Using A7800 Ver 4.0... super strange behaviour.

 

- James

Link to comment
Share on other sites

3 minutes ago, ZeroPage Homebrew said:

Ah, I was definitely missing the 'Reset' option.

 

So, the mouse DEFINITELY does some thing now, unfortunately the thing it does is rapidly reset/pause/unpause the game when I move the mouse. Same behaviour whether I set it to Amiga Mouse or ST Mouse. ? The same weird reset/pause/unpause happens pressing up and down on the keyboard too. Using A7800 Ver 4.0... super strange behaviour.

 

- James

My bad. I meant the first controller should be set to paddles! Then the mouse can emulate them. 

Link to comment
Share on other sites

3 hours ago, Karl G said:

My bad. I meant the first controller should be set to paddles! Then the mouse can emulate them. 

That's got it, thanks so much Karl! I had tried to set it to paddles before but didn't do the reset. I guess the emulator (or console?) needs to have the correct controls "plugged in" on boot or they won't work?

 

- James

Link to comment
Share on other sites

12 hours ago, ZeroPage Homebrew said:

[...] I had tried to set it to paddles before but didn't do the reset. I guess the emulator (or console?) needs to have the correct controls "plugged in" on boot or they won't work?

Correct. a7800 is a fork from the mame a7800 driver, so it inherits some mame clunky UI... needing to reset after plugging in new controllers is part of that.

  • Like 1
Link to comment
Share on other sites

Thanks everyone. Of course I'm still working on improvements and I've just added block formations so rather than each block having a random Y position they'll go through randomly selected patterns. Next on my to-do list is improve the sounds, and optimise the two player mode.

 

As for the particle effects I'm definitely pleased with them. The code to draw each particle is able to place it on any pixel, but I'm drawing them on every other pixel instead so I don't have to worry about 16-bit coordinates for drawing on the right side of the screen past 256 pixels. The lines at the top and bottom of the title screen also help keep the framerate up as clearing the entire bitmap each frame is a bit much.

From this I've learned that if I wanted to do something that makes full use of a bitmapped 320A screen it would be best to stick to a 256 pixel wide image centred on the screen and then double buffer it. That also has the advantage of needing only 1 DL entry per zone and the buffer can flipped by updating the high bytes of each.

 

For the curious, this is actually the second iteration of Plink. The original idea was for it to be more of a traditional Pong clone but with a number of freely moveable blocks in the screen. I scrapped this idea because the physics were a pain to get working well enough (and I didn't get as far as having blocks bounce off each other), and no constraints on the Y axis for anything meant that the number of things to plot and render in a given zone would vary between 0 and 20+ frame by frame so it runs terribly.

1603529941_PrototypePlink.thumb.png.d3e7fab97e04532cd412bebba34d1e19.png

Prototype Plink.a78

  • Like 7
Link to comment
Share on other sites

Current working build.

  • Improved sound. Blocks play different notes based on where they are vertically
  • Improved paddle trails. Trails now represent the previous 6 frames of movement instead of the last 2
  • Improved the background. Added a couple of additional shapes that can be drawn
  • Added block formations. Currently 8 exist
  • Lengthened the paddles by 16 pixels
  • Paddles can influence the ball's Y velocity by slicing the ball with the paddle
  • The points gained for hitting a block increase for each block hit before the ball touches a paddle or is missed
  • The ball starts uncontrolled. Neither player will gain score or lose extra balls for an uncontrolled ball.
  • If the ball is missed it becomes uncontrolled and its Y velocity is reset.
  • Extra balls are earned for every 100 points scored.

Plink_20201117.a78 Plink_20201117.bin

  • Like 5
Link to comment
Share on other sites

Good updates!

 

While testing it out, I found that if it starts bouncing perfectly straight horizontally (y velocity at 0) it's quite hard to get it to stop doing that, especially at the top of the screen.

 

And actually if you get it bouncing horizontally, you can just leave it there for infinite points.

 

- James

 

 

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

Sure you can leave it for infinite points but at about a point a second you'd just be wasting your own time and in a two player game only one person would be able to score anything.

When it's bouncing near the edges you need to use larger movements to nudge it.

 

I'll probably make it so that when the ball is controlled it always has a slight offset

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

A new build. This is essentially complete apart from a a couple of bugs and tweaks discovered playtesting on hardware.

  • Added credits and intro
  • Added title music (somewhat knocked off from a classic tune)
  • Added a high score counter for the 1 player mode. Scores from a 2 player game will not count towards the shown high score.
  • A controlled ball will always have a slight movement on the Y axis preventing infinite bouncing
  • Adjusted how the ball is influenced by moving paddles. The speed changes are much finer requiring multiple hits to get more extreme angles.
  • Fixed slowness on NTSC. As a compromise the trails are slightly simplified when playing a 2 player game on NTSC. Single player games and 2 player on a PAL console will have the full effect.
  • Added additional block formations
  • Adjusted the background graphics slightly
  • If a player runs out of lives or presses reset the game will end and pause showing the current state of the lives, scores, paddles, and ball.
  • Added debounce to the button presses for starting a new game and returning to the menu.

 

To do:

  • Fix extra balls being added twice sometimes to player 1
  • Fix '+' graphic not appearing on lives counter
  • Increase limits on ball's Y speed effectively increasing the difficulty cap. I found that a 2 player game can end up going on forever because the ball is too predictable.

Notes:

  • I decided to not declare a winner when the 2 player game ends as players may wish to play for score or lives and should discuss the manner of their competition beforehand in a friendly fashion.
  • The fixed point maths of the ball will sometimes cause it to bounce in an unexpected way when it's moving slowly on the Y axis. Not something I'm going to be able to change, but doesn't really effect the gameplay.

Plink_20201127.a78 Plink_20201127.bin

  • Like 4
Link to comment
Share on other sites

Just played the latest ROM and it looks and plays well. Paddle moves very smoothly, however there is less of the field available vertically, vs. horizontally, and when things speed up, you can easily lose a life while trying to get your paddle repositioned to it’s sweet spot.  Not sure that you can do anything about this, but hopefully it makes sense.


The scrolling background is very cool. I find myself trying to watch it, while playing the game. Hell of a game?


Thanks for sharing?

7635AF3A-90BD-4208-B3FE-F6E76954108B.jpeg

Edited by sramirez2008
grammer
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Thanks very much.

While playing on hardware, do you have any problems with the paddle twitching when spun all the way clockwise? I want to double check if it's something in the game or if maybe my paddles just have a dirty spot on the far edge. Seems to be something in this recent build.

 

I'm not sure what you mean about vertical vs horizontal.

If it helps, the skill is in controlling the ball with your paddle movements so if the ball is moving down too fast hit the ball while the paddle is moving up and it will bounce with a shallower angle. This creates a risk / reward situation where you can rack up points quicker by making it harder for yourself.

The effect is based on the distance the paddle moves over 6 frames so you make move the paddle to where the ball will be, stop, and still have an effect on the ball providing it hits soon enough.

Link to comment
Share on other sites

24 minutes ago, SmittyB said:

Seems to be something in this recent build.

It may just be that you're loading the DLs more heavily or unevenly in the recent build. The paddle read happens during the visible screen, and while the driver is quite good at coping with moderate DMA, heavy DMA in certain zones can cause a bit of jitter in certain paddle positions.

 

To mitigate, you can alot more time to the paddle read. i.e. don't use paddlescalex2 if you are, or increase thepaddlerange value to give more time to the paddle reads and scale down the result as needed.

  • Thanks 1
Link to comment
Share on other sites

Thanks, I recompiled without making any major changes and it seems to have stopped in emulation at least. I'm using range 64 and scale2x because I don't want to spend too much time reading the paddles. The background eats up a lot of a lot of CPU time and it's been difficult avoiding framedrops.

  • Like 1
Link to comment
Share on other sites

Update with a few tweaks. I'm not getting the paddle jitter in emulation but I am getting it on hardware so if everyone running on hardware can let me know how it behaves for them I'd appreciate it. 

  • Fixed (and improved) the code handling lives
  • The '+' graphic displays properly when you have more than 4 extra balls available
  • The ball's Y velocity limits have been increased from +-4 to +-8 pixels per frame
  • Corrected some RAM not being initialised to zero

 

Plink_20201127_2.a78 Plink_20201127_2.bin

  • Like 1
Link to comment
Share on other sites

1 hour ago, SmittyB said:

 

Update with a few tweaks. I'm not getting the paddle jitter in emulation but I am getting it on hardware so if everyone running on hardware can let me know how it behaves for them I'd appreciate it. 

 

Just tested the 20201127_2 ROM and it works well on my hardware.

 

  • Tested with three different sets of paddle controllers 
  • Tested with two 7800 consoles:
    • A1 885456395 un-modded
    • A3 9B1 5287637 S-Video/Composite mod

 

IMO, this ROM runs smother than the previous with actual hardware.?

 

<Edit> Any chance of adding SaveKey support?

 

Edited by sramirez2008
SaveKey
  • 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...