mamedev / mame

MAME
https://www.mamedev.org/
Other
8.06k stars 2.01k forks source link

mGBA's DMA tests fail #2913

Open fuel-pcbox opened 6 years ago

fuel-pcbox commented 6 years ago

The number of mGBA test suite tests that MAME currently passes is 972/1256. By contrast, VGBA passes 998 tests.

The test binaries can be found here: https://forums.mgba.io/showthread.php?tid=18

Some of the failing tests are 0 Imm H = ROM/= IWRAM, the 1, 2, and 3 versions of the same test, and some others.

MooglyGuy commented 6 years ago

I have edited your comment to remove unnecessarily inflammatory wording and statements of opinion that are of no value in a bug report. Consider this a warning and a guideline for future bug reports.

MooglyGuy commented 6 years ago

Also, thank you for the metrics, the link to the test binaries, and the information on which tests are failing. This is useful.

angelosa commented 3 years ago
Memory tests 1179/1552
I/O read tests 20/123
Timing tests 181/1660
Timer count-up tests 92/936
Timer IRQ tests 9/90
Shifter tests 132/140
Carry tests 93/93
Multiply long tests 52/72
BIOS math tests 615/615
DMA tests 972/1256
edge case 0/10
Video tests 3/5 apparently (layer toggle and OAM update delay)

Based off r71 on 0.228

angelosa commented 3 years ago

This is a typical example of a "spike" as I intend it in the MAME project management context:

  1. This has more sense in a possible CI scenario standalone tester rather than an issue. I have otherwise no idea about how to deal with mGBA test suite version pinning as a requirement first off, never mind the rest.
  2. I fail to find a good candidate for assignment (too many areas of interest).

@cuavas your take?

cuavas commented 3 years ago

It’s nice to know we’re failing some of the tests, but I’m not sure there’s much we can do at the moment besides just keeping the bug open to acknowledge that.

In practical terms, it’s going to be hard to get a bunch of GBA stuff from 90% working to 100% accurate until we can emulate dynamic bus sizing and burst I/O for the CPU and DMA controller. For example, EEPROM cartridges depend on the fact that the cartridge won’t be deselected during a DMA operation while the CPU is running code from internal RAM.

It’s probably not worth assigning to anyone at the moment – it needs someone motivated to take on a very involved task.