Re: [stella] Big Dig - update and musings

Subject: Re: [stella] Big Dig - update and musings
From: Christopher Tumber <christophertumber@xxxxxxxxxx>
Date: Mon, 14 Apr 2003 12:35:02 -0400
Amdrew wrote:

>I did manage to get stuck in a configuration where the screen was shuddering
>up and down and I couldn't do anything - I took a snapshot of that
>configuration - not sure if that was a bug, normal gameplay with the glitch
>you mentioned, or I'm just being moronic.  Anyway, shot attached.

You've got the PAL palette so it's a little hard to tell (I could just boot it up with the PAL pallete, I suppose...) but the grey blocks below you I believe are actually brown (NTSC). Brown blocks can't be destroyed (Except by dropping them into sets of three which hasn't been implemented yet). So that's probably why you're stuck.


Thomas wrote:

>Why do you have to do this *completely* every frame? Couldn't you distribute the calculations over two or more frames?

Andrew wrote:

>Why can't you do one row per frame, going from the bottom, up? 

Yeah, I'm doing this (hence the term "game cycle" in that big-ass post). The reason its flickering is that there's a huge possible variation in routine length depending upon the size of a group of blocks (1 block = very fast, 12 blocks = very slow) being checked to see if they can fall. So it either needs better optimisation (or replacement) of the "find anchored blocks" routine or it needs to be spread over more frames.

The "find anchored blocks" routine checks INTIM before proceeding to the next block to try and make sure there's enough time left to process that block. However, the time check is only a guestimate right now due to that variance (I haven't figured that actual max time required yet) as well as trying to balance that with ensuring the whole board gets processed every game cycle (If I really crank it down so it doesn't flicker then part of the screen gets missed).

Since I'm replacing that routine anyway, I just left it alone and posted while I'm at a high water point (I've just taken several steps back by removing those routines and it'll be a little bit before I'm back to where I was...)


Anyway, this is the current scheduling. (Frames 10 through 3 are set aside for the routine(s) which will cause groups of 1 that come together to disappear).

;                  - Vertical Blank/Overscan
;FrameCounter = 24 - Check for player fall&Move Player&Animate Player
;FrameCounter = 23 - Player Shoots/Clear marked blocks
;FrameCounter = 22 - Find Anchored Blocks on Bottom Row/Find anchored blocks
;FrameCounter = 21 - Find Anchored Blocks/Find anchored blocks
;FrameCounter = 20 - Find Anchored Blocks/Find anchored blocks
;FrameCounter = 19 - Find Anchored Blocks/Find anchored blocks
;FrameCounter = 18 - Find anchored blocks/Find anchored blocks
;FrameCounter = 17 - Find anchored blocks/Find anchored blocks
;FrameCounter = 16 - Find anchored blocks/Find anchored blocks
;FrameCounter = 15 - Find anchored blocks/Drop unanchored blocks
;FrameCounter = 14 - Drop unanchored blocks/Drop unanchored blocks 
;FrameCounter = 13 - Drop unanchored blocks
;FrameCounter = 12 - Check for player fall&Move Player&Animate Player
;FrameCounter = 11 - Player Shoots/Clear marked blocks
;FrameCounter = 10 - 
;FrameCounter = 9  - 
;FrameCounter = 8  - 
;FrameCounter = 7  - 
;FrameCounter = 6  - 
;FrameCounter = 5  - 
;FrameCounter = 4  - 
;FrameCounter = 3  - 
;FrameCounter = 2  - 
;FrameCounter = 1  -
;FrameCounter = 0  - Animate treasure 


Chris...

----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/


Current Thread