Jump to content
  • entries
  • comments
  • views

Test of new walls



Partial test of the new wall routines for the Frenzy gameplay variation. The Frenzy maze starts with 15 posts in the middle of the room instead of 8, and the walls can either be shot-out brick-by-brick, or they can reflect the shots flying around the screen. I'll eventually have a menu option where you select which variation to play, at the moment it's hard coded for Frenzy.


While working on the 2nd column, I decided I needed to revamp how I am drawing the walls - so this is what was done up until that point. Currently the routines are hard coded for each column, and the 2 layouts use different routines as the walls fall in different positions of the playfield. The routines are called 2 (bezerk) or 3 (frenzy) times with the row of the posts. I'm going to revamp them to use an actual line-drawing-routine, which should take up less ROM space and be easier to write.


The maze is now drawn double-buffered (ie: there's 2 copies of the display in RAM), with the blocks for the reflective walls being drawn with an alternating pattern as shown below. I've uploaded builds with the patterns set to flicker as well as animate. Flicker looks a lot better than I expected so I might go that route - for those of you with a Harmony, let me know your thoughts after viewing it on a real TV.


Display buffer 1:



Display buffer 2:



LS_Dracon tweeked the placeholder logo










Recommended Comments

In thinking on it some more, I'll just make it a menu option and let the player select which to use. I think I could even support 3 flicker rates.

Link to comment

Don't discount table lookups. Skeleton(+) was table lookup driven, including the maze, the 3-D view, the Skeleton, the score digits and the title & end screens. Yes, the table can take up a chunk of ROM, but they are dead simple and typically code efficient.

Link to comment

Line drawing will be very simple as for this I only need to draw it horizontally or vertically. My plan is to make the function like this:


DrawLine(x, y, x_length, y_length, pattern)


If x_length <> 0 the line will be left or right depending on the sign, otherwise it will draw based on y_length.


Pattern will be a bit pattern to draw - so to draw the wall I'd use $FF (%11111111) while the reflective walls would use $AA and $55 (%10101010, %01010101).


This will let me shrink the door logic as well as I'll be able to use patterns of %11001100, %01100110, %00110011 and %10011001. Plus I'll be able to easily revise it to work with the Frenzy layout, which has 20 locations for the doors, instead of just 4.


I'll be using lookup tables for decipher the X positions. One table of 40 values will contain which playfield register gets updated(PF0left, PF1left, ..., PF2right), and another table of 40 entries for which bit to update.

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...