Jump to content

Anyone think Ballblazer is possible on the 2600?


767 replies to this topic

#51  

    Stargunner

  • 1,274 posts
  • Joined: 22-June 01
  • Location:Tasmania

Posted Wed Sep 17, 2008 7:58 AM

View Postroland p, on Wed Sep 17, 2008 11:53 PM, said:

I hope I'm clear.

Ever heard of "K.I.S.S"?

#52  

    Stargunner

  • 1,361 posts
  • Joined: 14-September 07
  • RLA
  • Location:The Netherlands

Posted Wed Sep 17, 2008 8:09 AM

View PostAndrew Davie, on Wed Sep 17, 2008 3:58 PM, said:

View Postroland p, on Wed Sep 17, 2008 11:53 PM, said:

I hope I'm clear.

Ever heard of "K.I.S.S"?
Do you mean my way of exmplaning things, or my way of getting ballblazer on the 2600?

#53  

    Quadrunner

  • 8,107 posts
  • Joined: 14-May 01
  • This is Sparta!
  • Location:Bavaria

Posted Wed Sep 17, 2008 8:10 AM

View Postroland p, on Wed Sep 17, 2008 2:53 PM, said:

I hope I'm clear.

If I got you, then all four objects would smoothly move up or down a scannline each frame?

They'd still have a 4 line resolution though and you'd plug sprite data into missille registers and vice-versa every 2 frames?

BTW: How many cycles for sprites do you have per line?

#54  

    Stargunner

  • 1,361 posts
  • Joined: 14-September 07
  • RLA
  • Location:The Netherlands

Posted Wed Sep 17, 2008 8:20 AM

View PostCybergoth, on Wed Sep 17, 2008 4:10 PM, said:

If I got you, then all four objects would constantly move up or down a scannline each frame?

View PostCybergoth, on Wed Sep 17, 2008 4:10 PM, said:

They'd still have a 4 line resolution though and you'd plug sprite data into missille registers and vice-versa every 2 frames?
Yes, 4 line resolution. The data is zero-page memory and should be filled with the correct value. I precalculate everything.

View PostCybergoth, on Wed Sep 17, 2008 4:10 PM, said:

BTW: How many cycles for sprites do you have per line?

It varies. about 5 to 10 cycles with the current method, very small, but the checkerboard is very cool with >2 colors so I want to keep it.

#55  

    Quadrunner

  • 8,107 posts
  • Joined: 14-May 01
  • This is Sparta!
  • Location:Bavaria

Posted Wed Sep 17, 2008 8:24 AM

BTW: Can you do something like:

Init: X = 0 or 1 or 2 or 3

Kernel:
LDA table,X
TAX
LDA somedata
STA GRP0,X

LDA table,X
TAX
LDA somedata
STA GRP0,X
...

table:
   .byte 1,2,3,0


#56  

    Stargunner

  • 1,361 posts
  • Joined: 14-September 07
  • RLA
  • Location:The Netherlands

Posted Wed Sep 17, 2008 8:45 AM

View PostCybergoth, on Wed Sep 17, 2008 4:24 PM, said:

BTW: Can you do something like:

Init: X = 0 or 1 or 2 or 3

Kernel:
LDA table,X
TAX
LDA somedata
STA GRP0,X

LDA table,X
TAX
LDA somedata
STA GRP0,X
...

table:
   .byte 1,2,3,0
Doesn't that take more cycles then:

Quote

LDX #0
LDA Data0
STA (POINTERA,X)
?


I've attached my source, so you can see what problems I am going through :D

At line 240 to 287 there are some precalulations of the checkerboard

At line 370 the first tile of the checkerboard is drawn, data is taken from ram (fastest)
At line 508 I have enough time to get the tile data from rom

Between every line you will see SLEEP ... for eating cycles, these can be replaced by sprite-code.


At line 1656 you will see PLAYFIELD_DATA for the tiles. The brown tiles will be stored here. (they are all green at this moment)

Attached Files


