Vamiga: Bugs in Paccer

Created on 19 May 2019  路  6Comments  路  Source: dirkwhoffmann/vAmiga

All bugs that have been spotted so far are related to sprites:

  • Upper right sprite shouldn't be visible on startup (outside visible range)
  • Sprite colors are wrong (all ghosts are drawn with the same color, Pacman should be yellow)
  • From time to time, there are graphics glitches (Sprites do not get switched off after they were drawn. They are drawn in vertical stripes until the vblank area is reached).

Screenshot 2019-05-19 at 09 52 06

Bug Priority-High

Most helpful comment

No multiplayer, but the best PacMan clone ever. I've implemented it myself exactly 30 years ago (馃槸). This was the time when I learned how to program in C. I remember that I did not exactly understood the difference between x.y and x->y, so I ended up trying all possible combinations until the compiler accepted it 馃槄. It's on Fish 223 (best Fish disk ever 馃槑).

Somebody even made a long play video on Youtube:

https://www.youtube.com/watch?v=gJi6lUTIamw

He really solved all levels 馃槼 (which I always thought to be impossible).

All 6 comments

Sprite colors are fixed.

Screenshot 2019-05-20 at 08 13 37

Is this a multiplayer game?

No multiplayer, but the best PacMan clone ever. I've implemented it myself exactly 30 years ago (馃槸). This was the time when I learned how to program in C. I remember that I did not exactly understood the difference between x.y and x->y, so I ended up trying all possible combinations until the compiler accepted it 馃槄. It's on Fish 223 (best Fish disk ever 馃槑).

Somebody even made a long play video on Youtube:

https://www.youtube.com/watch?v=gJi6lUTIamw

He really solved all levels 馃槼 (which I always thought to be impossible).

The player in the longplay plays incredibly good. Awesome ! Personally I like the blue level the most... ;-)

Narrowing down graphics bug: Bug usually occurs when PacMan eats a pill (culprit: sound ?!). In that case, Bitplane DMA gets switched off, but sprite DMA remains:

Screenshot 2019-05-20 at 15 39 47

Todo: Check DMA table handling code.

BTW, the screenshot reveals how the Amiga stores sprites in memory. The first line is the control line containing the trigger coordinates. After that, graphics data follows.

Symptom is due to a huge bug in Agnus::updateJumpTable(int16_t to)

// Build the jump table
uint8_t next = dmaEvent[to+1];
for (int i = to; i >= 0; i--) {
    nextDmaEvent[i] = next;
    if (dmaEvent[i]) next = i;
}

must be:

// Build the jump table
uint8_t next = nextDmaEvent[to];
for (int i = to; i >= 0; i--) {
    nextDmaEvent[i] = next;
    if (dmaEvent[i]) next = i;
}

Considering the severity of this error, it is a miracle that the emulator is already running so well.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

KenDFish picture KenDFish  路  3Comments

dirkwhoffmann picture dirkwhoffmann  路  5Comments

dirkwhoffmann picture dirkwhoffmann  路  3Comments

dirkwhoffmann picture dirkwhoffmann  路  4Comments

dirkwhoffmann picture dirkwhoffmann  路  3Comments