Jump to content
IGNORED

SuperPong 2600


LS_Dracon

Recommended Posts

This is an update of one project I did in 2006 (Another Pong).
My intention is see how far vcs can, graphically, display a simple Pong.
Now the objective is complete, both players with scanline color changing, the middle line, and ball with small flicker effect, in one scanline resolution.
And the sound is way better than I did in Another Pong.

SuperPong is free for download. Load it on emulators or in your Harmony Cart and have fun!
On emulators, you must set controller as "paddle" on game config and play with mouse.

####################################################################################################

Update 29/07/2013

Game was finished

post-10940-1203109546_thumb.jpg

####################################################################################################


Below is the last update of the game. Follow the Instructions :

SuperPong

Rules :

Avoid missing ball for high score. :D

How to play :

Use Paddle controller
Left Paddle = Player 1
Right Paddle = Player 2

Console switches :

Press Select Switch for change Game Mode and enable / disable computer AI.

Game modes :
Type A = Normal Pong (A1 = vs CPU, A2 = vs Human)
Type B = Blind Pong (B1 = vs CPU, B2 = vs Human)

Set Player 2 Difficult Switch for change Ai Level.
A= Hard (Red logotype background), B = Normal (Black logotype background).

Press Reset Switch to reset the game.

Press left controller button to start.

The first player to score 21 points wins the match.

Thanks to everyone who contribute sharing ideas and suggestions.
Special Thanks to Darrell "Spiceware" for his help in some codes,

And Stephen Antony for Stella Emulator.

SuperPong_NTSC.bin

SuperPong_PAL.bin

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

Nice game! The graphics are very good and i also like the sound.

 

A few suggestions...

IMO the players move too slow and how about letting the players also move to the left and right or use the fire button to hold the ball?

It would also be nice if the game would support paddles and the joystick.

 

If you want to try including paddle support maybe the SCSIcide development journal will be helpful, there's source code attached too...

Link to comment
Share on other sites

Paddle routines are in Medieval Mayhem. Source can be found in my blog.

 

 

during vertical sync do the following:

		lda #$82
	sta WSYNC
	sta VSYNC			; 3	start vertical sync, D1=1
	sta VBLANK		   ; 3  6 start vertical blank and dump paddles to ground

 

at the start of the kernel do the following:

		lda #0
	sta VBLANK	   ; turn on video output & remove paddle dump to ground

 

Macros for reading the paddles - call during the kernel, Y holds the current scan line.

		MAC READ_PADDLE_1
	lda INPT0		; 3   - always 9
	bpl .save		; 2 3
	.byte $2d		; 4 0
.save   sty Paddle1	  ; 0 3
	ENDM

	MAC READ_PADDLE_2
	lda INPT1		; 3   - always 9
	bpl .save		; 2 3
	.byte $2d		; 4 0
.save   sty Paddle2	  ; 0 3
	ENDM

	MAC READ_PADDLE_3
	lda INPT2		; 3   - always 9
	bpl .save		; 2 3
	.byte $2d		; 4 0
.save   sty Paddle3	  ; 0 3
	ENDM

	MAC READ_PADDLE_4
	lda INPT3		; 3   - always 9
	bpl .save		; 2 3
	.byte $2d		; 4 0
.save   sty Paddle4	  ; 0 3
	ENDM


	MAC READ_PADDLE_1_OR_2
	ldx Paddles2Read ; 13-14  3
	lda INPT0,x	  ; |	  4
	bpl .save		; |	  2 3
	.byte $2c		; |	  4 0
.save   sty Paddle1,x	; |	  0 4
					 ; +-14 worse case scenerio
	ENDM

	MAC READ_PADDLE_3_OR_4
	ldx Paddles2Read ; 13-14  3
	lda INPT2,x	  ; |	  4
	bpl .save		; |	  2 3
	.byte $2c		; |	  4 0
.save   sty Paddle3,x	; |	  0 4
					 ; +-14 worse case scenerio

	ENDM

	MAC READ_TWO_PADDLES
	ldx Paddles2Read  ; 21-23  3
	lda INPT0,x	   ; |	  4
	bpl .save1		; |	  2 3
	.byte $2c		 ; |	  4 0
.save1  sty Paddle1,x	 ; |	  0 4
	lda INPT2,x	   ; |	  4
	bpl .save2		; |	  2 3
	.byte $2c		 ; |	  4 0
.save2  sty Paddle3,x	 ; |	  0 4
					  ; +-23 worse case scenerio
	ENDM

Link to comment
Share on other sites

Paddle routines are in Medieval Mayhem. Source can be found in my blog.

Thank you very much SpiceWare.

And I'll give a look in MM source. But I'll use if understand, I don't like to copy and paste codes. ;)

 

Oops! Sorry! I didn't check the files.

Hehe nevermind, isn't your fault, probably these files is too old.