Edited by roland p, Wed Sep 17, 2008 8:46 AM.


#57  

    Quadrunner

  • 8,107 posts
  • Joined: 14-May 01
  • This is Sparta!
  • Location:Bavaria

Posted Wed Sep 17, 2008 8:58 AM

View Postroland p, on Wed Sep 17, 2008 3:45 PM, said:

Doesn't that take more cycles then:

Quote

LDX #0
LDA Data0
STA (POINTERA,X)
?

True. I thought in comparison to the code passage you originally posted.

Even faster would be:

Entry1:
LDA Data
STA GRP0

Entry2:
LDA Data
STA GRP1
...

You would just enter the loop on 4 different entry points.

#58  

    Quadrunner

  • 5,831 posts
  • Joined: 24-November 04
  • Boom bam.
  • Location:Seattle, WA

Posted Wed Sep 17, 2008 10:46 AM

I use (zp,X) addressing in Elevators Amiss. :D

Let's see if I can dig up the code...

Okay, actually it was Squish 'Em, and I actually use LAX (zp,X) :lol:
MainKernelLoopInner;		15
	lda PF1Temp
	sta PF1
	lda PF2Temp
	sta PF2		;+12	27

	lda (EnemyPtr,X)
	sta GRP0	;+9		35		VDEL

	lda PF4Temp
	sta PF1
	lda PF3Temp
	sta PF2		;+12	48

	dec EnemyPtr,X;+6		54

	lda #BRICKHEIGHT
	dcp BrickTemp
	sbc #BRICKHEIGHT-2
	sta ENAM1	;+12	66		VDEL



	lda #PLAYERHEIGHT-1
	dcp PlayerTemp
	bcc DrawBlank1;+9		75
	lda (PlayerGfxPtr1),Y
	sta GRP1	;+8		 7
	lda (PlayerClrPtr1),Y
	sta COLUP1	;+8		15	
BackFromDrawBlank1

	lda PF1Temp
	sta PF1
	lda PF2Temp
	sta PF2		;+12	27

	lax (EnemyPtr,X)
	cmp #ENDMONSTERVALUE
	beq MainKernelLoopOuter;+10	37
I'm pretty sure I posted the complete source somewhere, probably in the Squish 'Em thread, if you want to see the whole thing...:ponder:

EDIT: (zp,X) addressing is useful when you need two separate indices and don't have time to switch Y around. Of course, having an addressing mode that worked like (),Y, except with X, would have been even better...

And, as supercat showed, it's a very useful addressing mode for 7800 development. The main limitation is that to use it as it was intended (i.e., with a big list, in zero page, of pointers) is that it eats up zero page memory in a hurry, which is generally a deal-killer on the 2600.

Edited by vdub_bobby, Wed Sep 17, 2008 10:51 AM.


#59  

    River Patroller

  • 4,728 posts
  • Joined: 12-May 01

Posted Wed Sep 17, 2008 1:11 PM

Wow, this is some really exciting stuff. I can't wait to see if you can do the checkerboard. This looks really good even though it's just playfield because most of the diagonal borders are running horizontally. If you can spare the sprites you can selectively "fill in" one or two of the boundary lines that are running more vertically, but even if you don't do it, it's still more than acceptable.

#60  

    Stargunner

  • 1,361 posts
  • Joined: 14-September 07
  • RLA
  • Location:The Netherlands

Posted Wed Sep 17, 2008 2:42 PM

View Postmos6507, on Wed Sep 17, 2008 9:11 PM, said:

Wow, this is some really exciting stuff. I can't wait to see if you can do the checkerboard. This looks really good even though it's just playfield because most of the diagonal borders are running horizontally. If you can spare the sprites you can selectively "fill in" one or two of the boundary lines that are running more vertically, but even if you don't do it, it's still more than acceptable.
Thanx,

The checkerboard that I posted a few posts ago, is not the one I'm going to use (Edit, I ment the bin, not the source). It's not possible to create the brown boundaries with that one. The one I use now can do create the boundaries, at the expense of a slightly smaller screen (black borders left/right).

