TheDickChuck Posted November 26, 2015 Share Posted November 26, 2015 (edited) 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: These lines are 4 pixels (out of 160) wide. Any pointers (pardon the pun) would be much appreciated! Edited November 26, 2015 by TheDickChuck Quote Link to comment Share on other sites More sharing options...
Omegamatrix Posted November 27, 2015 Share Posted November 27, 2015 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? Quote Link to comment Share on other sites More sharing options...
TheDickChuck Posted November 27, 2015 Author Share Posted November 27, 2015 (edited) 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 November 27, 2015 by TheDickChuck Quote Link to comment Share on other sites More sharing options...
Omegamatrix Posted November 27, 2015 Share Posted November 27, 2015 Here, try this. SevenScoreSpread.zip It flickers, but is easy to color any of the digits you want. You can also draw all seven digits without flicker if you use a single color. Quote Link to comment Share on other sites More sharing options...
TheDickChuck Posted November 30, 2015 Author Share Posted November 30, 2015 (edited) 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... 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 November 30, 2015 by TheDickChuck Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted November 30, 2015 Share Posted November 30, 2015 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. Quote Link to comment Share on other sites More sharing options...
ZackAttack Posted December 1, 2015 Share Posted December 1, 2015 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. Quote Link to comment Share on other sites More sharing options...
Omegamatrix Posted December 1, 2015 Share Posted December 1, 2015 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.