supercat Posted June 10, 2005 Share Posted June 10, 2005 (edited) Here's a preliminary taste of my "zig scroller" routine. Still needs some improvements, but the display is unlike anything I've seen on the 2600. The top line is controlled by moving the joystick left and right; the next line by moving it up and down. The remaining five bounce at various speeds. Pushing fire will let the joystick move text faster, and reset will restart the top two lines in their default positions. I'll release some source code once I get everything improved to where I like it, but for now I'd be curious how well people can guess (without peeking at the code) how it all works. Anyone want to give it a go? jpzig1a.zip Edited June 10, 2005 by supercat Quote Link to comment Share on other sites More sharing options...
+Andrew Davie Posted June 10, 2005 Share Posted June 10, 2005 Here's a preliminary taste of my "zig scroller" routine. Still needs some improvements, but the display is unlike anything I've seen on the 2600. The top line is controlled by moving the joystick left and right; the next line by moving it up and down. The remaining five bounce at various speeds. Pushing fire will let the joystick move text faster, and reset will restart the top two lines in their default positions. I'll release some source code once I get everything improved to where I like it, but for now I'd be curious how well people can guess (without peeking at the code) how it all works. Anyone want to give it a go? 871761[/snapback] I recommend people have a good look at this great bit of coding. Cheers A Quote Link to comment Share on other sites More sharing options...
+batari Posted June 10, 2005 Share Posted June 10, 2005 Here's a preliminary taste of my "zig scroller" routine. Still needs some improvements, but the display is unlike anything I've seen on the 2600. The top line is controlled by moving the joystick left and right; the next line by moving it up and down. The remaining five bounce at various speeds. Pushing fire will let the joystick move text faster, and reset will restart the top two lines in their default positions. I'll release some source code once I get everything improved to where I like it, but for now I'd be curious how well people can guess (without peeking at the code) how it all works. Anyone want to give it a go? 871761[/snapback] Wow, what a creative way to get by the previous best of 13 chars, with the zigzag, you squeek by this limitation while making it look like you intended it this way. I'm not sure exactly how it works, but I suspect you've got HMOVEs on each scanline. Oh, and this next comment isn't intended to dig at you, but there's no need to post this in two different categories Quote Link to comment Share on other sites More sharing options...
Aaron Posted June 10, 2005 Share Posted June 10, 2005 That's really cool :!: I'd guess that you're taking advantage of the blank areas between the zig-zags on every line... though I'm sure the specifics must involve some good hackery. Quote Link to comment Share on other sites More sharing options...
kisrael Posted June 10, 2005 Share Posted June 10, 2005 I'd guess the cool Zig Zags hide a kind of "checkerboard" pattern of player/no player. Just a guess though. Very cool. Quote Link to comment Share on other sites More sharing options...
vdub_bobby Posted June 10, 2005 Share Posted June 10, 2005 Here's a preliminary taste of my "zig scroller" routine. Still needs some improvements, but the display is unlike anything I've seen on the 2600. The top line is controlled by moving the joystick left and right; the next line by moving it up and down. The remaining five bounce at various speeds. Pushing fire will let the joystick move text faster, and reset will restart the top two lines in their default positions. I'll release some source code once I get everything improved to where I like it, but for now I'd be curious how well people can guess (without peeking at the code) how it all works. Anyone want to give it a go? 871761[/snapback] That's pretty sweet looking! Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted June 10, 2005 Share Posted June 10, 2005 Hi there! I'd guess the cool Zig Zags hide a kind of "checkerboard" pattern of player/no player. Just a guess though. Very cool. 871959[/snapback] It's using tripple copies of each sprite, shifting one to the left and one to the right as it goes down. You can see it pretty good at the fastest one in the middle. Brilliant idea! Greetings, Manuel Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted June 10, 2005 Share Posted June 10, 2005 Yup! Very, very clever. Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted June 11, 2005 Share Posted June 11, 2005 Hi there! Just a thought, but wouldn't a sine wave work as well? Greetings, Manuel Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted June 11, 2005 Share Posted June 11, 2005 Just a thought, but wouldn't a sine wave work as well? Finding the time for constantly changing HMOVE might be a problem. Quote Link to comment Share on other sites More sharing options...
Bruce Tomlin Posted June 11, 2005 Share Posted June 11, 2005 Well, that's certainly thinking outside the box. "Launch all Zig for great justice!" Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted June 11, 2005 Share Posted June 11, 2005 Hi there! Just a thought, but wouldn't a sine wave work as well? Finding the time for constantly changing HMOVE might be a problem. 872500[/snapback] Hm... if this was the only problem, one could increase the height of the scroller, so it'd only need 5 sprites. Greetings, Manuel Quote Link to comment Share on other sites More sharing options...
supercat Posted June 20, 2005 Author Share Posted June 20, 2005 Just a thought, but wouldn't a sine wave work as well? 872496[/snapback] No, actually. The Atari 2600 is basically limitted to displaying a maximum of 48 pixels worth of sprite data per scan line, or if you really want to push things 56 (or maybe 64) and there are pretty severe restrictions on how that data can be placed. The zig-zag shape maximizes the effective usable screen real estate over which these pixels can be spread. At the spot where the upward and downward lines of text join, the maximum width is 16 pixels. If the left and right texts scroll inward at one pixel per scan line, this gives a height of 8 pixels. If you were to try to "flatten" out the shape on the top, this would reduce the allowable text height. Further, even using unrolled loops, the calculations required to shape the text as it went around the curve would be too much for the poor 6507 to handle. Even on the Zig demo where I made things as simple as I could, there are only about 10 cycles left per scan line. BTW, in case anyone is curious, the Zig demo uses two bitmaps for the scrolling text: one for the upward edge and one for the downward edge. Some of the letterforms are quite noticeably different in the two bitmaps. I did this rather than using one bitmap and deforming it on the fly because (1) it's oodles faster [and thus actually doable], and (2) hand-tweaking the bitmaps for some of the letters greatly improves their appearance. A few letters deform strangely right at the "turn", but for the most part they look pretty reasonable. Quote Link to comment Share on other sites More sharing options...
mos6507 Posted June 27, 2005 Share Posted June 27, 2005 This is a fantastic piece of work. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted June 27, 2005 Share Posted June 27, 2005 At the spot where the upward and downward lines of text join, the maximum width is 16 pixels. If the left and right texts scroll inward at one pixel per scan line, this gives a height of 8 pixels. If you were to try to "flatten" out the shape on the top, this would reduce the allowable text height. I understand. But how about increasing the gradients in the middle? That would give some sinus effect, wouldn't it? Quote Link to comment Share on other sites More sharing options...
Luigi301 Posted July 23, 2005 Share Posted July 23, 2005 supercat, you know what you doing! Quote Link to comment Share on other sites More sharing options...
Simon Posted July 25, 2005 Share Posted July 25, 2005 (edited) Hello everybody, yesterday I talked to Cybergoth on the phone and told him about my latest routines and ideas about diagonal spritescrolling and the possibility to fill the whole screen with scrollers. He pointed me to this topic and it's funny that you had the very same idea at about the very same time. Your demo looks very sweet! I use a diagonal scroller in my new demo. It will be released at EUROCON 2005 in Germany at the end of september. You can download the binary after the event, too. Find attached a screenshot of the diagonal scroller. More information about the event can be fetched at http://www.gamereset.de/eurocon2005/ A second scrolling routine in development uses the two sprites as one scroller. One scrolls from bottom right to middle top and the other from middle top to bottom left like this /\. It's also possible to have it scrolling a bit rounder (sine) by using variables for the vertical pixel-shifting instead of constants for 1-pixel shifting. This results in a scrolltext over the whole screen. All the best, Simon Edited July 25, 2005 by Simon 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.