I'm now working on the checkerboard and calculations for odd/even tiles. The checkerboard isn't really a playfield but just a routine that alters the backgroundcolor, when scrolling is needed, the routine just waits for one cycle at that line and the rest that follows is scrolled 1 cycle (3 colorclocks). It's even possible to create multicolored tiles, but I won't do that since the original ballblazer hasn't.

Using sprites is not possible, because moving sprites requires a WSYNC which makes my method unusable, unfornunatly.

I've just discovered that only one sprite at the time is displayed over the checkerboard in the original version. This sort of solves my sprite problem.

Edited by roland p, Wed Sep 17, 2008 3:18 PM.


#61  

    Stargunner

  • 1,361 posts
  • Joined: 14-September 07
  • RLA
  • Location:The Netherlands

Posted Thu Sep 18, 2008 1:38 PM

Small update, there are brown borders left and right! Scroll to the right and you will see.
The checkerboard is now 21 tiles wide, just like real ballblazer. I still have to work on complete tiles.

Attached Files



#62  

    River Patroller

  • 4,809 posts
  • Joined: 03-December 02
  • It's dead, Jim.
  • Location:Newhall, CA

Posted Fri Sep 19, 2008 1:16 PM

Excellent work! This really shows a lot of potential.

(I also like the unintentional "features" where if you scroll too far to the left you end up on a beach, and if you scroll too far to the right, you find a "second" playfield. ;))

#63  

    River Patroller

  • 4,728 posts
  • Joined: 12-May 01

Posted Fri Sep 19, 2008 2:37 PM

View PostNathan Strum, on Fri Sep 19, 2008 12:16 PM, said:

Excellent work! This really shows a lot of potential.

(I also like the unintentional "features" where if you scroll too far to the left you end up on a beach, and if you scroll too far to the right, you find a "second" playfield. ;))

I also wonder what other types of game engines you could use this for besides just trying to clone Ballblazer. We've got kind of the start of a SNES Mode 7 sort of thing going on. The trick is finding ways to overlay enough graphics on this playfield to do interesting things.

#64  

    Visual batari Basic User

  • 20,535 posts
  • Joined: 23-April 01
  • Controlled Randomness

    Replay Value

    Nonlinear
  • Location:North Carolina (USA)

Posted Fri Sep 19, 2008 3:14 PM

View Postmos6507, on Fri Sep 19, 2008 3:37 PM, said:

I also wonder what other types of game engines you could use this for besides just trying to clone Ballblazer. We've got kind of the start of a SNES Mode 7 sort of thing going on. The trick is finding ways to overlay enough graphics on this playfield to do interesting things.
Can I kind of go off topic for a second and ask if you've seen this semi-related thing made with batari Basic:

Attached File  thing4.bin   4K   127 downloads

It's from this post by SeaGtGruff:
http://www.atariage.com/forums/index.php?s...t&p=1580403

The original was made by atari2600land, but SeaGtGruff fixed it. So now batari Basic users will get to make some 3D scrolling games too, but they just won't look as cool as this Ballblazer stuff.

#65  

    Thrust, Jammed, SWOOPS!

  • 16,625 posts
  • Joined: 25-April 01
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Fri Sep 19, 2008 3:21 PM

A bit OT: I just downloaded some Ballblazer ROMs for the 5200 and C64.

The 1st ROM for the C64 I found was really disappointing (flickering lines), while the 2nd one looked pretty good (though not as good as the 5200 version). Any idea what's wrong with the 1st one? Maybe a homebrew attempt? :ponder:

BTW: The Atari version does some kind of anti-aliasing between the squares. Clever!

#66  

    River Patroller

  • 4,103 posts
  • Joined: 24-April 01
  • North of 40
  • Location:PA

Posted Fri Sep 19, 2008 6:44 PM

