mgba-emu / suite Goto Github PK
View Code? Open in Web Editor NEWGame Boy Advance Test Suite
License: MIT License
Game Boy Advance Test Suite
License: MIT License
This was tested on the 3DS Virtual Console. It has not been tested on actual hardware yet.
Steps to Recreate:
Actual Results:
"Actual" displays a blank page
Expected Results:
For Actual to display the same thing as expected
Hope this helps!
Tests for edge cases on ARM instructions
On hardware (Gameboy player) I always get Flip 1: 0x85 != 0x84. Is the test hardware dependent? Is it a typo in the expected results for the test?
I suppose another variable could be the flash cart I am using, but I only have the one and one piece of hardware, so no other data points. Currently my emulator implementation also gets the same result.
DMA0 source/destination address of 0xF000 gets truncated down to 0x7000 so the SRAM mirror store tests write to OAM. This is fine on the first run as the store tests happen after the load test. However subsequent runs of the memory tests will show fails since the SRAM mirror load tests load from OAM, which is no longer 0 as expected as OAM is not cleared in between tests.
Confirmed this happens on hardware (Gameboy Player.)
I am using the Debian version of WSL and am unable to build the test suite. I get the following error:
grit -ff /home/jsmolka/suite/gfx/videotest.grit -fts -ovideotest
videotest.s
arm-none-eabi-gcc: error: videotest.s: No such file or directory
arm-none-eabi-gcc: fatal error: no input files
compilation terminated.
make[1]: *** [/opt/devkitpro/devkitARM/base_rules:95: videotest.o] Error 1
make: *** [Makefile:110: build] Error 2
When googling it I end up at issue #7 of this test suite. Do you have any idea why this could be happening? If not, would you be kind enough to provide a binary of the latest version (I am still using an older one I found on a forum).
If you run the DMA tests and then try try to run the tests in the title individually, they will fail. This is because they rely on the latched value from the previous 'HBl W -SRAM/=ROM' test. Running them independently after the tests cycle instead uses the value from the 'Imm H V+BIOS/+VRAM' test that normally occurs after it.
This happens because the source address gets truncated down to 0x4328C as channel 0 cannot access ROM. The test also runs a DMA from BIOS, but DMA cannot access that either, so both DMAs access the latched value.
This can also indirectly demonstrate that each channel has its own latched value, as if you go back and run tests for some of the other channels, it will not change the value displayed in the 'Imm W R+0x10/+IWRAM (or EWRAM)' test for channel 0, it will only change after running some other channel 0 tests,
Confirmed on Gameboy Player.
shifter.h
was not checked in with 782805a.
Using devkitARM v47, with environment variables defined as described by devkitPro team
Using GNU Make 3.81 for i386-apple-darwin11.3.0 (also happens with GNU Make 4.2.1 for x86_64-apple-darwin17.0.0)
The following console output has been edited to mask my identity.
$ make
grit -ff ${HOME}/gba-test/gfx/degenerateObjTransform.grit -fts -odegenerateObjTransform
degenerateObjTransform.s
arm-none-eabi-gcc -MMD -MP -MF ${HOME}/gba-test/build/degenerateObjTransform.d -x assembler-with-cpp -mthumb -mthumb-interwork -march=armv4t -mcpu=arm7tdmi -mtune=arm7tdmi -I${HOME}/gba-test/include -I${HOME}/devkitPro/libgba/include -I${HOME}/gba-test/build -c degenerateObjTransform.s -o degenerateObjTransform.o
grit -ff ${HOME}/gba-test/gfx/font.grit -fts -ofont
font.s
arm-none-eabi-gcc -MMD -MP -MF ${HOME}/gba-test/build/font.d -x assembler-with-cpp -mthumb -mthumb-interwork -march=armv4t -mcpu=arm7tdmi -mtune=arm7tdmi -I${HOME}/gba-test/include -I${HOME}/devkitPro/libgba/include -I${HOME}/gba-test/build -c font.s -o font.o
grit -ff ${HOME}/gba-test/gfx/videotest.grit -fts -ovideotest
videotest.s
arm-none-eabi-gcc -MMD -MP -MF ${HOME}/gba-test/build/videotest.d -x assembler-with-cpp -mthumb -mthumb-interwork -march=armv4t -mcpu=arm7tdmi -mtune=arm7tdmi -I${HOME}/gba-test/include -I${HOME}/devkitPro/libgba/include -I${HOME}/gba-test/build -c videotest.s -o videotest.o
arm-none-eabi-gcc: error: videotest.s: No such file or directory
arm-none-eabi-gcc: warning: '-x assembler-with-cpp' after last input file has no effect
arm-none-eabi-gcc: fatal error: no input files
compilation terminated.
make[1]: *** [videotest.o] Error 1
rm font.s degenerateObjTransform.s
make: *** [build] Error 2
In
Line 1284 in 61c916a
instead of checking the actual result of swi B 32
, the test checks the value of swi B 16
. This should be an easy fix, but I don't have access to hardware to verify a fix at the moment.
Add tests for PC-relative instructions in ARM mode.
Some examples include:
LDRH r12,[pc+0x16] E1DFC1B6
, which requires a 2-byte change from B6
to B4
to work on emulator/console.
sbc r12,pc,** E2CFC0** %% R12=PC-** **=C5 on emulator, C7 on console
, which requires different values to create the same result in r12
.
Tests for video rendering
Android: v5.0.2
Emulator: My Boy! Free
Suit version: v0-r19
Issue: After pressing A on either test, it briefly shows 'Testing...' and then it goes back to the menu.
mGBA test suite v0-r66 has a weird issue affecting all emulators (and possibly real hardware) where the results of the DMA and Misc. Edge Case tests look slightly worse after running the Layer Toggle test. On mGBA, 1232 of the 1252 DMA tests and 8 of the 10 Misc. Edge Case tests pass before the Layer Toggle test, then 1216 to 1232 of the 1252 DMA tests and 7 of the 10 Misc. Edge Case tests pass after the Layer Toggle test.
This was tested on the 3DS Virtual Console. It has not been tested on actual hardware yet.
Steps to Recreate:
Actual Results:
Everything displays properly except for the horizontal black lines on the bottom row
Expected Results:
For the horizontal black lines to show up on the bottom row as shown in the "Expected" frame of the test
https://github.com/mgba-emu/suite/blob/master/src/shifter.c#L107
Why does this end up being 0x80000FFF and not 0?
As per gbatek:
Maybe test case for lsl , lsr, asr could be implemented?
Tests for various DMA edge cases
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.