Jump to content
Tickled_Pink

So - what is DPC+?

Recommended Posts

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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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
  • Like 3

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...