Jump to content

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?

Link to comment
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.

Link to comment
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?

Link to comment
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.

   dcp SpriteTemp
   bcs DoDraw
   lda #0
   .byte $2C
   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:
   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
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...