Cybearg #1 Posted November 14, 2014 (edited) So, on the Intellivision, smooth scrolling is hardware-supported because the on-screen tiles can have a pixel offset of 0-7. For the first 7 frames, the screen is just shifted by a pixel and the tiles are only actually scrolled on the 8th frame. Could something similar be done in batariBasic? Essentially, the playfield would need to be delayed based on a variable of 0-3. On the 4th frame, the normal scroll command would be called and the offset would return to 0. This seems very doable, since it's basically just adding a delay to the screen, but then what may seem very simple on the surface is probably pretty complicated when you're racing the beam. Any possibility of this? It would be great to have pfpixels smoothly scroll in. It would also likely require a slightly narrower visible screen, as you wouldn't want to see the pfpixels vanishing off the side of the screen and appearing on the other, so some pixels of the pfpixels would have to be masked on the edges. For reference, I'm most interested in this with the context of horizontal scrolling, like for a platformer. Edited November 14, 2014 by Cybearg Quote Share this post Link to post Share on other sites
+Gemintronic #2 Posted November 14, 2014 The simple answer is no. I made some samples of what can be done instead here: http://atariage.com/forums/topic/195843-smooth-horizontal-scrolling-demo/ Quote Share this post Link to post Share on other sites
Cybearg #3 Posted November 14, 2014 The simple answer is no. What if the playable screen area was narrowed, giving more time to set up the shift between scanlines? Quote Share this post Link to post Share on other sites
+Gemintronic #4 Posted November 14, 2014 What if the playable screen area was narrowed, giving more time to set up the shift between scanlines? I've seen some topics where assembly gurus have achieved something. I'd search in that section. The main challenge is to implement a kernel compatible with bB. batari and RevEng have other exciting things to do. The only person remotely qualified is you, dawg http://atariage.com/forums/topic/224946-smooth-scrolling-playfield-i-think-ive-done-it/ http://atariage.com/forums/topic/218827-smooth-horizontal-scrolling-messing-with-wsync/ http://atariage.com/forums/topic/178574-smooth-horizontal-scrolling/ You could use my technique and DPC+ to do smooth horizontal scrolling without writing your own kernel. Consider it! Quote Share this post Link to post Share on other sites
+SpiceWare #5 Posted November 14, 2014 Could something similar be done in batariBasic? Essentially, the playfield would need to be delayed based on a variable of 0-3. On the 4th frame, the normal scroll command would be called and the offset would return to 0. This seems very doable, since it's basically just adding a delay to the screen, but then what may seem very simple on the surface is probably pretty complicated when you're racing the beam. The playfield was not designed to be shifted on the Atari, there isn't an offset register like you describe for the Intillevision. That said, eshu did some experiments with RSYNC and VSYNC and was able to shift the screen. 1 Quote Share this post Link to post Share on other sites
Mr SQL #6 Posted November 14, 2014 Cyberg, you can make 4-way scrolling look smoother with the large steps by scrolling fast - Loon's Rat Race game illustrates this well. Another technique I learned from Jentsch was to do the fast scrolling in bursts which further adds to the illusion, I used this in KCMM; the scrolling is actually twice as coarse as bB (20 tile pixels accross instead of 40). Offsetting it with fine scrolling for the hi-res sprite characters between the fast scroll bursts complements the technique further still. You can leverage all of these techniques in bB! Spice, We can do very smooth vertical-only scrolling in asm 1 scanline at a time, is this possible with an existing bB kernel? If not it seems like it should be possible to create one. Eshu's smooth horizontal scroll experiments are awesome and intriguing but I don't think they yield consistent results across console models and displays yet. 1 Quote Share this post Link to post Share on other sites