Vamiga: after speaking bravely he crashes

Created on 13 May 2019  路  14Comments  路  Source: dirkwhoffmann/vAmiga

image

debug output

Current configuration:

   AmigaModel: Amiga 500
realTimeClock: no
          df0: yes Drive 3.5" DD
          df1: no Drive 3.5" DD
          df2: no Drive 3.5" DD
          df3: no Drive 3.5" DD

         warp: 0 (82763776) (77992)
Assertion failed: (IS_EVEN(addr)), function peek16, 
file .../vAmiga/Amiga/Computer/Memory.cpp, line 395.

points to here ... addr is not even ... ends with 1.

uint16_t
Memory::peek16(uint32_t addr)
{
    if (!IS_EVEN(addr)) {
        debug("PC: %X peek16(%X) memSrc = %d\n", _cpu->getPC(), addr, memSrc[(addr & 0xFFFFFF) >> 16]);
        _amiga->dump();
    }

    assert(IS_EVEN(addr));

image

I wanted to look at the root cause but I have no good idea. I traveled the stacktrace but this strategy does not really help here. Maybe it is some DMA scheduling problems ? Because when it crashes the mouse pointer sprite gets scrambled too?

Bug

Most helpful comment

Haven't looked at the crash yet, but I'm making progress on interlace mode:

Screenshot 2019-05-17 at 12 42 07

All 14 comments

Up to now, I simply assumed that memory is accessed at even addresses only (as far as I know, the 68000 CPU should trigger an internal exception, trap, or irq if the address is odd. Only the newer 68x models can handle odd addresses).

Is the crash deterministic? If yes, I can run it against SAE and see what happens there. Either the odd address should not be odd (because of an earlier bug) or the CPU reaction is configured wrong.

Yes deterministic. Always the same odd address. Really odd. 馃お

Hmm, I cannot reproduce this either. I get some weird graphics errors instead:

Screenshot 2019-05-14 at 13 59 29

Which Kickstart and which Workbench did you use? I guess we're using two different versions.

Regarding the address violation issue, I've seen that I have boundary checks disabled in Musashi (which should be enabled). Before enabling it, I would like to check in SAE if the address violation happens there, too.

Kickstart 1.3, Workbench 1.2 .... I got the same graphics errors exactly in the moment of the crash plus the assertion triggered. Before the crash he speaks out loud and clearly "I am an Amiga". It sounds absolutely authentic in my opinion. Maybe we should command him to say "I promise I will never crash again" ???

Hmmmm, my WB is called "A2000 WB 1.2 D". Interestingly, my system folder is different to yours:

Screenshot 2019-05-14 at 18 08 03

I had to load the "Say" app from the Extras disk.

steps to reproduce:

  1. kickstart 1.3
  2. insert the disk
    it boots in interlace
  3. open preferences
  4. interlace -> off
  5. save
  6. power amiga off and on (use the icons in the bottom left of vAmiga)
    it boots in non interlace now
  7. open system drawer
  8. let him say "I am an amiga"
    --> isEven assertion is violated

OK, I can reproduce it now. I'll check if the address violation also happens in SAE.

Oups, interleave mode seems to need some attention, too 馃槻.

Screenshot 2019-05-15 at 11 47 45

BTW, after disabling interlace mode, you can use "Df0->Export ..." to save the modified disk to a new ADF file.

Haven't looked at the crash yet, but I'm making progress on interlace mode:

Screenshot 2019-05-17 at 12 42 07

Do you succeed in loading the Pawn hi-res intro screen ?

Do you succeed in loading the Pawn hi-res intro screen ?

Well, not really 馃槀:

Screenshot 2019-05-17 at 12 59 32

Oh, I see, Pawn is using HAM mode which is not implemented, yet.

Screenshot 2019-05-17 at 13 07 52

The music plays nicely though...

Holy cow... HAM and Interlace at the same time !!! High load pressure on the chipram DMA ;-)

High load pressure on the chipram DMA ;-)

Actually, it doesn't increase the load. If interlace is on, the Amiga draws 25 long frames and 25 short frames per sec (short frame means one rasterline less). If interlace is off, it draws 50 long frames.

HAM only affects the way Denise synthesises RGB values. The amount of DMA data remains unchanged.

Fixed. Was caused by the "Blitter always runs when DMA gets enabled" bug.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

dirkwhoffmann picture dirkwhoffmann  路  3Comments

dirkwhoffmann picture dirkwhoffmann  路  3Comments

Gianmarco72 picture Gianmarco72  路  4Comments

bnice picture bnice  路  4Comments

dirkwhoffmann picture dirkwhoffmann  路  4Comments