| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Automatic regression testing
At the moment what I do for automatic regression of multiplexor code is to have an external process capture thousands of lossless screenshots of the VICE window as it is running.
Meanwhile the C64 code will run through an endless cycle of animating sprite formations while mainline running code that uses different length opcodes across the frames. This is to ensure that any raster IRQs are triggered at different scan line cycle offsets. It basically causes jitter to make sure the multiplexor doesn't unexpectedly cause visual bugs when being used.
I then post process these screenshots and have some code to detect any sprite bugs, it then detects the frame count which is displayed in the background at certain points.
However this isn't that optimal because it means I have to re-run the test and advance to that frame count to try to debug the code. It also takes ages since VICE has to be running and generating non-warp video output to a Window.
What would be ideal is to be able to run VICE in warp console mode and to be able to reliably do the following:
Every frame:
Break point at the bottom of the screen.
Dump a BMP.
Wait for the external tool to regression test.
If there is a problem save a snapshot with CPU execution history that contains exact cycle counts.
Continue the test and keep logging test data.
Does anybody else do this with the Windows build? |
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
is it not possible to note frame number, then get the code in the state (without incrementally getting there) which displays that buggy frame ? maybe there's a way to dump memory data too besides the screenshots. |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
To know frame number is not just possible to divide "total cycles" by "cycles per frame"?
If is possible to "report" the "total cycle used" we can know exactly where "we are" if a brk occour.
But maybe we need to know how many cycles are used from startup to "when" first cycle is used by vic... |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: is it not possible to note frame number, then get the code in the state (without incrementally getting there) which displays that buggy frame ? maybe there's a way to dump memory data too besides the screenshots.
Possibly, jitter makes it tricky. |
| |
WVL
Registered: Mar 2002 Posts: 902 |
What happened here? Some (a lot) of posts went missing :-) |
| |
iAN CooG
Registered: May 2002 Posts: 3194 |
nazimod failure, apparently. previous OT posts removed while the internal counter is still counting them all =) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
What I did in the end was to modify the emulator's VIC code to detect sprite register writes that would cause visual bugs and trigger a snapshot save.
This then allows the machine state to be debugged at my leisure. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
interesting, how do you do that exactly ? break if sprite pointer changes during its display ? |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: interesting, how do you do that exactly ? break if sprite pointer changes during its display ?
Basically yes. The emulator code knows if there an update to the sprites during the their display and update cycles so I can force a full dump at that point. |