Tickled_Pink Posted July 24, 2016 Share Posted July 24, 2016 Just seen the Scramble posts and mention of something called DPC+ and the use of an ARM has piqued my interest. I've had a quick look around to see if I could find more information but I'm no closer to understanding it. My problem is simple - I don't know what DPC was or what DPC+ is. Any pointers? Quote Link to comment Share on other sites More sharing options...
CPUWIZ Posted July 24, 2016 Share Posted July 24, 2016 DPC stands for "David Patrick Crane" and it is a chip he developed for Pitfall II, that assists with audio. DPC+ is something batari cooked up, it does what his chip does and then some (it is emulated via ARM). I'll let Spiceware explain the rest to you. Quote Link to comment Share on other sites More sharing options...
Papa Posted July 25, 2016 Share Posted July 25, 2016 I really like DPC+. To understand what it does for a VBB programmer we would first talk about the kernel. In this case it offers up a basic set of tools for programming your game. The standard kernel has many options but still many limitations. It can only display two sprites and loses missiles as you add colors. The multisprite kernel mirrors the player 1 (second) sprite allowing for five more sprites, resolution control with pfheight, and loses those pesky lines that top things in the standard kernel. You can only use mirrored playfields with it. DPC+ allows for much higher resolution control , ten sprites, includes inline rand built in (you don't have to jump away to re-seed your randomizer), one pixel per line sprites (others are two pixels per line). It eats up a couple of banks to work, munches memory for breakfast with all of it's high resolution playfields AND backgrounds, and may seem intimidating setting up a programmer with bankswitching out of the gate. This is what it means from the perspective of this VBB programmer. Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted July 25, 2016 Share Posted July 25, 2016 There's often confusion when batari Basic programmers talk about DPC+ in the regular programming forum because they really mean the "bB DPC+ Kernel", which is something different than DPC+. See reply 17 for more info. 1 Quote Link to comment Share on other sites More sharing options...
Tickled_Pink Posted July 25, 2016 Author Share Posted July 25, 2016 So it's a co-pro that sits on a cartridge? When I saw the screenshots for Scramble I thought it was just a mock-up or a 7800 game. Just gone through the blog and still not 100% certain of how it works. It looks a little bit like it transforms the 2600 into something that has the architecture of the Jag - with the 6507 mainly handling I/O and passing the information to the ARM, which does most of the work? Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted July 25, 2016 Share Posted July 25, 2016 Yep. Same concept as DPC from Activision, just implemented with newer technology. The coprocessor does not have access to the internals of the Atari so the 6507 still has to handle input (joysticks, console switches, etc) and output (audio, video). The coprocessor makes it so the 6507 can accomplish more on every scanline, resulting in getter graphics (and audio). For an example on how this works DoDraw is a common way to draw a multicolored sprite. It takes 26 cycles of time per scanline, leaving 50 cycles for updating other bits of graphics(playfield, the other sprite, missiles, etc) on the same scanline. lda #SPRITEHEIGHT dcp SpriteTemp bcs DoDraw lda #0 .byte $2C DoDraw lda (GfxPtr),Y sta GRP0 ;+18 cycles lda (ColorPtr),y sta COLUP0 With DPC Activision was able to get that down to just 14 cycles, leaving 62 cycles for other graphics: LDA DF0DATAW ; 4 STA GRP0 ; 3 LDA DF1DATA ; 4 STA COLUP0 ; 3 With DPC+ we got that down to 10 cycles, leaving 66 for other graphics: LDA #<DF0DATAW ; 2 STA GRP0 ; 3 LDA #<DF1DATA ; 2 STA COLUP0 ; 3 My finished games Stay Frosty 2 and Space Rocks both utilized DPC+. WIPs Draconian(the parallax multicolor star-field still makes me giddy whenever I play this one), Frantic and Timmy! were developed using DPC+, but are probably going to be rebooted with the more advanced bus-stuffing scheme that we're currently working on. With bus-stuffing we can update a multicolor sprite in just 6 cycles: STY GRP0 ; 3 STY COLUP0 ; 3 3 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted July 25, 2016 Share Posted July 25, 2016 Very nice explanation. You should also mention that for DPC+, the queues can be set up by the ARM code by using RAM. Which makes them a lot more flexible. Quote Link to comment Share on other sites More sharing options...
Tickled_Pink Posted July 25, 2016 Author Share Posted July 25, 2016 Indeed. Excellent explanation. Thanks. I'll have to find some time to try it out myself. 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.