Jump to content
  • entries
    657
  • comments
    2,693
  • views
    899,057

menu is finished


SpiceWare

1,601 views

though I might end up redoing it in 6507 code as I think it'll take less ROM space and processing time is not an issue when displaying the menu.

  • Up/Down to select option to change.
  • Left/Right/Fire to change an option.
  • Only Fire works on the Start option, and it starts the game when Fire is released.

blogentry-3056-0-64683400-1316143179_thumb.png

 

The options are:

  • Maze Type (berzerk style on the left, frenzy style on the right)
  • Homing - tank robots shoot homing missiles (frenzy only)
  • Wall Flicker - controls how the reflective walls are drawn (frenzy only). The frenzy maze at the top of the menu will flicker at the select rate as well.
  • Robot Shots - maximum shots the robots can shoot at 1 time.
  • Stealth - invisible robots
  • Lives - 1/3/5 lives
  • Bonus Life - when bonus lives are awarded. X/1K/2K/5K
  • Continue - lets you continue the game on the last level you played with score reset to 0.

With the exception of Homing and Continue, all menu options should have an affect on the game. Let me know if something doesn't work correctly.

 

ROM

frantic_harmony_20110915.bin

 

ROM with ghosting fix & timing change for menu

frantic_harmony_20110916.bin

 

ROM with darker disabled options/selected flash

frantic_harmony_20110916b.bin

 

Source

Frantic20110915.zip

 

 

This shows the tradeoff of the 2-color 48 pixel graphic kernel. The VBLANK on/off is noticeable if the display's brightness adjustment is set to high.

blogentry-3056-0-09401600-1316196948_thumb.jpg blogentry-3056-0-92516700-1316196960_thumb.jpg

  • Like 1

5 Comments


Recommended Comments

That looks very nice. I assume the ARM is feeding a 48 pixel style kernel on to generate the menu. If there isn't too much animation, I don't see any reason that the 2600 couldn't generate it on it's own. Have the ARM instead do some music generation!

 

PS Put me down for a signed cartridge when you get to that stage. This much effort deserves a purchase.

 

Frantic - the Donkey Kong Country of 2600 homebrews

Link to comment

Added a ROM with some minor fixes based on espire8's feedback.

 

Thanks. Yep, it's a 48 pixel kernel that utilizes the DPC+ data fetchers in fast fetcher mode (it overrides LDA #) to provide just enough time to do a 2 color 48 pixel graphic. The colors are done by coloring the background and the play field, not by coloring the sprites (which are black - all graphics are inverted). The primary color in a line is put into the background, the secondary into the PF. I then turn on PF bits (as well as strategically position the ball) to show the 2nd color. VBLANK is used to turn the signal off on either side of the 48 pixel graphic. Since the timing isn't exact, 8x wide missiles are placed adjacent to the left/right sides of the graphic to provide time for changing VBLANK.

 

There is a tradeoff with using the VBLANK trick though - it's noticeable if the brightness on the display is set to high. I've added a couple photos showing this.

 

I've only got 1K of ARM space left and much to do, so I don't foresee adding title screen music. Once I add the doors to make Frantic playable, and add the homing missile logic, I plan to review the code to see what I can do as I'll need some space for adding Frenzy's special room logic.

Link to comment

If you're interested, here's the code.

; Two Color Graphic routine
; this works by using a "negative" image when drawing the sprites.
; The sprites are colored black while the background is the color
; that shows up as though it were the sprites.  The 2nd color is 
; achieved by using the playfield and/or ball.
;
; The missiles (also black) and turning on/off VBLANK is used together
; to hide the screen and playfield beyond the 48 pixel image.
ShowTwoColorGraphic:
ldx #2
stx VBLANK
lda #<DF1DATA		; 2 62
sta COLUBK		; 3 65
lda #<DF1DATA		; 2 
sta COLUPF		; 3 38
sta WSYNC
S2CGloop:	; time critical loop - cannot have a page break in it
lda #<AMPLITUDE		; 2  2
sta AUDV0		; 3  5
sty ScoreKernelCounter	; 3  8
lda #<DF2DATA		; 2 10
sta GRP0		; 3 13
lda #<DF3DATA		; 2 15
sta GRP1		; 3 18
lda #<DF4DATA		; 2 20
sta.w GRP0		; 4 24
ldx DF6DATA		; 4 28
ldy DF7DATA		; 4 32
lda ZERO4		; 4 36
sta VBLANK		; 3 39
lda #<DF5DATA		; 2 41
sta GRP1		; 3 44
stx GRP0		; 3 47
sty GRP1		; 3 50
sty GRP0		; 3 53
ldx #2			; 2 55
stx VBLANK		; 3 58
lda #<DF1DATA		; 2 60
sta COLUBK		; 3 63
lda #<DF1DATA		; 2 65
sta COLUPF		; 3 68
ldy ScoreKernelCounter	; 3 71
dey 			; 2 73
bne S2CGloop		; 3 76 
lda #<AMPLITUDE		; 2  2
sta AUDV0		; 3  5
sty PF0			; 3  8
sty PF1			; 3 11
sty VBLANK		; 3 14
sty GRP0		; 3 26
sty GRP1		; 3 29
sty GRP0		; 3 32
rts			; 6 38	            

 

 

This could be done w/out DPC+ by unrolling the loop and replacing the DFxDATA with hard coded graphics and color values. Would take a lot of ROM though.

Link to comment
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...