Asmusr Posted April 6, 2013 Share Posted April 6, 2013 Does anyone know how the smooth scrolling in Warzone 2 was done? Are there other examples of games using smooth scrolling? Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/ Share on other sites More sharing options...
sometimes99er Posted April 6, 2013 Share Posted April 6, 2013 (edited) In Classic99, with Scroll Lock ON, then F9 will swap between ordinary screen and character dump (repeated 3 times). You'll get something like the animation below. In the Debugger you'll see the SIT and PDT updated about every 8th pixel/frame. So for every pixel move you have character patterns being updated/scrolled. Every 8th pixel move the characters and screen have been prepared and are then swapped into place. Characters alternate between >0800 and >1800, and screen at >0000 and >0400. At least Parsec, TI Invaders, Moon Patrol, Buck Rogers, Moon Mine, Frogger, Moon Sweeper and Jungle Hunt (Diving) use some kind of smooth scrolling in parts. Edited April 6, 2013 by sometimes99er 4 Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2730333 Share on other sites More sharing options...
RXB Posted April 6, 2013 Share Posted April 6, 2013 I was shown the original concepts by Quinton when we taught a Assembly class to other TI people. I used to go over to his house a few times a month. Also saw the start of his other games too. Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2730484 Share on other sites More sharing options...
Tursi Posted April 6, 2013 Share Posted April 6, 2013 Huh! I didn't know we had a Xevious clone. 1 Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2730524 Share on other sites More sharing options...
+nanochess Posted April 7, 2013 Share Posted April 7, 2013 (edited) I'm reposting from a similar subject in Colecovision forum http://atariage.com/...ll#entry2616436 For the more technical involved, a small discussion of how I did the scroll in Princess Quest. In the highest resolution VDP mode (mode 2) the screen as you see is composed of 8x8 tiles, there is a frame of 32 columns by 24 rows, each eight rows can have 256 different tiles. In order to do smooth scroll, you should define tiles shifted by pixel AND combined with following tile (by example, 6 pixels of tile plus 2 pixels of following tile) For fast update you change the screen (32x20 tile indexes or so) each two frames so you leave one frame for internal game logic (no way to do it updating pixels, that would be 4K-6K bytes, and VDP is very slow) Need to say that VDP limits colors roughly and you should play tricks to combine different colors, like leaving at least 8 pixels space between tiles of different color. If your game uses less graphics, you can redefine a small number of tiles continuosly. And of course I saved some "untouched" tiles to draw letters for score, record, energy and lifes. By the way, the vertical scrolling is even better because it's not so limiting in terms of color but it's more limited in number of available tiles. Also a good tip for programmers is the use of automated tools to calculate combinations of tiles and removing duplicated tiles in order to get more scene complexity. Here are two videos of my games with smooth scrolling using these techniques running in Colecovision. Princess Quest Mecha-8 http://www.youtube....h?v=hsAUDZpJc0A Edited April 7, 2013 by nanochess 1 Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2730639 Share on other sites More sharing options...
+nanochess Posted April 7, 2013 Share Posted April 7, 2013 (edited) I forgot to say that the TI/99-4A has the same video chip as Colecovision, so VDP techniques apply to both. Of course the games cited are very big (mostly because 1K of memory in Colecovision), so Princess Quest sizes up to 256K and Mecha-8 to 128K. For MSX (another similar machine but with more memory) I was able to compress each game in 64K ROM cartridges. Edited April 7, 2013 by nanochess Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2730642 Share on other sites More sharing options...
+Gemintronic Posted April 7, 2013 Share Posted April 7, 2013 My brain can't take the awesomeness in those pics and video links. 1 Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2730653 Share on other sites More sharing options...
Asmusr Posted April 27, 2013 Author Share Posted April 27, 2013 Thank you sometimes99er and nanochess for guiding me in the right direction. I have been playing around with scrolling for a few weeks, and here is my first demo of pixel smooth scrolling in half bitmap mode: http://www.youtube.com/watch?v=XGc_ZwbnXQ4 Note that the video is doing a bad job of showing how smooth the scrolling really is: the screen moves only 1 pixel row at a time - even at the highest speed of 60 FPS. The attached disk contains the E/A 3 file (SCO). Use the joystick to control the speed and move the sprite. On emulators it looks pretty good and on a real console it's even more smooth. However, on the console the top of the screen is flickering - at least on my console with the F18A. If this was to be used in a game I think you could use the top of the screen as text/status area to prevent the flickering. Scrolling.zip This is basically just pattern updating and name page flipping, and it only works with relatively simple graphics. If you're interested in more details I can write some notes... The map/graphics was made in Magellan 1.6: http://atariage.com/...n/page__st__275 5 Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2743160 Share on other sites More sharing options...
Opry99er Posted April 27, 2013 Share Posted April 27, 2013 That's a pretty amazing video, man... Very impressive!!! Are you planning to build a game out of that demo? Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2743207 Share on other sites More sharing options...
+retroclouds Posted April 27, 2013 Share Posted April 27, 2013 I'm impressed! That is very nice! Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2743227 Share on other sites More sharing options...
rocky007 Posted May 1, 2013 Share Posted May 1, 2013 really incredible, i can't believe my eyes !!! please don't stop coding ! Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2745945 Share on other sites More sharing options...
+InsaneMultitasker Posted May 1, 2013 Share Posted May 1, 2013 Thank you sometimes99er and nanochess for guiding me in the right direction. I have been playing around with scrolling for a few weeks, and here is my first demo of pixel smooth scrolling in half bitmap mode: Very nicely done. Would your scrolling allow you to do the same horizontally or at a diagonal? Just curious Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2745954 Share on other sites More sharing options...
Asmusr Posted May 2, 2013 Author Share Posted May 2, 2013 Horizontally, yes, but you would not be able to scroll the colors smoothly so different colors would have to be one character apart. Diagonal would be difficult, I think you would run out of characters. I'm working on another version of the scroller using four buffers that doesn't have any flickering problems. I will post the source code when it's working. Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2746151 Share on other sites More sharing options...
+InsaneMultitasker Posted May 2, 2013 Share Posted May 2, 2013 Horizontally, yes, but you would not be able to scroll the colors smoothly so different colors would have to be one character apart. Diagonal would be difficult, I think you would run out of characters. I'm working on another version of the scroller using four buffers that doesn't have any flickering problems. I will post the source code when it's working. I was thinking along the lines of simulating a diagonal scroll by scrolling vertically then horizontally.. or horizontlly then vertically. Looking forward to seeing how you are working the magic Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2746174 Share on other sites More sharing options...
Asmusr Posted May 15, 2013 Author Share Posted May 15, 2013 I have improved my scrolling algorithm, and it's now flawless on real TI-99/4A. Could someone let me know how it looks on a 9918A, please? http://www.youtube.com/watch?v=0_Dtz2F5cIk Don't look at the jerky video, try it on hardware or at least in Classic99! I have attached a zip file with a disk image (use Editor/Assembler option 3 to run DSK1.SCO) and the source code (assemble with WinAsm99). When running the demo, use the joystick to control the ship. Note that the map wraps around after a while. I'm working on some (quite lengthy) notes that I can post if you're interested in how the algorithm works. Spacescrl.zip 5 Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754408 Share on other sites More sharing options...
+retroclouds Posted May 15, 2013 Share Posted May 15, 2013 Impressive! Absolutely, please share your notes. How much RAM does the demo need? Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754412 Share on other sites More sharing options...
Asmusr Posted May 15, 2013 Author Share Posted May 15, 2013 It uses >42B2 bytes. I have attached my notes, I warned you they were long! Please let me know if anything is unclear or incorrect, or you have suggestions for how the algorithm could be improved. scroll.txt 3 Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754421 Share on other sites More sharing options...
sometimes99er Posted May 15, 2013 Share Posted May 15, 2013 Awesome. Love it. Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754500 Share on other sites More sharing options...
matthew180 Posted May 16, 2013 Share Posted May 16, 2013 Fantastic! I would have flipped for a game like that on the 99/4A. That is on par with something Konami would have made. :-) Are you going to make a whole game? Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754585 Share on other sites More sharing options...
Opry99er Posted May 16, 2013 Share Posted May 16, 2013 My God, that is beautiful..... Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754627 Share on other sites More sharing options...
marc.hull Posted May 16, 2013 Share Posted May 16, 2013 I have improved my scrolling algorithm, and it's now flawless on real TI-99/4A. Could someone let me know how it looks on a 9918A, please? http://www.youtube.com/watch?v=0_Dtz2F5cIk Don't look at the jerky video, try it on hardware or at least in Classic99! I have attached a zip file with a disk image (use Editor/Assembler option 3 to run DSK1.SCO) and the source code (assemble with WinAsm99). When running the demo, use the joystick to control the ship. Note that the map wraps around after a while. I'm working on some (quite lengthy) notes that I can post if you're interested in how the algorithm works. Absolutely fucking brilliant ! (pardon my language.) The file runs perfect on a real console and the code converts to a little over 16K of memory image. Only problem I see is that it is not a complete game ..... I assume this is compiled BASIC ? If so I am doubly impressed. Good job RasmusM. I hope you continue on. Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754642 Share on other sites More sharing options...
+InsaneMultitasker Posted May 16, 2013 Share Posted May 16, 2013 I have improved my scrolling algorithm, and it's now flawless on real TI-99/4A. Could someone let me know how it looks on a 9918A, please? Wow. That is awesome! How do you keep the stars fixed in their position?? Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754679 Share on other sites More sharing options...
Asmusr Posted May 16, 2013 Author Share Posted May 16, 2013 The file runs perfect on a real console and the code converts to a little over 16K of memory image. Only problem I see is that it is not a complete game ..... I assume this is compiled BASIC ? If so I am doubly impressed. It's 100% assembly language. I can't imagine how this would be possible compiled basic! I'm thinking about turning it into a game, of course, but there are some problems: 1. Apparently you can only rely on 8 sprites working in this mode because of a weird bug, but I could choose to ignore that. 2. I think a have almost run out of clock cycles. To make this a game I would probably have to limit the scrolling to every second frame, but that might not be so bad. 3. Time... I have 3 small children. How do you keep the stars fixed in their position?? I use the undocumented backdrop plane :-) No really, I just add them to the name table after scrolling if the positions are unoccupied. A simple trick with a nice result. Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754681 Share on other sites More sharing options...
RobertLM78 Posted May 16, 2013 Share Posted May 16, 2013 Awesome demos RasmusM . Impressive what these machines can be made to do. Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754705 Share on other sites More sharing options...
Mobsie Posted May 16, 2013 Share Posted May 16, 2013 WOW, thank you for the nice tech. text. Quote Link to comment https://forums.atariage.com/topic/210888-smooth-scrolling/#findComment-2754735 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.