Link to comment
Share on other sites

Here's a sample paddle reading program. it works by reading 2 paddles on each frame. it'll read either paddle 1 & 3 or paddle 2 & 4. The paddle values are shown by positioning 4 blocks at the bottom of the screen.

 

The gist of how paddles work is you're timing how long it takes to charge up a capacitor in the Atari, turn the paddle left and it takes longer to charge(more scan lines), turn the paddle right and it charges up much quicker(fewer scan lines).

 

In the attached example, the first part of the kernel, with the color strips, checks on each scan line to see if the capacitor is fully charged. If it's not then the current scan line # is saved as the paddle results. If the paddle is all the way left then the value for the paddle will be updated on each and every scan line that the paddle routine is called on.

 

I suspect you only care about paddle 1 & 2 for your pong game. Change the line in the kernel that reads READ_TWO_PADDLES to be READ_PADDLE_1_OR_2

post-3056-1203380966_thumb.png

paddles.asm.zip

paddles.bin

Edited by SpiceWare
Link to comment
Share on other sites

SpiceWare, this is my paddle test demo, it's work in z26 emu (set in config: -m0) but doesn't work in stella, I'm using INPT0 only. In your demo, z26 move the white object (INPT0), stella move the green (INPT3), maybe is this, but ok, I'm understand how paddles work, thanks for help me.

 

I thinks it's not doable for my pong, I have free scanlines only at the grey bars (at top and splited in score) 12 or less scanlines, I'll test with more attention, soon...

 

This demo move vertically the object.

 

Edit : Is possible use INPT4 and 5? That is, up to six players?

PaddleTest.bin

Edited by LS_Dracon
Link to comment
Share on other sites

It works in Stella, you just have to tell Stella to use paddles. Hit TAB->GAME PROPERTIES->CONTROLLER and set the controls to paddles. You have to restart the emulator for this to take effect. On the Mac I use APPLE-R so it's probably control-R or ALT-R under Windows or Linux.

 

Hmm, INPT4 & 5 could probably be used to read 2 more paddles. They're normally wired to the joystick fire buttons, but I bet a custom control(with a pass-thru like the CBS Booster Grip) could wire a third paddle to each controller port and use either UP or DOWN as that paddle's fire button. Maybe MM needs a 6-player sequel :D

 

You can do other things on the lines that you read paddles. In Medieval Mayhem I start reading the paddles midway thru the top castles and sample them every-other-scan-line until I'm midway thru the bottom castles.

 

The READ_PADDLE_1_OR_2 routine uses up to 14 cycles. If that's too many you could have 2 kernels and use READ_PADDLE_1 in one kernel, READ_PADDLE_2 in the other. Those macros only take 9 cycles.

Edited by SpiceWare
Link to comment
Share on other sites

SpiceWare, this is my paddle test demo, it's work in z26 emu (set in config: -m0) but doesn't work in stella, I'm using INPT0 only. In your demo, z26 move the white object (INPT0), stella move the green (INPT3), maybe is this, but ok, I'm understand how paddles work, thanks for help me.

For Stella, you have to change the properties of the game, so input is set to Paddle. Then re-load the ROM.

post-2641-1203556036_thumb.png

You may also need to assign the mouse to Paddle 0.

post-2641-1203556043_thumb.png

 

I thinks it's not doable for my pong, I have free scanlines only at the grey bars (at top and splited in score) 12 or less scanlines, I'll test with more attention, soon...

Hope you can add paddle support... it's just not pong without paddle control. :)

 

(Hmmm... I see SpiceWare beat me to it. But I included pictures. ;))

Link to comment
Share on other sites

Cute. Wouldn't be able to have the dragon in the middle with that arrangement though as it's drawn with the sprites that are used to draw the paddles.

 

If you care to post, or even send me your source, I could take a look at it to see if paddle support could be added. Starting tomorrow I have company in town thru next weekend, so it might be a little over a week before I could check it.

Link to comment
Share on other sites

It works in Stella, you just have to tell Stella to use paddles. Hit TAB->GAME PROPERTIES->CONTROLLER and set the controls to paddles. You have to restart the emulator for this to take effect. On the Mac I use APPLE-R so it's probably control-R or ALT-R under Windows or Linux.

 

Hmm, INPT4 & 5 could probably be used to read 2 more paddles. They're normally wired to the joystick fire buttons, but I bet a custom control(with a pass-thru like the CBS Booster Grip) could wire a third paddle to each controller port and use either UP or DOWN as that paddle's fire button. Maybe MM needs a 6-player sequel :D

I doubt it, since the way the 2600 reads paddles is it measures how much charge is on a capacitor that's hooked up to the paddle lines, IIRC. There is no such cap wired to the trigger lines.

 

Or...?

Link to comment
Share on other sites

And here's the new version!

 

