lucienEn Posted November 29, 2022 Share Posted November 29, 2022 Hi, I noticed Circus Convoy has a few sprites that have 2 colors on same scanline together with the player sprite on the same scanline with a 3rd color. How is that achieved? Can't be playfield since the resolution is higher. Maybe it's by alternating 2 sprites but I don't see flickering. For example the giraffe has 2 colors with the player on the same scanlines. Also the first screen shows a chameleon that appears to be 28 pixel wide but with full resolution yet player sprites are only 8 wide with that resolution. See 1 Quote Link to comment Share on other sites More sharing options...
+splendidnut Posted November 29, 2022 Share Posted November 29, 2022 On the Atari 2600, the Player/Missile graphics can be switched into duplicate / triplicate mode. Sprite layout can be planned out to take advantage of that fact. On the Chameleon screen: The Chameleon is probably using the two available Player sprites set to duplicate mode and interwoven with each other. Also, there's a couple of coloring tricks going on. The wheels on the trailer... two sprites in duplicate mode. Those tumble weeds at the bottom are using triplicate sprite mode. Basically, Circus Convoy is loaded with graphics tricks. They probably used every trick in the metaphorical book. 3 Quote Link to comment Share on other sites More sharing options...
lucienEn Posted November 29, 2022 Author Share Posted November 29, 2022 (edited) You still would have only 2 colors since missile/ball/player all share same color. Switching color during scanline seems also not possible since there is not enough time over few pixels. Perhaps the Playfield can be 3rd color but that's min. 4 pixel wide. Unless it's indeed cleverly under the sprite but the giraffe is at 1 line only 3 pixel wide yet with 2 colors. Also note the Chameleon is assymetrical so replicating would also require changing the player bits and not enough cycles to do that it seems. Let me play with the Stella debugger and override colors feature to see what is what. Edited November 29, 2022 by lucienEn Quote Link to comment Share on other sites More sharing options...
alex_79 Posted November 29, 2022 Share Posted November 29, 2022 4 minutes ago, lucienEn said: missile/ball/player all share same color. The ball shares color with playfield, not with missiles and players. Also note that the players can also be set to 2x or 4x size and the missiles/ball also to 8x size. Plus each object can be repositioned on subsequent scanlines, and they can be interleaved. Number of copies and size can be changed on each scanlines too. Objects with lower priority will only be seen through the "holes" of the ones that are on top of them, creating what seems a high res multicolor sprite. 8 minutes ago, lucienEn said: Let me play with the Stella debugger and override colors feature to see what is what. If you have the rom, then just enable the "fixed debug colors" (ALT+"."), and/or turn each object on or off with ALT+ one of the letters from "Z" to "N" on the keyboard. 2 Quote Link to comment Share on other sites More sharing options...
+splendidnut Posted November 29, 2022 Share Posted November 29, 2022 11 minutes ago, lucienEn said: Switching color during scanline seems also not possible since there is not enough time over few pixels. Switching colors during a scanline is indeed possible. Just requires careful planning... The first screen of Sega's Congo Bongo does it. 16 minutes ago, lucienEn said: Also note the Chameleon is assymetrical so replicating would also require changing the player bits and not enough cycles to do that it seems. Here again, it is indeed possible.... Think about the 6-digit scores many games have: Two sprites, triplicated, with 6 graphics changes per line. 2 Quote Link to comment Share on other sites More sharing options...
LatchKeyKid Posted November 29, 2022 Share Posted November 29, 2022 19 minutes ago, splendidnut said: Switching colors during a scanline is indeed possible. Just requires careful planning... The first screen of Sega's Congo Bongo does it. Here again, it is indeed possible.... Think about the 6-digit scores many games have: Two sprites, triplicated, with 6 graphics changes per line. Is that part of the reason why (other than obviously asthetics) typically no other changes are made on the scanlines with scores such as playfield, ball, and missle changes that would also suck up CPU cycles? Basically all you're doing those lines is the score? Quote Link to comment Share on other sites More sharing options...
+splendidnut Posted November 29, 2022 Share Posted November 29, 2022 For the most part, yes. There are still few little tricks that can be done to add something else to the score area... but it requires a bit more of effort and careful planning to accomplish. Quote Link to comment Share on other sites More sharing options...
lucienEn Posted November 29, 2022 Author Share Posted November 29, 2022 I took some screenshots from debug colors. The giraffe I think is clear now since it's indeed ball color with just 1 sprite (no small feat still). The chameleon is still not very clear to me since it only shows 2 sprites and they don't look replicated: 2 Quote Link to comment Share on other sites More sharing options...
alex_79 Posted November 29, 2022 Share Posted November 29, 2022 15 minutes ago, lucienEn said: The chameleon is still not very clear to me since it only shows 2 sprites and they don't look replicated: They're not duplicated, but resized and repositioned on each scanline. Single step through the code in the debugger while looking at the TIA tab to see exactly how. 1 Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted November 29, 2022 Share Posted November 29, 2022 52 minutes ago, lucienEn said: The chameleon is still not very clear to me since it only shows 2 sprites and they don't look replicated: Looks like the same thing I did with the Scarlet the Dragon in Medieval Mayhem: each player set for 2x size each player is a different color each player shifted left/right over successive scanlines. They did add changing the colors of the players over successive scanlines. 1 Quote Link to comment Share on other sites More sharing options...
LatchKeyKid Posted November 29, 2022 Share Posted November 29, 2022 3 hours ago, lucienEn said: I took some screenshots from debug colors. The giraffe I think is clear now since it's indeed ball color with just 1 sprite (no small feat still). The chameleon is still not very clear to me since it only shows 2 sprites and they don't look replicated: Thanks! A while back I asked for examples of using the ball or missile to add color and I don't believe this homebrew was mentioned as an example. Quote Link to comment Share on other sites More sharing options...
LatchKeyKid Posted November 29, 2022 Share Posted November 29, 2022 (edited) 2 hours ago, SpiceWare said: Looks like the same thing I did with the Scarlet the Dragon in Medieval Mayhem: each player set for 2x size each player is a different color each player shifted left/right over successive scanlines. They did add changing the colors of the players over successive scanlines. Do you change the player sprite further at any point above double width to accomplish the "length" of the dragon or was double enough to accomplish this? It's very nice sprite work regardless! Edited November 29, 2022 by LatchKeyKid Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted November 29, 2022 Share Posted November 29, 2022 48 minutes ago, LatchKeyKid said: Do you change the player sprite further at any point above double width to accomplish the "length" of the dragon or was double enough to accomplish this? Just 2x with line-by-line shifting. Manipulating the player's size and/or shifting the position line-by-line has been used to great effect for a long time, such as in Boxing and Dolphin: I also use it for the largest asteroids in Space Rocks, and the space stations in Draconian 3 Quote Link to comment Share on other sites More sharing options...
lucienEn Posted November 29, 2022 Author Share Posted November 29, 2022 (edited) 8 hours ago, SpiceWare said: Looks like the same thing I did with the Scarlet the Dragon in Medieval Mayhem: each player set for 2x size each player is a different color each player shifted left/right over successive scanlines. They did add changing the colors of the players over successive scanlines. Thanks! Getting close as I didn't think about shifting the next scanline so you still have illusion of 1 pixel resolution. However here player 1 is 28 pixel wide (yellow, see below). Double size would be only 16 pixels. However debugging this more it's actually changing the player sizes on each scanline. Pretty cool trick and still lot of work to convert into code (is there a tool for that?). I also noticed when the player is moving out of the center to the sides, the colors are removed for some reason (see 2nd image), not sure yet why: Scanline: 130 - P0 NuSiz = 0: 1 copy - P1 NuSiz = 5: 2x (16) sized player Scanline: 137 - P0 NuSiz = 0: 1 copy - P1 NuSiz = 7: 4x (32) sized player Scanline: 147 - P0 NuSiz = 7: 4x (32) sized player - P1 NuSiz = 7: 4x (32) sized player Scanline: 148 - P0 NuSiz = 5: 2x (16) sized player - P1 NuSiz = 7: 4x (32) sized player Edited November 29, 2022 by lucienEn Quote Link to comment Share on other sites More sharing options...
lucienEn Posted November 29, 2022 Author Share Posted November 29, 2022 8 hours ago, alex_79 said: They're not duplicated, but resized and repositioned on each scanline. Single step through the code in the debugger while looking at the TIA tab to see exactly how. Yes that's it:-). Looking at all complexity of this, would be great if someone could come up with editor that could convert this into code but not trivial with the limitations. Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted November 30, 2022 Share Posted November 30, 2022 5 hours ago, lucienEn said: is there a tool for that? I have a few web based graphic tool converters on my Atari VCS/2600 page. The Two Color Sprite Converter is what I used to convert the dragon graphics. On the first screen copy/paste one of the test URLS into the first field then click Load Image: On the second screen specify which color is used for which player. If text is hard to read click Change Colors to step thru a number of screen & text colors. Click Show Results. Result screen: Scroll to bottom to see results. Browser specs have changed a bit, so they all ended up on a single, and very long, line of text Use your browsers "view page source" feature to see it as intended: ImageA6 .byte zz________ ; 0 .byte zz________ ; 1 .byte zz________ ; 2 .byte zz________ ; 3 .byte zz________ ; 4 .byte zz________ ; 5 .byte zz________ ; 6 .byte zz________ ; 7 .byte zz________ ; 8 .byte zz________ ; 9 .byte zz________ ; 10 .byte zz________ ; 11 .byte zz________ ; 12 .byte zz________ ; 13 .byte zz________ ; 14 .byte zz___XXX_X ; 15 .byte zz_X_XX___ ; 16 .byte zzXXXX____ ; 17 .byte zzX_______ ; 18 .byte zzXX______ ; 19 .byte zzXXXX____ ; 20 .byte zzXX______ ; 21 .byte zzXX______ ; 22 .byte zzX_______ ; 23 .byte zzXX______ ; 24 .byte zzXX______ ; 25 .byte zzXXX_____ ; 26 .byte zzXXXXX___ ; 27 .byte zzXXXXXX_X ; 28 .byte zzXXX__XX_ ; 29 .byte zzXXXX___X ; 30 .byte zzXXX_____ ; 31 .byte zzXX_X____ ; 32 .byte zzXX_XX___ ; 33 .byte zz_XX_X_X_ ; 34 .byte zzXX__XX__ ; 35 .byte zzX_X_X___ ; 36 .byte zzX__XXX__ ; 37 .byte zzXX_XX___ ; 38 .byte zzXXX_____ ; 39 .byte zz________ ; 40 .byte zz________ ; 41 .byte zz________ ; 42 .byte zz________ ; 43 ImageB6 .byte zz________ ; 0 .byte zz________ ; 1 .byte zz________ ; 2 .byte zz________ ; 3 .byte zz________ ; 4 .byte zz________ ; 5 .byte zz________ ; 6 .byte zz________ ; 7 .byte zz________ ; 8 .byte zz________ ; 9 .byte zz________ ; 10 .byte zz________ ; 11 .byte zz________ ; 12 .byte zz________ ; 13 .byte zz______XX ; 14 .byte zz_XX_XX__ ; 15 .byte zzXX_XX___ ; 16 .byte zzX_X_____ ; 17 .byte zzXX_XX___ ; 18 .byte zzXXX_X___ ; 19 .byte zzXXX_____ ; 20 .byte zzXX______ ; 21 .byte zzXXX_____ ; 22 .byte zzX__X____ ; 23 .byte zzXX______ ; 24 .byte zzX__X____ ; 25 .byte zzX_______ ; 26 .byte zzX_______ ; 27 .byte zz________ ; 28 .byte zzXX______ ; 29 .byte zzXXX_____ ; 30 .byte zzXXX_____ ; 31 .byte zzX__X____ ; 32 .byte zz________ ; 33 .byte zzX_______ ; 34 .byte zz________ ; 35 .byte zzX_______ ; 36 .byte zz________ ; 37 .byte zzX_______ ; 38 .byte zz________ ; 39 .byte zz________ ; 40 .byte zz________ ; 41 .byte zz________ ; 42 .byte zz________ ; 43 Shift6LtoR .byte HMOVE_0 | HMOVE_0 >> 4 ; 0 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 1 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 2 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 3 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 4 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 5 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 6 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 7 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 8 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 9 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 10 x0= 0 x1= 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 11 x0= 0 x1= 0 .byte HMOVE_R3 | HMOVE_0 >> 4 ; 12 x0= 3 x1= 0 .byte HMOVE_R7 | HMOVE_0 >> 4 ; 13 x0=10 x1= 0 .byte HMOVE_R7 | HMOVE_R6 >> 4 ; 14 x0=17 x1= 6 .byte HMOVE_R7 | HMOVE_R6 >> 4 ; 15 x0=24 x1=12 .byte HMOVE_R6 | HMOVE_R4 >> 4 ; 16 x0=30 x1=16 .byte HMOVE_L2 | HMOVE_R3 >> 4 ; 17 x0=28 x1=19 .byte HMOVE_R4 | HMOVE_L5 >> 4 ; 18 x0=32 x1=14 .byte HMOVE_0 | HMOVE_R4 >> 4 ; 19 x0=32 x1=18 .byte HMOVE_L2 | HMOVE_R2 >> 4 ; 20 x0=30 x1=20 .byte HMOVE_0 | HMOVE_R3 >> 4 ; 21 x0=30 x1=23 .byte HMOVE_L2 | HMOVE_L1 >> 4 ; 22 x0=28 x1=22 .byte HMOVE_R1 | HMOVE_R2 >> 4 ; 23 x0=29 x1=24 .byte HMOVE_L3 | HMOVE_L2 >> 4 ; 24 x0=26 x1=22 .byte HMOVE_L2 | HMOVE_0 >> 4 ; 25 x0=24 x1=22 .byte HMOVE_L2 | HMOVE_L2 >> 4 ; 26 x0=22 x1=20 .byte HMOVE_L6 | HMOVE_R6 >> 4 ; 27 x0=16 x1=26 .byte HMOVE_L2 | HMOVE_0 >> 4 ; 28 x0=14 x1=26 .byte HMOVE_L1 | HMOVE_L7 >> 4 ; 29 x0=13 x1=19 .byte HMOVE_L1 | HMOVE_0 >> 4 ; 30 x0=12 x1=19 .byte HMOVE_0 | HMOVE_L1 >> 4 ; 31 x0=12 x1=18 .byte HMOVE_L1 | HMOVE_L4 >> 4 ; 32 x0=11 x1=14 .byte HMOVE_0 | HMOVE_0 >> 4 ; 33 x0=11 x1=14 .byte HMOVE_L3 | HMOVE_L1 >> 4 ; 34 x0= 8 x1=13 .byte HMOVE_L6 | HMOVE_0 >> 4 ; 35 x0= 2 x1=13 .byte HMOVE_L1 | HMOVE_L2 >> 4 ; 36 x0= 1 x1=11 .byte HMOVE_L1 | HMOVE_0 >> 4 ; 37 x0= 0 x1=11 .byte HMOVE_0 | HMOVE_L2 >> 4 ; 38 x0= 0 x1= 9 .byte HMOVE_R2 | HMOVE_0 >> 4 ; 39 x0= 2 x1= 9 .byte HMOVE_0 | HMOVE_0 >> 4 ; 40 x0= 2 x1= 9 .byte HMOVE_0 | HMOVE_0 >> 4 ; 41 x0= 2 x1= 9 .byte HMOVE_0 | HMOVE_0 >> 4 ; 42 x0= 2 x1= 9 .byte HMOVE_0 | HMOVE_0 >> 4 ; 43 x0= 2 x1= 9 Shift6RtoL .byte HMOVE_0 | HMOVE_0 >> 4 ; 0 .byte HMOVE_0 | HMOVE_0 >> 4 ; 1 .byte HMOVE_0 | HMOVE_0 >> 4 ; 2 .byte HMOVE_0 | HMOVE_0 >> 4 ; 3 .byte HMOVE_0 | HMOVE_0 >> 4 ; 4 .byte HMOVE_0 | HMOVE_0 >> 4 ; 5 .byte HMOVE_0 | HMOVE_0 >> 4 ; 6 .byte HMOVE_0 | HMOVE_0 >> 4 ; 7 .byte HMOVE_0 | HMOVE_0 >> 4 ; 8 .byte HMOVE_0 | HMOVE_0 >> 4 ; 9 .byte HMOVE_0 | HMOVE_0 >> 4 ; 10 .byte HMOVE_0 | HMOVE_0 >> 4 ; 11 .byte HMOVE_L3 | HMOVE_0 >> 4 ; 12 .byte HMOVE_L7 | HMOVE_0 >> 4 ; 13 .byte HMOVE_L7 | HMOVE_L6 >> 4 ; 14 .byte HMOVE_L7 | HMOVE_L6 >> 4 ; 15 .byte HMOVE_L6 | HMOVE_L4 >> 4 ; 16 .byte HMOVE_R2 | HMOVE_L3 >> 4 ; 17 .byte HMOVE_L4 | HMOVE_R5 >> 4 ; 18 .byte HMOVE_0 | HMOVE_L4 >> 4 ; 19 .byte HMOVE_R2 | HMOVE_L2 >> 4 ; 20 .byte HMOVE_0 | HMOVE_L3 >> 4 ; 21 .byte HMOVE_R2 | HMOVE_R1 >> 4 ; 22 .byte HMOVE_L1 | HMOVE_L2 >> 4 ; 23 .byte HMOVE_R3 | HMOVE_R2 >> 4 ; 24 .byte HMOVE_R2 | HMOVE_0 >> 4 ; 25 .byte HMOVE_R2 | HMOVE_R2 >> 4 ; 26 .byte HMOVE_R6 | HMOVE_L6 >> 4 ; 27 .byte HMOVE_R2 | HMOVE_0 >> 4 ; 28 .byte HMOVE_R1 | HMOVE_R7 >> 4 ; 29 .byte HMOVE_R1 | HMOVE_0 >> 4 ; 30 .byte HMOVE_0 | HMOVE_R1 >> 4 ; 31 .byte HMOVE_R1 | HMOVE_R4 >> 4 ; 32 .byte HMOVE_0 | HMOVE_0 >> 4 ; 33 .byte HMOVE_R3 | HMOVE_R1 >> 4 ; 34 .byte HMOVE_R6 | HMOVE_0 >> 4 ; 35 .byte HMOVE_R1 | HMOVE_R2 >> 4 ; 36 .byte HMOVE_R1 | HMOVE_0 >> 4 ; 37 .byte HMOVE_0 | HMOVE_R2 >> 4 ; 38 .byte HMOVE_L2 | HMOVE_0 >> 4 ; 39 .byte HMOVE_0 | HMOVE_0 >> 4 ; 40 .byte HMOVE_0 | HMOVE_0 >> 4 ; 41 .byte HMOVE_0 | HMOVE_0 >> 4 ; 42 .byte HMOVE_0 | HMOVE_0 >> 4 ; 43 ;End 6 3 1 Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted November 30, 2022 Share Posted November 30, 2022 3 hours ago, lucienEn said: I also noticed when the player is moving out of the center to the sides, the colors are removed for some reason (see 2nd image), not sure yet why Camouflage - chameleons change color to blend into their surroundings. 2 Quote Link to comment Share on other sites More sharing options...
Ecernosoft Posted January 2 Share Posted January 2 That game (circus convoy ) is basically an entry into the demo scene. 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.