Jump to content
IGNORED

Sprite placement help needed


Recommended Posts

Thanks in advance - another victim of the 2600 bug here. I'm addicted.

 

I'm trying to create a logic puzzle game on a 7 by X grid. The pieces are STATIC. I need to display a row of 7 sprites, each separated from the others by 16 pixels, but with changing GRPx graphics and any combo of two COLUPx colors choices for each.

 

Obviously, I get real close to this using interlaced sprite0 and sprite1 set to triple display (medium spacing), and timing the graphics and color changes. But I need to lead off with an extra copy - or end with an extra. I've thought about using immediate spacing with 13/14 sprites and just blanking out every other one - but I don't think I can change the color and graphics fast enough with that.

 

I've looked at a lot of the RESPx code out there - I must confess I don't quite get it yet. I am pretty familiar with the 4/3 cycle differences of the display; I get the delay of presentation until the following scanline; I sort-of get the v-delay trick. I lot of that seems overkill for me though, and most examples are about cramming as many sprites as possible into a line.

 

Anyway - this is sort of what I'd like to produce. The graphics are actually more detailed, I just haven't got them yet - 8 bit detail. Of course, avoiding flicker would be the goal:

logic_mock-up.png

These lines are 4 pixels (out of 160) wide.

 

Any pointers (pardon the pun) would be much appreciated!

Edited by TheDickChuck
Link to comment
Share on other sites

You might be able to do it like this. The basic technique is to build the remaining sprite out of the missiles and ball, while using the playfield to cover up the extra copies.

 

 

 

Edit: Just re-read your post, and it's tricky to do what you want to do without flicker. Also I think you meant gaps of 8 pixels between sprites, no?

Link to comment
Share on other sites

Thanks for reply Omegamatrix - yes 8 pixels between sprites is correct. I had been reading a review that reporting spacing based on the 1st pixel - to - 1st pixel difference; my brain was stuck in that place when I wrote this.

 

I did think about a ball/missile construction effort. Seemed overwhelmingly complex - but I guess it would just take a second definition of each sprite: one with three numbers per line that specify the offset (or off) for the ball/m0/m1 from the start position. Have you tried that technique before? Seems like some sprites' scans might be complex enough to require repeated use of one or more of the objects - was thinking that that would be too time sensitive to pull off.

 

I am going to re-examine my images and see if it seems doable. Also, by covering up the copies - is that to say that multiple player sprites invoke multiple missiles as well? I didn't realize that.

 

Honestly, I was about to give up and commit Atari suicide from frustration getting ANY of the RESPx tricks to display - then I realized that for some reason my z26 emulator doesn't seem to display them; Stella does. Does that sound right to you? I was thinking there might be some command line switch to control this, but didn't see anything in the docs I have.

 

One last question - I'm new enough to not know what +DPC is...?

 

Thanks.

Edited by TheDickChuck
Link to comment
Share on other sites

Wow thanks for the input. Saw your response to my other thread as well.

 

I had already given up the no-flicker dream. I went ahead and set up two flicker states one with two P0 sprites spaced wide and offset from a pair of two wide P1 sprites. This seems to give enough time to make the GRPx and COLUPx changes for each of those four images and also some playfield asymetry things I need to add now. The second flicker is the same setup - shifted and with the second P1 image zeroed to give me my seven. Looks like...

sprite_toggle_example.png

 

I'll check out your code - it is undoubtedly better than what I have. And thanks again.

 

BTW, is there a way in Stella (emulator) to take a blended snapshot across a timewindow?

Edited by TheDickChuck
Link to comment
Share on other sites

BTW, is there a way in Stella (emulator) to take a blended snapshot across a timewindow?

Toggle phosphor mode, CMD-P (Mac) or ALT-P (Linux, Windows). See all the keys here, especially those listed under Developer and Other.

 

You can also set that per ROM, but while you're actively developing something it's easier to use the keyboard shortcut. I post step-by-step instructions on how to do that whenever I post my games for people to test, such as for Draconian.

Link to comment
Share on other sites

Make sure you test on real hardware too. Stella, LCD TV's and CRT's all produce different results. Something that looks acceptable in stella with phosphor mode may be unbearable on a real TV.

This is completely true. Also, I only tried that routine I wrote in Stella. Timing is tight in places and you might find on some consoles it updates the registers too late. You can always try shuffling stuff around so that the updates are not "just in time".

 

 

For example this timing might be better:

;Old:

    lda    (scorePtrs),Y         ;5  @5
    sta.w  GRP0                  ;4  @9
    lda    (scorePtrs+2),Y       ;5  @14
    sta    GRP1                  ;3  @17
    lda    (scorePtrs+4),Y       ;5  @22
    sta    GRP0                  ;3  @25
    lax    (scorePtrs+,Y       ;5  @30
    lda    (scorePtrs+6),Y       ;5  @35
    sta    GRP1                  ;3  @38  <---
    sta    RESP0                 ;3  @41


;New

    lda    (scorePtrs),Y         ;5  @5
    sta    GRP0                  ;3  @8
    lda    (scorePtrs+2),Y       ;5  @13
    sta    GRP1                  ;3  @16
    lda    (scorePtrs+4),Y       ;5  @21
    sta    GRP0                  ;3  @24
    lax    (scorePtrs+,Y       ;5  @29
    lda    (scorePtrs+6),Y       ;5  @34
    sta    GRP1                  ;3  @37  <---
    sta.w  RESP0                 ;4  @41
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

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