Jump to content
  • entries
    657
  • comments
    2,692
  • views
    898,566

Space Rocks


SpiceWare

1,034 views

Just some brainstorming for a potential remake of Asteroids/Asteroids Deluxe/(and possibly Space Duel), tentatively called Space Rocks (because space literally kicks ass! :D)

 

Sprite Usage

 

Sprites would be used to draw the player's ship, the saucer and the asteroids.

 

When as asteroid is hit, the following occurs:

  • large asteroid -> 2 medium asteroids
  • medium asteroid -> 2 small asteroids
  • small asteroid -> disintegrates

The initial round starts out with 4 large asteroids. As the game progresses, each wave starts with progressively more asteroids until a maximum of 12 large asteroids is achieved.

 

12 * 2 * 2 = 48 potential concurrent asteroids (this could occur if none of the small asteroids are destroyed until after all large and medium asteroids are hit).

 

Add 2 more sprites for player and saucer for a max of 50 sprites. Currently Frantic supports a maximum of 24 sprites and is struggling to process them on the later levels; however in Asteroids we only care about sprite collisions when it involves the ship, saucer, or a missile so I think it can be done.

 

Shots

 

In asteroids the player has up to 4 onscreen shots while the saucer has 2. This works perfectly as my kernel supports 6 missiles by flickering both missiles and the ball.

 

 

Kernel

 

The kernel would be quite a bit simpler than in Frantic because there's no need to update the playfield, plus the objects would be a single color due to rotation (each object can still be a unique color though).

KernelLoop:
	; at this point the registers hold the following:
	; A - graphics for player 0
	; X - enable for missile 0
	; Y - enable for missle 1
	sta WSYNC
KernelLoopNoWSYNC:
	sta HMOVE			   ; 3  3
	sta GRP0				; 3  6
	lda #<DS_GRP1		   ; 2  8
	sta GRP1				; 3 11
	stx ENAM0			   ; 3 14
	sty ENAM1			   ; 3 17
	lda #<DS_EVENT_BL	   ; 2 19
	sta ENABL			   ; 3 21
	bmi KernelEvent		 ; 2 23 - 3 24 if taken
	lda #<DS_HMP0		   ; 2 25
	sta HMP0				; 3 28
	lda #<DS_HMP1		   ; 2 30
	sta HMP1				; 3 33
	lda #<DS_GRP0		   ; 2 35
	ldx DS_M0			 ; 4 39
	ldy DS_M1			 ; 4 43
	jmp KernelLoop		  ; 3 46
 

 

One thing you might notice in this kernel is the use of HMOVE on every line. I noticed in the original asteroids that the large asteroids are drawn by shifting the player left/right on each scanline so they don't look so blocky. I think that's a great idea, so I plan to do the same.

 

KernelEvent would do one of three things: reposition player 0, reposition player 1, or end-of-kernel.

 

I think reposition routines should be able to be done in just 2 scan lines for both players because there's no need to update PFx registers like in Frantic (where it takes 5 scan lines to reposition player 0 and 4 for player 1). The reposition routines would also change the color of the player and set if it's to be displayed 1x or 2x in size.

  • Like 2

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   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...