Paddles support added! All credits to SpiceWare ;)

And no graphic lost! :cool:

 

Also, recoded score code, and now this game get a downgrade to 2k :P

 

Is hard to test this version, I'll try to do some AI, soon.

 

- Added Paddles support (both players), Tnx to SpiceWare.

- Some codes changes

- now it's 2k

 

Have fun!

SuperPong_NTSC_Paddle.bin

Edited by LS_Dracon
Link to comment
Share on other sites

And here's the new version!

 

Paddles support added! All credits to SpiceWare ;)

And no graphic lost! :cool:

 

Also, recoded score code, and now this game get a downgrade to 2k :P

 

Is hard to test this version, I'll try to do some AI, soon.

 

- Added Paddles support (both players), Tnx to SpiceWare.

- Some codes changes

- now it's 2k

 

Have fun!

 

It looks good. You have to be a tad careful though. Atari is extremely aggressive to protect the trademark on Pong. There was an excellent game called "Plasma Pong" which was shutdown due to its use of "Pong".

 

Perhaps it might be wise to rename it - "Ping"?

Link to comment
Share on other sites

It looks good. You have to be a tad careful though. Atari is extremely aggressive to protect the trademark on Pong. There was an excellent game called "Plasma Pong" which was shutdown due to its use of "Pong".

 

Perhaps it might be wise to rename it - "Ping"?

Yep, that's probably a good idea. "JoustPong" also had to be renamed to "FlapPing".

Link to comment
Share on other sites

Don't worry Devin, I'm made this game for fun only, no filthy lucre pourpose ;)

But, to avoid problems... Shoud I call it as "Super Tennis for Two"?

hehehe

 

Yep, that's probably a good idea. "JoustPong" also had to be renamed to "FlapPing".

 

I remember, in last version the name was changed...

Edited by LS_Dracon
Link to comment
Share on other sites

Maybe MM needs a 6-player sequel

 

How about a two-team cooperative sequel? The two teams defend opposite edges of the screen (either left/right or top/bottom). Each defended edge has a multi-layer wall; any ball getting through the wall is a loss. There would be two paddles defending each edge, and three balls in play at all times. The paddle button would select between a faster and slower hit; the goal would be to have all three balls flying toward the opponent such that they arrive in three different places at about the same time.

 

Not sure how best to configure the AI for those occasions when there aren't four human players available, but it could be interesting. Basic logic would probably be something to the effect of:

 

I--STOP THE BALL

 

-1- Which ball is arriving first?

 

-2- If I try to hit it with paddle #1, will I have time to field it as well as the other two balls.

 

-3- If instead I try to hit it with paddle #2, will I have time to field it as well as the other two balls.

 

-4- If neither option is going to work, which ball will hit the thickest part of the wall? Disregard that one and focus on the other two.

 

II--Attack the opponent

 

-1- Can I hit a ball fast that will reach the opponent at the same time as another that's already en route? If so, do it.

 

-2- Otherwise, if I'll be hitting another ball after the current one, hit it slowly.

 

-3- Otherwise, hit the ball at a random speed and direction.

 

The strategy here wouldn't be optimal, but it might be implementable and it should offer some level of challenge. What do others think?

Link to comment
Share on other sites

Actually, what might make this game quite different from Po-- ... er... Tennis for Two would be an extra twist.

 

Why not allow the players to fire a missile at each other during play? The missile would be rather slow-moving and would score a point if they hit the opponent. This way, you have to *hit* the ball and *dodge* the opponent's missile. Clever players would shoot the missile to strike near where their opponent needs to hit the ball.

 

Just a thought... perhaps a bad one. :)

post-17256-1203982943_thumb.png

Edited by Devin
Link to comment
Share on other sites

Maybe MM needs a 6-player sequel

Would be nice 6 players game, if possible to read INPT4 and 5 as paddles...

At Stella Guide, they said only INPT0 to 3 can be read...

 

Anyway, for six player game, the best position for castles is in hexagon form (see mockup)

 

Actually, what might make this game quite different from Po-- ... er... Tennis for Two would be an extra twist.

 

Why not allow the players to fire a missile at each other during play? The missile would be rather slow-moving and would score a point if they hit the opponent. This way, you have to *hit* the ball and *dodge* the opponent's missile. Clever players would shoot the missile to strike near where their opponent needs to hit the ball.

 

Just a thought... perhaps a bad one.

Ping for Two! :D

 

About ideas, The missile was used for middle line, ok, can be removed, but kernal had now 4 cicles left...

I have others ideas, "Super" means new things, for exemple the "Blind Mode"!

When ball cross the middle, it vanish, and you need figure where the ball is, you can see more or less if take attention in middle line, this is the reason of that bright, what you think? :)

post-10940-1203983244_thumb.png

Edited by LS_Dracon
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...