I remember reading a review with the developers back in the 80's, it might have been Electronic Games magazine, and they were proud of their anti-aliasing idea. Basically a 3rd color between 2 colors, right?

The 2600 version is impressive, although quite slow for actual gameplay. Never thought I'd see it look so authentic.

#67  

    Thrust, Jammed, SWOOPS!

  • 16,625 posts
  • Joined: 25-April 01
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Sat Sep 20, 2008 1:06 AM

View PostCafeman, on Sat Sep 20, 2008 2:44 AM, said:

I remember reading a review with the developers back in the 80's, it might have been Electronic Games magazine, and they were proud of their anti-aliasing idea. Basically a 3rd color between 2 colors, right?
Yup. They draw a thin line between squares with an intermediate color.

Quote

The 2600 version is impressive, although quite slow for actual gameplay. Never thought I'd see it look so authentic.
The speed is just defined by the programmer. You can have it as fast or slow as you want it. :)

As soon as Roland adds acceleration and inertia you will get the speed you want.

#68  

    Stargunner

  • 1,361 posts
  • Joined: 14-September 07
  • RLA
  • Location:The Netherlands

Posted Sat Sep 20, 2008 1:38 AM

Noone mentioned the blackborders yet :). They where needed because the engine got a bit more complicated in order to do something else than just creating a infinite checkerboard.

Quote

I also wonder what other types of game engines you could use this for besides just trying to clone Ballblazer. We've got kind of the start of a SNES Mode 7 sort of thing going on. The trick is finding ways to overlay enough graphics on this playfield to do interesting things.
I thought about games like trailblazer. A friend of mine made a spinoff in java:http://www.gagaplay....azer/index.html This is indeed a sort of Mode 7 thing. all the tiles can have a unique colors, so it is texture mapped in a rough kind of way. I might add the antialias afterwards.

Quote

Can I kind of go off topic for a second and ask if you've seen this semi-related thing made with batari Basic:
That's looks cool. I did not know basic could be that clever. I want to do the same thing, but first I want to figure out how the math is, so I can do it 'right'. cd-w posted something similar to0.

Quote

I remember reading a review with the developers back in the 80's, it might have been Electronic Games magazine, and they were proud of their anti-aliasing idea. Basically a 3rd color between 2 colors, right?
That's what it looks like. I also saw antialiassing between green and brown tiles when you move forward to the border ahead of you. It looks really clever!

I've also found a Ballblazer page: http://www.langston.com/LFGames/

Quote

The 2600 version is impressive, although quite slow for actual gameplay. Never thought I'd see it look so authentic.
Thanks! The speed can be adjusted as Thomas mentioned. The screenupdating is now 60 fps, but it moves in small steps right now.

#69  

    Thrust, Jammed, SWOOPS!

  • 16,625 posts
  • Joined: 25-April 01
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Sat Sep 20, 2008 2:31 AM

View Postroland p, on Sat Sep 20, 2008 9:38 AM, said:

That's what it looks like. I also saw antialiassing between green and brown tiles when you move forward to the border ahead of you. It looks really clever!
Because the horizontal "antialiasing" lines are simplier to process, they could be used to do some setup code for the next block.

#70  

    Thrust, Jammed, SWOOPS!

  • 16,625 posts
  • Joined: 25-April 01
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Sat Sep 20, 2008 2:44 AM

View Postcd-w, on Mon Sep 8, 2008 12:59 PM, said:

I think Ballblazer only has two sprites that overlap the board (the other player, and the goalposts)?
It think it is ok to draw the goalpost outside the board. So only the other player is left. This should make the sprite code pretty simple.

Thinking about it, if we could get away with using the ball for the other player (might become ugly), we could use the sprites and missiles for drawing a really smooth board. And the background color changes for filling the gaps. :ponder:

#71  

    Thrust, Jammed, SWOOPS!

  • 16,625 posts
  • Joined: 25-April 01
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Sun Sep 21, 2008 2:12 AM

Further kernel brainstorming:

1. For the board, either use
a) PF graphics (slightly lower resolution, but easier to handle)
b) Repeated BK color writes (better resolution, but hard to handle)
2. Use all 5 or just 3 (BL, P1, M1) objects for smoothing the vertical lines. Use 3 in the vertical area where the other player's ship is visible. For the lines, you just have to calculate one vertical line. The other ones are moving at a fixed, relative speed.
3. Between the board rows, use a horizontal, "antialiasing" line with intermediate color. Since this one requires litte processing time, we could put some timeconsuming code (e.g. color switches) in here.
4. Use P1 (and maybe M1) for drawing the other players ship
5. Goalposts and the Plasmorb all drawn above the board so we don't have to care about them.

Here is a coarse example of point 2 (using 5 objects for smoothing, but even using just 3 objects should look still good). All 5 objects are 8 pixels wide. The 2nd picture gives a better impression after filling some gaps.

As you can see, most lines (except the most centered ones, which we will try to smooth) will become pretty much horizontally drawn, so a lower horizontal resolution should work well here.

Attached Thumbnails

  • Attached Image: Ballblazer2.png
  • Attached Image: Ballblazer1.png

Attached Files


Edited by Thomas Jentzsch, Sun Sep 21, 2008 2:54 AM.


#72  

    Stargunner

  • 1,361 posts
  • Joined: 14-September 07
  • RLA
  • Location:The Netherlands

Posted Sun Sep 21, 2008 12:19 PM

Hi Thomas,

I think that using 2 missles and 1 ball would make things really smooth.

Quote

a) PF graphics (slightly lower resolution, but easier to handle)
Hi Thomas, how would you do the ceckerboard when using PF graphics? and are the brown borders still possible?

#73  

    Chopper Commander

  • 236 posts
  • Joined: 23-August 02
  • Former agent of the Cardassian Obsidian Order
  • Location:Pennsylvania, USA

Posted Sun Sep 21, 2008 12:51 PM

View PostThomas Jentzsch, on Fri Sep 19, 2008 5:21 PM, said:

A bit OT: I just downloaded some Ballblazer ROMs for the 5200 and C64.

The 1st ROM for the C64 I found was really disappointing (flickering lines), while the 2nd one looked pretty good (though not as good as the 5200 version). Any idea what's wrong with the 1st one? Maybe a homebrew attempt? :ponder:

The flickering was probably due to timing issues depending on if you were running NTSC Ballblazer on PAL C64 or PAL Ballblazer on NTSC C64.

Garak

Edited by Garak, Sun Sep 21, 2008 12:52 PM.


#74  

    Thrust, Jammed, SWOOPS!

  • 16,625 posts
  • Joined: 25-April 01
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Sun Sep 21, 2008 1:02 PM

View Postroland p, on Sun Sep 21, 2008 8:19 PM, said:

I think that using 2 missles and 1 ball would make things really smooth.
Then we would not have any color left for the other player's ship. So 1 player, its missile and the ball are the way to go here.

Quote

Quote

a) PF graphics (slightly lower resolution, but easier to handle)
Hi Thomas, how would you do the ceckerboard when using PF graphics?
I thought about a reflected PF, maybe using PF1 and PF2 only. Though I am not sure which solution will be better combinable with smoothing.

Quote

and are the brown borders still possible?
Not sure here too. Maybe a combined solution (2 color writes and 4-6 PF writes per scanline).

#75  

    Thrust, Jammed, SWOOPS!

  • 16,625 posts
  • Joined: 25-April 01
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Sun Sep 21, 2008 1:23 PM

View PostGarak, on Sun Sep 21, 2008 8:51 PM, said:

The flickering was probably due to timing issues depending on if you were running NTSC Ballblazer on PAL C64 or PAL Ballblazer on NTSC C64.
I found out by now. The other version was done by some people called Crackman Crew.

http://noname.c64.or...lease/?id=66670

Edited by Thomas Jentzsch, Sun Sep 21, 2008 1:25 PM.






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users