From 3ef59bd2c401d49654b0d003ed83e86e55e245a3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 1 Jun 2020 21:16:21 -0700 Subject: [PATCH 01/20] 3DS: Fix framelimiter on newer citro3d (fixes #1771) --- CHANGES | 1 + src/platform/3ds/main.c | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 522c39a3c..fef76ce8f 100644 --- a/CHANGES +++ b/CHANGES @@ -28,6 +28,7 @@ Emulation fixes: - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/1701) - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/1712) Other fixes: + - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) - All: Improve export headers (fixes mgba.io/i/1738) - ARM Debugger: Clear low bit on breakpoint addresses (fixes mgba.io/i/1764) - CMake: Always use devkitPro toolchain when applicable (fixes mgba.io/i/1755) diff --git a/src/platform/3ds/main.c b/src/platform/3ds/main.c index 9438b6359..25afcd004 100644 --- a/src/platform/3ds/main.c +++ b/src/platform/3ds/main.c @@ -193,14 +193,13 @@ static void _drawStart(void) { return; } frameStarted = true; - u8 flags = 0; - if (!frameLimiter) { + if (frameLimiter) { if (tickCounter + 4481000 > svcGetSystemTick()) { - flags = C3D_FRAME_NONBLOCK; + C3D_FrameSync(); } tickCounter = svcGetSystemTick(); } - C3D_FrameBegin(flags); + C3D_FrameBegin(0); ctrStartFrame(); C3D_FrameDrawOn(bottomScreen[doubleBuffer]); From 90e932e12c0e093d9ff35989bf12778d7ff079eb Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 5 Jun 2020 20:29:31 -0700 Subject: [PATCH 02/20] SM83: Emulate HALT bug --- CHANGES | 1 + include/mgba/internal/sm83/sm83.h | 3 ++- src/gb/gb.c | 5 +++-- src/sm83/sm83.c | 11 +++++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index fef76ce8f..0953fc677 100644 --- a/CHANGES +++ b/CHANGES @@ -27,6 +27,7 @@ Emulation fixes: - GBA Video: Fix disabling OBJWIN in GL renderer (fixes mgba.io/i/1759) - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/1701) - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/1712) + - SM83: Emulate HALT bug Other fixes: - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) - All: Improve export headers (fixes mgba.io/i/1738) diff --git a/include/mgba/internal/sm83/sm83.h b/include/mgba/internal/sm83/sm83.h index e2cf89540..3e36e4e26 100644 --- a/include/mgba/internal/sm83/sm83.h +++ b/include/mgba/internal/sm83/sm83.h @@ -47,7 +47,8 @@ enum SM83ExecutionState { SM83_CORE_MEMORY_STORE = 11, SM83_CORE_READ_PC = 15, SM83_CORE_STALL = 19, - SM83_CORE_OP2 = 23 + SM83_CORE_OP2 = 23, + SM83_CORE_HALT_BUG = 27, }; struct SM83Memory { uint8_t (*cpuLoad8)(struct SM83Core*, uint16_t address); diff --git a/src/gb/gb.c b/src/gb/gb.c index 0aaa6ae54..fda3f214a 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -749,8 +749,9 @@ void GBHalt(struct SM83Core* cpu) { if (!(gb->memory.ie & gb->memory.io[REG_IF] & 0x1F)) { cpu->cycles = cpu->nextEvent; cpu->halted = true; - } else if (gb->model < GB_MODEL_CGB) { - mLOG(GB, STUB, "Unimplemented HALT bug"); + } else { + mLOG(GB, GAME_ERROR, "HALT bug"); + cpu->executionState = SM83_CORE_HALT_BUG; } } diff --git a/src/sm83/sm83.c b/src/sm83/sm83.c index eca13bbb8..28e9e4bd3 100644 --- a/src/sm83/sm83.c +++ b/src/sm83/sm83.c @@ -131,6 +131,17 @@ static void _SM83Step(struct SM83Core* cpu) { case SM83_CORE_STALL: cpu->instruction = _sm83InstructionTable[0]; // NOP break; + case SM83_CORE_HALT_BUG: + if (cpu->irqPending) { + cpu->index = cpu->sp; + cpu->irqPending = false; + cpu->instruction = _SM83InstructionIRQ; + cpu->irqh.setInterrupts(cpu, false); + break; + } + cpu->bus = cpu->memory.cpuLoad8(cpu, cpu->pc); + cpu->instruction = _sm83InstructionTable[cpu->bus]; + break; default: break; } From 1db01d652bedd6aaf80bcb575af05bb66b836230 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 6 Jun 2020 17:24:20 -0700 Subject: [PATCH 03/20] Qt: Fix unmapping zipped ROM (fixes #1777) --- CHANGES | 1 + src/platform/qt/CoreManager.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 0953fc677..b79c97ed4 100644 --- a/CHANGES +++ b/CHANGES @@ -42,6 +42,7 @@ Other fixes: - Qt: Force OpenGL paint engine creation thread (fixes mgba.io/i/1642) - Qt: Fix OpenGL 2.1 support (fixes mgba.io/i/1678) - Qt: Fix static compilation in MinGW (fixes mgba.io/i/1769) + - Qt: Fix unmapping zipped ROM (fixes mgba.io/i/1777) Misc: - 3DS: Clean up legacy initialization (fixes mgba.io/i/1768) - Debugger: Keep track of global cycle count diff --git a/src/platform/qt/CoreManager.cpp b/src/platform/qt/CoreManager.cpp index 6b2580d3c..6b2a64f09 100644 --- a/src/platform/qt/CoreManager.cpp +++ b/src/platform/qt/CoreManager.cpp @@ -65,7 +65,7 @@ CoreController* CoreManager::loadGame(const QString& path) { if (vfOriginal && (size = vfOriginal->size(vfOriginal)) > 0) { void* mem = vfOriginal->map(vfOriginal, size, MAP_READ); vf = VFileMemChunk(mem, size); - vfOriginal->unmap(vfOriginal, mem, (size_t) read); + vfOriginal->unmap(vfOriginal, mem, size); vfOriginal->close(vfOriginal); } } From 35be6c121b93ef43c9249b8497121d1eb18c1d0c Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 6 Jun 2020 17:57:26 -0700 Subject: [PATCH 04/20] GB: Fix HALT bug --- src/gb/core.c | 4 ++-- src/gb/gb.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gb/core.c b/src/gb/core.c index 41290e84e..7ee5828dd 100644 --- a/src/gb/core.c +++ b/src/gb/core.c @@ -1082,9 +1082,9 @@ static void _GBVLPReset(struct mCore* core) { GBVideoProxyRendererShim(&gb->video, &gbcore->proxyRenderer); // Make sure CPU loop never spins - GBHalt(gb->cpu); gb->memory.ie = 0; gb->memory.ime = false; + GBHalt(gb->cpu); } static bool _GBVLPLoadROM(struct mCore* core, struct VFile* vf) { @@ -1115,9 +1115,9 @@ static bool _GBVLPLoadState(struct mCore* core, const void* buffer) { GBAudioReset(&gb->audio); // Make sure CPU loop never spins - GBHalt(gb->cpu); gb->memory.ie = 0; gb->memory.ime = false; + GBHalt(gb->cpu); return true; } diff --git a/src/gb/gb.c b/src/gb/gb.c index fda3f214a..ff73614eb 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -749,7 +749,7 @@ void GBHalt(struct SM83Core* cpu) { if (!(gb->memory.ie & gb->memory.io[REG_IF] & 0x1F)) { cpu->cycles = cpu->nextEvent; cpu->halted = true; - } else { + } else if (!gb->memory.ime) { mLOG(GB, GAME_ERROR, "HALT bug"); cpu->executionState = SM83_CORE_HALT_BUG; } From ee6bbaf61c0890552b103e2a577eb94f9d453c77 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 7 Jun 2020 15:52:26 -0700 Subject: [PATCH 05/20] Qt: Show a warning when save file can't be opened --- CHANGES | 1 + src/gba/gba.c | 2 +- src/platform/qt/CoreManager.cpp | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index b79c97ed4..af727a99d 100644 --- a/CHANGES +++ b/CHANGES @@ -54,6 +54,7 @@ Misc: - Qt: Disable Replace ROM option when no game loaded - Qt: Defer texture updates until frame is drawn (fixes mgba.io/i/1590) - Qt: Set icon for Discord Rich Presence + - Qt: Show a warning when save file can't be opened 0.8.1: (2020-02-16) Emulation fixes: diff --git a/src/gba/gba.c b/src/gba/gba.c index d306005a7..b195ea611 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -432,7 +432,7 @@ bool GBALoadROM(struct GBA* gba, struct VFile* vf) { bool GBALoadSave(struct GBA* gba, struct VFile* sav) { GBASavedataInit(&gba->memory.savedata, sav); - return true; + return sav; } void GBAYankROM(struct GBA* gba) { diff --git a/src/platform/qt/CoreManager.cpp b/src/platform/qt/CoreManager.cpp index 6b2a64f09..cdf38f1c9 100644 --- a/src/platform/qt/CoreManager.cpp +++ b/src/platform/qt/CoreManager.cpp @@ -109,7 +109,9 @@ CoreController* CoreManager::loadGame(VFile* vf, const QString& path, const QStr } bytes = info.dir().canonicalPath().toUtf8(); mDirectorySetAttachBase(&core->dirs, VDirOpen(bytes.constData())); - mCoreAutoloadSave(core); + if (!mCoreAutoloadSave(core)) { + LOG(QT, ERROR) << tr("Failed to open save file. Is the save directory writable?"); + } mCoreAutoloadCheats(core); CoreController* cc = new CoreController(core); From b4a8df053f6cd1924d68e40fc29d328da4bf1b04 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 7 Jun 2020 18:35:00 -0700 Subject: [PATCH 06/20] GBA: Break infinite loop for 0-frame mVLs (fixes #1723) --- CHANGES | 1 + src/gba/core.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index af727a99d..0080e7c0c 100644 --- a/CHANGES +++ b/CHANGES @@ -38,6 +38,7 @@ Other fixes: - Core: Fix crash modifying hash table entry (fixes mgba.io/i/1673) - GB Video: Fix some cases where SGB border doesn't draw to mutli-buffers - GBA: Reject incorrectly sized BIOSes + - GBA: Break infinite loop for 0-frame mVLs (fixes mgba.io/i/1723) - Debugger: Don't skip undefined instructions when debugger attached - Qt: Force OpenGL paint engine creation thread (fixes mgba.io/i/1642) - Qt: Fix OpenGL 2.1 support (fixes mgba.io/i/1678) diff --git a/src/gba/core.c b/src/gba/core.c index b1110c5e2..224d03f76 100644 --- a/src/gba/core.c +++ b/src/gba/core.c @@ -643,7 +643,8 @@ static void _GBACoreReset(struct mCore* core) { static void _GBACoreRunFrame(struct mCore* core) { struct GBA* gba = core->board; int32_t frameCounter = gba->video.frameCounter; - while (gba->video.frameCounter == frameCounter) { + uint32_t startCycle = mTimingCurrentTime(&gba->timing); + while (gba->video.frameCounter == frameCounter && mTimingCurrentTime(&gba->timing) - startCycle < VIDEO_TOTAL_LENGTH) { ARMRunLoop(core->cpu); } } From ff0b7af48b701112e007e5e66835c4ee9cf5c8ec Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 7 Jun 2020 20:32:38 -0700 Subject: [PATCH 07/20] GBA: Add timing fudge factor for running a frame --- src/gba/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gba/core.c b/src/gba/core.c index 224d03f76..c134e5d45 100644 --- a/src/gba/core.c +++ b/src/gba/core.c @@ -644,7 +644,7 @@ static void _GBACoreRunFrame(struct mCore* core) { struct GBA* gba = core->board; int32_t frameCounter = gba->video.frameCounter; uint32_t startCycle = mTimingCurrentTime(&gba->timing); - while (gba->video.frameCounter == frameCounter && mTimingCurrentTime(&gba->timing) - startCycle < VIDEO_TOTAL_LENGTH) { + while (gba->video.frameCounter == frameCounter && mTimingCurrentTime(&gba->timing) - startCycle < VIDEO_TOTAL_LENGTH + VIDEO_HORIZONTAL_LENGTH) { ARMRunLoop(core->cpu); } } From d61d9ef6a6132d6d890053a483b00da74a92f5e5 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 9 Jun 2020 01:22:17 -0700 Subject: [PATCH 08/20] ARM: Fix disassembling of several S-type instructions (fixes mgba.io/i/1778) --- CHANGES | 5 +++-- src/arm/decoder.c | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 0080e7c0c..3f8a020ab 100644 --- a/CHANGES +++ b/CHANGES @@ -25,12 +25,13 @@ Emulation fixes: - GBA Video: Fix Hblank timing - GBA Video: Fix mosaic objects drawing past the end (fixes mgba.io/i/1702) - GBA Video: Fix disabling OBJWIN in GL renderer (fixes mgba.io/i/1759) - - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/1701) - - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/1712) + - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/i/1701) + - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712) - SM83: Emulate HALT bug Other fixes: - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) - All: Improve export headers (fixes mgba.io/i/1738) + - ARM: Fix disassembling of several S-type instructions (fixes mgba.io/i/1778) - ARM Debugger: Clear low bit on breakpoint addresses (fixes mgba.io/i/1764) - CMake: Always use devkitPro toolchain when applicable (fixes mgba.io/i/1755) - Core: Ensure ELF regions can be written before trying diff --git a/src/arm/decoder.c b/src/arm/decoder.c index 02dc09dee..b95ff1126 100644 --- a/src/arm/decoder.c +++ b/src/arm/decoder.c @@ -343,15 +343,25 @@ int ARMDisassemble(struct ARMInstructionInfo* info, uint32_t pc, char* buffer, i case ARM_MN_ADD: case ARM_MN_ADC: case ARM_MN_AND: + case ARM_MN_ASR: case ARM_MN_BIC: case ARM_MN_EOR: + case ARM_MN_LSL: + case ARM_MN_LSR: + case ARM_MN_MLA: case ARM_MN_MOV: + case ARM_MN_MUL: case ARM_MN_MVN: case ARM_MN_ORR: + case ARM_MN_ROR: case ARM_MN_RSB: case ARM_MN_RSC: case ARM_MN_SBC: + case ARM_MN_SMLAL: + case ARM_MN_SMULL: case ARM_MN_SUB: + case ARM_MN_UMLAL: + case ARM_MN_UMULL: if (info->affectsCPSR && info->execMode == MODE_ARM) { flags = "s"; } From 031049cd067d98cfc1172c15ac448f09300bdfa3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 10 Jun 2020 01:28:39 -0700 Subject: [PATCH 09/20] GBA Video: Simplify sprite cycle counting (fixes #1279) --- CHANGES | 1 + include/mgba/internal/gba/renderers/common.h | 1 + src/gba/renderers/common.c | 5 +++++ src/gba/renderers/software-obj.c | 10 ---------- src/gba/renderers/video-software.c | 5 ++--- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/CHANGES b/CHANGES index 3f8a020ab..3892f0400 100644 --- a/CHANGES +++ b/CHANGES @@ -27,6 +27,7 @@ Emulation fixes: - GBA Video: Fix disabling OBJWIN in GL renderer (fixes mgba.io/i/1759) - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/i/1701) - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712) + - GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279) - SM83: Emulate HALT bug Other fixes: - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) diff --git a/include/mgba/internal/gba/renderers/common.h b/include/mgba/internal/gba/renderers/common.h index ba368edc9..ed16917b6 100644 --- a/include/mgba/internal/gba/renderers/common.h +++ b/include/mgba/internal/gba/renderers/common.h @@ -16,6 +16,7 @@ struct GBAVideoRendererSprite { struct GBAObj obj; int16_t y; int16_t endY; + int16_t cycles; int8_t index; }; diff --git a/src/gba/renderers/common.c b/src/gba/renderers/common.c index 2ec71b3f7..4c35706ca 100644 --- a/src/gba/renderers/common.c +++ b/src/gba/renderers/common.c @@ -16,14 +16,19 @@ int GBAVideoRendererCleanOAM(struct GBAObj* oam, struct GBAVideoRendererSprite* LOAD_16LE(obj.b, 0, &oam[i].b); LOAD_16LE(obj.c, 0, &oam[i].c); if (GBAObjAttributesAIsTransformed(obj.a) || !GBAObjAttributesAIsDisable(obj.a)) { + int width = GBAVideoObjSizes[GBAObjAttributesAGetShape(obj.a) * 4 + GBAObjAttributesBGetSize(obj.b)][0]; int height = GBAVideoObjSizes[GBAObjAttributesAGetShape(obj.a) * 4 + GBAObjAttributesBGetSize(obj.b)][1]; + int cycles = width; if (GBAObjAttributesAIsTransformed(obj.a)) { height <<= GBAObjAttributesAGetDoubleSize(obj.a); + width <<= GBAObjAttributesAGetDoubleSize(obj.a); + cycles = 10 + width * 2; } if (GBAObjAttributesAGetY(obj.a) < GBA_VIDEO_VERTICAL_PIXELS || GBAObjAttributesAGetY(obj.a) + height >= VIDEO_VERTICAL_TOTAL_PIXELS) { int y = GBAObjAttributesAGetY(obj.a) + offsetY; sprites[oamMax].y = y; sprites[oamMax].endY = y + height; + sprites[oamMax].cycles = cycles; sprites[oamMax].obj = obj; sprites[oamMax].index = i; ++oamMax; diff --git a/src/gba/renderers/software-obj.c b/src/gba/renderers/software-obj.c index 11b6737df..73df3ddc1 100644 --- a/src/gba/renderers/software-obj.c +++ b/src/gba/renderers/software-obj.c @@ -9,7 +9,6 @@ SPRITE_YBASE_ ## DEPTH(inY); \ unsigned tileData; \ for (; outX < condition; ++outX, inX += xOffset) { \ - renderer->spriteCyclesRemaining -= 1; \ SPRITE_XBASE_ ## DEPTH(inX); \ SPRITE_DRAW_PIXEL_ ## DEPTH ## _ ## TYPE(inX); \ } @@ -33,7 +32,6 @@ unsigned widthMask = ~(width - 1); \ unsigned heightMask = ~(height - 1); \ for (; outX < condition; ++outX, ++inX) { \ - renderer->spriteCyclesRemaining -= 2; \ xAccum += mat.a; \ yAccum += mat.c; \ int localX = xAccum >> 8; \ @@ -55,7 +53,6 @@ int localX = xAccum >> 8; \ int localY = yAccum >> 8; \ for (; outX < condition; ++outX, ++inX) { \ - renderer->spriteCyclesRemaining -= 2; \ xAccum += mat.a; \ yAccum += mat.c; \ \ @@ -272,7 +269,6 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re if (outX < start || outX >= condition) { return 0; } - renderer->spriteCyclesRemaining -= 10; if (!GBAObjAttributesAIs256Color(sprite->a)) { palette = &palette[GBAObjAttributesCGetPalette(sprite->c) << 4]; @@ -306,9 +302,6 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re SPRITE_TRANSFORMED_LOOP(256, NORMAL); } } - if (end == GBA_VIDEO_HORIZONTAL_PIXELS && x + totalWidth > GBA_VIDEO_HORIZONTAL_PIXELS) { - renderer->spriteCyclesRemaining -= (x + totalWidth - GBA_VIDEO_HORIZONTAL_PIXELS) * 2; - } } else { int outX = x >= start ? x : start; int condition = x + width; @@ -366,9 +359,6 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re SPRITE_NORMAL_LOOP(256, NORMAL); } } - if (end == GBA_VIDEO_HORIZONTAL_PIXELS && x + width > GBA_VIDEO_HORIZONTAL_PIXELS) { - renderer->spriteCyclesRemaining -= x + width - GBA_VIDEO_HORIZONTAL_PIXELS; - } } return 1; } diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index 54e4f90cb..035f10d6b 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -845,12 +845,10 @@ static void _drawScanline(struct GBAVideoSoftwareRenderer* renderer, int y) { } } for (w = 0; w < renderer->nWindows; ++w) { - if (renderer->spriteCyclesRemaining <= 0) { - break; - } renderer->currentWindow = renderer->windows[w].control; renderer->start = renderer->end; renderer->end = renderer->windows[w].endX; + // TODO: partial sprite drawing if (!GBAWindowControlIsObjEnable(renderer->currentWindow.packed) && !GBARegisterDISPCNTIsObjwinEnable(renderer->dispcnt)) { continue; } @@ -858,6 +856,7 @@ static void _drawScanline(struct GBAVideoSoftwareRenderer* renderer, int y) { int drawn = GBAVideoSoftwareRendererPreprocessSprite(renderer, &sprite->obj, sprite->index, localY); spriteLayers |= drawn << GBAObjAttributesCGetPriority(sprite->obj.c); } + renderer->spriteCyclesRemaining -= sprite->cycles; if (renderer->spriteCyclesRemaining <= 0) { break; } From 318a96bcb78da0f178fb87aacd78ef86521e4bb2 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 10 Jun 2020 02:19:41 -0700 Subject: [PATCH 10/20] GBA Video: Add sprite cycle counting to GL (fixes #1635) --- CHANGES | 1 + src/gba/renderers/gl.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CHANGES b/CHANGES index 3892f0400..11ae7fe30 100644 --- a/CHANGES +++ b/CHANGES @@ -28,6 +28,7 @@ Emulation fixes: - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/i/1701) - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712) - GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279) + - GBA Video: Add sprite cycle counting to GL (fixes mgba.io/i/1635) - SM83: Emulate HALT bug Other fixes: - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) diff --git a/src/gba/renderers/gl.c b/src/gba/renderers/gl.c index b75d91b2d..311ae9c8c 100644 --- a/src/gba/renderers/gl.c +++ b/src/gba/renderers/gl.c @@ -1418,6 +1418,7 @@ void _drawScanlines(struct GBAVideoGLRenderer* glRenderer, int y) { GBAVideoGLRendererDrawWindow(glRenderer, y); if (GBARegisterDISPCNTIsObjEnable(glRenderer->dispcnt) && !glRenderer->d.disableOBJ) { + int spriteCyclesRemaining = GBARegisterDISPCNTIsHblankIntervalFree(glRenderer->dispcnt) ? OBJ_HBLANK_FREE_LENGTH : OBJ_LENGTH; glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); glEnable(GL_STENCIL_TEST); glDepthFunc(GL_LESS); @@ -1428,6 +1429,10 @@ void _drawScanlines(struct GBAVideoGLRenderer* glRenderer, int y) { } GBAVideoGLRendererDrawSprite(glRenderer, &sprite->obj, y, sprite->y); + spriteCyclesRemaining -= sprite->cycles; + if (spriteCyclesRemaining <= 0) { + break; + } } glDisable(GL_DEPTH_TEST); glDisable(GL_STENCIL_TEST); From a0bae17267c5bb0b6c4406cedcd8da0249af28e5 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 14 Jun 2020 19:16:33 -0700 Subject: [PATCH 11/20] GBA Video: Fix sprite/backdrop blending regression --- CHANGES | 1 + .../bof-obj-backdrop-blend/baseline_0000.png | Bin 0 -> 30243 bytes .../bof-obj-backdrop-blend/baseline_0001.png | Bin 0 -> 30243 bytes .../bof-obj-backdrop-blend/baseline_0002.png | Bin 0 -> 30243 bytes .../bof-obj-backdrop-blend/baseline_0003.png | Bin 0 -> 30243 bytes .../bof-obj-backdrop-blend/baseline_0004.png | Bin 0 -> 30243 bytes .../bof-obj-backdrop-blend/baseline_0005.png | Bin 0 -> 30243 bytes .../bof-obj-backdrop-blend/baseline_0006.png | Bin 0 -> 31850 bytes .../gba/blend/bof-obj-backdrop-blend/test.mvl | Bin 0 -> 59338 bytes src/gba/renderers/software-obj.c | 2 +- 10 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/baseline_0000.png create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/baseline_0001.png create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/baseline_0002.png create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/baseline_0003.png create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/baseline_0004.png create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/baseline_0005.png create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/baseline_0006.png create mode 100644 cinema/gba/blend/bof-obj-backdrop-blend/test.mvl diff --git a/CHANGES b/CHANGES index 11ae7fe30..f1375dd48 100644 --- a/CHANGES +++ b/CHANGES @@ -29,6 +29,7 @@ Emulation fixes: - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712) - GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279) - GBA Video: Add sprite cycle counting to GL (fixes mgba.io/i/1635) + - GBA Video: Fix sprite/backdrop blending regression - SM83: Emulate HALT bug Other fixes: - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0000.png b/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..a957df25878e6f37b8aabfced94cb01067b4d162 GIT binary patch literal 30243 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

(7X`HD9&6Bfjsak6^L=BuqD{Q9ScRmW;(GTO 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0001.png b/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0001.png new file mode 100644 index 0000000000000000000000000000000000000000..a957df25878e6f37b8aabfced94cb01067b4d162 GIT binary patch literal 30243 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

(7X`HD9&6Bfjsak6^L=BuqD{Q9ScRmW;(GTO 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0002.png b/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0002.png new file mode 100644 index 0000000000000000000000000000000000000000..a957df25878e6f37b8aabfced94cb01067b4d162 GIT binary patch literal 30243 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

(7X`HD9&6Bfjsak6^L=BuqD{Q9ScRmW;(GTO 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0003.png b/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0003.png new file mode 100644 index 0000000000000000000000000000000000000000..a957df25878e6f37b8aabfced94cb01067b4d162 GIT binary patch literal 30243 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

(7X`HD9&6Bfjsak6^L=BuqD{Q9ScRmW;(GTO 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0004.png b/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0004.png new file mode 100644 index 0000000000000000000000000000000000000000..a957df25878e6f37b8aabfced94cb01067b4d162 GIT binary patch literal 30243 zcmW(+b95YC8=sAxG`5{INn_i#8r!zh*lKLsXpDw!oHRBXHnzWgzdf_Ff9yGP?wxt= zo#&@0Wko4u1bhSl0FY&*#Z|$-m*8&!90d5>)8WAi0PZI;;v(u^IU7BJPJ}DDB=;(| zx36&V{W|{=`-AwPx=4xF_v;q7Wvel2hO5w?m<)1>2x?;Xc3EW+{^q2((D%A*@W6l4 z`VCEer9bSvqH#rnqpnkiruDbU?Jr^N=UkL>s_BN7IVP&JWTI$MpMg(b0M9gh;pXLD z?6y>)-iy(Po^w1SEgGGvAKHTh@}ASDOIr{ATNj5fr;v{y&@yx&AZZBt#yA@1NGWQZ zt`7KwR<3>G8s|-_IG?Thn_c1fu3YHyK}P6s@J3oFms|p%#0E)EWGl_%jd7H)CBn}s z_vjWqzyo7Yz#N*(=Q2c?2!feg-|nz{x~uZ+UCy2|FOYCFP7v)d2Oum@f=#EOM#`D~ z>}`r;0!LT6gM@DoDEVZKy#1CtPBWja9fgQ~lamb^;}B-6-m#YZ=Z}xhwWfqJJY(&1 z(=hn)LuBY15G1{82fm{1PyuD?v41qxTcMJwEbqU=%=Bww|mWI7UvNUJcY3oP>dV=4QVIaJ6q^e_KJNiS#-##Z|uO@qw2i#a|ZN;+F_ z&MqyQ-S|G?)*3KGGb>M(P8h-ewuR-u3AtDtM>%EV%eC0{2YQ@bXaMqh>Te+SVRX#N zpnO?*i?AzOaql|g65(HMcw= zB;MJ_CejPV@;J7q^Idr(dzO>5hm>NnCzbRPxfz^wc3qCIASvUYu(W*RLDD%3^eH}6 zcE3s0b(=fWcC+-FYwT{VGp!)MwB$dcuP&@1>D+vjk1m>Z`$ozhd$oj;PG0L8x8#_3 zEcS8arMWy`N~?_5 zVAkUy4t4pSh#!TuU>jmk8_E>S<1FHcp{ezf*(hOL%rcLYX?!FD`<=9-U+U#XObDK< z+*)>d^4!!J-N^uisbrmXCW5s31R8b`m`kZ{A9(JzBMfYmFftsSSlHKGsGGpDa>Dp5GT(cdbR(#GY_Sb|~mE4ygrm5^cIm@SVU(|@= zB7^bGQQp-7MwRc9C4^p5=k*iwskI2RMghorgA@Fjh8xh~FUg4pFsm~l=xt6y_WaxV za@5g9$Uo@AMF)k|Qd`P~um^&Ox+t*9{irV(A~PsT_^SoWvCA7=-)jrnJ9cvMt>J6y z)Sg!_Joc5)`Y+!rj6MtRGCH#Xz7+oCswieShjmY>)|=AA7?TqWJ6b2M4v@&z@~3bt z=7Z8axi&babc<$xg1`C1?dC&A$HADCxbT{$n}jJv_$Q19sicxeAzGjZS~N|@N<~Nx zmz*??R<`tJW_ycsor|u=#qNX&_ylBQFxX&&$y<3`a#s;%c`Xt zKmi>;At<-I*d{{da5o0yHFqIOnnGYFvNH`FiHIpha`2Sj(?eyBieN0TFelPY^Mx=R zn7;NJwCh0)ZAkbFAxC6`N>02y5fFyVqmq7KsMvJ}?rtZ)&0NCKMnQWF?>PdMhc$_vjQygk{aNZb@rB+C*GRCpa zwgPV7^BhW9y&pp!9=@;kcM>~jT@Pi#M&G=k{KlIL97FLZEl7P z*Ar4)Ws$0)7Uot55+?43?uN{PDcD*^bRr-303jhqF^)egj0-#5_s8L6P}gv!l~kA& zv3fZl2@G2i(OcnOgw-N59C`4UI}Tc*nGNBvWOL34nrc)TlL%nb^08T)i{sDAp$rkjDv__p8_1AoC zcG6)~e>31hDS}4c9^x16>Y7J`#U7PaW+t~4qMR94<}lX%Ax$#24d{A_TP>q)ij%3gKuX#MIoM? z8lS13E_Z{b%`Y!}oSV#3rDtdw>)u$x$dDoxncSb<_Zqz<`C-OMgRX1^C31Q5-F9XJ zag5raT~cn4{JwYI4l>XqhoJ+h1G(aDc1X55mIn#g&6=NM)#n__BMeNX;%5U6Dm*hY`WEcB}J( zXA@gSQ(6Ld5wdS;=Iv-fd}+!y3+{`%BZ=$it*9gI}RQ5NeP;)`- z+1xxoKcAY4@35fyaK`Tb1hv3VL-Fehk&ws5%*)Hm%uH792%b=p|G~%ifCfdzr>hIn z$j{HsuR95uWb0oyqZ58R%{R-$QE%nakkh+ai&h9T30@TvlpJ#SL}|M zY(JWZi+nV>+!G~75LjOM@5AHqZ~5^N*IzU`*L%=VO40`K={W#T`}tWPy~R6#9!@lP zUguJh%5k&%3E}eK@y`(jNkGl>U~y2G%5b$XBwn56GHD@)szj?#k3rv>9p~5Df_af} zu0%&D5nL#m`}^MgGtb(^gkT~gQja=y)%FE152nYNA^896h&<+=Pbh=5QMulW6qK`U`e z+-0)p+39Wy(wi6Vry>n#=9nLR|Gck%(KIpct*;;R``t`(fe86LY7FY)d;XI0$xD~F34O_D4vPV!?V14cmZv*se<<3rzjeF$1W~UuyZq#1Oyf>b3 z9*qc^&w6)XV3R87*FkRX?3FWo+bbv657~<(>=W>V3GzOYvi6aROfXw{2#)~oq{fik zMgQ8iKMTtonW_z1QP={=kxQ1Ke)@U>0Lp?*uXF%$!lIpN2#*`VfzBSluqvM4JZEon zCfTDQ3NyXQKD+DbqGaCp$jA-(M`~{fxhaB1DplURacl?qaI&|h@gvb3ToVE}k5W~TLJOMxXhf0ar85)qqno}|Z38OHc22kz?HUjK=`uYqirCbidEhoFMlWw(25~7h-f2%A;qQu(i8ee#{l!lE=~8bj=OuM=*8c4bYU}R` z4L}V=9i(>RamgrLbSqMRvwbk>=-@z~hn2C-B5`N4q8)d*E2a>w0s{<-^WP?I}M z7-x6gyc-fSoiJoHCI6C!8p|1E_e&v(Tf?m|Ax_94#S7%O)i<`VgzeqCZZ&6T zes_tE^(32`Ikbqu6fM-Uetr>+)U3vmP}7~07oQAt+MDhpUtJc0Z%jCcpx+8^ukYx9 zvEmW9K5e;C{0AF6RPNiJb;xYK^03Rjko5~D$i}_GKuAO{!#qmT~;U4 zv7m(>ykw5PZEpTP9LmmN90$KlgMjn61SO|leh+y!US$=ymCnjysZXIBVz(!O7-B=;8C zU*X4pq!`t`r@iq6N0A0%F2j9OhMPU+-&Q3NZe9tMv$zaTfE7x8dvoukGhwWAyiJu1 z^N+0);@7)j66E(o5)MzFd(Ef)b&wrs#rDySH<^ycdzY(MJ1(ADmy4x%FvI<1 z?CX8^U4o`ItI^gWsovKNk3;fgeMQIY7Q69IXvcfPL_73CgQEFHI&tF}9F?1^kKZhu zv4iLbFvSE44C(`T4keHJo+Xs#XZj>CpXl{>V#Rg^qdqf!z%A97Oh%JHy`G?dGG;%P z_&#z#XA=0#;fNBv3(wEcqSil=)o&eaxeM7|1g`+M&w|@LRLqEF34Ao1=Ls+tx1m>8jYU3#?XTaR(X9v8Z(z2sw%rL51&Gin4v{7c6`d4?I{I-^Jw&hspOU^CxJnNXTzwz9_ff2VaGmt=_8R6u|bMG z7BT}3(0iT7H+FIRh3gia5>Zf7t3)fSjTgr-R-KYBzdj4LlKCi?9P^7j-uJ$mL+ZYXX^!t=&Xb#8FD!ut1^Qgo);WgPWS+_Rpn?#1oX}iJ?t@3 zo+FH55p><%n(uO6O(#Z;#;lk$XCL+W;*T1flJq>08`ych5a^IwQ;xR1XdY5A}WS-qojf)0|+J>Q~m3PoGPb0{Dd za0De3JrFkCEWc`mU)V@u*+*uhF+*rBFwkTjDINy%?VbFH^p)2ecuAQlQNrn1$;z%m z>bHMRyhP?5vAW65{)$TCF&UtcW}9Y?XYl(H{hDGdVeEC+7eQG0@LAa{=b$glkro6rskOtkOXFow55vNt%#!#m$|94l{9%Hzo9Xn z%=oM%SzM>}m)kXfn9P;Yl5o9yA9SGh`mwJu`muecK^lL>mpdkLc|oF))71d}EQ}(M zFum(u9E0IhIKpPOU@_dKq}HK-7dQV zLu!p`hmz8k)eX2ep`n=u_g<2UBzztd%cDA%RKz8Jlltw#nc*hTYd}HAGl1Y2ajG+g zGVdJLf6N>R3R4jf+_&Tb@-7vxRnjqX@OV|DW@P5Aw^qHW?&vQ3(n-C49A<=C?U(~Cmj@Kt&&ZcbF ztc2gI(S(PgX_~CfEQ8y2tWPo7chfAq{azcvK#H{1w0NOYY}$Yz3?Qci4ZXZXWXUr} zH?WVzgFIN2(IfKXdPM}sa&w91%HtMAOs8(dVWyMQM~iRCn-IbUQG>w`8A44`{I-%xQ z;b?{#(kPn3OutV3LD_ih#9JnX+cFjCnQ*V~Z5=ARwXdPcC~dcB?v7Z&ybZ@6ah5Jg4AX@M&Ew=0RVtusUFvaJlZ+0H!2bU2L<-uxLuiTR<`7DdW{}LfrR*%SRCaUI` z!mdJvcQqAHMkia%$24xVkcQ@>E&C^37*c0!=%xBY_JG?wF-K6(7I^inOlMDy0=GVn zThF@;yVS}s5$4Ed^A!eE%s>H$^+xmB4`#m*ibv~?=ocKS)1PV zNp--<9mX{O4H67Y{PnUSTb0jS=qy*PjYwyrj;~ZaVIda;1}4^I@VFpWqdeSZ%|jF$ zWx4z(zDJb|!~Id5nL^}%iI;5)iWkPIvJRflR~=4G12|QR)?$@NSO#}RUr~^Nk+h*! zOgVI%hHv;9O|v}9ka}C<`g()`k3z;s%cA#$tnqxqvXqeAZCw2C>X5>V{r4vilVl6b z5W<&acb2`iAv33AP8@^o#F`dvR`GX>r|v*M479foS%7yQA`!hxBMOuE474tJ^fQeNc;&>oU`oX z^LD7C<W-j3L`ncVokw2GgM@LToZ0x-%7O~Lao&mG`vkoYOk_s*9 zMl#?n|90^w|95ZZA$UeJo$3qek)SfF{6?>K945=7u&g`IZo9Ac@1R6y`{$^{Zh+R=H#@9aAMrha~Qe%<0D zDav3h<^>@HvMc8i4~)bCGD_TZ&W)qgZ}U+S6hWaC71z>iVE#6ZuqgQ>hCfdiZ%kib zJ-#xE%Jg$UX|gN|`RvH!FYqDR?Gr&hJ~t~qV(e2#wUp%zILG9`S%=#z@gtHoO|00K zmFKG#CtO?#lS7hu^1}NoYGxUq2jrY39cl?7Eu7LwO6E;8bvc=4gP}cmi>9L`%s|T! z@ct*i`iq!}oIC2br|yg1d}-G@1Ti@utR00fp;zutDVm_~;_g^GOg;|o#A^vSnx1vFx_8+AO<3%jI}j^-N$(Ez<V&Hm13kL|nD~8iQK(xJkubU${EYC$o3T2yQT8(F%ZRO%a_~VCnsxj zbJZDEJeP+rj<^8u(oA~j^hb`I|Ksxft+IC)-4Kw~9fW!;XM{Ou4jBt40ITo@UzxhH(m+`oa<5#l(TD5`sdAOmld80A zk<)E}k^kHI0fS=b(=iGAiCXb4_8je}A3>ik;b7f~$eI|dH6x_wiAYG;teK6F)MfeI z>e%}$NK^>7e38!%AHzNC&`ex!UM_cem$w<1e*iCfHi%2fw53?D~0ndJ0$Mk|}L%8{$16B%u{8traJ!sfVv`L59yr zZc2YULj%xbekO-f6X63aD#NA3X{>tFnC-^I_7h*2CBG<}%ichlp6V2QzN82U2}Z!v z3hdP?n5SUwOI-T!`22HOz2=XMPSEbPG}SMN)$yJ&y&!m&^7rrY`yK~BAwO+g@u=I@ zxTT|2__0NDUW(lb5M_C62>74LnV9UXMoU+I4HiB#;! zxpYB;C!+>$NveMf1#F$;37Xl`fBHkyL9Y+y|&d-Jrh58DF9PXm(A!GWP7@?j7WzjxKXp_X>I! zeZF+dkUmn~eU?npb7+&tertX`P`DjI;|I#VzL2=*ly#*81@FwDvv%x^1<7nFa~}$m z?cDVUj@Xa`c`Q=^A`~Q;x*I*Dv#hI0)ATPM%|sYEabRD@N`O+9t0hbFR}?Sr?}5V4 zSVRnDHZh$&Vevv~E@3{CO3gIBm0-JYM(KM`22MeqKo>E|OpAy(IKDXj!F5)xUUYZ4ZuJ z@9JNNo%mfg9%ogbz}ib36x>TH3ah%C-rx;95@ntwl%GPmwIWcqzz*NO*8i3FhC5Cl)8Jun?CbRe%F>rn|&_FFIvCdzqP=XQOpJ%ZOO1Yu%1Brr8>(-xV@-K3#s0CVt2LeA8+y`Q zTDqNne1Z1)lq+_X%XfO_{@)gRN;~mb(|W1x%7fMD>DDrEZC+K(tAV@J=J<|g?TV$h z8OFUkhx1}QBT#ubUc~f;h|~eK(z#QR^?4&;x|MnDE)PM*$Bev?AywwavHxoQone>Y zKwtyqVF^y2J^Qzif(M&+MW+>onloBRtEKRZPmD{JocR^+C2f;X#3t1(QxX=6vmBNW zM^+GarlNi{B&?B?D$8IuQ63GW3-oHeYhuOH^_XG#)EwcyZVh2<8F52goNBKyjxsx4 z%Y+;9Cw1jF97?_5ABh5WpAwctDj9;CvP>NuZhl`! zJ#WFGQZkg>82LSi7(`ohai!B;ofl7snC1_&t3f(5ZDO(MwE|VelQ(&Zp6CPJh{EQc z<@#(b(l|wW)y~t@p&sRrkyvxSbVf|-mqoGm!=5;3eA2ui0-tL5N~8Y7h2=N87OZ)~ znk;@9TuWuO&S!{yl)T#4y5Y=ix)rBAssb!jpO2JrYnHeo%t87EuA{hF?IRK){~tHy z&=%0tM_8SH5ni8)ke^)S1h{iWCQ@2p6Ma+_k3X9oCi%laG~aiyV{)nOT9ogyxM?8?X~zyQ8;L@8tby*UvcJ~T+Lm))Bp993TIJnF)bTq+SPR-hSCbKF z$eDpF_D#`6z@QJod}w_ysiNf9&SzWkd%;(a@@8Zye-?>#*{TqiFFe9m{Yv2_*QrL> zQBR41Yf4))tzLFSQ>1XvdC-b?KBEeg(!o*ldwp;KvVhU=ttW(;GF7+mRHCaKbDezq z+&}ZS1<~$qmwWxi4OEgKT=y%o@oWdHy{ZKF0O^gvu>lYTdr(V2Zn=z;?ivk%#yutp z`pfdWr98QLgv0|XFLV)$Ks|!z=LabA>liUCQm5JH1Ye}6Y#=c=#EYm$&PRo#!PgSU zv_B)YOF(Z}M0J4h-+~zgnuJtHHi>oU66Iy$DRq|W#dDT8}La%2<2ZOkjl%0gABkC*x^K3zlQ#_z9XS!T?8w?mysXp4DUA-RR1G1Q`gMR&Dqv$E#b&p)Sx*T+L{J86?BHT+u zksn+LX!Dz$A}IL(Xj2pdOoXa5Bf!o2wJ39>{1^w#$%JsieCV0)GYsB4t$K!!~W4 zUpI2hJaIbn0fBAxtiZfKT_-~-RwWqGa)O*Z-em?PwM+S6K!glgck_xZy_>se*4EXk#3Ib}RKcT!OjY?g% zxTgiLqLk9ke?kJ-!G|)B_V1ZzwSBLg{>v{4w*eRnY*NKUh_e;`7dbo{cuA#oUAs4| z!J2puwD9&u6;fx$J<}&9wMs2ROS;x@-79lHj5PcPheY9IBTI5f$plp^EPN72W#}g`)$&!#@c8pgsa@>X9zk9nx)XP3d^`iNdIEmd zBaSBA;WuvOH$f36*%-)5U%q@4~i-4ev>DCOIjEKf@Cfzn9kG^oKXP7BJw8UAg5Q!b@W2 zAJtwX-aSXnTAZJyl`G{x577wf5D{aGs$Z*#`k6UhCeReZ(=E*wI?N%cr7raGl(<%) zL7B>qWSqPU9!C>*n#IDm_8KMbff$&lG5%9=osE9_aBc2J$Y)fI07Iuy`9D@Bov4SO;(@i8CCjS{gwOFsbVgN6zP?>| zZyWUvYIl(}!N2{HgudXvUC|XrWAz^Ex9JjP1zi7PTy5iao_btLWkEZtH#^H2C11LinH8$eAu@rhB!;9o{>=pgweG%18 z`u%!ZMdc-%YZ9^-Hiy+8YNsm0!I~hhyN>jQ&?@KDaSIxl{INTNBabCXl^~Uv3)>4# zOY1sFDpWeJiYWl57{7W+Y|}6JU}j(mUvLF|gb=ZZpLl}bD0UPtwBiKTkjEd_*U09% zFMofsS4N+{v|E;J8n{$b6VW;}{-yV>(ExvmZhu-K=<=;q=)ca=DST=Y~%#=vmCA9ddKAq>ku=8J*f^M^X z1N9Y7-=(s|KK!dY(eJ;Z&RI1vrd$X8-rvmEyNWb5901ek2bpcKFuYx|Cv5%UV;^h) z+-B0i4SInzR+J?NPA?@D*gvD194eVdLrtw6Q_2k;{;}z2;CP2EN}m8jdPI&`cd?i7 zXBo|`J3q;FgSh}GlFo|N(*Ru74@Xr!HTn-*hc!1~^sU$T$&T%j z-$k0VY-@FmuY}Vg3Rd3tH#;5iOwtQ%IG+~%+hhwyP$bvkMnQSP%K- z;`u}+dQB;gBdGPR_Nic=@V&e$^h*$99}M9y9V=C|9G2z3Nv0?!lePk)Ai;-@6dj>5 z+G$fG-u`j`kcxHW`9Pa7>w2xx@Qu8-z<5%xt15U9oLd*78TsaQs4Dt-}HKV|#rluah31!_U!Fv{Iz4vT* zpbsY=*o-R{`|#}a9bqvf?#9~wtegO5i&9dWbW?}PCGiJZ_F&7_2?aSa$sfJqu_Y5d zlQ;9rNlZ;iAlrfnt)cemPbe-(`CwV}{71My{xT zS!d&9{KXtvQfbnMh{z|0hea^&W8FMFi|ZdrP}_}KWMX^Yo5S@3Anie7RB8A=xH#0PgNT`hN)Az2D5mxxr9aug_Q`Ow<9sivj5Z2tymNj z`<|<-PLHIRd7QO|5Q1aD{nt{xIS|zsHOcwyxcv!9GA&ZAyTp;8&u%zLQ{o&om(|wh z+muRSyz<-?$B4g)NJ>#SPtdd~*Dcpy>-wpJxnVgIP=2pw&gbSFkTupkwE*n?|NKm7H0Z`C8H ziz?X+bBVUV%-SEn+0JVje!90-e7z*~_fQgqRXRlMw%={7+`;ow81=z~KtYXBD^bzy z8=flm7A`W)3mp@Y5N__^q_81T>W<4wjE&mun!r=-7~(%B&iWDhu+bE58j0DTR#lV8 zBwQzA@?}`!FNvlCBj~;)YJ5l3U1AP;uAFrN^OS;;FUBWj7USr!to%@_Y8t@s^3!Yq z{j8q`l#>K_>y$Yf*)?`pUo+a*5mWGqe8|B@sV|X9eHlBv`%vMX3Ei$W^L!FDdi4pM z**IX*2I$tF4EUDmGH!iXseW#`@~g0rcG5AsjTxQv^U-o6*cfMg6(d!=RDKEOqp zloC0V-&mYrcHOs`L5`qlc>tpau4i+tOPy_K8lqd7b{4bif`a*?@)lclJ*{0hE)mQ6 zDZ4WZdYo=w7CtU~eY@=sPXTL_-f*#q_9%atc%e~|4HqgX`sNs^!2?--{)mY;Y|N{s z_H4+!H#bDD6fUKr4Kr%H3$L#HX{%OU@F>i4pmo20IVlCLYA7(TSe2(#RpPpPYxj?( zKjpNL*Xe*HNTkja8Q@B6_8s9xE$8oohjlk>>M1tn*zboj?Xil$s2nQ zBoTXAT~Ip2--^{SCx1&zE$H}@wUzFzP4Ka9*O#>B>uq{t3(QC!9x)aCECX#4^p|;E zy`!O9QXMELu{?^-&_p5nfQE!K9crMRCEkpsNp>n{Tg_>Mw_s4QWh~W8qnN*n;Rr|^tf8oZP)}vaWgx4-DyZ=;-ZrMyj>Ja9gXNLSQz}@$4 z-s}2~E@d)aDyi;lhm+J#ERCx$s{jNkyT>|##6qyV)%c!!K)#9*d*P?J_V}Lu|Ftk4}GyE_7 z3C%{LQ02|*W(>tY3aW`AFVRz-p?x^!7QcvL5^ zq%&(qc>Y?Kx9#{}h@cKakTPkjJ;g^2N!;VfE9QZ*oZG{%`mO#r0s_iXpPruia-}P; zS1{ChD715E+k2dP_7R26He6C_sZXR1CUe&5T`ZYeJ9++>RE_H$o$fgy63vivf_6|-^*0VpoS`w>JY_K7GM^&k+xjp(@HUNtzjlM7Az_S4m2YNR77 zgd$f~E4uN@x?}%{RTN1;x{a=P+i)W$}xVuX*?k01(x*Lssz$7qMVGk-+DC8a`C#m+ez zCvkKHPLgC-Wv>)k#$n^+XXUw+)s>Ey?R3XBbk&%ddz&nr7Z)V(xZ=VH69TD(QgKG(Ciz5iaziy4(! zt}ggZ`k|i4Rq4v$JU2B(0est@cMJN@u*7mp8BXjRuG^QsgIte#6>PomMvm~3uiZw` zy26mVDfx~#`HGXZ;{DH`3G+vT+6tEatzb+|@IS(*AA71?W^`Co?1lXtHPU*L6yG$F z|JaJo6aO0V^W<^S{XtbhYd3|Q)t2r-h61c^n%S_|fo`nfzQeA6`P#r9IqlO?n`efy zw*ysKcNud*N}?d$6GNOS3R#EtXwls6ly zu86=tH)%-+QXvRotUt*?e(3Gd!0%x4e5hW8)SosSv4tfXLVUE7_?$-(HWot&aKkR<~d<+kdXIQs}Ta?Z!->7C%*T%&Rkyxm)d;c6R;#N^-{)Rou_a~fhyVuiD!Fv0xatN*mC;6-GM}*G z)H!CclHq8B5!YVT=nKoI{ru#N^bDK~iA8r97WF~pNrHQ_Q~mDI-xjxi3TjXSFr7q$ zi;`qZs7!D_H!YJCOg}0ce6R*8a?OyJk_88$=~9*2HStS^CA#j~!|qeZu=lyRMUFT& z-9)SoUHzx?RHu8m^%+wkAX=v6*<~72Vss=n%u8@k&FLUc1T_MuNP6R7nykmplv{%L z6dJcC1R?QWY2576QXhEBrclFW3k7(Z$r~$(<-s06{KDx;U7?l+eMq3m6{AP)cA8qb zl6H70YlWF}(qTql`~ux+A9l=>k)E7x(K3W4q&oqhDgM{#<0mESJPL2|)`0U$FZC2M zIqlK3``}Y4$vFRqe1s5EOnazeg_c=;b(XpzbKQ!GALut+2A^5UA@4JJpj@FKWUqBI z&sI&Det%*;Z7`z7&hj1k*NV9b;WX(yKxr=8dE`Q}?WF`PdtfhYs&LE#k(oXU9S9v& znuY$~rHh$3Tkaz~Fyy#pAG10I=Xx_~o zAF~JVQrS<;>^-=D1;4aJ^QZKq$ymv>;@%}>X$Kgp<9NxK*DRkHts6>@7m3G(Uu_)? z=pVEF8ym97$UwKjKeofW+*(Rw#5@Z=WGBX89-z{=i-F@^{6ul-7u^^0F0puW_X%d6 zb8$&-i1;r$Bx7R}%Yhqcz*EC=%?|M=lDwn%D>#TD#pPUCiQe3nK_u4Y;P<7 zYoD*&97Z7qhDz_-sPEe&aRgxVxNXm7UjMO)LypAI;Xg$POe67Hy9yhz632!tF>qq& zujYF(HdgBxSYg%`{R?}auS_e>Rk`sb9@*nSjS;t^04yVwsb0n7&An7KNro5Tvp1Z6jwPE;c@yy{eGi_ol}W?p)bKzmpk`^2u;0cy%(BW zfBX04si$_*=mcl+LU;;d5J0nwO)!LA&7C5tI6d7?nagHXM;a+gZD?*bot|_h6?KZp z3@LMa3I)q#US`Muyd+3-{)?^fy3#k&md4zfZTx|H6jQIU;7Q4(jKd?R#;)iUUn0f< ze_AT^)!525sL})*f9X>$%SyK{w{N1Ri`-fI$UoHdZp12L;#1L-iE}b)jQ;*%Sq$2s z{ioz6`1j(ccTZ`%j`^w%y$AEb&#w6u7|w5`e?DQJfVj^H27g`?NMoX?^dPi=O|Qc! z-c-{EhWr$(ynUyCH7}>@N%%PV1vii0R?8(W89G^SOD8Aq!BH2CX#Yn|>X8wu7ZJFt zOXDB&-UZh>myF+nWLy3|$$97PD<1+&u>SsnB_jvR>v1Z>I%9e5r zSM%>d@e+U1$a6VyjL#4(n5u)cYW>UD+Dga3SqZQ+>TXa992-*X?Rm+k9uVce*7`68 z`xAc

(7X`HD9&6Bfjsak6^L=BuqD{Q9ScRmW;(GTO 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0005.png b/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0005.png new file mode 100644 index 0000000000000000000000000000000000000000..a957df25878e6f37b8aabfced94cb01067b4d162 GIT binary patch literal 30243 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

(7X`HD9&6Bfjsak6^L=BuqD{Q9ScRmW;(GTO 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0006.png b/cinema/gba/blend/bof-obj-backdrop-blend/baseline_0006.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3ff4860890643e4e0e8637c59d76a569d27b32 GIT binary patch literal 31850 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/bof-obj-backdrop-blend/test.mvl b/cinema/gba/blend/bof-obj-backdrop-blend/test.mvl new file mode 100644 index 0000000000000000000000000000000000000000..5733101f70c5cc640ce46ef523ee2250086333ea GIT binary patch literal 59338 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 M000000000001j?L1^@s6 literal 0 HcmV?d00001 diff --git a/src/gba/renderers/software-obj.c b/src/gba/renderers/software-obj.c index 73df3ddc1..d533de9ee 100644 --- a/src/gba/renderers/software-obj.c +++ b/src/gba/renderers/software-obj.c @@ -165,7 +165,7 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re int variant = (renderer->target1Obj || GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT) && GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN); - if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT || objwinSlowPath) { + if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT || (renderer->target1Obj && renderer->blendEffect == BLEND_ALPHA) || objwinSlowPath) { int target2 = renderer->target2Bd; target2 |= renderer->bg[0].target2; target2 |= renderer->bg[1].target2; From f0b03d7c901a8687db97ae88f2911e117e623f3c Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 14 Jun 2020 19:46:59 -0700 Subject: [PATCH 12/20] Revert "GBA Video: Add sprite cycle counting to GL (fixes #1635)" This reverts commit 318a96bcb78da0f178fb87aacd78ef86521e4bb2. --- CHANGES | 1 - src/gba/renderers/gl.c | 5 ----- 2 files changed, 6 deletions(-) diff --git a/CHANGES b/CHANGES index f1375dd48..2d106f764 100644 --- a/CHANGES +++ b/CHANGES @@ -28,7 +28,6 @@ Emulation fixes: - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/i/1701) - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712) - GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279) - - GBA Video: Add sprite cycle counting to GL (fixes mgba.io/i/1635) - GBA Video: Fix sprite/backdrop blending regression - SM83: Emulate HALT bug Other fixes: diff --git a/src/gba/renderers/gl.c b/src/gba/renderers/gl.c index 311ae9c8c..b75d91b2d 100644 --- a/src/gba/renderers/gl.c +++ b/src/gba/renderers/gl.c @@ -1418,7 +1418,6 @@ void _drawScanlines(struct GBAVideoGLRenderer* glRenderer, int y) { GBAVideoGLRendererDrawWindow(glRenderer, y); if (GBARegisterDISPCNTIsObjEnable(glRenderer->dispcnt) && !glRenderer->d.disableOBJ) { - int spriteCyclesRemaining = GBARegisterDISPCNTIsHblankIntervalFree(glRenderer->dispcnt) ? OBJ_HBLANK_FREE_LENGTH : OBJ_LENGTH; glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); glEnable(GL_STENCIL_TEST); glDepthFunc(GL_LESS); @@ -1429,10 +1428,6 @@ void _drawScanlines(struct GBAVideoGLRenderer* glRenderer, int y) { } GBAVideoGLRendererDrawSprite(glRenderer, &sprite->obj, y, sprite->y); - spriteCyclesRemaining -= sprite->cycles; - if (spriteCyclesRemaining <= 0) { - break; - } } glDisable(GL_DEPTH_TEST); glDisable(GL_STENCIL_TEST); From 0de8f432ecbfa778591aa8db92ee551e48d7a2db Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 14 Jun 2020 19:50:01 -0700 Subject: [PATCH 13/20] CHANGES: Update for 0.8.2 --- CHANGES | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/CHANGES b/CHANGES index 2d106f764..6a1153e18 100644 --- a/CHANGES +++ b/CHANGES @@ -5,56 +5,61 @@ Features: Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation - - ARM: Fix timing on Thumb shift instructions - - GB: Fix GBC game registers after skipping BIOS - - GB MBC: Support 4MB MBC30 ROMs (fixes mgba.io/i/1713) - GB Video: Fix state after skipping BIOS (fixes mgba.io/i/1715 and mgba.io/i/1716) - - GB Video: Fix BGPS value after skipping BIOS (fixes mgba.io/i/1717) - - GBA: Add missing RTC overrides for Legendz games - GBA: Fix timing advancing too quickly in rare cases - GBA BIOS: Implement dummy sound driver calls - GBA BIOS: Improve HLE BIOS timing - - GBA BIOS: Reset renderer when RegisterRamReset called (fixes mgba.io/i/1756) - GBA DMA: Linger last DMA on bus (fixes mgba.io/i/301 and mgba.io/i/1320) - GBA Memory: Improve gamepak prefetch timing - - GBA SIO: Fix Multiplayer busy bit - - GBA SIO: Fix double-unloading active driver - GBA SIO: Fix copying Normal mode transfer values - - GBA Timers: Fix deserializing count-up timers - GBA Video: Latch scanline at end of Hblank (fixes mgba.io/i/1319) - GBA Video: Fix Hblank timing + - SM83: Emulate HALT bug +Other fixes: + - All: Improve export headers (fixes mgba.io/i/1738) + - Core: Ensure ELF regions can be written before trying + - Debugger: Don't skip undefined instructions when debugger attached + - Qt: Force OpenGL paint engine creation thread (fixes mgba.io/i/1642) + - Qt: Fix static compilation in MinGW (fixes mgba.io/i/1769) +Misc: + - Debugger: Keep track of global cycle count + - FFmpeg: Add looping option for GIF/APNG + - Qt: Renderer can be changed while a game is running + - Qt: Add hex index to palette view + - Qt: Add transformation matrix info to sprite view + +0.8.2: (2020-06-14) +Emulation fixes: + - ARM: Fix timing on Thumb shift instructions + - GB: Fix GBC game registers after skipping BIOS + - GB MBC: Support 4MB MBC30 ROMs (fixes mgba.io/i/1713) + - GB Video: Fix BGPS value after skipping BIOS (fixes mgba.io/i/1717) + - GBA: Add missing RTC overrides for Legendz games + - GBA BIOS: Reset renderer when RegisterRamReset called (fixes mgba.io/i/1756) + - GBA SIO: Fix Multiplayer busy bit + - GBA SIO: Fix double-unloading active driver + - GBA Timers: Fix deserializing count-up timers - GBA Video: Fix mosaic objects drawing past the end (fixes mgba.io/i/1702) - GBA Video: Fix disabling OBJWIN in GL renderer (fixes mgba.io/i/1759) - GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/i/1701) - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712) - GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279) - GBA Video: Fix sprite/backdrop blending regression - - SM83: Emulate HALT bug Other fixes: - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) - - All: Improve export headers (fixes mgba.io/i/1738) - ARM: Fix disassembling of several S-type instructions (fixes mgba.io/i/1778) - ARM Debugger: Clear low bit on breakpoint addresses (fixes mgba.io/i/1764) - CMake: Always use devkitPro toolchain when applicable (fixes mgba.io/i/1755) - - Core: Ensure ELF regions can be written before trying - Core: Fix ELF loading regression (fixes mgba.io/i/1669) - Core: Fix crash modifying hash table entry (fixes mgba.io/i/1673) - - GB Video: Fix some cases where SGB border doesn't draw to mutli-buffers + - GB Video: Fix some cases where SGB border doesn't draw to multi-buffers - GBA: Reject incorrectly sized BIOSes - GBA: Break infinite loop for 0-frame mVLs (fixes mgba.io/i/1723) - - Debugger: Don't skip undefined instructions when debugger attached - - Qt: Force OpenGL paint engine creation thread (fixes mgba.io/i/1642) - Qt: Fix OpenGL 2.1 support (fixes mgba.io/i/1678) - - Qt: Fix static compilation in MinGW (fixes mgba.io/i/1769) - Qt: Fix unmapping zipped ROM (fixes mgba.io/i/1777) Misc: - 3DS: Clean up legacy initialization (fixes mgba.io/i/1768) - - Debugger: Keep track of global cycle count - - FFmpeg: Add looping option for GIF/APNG - GBA Serialize: Only flunk BIOS check if official BIOS was expected - - Qt: Renderer can be changed while a game is running - - Qt: Add hex index to palette view - - Qt: Add transformation matrix info to sprite view - Qt: Disable Replace ROM option when no game loaded - Qt: Defer texture updates until frame is drawn (fixes mgba.io/i/1590) - Qt: Set icon for Discord Rich Presence From 11b8167708a23ca36bc7591235ee3fcb94556257 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 16 Jun 2020 18:18:34 -0700 Subject: [PATCH 14/20] CInema: Migrate to using ini manifests --- .../mooneye-gb/acceptance/boot_div-S/config.ini | 5 +++++ .../acceptance/boot_div-S/manifest.yml | 3 --- .../acceptance/boot_div-dmg0/config.ini | 2 ++ .../acceptance/boot_div-dmg0/manifest.yml | 1 - .../acceptance/boot_div-dmgABCmgb/config.ini | 2 ++ .../acceptance/boot_div-dmgABCmgb/manifest.yml | 1 - .../acceptance/boot_div2-S/config.ini | 5 +++++ .../acceptance/boot_div2-S/manifest.yml | 3 --- .../acceptance/boot_hwio-S/config.ini | 2 ++ .../acceptance/boot_hwio-S/manifest.yml | 2 -- .../acceptance/boot_hwio-dmg0/config.ini | 2 ++ .../acceptance/boot_hwio-dmg0/manifest.yml | 1 - .../acceptance/boot_regs-dmg0/config.ini | 2 ++ .../acceptance/boot_regs-dmg0/manifest.yml | 1 - .../acceptance/boot_regs-mgb/config.ini | 2 ++ .../acceptance/boot_regs-mgb/manifest.yml | 2 -- .../acceptance/boot_regs-sgb/config.ini | 2 ++ .../acceptance/boot_regs-sgb/manifest.yml | 2 -- .../acceptance/boot_regs-sgb2/config.ini | 2 ++ .../acceptance/boot_regs-sgb2/manifest.yml | 2 -- .../oam_dma/sources-dmgABCmgbS/config.ini | 2 ++ .../oam_dma/sources-dmgABCmgbS/manifest.yml | 1 - .../acceptance/oam_dma_start/config.ini | 2 ++ .../acceptance/oam_dma_start/manifest.yml | 1 - .../ppu/hblank_ly_scx_timing-GS/config.ini | 2 ++ .../ppu/hblank_ly_scx_timing-GS/manifest.yml | 1 - .../ppu/intr_2_mode0_timing_sprites/config.ini | 2 ++ .../intr_2_mode0_timing_sprites/manifest.yml | 1 - .../ppu/lcdon_timing-dmgABCmgbS/config.ini | 2 ++ .../ppu/lcdon_timing-dmgABCmgbS/manifest.yml | 1 - .../ppu/lcdon_write_timing-GS/config.ini | 2 ++ .../ppu/lcdon_write_timing-GS/manifest.yml | 1 - .../acceptance/push_timing/config.ini | 2 ++ .../acceptance/push_timing/manifest.yml | 1 - .../serial/boot_sclk_align-dmgABCmgb/config.ini | 2 ++ .../boot_sclk_align-dmgABCmgb/manifest.yml | 1 - .../acceptance/timer/rapid_toggle/config.ini | 2 ++ .../acceptance/timer/rapid_toggle/manifest.yml | 1 - cinema/gb/mooneye-gb/config.ini | 6 ++++++ .../emulator-only/mbc1/bits_ram_en/config.ini | 2 ++ .../emulator-only/mbc1/bits_ram_en/manifest.yml | 1 - .../madness/mgb_oam_dma_halt_sprites/config.ini | 2 ++ .../mgb_oam_dma_halt_sprites/manifest.yml | 1 - cinema/gb/mooneye-gb/manifest.yml | 4 ---- .../manual-only/sprite_priority/config.ini | 2 ++ .../manual-only/sprite_priority/manifest.yml | 1 - .../misc/bits/unused_hwio-C/config.ini | 5 +++++ .../misc/bits/unused_hwio-C/manifest.yml | 3 --- cinema/gb/mooneye-gb/misc/boot_div-A/config.ini | 5 +++++ .../gb/mooneye-gb/misc/boot_div-A/manifest.yml | 3 --- .../gb/mooneye-gb/misc/boot_div-cgb0/config.ini | 2 ++ .../mooneye-gb/misc/boot_div-cgb0/manifest.yml | 1 - .../misc/boot_div-cgbABCDE/config.ini | 5 +++++ .../misc/boot_div-cgbABCDE/manifest.yml | 1 - .../gb/mooneye-gb/misc/boot_hwio-C/config.ini | 5 +++++ .../gb/mooneye-gb/misc/boot_hwio-C/manifest.yml | 3 --- .../gb/mooneye-gb/misc/boot_regs-A/config.ini | 2 ++ .../gb/mooneye-gb/misc/boot_regs-A/manifest.yml | 2 -- .../gb/mooneye-gb/misc/boot_regs-cgb/config.ini | 2 ++ .../mooneye-gb/misc/boot_regs-cgb/manifest.yml | 2 -- .../misc/ppu/vblank_stat_intr-C/config.ini | 5 +++++ .../misc/ppu/vblank_stat_intr-C/manifest.yml | 3 --- src/platform/python/cinema/test.py | 17 ++++++++++++----- src/platform/python/conftest.py | 15 ++++++++------- src/platform/python/setup.py | 2 +- src/platform/python/test_cinema.py | 2 +- 66 files changed, 109 insertions(+), 66 deletions(-) create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div-S/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_div2-S/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_hwio-S/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_hwio-S/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/oam_dma_start/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/oam_dma_start/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/push_timing/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/push_timing/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/manifest.yml create mode 100644 cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/config.ini delete mode 100644 cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/manifest.yml create mode 100644 cinema/gb/mooneye-gb/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini delete mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/manifest.yml create mode 100644 cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/config.ini delete mode 100644 cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/manifest.yml delete mode 100644 cinema/gb/mooneye-gb/manifest.yml create mode 100644 cinema/gb/mooneye-gb/manual-only/sprite_priority/config.ini delete mode 100644 cinema/gb/mooneye-gb/manual-only/sprite_priority/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/config.ini delete mode 100755 cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/boot_div-A/config.ini delete mode 100644 cinema/gb/mooneye-gb/misc/boot_div-A/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/boot_div-cgb0/config.ini delete mode 100644 cinema/gb/mooneye-gb/misc/boot_div-cgb0/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/config.ini delete mode 100644 cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini delete mode 100755 cinema/gb/mooneye-gb/misc/boot_hwio-C/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini delete mode 100755 cinema/gb/mooneye-gb/misc/boot_regs-A/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini delete mode 100755 cinema/gb/mooneye-gb/misc/boot_regs-cgb/manifest.yml create mode 100644 cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini delete mode 100644 cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/manifest.yml diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini new file mode 100644 index 000000000..389b7d8db --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini @@ -0,0 +1,5 @@ +[testinfo] +fail=1 + +[ports.cinema] +gb.model=SGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-S/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_div-S/manifest.yml deleted file mode 100644 index 631ac4568..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_div-S/manifest.yml +++ /dev/null @@ -1,3 +0,0 @@ -config: - gb.model: SGB -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini new file mode 100644 index 000000000..389b7d8db --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini @@ -0,0 +1,5 @@ +[testinfo] +fail=1 + +[ports.cinema] +gb.model=SGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div2-S/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_div2-S/manifest.yml deleted file mode 100644 index 631ac4568..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_div2-S/manifest.yml +++ /dev/null @@ -1,3 +0,0 @@ -config: - gb.model: SGB -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/config.ini new file mode 100644 index 000000000..ed9446e59 --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/config.ini @@ -0,0 +1,2 @@ +[ports.cinema] +gb.model=SGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/manifest.yml deleted file mode 100644 index 898a81837..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/manifest.yml +++ /dev/null @@ -1,2 +0,0 @@ -config: - gb.model: SGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini new file mode 100644 index 000000000..2764ebac4 --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini @@ -0,0 +1,2 @@ +[ports.cinema] +gb.model=MGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/manifest.yml deleted file mode 100644 index 57c11b941..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/manifest.yml +++ /dev/null @@ -1,2 +0,0 @@ -config: - gb.model: MGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini new file mode 100644 index 000000000..ed9446e59 --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini @@ -0,0 +1,2 @@ +[ports.cinema] +gb.model=SGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/manifest.yml deleted file mode 100644 index 898a81837..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/manifest.yml +++ /dev/null @@ -1,2 +0,0 @@ -config: - gb.model: SGB diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/config.ini new file mode 100644 index 000000000..511f010d2 --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/config.ini @@ -0,0 +1,2 @@ +[ports.cinema] +gb.model=SGB2 diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/manifest.yml b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/manifest.yml deleted file mode 100644 index 0e5d5c091..000000000 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb2/manifest.yml +++ /dev/null @@ -1,2 +0,0 @@ -config: - gb.model: SGB2 diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/config.ini b/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/manifest.yml b/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma_start/config.ini b/cinema/gb/mooneye-gb/acceptance/oam_dma_start/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/oam_dma_start/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma_start/manifest.yml b/cinema/gb/mooneye-gb/acceptance/oam_dma_start/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/oam_dma_start/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/config.ini b/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/manifest.yml b/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/config.ini b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/manifest.yml b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/config.ini b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/manifest.yml b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/config.ini b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/manifest.yml b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/push_timing/config.ini b/cinema/gb/mooneye-gb/acceptance/push_timing/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/push_timing/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/push_timing/manifest.yml b/cinema/gb/mooneye-gb/acceptance/push_timing/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/push_timing/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/config.ini b/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/manifest.yml b/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/config.ini b/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/manifest.yml b/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/config.ini b/cinema/gb/mooneye-gb/config.ini new file mode 100644 index 000000000..6b38213c9 --- /dev/null +++ b/cinema/gb/mooneye-gb/config.ini @@ -0,0 +1,6 @@ +[testinfo] +skip=60 +frames=1 + +[ports.cinema] +sgb.borders=0 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/manifest.yml b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/config.ini b/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/manifest.yml b/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/manifest.yml b/cinema/gb/mooneye-gb/manifest.yml deleted file mode 100644 index bbd7d13ba..000000000 --- a/cinema/gb/mooneye-gb/manifest.yml +++ /dev/null @@ -1,4 +0,0 @@ -skip: 60 -frames: 1 -config: - sgb.borders: false diff --git a/cinema/gb/mooneye-gb/manual-only/sprite_priority/config.ini b/cinema/gb/mooneye-gb/manual-only/sprite_priority/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/manual-only/sprite_priority/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/manual-only/sprite_priority/manifest.yml b/cinema/gb/mooneye-gb/manual-only/sprite_priority/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/manual-only/sprite_priority/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/config.ini b/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/config.ini new file mode 100644 index 000000000..07d7f0398 --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/config.ini @@ -0,0 +1,5 @@ +[testinfo] +fail=1 + +[ports.cinema] +gb.model=CGB diff --git a/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/manifest.yml b/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/manifest.yml deleted file mode 100755 index c9aa5eb1d..000000000 --- a/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/manifest.yml +++ /dev/null @@ -1,3 +0,0 @@ -config: - gb.model: CGB -fail: true diff --git a/cinema/gb/mooneye-gb/misc/boot_div-A/config.ini b/cinema/gb/mooneye-gb/misc/boot_div-A/config.ini new file mode 100644 index 000000000..d1235047e --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/boot_div-A/config.ini @@ -0,0 +1,5 @@ +[testinfo] +fail=1 + +[ports.cinema] +gb.model=AGB diff --git a/cinema/gb/mooneye-gb/misc/boot_div-A/manifest.yml b/cinema/gb/mooneye-gb/misc/boot_div-A/manifest.yml deleted file mode 100644 index 82bc08df2..000000000 --- a/cinema/gb/mooneye-gb/misc/boot_div-A/manifest.yml +++ /dev/null @@ -1,3 +0,0 @@ -config: - gb.model: AGB -fail: true diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgb0/config.ini b/cinema/gb/mooneye-gb/misc/boot_div-cgb0/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/boot_div-cgb0/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgb0/manifest.yml b/cinema/gb/mooneye-gb/misc/boot_div-cgb0/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/misc/boot_div-cgb0/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/config.ini b/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/config.ini new file mode 100644 index 000000000..07d7f0398 --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/config.ini @@ -0,0 +1,5 @@ +[testinfo] +fail=1 + +[ports.cinema] +gb.model=CGB diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/manifest.yml b/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/manifest.yml deleted file mode 100644 index a697ada66..000000000 --- a/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/manifest.yml +++ /dev/null @@ -1 +0,0 @@ -fail: true diff --git a/cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini b/cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini new file mode 100644 index 000000000..07d7f0398 --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini @@ -0,0 +1,5 @@ +[testinfo] +fail=1 + +[ports.cinema] +gb.model=CGB diff --git a/cinema/gb/mooneye-gb/misc/boot_hwio-C/manifest.yml b/cinema/gb/mooneye-gb/misc/boot_hwio-C/manifest.yml deleted file mode 100755 index c9aa5eb1d..000000000 --- a/cinema/gb/mooneye-gb/misc/boot_hwio-C/manifest.yml +++ /dev/null @@ -1,3 +0,0 @@ -config: - gb.model: CGB -fail: true diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini b/cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini new file mode 100644 index 000000000..db562beed --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini @@ -0,0 +1,2 @@ +[ports.cinema] +gb.model=AGB diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-A/manifest.yml b/cinema/gb/mooneye-gb/misc/boot_regs-A/manifest.yml deleted file mode 100755 index f5c803cc5..000000000 --- a/cinema/gb/mooneye-gb/misc/boot_regs-A/manifest.yml +++ /dev/null @@ -1,2 +0,0 @@ -config: - gb.model: AGB diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini new file mode 100644 index 000000000..f041754a4 --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini @@ -0,0 +1,2 @@ +[ports.cinema] +gb.model=CGB diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/manifest.yml b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/manifest.yml deleted file mode 100755 index 6cd567986..000000000 --- a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/manifest.yml +++ /dev/null @@ -1,2 +0,0 @@ -config: - gb.model: CGB diff --git a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini new file mode 100644 index 000000000..07d7f0398 --- /dev/null +++ b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini @@ -0,0 +1,5 @@ +[testinfo] +fail=1 + +[ports.cinema] +gb.model=CGB diff --git a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/manifest.yml b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/manifest.yml deleted file mode 100644 index c9aa5eb1d..000000000 --- a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/manifest.yml +++ /dev/null @@ -1,3 +0,0 @@ -config: - gb.model: CGB -fail: true diff --git a/src/platform/python/cinema/test.py b/src/platform/python/cinema/test.py index 3a8e61b31..dd47708f9 100644 --- a/src/platform/python/cinema/test.py +++ b/src/platform/python/cinema/test.py @@ -6,10 +6,10 @@ import cinema.movie import itertools import glob import re -import yaml from copy import deepcopy from cinema import VideoFrame from cinema.util import dict_merge +from configparser import ConfigParser class CinemaTest(object): @@ -22,8 +22,15 @@ class CinemaTest(object): self.name = '.'.join(path) self.settings = settings try: - with open(os.path.join(self.path, 'manifest.yml'), 'r') as f: - dict_merge(self.settings, yaml.safe_load(f)) + with open(os.path.join(self.path, 'config.ini'), 'r') as f: + cfg = ConfigParser() + cfg.read_file(f) + settings = {} + if 'testinfo' in cfg: + settings = dict(cfg['testinfo']) + if 'ports.cinema' in cfg: + settings['config'] = dict(cfg['ports.cinema']) + dict_merge(self.settings, settings) except IOError: pass self.tests = {} @@ -49,9 +56,9 @@ class CinemaTest(object): def output_settings(self): output_settings = {} if 'frames' in self.settings: - output_settings['limit'] = self.settings['frames'] + output_settings['limit'] = int(self.settings['frames']) if 'skip' in self.settings: - output_settings['skip'] = self.settings['skip'] + output_settings['skip'] = int(self.settings['skip']) return output_settings def __lt__(self, other): diff --git a/src/platform/python/conftest.py b/src/platform/python/conftest.py index 06826a741..e495fedc7 100644 --- a/src/platform/python/conftest.py +++ b/src/platform/python/conftest.py @@ -3,7 +3,7 @@ import itertools import os import os.path import pytest -import yaml +from configparser import ConfigParser def pytest_addoption(parser): parser.addoption("--rebaseline", action="store_true", help="output a new baseline instead of testing") @@ -39,11 +39,12 @@ def pytest_exception_interact(node, call, report): diffNorm.save(os.path.join(outdir, DIFF_NORM % i)) if node.config.getoption("--mark-failing"): + settings = ConfigParser() try: - with open(os.path.join(vtest.path, 'manifest.yml'), 'r') as f: - settings = yaml.safe_load(f) + with open(os.path.join(vtest.path, 'config.ini'), 'r') as f: + settings.read_file(f) except IOError: - settings = {} - settings['fail'] = True - with open(os.path.join(vtest.path, 'manifest.yml'), 'w') as f: - yaml.dump(settings, f, default_flow_style=False) + pass + settings.set('testinfo', 'fail', '1') + with open(os.path.join(vtest.path, 'config.ini'), 'w') as f: + settings.write(f) diff --git a/src/platform/python/setup.py b/src/platform/python/setup.py index c9030313c..3a599c2e7 100644 --- a/src/platform/python/setup.py +++ b/src/platform/python/setup.py @@ -23,7 +23,7 @@ setup( packages=["mgba"], setup_requires=['cffi>=1.6', 'pytest-runner'], install_requires=['cffi>=1.6', 'cached-property'], - extras_require={'pil': ['Pillow>=2.3'], 'cinema': ['pyyaml', 'pytest']}, + extras_require={'pil': ['Pillow>=2.3'], 'cinema': ['pytest']}, tests_require=['pytest'], cffi_modules=["_builder.py:ffi"], license="MPL 2.0", diff --git a/src/platform/python/test_cinema.py b/src/platform/python/test_cinema.py index 9f413f0eb..ced169010 100644 --- a/src/platform/python/test_cinema.py +++ b/src/platform/python/test_cinema.py @@ -24,7 +24,7 @@ def pytest_generate_tests(metafunc): for test in testList: marks = [] xfail = test.settings.get('fail') - if xfail: + if xfail and bool(xfail): marks = pytest.mark.xfail(reason=xfail if isinstance(xfail, str) else None) params.append(pytest.param(test, id=test.name, marks=marks)) metafunc.parametrize('vtest', params, indirect=True) From a1c61edf5c161825458d7da2245b94a7f98b9bae Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 16 Jun 2020 19:13:57 -0700 Subject: [PATCH 15/20] CInema: Update mooneye-gb tests --- .../acceptance/add_sp_e_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/add_sp_e_timing/test.sym | 108 +- .../acceptance/bits/mem_oam/test.gb | Bin 32768 -> 32768 bytes .../acceptance/bits/mem_oam/test.sym | 42 +- .../mooneye-gb/acceptance/bits/reg_f/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/bits/reg_f/test.sym | 112 +- .../acceptance/bits/unused_hwio-GS/test.gb | Bin 32768 -> 32768 bytes .../acceptance/bits/unused_hwio-GS/test.sym | 976 +++++++++--------- .../acceptance/boot_div-S/config.ini | 1 + .../mooneye-gb/acceptance/boot_div-S/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/boot_div-S/test.sym | 108 +- .../acceptance/boot_div-dmg0/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_div-dmg0/test.sym | 108 +- .../acceptance/boot_div-dmgABCmgb/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_div-dmgABCmgb/test.sym | 108 +- .../acceptance/boot_div2-S/config.ini | 1 + .../mooneye-gb/acceptance/boot_div2-S/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_div2-S/test.sym | 108 +- .../acceptance/boot_hwio-S/config.ini | 1 + .../mooneye-gb/acceptance/boot_hwio-S/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_hwio-S/test.sym | 32 +- .../acceptance/boot_hwio-dmg0/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_hwio-dmg0/test.sym | 32 +- .../acceptance/boot_hwio-dmgABCmgb/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_hwio-dmgABCmgb/test.sym | 32 +- .../acceptance/boot_regs-dmg0/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_regs-dmg0/test.sym | 108 +- .../acceptance/boot_regs-dmgABC/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_regs-dmgABC/test.sym | 108 +- .../acceptance/boot_regs-mgb/config.ini | 1 + .../acceptance/boot_regs-mgb/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_regs-mgb/test.sym | 108 +- .../acceptance/boot_regs-sgb/config.ini | 1 + .../acceptance/boot_regs-sgb/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_regs-sgb/test.sym | 108 +- .../acceptance/boot_regs-sgb2/config.ini | 1 + .../acceptance/boot_regs-sgb2/test.gb | Bin 32768 -> 32768 bytes .../acceptance/boot_regs-sgb2/test.sym | 108 +- .../acceptance/call_cc_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/call_cc_timing/test.sym | 28 +- .../acceptance/call_cc_timing2/test.gb | Bin 32768 -> 32768 bytes .../acceptance/call_cc_timing2/test.sym | 108 +- .../mooneye-gb/acceptance/call_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/call_timing/test.sym | 28 +- .../acceptance/call_timing2/test.gb | Bin 32768 -> 32768 bytes .../acceptance/call_timing2/test.sym | 108 +- .../acceptance/di_timing-GS/test.gb | Bin 32768 -> 32768 bytes .../acceptance/di_timing-GS/test.sym | 28 +- .../mooneye-gb/acceptance/div_timing/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/div_timing/test.sym | 108 +- .../mooneye-gb/acceptance/ei_sequence/test.gb | Bin 32768 -> 32768 bytes .../acceptance/ei_sequence/test.sym | 108 +- .../mooneye-gb/acceptance/ei_timing/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/ei_timing/test.sym | 108 +- .../acceptance/halt_ime0_ei/test.gb | Bin 32768 -> 32768 bytes .../acceptance/halt_ime0_ei/test.sym | 28 +- .../halt_ime0_nointr_timing/test.gb | Bin 32768 -> 32768 bytes .../halt_ime0_nointr_timing/test.sym | 108 +- .../acceptance/halt_ime1_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/halt_ime1_timing/test.sym | 108 +- .../acceptance/halt_ime1_timing2-GS/test.gb | Bin 32768 -> 32768 bytes .../acceptance/halt_ime1_timing2-GS/test.sym | 108 +- .../acceptance/if_ie_registers/test.gb | Bin 32768 -> 32768 bytes .../acceptance/if_ie_registers/test.sym | 108 +- .../mooneye-gb/acceptance/instr/daa/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/instr/daa/test.sym | 62 +- .../acceptance/interrupts/ie_push/test.gb | Bin 32768 -> 32768 bytes .../acceptance/interrupts/ie_push/test.sym | 28 +- .../mooneye-gb/acceptance/intr_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/intr_timing/test.sym | 108 +- .../acceptance/jp_cc_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/jp_cc_timing/test.sym | 28 +- .../mooneye-gb/acceptance/jp_timing/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/jp_timing/test.sym | 28 +- .../acceptance/ld_hl_sp_e_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/ld_hl_sp_e_timing/test.sym | 108 +- .../acceptance/oam_dma/basic/test.gb | Bin 32768 -> 32768 bytes .../acceptance/oam_dma/basic/test.sym | 58 +- .../acceptance/oam_dma/reg_read/test.gb | Bin 32768 -> 32768 bytes .../acceptance/oam_dma/reg_read/test.sym | 96 +- .../config.ini | 0 .../test.gb | Bin 32768 -> 32768 bytes .../test.sym | 114 +- .../acceptance/oam_dma_restart/test.gb | Bin 32768 -> 32768 bytes .../acceptance/oam_dma_restart/test.sym | 108 +- .../acceptance/oam_dma_start/test.gb | Bin 32768 -> 32768 bytes .../acceptance/oam_dma_start/test.sym | 108 +- .../acceptance/oam_dma_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/oam_dma_timing/test.sym | 108 +- .../mooneye-gb/acceptance/pop_timing/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/pop_timing/test.sym | 108 +- .../ppu/hblank_ly_scx_timing-GS/test.gb | Bin 32768 -> 32768 bytes .../ppu/hblank_ly_scx_timing-GS/test.sym | 132 +-- .../acceptance/ppu/intr_1_2_timing-GS/test.gb | Bin 32768 -> 32768 bytes .../ppu/intr_1_2_timing-GS/test.sym | 124 +-- .../acceptance/ppu/intr_2_0_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/ppu/intr_2_0_timing/test.sym | 124 +-- .../ppu/intr_2_mode0_timing/test.gb | Bin 32768 -> 32768 bytes .../ppu/intr_2_mode0_timing/test.sym | 122 +-- .../ppu/intr_2_mode0_timing_sprites/test.gb | Bin 32768 -> 32768 bytes .../ppu/intr_2_mode0_timing_sprites/test.sym | 488 ++++----- .../ppu/intr_2_mode3_timing/test.gb | Bin 32768 -> 32768 bytes .../ppu/intr_2_mode3_timing/test.sym | 122 +-- .../ppu/intr_2_oam_ok_timing/test.gb | Bin 32768 -> 32768 bytes .../ppu/intr_2_oam_ok_timing/test.sym | 124 +-- .../config.ini | 0 .../test.gb | Bin 32768 -> 32768 bytes .../test.sym | 88 +- .../ppu/lcdon_write_timing-GS/test.gb | Bin 32768 -> 32768 bytes .../ppu/lcdon_write_timing-GS/test.sym | 86 +- .../acceptance/ppu/stat_irq_blocking/test.gb | Bin 32768 -> 32768 bytes .../acceptance/ppu/stat_irq_blocking/test.sym | 132 +-- .../acceptance/ppu/stat_lyc_onoff/test.gb | Bin 32768 -> 32768 bytes .../acceptance/ppu/stat_lyc_onoff/test.sym | 92 +- .../ppu/vblank_stat_intr-GS/test.gb | Bin 32768 -> 32768 bytes .../ppu/vblank_stat_intr-GS/test.sym | 140 +-- .../mooneye-gb/acceptance/push_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/push_timing/test.sym | 108 +- .../mooneye-gb/acceptance/rapid_di_ei/test.gb | Bin 32768 -> 32768 bytes .../acceptance/rapid_di_ei/test.sym | 108 +- .../acceptance/ret_cc_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/ret_cc_timing/test.sym | 28 +- .../mooneye-gb/acceptance/ret_timing/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/ret_timing/test.sym | 28 +- .../acceptance/reti_intr_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/reti_intr_timing/test.sym | 108 +- .../mooneye-gb/acceptance/reti_timing/test.gb | Bin 32768 -> 32768 bytes .../acceptance/reti_timing/test.sym | 28 +- .../mooneye-gb/acceptance/rst_timing/test.gb | Bin 32768 -> 32768 bytes .../mooneye-gb/acceptance/rst_timing/test.sym | 108 +- .../serial/boot_sclk_align-dmgABCmgb/test.gb | Bin 32768 -> 32768 bytes .../serial/boot_sclk_align-dmgABCmgb/test.sym | 108 +- .../acceptance/timer/div_write/test.gb | Bin 32768 -> 32768 bytes .../acceptance/timer/div_write/test.sym | 28 +- .../acceptance/timer/rapid_toggle/test.gb | Bin 32768 -> 32768 bytes .../acceptance/timer/rapid_toggle/test.sym | 108 +- .../mooneye-gb/acceptance/timer/tim00/test.gb | Bin 32768 -> 32768 bytes .../acceptance/timer/tim00/test.sym | 108 +- .../timer/tim00_div_trigger/test.gb | Bin 32768 -> 32768 bytes .../timer/tim00_div_trigger/test.sym | 108 +- .../mooneye-gb/acceptance/timer/tim01/test.gb | Bin 32768 -> 32768 bytes .../acceptance/timer/tim01/test.sym | 108 +- .../timer/tim01_div_trigger/test.gb | Bin 32768 -> 32768 bytes .../timer/tim01_div_trigger/test.sym | 108 +- .../mooneye-gb/acceptance/timer/tim10/test.gb | Bin 32768 -> 32768 bytes .../acceptance/timer/tim10/test.sym | 108 +- .../timer/tim10_div_trigger/test.gb | Bin 32768 -> 32768 bytes .../timer/tim10_div_trigger/test.sym | 108 +- .../mooneye-gb/acceptance/timer/tim11/test.gb | Bin 32768 -> 32768 bytes .../acceptance/timer/tim11/test.sym | 108 +- .../timer/tim11_div_trigger/test.gb | Bin 32768 -> 32768 bytes .../timer/tim11_div_trigger/test.sym | 108 +- .../acceptance/timer/tima_reload/test.gb | Bin 32768 -> 32768 bytes .../acceptance/timer/tima_reload/test.sym | 108 +- .../timer/tima_write_reloading/test.gb | Bin 32768 -> 32768 bytes .../timer/tima_write_reloading/test.sym | 108 +- .../timer/tma_write_reloading/test.gb | Bin 32768 -> 32768 bytes .../timer/tma_write_reloading/test.sym | 108 +- .../mbc1/bits_bank1/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc1/bits_bank1/config.ini | 2 + .../emulator-only/mbc1/bits_bank1/test.gb | Bin 0 -> 65536 bytes .../emulator-only/mbc1/bits_bank1/test.sym | 68 ++ .../mbc1/bits_bank2/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc1/bits_bank2/config.ini | 2 + .../emulator-only/mbc1/bits_bank2/test.gb | Bin 0 -> 32768 bytes .../emulator-only/mbc1/bits_bank2/test.sym | 72 ++ .../emulator-only/mbc1/bits_mode/config.ini | 2 + .../emulator-only/mbc1/bits_mode/test.gb | Bin 0 -> 32768 bytes .../emulator-only/mbc1/bits_mode/test.sym | 74 ++ .../emulator-only/mbc1/bits_ramg/config.ini | 2 + .../emulator-only/mbc1/bits_ramg/test.gb | Bin 0 -> 65536 bytes .../emulator-only/mbc1/bits_ramg/test.sym | 86 ++ .../mbc1/multicart_rom_8Mb/test.gb | Bin 1048576 -> 1048576 bytes .../mbc1/multicart_rom_8Mb/test.sym | 76 +- .../emulator-only/mbc1/rom_16Mb/test.gb | Bin 2097152 -> 2097152 bytes .../emulator-only/mbc1/rom_16Mb/test.sym | 76 +- .../emulator-only/mbc1/rom_1Mb/test.gb | Bin 131072 -> 131072 bytes .../emulator-only/mbc1/rom_1Mb/test.sym | 76 +- .../emulator-only/mbc1/rom_2Mb/test.gb | Bin 262144 -> 262144 bytes .../emulator-only/mbc1/rom_2Mb/test.sym | 76 +- .../emulator-only/mbc1/rom_4Mb/test.gb | Bin 524288 -> 524288 bytes .../emulator-only/mbc1/rom_4Mb/test.sym | 76 +- .../emulator-only/mbc1/rom_8Mb/test.gb | Bin 1048576 -> 1048576 bytes .../emulator-only/mbc1/rom_8Mb/test.sym | 76 +- .../emulator-only/mbc2/bits_ramg/config.ini | 2 + .../emulator-only/mbc2/bits_ramg/test.gb | Bin 0 -> 32768 bytes .../emulator-only/mbc2/bits_ramg/test.sym | 86 ++ .../emulator-only/mbc2/bits_romb/config.ini | 2 + .../emulator-only/mbc2/bits_romb/test.gb | Bin 0 -> 65536 bytes .../emulator-only/mbc2/bits_romb/test.sym | 68 ++ .../mbc2/bits_unused/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc2/bits_unused/config.ini | 2 + .../emulator-only/mbc2/bits_unused/test.gb | Bin 0 -> 262144 bytes .../emulator-only/mbc2/bits_unused/test.sym | 67 ++ .../emulator-only/mbc2/ram/baseline_0000.png | Bin 0 -> 528 bytes .../mooneye-gb/emulator-only/mbc2/ram/test.gb | Bin 0 -> 32768 bytes .../emulator-only/mbc2/ram/test.sym | 94 ++ .../mbc2/rom_1Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc2/rom_1Mb/test.gb | Bin 0 -> 131072 bytes .../emulator-only/mbc2/rom_1Mb/test.sym | 79 ++ .../mbc2/rom_2Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc2/rom_2Mb/test.gb | Bin 0 -> 262144 bytes .../emulator-only/mbc2/rom_2Mb/test.sym | 79 ++ .../mbc2/rom_512kb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc2/rom_512kb/test.gb | Bin 0 -> 65536 bytes .../emulator-only/mbc2/rom_512kb/test.sym | 79 ++ .../mbc5/rom_16Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_16Mb/test.gb | Bin 0 -> 2097152 bytes .../emulator-only/mbc5/rom_16Mb/test.sym | 91 ++ .../mbc5/rom_1Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_1Mb/test.gb | Bin 0 -> 131072 bytes .../emulator-only/mbc5/rom_1Mb/test.sym | 91 ++ .../mbc5/rom_2Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_2Mb/test.gb | Bin 0 -> 262144 bytes .../emulator-only/mbc5/rom_2Mb/test.sym | 91 ++ .../mbc5/rom_32Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_32Mb/test.gb | Bin 0 -> 4194304 bytes .../emulator-only/mbc5/rom_32Mb/test.sym | 91 ++ .../mbc5/rom_4Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_4Mb/test.gb | Bin 0 -> 524288 bytes .../emulator-only/mbc5/rom_4Mb/test.sym | 91 ++ .../mbc5/rom_512kb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_512kb/test.gb | Bin 0 -> 65536 bytes .../emulator-only/mbc5/rom_512kb/test.sym | 91 ++ .../mbc5/rom_64Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_64Mb/test.gb | Bin 0 -> 8388608 bytes .../emulator-only/mbc5/rom_64Mb/test.sym | 91 ++ .../mbc5/rom_8Mb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc5/rom_8Mb/test.gb | Bin 0 -> 1048576 bytes .../emulator-only/mbc5/rom_8Mb/test.sym | 91 ++ .../madness/mgb_oam_dma_halt_sprites/test.gb | Bin 32768 -> 32768 bytes .../madness/mgb_oam_dma_halt_sprites/test.sym | 20 +- .../manual-only/sprite_priority/test.gb | Bin 32768 -> 32768 bytes .../manual-only/sprite_priority/test.sym | 16 +- .../misc/bits/unused_hwio-C/config.ini | 1 + .../misc/bits/unused_hwio-C/test.gb | Bin 32768 -> 32768 bytes .../misc/bits/unused_hwio-C/test.sym | 976 +++++++++--------- .../gb/mooneye-gb/misc/boot_div-A/config.ini | 1 + cinema/gb/mooneye-gb/misc/boot_div-A/test.gb | Bin 32768 -> 32768 bytes cinema/gb/mooneye-gb/misc/boot_div-A/test.sym | 108 +- .../gb/mooneye-gb/misc/boot_div-cgb0/test.gb | Bin 32768 -> 32768 bytes .../gb/mooneye-gb/misc/boot_div-cgb0/test.sym | 108 +- .../mooneye-gb/misc/boot_div-cgbABCDE/test.gb | Bin 32768 -> 32768 bytes .../misc/boot_div-cgbABCDE/test.sym | 108 +- .../gb/mooneye-gb/misc/boot_hwio-C/config.ini | 1 + cinema/gb/mooneye-gb/misc/boot_hwio-C/test.gb | Bin 32768 -> 32768 bytes .../gb/mooneye-gb/misc/boot_hwio-C/test.sym | 32 +- .../gb/mooneye-gb/misc/boot_regs-A/config.ini | 1 + cinema/gb/mooneye-gb/misc/boot_regs-A/test.gb | Bin 32768 -> 32768 bytes .../gb/mooneye-gb/misc/boot_regs-A/test.sym | 108 +- .../mooneye-gb/misc/boot_regs-cgb/config.ini | 1 + .../gb/mooneye-gb/misc/boot_regs-cgb/test.gb | Bin 32768 -> 32768 bytes .../gb/mooneye-gb/misc/boot_regs-cgb/test.sym | 108 +- .../misc/ppu/vblank_stat_intr-C/config.ini | 1 + .../misc/ppu/vblank_stat_intr-C/test.gb | Bin 32768 -> 32768 bytes .../misc/ppu/vblank_stat_intr-C/test.sym | 140 +-- cinema/gb/mooneye-gb/update.py | 19 +- 257 files changed, 6837 insertions(+), 5142 deletions(-) rename cinema/gb/mooneye-gb/acceptance/oam_dma/{sources-dmgABCmgbS => sources-GS}/config.ini (100%) rename cinema/gb/mooneye-gb/acceptance/oam_dma/{sources-dmgABCmgbS => sources-GS}/test.gb (93%) rename cinema/gb/mooneye-gb/acceptance/oam_dma/{sources-dmgABCmgbS => sources-GS}/test.sym (51%) rename cinema/gb/mooneye-gb/acceptance/ppu/{lcdon_timing-dmgABCmgbS => lcdon_timing-GS}/config.ini (100%) rename cinema/gb/mooneye-gb/acceptance/ppu/{lcdon_timing-dmgABCmgbS => lcdon_timing-GS}/test.gb (97%) rename cinema/gb/mooneye-gb/acceptance/ppu/{lcdon_timing-dmgABCmgbS => lcdon_timing-GS}/test.sym (58%) create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/config.ini create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/ram/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/ram/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/ram/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_1Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_1Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_1Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_2Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_2Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_2Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_16Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_16Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_16Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_1Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_1Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_1Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_32Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_32Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_32Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_4Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_4Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_4Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_64Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_64Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_64Mb/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/test.gb create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/test.sym diff --git a/cinema/gb/mooneye-gb/acceptance/add_sp_e_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/add_sp_e_timing/test.gb index be6e3115083a36eda447bf230c063d8a1d734102..9e9c79c88b8139c162bb8114af1825201c7c56d0 100644 GIT binary patch delta 876 zcmZo@U}|V!+Th2?q^mzUfKf(Zrnlk0|B4O&1#d7iCNP|xxw(e1!mYl_`|Kv~pw#rt z;*!*&VurIoJ`ibp0m%;?+ck87vW~^YsYNB3`FU_@Cy%P_8bTn2o4i9(i%S&J5;JpB zQy5OJ5C6~+4-`~TU^wlpp$XE=03@sw7(O)mf9Tq&!E?4Bq)AbMK}13n$f)-Rsg>Xc zG8G_z;j}kcqZ>?Pga3z4OpTcOAkG2V91J$V31&dE|A!u22Gpb291Yg!4Aa=;|DhX~ zMr3^mo0Gu?xWEi(_5aX^-++3srx{LXgEhLsG`9GE=*6!Qq7PwnG1vePm;vqnA0`lE zK>g`zutp!4#y0;C{lsWIT;(kcjx7Ag%>s z33&%QCm@ZBn5^h6&e%HH(%V#Frg!Z#`FHX*t@#&JPAW1qFfu5tKfK8M>uK||N!}k1 UCr$42mSI`#ee~pJM0No&)4K|YtAV%%h--mZ zLe#;|2}q+M2L_41>mN8haDL$Zz{^hXfrH(j2kwWfCp&waD)f8TK9heZZ_}E8LFJ?( mLjxm&!urEAyuY3{KO5ow@o>cC8QwB13%!q?-0a8{WC8$+G(~Ix diff --git a/cinema/gb/mooneye-gb/acceptance/add_sp_e_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/add_sp_e_timing/test.sym index 35c7019e8..0c0967d61 100644 --- a/cinema/gb/mooneye-gb/acceptance/add_sp_e_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/add_sp_e_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 main@wait_ly_5 00:0156 main@wait_ly_6 @@ -99,6 +99,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -110,29 +129,10 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000002 _sizeof_result_tmp 00000002 _sizeof_result_round1 00000030 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/bits/mem_oam/test.gb b/cinema/gb/mooneye-gb/acceptance/bits/mem_oam/test.gb index 4096ddac7289ea4df1a86b71cd4acbd89ae05f91..59325bd1c256d73e4c9b279a8c62ff2401c916b0 100644 GIT binary patch delta 231 zcmZo@U}|V!+Th2SBFbjS@ZfBVha$s2wgqIjP9dz{sGm{_vT}J3M5VuX-Hae1K8j8~_k`V|V}n delta 291 zcmZo@U}|V!+Th1nFYEI8Y?X&1!#}nKcK^%k{{27H&S=K~WH20B!l=xu@anT-8ROv( z?q`>HoW0}`l3HA%;P1^K#&GhpVjn`>&C%1xO2N^`N5Qa|LCgs#xf+|K0a)@s64-p6 z(a>)5Kl|V8>{T9T(>%`3nB-yV(&D{lLpk@PUKfp9k)T*H3Qt&@|rZQTt5(oxDwJ{sonjiVO{m3<~QHAM&W!ctT1^ jm|Nm|IFMDP#4YiIi+TA8C5fL0&z|0V-$T)Sq5u~FEZ&A7 diff --git a/cinema/gb/mooneye-gb/acceptance/bits/mem_oam/test.sym b/cinema/gb/mooneye-gb/acceptance/bits/mem_oam/test.sym index 72dd8a625..505f7991a 100644 --- a/cinema/gb/mooneye-gb/acceptance/bits/mem_oam/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/bits/mem_oam/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/bits/mem_oam.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,18 +19,18 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main -00:016f test_finish -00:0176 test_finish@quit_inline_1 -00:0187 fail_1 -00:018e fail_1@quit_inline_2 -00:01a4 fail_0 -00:01ab fail_0@quit_inline_3 +00:0171 test_finish +00:0178 test_finish@quit_inline_1 +00:0189 fail_1 +00:0190 fail_1@quit_inline_2 +00:01a6 fail_0 +00:01ad fail_0@quit_inline_3 [definitions] 0000000a _sizeof_clear_vram @@ -41,10 +41,10 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -0000001f _sizeof_main +00000021 _sizeof_main 00000018 _sizeof_test_finish 0000001d _sizeof_fail_1 diff --git a/cinema/gb/mooneye-gb/acceptance/bits/reg_f/test.gb b/cinema/gb/mooneye-gb/acceptance/bits/reg_f/test.gb index d0dc344184e63329903aece5536f40f0d1e318ec..1d95080ff73c688cc35b9a4d4e17efe6868e7083 100644 GIT binary patch delta 863 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 literal 32768 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 diff --git a/cinema/gb/mooneye-gb/acceptance/bits/unused_hwio-GS/test.sym b/cinema/gb/mooneye-gb/acceptance/bits/unused_hwio-GS/test.sym index 877dff573..54eadcfbb 100644 --- a/cinema/gb/mooneye-gb/acceptance/bits/unused_hwio-GS/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/bits/unused_hwio-GS/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/bits/unused_hwio-GS.gb". [labels] -01:48bb clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48cf memcpy -01:48d8 memset -01:4898 print_hex4 -01:48c5 print_hex8 -01:48e8 print_inline_string -01:48a4 print_load_font -01:48b0 print_newline -01:48e1 print_string +01:48c5 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48d9 memcpy +01:48e2 memset +01:48a2 print_hex4 +01:48cf print_hex8 +01:48f2 print_inline_string +01:48ae print_load_font +01:48ba print_newline +01:48eb print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -21,330 +21,330 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main -00:0161 _test_data_0 -00:0177 _finish_0 -00:0187 _test_data_1 -00:019d _finish_1 -00:01ad _test_data_2 -00:01c3 _finish_2 -00:01d3 _test_data_3 -00:01e9 _finish_3 -00:01f9 _test_data_4 -00:020f _finish_4 -00:021f _test_data_5 -00:0235 _finish_5 -00:0245 _test_data_6 -00:025b _finish_6 -00:026b _test_data_7 -00:0281 _finish_7 -00:0291 _test_data_8 -00:02a7 _finish_8 -00:02b7 _test_data_9 -00:02cd _finish_9 -00:02dd _test_data_10 -00:02f3 _finish_10 -00:0303 _test_data_11 -00:0319 _finish_11 -00:0329 _test_data_12 -00:033f _finish_12 -00:034f _test_data_13 -00:0365 _finish_13 -00:0375 _test_data_14 -00:038b _finish_14 -00:039b _test_data_15 -00:03b1 _finish_15 -00:03c1 _test_data_16 -00:03d7 _finish_16 -00:03e7 _test_data_17 -00:03fd _finish_17 -00:040d _test_data_18 -00:0423 _finish_18 -00:0433 _test_data_19 -00:0449 _finish_19 -00:0459 _test_data_20 -00:046f _finish_20 -00:047f _test_data_21 -00:0495 _finish_21 -00:04a5 _test_data_22 -00:04bb _finish_22 -00:04cb _test_data_23 -00:04e1 _finish_23 -00:04f1 _test_data_24 -00:0507 _finish_24 -00:0517 _test_data_25 -00:052d _finish_25 -00:053d _test_data_26 -00:0553 _finish_26 -00:0563 _test_data_27 -00:0579 _finish_27 -00:0589 _test_data_28 -00:059f _finish_28 -00:05af _test_data_29 -00:05c5 _finish_29 -00:05d5 _test_data_30 -00:05eb _finish_30 -00:05fb _test_data_31 -00:0611 _finish_31 -00:0621 _test_data_32 -00:0637 _finish_32 -00:0647 _test_data_33 -00:065d _finish_33 -00:066d _test_data_34 -00:0683 _finish_34 -00:0693 _test_data_35 -00:06a9 _finish_35 -00:06b9 _test_data_36 -00:06cf _finish_36 -00:06df _test_data_37 -00:06f5 _finish_37 -00:0705 _test_data_38 -00:071b _finish_38 -00:072b _test_data_39 -00:0741 _finish_39 -00:0751 _test_data_40 -00:0767 _finish_40 -00:0777 _test_data_41 -00:078d _finish_41 -00:079d _test_data_42 -00:07b3 _finish_42 -00:07c3 _test_data_43 -00:07d9 _finish_43 -00:07e9 _test_data_44 -00:07ff _finish_44 -00:080f _test_data_45 -00:0825 _finish_45 -00:0835 _test_data_46 -00:084b _finish_46 -00:085b _test_data_47 -00:0871 _finish_47 -00:0881 _test_data_48 -00:0897 _finish_48 -00:08a7 _test_data_49 -00:08bd _finish_49 -00:08cd _test_data_50 -00:08e3 _finish_50 -00:08f3 _test_data_51 -00:0909 _finish_51 -00:0919 _test_data_52 -00:092f _finish_52 -00:093f _test_data_53 -00:0955 _finish_53 -00:0965 _test_data_54 -00:097b _finish_54 -00:098b _test_data_55 -00:09a1 _finish_55 -00:09b1 _test_data_56 -00:09c7 _finish_56 -00:09d7 _test_data_57 -00:09ed _finish_57 -00:09fd _test_data_58 -00:0a13 _finish_58 -00:0a23 _test_data_59 -00:0a39 _finish_59 -00:0a49 _test_data_60 -00:0a5f _finish_60 -00:0a6f _test_data_61 -00:0a85 _finish_61 -00:0a95 _test_data_62 -00:0aab _finish_62 -00:0abb _test_data_63 -00:0ad1 _finish_63 -00:0ae1 _test_data_64 -00:0af7 _finish_64 -00:0b07 _test_data_65 -00:0b1d _finish_65 -00:0b2d _test_data_66 -00:0b43 _finish_66 -00:0b53 _test_data_67 -00:0b69 _finish_67 -00:0b79 _test_data_68 -00:0b8f _finish_68 -00:0b9f _test_data_69 -00:0bb5 _finish_69 -00:0bc5 _test_data_70 -00:0bdb _finish_70 -00:0beb _test_data_71 -00:0c01 _finish_71 -00:0c11 _test_data_72 -00:0c27 _finish_72 -00:0c37 _test_data_73 -00:0c4d _finish_73 -00:0c5d _test_data_74 -00:0c73 _finish_74 -00:0c83 _test_data_75 -00:0c99 _finish_75 -00:0ca9 _test_data_76 -00:0cbf _finish_76 -00:0ccf _test_data_77 -00:0ce5 _finish_77 -00:0cf5 _test_data_78 -00:0d0b _finish_78 -00:0d1b _test_data_79 -00:0d31 _finish_79 -00:0d41 _test_data_80 -00:0d57 _finish_80 -00:0d67 _test_data_81 -00:0d7d _finish_81 -00:0d8d _test_data_82 -00:0da3 _finish_82 -00:0db3 _test_data_83 -00:0dc9 _finish_83 -00:0dd9 _test_data_84 -00:0def _finish_84 -00:0dff _test_data_85 -00:0e15 _finish_85 -00:0e25 _test_data_86 -00:0e3b _finish_86 -00:0e4b _test_data_87 -00:0e61 _finish_87 -00:0e71 _test_data_88 -00:0e87 _finish_88 -00:0e97 _test_data_89 -00:0ead _finish_89 -00:0ebd _test_data_90 -00:0ed3 _finish_90 -00:0ee3 _test_data_91 -00:0ef9 _finish_91 -00:0f09 _test_data_92 -00:0f1f _finish_92 -00:0f2f _test_data_93 -00:0f45 _finish_93 -00:0f55 _test_data_94 -00:0f6b _finish_94 -00:0f7b _test_data_95 -00:0f91 _finish_95 -00:0fa1 _test_data_96 -00:0fb7 _finish_96 -00:0fc7 _test_data_97 -00:0fdd _finish_97 -00:0fed _test_data_98 -00:1003 _finish_98 -00:1013 _test_data_99 -00:1029 _finish_99 -00:1039 _test_data_100 -00:104f _finish_100 -00:105f _test_data_101 -00:1075 _finish_101 -00:1085 _test_data_102 -00:109b _finish_102 -00:10ab _test_data_103 -00:10c1 _finish_103 -00:10d1 _test_data_104 -00:10e7 _finish_104 -00:10f7 _test_data_105 -00:110d _finish_105 -00:111d _test_data_106 -00:1133 _finish_106 -00:1143 _test_data_107 -00:1159 _finish_107 -00:1169 _test_data_108 -00:117f _finish_108 -00:118f _test_data_109 -00:11a5 _finish_109 -00:11b5 _test_data_110 -00:11cb _finish_110 -00:11db _test_data_111 -00:11f1 _finish_111 -00:1201 _test_data_112 -00:1217 _finish_112 -00:1227 _test_data_113 -00:123d _finish_113 -00:124d _test_data_114 -00:1263 _finish_114 -00:1273 _test_data_115 -00:1289 _finish_115 -00:1299 _test_data_116 -00:12af _finish_116 -00:12bf _test_data_117 -00:12d5 _finish_117 -00:12e5 _test_data_118 -00:12fb _finish_118 -00:130b _test_data_119 -00:1321 _finish_119 -00:1331 _test_data_120 -00:1347 _finish_120 -00:1357 _test_data_121 -00:136d _finish_121 -00:137d _test_data_122 -00:1393 _finish_122 -00:13a3 _test_data_123 -00:13b9 _finish_123 -00:13c9 _test_data_124 -00:13df _finish_124 -00:13ef _test_data_125 -00:1405 _finish_125 -00:1415 _test_data_126 -00:142b _finish_126 -00:143b _test_data_127 -00:1451 _finish_127 -00:1461 _test_data_128 -00:1477 _finish_128 -00:1487 _test_data_129 -00:149d _finish_129 -00:14ad _test_data_130 -00:14c3 _finish_130 -00:14d3 _test_data_131 -00:14e9 _finish_131 -00:14f9 _test_data_132 -00:150f _finish_132 -00:151f _test_data_133 -00:1535 _finish_133 -00:1545 _test_data_134 -00:155b _finish_134 -00:156b _test_data_135 -00:1581 _finish_135 -00:1591 _test_data_136 -00:15a7 _finish_136 -00:15b7 _test_data_137 -00:15cd _finish_137 -00:15dd _test_data_138 -00:15f3 _finish_138 -00:1603 _test_data_139 -00:1619 _finish_139 -00:1629 _test_data_140 -00:163f _finish_140 -00:164f _test_data_141 -00:1665 _finish_141 -00:1675 _test_data_142 -00:168b _finish_142 -00:169b _test_data_143 -00:16b1 _finish_143 -00:16c1 _test_data_144 -00:16d7 _finish_144 -00:16e7 _test_data_145 -00:16fd _finish_145 -00:170d _test_data_146 -00:1723 _finish_146 -00:1733 _test_data_147 -00:1749 _finish_147 -00:1759 _test_data_148 -00:176f _finish_148 -00:177f _test_data_149 -00:1795 _finish_149 -00:17a5 _test_data_150 -00:17bb _finish_150 -00:17cb _test_data_151 -00:17e1 _finish_151 -00:17f1 _test_data_152 -00:1807 _finish_152 -00:1817 _test_data_153 -00:182d _finish_153 -00:1834 _finish_153@quit_inline_1 -00:1845 run_testcase -00:1863 run_testcase@quit_inline_2 -00:18e6 fetch_test_data -00:1900 print_got -00:1912 _print_zero -00:1916 _print_one -00:1918 _print_bit -00:1921 _skip -00:1922 _next +00:0164 _test_data_0 +00:017a _finish_0 +00:018d _test_data_1 +00:01a3 _finish_1 +00:01b6 _test_data_2 +00:01cc _finish_2 +00:01df _test_data_3 +00:01f5 _finish_3 +00:0208 _test_data_4 +00:021e _finish_4 +00:0231 _test_data_5 +00:0247 _finish_5 +00:025a _test_data_6 +00:0270 _finish_6 +00:0283 _test_data_7 +00:0299 _finish_7 +00:02ac _test_data_8 +00:02c2 _finish_8 +00:02d5 _test_data_9 +00:02eb _finish_9 +00:02fe _test_data_10 +00:0314 _finish_10 +00:0327 _test_data_11 +00:033d _finish_11 +00:0350 _test_data_12 +00:0366 _finish_12 +00:0379 _test_data_13 +00:038f _finish_13 +00:03a2 _test_data_14 +00:03b8 _finish_14 +00:03cb _test_data_15 +00:03e1 _finish_15 +00:03f4 _test_data_16 +00:040a _finish_16 +00:041d _test_data_17 +00:0433 _finish_17 +00:0446 _test_data_18 +00:045c _finish_18 +00:046f _test_data_19 +00:0485 _finish_19 +00:0498 _test_data_20 +00:04ae _finish_20 +00:04c1 _test_data_21 +00:04d7 _finish_21 +00:04ea _test_data_22 +00:0500 _finish_22 +00:0513 _test_data_23 +00:0529 _finish_23 +00:053c _test_data_24 +00:0552 _finish_24 +00:0565 _test_data_25 +00:057b _finish_25 +00:058e _test_data_26 +00:05a4 _finish_26 +00:05b7 _test_data_27 +00:05cd _finish_27 +00:05e0 _test_data_28 +00:05f6 _finish_28 +00:0609 _test_data_29 +00:061f _finish_29 +00:0632 _test_data_30 +00:0648 _finish_30 +00:065b _test_data_31 +00:0671 _finish_31 +00:0684 _test_data_32 +00:069a _finish_32 +00:06ad _test_data_33 +00:06c3 _finish_33 +00:06d6 _test_data_34 +00:06ec _finish_34 +00:06ff _test_data_35 +00:0715 _finish_35 +00:0728 _test_data_36 +00:073e _finish_36 +00:0751 _test_data_37 +00:0767 _finish_37 +00:077a _test_data_38 +00:0790 _finish_38 +00:07a3 _test_data_39 +00:07b9 _finish_39 +00:07cc _test_data_40 +00:07e2 _finish_40 +00:07f5 _test_data_41 +00:080b _finish_41 +00:081e _test_data_42 +00:0834 _finish_42 +00:0847 _test_data_43 +00:085d _finish_43 +00:0870 _test_data_44 +00:0886 _finish_44 +00:0899 _test_data_45 +00:08af _finish_45 +00:08c2 _test_data_46 +00:08d8 _finish_46 +00:08eb _test_data_47 +00:0901 _finish_47 +00:0914 _test_data_48 +00:092a _finish_48 +00:093d _test_data_49 +00:0953 _finish_49 +00:0966 _test_data_50 +00:097c _finish_50 +00:098f _test_data_51 +00:09a5 _finish_51 +00:09b8 _test_data_52 +00:09ce _finish_52 +00:09e1 _test_data_53 +00:09f7 _finish_53 +00:0a0a _test_data_54 +00:0a20 _finish_54 +00:0a33 _test_data_55 +00:0a49 _finish_55 +00:0a5c _test_data_56 +00:0a72 _finish_56 +00:0a85 _test_data_57 +00:0a9b _finish_57 +00:0aae _test_data_58 +00:0ac4 _finish_58 +00:0ad7 _test_data_59 +00:0aed _finish_59 +00:0b00 _test_data_60 +00:0b16 _finish_60 +00:0b29 _test_data_61 +00:0b3f _finish_61 +00:0b52 _test_data_62 +00:0b68 _finish_62 +00:0b7b _test_data_63 +00:0b91 _finish_63 +00:0ba4 _test_data_64 +00:0bba _finish_64 +00:0bcd _test_data_65 +00:0be3 _finish_65 +00:0bf6 _test_data_66 +00:0c0c _finish_66 +00:0c1f _test_data_67 +00:0c35 _finish_67 +00:0c48 _test_data_68 +00:0c5e _finish_68 +00:0c71 _test_data_69 +00:0c87 _finish_69 +00:0c9a _test_data_70 +00:0cb0 _finish_70 +00:0cc3 _test_data_71 +00:0cd9 _finish_71 +00:0cec _test_data_72 +00:0d02 _finish_72 +00:0d15 _test_data_73 +00:0d2b _finish_73 +00:0d3e _test_data_74 +00:0d54 _finish_74 +00:0d67 _test_data_75 +00:0d7d _finish_75 +00:0d90 _test_data_76 +00:0da6 _finish_76 +00:0db9 _test_data_77 +00:0dcf _finish_77 +00:0de2 _test_data_78 +00:0df8 _finish_78 +00:0e0b _test_data_79 +00:0e21 _finish_79 +00:0e34 _test_data_80 +00:0e4a _finish_80 +00:0e5d _test_data_81 +00:0e73 _finish_81 +00:0e86 _test_data_82 +00:0e9c _finish_82 +00:0eaf _test_data_83 +00:0ec5 _finish_83 +00:0ed8 _test_data_84 +00:0eee _finish_84 +00:0f01 _test_data_85 +00:0f17 _finish_85 +00:0f2a _test_data_86 +00:0f40 _finish_86 +00:0f53 _test_data_87 +00:0f69 _finish_87 +00:0f7c _test_data_88 +00:0f92 _finish_88 +00:0fa5 _test_data_89 +00:0fbb _finish_89 +00:0fce _test_data_90 +00:0fe4 _finish_90 +00:0ff7 _test_data_91 +00:100d _finish_91 +00:1020 _test_data_92 +00:1036 _finish_92 +00:1049 _test_data_93 +00:105f _finish_93 +00:1072 _test_data_94 +00:1088 _finish_94 +00:109b _test_data_95 +00:10b1 _finish_95 +00:10c4 _test_data_96 +00:10da _finish_96 +00:10ed _test_data_97 +00:1103 _finish_97 +00:1116 _test_data_98 +00:112c _finish_98 +00:113f _test_data_99 +00:1155 _finish_99 +00:1168 _test_data_100 +00:117e _finish_100 +00:1191 _test_data_101 +00:11a7 _finish_101 +00:11ba _test_data_102 +00:11d0 _finish_102 +00:11e3 _test_data_103 +00:11f9 _finish_103 +00:120c _test_data_104 +00:1222 _finish_104 +00:1235 _test_data_105 +00:124b _finish_105 +00:125e _test_data_106 +00:1274 _finish_106 +00:1287 _test_data_107 +00:129d _finish_107 +00:12b0 _test_data_108 +00:12c6 _finish_108 +00:12d9 _test_data_109 +00:12ef _finish_109 +00:1302 _test_data_110 +00:1318 _finish_110 +00:132b _test_data_111 +00:1341 _finish_111 +00:1354 _test_data_112 +00:136a _finish_112 +00:137d _test_data_113 +00:1393 _finish_113 +00:13a6 _test_data_114 +00:13bc _finish_114 +00:13cf _test_data_115 +00:13e5 _finish_115 +00:13f8 _test_data_116 +00:140e _finish_116 +00:1421 _test_data_117 +00:1437 _finish_117 +00:144a _test_data_118 +00:1460 _finish_118 +00:1473 _test_data_119 +00:1489 _finish_119 +00:149c _test_data_120 +00:14b2 _finish_120 +00:14c5 _test_data_121 +00:14db _finish_121 +00:14ee _test_data_122 +00:1504 _finish_122 +00:1517 _test_data_123 +00:152d _finish_123 +00:1540 _test_data_124 +00:1556 _finish_124 +00:1569 _test_data_125 +00:157f _finish_125 +00:1592 _test_data_126 +00:15a8 _finish_126 +00:15bb _test_data_127 +00:15d1 _finish_127 +00:15e4 _test_data_128 +00:15fa _finish_128 +00:160d _test_data_129 +00:1623 _finish_129 +00:1636 _test_data_130 +00:164c _finish_130 +00:165f _test_data_131 +00:1675 _finish_131 +00:1688 _test_data_132 +00:169e _finish_132 +00:16b1 _test_data_133 +00:16c7 _finish_133 +00:16da _test_data_134 +00:16f0 _finish_134 +00:1703 _test_data_135 +00:1719 _finish_135 +00:172c _test_data_136 +00:1742 _finish_136 +00:1755 _test_data_137 +00:176b _finish_137 +00:177e _test_data_138 +00:1794 _finish_138 +00:17a7 _test_data_139 +00:17bd _finish_139 +00:17d0 _test_data_140 +00:17e6 _finish_140 +00:17f9 _test_data_141 +00:180f _finish_141 +00:1822 _test_data_142 +00:1838 _finish_142 +00:184b _test_data_143 +00:1861 _finish_143 +00:1874 _test_data_144 +00:188a _finish_144 +00:189d _test_data_145 +00:18b3 _finish_145 +00:18c6 _test_data_146 +00:18dc _finish_146 +00:18ef _test_data_147 +00:1905 _finish_147 +00:1918 _test_data_148 +00:192e _finish_148 +00:1941 _test_data_149 +00:1957 _finish_149 +00:196a _test_data_150 +00:1980 _finish_150 +00:1993 _test_data_151 +00:19a9 _finish_151 +00:19bc _test_data_152 +00:19d2 _finish_152 +00:19e5 _test_data_153 +00:19fb _finish_153 +00:1a02 _finish_153@quit_inline_1 +00:1a13 run_testcase +00:1a31 run_testcase@quit_inline_2 +00:1ab4 fetch_test_data +00:1ace print_got +00:1ae0 _print_zero +00:1ae4 _print_one +00:1ae6 _print_bit +00:1aef _skip +00:1af0 _next 00:ff80 test_addr 00:ff82 test_got 00:ff83 test_reg @@ -363,7 +363,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font @@ -373,313 +373,313 @@ 00000001 _sizeof_test_mask 00000009 _sizeof_test_str_write 00000009 _sizeof_test_str_expect -00000011 _sizeof_main +00000014 _sizeof_main 00000016 _sizeof__test_data_0 -00000010 _sizeof__finish_0 +00000013 _sizeof__finish_0 00000016 _sizeof__test_data_1 -00000010 _sizeof__finish_1 +00000013 _sizeof__finish_1 00000016 _sizeof__test_data_2 -00000010 _sizeof__finish_2 +00000013 _sizeof__finish_2 00000016 _sizeof__test_data_3 -00000010 _sizeof__finish_3 +00000013 _sizeof__finish_3 00000016 _sizeof__test_data_4 -00000010 _sizeof__finish_4 +00000013 _sizeof__finish_4 00000016 _sizeof__test_data_5 -00000010 _sizeof__finish_5 +00000013 _sizeof__finish_5 00000016 _sizeof__test_data_6 -00000010 _sizeof__finish_6 +00000013 _sizeof__finish_6 00000016 _sizeof__test_data_7 -00000010 _sizeof__finish_7 +00000013 _sizeof__finish_7 00000016 _sizeof__test_data_8 -00000010 _sizeof__finish_8 +00000013 _sizeof__finish_8 00000016 _sizeof__test_data_9 -00000010 _sizeof__finish_9 +00000013 _sizeof__finish_9 00000016 _sizeof__test_data_10 -00000010 _sizeof__finish_10 +00000013 _sizeof__finish_10 00000016 _sizeof__test_data_11 -00000010 _sizeof__finish_11 +00000013 _sizeof__finish_11 00000016 _sizeof__test_data_12 -00000010 _sizeof__finish_12 +00000013 _sizeof__finish_12 00000016 _sizeof__test_data_13 -00000010 _sizeof__finish_13 +00000013 _sizeof__finish_13 00000016 _sizeof__test_data_14 -00000010 _sizeof__finish_14 +00000013 _sizeof__finish_14 00000016 _sizeof__test_data_15 -00000010 _sizeof__finish_15 +00000013 _sizeof__finish_15 00000016 _sizeof__test_data_16 -00000010 _sizeof__finish_16 +00000013 _sizeof__finish_16 00000016 _sizeof__test_data_17 -00000010 _sizeof__finish_17 +00000013 _sizeof__finish_17 00000016 _sizeof__test_data_18 -00000010 _sizeof__finish_18 +00000013 _sizeof__finish_18 00000016 _sizeof__test_data_19 -00000010 _sizeof__finish_19 +00000013 _sizeof__finish_19 00000016 _sizeof__test_data_20 -00000010 _sizeof__finish_20 +00000013 _sizeof__finish_20 00000016 _sizeof__test_data_21 -00000010 _sizeof__finish_21 +00000013 _sizeof__finish_21 00000016 _sizeof__test_data_22 -00000010 _sizeof__finish_22 +00000013 _sizeof__finish_22 00000016 _sizeof__test_data_23 -00000010 _sizeof__finish_23 +00000013 _sizeof__finish_23 00000016 _sizeof__test_data_24 -00000010 _sizeof__finish_24 +00000013 _sizeof__finish_24 00000016 _sizeof__test_data_25 -00000010 _sizeof__finish_25 +00000013 _sizeof__finish_25 00000016 _sizeof__test_data_26 -00000010 _sizeof__finish_26 +00000013 _sizeof__finish_26 00000016 _sizeof__test_data_27 -00000010 _sizeof__finish_27 +00000013 _sizeof__finish_27 00000016 _sizeof__test_data_28 -00000010 _sizeof__finish_28 +00000013 _sizeof__finish_28 00000016 _sizeof__test_data_29 -00000010 _sizeof__finish_29 +00000013 _sizeof__finish_29 00000016 _sizeof__test_data_30 -00000010 _sizeof__finish_30 +00000013 _sizeof__finish_30 00000016 _sizeof__test_data_31 -00000010 _sizeof__finish_31 +00000013 _sizeof__finish_31 00000016 _sizeof__test_data_32 -00000010 _sizeof__finish_32 +00000013 _sizeof__finish_32 00000016 _sizeof__test_data_33 -00000010 _sizeof__finish_33 +00000013 _sizeof__finish_33 00000016 _sizeof__test_data_34 -00000010 _sizeof__finish_34 +00000013 _sizeof__finish_34 00000016 _sizeof__test_data_35 -00000010 _sizeof__finish_35 +00000013 _sizeof__finish_35 00000016 _sizeof__test_data_36 -00000010 _sizeof__finish_36 +00000013 _sizeof__finish_36 00000016 _sizeof__test_data_37 -00000010 _sizeof__finish_37 +00000013 _sizeof__finish_37 00000016 _sizeof__test_data_38 -00000010 _sizeof__finish_38 +00000013 _sizeof__finish_38 00000016 _sizeof__test_data_39 -00000010 _sizeof__finish_39 +00000013 _sizeof__finish_39 00000016 _sizeof__test_data_40 -00000010 _sizeof__finish_40 +00000013 _sizeof__finish_40 00000016 _sizeof__test_data_41 -00000010 _sizeof__finish_41 +00000013 _sizeof__finish_41 00000016 _sizeof__test_data_42 -00000010 _sizeof__finish_42 +00000013 _sizeof__finish_42 00000016 _sizeof__test_data_43 -00000010 _sizeof__finish_43 +00000013 _sizeof__finish_43 00000016 _sizeof__test_data_44 -00000010 _sizeof__finish_44 +00000013 _sizeof__finish_44 00000016 _sizeof__test_data_45 -00000010 _sizeof__finish_45 +00000013 _sizeof__finish_45 00000016 _sizeof__test_data_46 -00000010 _sizeof__finish_46 +00000013 _sizeof__finish_46 00000016 _sizeof__test_data_47 -00000010 _sizeof__finish_47 +00000013 _sizeof__finish_47 00000016 _sizeof__test_data_48 -00000010 _sizeof__finish_48 +00000013 _sizeof__finish_48 00000016 _sizeof__test_data_49 -00000010 _sizeof__finish_49 +00000013 _sizeof__finish_49 00000016 _sizeof__test_data_50 -00000010 _sizeof__finish_50 +00000013 _sizeof__finish_50 00000016 _sizeof__test_data_51 -00000010 _sizeof__finish_51 +00000013 _sizeof__finish_51 00000016 _sizeof__test_data_52 -00000010 _sizeof__finish_52 +00000013 _sizeof__finish_52 00000016 _sizeof__test_data_53 -00000010 _sizeof__finish_53 +00000013 _sizeof__finish_53 00000016 _sizeof__test_data_54 -00000010 _sizeof__finish_54 +00000013 _sizeof__finish_54 00000016 _sizeof__test_data_55 -00000010 _sizeof__finish_55 +00000013 _sizeof__finish_55 00000016 _sizeof__test_data_56 -00000010 _sizeof__finish_56 +00000013 _sizeof__finish_56 00000016 _sizeof__test_data_57 -00000010 _sizeof__finish_57 +00000013 _sizeof__finish_57 00000016 _sizeof__test_data_58 -00000010 _sizeof__finish_58 +00000013 _sizeof__finish_58 00000016 _sizeof__test_data_59 -00000010 _sizeof__finish_59 +00000013 _sizeof__finish_59 00000016 _sizeof__test_data_60 -00000010 _sizeof__finish_60 +00000013 _sizeof__finish_60 00000016 _sizeof__test_data_61 -00000010 _sizeof__finish_61 +00000013 _sizeof__finish_61 00000016 _sizeof__test_data_62 -00000010 _sizeof__finish_62 +00000013 _sizeof__finish_62 00000016 _sizeof__test_data_63 -00000010 _sizeof__finish_63 +00000013 _sizeof__finish_63 00000016 _sizeof__test_data_64 -00000010 _sizeof__finish_64 +00000013 _sizeof__finish_64 00000016 _sizeof__test_data_65 -00000010 _sizeof__finish_65 +00000013 _sizeof__finish_65 00000016 _sizeof__test_data_66 -00000010 _sizeof__finish_66 +00000013 _sizeof__finish_66 00000016 _sizeof__test_data_67 -00000010 _sizeof__finish_67 +00000013 _sizeof__finish_67 00000016 _sizeof__test_data_68 -00000010 _sizeof__finish_68 +00000013 _sizeof__finish_68 00000016 _sizeof__test_data_69 -00000010 _sizeof__finish_69 +00000013 _sizeof__finish_69 00000016 _sizeof__test_data_70 -00000010 _sizeof__finish_70 +00000013 _sizeof__finish_70 00000016 _sizeof__test_data_71 -00000010 _sizeof__finish_71 +00000013 _sizeof__finish_71 00000016 _sizeof__test_data_72 -00000010 _sizeof__finish_72 +00000013 _sizeof__finish_72 00000016 _sizeof__test_data_73 -00000010 _sizeof__finish_73 +00000013 _sizeof__finish_73 00000016 _sizeof__test_data_74 -00000010 _sizeof__finish_74 +00000013 _sizeof__finish_74 00000016 _sizeof__test_data_75 -00000010 _sizeof__finish_75 +00000013 _sizeof__finish_75 00000016 _sizeof__test_data_76 -00000010 _sizeof__finish_76 +00000013 _sizeof__finish_76 00000016 _sizeof__test_data_77 -00000010 _sizeof__finish_77 +00000013 _sizeof__finish_77 00000016 _sizeof__test_data_78 -00000010 _sizeof__finish_78 +00000013 _sizeof__finish_78 00000016 _sizeof__test_data_79 -00000010 _sizeof__finish_79 +00000013 _sizeof__finish_79 00000016 _sizeof__test_data_80 -00000010 _sizeof__finish_80 +00000013 _sizeof__finish_80 00000016 _sizeof__test_data_81 -00000010 _sizeof__finish_81 +00000013 _sizeof__finish_81 00000016 _sizeof__test_data_82 -00000010 _sizeof__finish_82 +00000013 _sizeof__finish_82 00000016 _sizeof__test_data_83 -00000010 _sizeof__finish_83 +00000013 _sizeof__finish_83 00000016 _sizeof__test_data_84 -00000010 _sizeof__finish_84 +00000013 _sizeof__finish_84 00000016 _sizeof__test_data_85 -00000010 _sizeof__finish_85 +00000013 _sizeof__finish_85 00000016 _sizeof__test_data_86 -00000010 _sizeof__finish_86 +00000013 _sizeof__finish_86 00000016 _sizeof__test_data_87 -00000010 _sizeof__finish_87 +00000013 _sizeof__finish_87 00000016 _sizeof__test_data_88 -00000010 _sizeof__finish_88 +00000013 _sizeof__finish_88 00000016 _sizeof__test_data_89 -00000010 _sizeof__finish_89 +00000013 _sizeof__finish_89 00000016 _sizeof__test_data_90 -00000010 _sizeof__finish_90 +00000013 _sizeof__finish_90 00000016 _sizeof__test_data_91 -00000010 _sizeof__finish_91 +00000013 _sizeof__finish_91 00000016 _sizeof__test_data_92 -00000010 _sizeof__finish_92 +00000013 _sizeof__finish_92 00000016 _sizeof__test_data_93 -00000010 _sizeof__finish_93 +00000013 _sizeof__finish_93 00000016 _sizeof__test_data_94 -00000010 _sizeof__finish_94 +00000013 _sizeof__finish_94 00000016 _sizeof__test_data_95 -00000010 _sizeof__finish_95 +00000013 _sizeof__finish_95 00000016 _sizeof__test_data_96 -00000010 _sizeof__finish_96 +00000013 _sizeof__finish_96 00000016 _sizeof__test_data_97 -00000010 _sizeof__finish_97 +00000013 _sizeof__finish_97 00000016 _sizeof__test_data_98 -00000010 _sizeof__finish_98 +00000013 _sizeof__finish_98 00000016 _sizeof__test_data_99 -00000010 _sizeof__finish_99 +00000013 _sizeof__finish_99 00000016 _sizeof__test_data_100 -00000010 _sizeof__finish_100 +00000013 _sizeof__finish_100 00000016 _sizeof__test_data_101 -00000010 _sizeof__finish_101 +00000013 _sizeof__finish_101 00000016 _sizeof__test_data_102 -00000010 _sizeof__finish_102 +00000013 _sizeof__finish_102 00000016 _sizeof__test_data_103 -00000010 _sizeof__finish_103 +00000013 _sizeof__finish_103 00000016 _sizeof__test_data_104 -00000010 _sizeof__finish_104 +00000013 _sizeof__finish_104 00000016 _sizeof__test_data_105 -00000010 _sizeof__finish_105 +00000013 _sizeof__finish_105 00000016 _sizeof__test_data_106 -00000010 _sizeof__finish_106 +00000013 _sizeof__finish_106 00000016 _sizeof__test_data_107 -00000010 _sizeof__finish_107 +00000013 _sizeof__finish_107 00000016 _sizeof__test_data_108 -00000010 _sizeof__finish_108 +00000013 _sizeof__finish_108 00000016 _sizeof__test_data_109 -00000010 _sizeof__finish_109 +00000013 _sizeof__finish_109 00000016 _sizeof__test_data_110 -00000010 _sizeof__finish_110 +00000013 _sizeof__finish_110 00000016 _sizeof__test_data_111 -00000010 _sizeof__finish_111 +00000013 _sizeof__finish_111 00000016 _sizeof__test_data_112 -00000010 _sizeof__finish_112 +00000013 _sizeof__finish_112 00000016 _sizeof__test_data_113 -00000010 _sizeof__finish_113 +00000013 _sizeof__finish_113 00000016 _sizeof__test_data_114 -00000010 _sizeof__finish_114 +00000013 _sizeof__finish_114 00000016 _sizeof__test_data_115 -00000010 _sizeof__finish_115 +00000013 _sizeof__finish_115 00000016 _sizeof__test_data_116 -00000010 _sizeof__finish_116 +00000013 _sizeof__finish_116 00000016 _sizeof__test_data_117 -00000010 _sizeof__finish_117 +00000013 _sizeof__finish_117 00000016 _sizeof__test_data_118 -00000010 _sizeof__finish_118 +00000013 _sizeof__finish_118 00000016 _sizeof__test_data_119 -00000010 _sizeof__finish_119 +00000013 _sizeof__finish_119 00000016 _sizeof__test_data_120 -00000010 _sizeof__finish_120 +00000013 _sizeof__finish_120 00000016 _sizeof__test_data_121 -00000010 _sizeof__finish_121 +00000013 _sizeof__finish_121 00000016 _sizeof__test_data_122 -00000010 _sizeof__finish_122 +00000013 _sizeof__finish_122 00000016 _sizeof__test_data_123 -00000010 _sizeof__finish_123 +00000013 _sizeof__finish_123 00000016 _sizeof__test_data_124 -00000010 _sizeof__finish_124 +00000013 _sizeof__finish_124 00000016 _sizeof__test_data_125 -00000010 _sizeof__finish_125 +00000013 _sizeof__finish_125 00000016 _sizeof__test_data_126 -00000010 _sizeof__finish_126 +00000013 _sizeof__finish_126 00000016 _sizeof__test_data_127 -00000010 _sizeof__finish_127 +00000013 _sizeof__finish_127 00000016 _sizeof__test_data_128 -00000010 _sizeof__finish_128 +00000013 _sizeof__finish_128 00000016 _sizeof__test_data_129 -00000010 _sizeof__finish_129 +00000013 _sizeof__finish_129 00000016 _sizeof__test_data_130 -00000010 _sizeof__finish_130 +00000013 _sizeof__finish_130 00000016 _sizeof__test_data_131 -00000010 _sizeof__finish_131 +00000013 _sizeof__finish_131 00000016 _sizeof__test_data_132 -00000010 _sizeof__finish_132 +00000013 _sizeof__finish_132 00000016 _sizeof__test_data_133 -00000010 _sizeof__finish_133 +00000013 _sizeof__finish_133 00000016 _sizeof__test_data_134 -00000010 _sizeof__finish_134 +00000013 _sizeof__finish_134 00000016 _sizeof__test_data_135 -00000010 _sizeof__finish_135 +00000013 _sizeof__finish_135 00000016 _sizeof__test_data_136 -00000010 _sizeof__finish_136 +00000013 _sizeof__finish_136 00000016 _sizeof__test_data_137 -00000010 _sizeof__finish_137 +00000013 _sizeof__finish_137 00000016 _sizeof__test_data_138 -00000010 _sizeof__finish_138 +00000013 _sizeof__finish_138 00000016 _sizeof__test_data_139 -00000010 _sizeof__finish_139 +00000013 _sizeof__finish_139 00000016 _sizeof__test_data_140 -00000010 _sizeof__finish_140 +00000013 _sizeof__finish_140 00000016 _sizeof__test_data_141 -00000010 _sizeof__finish_141 +00000013 _sizeof__finish_141 00000016 _sizeof__test_data_142 -00000010 _sizeof__finish_142 +00000013 _sizeof__finish_142 00000016 _sizeof__test_data_143 -00000010 _sizeof__finish_143 +00000013 _sizeof__finish_143 00000016 _sizeof__test_data_144 -00000010 _sizeof__finish_144 +00000013 _sizeof__finish_144 00000016 _sizeof__test_data_145 -00000010 _sizeof__finish_145 +00000013 _sizeof__finish_145 00000016 _sizeof__test_data_146 -00000010 _sizeof__finish_146 +00000013 _sizeof__finish_146 00000016 _sizeof__test_data_147 -00000010 _sizeof__finish_147 +00000013 _sizeof__finish_147 00000016 _sizeof__test_data_148 -00000010 _sizeof__finish_148 +00000013 _sizeof__finish_148 00000016 _sizeof__test_data_149 -00000010 _sizeof__finish_149 +00000013 _sizeof__finish_149 00000016 _sizeof__test_data_150 -00000010 _sizeof__finish_150 +00000013 _sizeof__finish_150 00000016 _sizeof__test_data_151 -00000010 _sizeof__finish_151 +00000013 _sizeof__finish_151 00000016 _sizeof__test_data_152 -00000010 _sizeof__finish_152 +00000013 _sizeof__finish_152 00000016 _sizeof__test_data_153 00000018 _sizeof__finish_153 000000a1 _sizeof_run_testcase diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini index 389b7d8db..be43e382a 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini +++ b/cinema/gb/mooneye-gb/acceptance/boot_div-S/config.ini @@ -3,3 +3,4 @@ fail=1 [ports.cinema] gb.model=SGB + diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-S/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_div-S/test.gb index ded038715df04147a05bf5298c3ab1a8f1194120..f6cbca7a2a4969396845dae682da539aa086d772 100644 GIT binary patch delta 847 zcmZo@U}|V!+VI7_zRLUTChwrs^vvRt)S_aBvp_x&X?p?54;|Yzbb+#t#l@*bC7Jno zaA_xxs_hy=AcdQ}LsE-N6w(qib5c_nPOcCC&=C(5R8U|z?W~~*(#!xPtP~hNH2Qz& z+Nr^FwjZQPQGr23LKMiT_Xnw!;07`kAb{btH&~+^Ok;!phfYk5nED{j0ofc3HoysH zK(qgc9$W_0qu3k`*60k=*yR7A8<$38eF&SA!3Ma%3~2TL(1+iEda$P%PG^HPy23QJ z_1wb>ADG5A{}27dXgplyEewt{M_}Yi0b^Af z%yWbCgoS}lgD7x9QQ(ZKAP^MqE+{HoQB{Bxc%UfoK~`|mkl_L2QLm#<&$@V@HSj*0 zH~D~#mS?zuF1wb>ADG5A{}27dXgpltEewt{M_}Yi0b^Af z%yWbCgoS}lgD7x9QQ(ZKAP^MqE+{HoQB{Bxc%UfoK~`|mkl_L2QLm#<&suq(Rr5ZZ zGWmd)sf(v~t{{;Pk-xf%gM1JHZDIc7GnY zAFiJ4>}{&h?_K*${++x{YyJh5lZp%tj0_6v56|%adfNPKg!jk85tCVm!uXIGn@tT zfk@j6NPg(puAvK*bu2DUEh@>(&x1=lc~ouJ5CSROo zprC>R!)a#?O^{{=AYrAz@S)NFL)T6Xp0oWRO^ON(A`+rNM!i2stpqoasQ>{Cr@g@% z-C!CU{6BPJYQ)qBaSq7lV6XvBFaw(XKlI=-pdQ8MXs||Sn8qgm58b#lBI`rgoD4R= z1!h32|A#*O2GoN+&2Ty!tkD&wvBm#GFMf>>eF&S2!3KE13~2ZNFo75Y>Q7gLHTu9b zw)ubPCr0DpDsN$Mq&Wg3R|*)b(qNt&lqW0{}#eR|f#`>cWY*}TaIyiCo4y(`ZKdshK*H4xVTaV-!_$UE3M0cl*s zWJPar#@5M}-lhsOy=$MzzmvCV&A*^>Qjwv7kwIbo;YHqGPn(}j^8R=@X>y;p49jZo MqbD~jGJBW+07l$BZU6uP delta 879 zcmZo@U}|V!+Th2?BoaKikx_TD0aG~;R{*ii<`qmnuJr}pXIFR!rKV>Vm!uXIGn@tT zfk@j6NPg(puAvK*bu2DUEh@>(&x1=lc~ouJ5CSP&;T@7%T%wScn3o zprC>R!)a#?O^{{=AYrAz@S)NFL)T6Xp0lkWO^ON(A`+rNM!i2stpqoasQ>{Cr@g@% z-C!CU{6BPJYQ)qBaSq7lV6XvBFaw(XKlI=-pdQ8MXs||Sn8qgm58b#lBI`rgoD4R= z1!h32|A#*O2GoN+&2Ty!tkD&wvBm#GFMf>>eF&S2!3KE13~2ZNFo75Y>Q7gLHTu9b zw)ubPCr0Dp0&ih(q&Wg3R|*)b(qNt&lqW0{}#eR|f)`>dMx*_6o#yi8p@y(`apdRGB)H4xVTaV-!_h&tFg0ckYk zz##E={R5{5&JVmFc-aX)aIpLH!2NLbWM^+vg?{haXY%jlZCdj$sGL+}XkcVeSbuni d_t(?rXCu5n9*&qi!&`=Bq4&{~n-!UZOaQ?yL5KhV diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/test.sym b/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/test.sym index e3f64eefc..432484267 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/boot_div-dmg0/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,34 +75,34 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -95,26 +114,7 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/test.gb index 63227f429d19dc500f4564e7837aca129efdef5c..281de3152f03741e9d632ca6cf6185677af733b7 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?WSy`%fN_aieU6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>EdADMzo04V%E5C8xG diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/test.sym b/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/test.sym index 79e783897..3806867da 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/boot_div-dmgABCmgb/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,34 +75,34 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -95,26 +114,7 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini index 389b7d8db..be43e382a 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini +++ b/cinema/gb/mooneye-gb/acceptance/boot_div2-S/config.ini @@ -3,3 +3,4 @@ fail=1 [ports.cinema] gb.model=SGB + diff --git a/cinema/gb/mooneye-gb/acceptance/boot_div2-S/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_div2-S/test.gb index 837e0e6164aa6d16a8773ad7929a3b983cdf990c..906ea4f3a16433eaa75fd28404ddbdedad1cb09c 100644 GIT binary patch delta 847 zcmZo@U}|V!+VI7_zRLUTChwrs^vvRt)S_aBvp_x&X?p?54;|Yzbb+#t#l@*bC7Jno zaA_xxs_hy=AcdQ}LsE-N6w(qib5c_nPOcCC&=C(5R8U|z?W~~*(#!xPtP~hNH2Qz& z+Nr^FwjZQPQGr23LKMiT_Xnw!;07`kAb{btH&~+^Ok;!phfYk5nED{j0ofc3HoysH zK(qgc9$W_0qu3k`*60k=*yR7A8<$38eF&SA!3Ma%3~2TL(1+iEda$P%PG^HPy23QJ z_1wb>ADG5A{}27dXgplyEewt{M_}Yi0b^Af z%yWbCgoS}lgD7x9QQ(ZKAP^MqE+{HoQB{Bxc%UfoK~`|mkl_L2QLm#<&$@V@HSj*0 zH~D~#mS?zuF1wb>ADG5A{}27dXgpltEewt{M_}Yi0b^Af z%yWbCgoS}lgD7x9QQ(ZKAP^MqE+{HoQB{Bxc%UfoK~`|mkl_L2QLm#<&suq(Rr5ZZ zGWmd)sf(v~t{{;Pk-xf%gM1JHZDIc7GnY zAFiJ4>}{&h?_K*${++x{YyJh5lZp%tj0_6v56|%adfNPKg!jk85tCly6p7~<@q;25Hy!tkr{|Jm~% zzZyW~S)eMALJ!x709WS_R~H3_UrjKHPaf|6Aqrr?@T(apy4jm)ohy5b$Jqjpv+E{# zn3_%Ys60E_qY8+tfw%^UYk^oo-oefZNaG?VCwho89-Un2VXAP`qxPBnJ9(Sd{0k~4 o6&V^B85GtZe&q4>wE5XZ9v=@cntaYfhUK-#(UY4uGI5v#0GVuO7XSbN delta 236 zcmZo@U}|V!+Th2?w6S4w0Am-+29L8ZCf{RJ_Ilyr>ly6p7~<@q;25Hy!tkr{|JkD+ zzZyW~S)eMALJ!x709WS_R~H3_UrjKH7as2ZAqrr?@T(apy4jm)ohy5l$JsQGvr8s< zn7VX&RG#hhr~=|@Ag%%8S|FAXb+B^+(rCzmLE`WF2Tl*1A9z3TvJ-sZVE5;N`{CV_ zn>|bw&U@58lYb{~)0%%l<)k7*10#dN`olLozMeKeJHzAS;Te-}c*w9k^f-EQ^F}5i Fa{!3&ZM*;g diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/test.sym b/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/test.sym index ebb0d22fa..78425f5d4 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/boot_hwio-S/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/boot_hwio-S.gb". [labels] -01:48bb clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48cf memcpy -01:48d8 memset -01:4898 print_hex4 -01:48c5 print_hex8 -01:48e8 print_inline_string -01:48a4 print_load_font -01:48b0 print_newline -01:48e1 print_string +01:48c5 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48d9 memcpy +01:48e2 memset +01:48a2 print_hex4 +01:48cf print_hex8 +01:48f2 print_inline_string +01:48ae print_load_font +01:48ba print_newline +01:48eb print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -21,10 +21,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:01d9 main@quit_inline_1 @@ -46,7 +46,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/test.gb index 410e21a30cff6e61004745469c07fe298472d03a..2ab3c554513db67454bb4f64cb83b883a14f697b 100644 GIT binary patch delta 228 zcmZo@U}|V!+Th2?w9;^L0Am-+E|0UHCf{RJ_WI=E>ly6p7~<@q;25Hy!tkr{|Jm~% zzZyW~S)eMALJ!x709WS_R~H3_UrjKHPaf|6Aqrr?@T(apy4jm)ohy5b$Jqjpv+E{# zn3_%Ys60E_qY8+tfw%^UYk^oo-oefZNaG?VCwho89-Un2VXAP`qxPBnJ9(Sd{0k~4 o6&V^B85GtZe&q4>wE5XZ9v=@cntaYfhUK-#(UY4uGI5v#0CAIM=l}o! delta 236 zcmZo@U}|V!+Th2?v_5!p0Am-+29L8ZCf{RJ_Ilyr>ly6p7~<@q;25Hy!tkr{|JkD+ zzZyW~S)eMALJ!x709WS_R~H3_UrjKH7as2ZAqrr?@T(apy4jm)ohy5l$JsQGvr8s< zn7VX&RG#hhr~=|@Ag%%8S|FAXb+B^+(rCzmLE`WF2Tl*1A9z3TvJ-sZVE5;N`{CV_ zn>|bw&U@58lYb{~)0%%l<)k7*10#dN`olLozMeKeJHzAS;Te-}c*w9k^f-EQ^F}5i Fa{ynTZH)i` diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/test.sym b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/test.sym index 5545d5b87..d119b619a 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmg0/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/boot_hwio-dmg0.gb". [labels] -01:48bb clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48cf memcpy -01:48d8 memset -01:4898 print_hex4 -01:48c5 print_hex8 -01:48e8 print_inline_string -01:48a4 print_load_font -01:48b0 print_newline -01:48e1 print_string +01:48c5 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48d9 memcpy +01:48e2 memset +01:48a2 print_hex4 +01:48cf print_hex8 +01:48f2 print_inline_string +01:48ae print_load_font +01:48ba print_newline +01:48eb print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -21,10 +21,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:01d9 main@quit_inline_1 @@ -46,7 +46,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmgABCmgb/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmgABCmgb/test.gb index e7e8ffa92d52110be5fa87a2f1dff57a561a1670..017586f8f0b761b1c5b468ccf80c984118791c2d 100644 GIT binary patch delta 228 zcmZo@U}|V!+Th2?wDR=i0LCtsT^?sYO}@vd?DfgR*E87HF~r$J!7)TZh2dA@|Fh>k zel>u|vp`iKg&wXE0j|y=t}Y4;znWkYpFG_CLlnS(;a4+Ibh9_pI#>1g zFg2U(QF(ToP191%y*8;JGyn~$+kj6z!PV^9GJUY43!&Kp>N9{BDck(u^`4?19 oDl#-MGAOJ+{K(_$Y4fv-JU$*?H2Iu|49jbeqbE0SWa2Of0Q4Paf&c&j delta 236 zcmZo@U}|V!+Th2?wEpen0LCts4IXD-Ouomc?DfLK*E87HF~r$J!7)TZh2dA@|FcIu zel>u|vp`iKg&wXE0j|y=t}Y4;znWkYFFf4+LlnS(;a4+Ibh9_pI#>28kF#kWXO~R! zFm>tls65;0Q3b@+KwJaFwLmN(>R{&tq|uNAgT&wU51bx2Kk$CwWheN+!S2rk_rtp< zH+z^WocE}GCjU;}rZxY9%1K3r21W*j^@neGd_8S`c815t!!st|@Q`77=yCMq=8a53 F<^bmTZYKZ$ diff --git a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmgABCmgb/test.sym b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmgABCmgb/test.sym index 3f71b5a1d..a3fc39be4 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmgABCmgb/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/boot_hwio-dmgABCmgb/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/boot_hwio-dmgABCmgb.gb". [labels] -01:48bb clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48cf memcpy -01:48d8 memset -01:4898 print_hex4 -01:48c5 print_hex8 -01:48e8 print_inline_string -01:48a4 print_load_font -01:48b0 print_newline -01:48e1 print_string +01:48c5 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48d9 memcpy +01:48e2 memset +01:48a2 print_hex4 +01:48cf print_hex8 +01:48f2 print_inline_string +01:48ae print_load_font +01:48ba print_newline +01:48eb print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -21,10 +21,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:01d9 main@quit_inline_1 @@ -46,7 +46,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_regs-dmg0/test.gb index 56c676a0bc9caa993f5ba0aeedbb28f7ed877b11..51ec7ff88a88821c75873bf97705ef83c84b5cec 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?cn zotPRi^+B8ivN;%RfD_DsX8#X8xD2RAu{j#7(HW+($^Sz)E{(|g5H=@+4RC=O(CYu8 z55EERU{5og&IW6Ag=uW@|ImwHBSas<=3=k`9xwyi{Xa|~#(?_M)nJW2FpX{gANq;W zc(}@27#wMiz{r&X#;P=!=LY2o3j>`7QQ(B4z!_CRASm8lP*k|0ssJhQKvCd>tl*>} z!vn^nUPqsvb@4uH;C(i4@&PYXvtaMav%%g~KwJ&PH9%Yo#1irjc1}PV7cp7UTb!|V zvZc4F!c6blXY%jlZCdj$sGL+}XkcVeSbunt_t(?rXOp}?9!{Fv=Pkps+WY9q&5TSQ FCICjcJq!Q< delta 872 zcmZo@U}|V!+Th2?cn zotPRi^+B8ivN;%RfD_DsX8#X8xD2RAu{j#7(HW+($^Sz)E{(|g5H=@+4RC=O(CYu8 z55EERU{5og&IW6Ag=uW@|ImwHBSas<=3=k`9xwyi{Xa|~#(?_M)nJW2FpX{gANq;W zc(}k@7#wMiz{r&X#;P=!=LY2o3j>`7QQ(B4z!_CRASm8lP*k|0ssJhQKvCd>tl*>} z!vn^nUPqsvwemiz=6yD0@&PYX7f4EbD?+0FXf)5<*{ycC$Ts_&@+fOlnfZBeX(x}W?HWQLg`2!XQj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$AEZf9fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*W=19t F69CQ@JevRj delta 872 zcmZo@U}|V!+Th2?OlnfZBeX(x}W?HWQLg)6*6Qj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$6{JZ~fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?G(xSx@gOAg%`D8X&F(VhK?PJ0~EGh8!3q{;q%E z^uYOn_X96G!3Pd@e;&9WuAc1dZK}}kUHeS_oxDwJ{sonjiVO{m3<~QH&+z_w+Wc&U X_s7E#lV^C#uq^aGdU7)(Q;-P&yB|P} diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-dmgABC/test.sym b/cinema/gb/mooneye-gb/acceptance/boot_regs-dmgABC/test.sym index 702e844b8..a8510c992 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-dmgABC/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-dmgABC/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:01d3 invalid_sp 00:01da invalid_sp@quit_inline_1 @@ -87,6 +87,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -98,28 +117,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000002 _sizeof_sp_save 00000083 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini index 2764ebac4..649180eef 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/config.ini @@ -1,2 +1,3 @@ [ports.cinema] gb.model=MGB + diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/test.gb index ec5167a1fe123e8db289a67f6907a2fc38397b2a..7d2c14e675bbe27ed81e6a5f0e8b292865dabb81 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?8fU%pU%KPl5&G#8a-ReOs@1WH5%;J*NqGE=#Kt2#@djZK0 z9osc@fwGRp#i>OlnfZBeX(x}W?HWQLg`2!XQj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$AEZf9fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*W=19t F69CG>JemLi delta 872 zcmZo@U}|V!+Th2?OlnfZBeX(x}W?HWQLg)6*6Qj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$6{JZ~fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?G(xSx@gOAg%`D8X&F(VhK?PJ0~EGh8!3q{;q%E z^uYOn_X96G!3Pd@e;&9WuAc1dZK}}kUHeS_oxDwJ{sonjiVO{m3<~QH&+z_w+Wc&U X_s7E#lV^C#uq^aGdU7)(Q;-P&x5Ge; diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/test.sym b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/test.sym index 6cf9ad808..e8813d622 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-mgb/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:01d3 invalid_sp 00:01da invalid_sp@quit_inline_1 @@ -87,6 +87,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -98,28 +117,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000002 _sizeof_sp_save 00000083 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini index ed9446e59..cc5f28f4f 100644 --- a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini +++ b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/config.ini @@ -1,2 +1,3 @@ [ports.cinema] gb.model=SGB + diff --git a/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/test.gb b/cinema/gb/mooneye-gb/acceptance/boot_regs-sgb/test.gb index ff5bc25966eda538e4bb76f4ad865b525649bef9..2064415e5c5b090472e9fbeadac13d23d47d8ed9 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?OlnfZBeX(x}W?HWQLg`2!XQj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$AEZf9fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*W=19t F69B}vJmmlY delta 872 zcmZo@U}|V!+Th2?cn zotPRi^+B8ivN;%RfD_DsX8#X8xD2RAu{j#7(HW+($^Sz)E{(|g5H=@+4RC=O(CYu8 z55EERU{5og&IW6Ag=uW@|ImwHBSas<=3=k`9xwyi{Xa|~#(?_M)nJW2FpX{gANq;W zc(}k@7#wMiz{r&X#;P=!=LY2o3j>`7QQ(B4z!_CRASm8lP*k|0ssJhQKvCd>tl*>} z!vn^nUPqsvwemiz=6yD0@&PYX7f4EbD?+0FXf)5<*{ycC$Ts_&@+fOlnfZBeX(x}W?HWQLg`2!XQj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$AEZf9fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*W=19t F69Bcn zotPRi^+B8ivN;%RfD_DsX8#X8xD2RAu{j#7(HW+($^Sz)E{(|g5H=@+4RC=O(CYu8 z55EERU{5og&IW6Ag=uW@|ImwHBSas<=3=k`9xwyi{Xa|~#(?_M)nJW2FpX{gANq;W zc(}k@7#wMiz{r&X#;P=!=LY2o3j>`7QQ(B4z!_CRASm8lP*k|0ssJhQKvCd>tl*>} z!vn^nUPqsvwemiz=6yD0@&PYX7f4EbD?+0FXf)5<*{ycC$Ts_&@+f&10%ojclmat0pJX&}V{h>|Ti|ha(IgL3v&kNnXD5490dX}D*8p)X z5KG8A*f{}dT*Tx=4{^qwlPf(m#SVMaK9heZZ_}E8LFJ?(Ljxm&!urE!Chzc&VY%vY T^yKD;j4vfNe_*@?BBEIVP7GOL delta 225 zcmZo@U}|V!+Th2?^z_-}07h}mogRw+{tC`vWE5aH3uHI^7i^GcOaQSDH~jys*v)wO zgZtSf9%nC2p1>&10%ojclmat0pJX&}W3Tc!o91zL#v~6@mrjq$vz;DQKwJ&PH9%Yo z#1f(oc1}PV4LLAK{9XUR>4EbD?+0FXf)5<*{ycC$ynb@Chof1%#uHLX!rT(y!-1?SC2olyT+GW)C`tT0c=q(>`yPts69u>c`&49g diff --git a/cinema/gb/mooneye-gb/acceptance/call_cc_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/call_cc_timing/test.sym index ca8791841..4625d51cc 100644 --- a/cinema/gb/mooneye-gb/acceptance/call_cc_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/call_cc_timing/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/call_cc_timing.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0151 main@wait_ly_5 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/call_cc_timing2/test.gb b/cinema/gb/mooneye-gb/acceptance/call_cc_timing2/test.gb index 048fb075a4f805ad729105ee969bbbcec39fe9ce..add3435c282839ec46e3bcd009f364155783c00e 100644 GIT binary patch delta 873 zcmZo@U}|V!+Th2?q}et(fKiNhk+)*Qf5A(Pj0p^9XKpTLY;>!y@;j_kPk%KUO@6g$94@}psZtYacWUXW_})A+R3A8yM_=*;U@2p)Z!9_w8YGu)D(u3 z>%%{E!~+Et6c|oBYiNQrGXM!I1%?le{vWz_YVe%x2We7NU=WcI1v2XWL24zqflLJm zU^wj!*60S)*x>)66H_CmK8SNbHV1R(J`G4rfr4d;l z!scYK0WL5DTKzxt;WwZj>}iJ6*3Y<_BIHM{E1jV}xiV9a$ z6(9v3C<=U#6`V9=c))nn>*&+7F5YJiywB!MKHz0)7VKSlHrTrgh^v9P28e5cSVG>x z&Iw54A|@+(i!-)Pw)8etnCV^nO#Yp`O>6!Im6M7L4U7y5>klvT{(9Q{Y?AlK!%36- Ryk%HcdmlZy*^tS@1OOmfKZyVU delta 881 zcmZo@U}|V!+Th2?q_bgi0HYZ13~$AT|ALno850=J_HQm`Y;>zH@IJf3J18|hv$!O+ zsF>j_kPk%KUO@6g$94@}psZtYacWUXW_})A+R3A8yM_=*;R^4N)Z!9_w8YGu)D(u3 z>%%{E!~+Et6c|oBYiNQrGXM!I1%?le{vWz_YVe$G1!+=LU=WcI1v2XWL24zqflLJm zU^wj!*60S)*x>)66H_CmK8SNbHV1R(J`G4rfr4d;l z!scYK0WL5DTKzxt;WwZj>}iJ6*3Y<_BIHM{E1jV}xiV9a$ z6(9v3C<=U#6`V9=c))nn>*&+7R^DgTyw9dgKHz2Q;^|#^*3-KRh^v9P28e5cSVGjn z&Iw4PAqNJDzv~}3J#c>D{lLpk@PUKfp9k)Tt0y~qn=15s*FKYfCvVf5e?jG>B0~cs jgTng5GrYf^Ha{ET{qb}EXt z!TszykF$3sPhb>h0W(%JN`V=hPcj;~vA1}fE$}$IXp)Di*<_E(vy(llfVdinYk;^G zh$ZA5?3{o!E@E<`hdATT$(0_OVuw9ypUJVg2DVlXrN?uw3;x TdUEqa#+MSCKQP_`5z(vw@4#5( delta 225 zcmZo@U}|V!+Th2?^fYsF0He6(P7lR@e+B0-G72!91+p9d3pU6zCV<$78~%S*>}EXt z!TszKkF%F1Phb>h0W(%JN`V=hPcj;~u~&JVP4hTAW0HrdOQ%QW*-notAg%`D8X&F( zVhK?PJ0~EGh8!3q{;q%E^uYOn_X96G!3Pd@e;&9WUO&0nL(_PtN9{BDck(u^`4?19 zDl#-MGAOJ+e8{6>;|VDxVQz`<;XqcE61T(;F6QMYlq7y0JbQZceGf(Ri2_^zlGbDR diff --git a/cinema/gb/mooneye-gb/acceptance/call_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/call_timing/test.sym index 75728a3d8..8cce6bd35 100644 --- a/cinema/gb/mooneye-gb/acceptance/call_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/call_timing/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/call_timing.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0151 main@wait_ly_5 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/call_timing2/test.gb b/cinema/gb/mooneye-gb/acceptance/call_timing2/test.gb index 3ac8c660d50d168a521349d20bb4ac7f5e2bfccb..3667395ea301f282186230f8377fb61e3f035616 100644 GIT binary patch delta 873 zcmZo@U}|V!+Th2?q_Jgk0HYZ1B5%cp|ALno850=J&fHwg*yvVY<$ZROcTj42W^qYs zQ8B|=ARmady@2G0j_n${Kv~D);?$y&%=|pKw3A2Gb`2qr!cE>Gsl_DYz_t+-~=ozNbcShc^8e6{OCz#A zgw4rd16*JRwEBPO!*4)6*wYNBv%wl&VH#WfKlI|)2+@bIxfpDK2h4zW{|^(0F`)i* zHCUq$Okhkjx-9!M$@PP5C*U_hEUA)g4c%RLie89`pEZDp9Y_N9~5LW|n4G`A?v4p&X zofDA8MNC%o7H4doZ0T*PFw?vCnfyC>o7VgbDkl{g8W`d>Kehk> delta 881 zcmZo@U}|V!+Th2?qzH@IJf3J18|hv$!O+ zsF>j_kPk%KUO@6g$94@}psZtYacWUXW_})A+R3A8yM_=*;R^4N)Z!9_w8YGu)D(u3 z>%%{E!~+Et6c|oBYiNQrGXM!I1%?le{vWz_YVe$G1!+=LU=WcI1v2XWL24zqflLJm zU^wj!*60S)*x>)66H_CmK8SNbHV1R(J`G4rfr4d;l z!scYK0WL5DTKzxt;WwZj>}iJ6*3Y<_BIHM{E1jV}xiV9a$ z6(9v3C<=U#6`V9=c))nn>*&+7R^DgTyw9dgKHz2Q;^|#^*3-KRh^v9P28e5cSVGjn z&Iw4PAqNJDzv~}3J#c>D{lLpk@PUKfp9k)Tt0y~qn=15s*FKYfCvVf5e?jG>B0~cs jgTng5GrYf^Ha{ET{qb~`{4kvPTsVR|9bk5Z3~+ zguH{D6OhJ5OiuI=XWTit(nC}1ut)7P`FHX*t@#&JPAW1qFfu5tKYV8L4i6cYs~$&B KZZ>3+GY0_jy;W!c delta 236 zcmZo@U}|V!+Th2?^kmZH0LC1aB_3xlO+LUVVhdt;xH)?ISSffo`h+luIi38h_>S@L z2lul`QbGQqel7}z5Lq53nCxajrWda4RUT*4JkHLTmN8haDL$Zz{^hXfrH(j2kwX0Pj2?mG~Ve^`%M0wyiIHV1(lPE y3=ND73hNIa@~GH&LP|-PTjF~-kX5C`E%AekdHD$?iJu40p5A=lL(zPq02csVxn_j` diff --git a/cinema/gb/mooneye-gb/acceptance/di_timing-GS/test.sym b/cinema/gb/mooneye-gb/acceptance/di_timing-GS/test.sym index c377673d3..d3b2259a7 100644 --- a/cinema/gb/mooneye-gb/acceptance/di_timing-GS/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/di_timing-GS/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/di_timing-GS.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0158 main@wait_ly_5 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/div_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/div_timing/test.gb index 8226f4393f7a02992e2a14a23e8c5b1c6b7aa2ee..690819ef0498159125a60057602e0912058012a6 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?G&OK@0OJz3`YP|Uo4kWk(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Q+w=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ?r9q*1-F0-sA&bre?w3m1l#!tAMx~h--kj7KkO}9qgQdG%jMYqPI9>>tsuBQ-zt{ ywa?_=$=kH%Ur;%z$k4#Zps@b%BJZ!K&Ce!ze>|KtxzAgMWwrOwlbaivJWK$}&^gfn delta 863 zcmZo@U}|V!+Th2?G^2lW0OJz3`U3B>E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>EdjZ8r%03ks=>i_@% diff --git a/cinema/gb/mooneye-gb/acceptance/div_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/div_timing/test.sym index 796b41921..1d2cd417d 100644 --- a/cinema/gb/mooneye-gb/acceptance/div_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/div_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0232 test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 000000e2 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/ei_sequence/test.gb b/cinema/gb/mooneye-gb/acceptance/ei_sequence/test.gb index cf91511cc27ad76b50a9eb8a22e174d17905c1a8..c9d9265b438456a8327e69d9c9bf256065b10e2c 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?6j?kufH8}u%KPl5&HEV5-0DFr@1WH5%;J*NqGE=#Kt2#@djZK0 z9osc@fwGRp#i>OlnfZBeX(x}W?HWQLg`2!XQj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$AEZf9fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*Wcn zotPRi^+B8ivN;%RfD_DsX8#X8xD2RAu{j#7(HW+($^Sz)E{(|g5H=@+4RC=O(CYu8 z55EERU{5og&IW6Ag=uW@|ImwHBSas<=3=k`9xwyi{Xa|~#(?_M)nJW2FpX{gANq;W zc(}k@7#wMiz{r&X#;P=!=LY2o3j>`7QQ(B4z!_CRASm8lP*k|0ssJhQKvCd>tl*>} z!vn^nUPqsvwemiz=6yD0@&PYX7f4EbD?+0FXf)5<*{ycC$Ts_&@+f6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$KnhoQholylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY%55Uq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3&@!0CbW1Mdf3 zc7hKa?EXA(KU_W8+1pg1-@Epi{5yG@*8B@9ClwhQ7#S4SAD-d;^|blf2=9-FBPP%A QmSI`wee~q!g^WQa09JoJ%>V!Z diff --git a/cinema/gb/mooneye-gb/acceptance/ei_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ei_timing/test.sym index 379ee6193..d4c8fe17f 100644 --- a/cinema/gb/mooneye-gb/acceptance/ei_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ei_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0160 test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000010 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/halt_ime0_ei/test.gb b/cinema/gb/mooneye-gb/acceptance/halt_ime0_ei/test.gb index 01f8b803efb8b77dace0ec76021303f28d3aa7e8..c251fe6580f5d2cc52b37cb40817bef42b279f32 100644 GIT binary patch delta 178 zcmZo@U}|V!+Th2?WU4tifKgIyoyXZb9-h9gwgwDhPA5Mr)-fLb;C>b?8j@OEqTuh% zAjWWV^F+pcyUqXXf3vfd* za-xSgQjwv7kwIbo;WLwWc*w9^^*9Q$Rn8m$Ojt?@ delta 212 zcmZo@U}|V!+Th2?WW9cJ0HdVp5|6W&JUo3}Z4DU2oKAjLtYbX&@!0CbW1Mdf3c7hKa?EXA(KfHc&vxlbfPLJAW^6%trTJtZcoK$3JU}R8O sfB29`#l{m-O2XU{-@}2dDkW}-A6(4KPbf+JJb3o>=KCIs<`V_D0NAx#I{*Lx diff --git a/cinema/gb/mooneye-gb/acceptance/halt_ime0_ei/test.sym b/cinema/gb/mooneye-gb/acceptance/halt_ime0_ei/test.sym index 1fe33097a..12d20533c 100644 --- a/cinema/gb/mooneye-gb/acceptance/halt_ime0_ei/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/halt_ime0_ei/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/halt_ime0_ei.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0151 main@wait_ly_5 @@ -40,7 +40,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/halt_ime0_nointr_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/halt_ime0_nointr_timing/test.gb index 89d6b0bb57ff8704863c770843918ac19318bb18..a452a6c30526e2a2116e2ecc7260bdc93ae33938 100644 GIT binary patch delta 891 zcmZo@U}|V!+Th2?#K|%_fN`OGmG{|A-foVbK2{1Ijy@p_VooPND{?a(-r#i>B(+(9 z>4|GSSW!@FdS-D+YEdx*NCt?sK}tS!Y}e2Q8sS)6oLW?pnV$!jcJip&t|0_A#XBUm zxI`f>F*7GMh2iA-@DCmFKrIRi45ytnG(nmffP|F-!-q!y4_!Moc+U2NT&1YMAR-|O zWYqhE)JkvznFF g!;8GXo;E+5B(+(9 z>4|GSSW!@FdS-D+YEdx*NCt?sK}tS!Y}e2Q8sS)6oLW?pnV$!jcJip&t|0_A#XBUm zxI`f>F*7GMh2iA-@DCmFKrIRi45ytnG(nmffP|F-!-q!y4_!Moc+R$hT&1YMAR-|O zWYqhE)JkvznFSB2@2{uL&qjEEJRC83hPMpMLhqv|HybhqnE(LC?@Ckv diff --git a/cinema/gb/mooneye-gb/acceptance/halt_ime0_nointr_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/halt_ime0_nointr_timing/test.sym index 8c1576878..babda4299 100644 --- a/cinema/gb/mooneye-gb/acceptance/halt_ime0_nointr_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/halt_ime0_nointr_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0151 main@wait_ly_5 00:0167 test_round1 @@ -93,6 +93,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -104,29 +123,10 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000017 _sizeof_main 0000001d _sizeof_test_round1 0000000f _sizeof_finish_round1 diff --git a/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing/test.gb index be05d0a3a4b4c341cf639a1a445844800d3d98d1..6085b98acc93b63eae5b9bded528924267b0d141 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?6jL@ifKigA%KPl5&AE*2ZuKCRcTj42W^qYsQ8B|=ARmady@2G0 zj_n${Kv~D);?$y&%=|pKw3A2Gb`2qr!cE>Gsl_DYz_t+-~=ozNbcShc^8e6{OCz#Agw4rd16*JRwEBPO z!*4)6*wYNBv%wl&VH#WfKlI|)2+@bIxfpDK2h4zW{|^(0F`)i*HCUq$Okhkjx- z9!M$ z@PP5C*U_hEUA)g4c%RLie89`pEZDp9Y_N9~5LW|n4G`A?v4p&XofDA8MNC%o7H4do zZ0T*PFw?vCnfyC>o7VgbDkl{g8WOlnfZBeX(x}W?HWQLg)6*6Qj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$6{JZ~fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?G(xSx@gOAg%`D8X&F(VhK?PJ0~EGh8!3q{;q%E z^uYOn_X96G!3Pd@e;&9WuAc1dZK}}kUHeS_oxDwJ{sonjiVO{m3<~QH&+z_w+Wc&U X_s7E#lV^C#uq^aGdUEqd#vl^_YQ#Y! diff --git a/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing/test.sym index d7e690e07..0890ecef3 100644 --- a/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,36 +75,36 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0168 main@quit_inline_1 00:017d test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -97,27 +116,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 0000002d _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing2-GS/test.gb b/cinema/gb/mooneye-gb/acceptance/halt_ime1_timing2-GS/test.gb index db001a2693bd154766c311cc18503a9f4113291c..468be9d0852d0487964f1a457acc41ba6f8edba5 100644 GIT binary patch delta 961 zcmZo@U}|V!+Th2?)VODJ0HZ2nbd~qnP2O&fo<3Fz9*#aC3}Q|vKP&b#9p2z|7D+0| zKh)1f!4M+57Q3twMD{dXcJc)#DHf0+o8K|9xz>Y?3rbDTEG|hcDrNu~4@BA^dp>k* z*U$yJ!?CzHwWuUBKMyYLJ-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S z^-K|nCAxN2@3z0HZ2nbbY?3rbDTEG|hcDrNu~4@BA^dp>k* z*U$yJ!?CzHwWuUBKMyYLJ-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S z^-K|nCAxN2@3f-5LdDhdr3W%$LxCV%8fmlM+!OjUtqagF!!x|Uo;E)l Y;r;P&#N-*?GAs+dkDlDj$Q)z>0PhkY)xT zVWq(Eq0#?C*G>(dv;81ViV6%O5~4sxy+25;1UHbW009iAy}=sYU>Y0zKXhVh#MB3I z4#?(UumMgm1DgFm^x!g}9>wNputsN?#wPy{-MBO&>qFR_3^u?8WX!rjxffxhoPgjFA`oJ`{`G4pqM&scsZ((qx zIRYbB3K*->V4fS4CoBwf8bpB;iUMa;1%aS=cR^9%imC#nzyn2r53+)jh71oFk9r+_ zde+7JtbzC0yvYZ=OwEG5E6)adR{?P~5Z3^4Ef7n{JJ>k^XE4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Edj!Z!&0P8zFn*aa+ diff --git a/cinema/gb/mooneye-gb/acceptance/if_ie_registers/test.sym b/cinema/gb/mooneye-gb/acceptance/if_ie_registers/test.sym index 1cfb8d468..8e26c2324 100644 --- a/cinema/gb/mooneye-gb/acceptance/if_ie_registers/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/if_ie_registers/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:01ef test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 0000009f _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/instr/daa/test.gb b/cinema/gb/mooneye-gb/acceptance/instr/daa/test.gb index 1d9c97f7ab9032ef7deb87b8f1a4d6289eb2bd63..8fd2f49eb95a6b5fa3d131dcaa9458a29f34177a 100644 GIT binary patch delta 369 zcmZo@U}|V!+Th11n>f>u;eld1)7f%HMFs~T`B^cI@$iTAvu`ubs!q;ebgSQ>O2G}rEdVP9t9Pv^NKGzDO;N}%Ey1bN5vx|mHe%y{@i`q{@BXQd}+GrHBU%{V(V?it9Pv^NKGzDO;N}%Ey1bN5vx|m$3I diff --git a/cinema/gb/mooneye-gb/acceptance/instr/daa/test.sym b/cinema/gb/mooneye-gb/acceptance/instr/daa/test.sym index 38db17539..c75dc8685 100644 --- a/cinema/gb/mooneye-gb/acceptance/instr/daa/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/instr/daa/test.sym @@ -2,18 +2,18 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/instr/daa.gb". [labels] -01:68ee clear_vram -01:68ad disable_lcd_safe -01:68b3 disable_lcd_safe@wait_ly_0 -01:6902 memcpy -01:690b memset -01:6866 print_bin4 -01:68cb print_hex4 -01:68f8 print_hex8 -01:691b print_inline_string -01:68d7 print_load_font -01:68e3 print_newline -01:6914 print_string +01:68f8 clear_vram +01:68b7 disable_lcd_safe +01:68bd disable_lcd_safe@wait_ly_0 +01:690c memcpy +01:6915 memset +01:6870 print_bin4 +01:68d5 print_hex4 +01:6902 print_hex8 +01:6925 print_inline_string +01:68e1 print_load_font +01:68ed print_newline +01:691e print_string 01:67f0 quit 01:6805 quit@cb_return 01:680a quit@wait_ly_1 @@ -22,20 +22,26 @@ 01:681c quit@wait_ly_4 01:6826 quit@success 01:684d quit@failure -01:6862 quit@halt -01:6863 quit@halt_execution_0 -01:6899 reset_screen -01:68bc serial_send_byte +01:686c quit@halt +01:686d quit@halt_execution_0 +01:68a3 reset_screen +01:68c6 serial_send_byte 01:6000 font 00:0150 main -00:0163 main@quit_inline_1 -00:0174 run_tests -00:01a9 fail -00:0274 fail@wait_ly_5 -00:027a fail@wait_ly_6 -00:0281 fail@halt_execution_1 -00:0284 testcases1 +00:0166 main@quit_inline_1 +00:0177 run_tests +00:01ac fail +00:0277 fail@wait_ly_5 +00:027d fail@wait_ly_6 +00:0284 fail@halt_execution_1 +00:0287 testcases1 01:4000 testcases2 +00:ff80 hram.f +00:ff81 hram.a +00:ff82 hram.testcase_l +00:ff83 hram.testcase_h +00:ff84 hram.sp_save_l +00:ff85 hram.sp_save_h [definitions] 0000000a _sizeof_clear_vram @@ -49,11 +55,17 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font 00002000 _sizeof_testcases1 00002000 _sizeof_testcases2 -00000024 _sizeof_main +00000001 _sizeof_hram.f +00000001 _sizeof_hram.a +00000001 _sizeof_hram.testcase_l +00000001 _sizeof_hram.testcase_h +00000001 _sizeof_hram.sp_save_l +00000001 _sizeof_hram.sp_save_h +00000027 _sizeof_main 00000035 _sizeof_run_tests diff --git a/cinema/gb/mooneye-gb/acceptance/interrupts/ie_push/test.gb b/cinema/gb/mooneye-gb/acceptance/interrupts/ie_push/test.gb index 2a12ea3cd5eefd98e9bc04a1917a9473ba7c270e..2cf608e4c366d4387981ecf0a93b54c799a44abc 100644 GIT binary patch delta 256 zcmZo@U}|V!+Th2?t(|Ph@ZfBV$6*Gh$&F0QCo!e4tn)Z~XLAPAVqP$7GQWTVgkdb8 z2w_AB$U_*_Fp&i?HAe)LAyThlYWM`9+KmLEQjvl(U^Sa71slxRTRhGdc${4{$-~ra zvPb3F$sSceTn)rEKwJyN67mjqPCyzLF*(sgoN?#mN)Ju3!ydKIIjP9d fz{sGm{_vT}J3M4qu6i6jxp|^szTV~uOzSxSJJDN?}>zarV;Y45r1rVAf=Q0R;%dSU?fN zh!Bv6Fsfl93t(!F2q;6OUc=Pz2|~3S2|}eJ1!cf$HdhKZn6X!RoK5pMJ7bcEsY|Cv z<=IY;Dj==~;u;{X1!4(N2RkPqjfNZ;B>t{{;Pk-xf%gM1JHZDIc7GnYA6`GX*+bKK zr$_BG`FHX*t@#&JPAW1qFfu5tKYYleV&e%ZC1Gxf@8LjJl@hna4=(2ACzK?99z1(` M^L-CR^N9jn0E$R?#sB~S diff --git a/cinema/gb/mooneye-gb/acceptance/interrupts/ie_push/test.sym b/cinema/gb/mooneye-gb/acceptance/interrupts/ie_push/test.sym index 913ffb513..f65a5f302 100644 --- a/cinema/gb/mooneye-gb/acceptance/interrupts/ie_push/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/interrupts/ie_push/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/interrupts/ie_push.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0200 round1 @@ -66,7 +66,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/intr_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/intr_timing/test.gb index 5f84db850ac88464df307ec8995ff56f8ad9cbb8..c1474753dd80f53ce574334dbd46306c507ac435 100644 GIT binary patch delta 873 zcmZo@U}|V!+Th2?ba~3;07h??D(|zKCeLS#1T!}OVf^7*4-)bYN=?r!E=esaW;hGv z1Ch2Dko?fGT|*Zr>sVZzT2zvmp9hzA@~GObAp}ym$vY&qxI`f>F*7GMh2iA-@DCmF zKtTlshSSa(njp;#K*CCa;X|YUhpwF(JZJksniLfnL?lFkjCy~NS_y6-Qvm`PPJ4qj zy1_Iy_t# z3(SC4{||lm4X6iun&EUdSfeXUV~hWXUi=y%`Vcl3gAMS28PM+kVFED*)Ss>fYxIF> zZ1exnPmIRHRo=qjNOJ^6t`sm@$Q16!WC5oNP!26 z0v}`rCk+`MFdp?f`t+=e_gMq)vw4#bc$u07dsm(f_O1frY9Ouw;#weF!;8GXo;E+5sVZzT2zvmp9hzA@~GObAp}ym!aF3jxI`f>F*7GMh2iA-@DCmF zKtTlshSSa(njp;#K*CCa;X|YUhpwF(JZD=$niLfnL?lFkjCy~NS_y6-Qvm`PPJ4qj zy1_Iy_t# z3(SC4{||lm4X6iun&EUdSfeXUV~hWXUi=y%`Vcl3gAMS28PM+kVFED*)Ss>fYxIF> zZ1exnPmIRH1>VBoNOJ^6t`sm@$Q16!WC5oNP!26 z0v}`rCk+`MFdp?f`t+=o_gOXXvni7gc$vC*dRLzH^sWNpY9Ouw;#we<5OuI~0@7&6 zfkEQ$`Ug%AoF8~U@Ujzp;9&RXf&1a=$SB2 e@2{uL&qjEEJRC83hPMpMLhqv|HwQ8WnE(Lcf<`s~ diff --git a/cinema/gb/mooneye-gb/acceptance/intr_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/intr_timing/test.sym index 378f26caa..f0060db3e 100644 --- a/cinema/gb/mooneye-gb/acceptance/intr_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/intr_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0157 test_round1 00:019a test_round1@quit_inline_1 @@ -91,6 +91,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -102,29 +121,10 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000007 _sizeof_main 0000005a _sizeof_test_round1 00000002 _sizeof_finish_round1 diff --git a/cinema/gb/mooneye-gb/acceptance/jp_cc_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/jp_cc_timing/test.gb index 87240e73152c6b835ec0b0ace888b65bb4bbf958..ea37e3f2f3a6f4c3dfc1c06e7aba97488376610f 100644 GIT binary patch delta 204 zcmZo@U}|V!+Th2?bbrF+07h}m!ybzN{tC`vWE5aH3uHI^7i^GcOaQSDH~jys*v)wO zgZtTa9%t`Np1>&10%ojclmat0pJX&}V{h>|Ti|ha(IgL3v&kNnXD5490dX}D*8p)X z5KG8A*f{}dT*Tx=4{^qwlPf(m#SVMaK9heZZ_}E8LFJ?(Ljxm&!urE!Chzc&VY%vY T^yKD;j4vfNe_*@?BBEIVOo~}w delta 225 zcmZo@U}|V!+Th2?^z_N(07h}mogRw+{tC`vWE5aH3uHI^7i^GcOaQSDH~jys*v)wO zgZtSf9%nC2p1>&10%ojclmat0pJX&}W3Tc!o91zL#v~6@mrjq$vz;DQKwJ&PH9%Yo z#1f(oc1}PV4LLAK{9XUR>4EbD?+0FXf)5<*{ycC$ynb@Chof1%#uHLX!rT(y!-1?SC2olyT+GW)C`tT0c=q(>`yPts69u>c`KV-b diff --git a/cinema/gb/mooneye-gb/acceptance/jp_cc_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/jp_cc_timing/test.sym index 7cd29900a..7bcee510f 100644 --- a/cinema/gb/mooneye-gb/acceptance/jp_cc_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/jp_cc_timing/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/jp_cc_timing.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0151 main@wait_ly_5 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/jp_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/jp_timing/test.gb index ca092b922f61e397bdf39680ad926de551284df4..a81d95aa869075acf721b4431538a0156f24c576 100644 GIT binary patch delta 204 zcmZo@U}|V!+Th2?bf0^20He6(VGqTBe+B0-G72!91+p9d3pU6zCV<$78~%S*>}EXt z!TszykF$3sPhb>h0W(%JN`V=hPcj;~vA1}fE$}$IXp)Di*<_E(vy(llfVdinYk;^G zh$ZA5?3{o!E@E<`hdATT$(0_OVuw9ypUJVg2DVlXrN?uw3;x TdUEqa#+MSCKQP_`5z(vw=r&l| delta 225 zcmZo@U}|V!+Th2?^fZ2Q0He6(P7lR@e+B0-G72!91+p9d3pU6zCV<$78~%S*>}EXt z!TszKkF%F1Phb>h0W(%JN`V=hPcj;~u~&JVP4hTAW0HrdOQ%QW*-notAg%`D8X&F( zVhK?PJ0~EGh8!3q{;q%E^uYOn_X96G!3Pd@e;&9WUO&0nL(_PtN9{BDck(u^`4?19 zDl#-MGAOJ+e8{6>;|VDxVQz`<;XqcE61T(;F6QMYlq7y0JbQZceGf(Ri2_^zih5)2 diff --git a/cinema/gb/mooneye-gb/acceptance/jp_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/jp_timing/test.sym index 84bce7a55..b965f73a9 100644 --- a/cinema/gb/mooneye-gb/acceptance/jp_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/jp_timing/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/jp_timing.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0151 main@wait_ly_5 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/ld_hl_sp_e_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/ld_hl_sp_e_timing/test.gb index b2402905197bffe5de9d40471e40ba6d3861ad08..2212c279c8f42d3487d88a86036bb50d9e542a72 100644 GIT binary patch delta 888 zcmZo@U}|V!+Th2?WE3+wfKgm#rnln%zk(MS83h>5&h$3?e_pZSzu+}S#snaDb2DS1 zTYZ)H*-hR-sp*-;C8#@Yv=-H9gB-oi%K%{^Wf4>9#z{lgg^>6 zd55GHmnftqX6B@(Fq~W;{-GltD5#*oaN1cz6Qr2|NLVQ_d}#Fl(6v*8=WIVnlcEBH zh=eGRQST2@E5Qw9DnJ0kX>YJbH<-o-{|}v*8Zq@joCC5s7;JzO%z$S94?VaHs7J9m z8m!S7rm@NYLpLss$oddACxZ=eff>;1|Dg}R0rg-{Gn~!_YjlNaZ1Mlli(ex|AHwEh zumK)01KRyROd!U9`qR~5jXp4qZT=tniP3nt%3By5X^z0il>)}9G??cG+c4a7A-Tnoe!@(y-RKpGb@SA&|lq z-XW>QB?@VYnK`K`3@6uzf9Qw@3MwctoOagG1Zidf5>^Tf9~%8XbnVpOIok@-q^Q6k zA|VQ7)cb?fN^k?23J}0>+8eCV4W_Zd|3fFHMofJW=YVVu1{>f6Goac3Lk}(k>QQWt z25WSNX>9WU(2YwYvOa{($zTIqUI~nj diff --git a/cinema/gb/mooneye-gb/acceptance/ld_hl_sp_e_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ld_hl_sp_e_timing/test.sym index 256ba7697..fb9e39f8b 100644 --- a/cinema/gb/mooneye-gb/acceptance/ld_hl_sp_e_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ld_hl_sp_e_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0151 main@wait_ly_5 00:0157 main@wait_ly_6 @@ -95,6 +95,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -106,29 +125,10 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000037 _sizeof_main 00000049 _sizeof_test_finish 00000006 _sizeof_wram_test diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/basic/test.gb b/cinema/gb/mooneye-gb/acceptance/oam_dma/basic/test.gb index 3c240115a87a3b6a3f1c868a79611059b95fa3ca..6610ce208939eee47efd6598e6cbed6e52ed90cc 100644 GIT binary patch delta 276 zcmZo@U}|V!+Th0+wt>r#;lbG!kF%FO6dV2vZeV2OU^x5H!%paI!+%8vAwh~jw>r<0!*=Y!==c%0?hypS!U~QGx>M&Hm&&=R8A^_UAF%4FAqhA21W)25bNt{^RpW~J|5oSQL*ual#(#F#P@I@ lt4fJm;s+P=@)JrDKM$T|_B?uW^Fc;?fz1~f4d6r|8vuXhcntsm delta 259 zcmZo@U}|V!+Th0+yp!{6mB-nW9*PbB1=lh%axk2I?qMf%w&A}bgODJ@KgId^ zn#x%Fpy9J(1LNTj?q?Z1-4Zi%tQ1t-Tp2zzoW1KI=5+G2;vBHtK992uo0l-g2yFf< z_{WqTXmpy#*-eu?OkFxXD$jO$Q~_}{5Z3^4Ef7nHI@mb@X*A@(An|wo1E&Yh54<0E z*$F;yu>14C{qW_<%^uEL&pm3N$-k4gY0bZ&a#9iO#Px?icqlS7Ffu5BSYJ<@pIzqh e@$jvdHC diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/basic/test.sym b/cinema/gb/mooneye-gb/acceptance/oam_dma/basic/test.sym index dc17e1bde..3ed53644b 100644 --- a/cinema/gb/mooneye-gb/acceptance/oam_dma/basic/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/oam_dma/basic/test.sym @@ -2,19 +2,19 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/oam_dma/basic.gb". [labels] -01:48c9 clear_oam -01:48d3 clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:4898 memcmp -01:48e7 memcpy -01:48f0 memset -01:48a6 print_hex4 -01:48dd print_hex8 -01:4900 print_inline_string -01:48b2 print_load_font -01:48be print_newline -01:48f9 print_string +01:48d3 clear_oam +01:48dd clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48a2 memcmp +01:48f1 memcpy +01:48fa memset +01:48b0 print_hex4 +01:48e7 print_hex8 +01:490a print_inline_string +01:48bc print_load_font +01:48c8 print_newline +01:4903 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -23,20 +23,21 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main -00:0176 fail -00:0180 fail@quit_inline_1 -00:0195 finish -00:019c finish@quit_inline_2 -00:01ad hiram_proc -00:01b5 hiram_proc_end +00:0179 fail +00:0183 fail@quit_inline_1 +00:0198 finish +00:019f finish@quit_inline_2 +00:01b0 dma_proc +00:01b8 _end_dma_proc 00:1200 random_data -00:ff80 fail_offset +00:ff80 hram.dma_proc +00:ff90 fail_offset [definitions] 0000000a _sizeof_clear_oam @@ -51,13 +52,14 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font +00000010 _sizeof_hram.dma_proc 00000001 _sizeof_fail_offset -00000026 _sizeof_main +00000029 _sizeof_main 0000001f _sizeof_fail 00000018 _sizeof_finish -00000008 _sizeof_hiram_proc -0000104b _sizeof_hiram_proc_end +00000008 _sizeof_dma_proc +00001048 _sizeof__end_dma_proc diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/reg_read/test.gb b/cinema/gb/mooneye-gb/acceptance/oam_dma/reg_read/test.gb index 914fa5471cbe83373dc8fe4b6c1bbd1befe9ef96..9fe48e236b303d5421c43c396360f0ee90d8bf18 100644 GIT binary patch delta 407 zcmZo@U}|V!+Th1nzoycV;lbG!55;Y{Bt^_$OMwFV`Ah6%TIvl>px`0Waj{3+aC&M`mA`A@$d)t zv+F$0-th=YtuHQ7@b_jAV>tO)@h(EbEip64N}`?{8)j(VW z#I-;yA@2b6{$vka#Nae Ox$1HBpEugP{oii zfk@b4NSF#hWWwPxo8y@l+HU@9|A(Eu%HwRB$JrT^JWO3WJu1(3dQ<^%H4xVTaV-!_ zh&llM-|2yd92g}2u7BY4!1;mq11~$l2M%_B9=IP~Ke^dM(|D&x?KAmz@;0sc7gSCv yGBhwUD6Btx$fIK82`MFEZi(;VKvtC!x5N)F=H(}pBz_(|dwTPI4@L8d0$c!r8pb97 diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/reg_read/test.sym b/cinema/gb/mooneye-gb/acceptance/oam_dma/reg_read/test.sym index 277379b83..3b3502e2b 100644 --- a/cinema/gb/mooneye-gb/acceptance/oam_dma/reg_read/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/oam_dma/reg_read/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/oam_dma/reg_read.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,41 +19,40 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main -00:0153 prepare_part1 -00:015f round1 -00:016b round2 -00:0177 prepare_part2 -00:0183 round3 -00:018d round4 -00:0197 prepare_part3 -00:01a3 round5 -00:01af round6 -00:01bb finish -00:01c2 finish@quit_inline_1 -00:01d3 fail_round1 -00:01da fail_round1@quit_inline_2 -00:01ec fail_round2 -00:01f3 fail_round2@quit_inline_3 -00:0205 fail_round3 -00:020c fail_round3@quit_inline_4 -00:021e fail_round4 -00:0225 fail_round4@quit_inline_5 -00:0237 fail_round5 -00:023e fail_round5@quit_inline_6 -00:0250 fail_round6 -00:0257 fail_round6@quit_inline_7 -00:0269 hiram_proc1 -00:0271 hiram_proc1_end -00:0271 hiram_proc2 -00:027b hiram_proc2_end -00:027b hiram_proc3 -00:0286 hiram_proc3_end +00:0156 prepare_part1 +00:0162 round1 +00:016e round2 +00:017a prepare_part2 +00:0186 round3 +00:0190 round4 +00:019a prepare_part3 +00:01a6 round5 +00:01b2 round6 +00:01be finish +00:01c5 finish@quit_inline_1 +00:01d6 fail_round1 +00:01dd fail_round1@quit_inline_2 +00:01ef fail_round2 +00:01f6 fail_round2@quit_inline_3 +00:0208 fail_round3 +00:020f fail_round3@quit_inline_4 +00:0221 fail_round4 +00:0228 fail_round4@quit_inline_5 +00:023a fail_round5 +00:0241 fail_round5@quit_inline_6 +00:0253 fail_round6 +00:025a fail_round6@quit_inline_7 +00:026c dma_proc1 +00:0274 dma_proc2 +00:027e dma_proc3 +00:0289 _end_dma_procs +00:ff80 hram.dma_proc [definitions] 0000000a _sizeof_clear_vram @@ -64,11 +63,12 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000003 _sizeof_main +00000010 _sizeof_hram.dma_proc +00000006 _sizeof_main 0000000c _sizeof_prepare_part1 0000000c _sizeof_round1 0000000c _sizeof_round2 @@ -85,8 +85,6 @@ 00000019 _sizeof_fail_round4 00000019 _sizeof_fail_round5 00000019 _sizeof_fail_round6 -00000008 _sizeof_hiram_proc1 -00000000 _sizeof_hiram_proc1_end -0000000a _sizeof_hiram_proc2 -00000000 _sizeof_hiram_proc2_end -0000000b _sizeof_hiram_proc3 +00000008 _sizeof_dma_proc1 +0000000a _sizeof_dma_proc2 +0000000b _sizeof_dma_proc3 diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/config.ini b/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/config.ini similarity index 100% rename from cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/config.ini rename to cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/config.ini diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/test.gb b/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/test.gb similarity index 93% rename from cinema/gb/mooneye-gb/acceptance/oam_dma/sources-dmgABCmgbS/test.gb rename to cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/test.gb index 41f684aa5e80e675b400d6ba58bf8911a8b9ac7e..79bb10103ae1d64bcac1480542e5329b06d13b8b 100644 GIT binary patch delta 710 zcmZ{iJ4nM&6o&7;i6~AjK8u14Sa1=Q`ar>0s#XsUD!2$m5EKzyiY~rrmad{)#7(P% zf`ST;9V!%u3>S(Bj=BiyBGN$|Y&LVd-{ogkfofh*#x)pB6NO=61(L9K<2S=9gCnf~}o+k@~2q z58339B(q4Kd&qFCL`H0~CL+-{L?6m17c}5UwT2b6qN{$NHZsr8w?JO{h>ME*p zWz~t*UmAv=q*uQaqLDNu!7H%?*okjNBUy2x>S-B;sWM3heNM|h{D|2}UQo@us>wQ% z$cB`H=2M&`&dg!wD4wM2h3z_td%;M@=aB_mw6Vp$MG);0*c#i39gTWuu&r~U-fHU=srf$yF zkKs!EYkVN4czV32Hw^0{3>#RRSX)@zSdA?aJ&Mo&Zk$2`P4EEp(G;JC+B&%)L#`?( XyW78xZ$Ptp0C(oibVa=9BuRe(;2{~r delta 755 zcmZo@U}|V!+ThL@!_2_MXw0Co(f6#B=h;}#v+15^3q8-iWwv8D+wfnJf#K{O=1ZN7 zpA}0O4^Qwo8{~O*ila`JjcNo%0!U7+X* zxF}4&2~2-ISbsf8KReTB#ZPdRlbM-R>w%)SKv4}Qbo(t}`sai6uVw-1PY0?D!cb}H z25~9Sb9P*>7#I{87BDg>tUuf031pr9$*jn*|Lh_by9FR~n84<&2bwbrYz_;^%ad0# zNeTjuzX=pR0ylp0RVICq_avD=E3z=7JI@*By!!~}IRjPd!BtMSXO;wcFBd2p0T+b@ zk1JF^FjDOPAzU^KsJInFu^Uh|I4=GpEIR^JxgJv`G%P+Vo(9R8L83GywYWsV-CcV-8s z8#d3gZj%>yn7U|sR-V=LtODX{Ag%%8S|FAXb+B^+(rCzmLE`WF2Tl*1A9z3TvJ-sZ zVE5;N`{DG-%AV%#)tIjIPC()z=o_-X*f9GG. -; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/oam_dma/sources-dmgABCmgbS.gb". +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/oam_dma/sources-GS.gb". [labels] -01:495d clear_oam -01:4967 clear_vram -01:4971 clear_wram -01:491a disable_lcd_safe -01:4920 disable_lcd_safe@wait_ly_0 -01:4938 memcmp -01:497b memcpy -01:4984 memset -01:4994 print_inline_string -01:4946 print_load_font -01:4952 print_newline -01:498d print_string +01:4967 clear_oam +01:4971 clear_vram +01:497b clear_wram +01:4924 disable_lcd_safe +01:492a disable_lcd_safe@wait_ly_0 +01:4942 memcmp +01:4985 memcpy +01:498e memset +01:499e print_inline_string +01:4950 print_load_font +01:495c print_newline +01:4997 print_string 01:4890 quit 01:48a5 quit@cb_return 01:48aa quit@wait_ly_1 @@ -22,52 +22,51 @@ 01:48bc quit@wait_ly_4 01:48c6 quit@success 01:48ed quit@failure -01:4902 quit@halt -01:4903 quit@halt_execution_0 -01:4906 reset_screen -01:4929 serial_send_byte +01:490c quit@halt +01:490d quit@halt_execution_0 +01:4910 reset_screen +01:4933 serial_send_byte 01:40a0 font 00:0150 main -00:015c prepare_part1 -00:015f test_0000 -00:0174 test_0000@quit_inline_1 -00:0189 test_3f00 -00:019e test_3f00@quit_inline_2 -00:01b3 test_4000 -00:01c8 test_4000@quit_inline_3 -00:01dd test_7f00 -00:01f2 test_7f00@quit_inline_4 -00:0207 prepare_part2 -00:0213 test_8000 -00:0228 test_8000@quit_inline_5 -00:023d test_9f00 -00:0252 test_9f00@quit_inline_6 -00:0267 prepare_part3 -00:0285 test_a000 -00:029a test_a000@quit_inline_7 -00:02af test_bf00 -00:02c4 test_bf00@quit_inline_8 -00:02d9 prepare_part4 -00:02ef test_c000 -00:0304 test_c000@quit_inline_9 -00:0319 test_df00 -00:032e test_df00@quit_inline_10 -00:0343 test_e000 -00:0358 test_e000@quit_inline_11 -00:036d test_fe00 -00:0385 test_fe00@quit_inline_12 -00:039a test_ff00 -00:03af test_ff00@quit_inline_13 -00:03c4 test_finish -00:03cb test_finish@quit_inline_14 -00:03dc check_oam -00:03e5 dma_proc -00:03ed dma_proc_end -00:03ed copy_dma_proc +00:015f prepare_part1 +00:016b test_0000 +00:0180 test_0000@quit_inline_1 +00:0195 test_3f00 +00:01aa test_3f00@quit_inline_2 +00:01bf test_4000 +00:01d4 test_4000@quit_inline_3 +00:01e9 test_7f00 +00:01fe test_7f00@quit_inline_4 +00:0213 prepare_part2 +00:021f test_8000 +00:0234 test_8000@quit_inline_5 +00:0249 test_9f00 +00:025e test_9f00@quit_inline_6 +00:0273 prepare_part3 +00:0291 test_a000 +00:02a6 test_a000@quit_inline_7 +00:02bb test_bf00 +00:02d0 test_bf00@quit_inline_8 +00:02e5 prepare_part4 +00:02fb test_c000 +00:0310 test_c000@quit_inline_9 +00:0325 test_df00 +00:033a test_df00@quit_inline_10 +00:034f test_e000 +00:0364 test_e000@quit_inline_11 +00:0379 test_fe00 +00:0391 test_fe00@quit_inline_12 +00:03a6 test_ff00 +00:03bb test_ff00@quit_inline_13 +00:03d0 test_finish +00:03d7 test_finish@quit_inline_14 +00:03e8 check_oam +00:03f1 dma_proc 00:03f9 copy_ram_pattern_1 00:0402 ram_pattern_1 00:04a2 copy_ram_pattern_2 00:04ab ram_pattern_2 +00:ff80 hram.dma_proc [definitions] 0000000a _sizeof_clear_oam @@ -81,12 +80,13 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -0000000c _sizeof_main -00000003 _sizeof_prepare_part1 +00000010 _sizeof_hram.dma_proc +0000000f _sizeof_main +0000000c _sizeof_prepare_part1 0000002a _sizeof_test_0000 0000002a _sizeof_test_3f00 0000002a _sizeof_test_4000 @@ -106,8 +106,6 @@ 00000018 _sizeof_test_finish 00000009 _sizeof_check_oam 00000008 _sizeof_dma_proc -00000000 _sizeof_dma_proc_end -0000000c _sizeof_copy_dma_proc 00000009 _sizeof_copy_ram_pattern_1 000000a0 _sizeof_ram_pattern_1 00000009 _sizeof_copy_ram_pattern_2 diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma_restart/test.gb b/cinema/gb/mooneye-gb/acceptance/oam_dma_restart/test.gb index 431bbc0b04879154434cc8df2ae6a2b67c27fc95..2b2b260dde431d0685b827151341a8373e998f0e 100644 GIT binary patch delta 861 zcmZo@U}|V!+Th2?Wch7!0HX}!%+0xs?QZo|-e)&?2c@QG7MG+J6*HU#@_|U(3rK$G z*sh@qlyxjFPAw|Q%+G^MJ9$)X*AN0J+~ggST3n)#mYA87n!<2$efWotc%Yzy0>f!% z4NZ_{1|VUj!0@5b|3lYK4W6_8AWe!23?dSuKt{bkNUa1nkf{Ix45z)p8r@(T8~i_X zVrsH0+Js( zwrl7DWgUx)Q;SM6^Yh@+P99a;HH1J4S9ph{7MCcbC1&QNrZAjbAO4{u9w?}wz;N1G zLldN#0Z3RWFnnnA|IoElgXe53NRy%hgNTGEkWudsQY*m?WGX-a!)b4@MmLzo2LBJ8 zm>MzlL7W4!IT&n!6U=~S{|`O545&x3IU20d8K$wx|3fz}jmY{CHYbA(aDf@n>i?k+ zzXA1NPcxj(25WSMX>9TT(2HLqL?6QDVz2=oFaz5CKTIITfcn$bV2wU7jcxuP`iaqa zxWHQ&9BGcg$dv-dsx+AA2IUD01Dys@;Dn;U8C5|bDBfLARJfw504eZ5QQ(8D;G`kL z1ID9XN1vXx@;3=ND680@Z}T{Jn4QJQhl4EbD?+0FXf)5<*{ycC$ zTs_&@+ff!% z4NZ_{1|VUj!0@5b|3lYK4W6_8AWe!23?dSuKt{bkNUa1nkf{Ix45z)p8r@(T8~i_X zVrsKKw&RJWxKdCzt`v{vUd98BmX6b2M0^GfZQX|A%f|8jko@O|m4c6!i)7awwp%=eKh(3hP#b5(GUP`taKsBlG90aD(sY1VZ?KAmz@;0sc7gSCvGBhwUD6Bs`!~5%L^Rp4& W9}h=Np5ZOSve5hJ$;}TLgG>NHT0hGG diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/oam_dma_timing/test.sym index 5c38cd42c..47bf72bac 100644 --- a/cinema/gb/mooneye-gb/acceptance/oam_dma_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/oam_dma_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0151 main@wait_ly_5 00:0157 main@wait_ly_6 @@ -92,6 +92,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -103,28 +122,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000021 _sizeof_main 00000037 _sizeof_test_finish diff --git a/cinema/gb/mooneye-gb/acceptance/pop_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/pop_timing/test.gb index 4b4dfa716fdd570edd727e430e2b9f54fed32c24..5b3a7ec68c7e5abd844db1a40501f5a0ac97d82e 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?q#U?8fN_aieU6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$KnhoQholylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY%55Uq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3&@!0CbW1Mdf3 zc7hKa?EXA(KU_W8+1pg1-@Epi{5yG@*8B@9ClwhQ7#S4SAD-d;^|blf2=9-FBPP%A QmSI`wee~pJM&=+B0HaJi`Tzg` diff --git a/cinema/gb/mooneye-gb/acceptance/pop_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/pop_timing/test.sym index 8d68df29c..78fd143e6 100644 --- a/cinema/gb/mooneye-gb/acceptance/pop_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/pop_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:02ad test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 0000015d _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/hblank_ly_scx_timing-GS/test.gb index f5109ff84a9be60b783bd1166d0e31fb5c3a6281..465d5809caf88ad9d513dae8b572754f285f15f3 100644 GIT binary patch delta 952 zcmZo@U}|V!+Th2?s?=x5@L+NvqfEUR%h`X-3=DO<4y|B53*|7>?FRD1oaCHgB3PvD z7#}!`Im$Ufm7u6V*N-V_#{|(`Po{QeiY#Y=>#hg+9@BY9e#exwV})x6>PD7F^EZZ+ z9UHpNdRU+n)XI*om1vzD$U4!Y+K{NY{;W8i`EaSnS$og3<&$SI>nmRXaRnRxpDp(c za&`9%4si_%W&lY8(Fb>kx;M-Yd-S~pv<9I@Wy@QJ;?+*3ip(Mo|q>THOo zG|&(Q1ve;9SQw~V7%b$3qQDtbfeVTPS4;&SC<=Vw3PgZ*oCM|o#x9SePtS6Cp8e`^ z)_8KOhpC^0XXRN5&nh6U2I3kZt_5NVc?UZuAdQo7V37E`{(;j2=Lg;oyzB%YIN1Gp z;C|R^@;?t#+c?kKXY%jlZCdj$sGL+}XkcVeSbsR(^XqBzv+AB75374tY&;>QB+M=G dJsilYQsS2Q!Nt7%gp$P1gJ%mi7kIXr0RT&2Zyx{v delta 926 zcmZo@U}|V!+Th1nuf_WLgUi2ugO!gBTxGXq22 zu0zY1VH}3K-9Vn0lbkb51dFsC;{#_T6Hrtj>8}Tyk0}du05RHe>1HNYcRe$z-@s0@ zVMR^6<~x{q4-4#X8~_-gEQEdb_~c4PFX=0cb_x$1*FWI@ zz22Qg;_qk0+l+@dc%7~CKD%l2Jw^q)O%7k!>p?v4pw#rt;*!*&Vg`^b5NU&yedyS( zp$n9CEG|whD#^^xgG)PkRBhJ~0-NL=l3HA%kd~O4lbXVCa((!Rj(DIJ1qFuF&KjB^ z%?v=oN`c`+qyLAlof9QS(21!L zQy;`RAe)211~|bCX!ifmgUf(=6q}>L8l7PpoBTg?!p0j>TY`tTc2 z5B4;}>1?n@SD3~Y{|~+RHA3_uY%T^H-~ltB-T%V`VhpH1T@BXg1Jl^%|Dm54jfbne zg~5^L2#j1QV5~}md2UdiurSbR5Cu*s3Y<|D1cKt-1x1A`stS+-4-^GH$O=vZvjO8# zucJ@Tx_F;8@IIS2`GA+HS+IBI*M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*=8udXCII05 BQvLt{ delta 941 zcmZo@U}|V!+Th2iZCm&GgUi2ug)lx-{(e@x$#{5!*VzK^vnw_~U{tW%{LlUydp(Hj9h91$SzMA@ zRLlU91|n^cx(^-OHFSZpj>W~PMJ1W}d2nebkE-n&LSUo3LsE-N6w(qib5c_nPOcCC z&=C*RqM*QV+F3&rq?rLoSSc`kX!QTkwNr!VY%9n@MFj>C2~i-U-XEk^f*Z(GfB=Tm z-e8SxFpUlVA38BLV(No92V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd z1{>f4GoaP~Lmz$v>cO67IGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsl zeP9~f{6F*)qw#Qow=g);9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_dJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQd zG#YYXkodd)fzt!$2i_07>;xY;*!_9nezuK||5#ApUM@*jKEyJ?V`{>Ed9~py8001juy#N3J diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_1_2_timing-GS/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/intr_1_2_timing-GS/test.sym index f7af1ea3d..5d4f5274f 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/intr_1_2_timing-GS/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/intr_1_2_timing-GS/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,41 +75,41 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main -00:0151 main@wait_ly_5 -00:0157 main@wait_ly_6 -00:01b2 setup_and_wait_mode1 -00:01b2 setup_and_wait_mode1@wait_ly_7 -00:01c5 setup_and_wait_mode2 -00:01d2 fail_halt -00:01d9 fail_halt@quit_inline_1 +00:0153 main@wait_ly_5 +00:0159 main@wait_ly_6 +00:01b4 setup_and_wait_mode1 +00:01b4 setup_and_wait_mode1@wait_ly_7 +00:01c7 setup_and_wait_mode2 +00:01d4 fail_halt +00:01db fail_halt@quit_inline_1 [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -102,29 +121,10 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h -00000062 _sizeof_main +00000064 _sizeof_main 00000013 _sizeof_setup_and_wait_mode1 0000000d _sizeof_setup_and_wait_mode2 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_0_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_0_timing/test.gb index 2e0e224b63fe8b6ce2579d797b541386425f7775..cd2d3a9ab6370c9645c07663a629b0dd1aa514fd 100644 GIT binary patch delta 917 zcmZo@U}|V!+Th2?YRqiN@L+NvqlnNZMg|}_dzCTZESP!r>g009DCtLxb{r2J*FWI@ zz22Qg;_qk0myCxuc%7~CKD%l28%80!O%7k!>p?v4pw#rt;*!*&Vg`^b5NU&yedyS( zp$n9CEG|whD#^^xgG)PkRBhJ~0-NL=l3HA%kd~O4lbXVCa((!Rj(DIJ1qFuF&KjB^ z%?v=oN`c`+qyLAlof9QS(21!L zQy;`RAe)211~|bCX!ifmgUf(=6q}>L8l7PpoBTg?!p0j>TY`tTc2 z5B4;}>1?n@SD3~Y{|~+RHA3_uY%T^H-~ltB-T%V`VhpH1T@BXg1Jl^%|Dm54jfbne zg~5^L2#j1QV5~}md2UdiurSbR5Cu*s3Y<|D1cKt-1x1A`stS+-4-^GH$O=vZGXdjK zucJ@Tx_F;8@IIS2`GA+HS+IBI*M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*W=19t699>2 BQMCX7 delta 939 zcmZo@U}|V!+Th2iX~FpUgUi2ug4bK$vGQPp)K) zl77Hw$ML{%{R95r>)lx-{(e?`&Uko(*VzK^vnw{gV-&L6{LlUydp(Hj9h91$SzMA@ zRLlU91|n^cx(^-OHFSZpj>W~PMJ1W}d2nebkE-n&LSUo3LsE-N6w(qib5c_nPOcCC z&=C*RqM*QV+F3&rq?rLoSSc`kX!QTkwNr!VY%9n@MFj>C2~i-U-XEk^f*Z(GfB=Tm z-e8SxFpUlVA38BLV(No92V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd z1{>f4GoaP~Lmz$v>cO67IGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsl zeP9~f{6F*)qw#Qow=g);9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_dJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQd zG#YYXkodd)fzt!$2i_07>;xY;*!_9nezuK||5#ApUM@*jKEyJ?V`{>Edj7&i$0Em`hbN~PV diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_0_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_0_timing/test.sym index b0502abbd..1da9ef2bb 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_0_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_0_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,41 +75,41 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main -00:0151 main@wait_ly_5 -00:0157 main@wait_ly_6 -00:01b0 setup_and_wait_mode2 -00:01b0 setup_and_wait_mode2@wait_ly_7 -00:01d3 setup_and_wait_mode0 -00:01e0 fail_halt -00:01e7 fail_halt@quit_inline_1 +00:0153 main@wait_ly_5 +00:0159 main@wait_ly_6 +00:01b2 setup_and_wait_mode2 +00:01b2 setup_and_wait_mode2@wait_ly_7 +00:01d5 setup_and_wait_mode0 +00:01e2 fail_halt +00:01e9 fail_halt@quit_inline_1 [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -102,29 +121,10 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h -00000060 _sizeof_main +00000062 _sizeof_main 00000023 _sizeof_setup_and_wait_mode2 0000000d _sizeof_setup_and_wait_mode0 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing/test.gb index c6109d9e8e54f473bc9628168c7b662d7412f35a..16d0f83a58aba38d881d4b6fad6c6e47db931901 100644 GIT binary patch delta 899 zcmZo@U}|V!+Th2?dOO>Y;lboUMiEAV$qN|uCZA>GWDYnBV)yeIGksRHVmiFR>uiVm!uXIGk|1)NE@W=L&tUvU7)OEadB!%%{E!~?Y`C@`FM*3blLW&jda3Jf0_{XcZ=)ZjVW z53*2Efk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*PPE3uM`XJ5$*&GZuzzJqRv;T)4 zTn5ym*c=Vk=nT`?002h2N-h8Z delta 935 zcmZo@U}|V!+Th11`5^c62bX{S3crBl1chIUj{ohL9{fMc$27T+QEhSqBgf7ecAfA-(l>p@)apw#rt;*!*&Vg`^j5NU(d zedyS(p$n9CEG|whD#^^xgG)PkRBhJ~0vqKWl3HA%kd~O4lbXVCa((!Rj(DIJ1qFuF z&KjB^%?v=oN`c`+qyLAlof9QS z(21!LQy;`RAe)211~|bCX!ifmgUf(=6q}>L8l7PpoBTg?!p0j>TY z`tTc25B4;}>1?n@SD3~Y{|~+RHA3_uY%T^H-~ltB-T%V`VhpH1T@BXg1Jl^%|Dm54 zjfV@og~5^L2#j1QV5~}md2UdiurSbR5Cu*s3Y<|D1cKt-1x1A`stS+-4-^GH$O=vx zGCW{B>UH$#Su5|eYTjp4CLi!Jb@BABJnQLQ1;o`rTm!_lKrA8ZVCMv+(U1d!#NYJ~ zoE|to@P6QBC-}g@?#~1F!_||Wy-gMRy=$MzzmvCV&A*^>Qjwv7kwIbo;ThgvPn(~O Y@cwu>V)6`c8J30KM^A1JWC}6?0FEwQC;$Ke diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing/test.sym index bd96f0080..f097a5249 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,40 +75,40 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main -00:0151 main@wait_ly_5 -00:0157 main@wait_ly_6 -00:020e setup_and_wait_mode2 -00:020e setup_and_wait_mode2@wait_ly_7 -00:0231 fail_halt -00:0238 fail_halt@quit_inline_1 +00:0153 main@wait_ly_5 +00:0159 main@wait_ly_6 +00:0210 setup_and_wait_mode2 +00:0210 setup_and_wait_mode2@wait_ly_7 +00:0233 fail_halt +00:023a fail_halt@quit_inline_1 [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -101,28 +120,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h -000000be _sizeof_main +000000c0 _sizeof_main 00000023 _sizeof_setup_and_wait_mode2 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/test.gb index 430310ca3659e1bc4f7ff4d17d99f0ecfa457730..6fc068f541f1f11496a267f8a256544df4d6c7ee 100644 GIT binary patch literal 32768 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 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/test.sym index 8f8e251f1..cffab794c 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode0_timing_sprites/test.sym @@ -2,18 +2,18 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ppu/intr_2_mode0_timing_sprites.gb". [labels] -01:48bb clear_oam -01:48c5 clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48d9 memcpy -01:48e2 memset -01:4898 print_hex4 -01:48cf print_hex8 -01:48f2 print_inline_string -01:48a4 print_load_font -01:48b0 print_newline -01:48eb print_string +01:48c5 clear_oam +01:48cf clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48e3 memcpy +01:48ec memset +01:48a2 print_hex4 +01:48d9 print_hex8 +01:48fc print_inline_string +01:48ae print_load_font +01:48ba print_newline +01:48f5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -22,238 +22,238 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main -00:0174 _testcase_data_0 -00:0176 _testcase_end_0 -00:0187 _testcase_data_1 -00:018a _testcase_end_1 -00:019b _testcase_data_2 -00:019f _testcase_end_2 -00:01b0 _testcase_data_3 -00:01b5 _testcase_end_3 -00:01c6 _testcase_data_4 -00:01cc _testcase_end_4 -00:01dd _testcase_data_5 -00:01e4 _testcase_end_5 -00:01f5 _testcase_data_6 -00:01fd _testcase_end_6 -00:020e _testcase_data_7 -00:0217 _testcase_end_7 -00:0228 _testcase_data_8 -00:0232 _testcase_end_8 -00:0243 _testcase_data_9 -00:024e _testcase_end_9 -00:025f _testcase_data_10 -00:026a _testcase_end_10 -00:027b _testcase_data_11 -00:0286 _testcase_end_11 -00:0297 _testcase_data_12 -00:02a2 _testcase_end_12 -00:02b3 _testcase_data_13 -00:02be _testcase_end_13 -00:02cf _testcase_data_14 -00:02da _testcase_end_14 -00:02eb _testcase_data_15 -00:02f6 _testcase_end_15 -00:0307 _testcase_data_16 -00:0312 _testcase_end_16 -00:0323 _testcase_data_17 -00:032e _testcase_end_17 -00:033f _testcase_data_18 -00:034a _testcase_end_18 -00:035b _testcase_data_19 -00:0366 _testcase_end_19 -00:0377 _testcase_data_20 -00:0382 _testcase_end_20 -00:0393 _testcase_data_21 -00:039e _testcase_end_21 -00:03af _testcase_data_22 -00:03ba _testcase_end_22 -00:03cb _testcase_data_23 -00:03d6 _testcase_end_23 -00:03e7 _testcase_data_24 -00:03f2 _testcase_end_24 -00:0403 _testcase_data_25 -00:040e _testcase_end_25 -00:041f _testcase_data_26 -00:042a _testcase_end_26 -00:043b _testcase_data_27 -00:0446 _testcase_end_27 -00:0457 _testcase_data_28 -00:0462 _testcase_end_28 -00:0473 _testcase_data_29 -00:047e _testcase_end_29 -00:048f _testcase_data_30 -00:049a _testcase_end_30 -00:04ab _testcase_data_31 -00:04b6 _testcase_end_31 -00:04c7 _testcase_data_32 -00:04d2 _testcase_end_32 -00:04e3 _testcase_data_33 -00:04ee _testcase_end_33 -00:04ff _testcase_data_34 -00:050a _testcase_end_34 -00:051b _testcase_data_35 -00:0526 _testcase_end_35 -00:0537 _testcase_data_36 -00:0542 _testcase_end_36 -00:0553 _testcase_data_37 -00:055e _testcase_end_37 -00:056f _testcase_data_38 -00:057a _testcase_end_38 -00:058b _testcase_data_39 -00:0596 _testcase_end_39 -00:05a7 _testcase_data_40 -00:05b2 _testcase_end_40 -00:05c3 _testcase_data_41 -00:05ce _testcase_end_41 -00:05df _testcase_data_42 -00:05ea _testcase_end_42 -00:05fb _testcase_data_43 -00:0606 _testcase_end_43 -00:0617 _testcase_data_44 -00:0622 _testcase_end_44 -00:0633 _testcase_data_45 -00:063e _testcase_end_45 -00:064f _testcase_data_46 -00:065a _testcase_end_46 -00:066b _testcase_data_47 -00:0676 _testcase_end_47 -00:0687 _testcase_data_48 -00:0692 _testcase_end_48 -00:06a3 _testcase_data_49 -00:06ae _testcase_end_49 -00:06bf _testcase_data_50 -00:06ca _testcase_end_50 -00:06db _testcase_data_51 -00:06e6 _testcase_end_51 -00:06f7 _testcase_data_52 -00:06f9 _testcase_end_52 -00:070a _testcase_data_53 -00:070c _testcase_end_53 -00:071d _testcase_data_54 -00:071f _testcase_end_54 -00:0730 _testcase_data_55 -00:0732 _testcase_end_55 -00:0743 _testcase_data_56 -00:0745 _testcase_end_56 -00:0756 _testcase_data_57 -00:0758 _testcase_end_57 -00:0769 _testcase_data_58 -00:076b _testcase_end_58 -00:077c _testcase_data_59 -00:077e _testcase_end_59 -00:078f _testcase_data_60 -00:0791 _testcase_end_60 -00:07a2 _testcase_data_61 -00:07a4 _testcase_end_61 -00:07b5 _testcase_data_62 -00:07b7 _testcase_end_62 -00:07c8 _testcase_data_63 -00:07ca _testcase_end_63 -00:07db _testcase_data_64 -00:07dd _testcase_end_64 -00:07ee _testcase_data_65 -00:07f0 _testcase_end_65 -00:0801 _testcase_data_66 -00:0803 _testcase_end_66 -00:0814 _testcase_data_67 -00:0816 _testcase_end_67 -00:0827 _testcase_data_68 -00:0829 _testcase_end_68 -00:083a _testcase_data_69 -00:083c _testcase_end_69 -00:084d _testcase_data_70 -00:084f _testcase_end_70 -00:0860 _testcase_data_71 -00:0862 _testcase_end_71 -00:0873 _testcase_data_72 -00:0875 _testcase_end_72 -00:0886 _testcase_data_73 -00:0888 _testcase_end_73 -00:0899 _testcase_data_74 -00:089b _testcase_end_74 -00:08ac _testcase_data_75 -00:08ae _testcase_end_75 -00:08bf _testcase_data_76 -00:08c1 _testcase_end_76 -00:08d2 _testcase_data_77 -00:08d4 _testcase_end_77 -00:08e5 _testcase_data_78 -00:08e8 _testcase_end_78 -00:08f9 _testcase_data_79 -00:08fc _testcase_end_79 -00:090d _testcase_data_80 -00:0910 _testcase_end_80 -00:0921 _testcase_data_81 -00:0924 _testcase_end_81 -00:0935 _testcase_data_82 -00:0938 _testcase_end_82 -00:0949 _testcase_data_83 -00:094c _testcase_end_83 -00:095d _testcase_data_84 -00:0960 _testcase_end_84 -00:0971 _testcase_data_85 -00:0974 _testcase_end_85 -00:0985 _testcase_data_86 -00:0988 _testcase_end_86 -00:0999 _testcase_data_87 -00:099c _testcase_end_87 -00:09ad _testcase_data_88 -00:09b0 _testcase_end_88 -00:09c1 _testcase_data_89 -00:09c4 _testcase_end_89 -00:09d5 _testcase_data_90 -00:09d8 _testcase_end_90 -00:09e9 _testcase_data_91 -00:09ec _testcase_end_91 -00:09fd _testcase_data_92 -00:0a00 _testcase_end_92 -00:0a11 _testcase_data_93 -00:0a14 _testcase_end_93 -00:0a25 _testcase_data_94 -00:0a28 _testcase_end_94 -00:0a39 _testcase_data_95 -00:0a44 _testcase_end_95 -00:0a55 _testcase_data_96 -00:0a60 _testcase_end_96 -00:0a71 _testcase_data_97 -00:0a7c _testcase_end_97 -00:0a8d _testcase_data_98 -00:0a98 _testcase_end_98 -00:0aa9 _testcase_data_99 -00:0ab4 _testcase_end_99 -00:0ac5 _testcase_data_100 -00:0ad0 _testcase_end_100 -00:0ae1 _testcase_data_101 -00:0aec _testcase_end_101 -00:0afd _testcase_data_102 -00:0b08 _testcase_end_102 -00:0b19 _testcase_data_103 -00:0b24 _testcase_end_103 -00:0b35 _testcase_data_104 -00:0b40 _testcase_end_104 -00:0b47 _testcase_end_104@quit_inline_1 -00:0b58 run_testcase -00:0b5a run_testcase@wait_ly_5 -00:0b60 run_testcase@wait_ly_6 -00:0b8b testcase_round_a -00:0b96 testcase_round_a_ret -00:0ba6 testcase_round_b -00:0bb1 testcase_round_b_ret -00:0bc2 prepare_sprites -00:0bd8 prepare_nop_area -00:0be1 setup_and_wait_mode2 -00:0be1 setup_and_wait_mode2@wait_ly_7 -00:0c04 test_fail -00:0c0b test_fail@quit_inline_2 -00:0c29 fail_halt -00:0c30 fail_halt@quit_inline_3 +00:0176 _testcase_data_0 +00:0178 _testcase_end_0 +00:0189 _testcase_data_1 +00:018c _testcase_end_1 +00:019d _testcase_data_2 +00:01a1 _testcase_end_2 +00:01b2 _testcase_data_3 +00:01b7 _testcase_end_3 +00:01c8 _testcase_data_4 +00:01ce _testcase_end_4 +00:01df _testcase_data_5 +00:01e6 _testcase_end_5 +00:01f7 _testcase_data_6 +00:01ff _testcase_end_6 +00:0210 _testcase_data_7 +00:0219 _testcase_end_7 +00:022a _testcase_data_8 +00:0234 _testcase_end_8 +00:0245 _testcase_data_9 +00:0250 _testcase_end_9 +00:0261 _testcase_data_10 +00:026c _testcase_end_10 +00:027d _testcase_data_11 +00:0288 _testcase_end_11 +00:0299 _testcase_data_12 +00:02a4 _testcase_end_12 +00:02b5 _testcase_data_13 +00:02c0 _testcase_end_13 +00:02d1 _testcase_data_14 +00:02dc _testcase_end_14 +00:02ed _testcase_data_15 +00:02f8 _testcase_end_15 +00:0309 _testcase_data_16 +00:0314 _testcase_end_16 +00:0325 _testcase_data_17 +00:0330 _testcase_end_17 +00:0341 _testcase_data_18 +00:034c _testcase_end_18 +00:035d _testcase_data_19 +00:0368 _testcase_end_19 +00:0379 _testcase_data_20 +00:0384 _testcase_end_20 +00:0395 _testcase_data_21 +00:03a0 _testcase_end_21 +00:03b1 _testcase_data_22 +00:03bc _testcase_end_22 +00:03cd _testcase_data_23 +00:03d8 _testcase_end_23 +00:03e9 _testcase_data_24 +00:03f4 _testcase_end_24 +00:0405 _testcase_data_25 +00:0410 _testcase_end_25 +00:0421 _testcase_data_26 +00:042c _testcase_end_26 +00:043d _testcase_data_27 +00:0448 _testcase_end_27 +00:0459 _testcase_data_28 +00:0464 _testcase_end_28 +00:0475 _testcase_data_29 +00:0480 _testcase_end_29 +00:0491 _testcase_data_30 +00:049c _testcase_end_30 +00:04ad _testcase_data_31 +00:04b8 _testcase_end_31 +00:04c9 _testcase_data_32 +00:04d4 _testcase_end_32 +00:04e5 _testcase_data_33 +00:04f0 _testcase_end_33 +00:0501 _testcase_data_34 +00:050c _testcase_end_34 +00:051d _testcase_data_35 +00:0528 _testcase_end_35 +00:0539 _testcase_data_36 +00:0544 _testcase_end_36 +00:0555 _testcase_data_37 +00:0560 _testcase_end_37 +00:0571 _testcase_data_38 +00:057c _testcase_end_38 +00:058d _testcase_data_39 +00:0598 _testcase_end_39 +00:05a9 _testcase_data_40 +00:05b4 _testcase_end_40 +00:05c5 _testcase_data_41 +00:05d0 _testcase_end_41 +00:05e1 _testcase_data_42 +00:05ec _testcase_end_42 +00:05fd _testcase_data_43 +00:0608 _testcase_end_43 +00:0619 _testcase_data_44 +00:0624 _testcase_end_44 +00:0635 _testcase_data_45 +00:0640 _testcase_end_45 +00:0651 _testcase_data_46 +00:065c _testcase_end_46 +00:066d _testcase_data_47 +00:0678 _testcase_end_47 +00:0689 _testcase_data_48 +00:0694 _testcase_end_48 +00:06a5 _testcase_data_49 +00:06b0 _testcase_end_49 +00:06c1 _testcase_data_50 +00:06cc _testcase_end_50 +00:06dd _testcase_data_51 +00:06e8 _testcase_end_51 +00:06f9 _testcase_data_52 +00:06fb _testcase_end_52 +00:070c _testcase_data_53 +00:070e _testcase_end_53 +00:071f _testcase_data_54 +00:0721 _testcase_end_54 +00:0732 _testcase_data_55 +00:0734 _testcase_end_55 +00:0745 _testcase_data_56 +00:0747 _testcase_end_56 +00:0758 _testcase_data_57 +00:075a _testcase_end_57 +00:076b _testcase_data_58 +00:076d _testcase_end_58 +00:077e _testcase_data_59 +00:0780 _testcase_end_59 +00:0791 _testcase_data_60 +00:0793 _testcase_end_60 +00:07a4 _testcase_data_61 +00:07a6 _testcase_end_61 +00:07b7 _testcase_data_62 +00:07b9 _testcase_end_62 +00:07ca _testcase_data_63 +00:07cc _testcase_end_63 +00:07dd _testcase_data_64 +00:07df _testcase_end_64 +00:07f0 _testcase_data_65 +00:07f2 _testcase_end_65 +00:0803 _testcase_data_66 +00:0805 _testcase_end_66 +00:0816 _testcase_data_67 +00:0818 _testcase_end_67 +00:0829 _testcase_data_68 +00:082b _testcase_end_68 +00:083c _testcase_data_69 +00:083e _testcase_end_69 +00:084f _testcase_data_70 +00:0851 _testcase_end_70 +00:0862 _testcase_data_71 +00:0864 _testcase_end_71 +00:0875 _testcase_data_72 +00:0877 _testcase_end_72 +00:0888 _testcase_data_73 +00:088a _testcase_end_73 +00:089b _testcase_data_74 +00:089d _testcase_end_74 +00:08ae _testcase_data_75 +00:08b0 _testcase_end_75 +00:08c1 _testcase_data_76 +00:08c3 _testcase_end_76 +00:08d4 _testcase_data_77 +00:08d6 _testcase_end_77 +00:08e7 _testcase_data_78 +00:08ea _testcase_end_78 +00:08fb _testcase_data_79 +00:08fe _testcase_end_79 +00:090f _testcase_data_80 +00:0912 _testcase_end_80 +00:0923 _testcase_data_81 +00:0926 _testcase_end_81 +00:0937 _testcase_data_82 +00:093a _testcase_end_82 +00:094b _testcase_data_83 +00:094e _testcase_end_83 +00:095f _testcase_data_84 +00:0962 _testcase_end_84 +00:0973 _testcase_data_85 +00:0976 _testcase_end_85 +00:0987 _testcase_data_86 +00:098a _testcase_end_86 +00:099b _testcase_data_87 +00:099e _testcase_end_87 +00:09af _testcase_data_88 +00:09b2 _testcase_end_88 +00:09c3 _testcase_data_89 +00:09c6 _testcase_end_89 +00:09d7 _testcase_data_90 +00:09da _testcase_end_90 +00:09eb _testcase_data_91 +00:09ee _testcase_end_91 +00:09ff _testcase_data_92 +00:0a02 _testcase_end_92 +00:0a13 _testcase_data_93 +00:0a16 _testcase_end_93 +00:0a27 _testcase_data_94 +00:0a2a _testcase_end_94 +00:0a3b _testcase_data_95 +00:0a46 _testcase_end_95 +00:0a57 _testcase_data_96 +00:0a62 _testcase_end_96 +00:0a73 _testcase_data_97 +00:0a7e _testcase_end_97 +00:0a8f _testcase_data_98 +00:0a9a _testcase_end_98 +00:0aab _testcase_data_99 +00:0ab6 _testcase_end_99 +00:0ac7 _testcase_data_100 +00:0ad2 _testcase_end_100 +00:0ae3 _testcase_data_101 +00:0aee _testcase_end_101 +00:0aff _testcase_data_102 +00:0b0a _testcase_end_102 +00:0b1b _testcase_data_103 +00:0b26 _testcase_end_103 +00:0b37 _testcase_data_104 +00:0b42 _testcase_end_104 +00:0b49 _testcase_end_104@quit_inline_1 +00:0b5a run_testcase +00:0b5c run_testcase@wait_ly_5 +00:0b62 run_testcase@wait_ly_6 +00:0b8d testcase_round_a +00:0b98 testcase_round_a_ret +00:0ba8 testcase_round_b +00:0bb3 testcase_round_b_ret +00:0bc4 prepare_sprites +00:0bda prepare_nop_area +00:0be3 setup_and_wait_mode2 +00:0be3 setup_and_wait_mode2@wait_ly_7 +00:0c06 test_fail +00:0c0d test_fail@quit_inline_2 +00:0c2b fail_halt +00:0c32 fail_halt@quit_inline_3 00:c000 nop_area_a 00:c060 nop_area_b 00:ff80 testcase_id @@ -270,14 +270,14 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font 00000060 _sizeof_nop_area_a 00000060 _sizeof_nop_area_b 00000002 _sizeof_testcase_id -00000024 _sizeof_main +00000026 _sizeof_main 00000002 _sizeof__testcase_data_0 00000011 _sizeof__testcase_end_0 00000003 _sizeof__testcase_data_1 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode3_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode3_timing/test.gb index 7cab4e1825033fcf23154459ca090cedbafd9899..cd32e0734b77d21a3f49a5e15d2bbb653a3f4acd 100644 GIT binary patch delta 904 zcmZo@U}|V!+Th2?YIxd^;lboUMiHTXj0_A6Yz!=Q&zS!)EBpvJyKiziV;bK>#?Oi` z7!PmoI$Py^cGKq9jKX%C9KNvEgLvLSsp*-;C8g(! z{|{X|HF(bUgDg~3U=WcI1v2XWL24zqflLJmU^wj!*60S)*x>)66H_CmK8SNbHV1R(J`G4rfr4d;l!scYK0WL5DTKzxt;WwZj>}iJ6*3Y<_BIHM{E1jV}xiV9a$6(9v3C<=U#6`Ta7d&Z+)N1vW`@jh$d zeKv3M0WVXtVDHMa!QNFsTn)rEKwJyN67mjqPCyzLFEdj7%OT05uy-#Q*>R delta 926 zcmZo@U}|V!+Th2iX?FJW2bX{S3crBl1chIUj{ohL9{fMMhmnDSfsKKs?iuqxW`!RC zXZK95WK83`&-hvK8ROv%US|uu&#u_~mQmPl^FRAOORA*U$yZIu;kF7L{b?=fS0&JgT;92!W0A4oNL8QAkV7%t=jQIJrLjLq|MNi-H2f zX=e>hkY)xTVWq(Eq0#?C*G>(dv#lTt6%`mnBt(IXdVi2w32q=$0Rk9KdxJH)!8A7b zf9S;2h^Y_a9FWbyU;~_B1~mJB=)q+`J&MiIV2#c&jZOX^x^Zbl)`ze;8Ek+H%z#$^ z4}JIzs0VwR;dC}wqbp2fi~omS{2C$p5H=Ts4e)>&(C+_X0x<^EpRNXL^nqz?^Z(FK zjK;$S-ooHWa|A}N6fjn$!8|u8Pgoe}G>8Hx6a~(x3Iaj#?t-Gi6;%aDfd`5LA7lk5 z4H+IV9`!o<^sJTlSvBvoDU%O)nYws-SDy9st^(p}Ag%%8S|FAXb+B^+(rCzmLE`WF z2Tl*1A9z3TvJ-sZVE5;N`{C-z&fca9{ob|DIjP9dz{sGm{_qU%ucyt= ZMtFZb95H!@w+zcd@1rL-GcpC4005swT#Nt! diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode3_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode3_timing/test.sym index 18b720878..375e921fb 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode3_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_mode3_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,40 +75,40 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main -00:0151 main@wait_ly_5 -00:0157 main@wait_ly_6 -00:01bc setup_and_wait_mode2 -00:01bc setup_and_wait_mode2@wait_ly_7 -00:01df fail_halt -00:01e6 fail_halt@quit_inline_1 +00:0153 main@wait_ly_5 +00:0159 main@wait_ly_6 +00:01be setup_and_wait_mode2 +00:01be setup_and_wait_mode2@wait_ly_7 +00:01e1 fail_halt +00:01e8 fail_halt@quit_inline_1 [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -101,28 +120,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h -0000006c _sizeof_main +0000006e _sizeof_main 00000023 _sizeof_setup_and_wait_mode2 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_oam_ok_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_oam_ok_timing/test.gb index b511ce0d19defe0690a0513034b89b2dc7f4a565..e85b7eed238b0df3b218edb29db31b8df579b38b 100644 GIT binary patch delta 945 zcmZo@U}|V!+Th11cjJd4!-Eel|N0ev0m%spzs|OLD>D4EV|wuatT5B$LPqt;4UFtO zYz!=Q&;Bd?3P1?5O}@yO$Y;j%S<#m1@CL85Ro-X!Y<6JUXS>Pa3wu3?=N*)qo>^Ry zT2#yck_94dkg^XQ+ck87vW~^YsYNB3`FU_@Cy%P_8bV-`yhBopOBB))Gjmc?7*4Ja z|IiT+)S{rkaN1cz6Qr2|NLVQ_d}#Fl(6v*8=j=?7g^CIcA`+rNM!i2stpqoasQ>{C zr@g@%-C!CU{6BPJYQ)qBaSq7lV6XvBFaw(XKlI=-pdQ8MXs||Sn8qgm58b#lBI`rg zoD4R=1!h32|A#*O2GoN+&2Ty!tkD&wvBm#GFMf>>eF&S2!3KE13~2ZNFo75Y>Q7gL zHTu9bw)ubPCr0DpDsN$Mq&Wg3R|*)b(qNt&lqW0`VX;Qe(vc delta 987 zcmZo@U}|V!+Th11bNAWj4=(@u6@CH92@1c?R(mTl{Ig?v@c*nJ)8s-%&B+antdnOk zaxuZVER!!YCd!yFeO9z)I=sQ_Y=QULP2O&fo<3Fz9*#aC3}Q~34|?01Y))V*=G^4) zg}olEASg9Gv$!O+sF(qy0f@9gIzM!5*U$xOcPuVWEh@>(&x1=lc~ouJ5P}#Ul3HA% zkd~O4lbXVCa((!Rj(DIJ1qFuF&KjB^%?v=oN`c`+qyLAlof=n)lh1$p^elT|B)j&w6@S z0dX}D*8p)X5KD+U*f{}dG~~b_@pt_Lrw7gtydQYk2|jSJ`}4s4aO-4eZ&UY~-nGx< z-^tsw=3h`b3Cw(q3mDcPUgWLF(7?!`0AhVTZGJYw`{UsV?~08lq?ClYCBBCPSyf8h a5dpJT9Ze<*Z~*`T?sCuo diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_oam_ok_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_oam_ok_timing/test.sym index 0c7957cd7..a17183a2b 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_oam_ok_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/intr_2_oam_ok_timing/test.sym @@ -36,19 +36,38 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_oam -01:4b85 clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b99 memcpy -01:4ba2 memset -01:4b58 print_hex4 -01:4b8f print_hex8 -01:4bb2 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_oam +01:4b8f clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4ba3 memcpy +01:4bac memset +01:4b62 print_hex4 +01:4b99 print_hex8 +01:4bbc print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4bab print_string +01:4bb5 print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -57,40 +76,40 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main -00:0151 main@wait_ly_5 -00:0157 main@wait_ly_6 -00:0211 setup_and_wait_mode2 -00:0211 setup_and_wait_mode2@wait_ly_7 -00:0234 fail_halt -00:023b fail_halt@quit_inline_1 +00:0153 main@wait_ly_5 +00:0159 main@wait_ly_6 +00:0213 setup_and_wait_mode2 +00:0213 setup_and_wait_mode2@wait_ly_7 +00:0236 fail_halt +00:023d fail_halt@quit_inline_1 [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_oam 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe @@ -103,28 +122,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h -000000c1 _sizeof_main +000000c3 _sizeof_main 00000023 _sizeof_setup_and_wait_mode2 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/config.ini b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-GS/config.ini similarity index 100% rename from cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/config.ini rename to cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-GS/config.ini diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-GS/test.gb similarity index 97% rename from cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/test.gb rename to cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-GS/test.gb index 565b4a0e4f6521aff6838ad2b3dae28d354ca171..0057a848c2c8bfa80b4fb61c704c824a728cb808 100644 GIT binary patch delta 362 zcmZo@U}|V!+Th2?Ti#>H@ZjtjpR?k=XL%<_GP-dsV?1o(bC${Xtjp$=jG=a$93F5m zo|*j6;}h>0AH@m(?HV6AFfd3dO>Xowo2>7#f$8v>$tS#i)w}qHq!yPbq$OtNq^4LY zFaS;XHT%E+uQ~tS&)WKe%mW$e>s*x*6#KoLW0v*rj>vQz!S$3cocKDqAHrd0+)bF-W z<=NXlRX|(~#5F)%3&axg4t7pJ8YkhvAn|wo1E&Yh54<0E*$F;yu>14C{jm7tgFdEO z+P<~VIjP9-k8uIR`oku^iVO{m3<@CD*VE=_U-^7I{A#j-uMCT=@6nT+ J4>E2u0svbMpDq9Z delta 336 zcmZo@U}|V!+Th2?-KzBY>>;1CyuN3dCr2~7aV=pyY~geEhtFB7&8rzh?Kc0jf5gFf zX!1jkPrQeG6es+*Ykc6qz#yeGxzW>XvcAU#ro)FOpYZxsZ{-`3T3n)#mYA87nqsBE z05sy)?En71=KOa*YwQa$5M-vWb7gW)s+9r|s4zTLJn6;8@N33@f6lsxXT`yatbAQ7 z3R06xKxU{g{F?b6F7B9IQks|p(h3xx1rir?I%&x8fYI0I=+m?8KtHVWIs0a^hmWbt zMW4#E7k#RLxEhFSfVdWjB}5(UoPabMa$u17yZ(XG1Lp_c54`LIA2`_kdEkDSck*c; xQ%1$fjJ_hGTE2=54U7y5>kn)Bem!k|_JPmG!w)8F`O2^u`yM^H`5@x~BLIBXnQ#CA diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-GS/test.sym similarity index 58% rename from cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/test.sym rename to cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-GS/test.sym index e7938d1a3..fdc88dbe0 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-dmgABCmgbS/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_timing-GS/test.sym @@ -1,19 +1,19 @@ ; this file was created with wlalink by ville helin . -; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ppu/lcdon_timing-dmgABCmgbS.gb". +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ppu/lcdon_timing-GS.gb". [labels] -01:4d03 clear_oam -01:4d0d clear_vram -01:4cc2 disable_lcd_safe -01:4cc8 disable_lcd_safe@wait_ly_0 -01:4d21 memcpy -01:4d2a memset -01:4ce0 print_hex4 -01:4d17 print_hex8 -01:4d3a print_inline_string -01:4cec print_load_font -01:4cf8 print_newline -01:4d33 print_string +01:4d0d clear_oam +01:4d17 clear_vram +01:4ccc disable_lcd_safe +01:4cd2 disable_lcd_safe@wait_ly_0 +01:4d2b memcpy +01:4d34 memset +01:4cea print_hex4 +01:4d21 print_hex8 +01:4d44 print_inline_string +01:4cf6 print_load_font +01:4d02 print_newline +01:4d3d print_string 01:4c38 quit 01:4c4d quit@cb_return 01:4c52 quit@wait_ly_1 @@ -22,19 +22,19 @@ 01:4c64 quit@wait_ly_4 01:4c6e quit@success 01:4c95 quit@failure -01:4caa quit@halt -01:4cab quit@halt_execution_0 -01:4cae reset_screen -01:4cd1 serial_send_byte +01:4cb4 quit@halt +01:4cb5 quit@halt_execution_0 +01:4cb8 reset_screen +01:4cdb serial_send_byte 01:4000 font 00:0150 main -00:015a test_ly -00:0166 test_stat_lyc0 -00:0175 test_stat_lyc1 -00:0185 test_oam_access -00:0191 test_vram_access -00:019d test_finish -00:01a4 test_finish@quit_inline_1 +00:015c test_ly +00:0168 test_stat_lyc0 +00:0177 test_stat_lyc1 +00:0187 test_oam_access +00:0193 test_vram_access +00:019f test_finish +00:01a6 test_finish@quit_inline_1 01:4ac9 cycle_counts 01:4ae1 expect_ly 01:4afc expect_stat_lyc0 @@ -44,15 +44,15 @@ 01:4b89 verify_results 01:4ba0 verify_fail 01:4bc1 verify_fail@quit_inline_2 -00:ff80 v_pass1_results -00:ff88 v_pass2_results -00:ff90 v_pass3_results -00:ff98 v_fail_round -00:ff99 v_fail_expect -00:ff9a v_fail_actual -00:ff9b v_fail_str -00:ff9b v_fail_str_l -00:ff9c v_fail_str_h +00:ff80 hram.pass1_results +00:ff88 hram.pass2_results +00:ff90 hram.pass3_results +00:ff98 hram.fail_round +00:ff99 hram.fail_expect +00:ff9a hram.fail_actual +00:ff9b hram.fail_str +00:ff9b hram.fail_str_l +00:ff9c hram.fail_str_h 01:47f0 test_passes 01:47f0 test_pass1 01:48e2 test_pass2 @@ -70,7 +70,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font @@ -82,20 +82,20 @@ 00000024 _sizeof_expect_vram_access 00000017 _sizeof_verify_results 00000098 _sizeof_verify_fail -00000008 _sizeof_v_pass1_results -00000008 _sizeof_v_pass2_results -00000008 _sizeof_v_pass3_results -00000001 _sizeof_v_fail_round -00000001 _sizeof_v_fail_expect -00000001 _sizeof_v_fail_actual -00000002 _sizeof_v_fail_str -00000001 _sizeof_v_fail_str_l -00000001 _sizeof_v_fail_str_h +00000008 _sizeof_hram.pass1_results +00000008 _sizeof_hram.pass2_results +00000008 _sizeof_hram.pass3_results +00000001 _sizeof_hram.fail_round +00000001 _sizeof_hram.fail_expect +00000001 _sizeof_hram.fail_actual +00000002 _sizeof_hram.fail_str +00000001 _sizeof_hram.fail_str_l +00000001 _sizeof_hram.fail_str_h 00000000 _sizeof_test_passes 000000f2 _sizeof_test_pass1 000000f3 _sizeof_test_pass2 000000f4 _sizeof_test_pass3 -0000000a _sizeof_main +0000000c _sizeof_main 0000000c _sizeof_test_ly 0000000f _sizeof_test_stat_lyc0 00000010 _sizeof_test_stat_lyc1 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/test.gb index e79fc6238a607436ff4414de1b8cb10c93283e05..0020557c6e106af8d4204240b6330df9823f74f0 100644 GIT binary patch delta 386 zcmZo@U}|V!+Th1%l$vMA@Zjtf&$IGgXGOgP8UCHk^%P|GIBVx2$j|^{D}dOa6{{H! zzx6oF<#pC)a~)%Y-6n@}4mBUIkksN5g|x)XoYWL61qPt>ujc>$zgqsgpLO*DDF&&Z zJl8|oRTIMYa;+#xO)decR$=(n`2Q?S+%dVNG%?3YK>;M*1QHi>Itg?cBa`RRry%DY z@I3o(@?Q_r`p2G?XCHf30dX}D*8p)X5KG8A*f{}doP+~|#9ze^?u84d{U@?>OTIBV?nak&PYtr>%|#CO4co{UT& zp^Il(7!I7hGI_P9ETjD7lb)tp#$L70IjP9-k8uIR`olI}iVO{m3<@CD d*VE=_KY4yU{Asd=mkf)m*U^)kCo--x1psAKs1g7G delta 404 zcmZo@U}|V!+Th1%kaOen*;AfpMZL~)dkHf9JDcn&$n0^}&O?x)0mN1Su|F$TG9G^G zahAdBtkdQO#s<61|LiL{)SSFRQj1Fz(h@UsQd6uH7=ZG>n*aO%YWeSe*4hiC8l++J zTn}kic?jFfwW1(3xdfzIh2dA@|FbZ0$K;aI#2hOH1(0|XNL^Xvl#<;;-TdcSfCq>;DO#_^S0Z zA@gj_ExW$u^2_$s!EW-hyl@FzqPTDm-a1c7V z{(;j2=Lg;oyzB%YIN1Gp;C@(i@?}p`cTKO_XY%jlZCdj$sGL+}_{X?_Vf|qvFGYq1 zMg|2C>+5OrvoAb99)96jvGIhIk}$W#_i!MqN{L(I2N(156G{?451zH&?C-VFbfN$k E06eF$wEzGB diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/test.sym index 77c244a1a..2cc70ce23 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/lcdon_write_timing-GS/test.sym @@ -2,18 +2,18 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ppu/lcdon_write_timing-GS.gb". [labels] -01:4a0b clear_oam -01:4a15 clear_vram -01:49ca disable_lcd_safe -01:49d0 disable_lcd_safe@wait_ly_0 -01:4a29 memcpy -01:4a32 memset -01:49e8 print_hex4 -01:4a1f print_hex8 -01:4a42 print_inline_string -01:49f4 print_load_font -01:4a00 print_newline -01:4a3b print_string +01:4a15 clear_oam +01:4a1f clear_vram +01:49d4 disable_lcd_safe +01:49da disable_lcd_safe@wait_ly_0 +01:4a33 memcpy +01:4a3c memset +01:49f2 print_hex4 +01:4a29 print_hex8 +01:4a4c print_inline_string +01:49fe print_load_font +01:4a0a print_newline +01:4a45 print_string 01:48ed quit 01:4902 quit@cb_return 01:4907 quit@wait_ly_1 @@ -22,35 +22,35 @@ 01:4919 quit@wait_ly_4 01:4923 quit@success 01:494a quit@failure -01:495f quit@halt -01:4960 quit@halt_execution_0 -01:49b6 reset_screen -01:49d9 serial_send_byte +01:4969 quit@halt +01:496a quit@halt_execution_0 +01:49c0 reset_screen +01:49e3 serial_send_byte 01:4000 font 00:0150 main -00:015a test_oam_access -00:0166 test_vram_access -00:0172 test_finish -00:0179 test_finish@quit_inline_1 +00:015c test_oam_access +00:0168 test_vram_access +00:0174 test_finish +00:017b test_finish@quit_inline_1 01:47f0 nop_counts 01:4803 expect_oam_access 01:4820 expect_vram_access 01:483e verify_results 01:4855 verify_fail 01:4876 verify_fail@quit_inline_2 -00:c000 v_test_code -00:c12c v_test_results -00:ff80 v_fail_round -00:ff81 v_fail_expect -00:ff82 v_fail_actual -00:ff83 v_fail_str -00:ff83 v_fail_str_l -00:ff84 v_fail_str_h -01:4963 run_tests -01:497c test_case -01:49b0 test_case_prologue -01:49b4 test_case_epilogue -01:49b6 test_case_end +00:c000 wram.test_code +00:c12c wram.test_results +00:ff80 hram.fail_round +00:ff81 hram.fail_expect +00:ff82 hram.fail_actual +00:ff83 hram.fail_str +00:ff83 hram.fail_str_l +00:ff84 hram.fail_str_h +01:496d run_tests +01:4986 test_case +01:49ba test_case_prologue +01:49be test_case_epilogue +01:49c0 test_case_end [definitions] 0000000a _sizeof_clear_oam @@ -64,7 +64,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font @@ -73,19 +73,19 @@ 0000001e _sizeof_expect_vram_access 00000017 _sizeof_verify_results 00000098 _sizeof_verify_fail -0000012c _sizeof_v_test_code -00000013 _sizeof_v_test_results -00000001 _sizeof_v_fail_round -00000001 _sizeof_v_fail_expect -00000001 _sizeof_v_fail_actual -00000002 _sizeof_v_fail_str -00000001 _sizeof_v_fail_str_l -00000001 _sizeof_v_fail_str_h +0000012c _sizeof_wram.test_code +00000013 _sizeof_wram.test_results +00000001 _sizeof_hram.fail_round +00000001 _sizeof_hram.fail_expect +00000001 _sizeof_hram.fail_actual +00000002 _sizeof_hram.fail_str +00000001 _sizeof_hram.fail_str_l +00000001 _sizeof_hram.fail_str_h 00000019 _sizeof_run_tests 00000034 _sizeof_test_case 00000004 _sizeof_test_case_prologue 00000002 _sizeof_test_case_epilogue 00000000 _sizeof_test_case_end -0000000a _sizeof_main +0000000c _sizeof_main 0000000c _sizeof_test_oam_access 0000000c _sizeof_test_vram_access diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/stat_irq_blocking/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/stat_irq_blocking/test.gb index 0551c3bdc2949ea7f99161116c082e344bf63fe6..e77b47c0df8234dc1da0641e851858fa43b3dfab 100644 GIT binary patch delta 445 zcmZo@U}|V!+Th3NQhCLY;Q1r^ zXYD=DmV3H6diq!?`1-rJ+8Qc&`h^5Bh&i29JUMv+qaxQ1xU$K+8FiH3fw+PV|AD%K zT-`l`LtKM`89=50(Fb?1ahtiAzSwSZ_{3gc?x~>QXr;g)bvDFP8mL1-!41k276vL6 z1`9c%C~(G9;DVyS6;pu+iUOcdz!nM%ivaC72@D3tE{~&6&vJU6{pxYncyg;xY;*!_9ne%NdBKMzye zIM3Q=^6%trTJtZcoK$3JU}R8Oe>mOq>uK||>Yg7Dt9w>#JRzkd%q{Uf9LTCt;+FWq U#k~B4lElx0XA3qLc($1V08xyn+5i9m delta 442 zcmZo@U}|V!+Th1n-=z4NjX|-G@q^31euZB^a)QDyJAns|zwMYF{Qvw}v6%62smEDU z&$GFnZjPQlRtmoUF0QtQ3Z8x;K@4I}Cl!w~{o;10HYGY``j+s*&%zp&TmdMYS5S}8C{o%QmR25M1IaD(!Mg@I~?!9q?b3Y;+& zxS%L-#Z=&dq5$Y|u!X|HB0xJ%8Zta!?D9DJ^z46+v#&kQYEEwTFxBDntUSx-Sp~$^ zKwJaFwLmN(>R{&tq*2l24<6!-4wE@NO%*~sYoE!#lecNjzo2qbk)eT+L1F#jSkJGg a&CkkuempEYIo4B#CC&5b$<2yPy=DN6t*9CR diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/stat_irq_blocking/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/stat_irq_blocking/test.sym index 005ebb19a..ac012efda 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/stat_irq_blocking/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/stat_irq_blocking/test.sym @@ -2,18 +2,37 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ppu/stat_irq_blocking.gb". [labels] -01:4940 clear_vram -01:48ff disable_lcd_safe -01:4905 disable_lcd_safe@wait_ly_0 -01:4954 memcpy -01:495d memset -01:491d print_hex4 -01:494a print_hex8 -01:496d print_inline_string -01:4929 print_load_font -01:4935 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:494a clear_vram +01:4909 disable_lcd_safe +01:490f disable_lcd_safe@wait_ly_0 +01:495e memcpy +01:4967 memset +01:4927 print_hex4 +01:4954 print_hex8 +01:4977 print_inline_string +01:4933 print_load_font +01:493f print_newline 01:47f0 print_reg_dump -01:4966 print_string +01:4970 print_string 01:4875 quit 01:488a quit@cb_return 01:488f quit@wait_ly_1 @@ -22,44 +41,44 @@ 01:48a1 quit@wait_ly_4 01:48ab quit@success 01:48d2 quit@failure -01:48e7 quit@halt -01:48e8 quit@halt_execution_0 -01:48eb reset_screen -01:490e serial_send_byte +01:48f1 quit@halt +01:48f2 quit@halt_execution_0 +01:48f5 reset_screen +01:4918 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main -00:0151 test_round1 -00:0156 test_round1@wait_ly_5 -00:015c test_round1@wait_ly_6 -00:016b fail_round1 -00:0173 fail_round1@quit_inline_1 -00:018e test_round2 -00:0198 ly_iteration -00:01ae finish_round2 -00:01b6 finish_round2@quit_inline_2 -00:01c7 fail_round2 -00:01ec fail_round2@quit_inline_3 +00:0153 test_round1 +00:0158 test_round1@wait_ly_5 +00:015e test_round1@wait_ly_6 +00:016d fail_round1 +00:0175 fail_round1@quit_inline_1 +00:0190 test_round2 +00:019a ly_iteration +00:01b0 finish_round2 +00:01b8 finish_round2@quit_inline_2 +00:01c9 fail_round2 +00:01ee fail_round2@quit_inline_3 [definitions] +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -71,30 +90,11 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h -00000001 _sizeof_main +00000003 _sizeof_main 0000001a _sizeof_test_round1 00000023 _sizeof_fail_round1 0000000a _sizeof_test_round2 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/stat_lyc_onoff/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/stat_lyc_onoff/test.gb index 1d49c3f2548d272897c9ea8ac01264738edd4878..d73a6570bacc3cac6a1c3cb1f2134d3064b36516 100644 GIT binary patch delta 562 zcmZo@U}|V!+Th2?|LUpafhncM>8u0e3u zF)AotgL6IH5;JqG6p9QLic3-p6pR_foKAjL+yFL1oC$7*B$GnDBb*DFQ}YUWN2VyP*{KX%;X&&GAvg;j-K57ky*|h011Qn@Bjb+ delta 495 zcmZo@U}|V!+Th2?^GU+a;en$a(}Vwt{gY!E6}ajd4}Wk!yTs${rOE9;?n(rABcp=i zWjNQvEip64N} zlN{G_gy4Fhnu`eTO(6F-g3HWo#AVJ5H{YIFw7#7Afy3v|im`A}nA=Pg^70ij^Gb>! zj;li`2uUq2QSkR>5Muy3dKy9;?kR+>Ef}&!NM>GQKFkgcug$lZ)oeEZwg1D;UgdE% z&ExEhNgk#yogS5EJ3Xp^xEhFSfVdWjB}5(UoPabMa$u17yZ(XG1Lp_c54`LIA2`_k zdEkC{{p4m3P2-&&wa?_=$=kH%Ur;%z$k4#Zps@b%A&-iUC!~~wxh1}b16fr{+!8;y Xn3tbWlK6S>?CH(-JrvC+3UC1c*oWK* diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/stat_lyc_onoff/test.sym b/cinema/gb/mooneye-gb/acceptance/ppu/stat_lyc_onoff/test.sym index 1eba6bf4f..b67b6cef7 100644 --- a/cinema/gb/mooneye-gb/acceptance/ppu/stat_lyc_onoff/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ppu/stat_lyc_onoff/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ppu/stat_lyc_onoff.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,43 +19,43 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main -00:0158 round1 -00:015b round1@wait_ly_5 -00:0161 round1@wait_ly_6 -00:017f round1@quit_inline_1 -00:01a9 round1@quit_inline_2 -00:01d3 round1@quit_inline_3 -00:01ec round2 -00:01f0 round2@wait_ly_7 -00:01f6 round2@wait_ly_8 -00:0214 round2@quit_inline_4 -00:023e round2@quit_inline_5 -00:0268 round2@quit_inline_6 -00:0281 round3 -00:0285 round3@wait_ly_9 -00:028b round3@wait_ly_10 -00:02a7 round3@quit_inline_7 -00:02d1 round3@quit_inline_8 -00:02fb round3@quit_inline_9 -00:0314 round4 -00:0315 round4@wait_ly_11 -00:031b round4@wait_ly_12 -00:0337 round4@quit_inline_10 -00:035d round4@quit_inline_11 -00:0377 finish -00:037e finish@quit_inline_12 -00:038f fail_intr_round1 -00:0396 fail_intr_round1@quit_inline_13 -00:03ad fail_intr_round2 -00:03b4 fail_intr_round2@quit_inline_14 -00:03cb fail_intr_round3 -00:03d2 fail_intr_round3@quit_inline_15 +00:015b round1 +00:015e round1@wait_ly_5 +00:0164 round1@wait_ly_6 +00:0182 round1@quit_inline_1 +00:01ac round1@quit_inline_2 +00:01d6 round1@quit_inline_3 +00:01ef round2 +00:01f3 round2@wait_ly_7 +00:01f9 round2@wait_ly_8 +00:0217 round2@quit_inline_4 +00:0241 round2@quit_inline_5 +00:026b round2@quit_inline_6 +00:0284 round3 +00:0288 round3@wait_ly_9 +00:028e round3@wait_ly_10 +00:02aa round3@quit_inline_7 +00:02d4 round3@quit_inline_8 +00:02fe round3@quit_inline_9 +00:0317 round4 +00:0318 round4@wait_ly_11 +00:031e round4@wait_ly_12 +00:033a round4@quit_inline_10 +00:0360 round4@quit_inline_11 +00:037a finish +00:0381 finish@quit_inline_12 +00:0392 fail_intr_round1 +00:0399 fail_intr_round1@quit_inline_13 +00:03b0 fail_intr_round2 +00:03b7 fail_intr_round2@quit_inline_14 +00:03ce fail_intr_round3 +00:03d5 fail_intr_round3@quit_inline_15 [definitions] 0000000a _sizeof_clear_vram @@ -66,11 +66,11 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_main +0000000b _sizeof_main 00000094 _sizeof_round1 00000095 _sizeof_round2 00000093 _sizeof_round3 diff --git a/cinema/gb/mooneye-gb/acceptance/ppu/vblank_stat_intr-GS/test.gb b/cinema/gb/mooneye-gb/acceptance/ppu/vblank_stat_intr-GS/test.gb index 6473f1dd85edd3cb2555d3a8e334fca11e931549..ea96bde93cada92c10a1bd2ce3b6341e1fc7559e 100644 GIT binary patch delta 1082 zcmZo@U}|V!+Th1%_shbN;eq1B|8|F!>>8Eq7|Yi`;J0IZ@c(xi!{Hpp&x*y2hc|eg zt@1v*$=k!xCxk)F=_FM34WR1D{}^p2+c5EJ3bij&d zz!VoK*)f&dDLimQu~~5n*h$BM8XP8TGxKVLHO+)+dJ58nO@pnH9W&5XE*wlyKWw&S zK4P=U;R|~`*b_mi>6yhPsYS&MAWs32Hpq7$I<{-*0=?*1T%1}|l9`_emv-`~+O8o4 z34oB);u3|l#LS%36o!-Q!#{My1GOk9Fr0SQ&;)5_01{RT3?CZ(KXmQX;5pk53N=Lq z1`!ESAfw(Nq*j6($W(v;hST0)jczcF4gMcGF*Rc9gE$9db1>KdCzt`v{vUd98BmX6 zb2M0^GfZQX|A%f|8jko@O|m4c6!i)7awwp%=eKh(3hP z#b5(GUP`taKsBlG90aD@G>|F)K)j(VW#I-;yA@5-41f+2hlNG(i8Cxe?dYdZD^sap-|4!bfHUEOjNkxVRMh1oT ghZlK&J#BtA$@}Bsq{)5WGAygTkDlDTklDio0AG@vv;Y7A delta 1089 zcmZo@U}|V!+Th1%{a;#f;(xotN_KThc8ulgAMo2TKKTE;jNx!5<7dSJ#={%D&K7u| zUE%HF=o7*q=5!LO`YKTMWJV_2$@WaV8kvkASYA#450(0iVGvZpd-6XnO_P<99W&5nE+9ROnVW5x zkJxPfYyX|S9_)>v)bz~alGLJN29URaNE_t84;|Yzbb+39EG|whD#^^xgG)PkRBhJ~ zf&@WGYH^7|T4H8SY6`>2_2C~n;(=Ne6c|oBYiNQrGXM!I1%?le{vWz_YVe$G1%;cU z0)vQzD3DR_4^k_^4P+`n0K;i-utqnS#s>cnotPRi^+B8ivN;%RfD_DsX8#X8xD2RA zu{j#7(HW+($^Sz)E{(|g5H=@+4RC=O(CYu855EERU{5og&IW6Ag=uW@|ImwHBSas< z=3=k`9xwyi{Xa|~#(?_M)nJW2FpX{gANq;Wc(}k@7#wMiz{r&X#;P=!=LY2o3j>`7 zQQ(B4z!_CRASm8lP*k|0ssJhQKvCd>tl*>}!vn^nUPqsvwemiz=6yD0@&PYX7f4EbD?+0FXf)5<*{ycC$Ts_&@+f!y@;j_kPk%KUO@6g$94@}psZtYacWUXW_})A+R3A8yM_=*;U@2p)Z!9_w8YGu)D(u3 z>%%{E!~+Et6c|oBYiNQrGXM!I1%?le{vWz_YVe%x2We7NU=WcI1v2XWL24zqflLJm zU^wj!*60S)*x>)66H_CmK8SNbHV1R(J`G4rfr4d;l z!scYK0WL5DTKzxt;WwZj>}iJ6*3Y<_BIHM{E1jV}xiV9a$ z6(9v3C<=U#6`V9=c))nn>*&+7F5YJiywB!MKHz0)7VKSlHrTrgh^v9P28e5cSVG>x z&Iw54A|@+(i!-)Pw)8etnCV^nO#Yp`O>6!Im6M7L4U7y5>klvT{(9Q{Y?AlK!%36- Ryk%HcdmlZyS&+%Y1OR^!KJ5Si delta 881 zcmZo@U}|V!+Th2?WZ*P8fKiNhhPPtFf58Kcj0p^9`!^ReHoDapc%NP29h91$SzMA@ zRLpP|$Oj^AFCh7$W4nefP}Z@yIJKxGGd~Y5?c`ClT|)?@aD{hBYH^7|T4H8SY6`>2 z_2C~n;(>w+3Jj;6H8eq*8GwY90>g(!{|{X|HF(apf;1^AFo;Nq0vYxGAhi%Yb?mo1?)RonacA{6BQ#(uk}N zVRJIr02i16t^ObS@EcGM_B6xkY_LXGn8p_W554#`Li8bQE(ROm0W+Z8|HA}g45&X{ z4c6!b)7a+!p`RFyhYP%g!I9<&j9e*TtV)A z3XlR16a_xW3Qig_JYYQPb@b_3EAO*v-e*%LAMi4D@${}d>*-wu#MMAt1H`pJEFtP( z=LDqDkOPCn-}Mii9ymYne&A&%_`t#L&ja_v)svmQO%?jRYoE!#lecNjzo2qbk)eT+ jL1F#j8Qxz{o1cyF{&+ZI@(gbomWAF&Pi_`u3Nirze`G@6 diff --git a/cinema/gb/mooneye-gb/acceptance/push_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/push_timing/test.sym index fc2b1df79..601a4faf3 100644 --- a/cinema/gb/mooneye-gb/acceptance/push_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/push_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0151 main@wait_ly_5 00:0157 main@wait_ly_6 @@ -92,6 +92,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -103,28 +122,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000027 _sizeof_main 00000049 _sizeof_test_finish diff --git a/cinema/gb/mooneye-gb/acceptance/rapid_di_ei/test.gb b/cinema/gb/mooneye-gb/acceptance/rapid_di_ei/test.gb index 2ac2cd382dec7e31a860ba46d41aff070d7a79ae..1adced5fcd0881c32d4511242f8e8f60440e98e3 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?6vDDOfN_aieU6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$KnhoQholylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY%55Uq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3&@!0CbW1Mdf3 zc7hKa?EXA(KU_W8+1pg1-@Epi{5yG@*8B@9ClwhQ7#S4SAD-d;^|blf2=9-FBPP%A QmSI`wee~q!hm1ic07=I^yZ`_I diff --git a/cinema/gb/mooneye-gb/acceptance/rapid_di_ei/test.sym b/cinema/gb/mooneye-gb/acceptance/rapid_di_ei/test.sym index 3e79d9a89..3bae14757 100644 --- a/cinema/gb/mooneye-gb/acceptance/rapid_di_ei/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/rapid_di_ei/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:018b test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 0000003b _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/ret_cc_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/ret_cc_timing/test.gb index c6f0a0b2f3f8ec2f0e96fae7ee783d62c3a82de3..750e05128d369d58d1dd62fb32ebcb26fd0d2036 100644 GIT binary patch delta 194 zcmZo@U}|V!+Th2?`{bo!!+$|pCPpTPvxg@~Gdi)X^Ei8F@`c$~d7c_E{p5{Tj9=IH5Tr4ZyF z>gS?h#31H$^0Oij)8P;9XF;-?1({yBvR8SWP4hTAW0HrdOQ%QW*-notAg%`D8X&F( zVhK?PJ0~EGh8!3q{;q%E^uYOn_X96G!3Pd@e;&9WUO&0nL(_PtN9{BDck(u^`4?19 zDl#-MGAOJ+e8{6>;|VDxVQz`<;XqcE61T(;F6QMYlq7y0JbQZceGf(Ri2_^zHc?(Q diff --git a/cinema/gb/mooneye-gb/acceptance/ret_cc_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ret_cc_timing/test.sym index 88e11571d..445958ac1 100644 --- a/cinema/gb/mooneye-gb/acceptance/ret_cc_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ret_cc_timing/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ret_cc_timing.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:015c test_round1 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/ret_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/ret_timing/test.gb index 3904a039fb02c352859e20f37740bc6e482f8dfb..35102cb0b320651e920508591e6a80a6c2e6d5ad 100644 GIT binary patch delta 194 zcmZo@U}|V!+Th2?`{=u3!+$|}CPpTPvxg@~Gdi=Z^Ei8F@*+lmB@n~I&C%1xN+HNU z)Xzo1h(XNhPx# delta 220 zcmZo@U}|V!+Th2?`!Zg!;lH3f6C)GD*`1T48J$^{c$~d7c@d+(5{Tj9=IH5Tr4ZyF z>gS?h#31H$^0Oiz)8P;9XF;-?g_)kYvR8SWP4hTAW0HrdOQ%QW*-notAg%`D8X&F( zVhK?PJ0~EGh8!3q{;q%E^uYOn_X96G!3Pd@e;&9WUO&0nL(_PtN9{BDck(u^`4?19 zDl#-MGAOJ+e8{6>;|VDxVQz`<;XqcE61T(;F6QMYlq7y0JbQZceGf(Ri2_^zMJrxM diff --git a/cinema/gb/mooneye-gb/acceptance/ret_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/ret_timing/test.sym index dc51b95c2..99c5b8c00 100644 --- a/cinema/gb/mooneye-gb/acceptance/ret_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/ret_timing/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/ret_timing.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:015c test_round1 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/reti_intr_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/reti_intr_timing/test.gb index 7c429aa8423323983a463df912e9b911fb0917e9..8ce665ba5eeb1e4c399e9640d4e0fafd39ff29d0 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?lrm{^0OJz3`YP|Uo4kWk(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Q+w=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ?r9q*1-F0-sA&bre?w3m1l#!tAMx~h--kj7KkO}9qgQdG%jMYqPI9>>tsuBQ-zt{ zwa?_=$=kH%Ur;%z$k4#Zps@b%BJZ!K&Ce!ze>|KtxzAgMWwrOwlbaVZdYAwJ|J*tN delta 863 zcmZo@U}|V!+Th2?lzw4z0OJz3`U3B>E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Ed3mJn<09MUD8UO$Q diff --git a/cinema/gb/mooneye-gb/acceptance/reti_intr_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/reti_intr_timing/test.sym index 5d4c9c8d2..5520b6a48 100644 --- a/cinema/gb/mooneye-gb/acceptance/reti_intr_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/reti_intr_timing/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0160 test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000010 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/reti_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/reti_timing/test.gb index 0eaf8f63603f00caee2f81cfd4489497ad1001d1..907f4ea1c0c43fa675c0e87949793edfbffe2e0c 100644 GIT binary patch delta 194 zcmZo@U}|V!+Th2?`&eAD;lH3f6C)GD*~62g8J$_yd7Qm7c@d+(5{Tj9=IH5Tr4ZyF z>gS?h#31H$^0Oiz)8P;9XF;-?g_)kYvbT7gE$}$IXp)Di*<_E(vy(llfVdinYk;^G zh$ZA5?3{o!E@E<`hdATT$(0_OVuw9ypUJVg2DVlXrN?uw3;x QdUCTOQ@q?}1E&2F0B(R!3IG5A delta 220 zcmZo@U}|V!+Th2?`?6lK;lH3f6C)GD*`1T48J$^{c$~d7c@d+(5{Tj9=IH5Tr4ZyF z>gS?h#31H$^0Oiz)8P;9XF;-?g_)kYvR8SWP4hTAW0HrdOQ%QW*-notAg%`D8X&F( zVhK?PJ0~EGh8!3q{;q%E^uYOn_X96G!3Pd@e;&9WUO&0nL(_PtN9{BDck(u^`4?19 zDl#-MGAOJ+e8{6>;|VDxVQz`<;XqcE61T(;F6QMYlq7y0JbQZceGf(Ri2_^zUrSzR diff --git a/cinema/gb/mooneye-gb/acceptance/reti_timing/test.sym b/cinema/gb/mooneye-gb/acceptance/reti_timing/test.sym index 02ea4c17b..f45fb3da7 100644 --- a/cinema/gb/mooneye-gb/acceptance/reti_timing/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/reti_timing/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/reti_timing.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:015c test_round1 @@ -52,7 +52,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/rst_timing/test.gb b/cinema/gb/mooneye-gb/acceptance/rst_timing/test.gb index d056c24d3bfd30e6f3809dbd9047386b6745f118..2dc700114ef058c8b1b1a62f569357f83011cdaa 100644 GIT binary patch delta 873 zcmZo@U}|V!+Th2?WWIfJ0HYZ1B5%cp|AGe?850=J&fHwg*yvVY<$ZROcTj42W^qYs zQ8B|=ARmady@2G0j_n${Kv~D);?$y&%=|pKw3A2Gb`2qr!cE>Gsl_DYz_t+-~=ozNbcShc^8e6{OCz#A zgw4rd16*JRwEBPO!*4)6*wYNBv%wl&VH#WfKlI|)2+@bIxfpDK2h4zW{|^(0F`)i* zHCUq$Okhkjx-9!M$@PP5C*U_hEUA)g4c%RLie89`pEZDp9Y_N9~5LW|n4G`A?v4p&X zofDA8MNC%o7H4doZ0T*PFw?vCnfyC>o7VgbDkl{g8W`f8Kb8Oh delta 881 zcmZo@U}|V!+Th2?Wc6@z0HYZ13~$AT|AGe?850=J_HQm`Y;>zH@IJf3J18|hv$!O+ zsF>j_kPk%KUO@6g$94@}psZtYacWUXW_})A+R3A8yM_=*;R^4N)Z!9_w8YGu)D(u3 z>%%{E!~+Et6c|oBYiNQrGXM!I1%?le{vWz_YVe$G1!+=LU=WcI1v2XWL24zqflLJm zU^wj!*60S)*x>)66H_CmK8SNbHV1R(J`G4rfr4d;l z!scYK0WL5DTKzxt;WwZj>}iJ6*3Y<_BIHM{E1jV}xiV9a$ z6(9v3C<=U#6`V9=c))nn>*&+7R^DgTyw9dgKHz2Q;^|#^*3-KRh^v9P28e5cSVGjn z&Iw4PAqNJDzv~}3J#c>D{lLpk@PUKfp9k)Tt0y~qn=15s*FKYfCvVf5e?jG>B0~cs jgTng5GrYf^Ha{ET{qbH(0T;Z<=vAly)(=&@pQj3Zi&I0*Br0oSH zKXh!@&;`mm78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlV zA38BLV(No92V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~ zLmz$v>cO67IGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*) zqw#Q+w=g);9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fM zLxu;8N4<_dJ?r9q*1-F0-sA&bre?w3m1l#!tAMx~h--kj7KkO}9qgQdG%jMYqPI9> z>tsuBQ-zt{wa?_=$=kH%Ur;%z$k4#Zps@b%BJZ!K&Ce!ze>|KtxzAgMWwrOwlbbhs Hdzb(Kki|Z; delta 876 zcmZo@U}|V!+Th2?#HqG9fbonOOM&;<6`K_-uJG4`Sl&UY>6yhPsYS&MXMubm()I$9 zA3C;c=mKROi;Gi>N;32F;L=VWRogX$KnhoQholylD5NE3=A@=DoLnFNp(7qBsGz`b z+F3&rq?rLoSSc`kX!QTkwNr!VY%55Uq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG z51p7AG4(;51F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwg zp%1?S^-K|nCAxN2@3&@ z!0CbW1Mdf3c7hKa?EXA(KU_W8+1pg1-@Epi{5yG@*8B@9ClwhQ7#S4SAD-d;^|blf b2=9-FBPP%AmSI`wee~q!gWmQg69t3;^A18+ diff --git a/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/test.sym b/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/test.sym index 5f6dfba31..e4cb69b2f 100644 --- a/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/serial/boot_sclk_align-dmgABCmgb/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,36 +75,36 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:381b main@quit_inline_1 00:3833 test_finish [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -97,27 +116,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 000036e3 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/timer/div_write/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/div_write/test.gb index 33adee403fdf80ca73f96bd1413386a96cb495aa..7b491c4de9555fccf6cb90963887dd3cc30c2649 100644 GIT binary patch delta 162 zcmZo@U}|V!+Th2?q@^=CfKg3moyXZb9wDj4B?|uD3}Or?KP&b!9{%8d79_rT5@Wg> zdyB`}0*|wcCV7~eP4=ifJK3WOh^v9P28e5cSVG>x&Iw54A|@w#h%@e-To7VgbDkl{g8WFi8Ae|G?>i^8@b(UUq^H9PIu)a6i0$aislmqxBxQdT)hAQ diff --git a/cinema/gb/mooneye-gb/acceptance/timer/div_write/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/div_write/test.sym index 1084307e2..bd843d953 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/div_write/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/div_write/test.sym @@ -2,15 +2,15 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/acceptance/timer/div_write.gb". [labels] -01:48af clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48b9 memcpy -01:48c2 memset -01:48d2 print_inline_string -01:4898 print_load_font -01:48a4 print_newline -01:48cb print_string +01:48b9 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48c3 memcpy +01:48cc memset +01:48dc print_inline_string +01:48a2 print_load_font +01:48ae print_newline +01:48d5 print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -19,10 +19,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:0150 test @@ -39,7 +39,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/test.gb index 53145176bb3b9aebe568ad37af0fd17e2b004f39..b082d11f7c8d8aea1cd6b864606f38d696e2a9b6 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?Gsl_DYz_t+-~=ozNbcShc^8e6{OCz#Agw4rd16*JRwEBPO z!*4)6*wYNBv%wl&VH#WfKlI|)2+@bIxfpDK2h4zW{|^(0F`)i*HCUq$Okhkjx- z9!M$ z@PP5C*U_hEUA)g4c%RLie89`pEZDp9Y_N9~5LW|n4G`A?v4p&XofDA8MNC%o7H4do zZ0T*PFw?vCnfyC>o7VgbDkl{g8WAv F69A8VJyrk! delta 872 zcmZo@U}|V!+Th2?6u4+|0HYR5f%n-Jo9h_M-0DFr@1WH5%;J*NqGE=#Kt2#@djZK0 z9osc@fwGRp#i>OlnfZBeX(x}W?HWQLg)6*6Qj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$6{JZ~fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?G(xSx@gOAg%`D8X&F(VhK?PJ0~EGh8!3q{;q%E z^uYOn_X96G!3Pd@e;&9WuAc1dZK}}kUHeS_oxDwJ{sonjiVO{m3<~QH&+z_w+Wc&U X_s7E#lV^C#uq^aGdUEqc#vl^_d*wk$ diff --git a/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/test.sym index 644336964..6b5d2ffcd 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/rapid_toggle/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test 00:0179 test@quit_inline_1 @@ -87,6 +87,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -98,28 +117,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test 00000040 _sizeof_main diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim00/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tim00/test.gb index d748673dbf3e0f4fb62de3f015bb827ae926a4f0..df3e27273ac9c347de54190609fa1825ef13aea8 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?l+v;}fN_aieU6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Ed8<~Sl04RGt9smFU diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim00/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tim00/test.sym index 862ff178a..e15ff466f 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tim00/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tim00/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim00_div_trigger/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tim00_div_trigger/test.gb index dfb8861c9686331041dc01055b060b78984370a3..72aad3aa4f899e5c481b6f8b02e1dfb7e42a3215 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?l;yTLfN_aieU6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$KnhoQholylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY%55Uq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3&@!0CbW1Mdf3 zc7hKa?EXA(KU_W8+1pg1-@Epi{5yG@*8B@9ClwhQ7#S4SAD-d;^|blf2=9-FBPP%A QmSI`wee~q!jZ8r%0B#RGC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Q+w=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ?r9q*1-F0-sA&bre?w3m1l#!tAMx~h--kj7KkO}9qgQdG%jMYqPI9>>tsuBQ-zt{ zwa?_=$=kH%Ur;%z$k4#Zps@b%BJZ!K&Ce!ze>|KtxzAgMWwrOwlbbIxdYAwJ>1H}9 delta 863 zcmZo@U}|V!+Th2?E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Ed7a4<006-r;LjV8( diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim01/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tim01/test.sym index 519428678..c09edd39b 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tim01/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tim01/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim01_div_trigger/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tim01_div_trigger/test.gb index a12e79e39d131f81fbcfff45ca8c10b5adf4d239..4339b6d2120d63ec2bf9852d9dc26faa95dd70b0 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?6g**b0OJz3`YP|Uo4kWk(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Q+w=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ?r9q*1-F0-sA&bre?w3m1l#!tAMx~h--kj7KkO}9qgQdG%jMYqPI9>>tsuBQ-zt{ zwa?_=$=kH%Ur;%z$k4#Zps@b%BJZ!K&Ce!ze>|KtxzAgMWwrOwlba7RdYAwJ!KXS6 delta 863 zcmZo@U}|V!+Th2?6n1WN0OJz3`U3B>E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Ed2N{D*02ly1CjbBd diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim01_div_trigger/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tim01_div_trigger/test.sym index 71957c6d8..97da2a391 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tim01_div_trigger/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tim01_div_trigger/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim10/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tim10/test.gb index b870b21d45a7755eea0fbad5d12ee56fb4b5dbc9..c2d4c8704595c94738c9c3fef8ba00d7875842c7 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Ed7a4<00CBoL1poj5 diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim10/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tim10/test.sym index 68a19ff09..45e0f3991 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tim10/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tim10/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim10_div_trigger/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tim10_div_trigger/test.gb index df3266b1b8c9224020ad409e7dec6c5a21af6c43..54b2cb64b91ce67481076a5a57af322c8482b178 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Ed7a4<00C-+L2LJ#7 diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim10_div_trigger/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tim10_div_trigger/test.sym index 48211883c..33578a58f 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tim10_div_trigger/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tim10_div_trigger/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim11/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tim11/test.gb index c0474488db722378aef0cbe70106b80ab12bd3d0..0622f4382666d2e5c668f0c35fee3d72db9a9082 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?^q75f0OJz3`YP|Uo4kWk(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Q+w=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ?r9q*1-F0-sA&bre?w3m1l#!tAMx~h--kj7KkO}9qgQdG%jMYqPI9>>tsuBQ-zt{ ywa?_=$=kH%Ur;%z$k4#Zps@b%BJZ!K&Ce!ze>|KtxzAgMWwrOwlba2hJWK%B4mpJY delta 863 zcmZo@U}|V!+Th2?^vrd00OJz3`U3B>E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>EdhD<>w04<+Ap8x;= diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim11/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tim11/test.sym index f4ad71f39..d09aec453 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tim11/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tim11/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim11_div_trigger/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tim11_div_trigger/test.gb index 1b7b8899a464dddfae8911338278c22042bd7e34..a567830d100ac68aeee2d6a79c59d9ef2f823a1f 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?q}8!GfN_aieU6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?E4+hJ(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Qow=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ!|ECR?Yit%H#uHrY@e|m1jM@tAMx~h--kj7KkN89qgQdG#YYXkodd)fzt!$2i_07 z>;xY;*!_9nezuK||5#ApUM@*jK QEyJ?V`{>Ed9~py80CjXeCIA2c diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tim11_div_trigger/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tim11_div_trigger/test.sym index 2f398a681..a50f03b81 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tim11_div_trigger/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tim11_div_trigger/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tima_reload/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tima_reload/test.gb index fd435f220e826baad4fbef84cc2f4863d3629bec..f523c29edadab133949256b2fe2d5b22afac0010 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?q^-R6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$Kngc`holylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY(Geoq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3FQ}YUWN2VyP*{I>k@wfr=4X?6yhPsYS&MXMubm()I$9A3C;c=mKRO zi;Gi>N;32F;L=VWRogX$KnhoQholylD5NE3=A@=DoLnFNp(7qBsGz`b+F3&rq?rLo zSSc`kX!QTkwNr!VY%55Uq5^}6geZ_v?+;Qd!3|_8KmfyOZ?Hx;n8pVG51p7AG4(;5 z1F|_7Y=9HYfM)*>J-7_0N3l5?tkD^!vC02KH!h9H`VclJgAH(j8PMwgp%1?S^-K|nCAxN2@3&@!0CbW1Mdf3 zc7hKa?EXA(KU_W8+1pg1-@Epi{5yG@*8B@9ClwhQ7#S4SAD-d;^|blf2=9-FBPP%A QmSI`wee~pJMdlzA06+XZ`~Uy| diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tima_reload/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tima_reload/test.sym index 09bc4497e..c0b935051 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tima_reload/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tima_reload/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tima_write_reloading/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tima_write_reloading/test.gb index feb8449cc4c14550092cf0185789099141caf269..ac4e44ccc82ac078a069d0040d66ee4a78514a66 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?bSYzV0OJz3`YP|Uo4kWk(=&@pQj3Zi&I0*Br0oSHKXh!@&;`mm z78j=$m1O4U!KIx%sC2~i-U-XEk^f*Z(GfB=Tm-e8SxFpUlVA38BLV(No9 z2V`?F*Z?P(0nPp&dT<#~k79E)SfevcW0U`fZd@9X^&xCd1{>f4GoaP~Lmz$v>cO67 zIGqjF=nB)=;{Tx+zeb2Ygw4fZ13X{`wEKUUK#T$Pr>nsleP9~f{6F*)qw#Q+w=g); z9D$K51&mc`FwYIj6BY(K4WhsaMS(M_fMLxu;8N4<_d zJ?r9q*1-F0-sA&bre?w3m1l#!tAMx~h--kj7KkO}9qgQdG%jMYqPI9>>tsuBQ-zt{ ywa?_=$=kH%Ur;%z$k4#Zps@b%BJZ!K&Ce!ze>|KtxzAgMWwrOwlbaKnJWK%Jj5-AX delta 863 zcmZo@U}|V!+Th2?bamP00LCS5^#$H%S9k}dre_wHq!tx3oCWfMNZSiYe(2b)p$n9C zEG|whD#^^xgG)PkRBhJ~0x4YK9ghkY)xT zVWq(Eq0#?C*G>(dv#lUaiV6%O5~4sxy+25;1UHbW009iAy}=sYU>Y0zKXhVh#MB3I z4#?(UumMgm1DgFm^x!g}9>wNputsN?#wPy{-MBO&>qFR_3^u?8WX!rjxffxhoPgjFA`oJ`{`G4pqM&scEZ((qx zIRYbB3K*->V4fS4CoBwf8bpB;iUMa;1%aS=cR^9%imC#nzyn2r53+)jh71oFk9r+_ zde+MOteW@Pl*tFYOkF&^E6;j*R{?P~5Z3^4Ef7nHI@mb@X*A@(An|wo1E&Yh54<0E z*$F;yu>14C{c!bUXKz!5e(&06^6%trTJtZcoK$3JU}R8Oe|U!X*VE=_BfLKzj+i{d QTZUz!_tBG^6Pbcc063jK9{>OV diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tima_write_reloading/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tima_write_reloading/test.sym index 8bcbafc13..decd8b764 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tima_write_reloading/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tima_write_reloading/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tma_write_reloading/test.gb b/cinema/gb/mooneye-gb/acceptance/timer/tma_write_reloading/test.gb index 2366f83123fd014ee35626280e299a9455242640..5a73d1c4c4b0c5920b81ca78e1631a309eb14061 100644 GIT binary patch delta 855 zcmZo@U}|V!+Th2?bb8t50LCS5^;OhkY)xT zVWq(Eq0#?C*G>(dv;81ViV6%O5~4sxy+25;1UHbW009iAy}=sYU>Y0zKXhVh#MB3I z4#?(UumMgm1DgFm^x!g}9>wNputsN?#wPy{-MBO&>qFR_3^u?8WX!rjxffxhoPgjFA`oJ`{`G4pqM&scsZ((qx zIRYbB3K*->V4fS4CoBwf8bpB;iUMa;1%aS=cR^9%imC#nzyn2r53+)jh71oFk9r+_ zde+7JtbzC0yvYZ=OwEG5E6)adR{?P~5Z3^4Ef7n{JJ>k^XhkY)xT zVWq(Eq0#?C*G>(dv#lUaiV6%O5~4sxy+25;1UHbW009iAy}=sYU>Y0zKXhVh#MB3I z4#?(UumMgm1DgFm^x!g}9>wNputsN?#wPy{-MBO&>qFR_3^u?8WX!rjxffxhoPgjFA`oJ`{`G4pqM&scEZ((qx zIRYbB3K*->V4fS4CoBwf8bpB;iUMa;1%aS=cR^9%imC#nzyn2r53+)jh71oFk9r+_ zde+MOteW@Pl*tFYOkF&^E6;j*R{?P~5Z3^4Ef7nHI@mb@X*A@(An|wo1E&Yh54<0E z*$F;yu>14C{c!bUXKz!5e(&06^6%trTJtZcoK$3JU}R8Oe|U!X*VE=_BfLKzj+i{d QTZUz!_tBG^3z>pU0Po^HW&i*H diff --git a/cinema/gb/mooneye-gb/acceptance/timer/tma_write_reloading/test.sym b/cinema/gb/mooneye-gb/acceptance/timer/tma_write_reloading/test.sym index b81e461c5..c5dffe5d5 100644 --- a/cinema/gb/mooneye-gb/acceptance/timer/tma_write_reloading/test.sym +++ b/cinema/gb/mooneye-gb/acceptance/timer/tma_write_reloading/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,35 +75,35 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:0150 test [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -96,27 +115,8 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000000 _sizeof_test diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xc~_5!^=iv3Wo1zNqNZ!K;A+9b zs*5po4mS2;gZ0IP%0Lib4c!}YbW^sXG-zb7R~vR@FWSP`B*V$(&}PpskGFKf<~v{L z_Xl^$@1Fmkd!FK}SSUQ*!RGs<8^0zJ*K1f+*&+50t7bJ!scU-geO7z(`uOtV;`b-# z=Jt(@*Zy*S@#e`-=f2o(zIpKA_~_x$7xu-C$}fX~xb2^m=JPwV3vQNm_iyVk#>U4c$MzmD?9Nwvwy}CU<1f5? zG?z~1rk7qUqqaX5+a52N($CEJ;gt=*yW zxqEJY_A@JVN4dDCXZe2PhBHewg;OgRF5mXwDYfg5bQs09iM?Y7M&Dq3TKVbhqMJ|i z8=uS5y)m$Q2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0*_fBwI&#kHE9a@ljlM2 zbZsaPf-yy*=V2ae%jronDK2`hD4REj!@6Es8H-Vi;o+H?{rl_dw`{4XpmJR|cr-MG zLJbX~zUY^}Qz(k6QVmrV&*{_0gPv1)bF;3SrmiT%_A7pG|Cl4)2MGn(RIpWG28a}G|ezl#r^N)wk^h>`r)waCX=H7 zRLZiFNm=&FV=>BU1W`Yg`uF(MA6;I#_->lATv~(ZxwKv{7eW;knl?PFX~LW4Ofwa; zrA(Aj9m=9n$D#EwCR)=99cOlSW@c!}Fmzqx5e$l1Q2nVX$DxbvUi&l;$B9P0aw_%8 zlS#{(nzDE#lT=>Hg*T0#PS4JI?P=wy6y0r`>Weo^{-#N}uG4Pt`Mmm$>L>x80hZqOerWKX#1fDng7W*5bX->1oP?JjDK@d3ARW42+C;^P>{63#ol)XCSa?Q>nkw zei7@7M(MOr2!G2GXUFHG+0y$hwq3uzN|dYW!{?W3QHcJ$b0?nBJrb zX#d9JLqn8Ph%+tLFY_=>+xF^<6GNxK+rOHos?n&*L$qeBy}h^BaoXE`KCzl;lzf6g zDyO~ufU|hMDfdpKqD)NC%7ejhxUH?Fh3ZqkB7`qJOC$ydNu9n^w6;bf^wLEpX6U^i zdNwo^kJ~owRLi2gql0z}ok6*1+R_q<(7044Rj_~VkekJ*JlwVqtW!n7nKW`S(?w`xqxmR*Mxm{*m&NA=i zcFuq2((tJTG4i!bnVe)!=j3xQ(R7WwnW@hg8ZQ~;8=tGve&3NcnsmfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1RgE$@c)?p=oY8} z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf tKmY;|fB*y_009U<00Izr@&uHNdwQ1dH*PqyR8u&$a^domx5EEl(cg}xQ^o)Q literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/test.sym new file mode 100644 index 000000000..ca7dbc49b --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank1/test.sym @@ -0,0 +1,68 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/bits_bank1.gb". + +[labels] +01:48d3 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48a2 memcmp +01:48e7 memcpy +01:48f0 memset +01:48b0 print_hex4 +01:48dd print_hex8 +01:4900 print_inline_string +01:48bc print_load_font +01:48c8 print_newline +01:48f9 print_string +01:47f0 quit +01:4805 quit@cb_return +01:480a quit@wait_ly_1 +01:4810 quit@wait_ly_2 +01:4816 quit@wait_ly_3 +01:481c quit@wait_ly_4 +01:4826 quit@success +01:484d quit@failure +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte +01:4000 font +00:0150 main +00:015f test_round1 +00:0174 test_round1@quit_inline_1 +00:018f test_round2 +00:01bd test_round2@quit_inline_2 +00:01ce bank1_pattern +00:01de bank3_pattern +00:01ee fail_round2 +00:01f5 fail_round2@quit_inline_3 +00:ff80 hram.test_address +00:ff80 hram.test_address_l +00:ff81 hram.test_address_h +00:ff82 hram.memcmp + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000002 _sizeof_hram.test_address +00000001 _sizeof_hram.test_address_l +00000001 _sizeof_hram.test_address_h +00000020 _sizeof_hram.memcmp +0000000f _sizeof_main +00000030 _sizeof_test_round1 +0000003f _sizeof_test_round2 +00000010 _sizeof_bank1_pattern +00000010 _sizeof_bank3_pattern diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xc&un?&BgZ-HLK~Sm%iLE)>6QQ738n}vWp;SGoq7hAebMMxRg5Smb z2lnmG%zN`@es5mLr(0TD*}`VKJ)eI!JbZNxEB78|FR}`@hRId+r(R)|H?EG}o}d5v z^o0xi2S+RKU7f#i`pkt7w;0bIIy5?TZ0OCC&cN-aS=$y(IcV&Ee-$H|z00X;UD*EAt4}1~`RcWv$q%lj z#_oN&{@If+Pj-w}*FJfyyyoaP>o#rMx%Ja;GZWH%{~oEBUO1}f!w>HpIXLtT<4NaI znRzFdpsOie)l|M8$RT`qD#7?WkPhqx^FlO-M(57}k8 zt}YbPw6d~Tj8^pbPfZ;-P+h%oV`(Y*HBIMIQ`68;QzPb!xb#gT%ZfrX6h+wS?c+jr z@;5eWnqg>KVV>r>eT1$oIdiTb9^^=7&O#6OW7diG*p!Zc2Qfd9`1}48j~>@A zz70c?iZzJH#d=*`5GpNI)&71}6}%~D%2Z@an()ya(jpPtrg|6?tEocUo}QkX>g&^W zO;fo9gCYx>KR#~T^w8+8Pja#CNW}G%*Y(Hara3-ta*4;uU(^L}+CQ0`o_5z$<%tB1 zmPPZ$$r69VAYId_8+<-@zHK{BclX$s3s8RSFbJ?ent7` z{iRtXBA$EigpI~nOp*+vy*(NwjmS{{4h;15kxnA+w5VU=Vi=a?&KEa^Zh_mss;VfF zh{8pzW~{ZftIM`qTYWxJO(a5mfFi0jg;lFF{(Tm424=+nwn@n#T6p> zl5Kdnx0k5XH%W7II828wG?AfuK4k0b8yK)G>QvJtJsPEMp*tw$nKm_r!?Z8?MD?ml zxeHxUVlm2~xIgXH&`?_|{M3WRzb|A%Pva?ZF5SwUbTVU3<|D_?-b(w;r7Md$ zd+~MsH$J|RAOHHEIHzwY^;VWt%XMoS9&8Sn9d)}cSfwkr8FMIjdM4(*#waj~NE}$-al38#r;g@Ds+P}T17X&~61V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) V1V8`;KmY_l00ck)1pe~`{sb90eH{P* literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/test.sym new file mode 100644 index 000000000..7e5df83c2 --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_bank2/test.sym @@ -0,0 +1,72 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/bits_bank2.gb". + +[labels] +01:48d3 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48a2 memcmp +01:48e7 memcpy +01:48f0 memset +01:48b0 print_hex4 +01:48dd print_hex8 +01:4900 print_inline_string +01:48bc print_load_font +01:48c8 print_newline +01:48f9 print_string +01:47f0 quit +01:4805 quit@cb_return +01:480a quit@wait_ly_1 +01:4810 quit@wait_ly_2 +01:4816 quit@wait_ly_3 +01:481c quit@wait_ly_4 +01:4826 quit@success +01:484d quit@failure +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte +01:4000 font +00:0150 main +00:0153 test_round1 +00:01b5 test_round1@quit_inline_1 +00:01d0 test_round2 +00:01f9 test_round2@quit_inline_2 +00:020a bank0_pattern +00:021a bank1_pattern +00:022a bank2_pattern +00:023a bank3_pattern +00:024a fail_round2 +00:0254 fail_round2@quit_inline_3 +00:027a clear_ram +00:ff80 hram.test_address +00:ff80 hram.test_address_l +00:ff81 hram.test_address_h + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000002 _sizeof_hram.test_address +00000001 _sizeof_hram.test_address_l +00000001 _sizeof_hram.test_address_h +00000003 _sizeof_main +0000007d _sizeof_test_round1 +0000003a _sizeof_test_round2 +00000010 _sizeof_bank0_pattern +00000010 _sizeof_bank1_pattern +00000010 _sizeof_bank2_pattern +00000010 _sizeof_bank3_pattern +00000030 _sizeof_fail_round2 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/test.gb new file mode 100644 index 0000000000000000000000000000000000000000..a8dca1fdc50ac8af37de8a000d2ada4e4fb94b66 GIT binary patch literal 32768 zcmeI4-)|IE6vyvQmol`aP6IYmGPbkpT9#T#SsK|a>o7ZxWeQaqv@vNmT3Wi$1luB* z6j+vR{GAXru~A8yXnf(x6ki~uLSib|4XiQI2O%^r4?t`bSJ7zw(R$C`j=P%p2MFJj z+&gpbx%b?2KKIt$d!ALX?7f-}$)m9B`%chz%Xh#tmEWA5cCxH}`?`oeFgUP(V8q zX*|fK)J`MGq-ZoQ%k}lapr%z+M5DB#r)O+z_wL%-HEYVt$*yTSm%6&f#=1H&U-+eW z5?NLhnxQCSoSt4TG*0%WCQUO8O>1f*jf4U;4C;mM_U;POqfvLX_!RRcN%+=v(l9PFB~ROq%A%h{+|HBzsX8 zylMY*dVJhnPnoAu)LRzK7bi>n4TE$|qiXPa-TAidIGvrt!;WLyWT%~kh>T;gzP_%m z_VySTvRhVf@AmCmwzRbg|C;7s6mh;HKjDGqm)a%C&A+qL-H+^wQdQ;mi}gp2P^?14 zej*q5JV!@K4{#CnMRB#acXjpkx$%)jR3WX8#r*!2D~tY$^&;{Mhv~ME2>zxi?vB?> z(bD-A)-GFCDeQ{!@B2%$NQ6K4-ia~lqftpRjJCE&gft>U_1oJUkCRR!?zG5X;$j$< z<<1v3hHimdzpAPz;jqF*tY)mWwWGtfTU)(ekxe*Ed;$ToQ*AHeEZlF>-5V*(!^4z$ zAP@|;v@|!ux9wV@Cly3j;~?)lJIJl@-DSyZW}NqQtg)k1er zDllzs4uxo6vWe_fm0}mVqC}$E{Y=fyR6)bq4TfeBFk=kv?>(p=%6Q^dQnK{->2~`an4=KzTjks zo$N=BkG+%enF|-@^Y;Af`ft2{qtO5Te(<=yy1cA$q-qZ%uu=w*oJCmt@PUNiI!?~@wEk;ewH2%nKp8CR}?NifY=L=^uIgc@#lO`Ub zaP_&&$cNLb&gx56+*_&sv>|i-uK9|vbbjgi7JtU4q-&Vz$uH&KsyTeU;bueh#i7pw z86Qh~_-A9L^3Kl}He^pYKTMr)$ccYNrTWX0{OzE>QvJ1}?D(`_o%=XD=bXcLWp3|3 zxyTL#KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; jKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY{(hXnotr~`TV literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/test.sym new file mode 100644 index 000000000..9cead2693 --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/test.sym @@ -0,0 +1,74 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/bits_mode.gb". + +[labels] +01:48d3 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48a2 memcmp +01:48e7 memcpy +01:48f0 memset +01:48b0 print_hex4 +01:48dd print_hex8 +01:4900 print_inline_string +01:48bc print_load_font +01:48c8 print_newline +01:48f9 print_string +01:47f0 quit +01:4805 quit@cb_return +01:480a quit@wait_ly_1 +01:4810 quit@wait_ly_2 +01:4816 quit@wait_ly_3 +01:481c quit@wait_ly_4 +01:4826 quit@success +01:484d quit@failure +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte +01:4000 font +00:0150 main +00:0153 test_round1 +00:0179 test_round1@quit_inline_1 +00:0193 test_round2 +00:01c8 test_round2@quit_inline_2 +00:01d9 copy_patterns +00:021c bank0_pattern +00:022c bank1_pattern +00:023c bank2_pattern +00:024c bank3_pattern +00:025c fail_round2 +00:0266 fail_round2@quit_inline_3 +00:028c clear_ram +00:ff80 hram.test_address +00:ff80 hram.test_address_l +00:ff81 hram.test_address_h + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000002 _sizeof_hram.test_address +00000001 _sizeof_hram.test_address_l +00000001 _sizeof_hram.test_address_h +00000003 _sizeof_main +00000040 _sizeof_test_round1 +00000046 _sizeof_test_round2 +00000043 _sizeof_copy_patterns +00000010 _sizeof_bank0_pattern +00000010 _sizeof_bank1_pattern +00000010 _sizeof_bank2_pattern +00000010 _sizeof_bank3_pattern +00000030 _sizeof_fail_round2 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/config.ini b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/test.gb new file mode 100644 index 0000000000000000000000000000000000000000..16e3ce76d3e35473d5ee96e34bbd1294405d7f79 GIT binary patch literal 65536 zcmeI)O-vML7zglohXqGKI;bUsnaJ#RgDa&3k<<-cr^9rDgJLA4vEuRIC$fdDUyLi?W;72kuNy-#B;a z(!t(=vhS}?-#mBz(ns5^mj?$2`i}KIbueKb?K^T*bajb>fD+g)w)}K&o5)(lGeU&K zdjU<9e;3Hy^+Km} z=jHUweS1WONLRl5_WEDfAK3eC<1=-Cd|vhJ%E!(Vo;;nqAF5QAI_TKeWG-~lzyI({ zeFp?}`-Z}ucQo%c2L_Lt2M!)Uu%8`!7pV$R9lq{@afHSzQbvRF&>VW#miwPBIyd(m|Q3 zZr&V?8b)z(JWefodd9{M9jd6MmQCV4CU0KQXxnH`bP*qK%8k)xU=`$#U z?o)Y9jbT`pVbs)6MnMy_EIM=UpZyk;$K(Fp{3q8}6z&sQo&EMBGF&$n^UJB!FHa_IdwAHEkxWu~K4)(le`I8Q+;2}S zPo?PWI8>jXEcsg&<%U7KAsF=QyRPT8w+{_@p6gOMjl{t#Zf@@F?d)uAZI(ghj+01q zbnM>U(!%{4MtCv!`SSX>2dclkTv7b>x3~M_QMsm-mWIRJ{^UuTD+iCqYw@4w=qTk8 z8N9z}UahU2oxQ#O{HTO?A+>LA4u>~x%=eeyFTB23jNTRs_P1?*cY;BhEj{0bwrkgx zaJiU2#}SJ%)$51lifq5pj7UUzpQ;W)HYZJY9@CfY6Z4k`<#wY3cm zG%l6#>UEvw&bg+=<1~Z(_%v2^^`=c+PJ1x_{X+LfWps7*_vg!L4=m4l4`>>{v-HhM zqfmXr(6o9Pn#TUVmA_-?`IpL2Reyfes-dB+jXvqA=Yw+j|7ik+-j&;#SG~-Tm-*NW ziL>dDoxAp6)_w4%IWNy|Eu5FGk6$pi6cv;eR;ZiTRX<)AwudwCc*o>%Tpq8;BPov) z^3bbn%aNb|da{N7*F@IIK9}8--EEa;ZR^kMuF0=F8a_3}BVW6m&IYW}tTM5arfbfn zhd-FwblEK2@I;CJ^N#eL#~u{Nl&fp5)`!y}ZKPb-f!Q^acfAvLs(!4BpBelzk`9TH zfG{T}XT4vp?Z{m8?oD3wsFU!968*Oq<<;?UiT-. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/bits_ramg.gb". + +[labels] +01:48d3 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48a2 memcmp +01:48e7 memcpy +01:48f0 memset +01:48b0 print_hex4 +01:48dd print_hex8 +01:4900 print_inline_string +01:48bc print_load_font +01:48c8 print_newline +01:48f9 print_string +01:47f0 quit +01:4805 quit@cb_return +01:480a quit@wait_ly_1 +01:4810 quit@wait_ly_2 +01:4816 quit@wait_ly_3 +01:481c quit@wait_ly_4 +01:4826 quit@success +01:484d quit@failure +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte +01:4000 font +00:0150 main +00:0170 test_round1 +00:019a test_round2 +00:01ba test_round2@expect_enabled +00:01bf test_round2@expect_disabled +00:01d8 test_round2@quit_inline_1 +00:01e9 ram_data_enabled +00:01f9 ram_data_disabled +00:0209 compare_ram_data +00:0212 fail_round1_disable +00:0219 fail_round1_disable@quit_inline_2 +00:024f fail_round1_enable +00:0256 fail_round1_enable@quit_inline_3 +00:028b fail_round1_print_test_address +00:0298 fail_round2_disable +00:029f fail_round2_disable@quit_inline_4 +00:02bd fail_round2_expect +00:02c4 fail_round2_expect@quit_inline_5 +00:2000 ramg_expectations +00:ff80 test_address +00:ff80 test_address_l +00:ff81 test_address_h +00:ff82 ramg_value +00:ff83 memcmp_hram + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000002 _sizeof_test_address +00000001 _sizeof_test_address_l +00000001 _sizeof_test_address_h +00000001 _sizeof_ramg_value +00000020 _sizeof_memcmp_hram +00000020 _sizeof_main +0000002a _sizeof_test_round1 +0000004f _sizeof_test_round2 +00000010 _sizeof_ram_data_enabled +00000010 _sizeof_ram_data_disabled +00000009 _sizeof_compare_ram_data +0000003d _sizeof_fail_round1_disable +0000003c _sizeof_fail_round1_enable +0000000d _sizeof_fail_round1_print_test_address +00000025 _sizeof_fail_round2_disable +00001d43 _sizeof_fail_round2_expect diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/multicart_rom_8Mb/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/multicart_rom_8Mb/test.gb index 6c722ed5ceb29f8bc17e1cd7ef1e8d793c018de6..befbe36445ff35a28014be40bd07a315542bf15b 100644 GIT binary patch delta 443 zcmZ|Jze~eF6bJCTRBdh58W1TirjSh(MQbO+OWH*0k1Cpiql4fe2o4VZ!l#xS+%&j5 zh;Az653sg46gk{ny}47RxK;2{e{4SZ-aS6=;2t6%!hN0|ih(gAlBA^eDD;x>8YD?s zy;Ueu*;h!Zk=&*g3S7^*_Oh!vW^T^T68;SJlN(KytdGhX*2f*kA&GbZ6D>#wAm2%u zU&z`TsTa9`09t05`B^PrSev)(B{{>NnVz#(7VV5{XEj-*e*EWV#x0n0fd+o`?fq8u zu0~cxk&l!N`rGk!x%Q9}tlj#{8&NE}>1`<*E&J!n#?(1P!xzAhfIoODr1Dp=!>?dh zW>02c=0GMf2!jF=TOhAO~lis{O$cM2(5^GeVcYrw~In)~ox@x3<~ z@Iz)Y((%Zf@Kp83axar-z2ReINEs>&Lk!y(wlnNt7-kq@*vT-;FvhTpVK>8`YmDO; DbGNev delta 448 zcmZ9`&nrYx6bJBopC7|KgO}7x%A08xHj2zpVx0G8-pH>ZM*I&JO3LpXzwX9LkIk&C zOtL_eJ-yV3n^{@Em9o(wF-6=r$-?P=yQj}N-7X>^!fAr8J+1r6g(6GzfN%%=B&Qrp z6shQKa`Eb)r8Wg#fTTH|)Z%*okQpQV67rjAO%WVy71a`KkH_Ogt#Kh#giaU4o{-^@ zn5mKc7QY7^yW;AKWG*KkK@#lIpIiU}^>iT-oEw9ul zH%spSijP`tl0m1fIZ30r%)T_;V}14dJUhVWfuCCngkvdKSXnOQgllJS^e;qq_Y9FaLHfb>e~9oa3-YZJ(;%tyN=yj-v%}~k74y8*5D7*wYsSQ diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/multicart_rom_8Mb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/multicart_rom_8Mb/test.sym index e6638a1fd..f42eb8e4e 100644 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/multicart_rom_8Mb/test.sym +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/multicart_rom_8Mb/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/multicart_rom_8Mb.gb". [labels] -01:40cc clear_vram -01:408b disable_lcd_safe -01:4091 disable_lcd_safe@wait_ly_0 -01:40e0 memcpy -01:40e9 memset -01:40a9 print_hex4 -01:40d6 print_hex8 -01:40f9 print_inline_string -01:40b5 print_load_font -01:40c1 print_newline -01:40f2 print_string +01:40d6 clear_vram +01:4095 disable_lcd_safe +01:409b disable_lcd_safe@wait_ly_0 +01:40ea memcpy +01:40f3 memset +01:40b3 print_hex4 +01:40e0 print_hex8 +01:4924 print_inline_string +01:40bf print_load_font +01:40cb print_newline +01:40fc print_string 01:4001 quit 01:4016 quit@cb_return 01:401b quit@wait_ly_1 @@ -21,25 +21,32 @@ 01:402d quit@wait_ly_4 01:4037 quit@success 01:405e quit@failure -01:4073 quit@halt -01:4074 quit@halt_execution_0 -01:4077 reset_screen -01:409a serial_send_byte +01:407d quit@halt +01:407e quit@halt_execution_0 +01:4081 reset_screen +01:40a4 serial_send_byte 01:4134 font 00:0150 main -00:016b fail -00:0172 fail@quit_inline_1 -00:020b c000_functions_start -00:020b run_test_suite -00:0228 run_test_suite@quit_inline_2 -00:0239 run_tests -00:0247 run_test_cases -00:0255 test_case -00:0272 restore_mbc1 -00:027b switch_bank -00:028c fetch_expected_value -00:02ab c000_functions_end -00:02ab expected_banks +00:016e fail +00:0175 fail@quit_inline_1 +00:020e wram_functions_start +00:020e run_test_suite +00:022b run_test_suite@quit_inline_2 +00:023c run_tests +00:024a run_test_cases +00:0258 test_case +00:0275 restore_mbc1 +00:027e switch_bank +00:028f fetch_expected_value +00:02ae wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:ff84 hram.mode +00:02ae expected_banks [definitions] 0000000a _sizeof_clear_vram @@ -52,14 +59,21 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000180 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000001 _sizeof_hram.mode 00000180 _sizeof_expected_banks -0000001b _sizeof_main +0000001e _sizeof_main 000000a0 _sizeof_fail -00000000 _sizeof_c000_functions_start +00000000 _sizeof_wram_functions_start 0000002e _sizeof_run_test_suite 0000000e _sizeof_run_tests 0000000e _sizeof_run_test_cases diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_16Mb/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_16Mb/test.gb index 53059a94f97a3c7a28316827ae622d0d9985b66e..494341f41b53e0c7eedae3658fe6d1e41892f74e 100644 GIT binary patch delta 483 zcmZ|JIZFdU6bJB`^@z8wXS_FHCyJsH5DdvC8^M z5iM zqH%E5r&%iNTjJ@LL75eCYbtI;Lqnrhgvkq$**-RO#cf@xI@)@o(J1qlyU_aueizg` zC1c|e%V3!uc`sb}GBXq#F=C0?G1Hn`VptZzt!}+U=UVw)>aep@sQ^y{H-d@_bL5A2PJ2ysg22sqTM|AoG4C9n%RrBhGL@cY=X;XE1$juZTYWV4sTW;z#j% z>z9Y(C4Fe$iKg6VadmUf;qh;QzzG^5hmcFiBjgi2gaSe#p@>jSC?S**$_V9z3W83k eBvcWq2{nXTLLI?Ns3$ZK8VOB=WlL<(g`JIB zSg5465EccIg>CH?3&BPb#Lj@TK`eaC#~Xfc7#;u)nVSsXT`q*!y;`I2GiKQ$#BB9S z;o$Oavir}_8aE4L*1O2+^I0t&AD_}w%(@l%gG)`79PX3V8}3i1)6DO4VW0#N7vwuB z(=#buWBEhtQMgdDL_9O8WfrCr`p}%5;dk~f^u<{{nblL8ESBH@^LR455TA0@^}UiC zUM1k|QQZC9PmMk$$ybbZMdNnvL|GZh6-SF6&z7*3gmrFkF_=0Q8`iPdl-ZKmmf4Z< zx5T0e+5epw^B1q3gp+h8or$RG#G>EMn0aR$ib2g5J8!{{;PBC^9exTiaHd_GFXHPt zVx5YDd1}0fK>4e9c*=38k$n(2K_Qe8$_W*ON`i+_MW`lt2{nXTLLH%=;3G5;R6--6 ciO@`FA+!?O2!294p@Yy#2oSmm-4_Vr2L@`sHvj+t diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_16Mb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_16Mb/test.sym index 3b1619ad4..521b59120 100644 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_16Mb/test.sym +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_16Mb/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/rom_16Mb.gb". [labels] -01:48bc clear_vram -01:487b disable_lcd_safe -01:4881 disable_lcd_safe@wait_ly_0 -01:48d0 memcpy -01:48d9 memset -01:4899 print_hex4 -01:48c6 print_hex8 -01:48e9 print_inline_string -01:48a5 print_load_font -01:48b1 print_newline -01:48e2 print_string +01:48c6 clear_vram +01:4885 disable_lcd_safe +01:488b disable_lcd_safe@wait_ly_0 +01:48da memcpy +01:48e3 memset +01:48a3 print_hex4 +01:48d0 print_hex8 +01:48f3 print_inline_string +01:48af print_load_font +01:48bb print_newline +01:48ec print_string 01:47f1 quit 01:4806 quit@cb_return 01:480b quit@wait_ly_1 @@ -21,25 +21,32 @@ 01:481d quit@wait_ly_4 01:4827 quit@success 01:484e quit@failure -01:4863 quit@halt -01:4864 quit@halt_execution_0 -01:4867 reset_screen -01:488a serial_send_byte +01:486d quit@halt +01:486e quit@halt_execution_0 +01:4871 reset_screen +01:4894 serial_send_byte 01:4001 font 00:0150 main -00:016b fail -00:0172 fail@quit_inline_1 -00:020b c000_functions_start -00:020b run_test_suite -00:0228 run_test_suite@quit_inline_2 -00:0239 run_tests -00:0247 run_test_cases -00:0255 test_case -00:0272 restore_mbc1 -00:027b switch_bank -00:028c fetch_expected_value -00:02ab c000_functions_end -00:02ab expected_banks +00:016e fail +00:0175 fail@quit_inline_1 +00:020e wram_functions_start +00:020e run_test_suite +00:022b run_test_suite@quit_inline_2 +00:023c run_tests +00:024a run_test_cases +00:0258 test_case +00:0275 restore_mbc1 +00:027e switch_bank +00:028f fetch_expected_value +00:02ae wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:ff84 hram.mode +00:02ae expected_banks [definitions] 0000000a _sizeof_clear_vram @@ -52,14 +59,21 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000180 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000001 _sizeof_hram.mode 00000180 _sizeof_expected_banks -0000001b _sizeof_main +0000001e _sizeof_main 000000a0 _sizeof_fail -00000000 _sizeof_c000_functions_start +00000000 _sizeof_wram_functions_start 0000002e _sizeof_run_test_suite 0000000e _sizeof_run_tests 0000000e _sizeof_run_test_cases diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_1Mb/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_1Mb/test.gb index cbb4634e054545ecf03906660b1f5489d0b42c40..621fd9a687bfad546594b1fbfcdd8d9add187d55 100644 GIT binary patch delta 391 zcmZo@;Am*z*x<)l-zsOw@IaB_fFK_e;{t}Ww>%UX4hgPfVr*apvJW#H_^epUc=)6H z+0Py!uE8M+ZjPQlt}YB`cYAzjUalYr6jm_+0$mkjH#av134V}(30S}!Bmh(g6!G71$?Cazj1e9xl%6;~5jR&O>l8X=a5iG zACM?Wyb&TU=5%uXD~5yzEob!(*fGLbXVZbs)@A}Z8)VmHT_$J7yvc=33XF#~Ph!fp z-Q@6#oxRoLY@x^5^^+MrO#P;KRGyvUQ3b@+KwJaFwLmN(?_lQyq;V1s3=)6WKX7{B z{J{Hxm!04P2fIHH+z%g{T;*ZPcx&H}W@2n$1hNk^9QdqQ#CZ6l``MQs zA+Et83T}>`KCUhdXE%C$XkM-$2ozQ^00LbVV>dT91_^$UfC*T@93%i#2Nd!3cX3r< z_|S6pmg(ic6$F%PfXcn}aE%CXbq;ZLQ2+vl4^41!N9T}GM<0+V zNW2j&KADS2hD(D9D{lLpk@PUKfp9k)T_e^f_ zFjctVQTt5(oxDwJ{sonjiVO{m3<~QH-}Lx;+WhQHkB^6EPQK|O!}7@E=*i87EQ01u J4a*uB8vvRUoLm3^ diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_1Mb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_1Mb/test.sym index 6c53eaf47..1e6f47d16 100644 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_1Mb/test.sym +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_1Mb/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/rom_1Mb.gb". [labels] -01:48bc clear_vram -01:487b disable_lcd_safe -01:4881 disable_lcd_safe@wait_ly_0 -01:48d0 memcpy -01:48d9 memset -01:4899 print_hex4 -01:48c6 print_hex8 -01:48e9 print_inline_string -01:48a5 print_load_font -01:48b1 print_newline -01:48e2 print_string +01:48c6 clear_vram +01:4885 disable_lcd_safe +01:488b disable_lcd_safe@wait_ly_0 +01:48da memcpy +01:48e3 memset +01:48a3 print_hex4 +01:48d0 print_hex8 +01:48f3 print_inline_string +01:48af print_load_font +01:48bb print_newline +01:48ec print_string 01:47f1 quit 01:4806 quit@cb_return 01:480b quit@wait_ly_1 @@ -21,25 +21,32 @@ 01:481d quit@wait_ly_4 01:4827 quit@success 01:484e quit@failure -01:4863 quit@halt -01:4864 quit@halt_execution_0 -01:4867 reset_screen -01:488a serial_send_byte +01:486d quit@halt +01:486e quit@halt_execution_0 +01:4871 reset_screen +01:4894 serial_send_byte 01:4001 font 00:0150 main -00:016b fail -00:0172 fail@quit_inline_1 -00:020b c000_functions_start -00:020b run_test_suite -00:0228 run_test_suite@quit_inline_2 -00:0239 run_tests -00:0247 run_test_cases -00:0255 test_case -00:0272 restore_mbc1 -00:027b switch_bank -00:028c fetch_expected_value -00:02ab c000_functions_end -00:02ab expected_banks +00:016e fail +00:0175 fail@quit_inline_1 +00:020e wram_functions_start +00:020e run_test_suite +00:022b run_test_suite@quit_inline_2 +00:023c run_tests +00:024a run_test_cases +00:0258 test_case +00:0275 restore_mbc1 +00:027e switch_bank +00:028f fetch_expected_value +00:02ae wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:ff84 hram.mode +00:02ae expected_banks [definitions] 0000000a _sizeof_clear_vram @@ -52,14 +59,21 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000180 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000001 _sizeof_hram.mode 00000180 _sizeof_expected_banks -0000001b _sizeof_main +0000001e _sizeof_main 000000a0 _sizeof_fail -00000000 _sizeof_c000_functions_start +00000000 _sizeof_wram_functions_start 0000002e _sizeof_run_test_suite 0000000e _sizeof_run_tests 0000000e _sizeof_run_test_cases diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_2Mb/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_2Mb/test.gb index 4ff7eb0853a90e1a7208bc28f8cd2ec7172a1e1d..9f5b2f1315d4b5e855d52ae5dac43d72e8d56940 100644 GIT binary patch delta 397 zcmZo@5NK!+*x<)lU*BZN@IaB_fFK_e;{t}Ww>%UX4hgPfVr*apvJW#H_^epUc=)6H z+0Py!uE8M+ZjPQlt}YB`cYAzjUalYr6jm_+0$mkjH#av134V}(30S}!Bmh(g6!G71$?Cazj1e9xl%6;~5jR&O>l8X=a5iG zACM?Wyb&TU=5%uXD~5yzEob!(*fGLbXVZbs)@A}Z8)VmHT_$J7yvc=33XF#~Ph!fp z-Q@6#oxRoLY@x^5^^+MrO#P;KRGyvUQ3b@+KwJaFwLmN(?_lQyq;V1s3=)6WKX7{B z{J{Hxm!04P2fIHH+z%g{T;*ZPcx&A9A delta 377 zcmZo@5NK!+*x<)l-)^bMa6pioiE#nL*$WO4fGch(W0@;Td4t!QDVm$oO{p?GR z5ZB-k1vf`eA6FNKvl~4=G%r^W1PZGd0D-QGv74J4g9JZFzyvH{4iW&W1B&?iySOSa zd}uj)%mX9<7ISj+^H%T+^>uQ!3IfVCK;>R~xJCrHI)}KrC;$P&hbFkVqjN~8qYp?F zB;E)XpUlN1!==Flav#Xh$p%c$jMGG&N+vQOO#MMAt1H`pJEFtP(=LDqDkOPCn-}Mii9ymYne&A&%_`t#L&ja_vdnUJd zm?~WGsC_2?PTr<9|ANX%MTQ1O28H#9Z+d(^ZGLv9$H&7nC*SmtVR__n^yFqk7D4l- PhPDRAwg#qU4a^Myd>@_M diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_2Mb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_2Mb/test.sym index a42de7f05..0896e40ce 100644 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_2Mb/test.sym +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_2Mb/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/rom_2Mb.gb". [labels] -01:48bc clear_vram -01:487b disable_lcd_safe -01:4881 disable_lcd_safe@wait_ly_0 -01:48d0 memcpy -01:48d9 memset -01:4899 print_hex4 -01:48c6 print_hex8 -01:48e9 print_inline_string -01:48a5 print_load_font -01:48b1 print_newline -01:48e2 print_string +01:48c6 clear_vram +01:4885 disable_lcd_safe +01:488b disable_lcd_safe@wait_ly_0 +01:48da memcpy +01:48e3 memset +01:48a3 print_hex4 +01:48d0 print_hex8 +01:48f3 print_inline_string +01:48af print_load_font +01:48bb print_newline +01:48ec print_string 01:47f1 quit 01:4806 quit@cb_return 01:480b quit@wait_ly_1 @@ -21,25 +21,32 @@ 01:481d quit@wait_ly_4 01:4827 quit@success 01:484e quit@failure -01:4863 quit@halt -01:4864 quit@halt_execution_0 -01:4867 reset_screen -01:488a serial_send_byte +01:486d quit@halt +01:486e quit@halt_execution_0 +01:4871 reset_screen +01:4894 serial_send_byte 01:4001 font 00:0150 main -00:016b fail -00:0172 fail@quit_inline_1 -00:020b c000_functions_start -00:020b run_test_suite -00:0228 run_test_suite@quit_inline_2 -00:0239 run_tests -00:0247 run_test_cases -00:0255 test_case -00:0272 restore_mbc1 -00:027b switch_bank -00:028c fetch_expected_value -00:02ab c000_functions_end -00:02ab expected_banks +00:016e fail +00:0175 fail@quit_inline_1 +00:020e wram_functions_start +00:020e run_test_suite +00:022b run_test_suite@quit_inline_2 +00:023c run_tests +00:024a run_test_cases +00:0258 test_case +00:0275 restore_mbc1 +00:027e switch_bank +00:028f fetch_expected_value +00:02ae wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:ff84 hram.mode +00:02ae expected_banks [definitions] 0000000a _sizeof_clear_vram @@ -52,14 +59,21 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000180 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000001 _sizeof_hram.mode 00000180 _sizeof_expected_banks -0000001b _sizeof_main +0000001e _sizeof_main 000000a0 _sizeof_fail -00000000 _sizeof_c000_functions_start +00000000 _sizeof_wram_functions_start 0000002e _sizeof_run_test_suite 0000000e _sizeof_run_tests 0000000e _sizeof_run_test_cases diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_4Mb/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_4Mb/test.gb index 98d0276960ef0a9e1d29101d6cd5235b8937bd9f..02fb43fe9763f67e22a97ce589d44f453a3db2ca 100644 GIT binary patch delta 409 zcmZo@P-tjS*x<)lU&>|3@IaB_fFK_e;{t}Ww>%UX4hgPfVr*apvJW#H_^epUc=)6H z+0Py!uE8M+ZjPQlt}YB`cYAzjUalYr6jm_+0$mkjH#av134V}(30S}!Bmh(g6!G71$?Cazj1e9xl%6;~5jR&O>l8X=a5iG zACM?Wyb&TU=5%uXD~5yzEob!(*fGLbXVZbs)@A}Z8)VmHT_$J7yvc=33XF#~Ph!fp z-Q@6#oxRoLY@x^5^^+MrO#P;KRGyvUQ3b@+KwJaFwLmN(?_lQyq;V1s3=)6WKX7{B z{J{Hxm!04P2fIHH+z%g{T;*ZPcx&djkL%d95%2 delta 389 zcmZo@P-tjS*x<)lUvp5A;ea4F6XODgvll!R87>H}W@2n$1hNk^9QdqQ#CZ6l``MQs zA+Et83T}>`KCUhdXE%C$XkM-$2ozQ^00LbVV>dT91_^$UfC*T@93%i#2Nd!3cX3r< z_|S6pmg(ic6$F%PfXcn}aE%CXbq;ZLQ2+vl4^41!N9T}GM<0+V zNW2j&KADS2hD(D9D{lLpk@PUKfp9k)T_e^f_ zFjctVQTt5(oxDwJ{sonjiVO{m3<~QH-}Lx;+WhQHkB^6EPQK|O!}7@E=*i87EQ01u b4Q&mKZ4FFq4a{u~ENu;}Z4GS88rT~EE7>jBH!I5Tn~%j}#N)DHp$9<= z#5*CWm8d3@c9B1U1wB*4>4colZlzRhP0a9T)&*^2Rf}Y_s4R-K3x6JtWU}F;rIw$3 z`?%VyypT<^$Y<&y`rGksvG%lNt!@3K`=too)pL?e8?|$3XYodPx7*Kv=YUsq3W0P9 z_IU~NA_pReB1a;gDJ7(e``<$$p3jP@nh`T$E{EKv68bRX#=V}00Bz}27;`+s+e46- zp<|TwN0_v|!dH}W@2n$1hNk^9QdqQ#CZ6l``MQs zA+Et83T}>`KCUhdXE%C$XkM-$2ozQ^00LbVV>dT91_^$UfC*T@93%i#2Nd!3cX3r< z_|S6pmg(ic6$F%PfXcn}aE%CXbq;ZLQ2+vl4^41!N9T}GM<0+V zNW2j&KADS2hD(D9D{lLpk@PUKfp9k)T_e^f_ zFjctVQTt5(oxDwJ{sonjiVO{m3<~QH-}Lx;+WhQHkB^6EPQK|O!}7@E=*i8Dp8w4z z3J5hdv^6lcH88a`Ft;_Zv^B7{HL$fcu(vgEv^8+HHE^{xaJMz^v^DUyHSjHK;BNo` DBz>(e diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_8Mb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_8Mb/test.sym index 6f9af044c..825207a40 100644 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_8Mb/test.sym +++ b/cinema/gb/mooneye-gb/emulator-only/mbc1/rom_8Mb/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/rom_8Mb.gb". [labels] -01:48bc clear_vram -01:487b disable_lcd_safe -01:4881 disable_lcd_safe@wait_ly_0 -01:48d0 memcpy -01:48d9 memset -01:4899 print_hex4 -01:48c6 print_hex8 -01:48e9 print_inline_string -01:48a5 print_load_font -01:48b1 print_newline -01:48e2 print_string +01:48c6 clear_vram +01:4885 disable_lcd_safe +01:488b disable_lcd_safe@wait_ly_0 +01:48da memcpy +01:48e3 memset +01:48a3 print_hex4 +01:48d0 print_hex8 +01:48f3 print_inline_string +01:48af print_load_font +01:48bb print_newline +01:48ec print_string 01:47f1 quit 01:4806 quit@cb_return 01:480b quit@wait_ly_1 @@ -21,25 +21,32 @@ 01:481d quit@wait_ly_4 01:4827 quit@success 01:484e quit@failure -01:4863 quit@halt -01:4864 quit@halt_execution_0 -01:4867 reset_screen -01:488a serial_send_byte +01:486d quit@halt +01:486e quit@halt_execution_0 +01:4871 reset_screen +01:4894 serial_send_byte 01:4001 font 00:0150 main -00:016b fail -00:0172 fail@quit_inline_1 -00:020b c000_functions_start -00:020b run_test_suite -00:0228 run_test_suite@quit_inline_2 -00:0239 run_tests -00:0247 run_test_cases -00:0255 test_case -00:0272 restore_mbc1 -00:027b switch_bank -00:028c fetch_expected_value -00:02ab c000_functions_end -00:02ab expected_banks +00:016e fail +00:0175 fail@quit_inline_1 +00:020e wram_functions_start +00:020e run_test_suite +00:022b run_test_suite@quit_inline_2 +00:023c run_tests +00:024a run_test_cases +00:0258 test_case +00:0275 restore_mbc1 +00:027e switch_bank +00:028f fetch_expected_value +00:02ae wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:ff84 hram.mode +00:02ae expected_banks [definitions] 0000000a _sizeof_clear_vram @@ -52,14 +59,21 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000180 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000001 _sizeof_hram.mode 00000180 _sizeof_expected_banks -0000001b _sizeof_main +0000001e _sizeof_main 000000a0 _sizeof_fail -00000000 _sizeof_c000_functions_start +00000000 _sizeof_wram_functions_start 0000002e _sizeof_run_test_suite 0000000e _sizeof_run_tests 0000000e _sizeof_run_test_cases diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/config.ini b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/test.gb new file mode 100644 index 0000000000000000000000000000000000000000..4f815de8afca279ab35b79ece188d34a7792b7a9 GIT binary patch literal 32768 zcmeI4L1+|L7{}jE);K0HouGz^3}$w_#5GMN#-K}Br<3UrGcj#LXefjn;>JXUHc5$x zXxDWU5!znbLkcYfTIj)J@X$jm6(lGwy2V3jY0JJoXoWv@`;k4Udh~fW-N6!x=se`Wvjk#q%WSEHm~0c{TP@RUN+-p z16^;*>dZF|h+2{PGrzc)Un(r!UtC^(TzK?g?XGjZ^QQ~;&$*@5H1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1VG@KB9JPPkSZ}#u>XHNXirO}u1W}1rT(Z?sh@h1Np94ys@t|jqlQsY5s%Y| z!NHlCBS&g$ckC#azkwixVVF{Nbqx)5bsW!m>6@ggnnn?t#{KjTN>M-g8ygM7vJ9iK zkt`AwXj$}R+kg5a$d1ST-r}3%6@_z~rfri?*CP=}DiYCkvQ<^rDYvQ`2HEkr;{=1c zZknl;^Y7b^!*fu4G}_sjOmhBI%C?h9Me+UdIN3A<$EQ+H&rkWN`F{SkEJZ1)TAIyj<4@2X&o!Q_WNq3h1h&ddx9n5JRqQjrK(LGhE5 zu1k%c{`j<%>&9ZfpS-?5nY8W6Nn0wJB!AIn-ZXzYJv-}7C=iQe9>u8t1QZy4cK@&5Aq zI0MC(`W3}re@~A;ANe({swy1j@uyBvtt_68*W&Nz)D+nfDL!9Rm*@5M4GsDAk%vzq zjc;!chc|C7<}02TUSBLmw}r&~ZJX~-Fi6$X{;rJOu%VLunzr`-QWS~v`S*_d=oybI zie+_lw6&2%Wa#`R5(5KdllV^a`V}e5avVRNZw%c6|NQE@rp02K6pt37wY9t3bz575 zL0(NPMtmX>^3&N~#kq37$@Xugs*aD-$|I3zw7I#diQ*|Qi}_OD$Vh)bQKxUx&YdkS zwCQYdh5r6f-@rg3;W%_sZJX@2HaabI2bC43O-(H=G%xvh^}0^Av#n|II8{)bpXO?4 z*t(VdbOwumU#M?Ns=t3^r0AzJP-^oT&@{fY^p}-pp?Jg4v}P$yWBxuX|HRP#S4pX= zUmuNXY3c5!H|=^+WQXj+)zp=|yZo{F@alz3f%;e_pDP{Dhb@1vC$Po4bUT~hpG|w& zZ@rNCG((V|MH#)d6B!}er$#yc+C3EAG0Eh*bc+4Oqb za^(A8AGXjR&*hxltGNTYE~_SITaR-4=fC%I0c$F!%. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc2/bits_ramg.gb". + +[labels] +01:49d4 clear_vram +01:47f0 disable_lcd_safe +01:47f6 disable_lcd_safe@wait_ly_0 +01:49a3 memcmp +01:49e8 memcpy +01:49f1 memset +01:49b1 print_hex4 +01:49de print_hex8 +01:4a01 print_inline_string +01:49bd print_load_font +01:49c9 print_newline +01:49fa print_string +01:4900 quit +01:4915 quit@cb_return +01:491a quit@wait_ly_1 +01:4920 quit@wait_ly_2 +01:4926 quit@wait_ly_3 +01:492c quit@wait_ly_4 +01:4936 quit@success +01:495d quit@failure +01:497c quit@halt +01:497d quit@halt_execution_0 +01:4980 reset_screen +01:4994 serial_send_byte +01:4000 font +00:0150 main +00:0170 test_round1 +00:019d test_round2 +00:01bb test_round2@expect_enabled +00:01c0 test_round2@expect_disabled +00:01d7 test_round2@quit_inline_1 +00:01e8 test_pattern +00:01f8 all_ff +00:0208 compare_ram_data +00:0211 fail_round1_disable +00:0218 fail_round1_disable@quit_inline_2 +00:024e fail_round1_enable +00:0255 fail_round1_enable@quit_inline_3 +00:028a fail_round1_print_test_address +00:0295 fail_round2_disable +00:029c fail_round2_disable@quit_inline_4 +00:02ba fail_round2_expect +00:02c1 fail_round2_expect@quit_inline_5 +01:4800 ramg_expectations +00:ff80 hram.test_address +00:ff80 hram.test_address_l +00:ff81 hram.test_address_h +00:ff82 hram.ramg +00:ff83 hram.memcmp + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000100 _sizeof_ramg_expectations +00000002 _sizeof_hram.test_address +00000001 _sizeof_hram.test_address_l +00000001 _sizeof_hram.test_address_h +00000001 _sizeof_hram.ramg +00000020 _sizeof_hram.memcmp +00000020 _sizeof_main +0000002d _sizeof_test_round1 +0000004b _sizeof_test_round2 +00000010 _sizeof_test_pattern +00000010 _sizeof_all_ff +00000009 _sizeof_compare_ram_data +0000003d _sizeof_fail_round1_disable +0000003c _sizeof_fail_round1_enable +0000000b _sizeof_fail_round1_print_test_address +00000025 _sizeof_fail_round2_disable diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/config.ini b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/config.ini new file mode 100644 index 000000000..7ddee425b --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/config.ini @@ -0,0 +1,2 @@ +[testinfo] +fail=1 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/test.gb new file mode 100644 index 0000000000000000000000000000000000000000..7043f8430a745ad16184cd57f0496b0df7015e7f GIT binary patch literal 65536 zcmeI*Z)g)|90%~{uCbnN?XKv`RgU(OWnJt#sj;lFWassE)T?$_%F3YRMNQXehpPn( zR(HlmH`(yT1}iwBFz}5p>x8`+4%rAwGtJo8n{8N#Fe?l^)^OZ03 z`-8jWchCRNJx}pfTwZ>%gJt`quYXCUuC8U(6$jXHR>RgZrLO7S_gL+4-Q!3GCerNpEyta;n|&8!eSwp@3{ zm1%NsFmF3U4k>H)+gp@6A&(FDe*3-Ya(-<8aofzG{&*_gE2*+=Mf$&%jt>diHn{qN@HUrqU%*v@i?^@8k(NoySKi6e^qpeUrf8I2y2!)~ z{r5x95{YEewrQtY7Ui9tv|H#5$|cj*)@YQ*r82R4O{2MsTvg+7nn8Jd8mqZ^!v;}K zd$9cXg`Q=23=XDJ<#O5sD|4|2R8^c=`pZhAP<>rj)ixfgD*Sybf5*`Kui>F6{`{y_ zG}_xspY+ztK{@|@8fle#=|=u-H$U#?Kj*(t^HDBnEnitGI!o^xi~RmU>Hg36!)J}> zDl2MN)hmr_o1fkkvL^E%x`+66m|t)4%j4G(erZjXY4gwjyje{9Yqnq)UM}n`>@e#J zmicF4d-gk*hELClk*{3L6(loLkY`__=^FQPlb_6OxM-|e_e{0+TSso;simrze0lZd zwooppPSr6>Dz47nbdM}F{n`|NXa6_hT#!vk%$Us<-QTZt. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc2/bits_romb.gb". + +[labels] +01:48d3 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48a2 memcmp +01:48e7 memcpy +01:48f0 memset +01:48b0 print_hex4 +01:48dd print_hex8 +01:4900 print_inline_string +01:48bc print_load_font +01:48c8 print_newline +01:48f9 print_string +01:47f0 quit +01:4805 quit@cb_return +01:480a quit@wait_ly_1 +01:4810 quit@wait_ly_2 +01:4816 quit@wait_ly_3 +01:481c quit@wait_ly_4 +01:4826 quit@success +01:484d quit@failure +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte +01:4000 font +00:0150 main +00:015f test_round1 +00:0174 test_round1@quit_inline_1 +00:018e test_round2 +00:01c0 test_round2@quit_inline_2 +00:01d1 bank1_pattern +00:01e1 bank3_pattern +00:01f1 fail_round2 +00:01f8 fail_round2@quit_inline_3 +00:ff80 hram.test_address +00:ff80 hram.test_address_l +00:ff81 hram.test_address_h +00:ff82 hram.memcmp + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000002 _sizeof_hram.test_address +00000001 _sizeof_hram.test_address_l +00000001 _sizeof_hram.test_address_h +00000020 _sizeof_hram.memcmp +0000000f _sizeof_main +0000002f _sizeof_test_round1 +00000043 _sizeof_test_round2 +00000010 _sizeof_bank1_pattern +00000010 _sizeof_bank3_pattern diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcWg%=G-Tj)jZD(zhnf<+QsbW1N=h_I#TMQDne_?x)f^ZGemTgZJ#o)^xU z^PcbjIp4Q<Ktdj7d= zwzcH_EE~*z+gHg}{I>P-@B997^@aKP`D%CW8}(}+ z4*tCFLYB|`EuX23ey8ZO{_U5tRoV2tJ2xKOynXxb&0E*+-MaqqeCl=PkNM_hgEvQu z0phW5`oqD?3(faFx2^uLi;3_3;MGIl&x%g3pPKm~zdlvmR<)Sr%xqqi=- zICDO~ap8O(oeVv-w0h^e#nbVjrPaGj7QJ zS{yiV`t&QWtXlQ#vjYQBUaQrMSiO4v`qisb{nT$fN0iHzO4O)S();-BFCyMY`GyU( zTB}v7ZP*Z5L`<;NihIg?_g;(0o6X+ah2K=aR7!o<>vBE~3$>RwFN$tJUbc zT&~q3Z#LWQ{{CvUUY~rp|9g46oyLgz!^1mvbi1kl$;mwLc1xvRd9xXLjF9S2PX6!s z(O+D>^7Pzll}Zb1NIfsCx0ffOfq`oEz=3KtdB>b%rfIg3rLw3K*~mzz6YI&c)H+t! z>6|%p`t;aXy>X3eXM+PGVbkm)K6bF{9CQaYqi)7{r$cAoz9LOd-fbXx?@MD6Xh{dinQX< z(Srx~?c2F?w1_Bgx5vl#?%lO(`}Wj-tv2*1()Ug4OFcyW$IDBl-un0K>5UiVmCCYZ zLqn{k5ov$Lyms!~x9{M=-u$8@?ZRk3IyyA;^wSIdE$o-H zzLAkQEfL8-&(qoI?~mEW_kGxQ@#3Yayi)o9^Bc7yQh&X3m)^y_*({Y>t?k>lZHp{q zV*iehkBvnhkI?J|h-Mzch*}ApAKdokD zBzzi;D387Ui1Xq3j=Xmw%jKg-W95y;@bKo%8#hM%=r=|3jdv3h`}c=>JV$KWv}H?t z^pvF;_P$TN8yg!RZ?|Ko=6U4Xw#9CVGgx|Px^d%{EirDCrPWufG53^LD$QohU}5|i zYyJ8)Yf^da!G*ss@$OU+`}a>wER@F{csx&gpi)U^HvY24C{e#wt5h}@QK=;Vo>gzh z#P?rTM7i9XU$ok?W%us*jjz5Ck$+bIC2C#-2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK;Y8_{sVpr BsW|`u literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/test.sym new file mode 100644 index 000000000..80a6d9536 --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_unused/test.sym @@ -0,0 +1,67 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc2/bits_unused.gb". + +[labels] +01:40e3 clear_vram +01:4094 disable_lcd_safe +01:409a disable_lcd_safe@wait_ly_0 +01:40b2 memcmp +01:40f7 memcpy +01:4100 memset +01:40c0 print_hex4 +01:40ed print_hex8 +01:4110 print_inline_string +01:40cc print_load_font +01:40d8 print_newline +01:4109 print_string +01:4000 quit +01:4015 quit@cb_return +01:401a quit@wait_ly_1 +01:4020 quit@wait_ly_2 +01:4026 quit@wait_ly_3 +01:402c quit@wait_ly_4 +01:4036 quit@success +01:405d quit@failure +01:407c quit@halt +01:407d quit@halt_execution_0 +01:4080 reset_screen +01:40a3 serial_send_byte +01:4202 font +00:0150 main +00:0169 test_round1 +00:018d test_round1@quit_inline_1 +00:019e ram_test_pattern +00:01ae check_patterns +00:01c5 fail_round1 +00:01cc fail_round1@quit_inline_2 +01:41f2 rom_test_pattern +01:4202 _end_rom_test_pattern +00:ff80 hram.test_address +00:ff80 hram.test_address_l +00:ff81 hram.test_address_h + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000002 _sizeof_hram.test_address +00000001 _sizeof_hram.test_address_l +00000001 _sizeof_hram.test_address_h +00000019 _sizeof_main +00000035 _sizeof_test_round1 +00000010 _sizeof_ram_test_pattern +00000017 _sizeof_check_patterns +0000402d _sizeof_fail_round1 +00000010 _sizeof_rom_test_pattern diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/ram/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc2/ram/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcv>lx&5TYP!BwxlzrCCcgNQls2{T6|~!}YPWL;rx9 zb7t<{d+s^+%lX`M@9a-+a`MM5q$5jp_PgTZo#Ei*T3^UltlLyU^74q55LFym_)Xvv;?cV% zgAc1!A;jG)>D$%8q(#LNw`;QRns!P(I<30gh}dA_nHH~P%Jf@+9} z&|KjQb-Ay;U85punC1Vd-7*=xPf`U_*Wg}Z^~_8BuCdW z+1KbRLmAUIt2;)QyN^rmAt_r%%s-VuLP=NU2dBRbzcQ~N`pUdxy}V|=Klk0zt{->) zV)WylbB!0;AI{C%JbG|2_eOJrsq&e!h!LOBe;Nm#P)#%}GZhDXQ8Bt~c;7qeRlg}4 zjyxK7Bs=}-oHizIFpxc)zwLPO*Z&ey(%;B_oXO5EZ9n|UE4TO54W~4230*YuWO{Y- zn!jF76|28;v`2jU_uL;cOrJI^|H@Uh=g&=+a_9M-{)VeD*@Gob3C$M+;}e^Hl~O-( z>EMame^@g3`htl_BJ74_xhqhJ0RFRG|6ZR%)iuIFmUO?wx9yCrE`=!P_rC7dMnF{z*?-=*!Xp&#i_&B^|EGsb^I-$`4DcyH9GB zAK9*{x8;_0`fW)~PRmTh~WHIMbQJ+!I0=2Kr61%(O#~!$Ax5GfYH;$)wZy`B|+nV(r@9yEkkI4Sn=c zt^5rHLUcM_mawp>sIV~VPv?a;2*a=}c(5$(hhL2>&=2Q2;4cWE>vWI} z8ja#_w@Xr1R#}-O+3jG5m8j5&laq^zR;@})OO^%fHd|rg%9ZKqsi|~+oz8Gi==sw4 z=nUXL)2>!4@n>Zz>w%qR0|E>NI=;3R_DY4WM`KaWv#t(wqbxMPU|(rzt5y{iDfW_@H+_Z@$p@EEc#eAe6r-(z~P4z;5Aur^e2m>rd@0```B$yg=xD%Dtm~ zP+P5PwIHOXCMAIeWFUVF3-j|q2cdVG#;=w|5NtNZpWYa_1xo&M9LriPtSodiA@T8< znRa`8yhcN#u~>kQ(Fk_P?Rz+BSfd8tso&{tfXmj~3L z4YGJ~Y%Cl))#whD^MStn{K7(;4Kh^}K~GA8Y=Jwdo?;pk6B`Tbf{jMcaj8P&CG;fICZapE`Og!k9eQ?kN9)fmv-q{ zS1=J(qrURj9%`;cUW>GDD?MlI(i4}8@U0zv61W@WFT>niEw{EB{JC3xa}Jy~aJSps z15zh`JK_HRJB!gF0VIF~kN^@u0!RP}AOR$R1dsp{Kmter2_OL^fCP{L5. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc2/ram.gb". + +[labels] +01:48c7 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48a2 memcmp +01:48d1 memcpy +01:48da memset +01:48ea print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48e3 print_string +01:47f0 quit +01:4805 quit@cb_return +01:480a quit@wait_ly_1 +01:4810 quit@wait_ly_2 +01:4816 quit@wait_ly_3 +01:481c quit@wait_ly_4 +01:4826 quit@success +01:484d quit@failure +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte +01:4000 font +00:0150 main +00:015f test_round1 +00:017d test_round2 +00:018e test_round3 +00:0197 test_round4 +00:01a2 test_round5 +00:025c test_round6 +00:0292 test_finish +00:029c test_finish@quit_inline_1 +00:02ad ramcmp +00:02c2 all_ff +00:04c2 test_pattern +00:06c2 copy_test_pattern +00:06ce check_test_pattern +00:06da clear_ram +00:06ee fail_round1 +00:06f8 fail_round1@quit_inline_2 +00:070f fail_round2 +00:0719 fail_round2@quit_inline_3 +00:0730 fail_round3 +00:073a fail_round3@quit_inline_4 +00:0751 fail_round4 +00:075b fail_round4@quit_inline_5 +00:0772 fail_round5 +00:077c fail_round5@quit_inline_6 +00:0793 fail_round6 +00:079d fail_round6@quit_inline_7 +00:c000 wram.test_pattern +00:ff80 hram.ramcmp +00:ffa0 hram.memcmp + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +0000000e _sizeof_memcmp +00000009 _sizeof_memcpy +00000009 _sizeof_memset +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.test_pattern +00000020 _sizeof_hram.ramcmp +00000020 _sizeof_hram.memcmp +0000000f _sizeof_main +0000001e _sizeof_test_round1 +00000011 _sizeof_test_round2 +00000009 _sizeof_test_round3 +0000000b _sizeof_test_round4 +000000ba _sizeof_test_round5 +00000036 _sizeof_test_round6 +0000001b _sizeof_test_finish +00000015 _sizeof_ramcmp +00000200 _sizeof_all_ff +00000200 _sizeof_test_pattern +0000000c _sizeof_copy_test_pattern +0000000c _sizeof_check_test_pattern +00000014 _sizeof_clear_ram +00000021 _sizeof_fail_round1 +00000021 _sizeof_fail_round2 +00000021 _sizeof_fail_round3 +00000021 _sizeof_fail_round4 +00000021 _sizeof_fail_round5 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_1Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_1Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcDQ4liQo=Uni`FX&Ktd-WE}P>l)e{r}9(-P)~ocDlxpLo7D_{1#WHr7x-ug0~9Qos9Fj^TK zA4yc}TDp4qYS5$8#lt!tE*=>j9aY|ak{Dh~JSqv@PG{oE6DNZwrXG(+P6cXpq4hy( z@*_`8j2xRBNdg^e_0o^|%CX6*%D7}Dzi9HkakI65rS-I)QMWBKTI+gJuO@i%r0P}8 z<@Q2raAkF&e9sNOYU*LCE6eT6?Mru+YA;?L$m>TN=d3VlU)FVJSK613-&N5+ZnPKI zE38I!<-e<+s=j7kJ*gG8*PFkujm2saKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~fnOymmeC~ySKl8?_Sg1^egugj^n!0!gWnvt~ni&m->STeLoC+|KLF>Nyr4lP|l{D zowFyTTrOwX&egQHZPRxUM3K~aUa=VKC>A|W%8uiC(zoOIzLd-5IL_rfF9_;u`#&qk zu^B_!4-BMft!DbK*Q2Obv+bkrKOpfAn<)pN3m#TA?@eqlSB?V zXU{L_NRm=1tC!lWzE+E(`T0mkttR!IvhkMj7Z$Eu$)1;$*XweQV`*>RtoVnalzm@z zLoS!KPm(m9n7D8uO_N0GWh4`3#g)qJ?9|lQSVf1_$8oiK>ePu7qobyO-!H6(dB0|T zrUz-ivEH_`^-oM><4L{i?%Gu-nCD-6P3CICjAz!8z0bu(DHnB^{U!4n8=IP%oz3Pa zHD(ve^OZ`WaR2?C{yO``tglp(uSLT6N0IqRtEe->j-6G$hy=FQ%I5Z^VN}XA~=gHhn z*>%fhnL%fK8LPj4-#$|>d$9BOMRJQerl;rTI`y&#HkQpEa9#7w%3oF)McVtm>&lP9 zxUTWftg;;=?|+vL$I0d=PYn%?kIPlwdMBi;f1t+7r|*5zdOdADpSG6uPt^Ri*%y6( z^WJK5?~UNDKEJtk{_+0e)!@N=*Pd;?&i>u~4;(5)^R1=yWqn-K$1D1%>El&>cn6{| z*4JM=MauhbxgEEUwNJKBggxyj{D1p+<9aH?*Ke4SZ~m*z5JL=H~6-B=e~P8 zO7`{c>xT=?K6jzVimcV{#z*O^cMg1hp#1vz4~oq`wP2}Wx$*Dx>zj|Z-cG-0yq(Vf z{l>n+A9i~G`;)%ASlH=(v!mJFU;s_xLrMU-^$B%@IHV0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R*;G zz~0i)7z_af5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009Ix6X@D3Ne%%75I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009KHR3NvdqcIo)2q1s}0tg_000IagfB*srAb. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc2/rom_1Mb.gb". + +[labels] +01:48c6 clear_vram +01:4885 disable_lcd_safe +01:488b disable_lcd_safe@wait_ly_0 +01:48da memcpy +01:48e3 memset +01:48a3 print_hex4 +01:48d0 print_hex8 +01:48f3 print_inline_string +01:48af print_load_font +01:48bb print_newline +01:48ec print_string +01:47f1 quit +01:4806 quit@cb_return +01:480b quit@wait_ly_1 +01:4811 quit@wait_ly_2 +01:4817 quit@wait_ly_3 +01:481d quit@wait_ly_4 +01:4827 quit@success +01:484e quit@failure +01:486d quit@halt +01:486e quit@halt_execution_0 +01:4871 reset_screen +01:4894 serial_send_byte +01:4001 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:01fa wram_functions_start +00:01fa run_test_suite +00:0207 run_test_suite@quit_inline_2 +00:0218 run_tests +00:0226 test_case +00:0257 restore_mbc2 +00:025c switch_bank +00:0262 fetch_expected_value +00:026b wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:0001 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000010 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000010 _sizeof_expected_banks +0000001e _sizeof_main +0000008c _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000000e _sizeof_run_tests +00000031 _sizeof_test_case +00000005 _sizeof_restore_mbc2 +00000006 _sizeof_switch_bank +00000009 _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_2Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_2Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcm$zz(DaTx58P+i41!F3D~W;%=}V`ZGUiAil*j0;94PBwKM zl7f>eiWC!QSM9=!1`J(v;ic)W#Zc6W1dBu^+lB-NO0y_wQAqz{TBq;mdLp+>7un3B z`3}4{bI-l+oqNA`pU`TuLZP@}Xyfpv(&jB&w{0KU@#z;UvZWJ+-~Q?R`M0-cTQ@wP zUCy>;+q2Tny+8P2HuB!v7e09Z{olQQ{?i-3e6aD|XP>?B)QeBu z|MX1lg{Pi>Av=9K+qfYsJeYlDWaMjEcQjkvd8<%(E?arGGn)NoXCW(;K6z^Dcw{5Lkn+1) z%PV^pSH6?aXj3s}w07&0`D$uUJeKXsmali`R}L($&ew03YkyhJ%giiZ?_Tb{dMnGi z3)d!w^Gla56dKL$<-G5i#qO(*+{&82xY=E}(@|KOS^V4TAG6Wr;p~ZAVe{Pb7i(i# zEdc@q2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjX*r$AxuuE_GZt2w9r|K}0U^zJC#i7YFXB0rJG-Tjf7olQsN zOQk(~CMK%YEnDjKxZ>>DD_5R*X4kI!?i(JC{%SRTXkhp5efxIrPUF*k<9kG@R4&Je zayjMWb109xS?wxyAM7v(^W!FE`_+l~LyH;y9qpwmK zA8+L`K3=IryHu)F;@+iFwHobuz112Ts#I#VxwZY@YqwgdMvR}B=yYah)BWe>n$6kS zVzJj>uSYv7r15ie|5-oo7e}u@eQz|1#q~9$JFl;|*G@vi!7f8~{!Yl>7at)=%o7Z##Do=4hWF|T9CPMtb;t~bBv zNxLwvpPCvQyXT(u`>pSnw7$v7cv~Wpf3un1ouQ$aZ9Lz#Yd3G+n)=J-|9*dCR7AR8 z@4ZX8IM?gNVxuuVedI{ALMHa_%*>fH(T+&(bXtEgk4B@_>WxotOuPlX{adM&%afDk zJkr%!cKGn|>uvA6GVuD##U?!A$v(#4Ch^6~MBiGv3Z9EkC8 z-xSF=a_7&VJ{{`uJ>r1}4jqbzo?2;!z2_6TGiPRITCLcr&1STZ9Esf$?_hDw^uU2b zhoWxurPWs|G56Fim+SSI!Fv6uwQt|O_on{XgX@1^BDavo>C@-WulL6uxVxS9K)IaW z+4##ERbqU#S}wk7(yVP*WK0yzz&X z*E%cDbylwDKT-3O<fwAVL zl`EYW^W&xb_pt4p*=;ud*?nZ`%}$h` zyO}D#^{eG>p|Q{{UjKSbxAw{M2Rm+WnJm7!>CJ;<%cJG_orPv$b<@(jotHn@`{%v& z*PeZ6e0emRFJ!grOTX{@^{t0ie%ASD>1UlwKfihJ*q63e{{F4}+e>3xEC1NC;o8ly z$|t{G`LOebU!(b)|0o(xfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjURC=RrmVgv{fAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!89$fernV zas&tvAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!CtN1%?J%O)&xl2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkLHpTNd`NjU-p z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkKcpaR1Kt)>_O0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly&`)4fzoZ-i0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyFi?TgK&vT6fB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72=o)!+%G9dfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72n. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc2/rom_2Mb.gb". + +[labels] +01:48c6 clear_vram +01:4885 disable_lcd_safe +01:488b disable_lcd_safe@wait_ly_0 +01:48da memcpy +01:48e3 memset +01:48a3 print_hex4 +01:48d0 print_hex8 +01:48f3 print_inline_string +01:48af print_load_font +01:48bb print_newline +01:48ec print_string +01:47f1 quit +01:4806 quit@cb_return +01:480b quit@wait_ly_1 +01:4811 quit@wait_ly_2 +01:4817 quit@wait_ly_3 +01:481d quit@wait_ly_4 +01:4827 quit@success +01:484e quit@failure +01:486d quit@halt +01:486e quit@halt_execution_0 +01:4871 reset_screen +01:4894 serial_send_byte +01:4001 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:01fa wram_functions_start +00:01fa run_test_suite +00:0207 run_test_suite@quit_inline_2 +00:0218 run_tests +00:0226 test_case +00:0257 restore_mbc2 +00:025c switch_bank +00:0262 fetch_expected_value +00:026b wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:0001 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000010 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000010 _sizeof_expected_banks +0000001e _sizeof_main +0000008c _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000000e _sizeof_run_tests +00000031 _sizeof_test_case +00000005 _sizeof_restore_mbc2 +00000006 _sizeof_switch_bank +00000009 _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xclXV@Fs1s_#M22K`8R8nEq%q(Uro-$wStpumun8?8g|NZsr7@y~ zXxDYuAhf6UkVAz)4<2$1y|o0&wo4_8Zt+@C7%25nY+14Y3~lWD?aR2^Vh>(C)b9^w zcHaBFd4E3hCge0slH?}Va6Earf|W+4Z-1JZxwW0OG@WA$td(tNN?X?lAF>^HZ_VDn zckjDvtE;D`XLmffb?@%APglPEYqZBY$k@%`qdL8Xg()SY_3(E-V{uyxQ#J zvClk^PN$i+lPU&k6$hz;x8pT#>ex}^*!Uan&eL009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafJg0z^YY4`pp_oJY|K~x^v@w*; zU`$b{KEb0gPc_-BIH+DxIy(~yU2kr-EV^TAYH{)O>Gt-$d!tdx>pFdCprfO^yQ4$2 z7yZ&Tg`%h`wNO=2Prnf!R8RSy9$mL>UGM3k5(Q1rw&^U&;W@m6%9a(@)_+BNSr&a8 zhT~99(@fLlVVasoWku06>RVBCoywNwx{-*c8Ah(Q|HHEDiZQ5tBH{bltmr?NbDV5e zmczVdQJF>%?Q^+*j!*s35$46UZOd|f4Wj4zdc(31ibgeUYD&|DH_e%5DrQS1k)t+L zN+vyz*29>%n^x#~OG}H3laq#_>lzQ!6tkfA^YflZ2c5(F^E^B+nGExk4fENo5*U5{^uc)ntNq6cc_WOfm5RrA?W*@z-!Ec)$t1lk z6vE$e#JdxT&}`}X*6!W5twrQj_22I=wW1LHh3}oHqqAknvTdi+gM(Be8QQ;@%;Y4M zDa1Q1)-Ut0ZPyLki#LYef^h$8nyMy~Di3itV*>*tBc3-f5Q&J@B$MQ0nv|!#y~$a7 zzo{I)k%}@mM=LkYM53>+x0l*ezaoS$)y>RIOprQVQ|#a0-%k%+l*A0f=R?4Sl!*bcZ)pj!TR49sw?oA zn3$QV=V=c#mc<@WRq@W!Usf80+UvTi(nn!bRrrTi;f|r_-^xQ#!uio%{rw{&^h-~@ z9#rNZsF9-nH$POa`jxYOWrcsD=96;Fd2(~3>TP^vtn>57we!>Ki_6BIXw!}@?MmnN z?pOE6o%zb5e}Nwt`SCtKvi!Kj53S3wUHZ&tpsjxC^#A%vD*U2{xdjSy5ZCC zxivBJ%`eM=WETQ?<#n2_@wj|{=SFius#!BgX|JR!bE7$#prR)CuXKTCTue4~tzs0XE##^*Mnwyr_;@ab{Di8c`@HLv} z{6`VZApijgKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG|gg$l?obTkYG0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izzz_SFJo>hrD2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z I1YW4X-!N<^^8f$< literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/test.sym new file mode 100644 index 000000000..2284ef56f --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc2/rom_512kb/test.sym @@ -0,0 +1,79 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc2/rom_512kb.gb". + +[labels] +01:48c6 clear_vram +01:4885 disable_lcd_safe +01:488b disable_lcd_safe@wait_ly_0 +01:48da memcpy +01:48e3 memset +01:48a3 print_hex4 +01:48d0 print_hex8 +01:48f3 print_inline_string +01:48af print_load_font +01:48bb print_newline +01:48ec print_string +01:47f1 quit +01:4806 quit@cb_return +01:480b quit@wait_ly_1 +01:4811 quit@wait_ly_2 +01:4817 quit@wait_ly_3 +01:481d quit@wait_ly_4 +01:4827 quit@success +01:484e quit@failure +01:486d quit@halt +01:486e quit@halt_execution_0 +01:4871 reset_screen +01:4894 serial_send_byte +01:4001 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:01fa wram_functions_start +00:01fa run_test_suite +00:0207 run_test_suite@quit_inline_2 +00:0218 run_tests +00:0226 test_case +00:0257 restore_mbc2 +00:025c switch_bank +00:0262 fetch_expected_value +00:026b wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff81 hram.actual_value +00:ff82 hram.expected_value +00:ff83 hram.lower_upper +00:0001 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000010 _sizeof_wram.expected_banks +00000001 _sizeof_hram.bank_number +00000001 _sizeof_hram.actual_value +00000001 _sizeof_hram.expected_value +00000001 _sizeof_hram.lower_upper +00000010 _sizeof_expected_banks +0000001e _sizeof_main +0000008c _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000000e _sizeof_run_tests +00000031 _sizeof_test_case +00000005 _sizeof_restore_mbc2 +00000006 _sizeof_switch_bank +00000009 _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_16Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_16Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 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. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_16Mb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_1Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_1Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcu8m%PbcGAX=EHrJw?ZAZ?m@7iD|503uO64WGimp zkVLdd=WxB+%@4sF;DwQ>6sd12MZ5~-6;&!^IJM-I9DA z>NB~<7gRE!HhO!k%nw!T{dhqAy!XdeMp^p0p*H?9@QqC4&y%gc#$Fs$g6B854c}gnAwkn>J3f)fEgq7#dde6^&DI7oVsrFjy*KvDQ zpGRJmD96xm1#*y@|q-HGs(WN**dz>`i>r8pCtp_>SSo6K{mQ2D9yLu(YklKRax=M}+<2_ix#YFS z8I@dnYbd85+qjhRgXHFuc5iH~B-g9bEZAxmB-bX}*WdQC?HfP2XIf`6sB)qdaiy}fG&eUjRnZ~&FkDA#vDq}Ta`ZIG$*K=)6%0(S!f62I} zrsn3BmeTP_#_U45zfvg_o_@OXyv}|x^DC9)ZILkkL15mUY*t1q>$`PtPtO69x9$IZ zf2Ea#d0zV7nL0U_%a-N)6BDOSNl9d6|1K^rEJ#_xywhg>mJZ(!!?eA5W8^JJ_pjsF zcBy3RFn238Ha0ySMPp;xteH)zBtFHWakB^Q@ zzmhYvcN`hJDcg3rEFAawji)V0+o@0oyk3to&t_ zUZlP2+P3^EjBOkL)GFOEvi=8k1p|tRquq9^)J+9y5o0$*SZ>&qWKH2Ap_g`nE{e!QZOtNQq+ zK5F`SMIX+wzz_B3|2+lD`S+b9Oim|flQVvA68Qg0CL6zqrTh9l)ARkGHj|9MmRNVb zD8uzWZa#WybAQQtulv1`LUX`g?X`kTySwpz{K}(ae>_&carsw8{qr!Z8Rgw+{5JmE z{pVV5#(!$O8CT!Bcck#y1I|CbqOYzN4mkhZ-*x+5!TI=St&ie&n|t6tcT5oh1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0-A#|l_##}1u=BY*$`2q1s}0tg_000IagfB*srAb. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_1Mb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 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 literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/test.sym new file mode 100644 index 000000000..668fe31ae --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_2Mb/test.sym @@ -0,0 +1,91 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_2Mb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_32Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_32Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 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. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_32Mb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_4Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_4Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 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. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_4Mb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xc0ZR%k8A?eHelasf$vbw61Y?jrttxRcXdGjr{?ar;K)w_4U zIe+!)v5Bc|Kis-|=lq4MSN55&o;Wdebmr)uV+rHb(UYgx=qPKFn6!`WsQuu1=C!h1 zLyatb$cne!R`z+r$Fjs^ew}BzUs_+6@;~<#e|3j@Um7;zvHpQxhZV26rG-mI1FsHs z^4JsF7mvr8ww)@v%N6^ng16%}cI@yWZ-_NWuW3?b^ii^2rZ^4`M<{vUP=$(5gF>m&AxSBsUKP8!#x3J#s zLT<*JOHwnd+|2T3`$}_Hj6iArlNHfgl30E*H*=2}$=}!RvCaaAtf^@qO!pNS{+=Jfn z#!%LSF-4*JFprISs!659LG_B#+#C+;dTnhqN_UKpFD@QG-q^T%cXc)8b)CLnpsA^? zt*J@07tf_@3Pn*>YN4v4o<0LSsGjoe?YeH7y58PSB?=m#Y0_Dg{j+}um7`I=w(=?3 z%d&X3VOSRBG%Xaed4ximMrB3OG5XOE7JX3raM*QIDe?St z+Okq9S@!eMD3z%P(LSC2cmMQ!I{du2HceTs%t1W4GGD(egsQ7GZG2qQgg1?mMk+>2 zC6S{xREk6#hvvhWxSM9^I7>^5i(_Mkq3artP)Lk|+9#8aLkFGx`!hToClc}Vl=bte zlw~E87LQbl@|Cjirv5XTr6vDDu;N8^+n_A?;jbNnDEC(8LgXJe%Cc$3<2^l8A{ko0 ziNx3#l_|uY7W0>Rn5J#}?Zu9vUEr@@O;goKMCBpwW~{q=V8C&@y8{6+n@EIwLLti2 z+Fs`@?{6ymJ5o`mr)lP)P&nM#+0jAm>A50=FV#&>j*gN#T~qAc+to!cU6jNK{r5w4 zV`GVgZPQA%EGqZ(&}yMQD3?t;I=Z^3U&@KuYZ{GRlvOnvr4dy6r@q?ScI^^*T7#9J zFI1Q1F*-UqS;^BH*jN^8Kvl(_rJtWL00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf QKmY;|fB*y_@Z<{o1F5eWk^lez literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/test.sym new file mode 100644 index 000000000..b8425b934 --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_512kb/test.sym @@ -0,0 +1,91 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_512kb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_64Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_64Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 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 z. +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_64Mb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 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 E0pQffApigX literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/test.sym b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/test.sym new file mode 100644 index 000000000..90bfd8d9f --- /dev/null +++ b/cinema/gb/mooneye-gb/emulator-only/mbc5/rom_8Mb/test.sym @@ -0,0 +1,91 @@ +; this file was created with wlalink by ville helin . +; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc5/rom_8Mb.gb". + +[labels] +01:48c7 clear_vram +01:4886 disable_lcd_safe +01:488c disable_lcd_safe@wait_ly_0 +01:48db memcpy +01:48e4 memset +01:48a4 print_hex4 +01:48d1 print_hex8 +01:48f4 print_inline_string +01:48b0 print_load_font +01:48bc print_newline +01:48ed print_string +01:47f2 quit +01:4807 quit@cb_return +01:480c quit@wait_ly_1 +01:4812 quit@wait_ly_2 +01:4818 quit@wait_ly_3 +01:481e quit@wait_ly_4 +01:4828 quit@success +01:484f quit@failure +01:486e quit@halt +01:486f quit@halt_execution_0 +01:4872 reset_screen +01:4895 serial_send_byte +01:4002 font +00:0150 main +00:016e fail +00:0175 fail@quit_inline_1 +00:0209 wram_functions_start +00:0209 run_test_suite +00:0216 run_test_suite@quit_inline_2 +00:0227 run_tests +00:0245 test_case +00:0297 restore_mbc5 +00:029d switch_bank +00:02a8 fetch_expected_value +00:02b2 wram_functions_end +00:c000 wram.functions +00:c200 wram.expected_banks +00:ff80 hram.bank_number +00:ff80 hram.bank_number_l +00:ff81 hram.bank_number_h +00:ff82 hram.actual_value +00:ff82 hram.actual_value_l +00:ff83 hram.actual_value_h +00:ff84 hram.expected_value +00:ff84 hram.expected_value_l +00:ff85 hram.expected_value_h +00:ff86 hram.lower_upper +00:02b2 expected_banks + +[definitions] +0000000a _sizeof_clear_vram +0000000f _sizeof_disable_lcd_safe +00000009 _sizeof_memcpy +00000009 _sizeof_memset +0000000c _sizeof_print_hex4 +0000000a _sizeof_print_hex8 +00000006 _sizeof_print_inline_string +0000000c _sizeof_print_load_font +0000000b _sizeof_print_newline +00000007 _sizeof_print_string +00000080 _sizeof_quit +00000014 _sizeof_reset_screen +0000000f _sizeof_serial_send_byte +000007f0 _sizeof_font +00000200 _sizeof_wram.functions +00000200 _sizeof_wram.expected_banks +00000002 _sizeof_hram.bank_number +00000001 _sizeof_hram.bank_number_l +00000001 _sizeof_hram.bank_number_h +00000002 _sizeof_hram.actual_value +00000001 _sizeof_hram.actual_value_l +00000001 _sizeof_hram.actual_value_h +00000002 _sizeof_hram.expected_value +00000001 _sizeof_hram.expected_value_l +00000001 _sizeof_hram.expected_value_h +00000001 _sizeof_hram.lower_upper +00000400 _sizeof_expected_banks +0000001e _sizeof_main +0000009b _sizeof_fail +00000000 _sizeof_wram_functions_start +0000001e _sizeof_run_test_suite +0000001e _sizeof_run_tests +00000052 _sizeof_test_case +00000006 _sizeof_restore_mbc5 +0000000b _sizeof_switch_bank +0000000a _sizeof_fetch_expected_value diff --git a/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/test.gb b/cinema/gb/mooneye-gb/madness/mgb_oam_dma_halt_sprites/test.gb index e6393560ebadcda7fbfbc14e257185054f8e1047..b1f4eec688400f6a42db9785e0b90158a871af38 100644 GIT binary patch delta 52 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 diff --git a/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/test.sym b/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/test.sym index a4dce82de..14b866db8 100644 --- a/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/test.sym +++ b/cinema/gb/mooneye-gb/misc/bits/unused_hwio-C/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/misc/bits/unused_hwio-C.gb". [labels] -01:48bb clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48cf memcpy -01:48d8 memset -01:4898 print_hex4 -01:48c5 print_hex8 -01:48e8 print_inline_string -01:48a4 print_load_font -01:48b0 print_newline -01:48e1 print_string +01:48c5 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48d9 memcpy +01:48e2 memset +01:48a2 print_hex4 +01:48cf print_hex8 +01:48f2 print_inline_string +01:48ae print_load_font +01:48ba print_newline +01:48eb print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -21,330 +21,330 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main -00:0161 _test_data_0 -00:0177 _finish_0 -00:0187 _test_data_1 -00:019d _finish_1 -00:01ad _test_data_2 -00:01c3 _finish_2 -00:01d3 _test_data_3 -00:01e9 _finish_3 -00:01f9 _test_data_4 -00:020f _finish_4 -00:021f _test_data_5 -00:0235 _finish_5 -00:0245 _test_data_6 -00:025b _finish_6 -00:026b _test_data_7 -00:0281 _finish_7 -00:0291 _test_data_8 -00:02a7 _finish_8 -00:02b7 _test_data_9 -00:02cd _finish_9 -00:02dd _test_data_10 -00:02f3 _finish_10 -00:0303 _test_data_11 -00:0319 _finish_11 -00:0329 _test_data_12 -00:033f _finish_12 -00:034f _test_data_13 -00:0365 _finish_13 -00:0375 _test_data_14 -00:038b _finish_14 -00:039b _test_data_15 -00:03b1 _finish_15 -00:03c1 _test_data_16 -00:03d7 _finish_16 -00:03e7 _test_data_17 -00:03fd _finish_17 -00:040d _test_data_18 -00:0423 _finish_18 -00:0433 _test_data_19 -00:0449 _finish_19 -00:0459 _test_data_20 -00:046f _finish_20 -00:047f _test_data_21 -00:0495 _finish_21 -00:04a5 _test_data_22 -00:04bb _finish_22 -00:04cb _test_data_23 -00:04e1 _finish_23 -00:04f1 _test_data_24 -00:0507 _finish_24 -00:0517 _test_data_25 -00:052d _finish_25 -00:053d _test_data_26 -00:0553 _finish_26 -00:0563 _test_data_27 -00:0579 _finish_27 -00:0589 _test_data_28 -00:059f _finish_28 -00:05af _test_data_29 -00:05c5 _finish_29 -00:05d5 _test_data_30 -00:05eb _finish_30 -00:05fb _test_data_31 -00:0611 _finish_31 -00:0621 _test_data_32 -00:0637 _finish_32 -00:0647 _test_data_33 -00:065d _finish_33 -00:066d _test_data_34 -00:0683 _finish_34 -00:0693 _test_data_35 -00:06a9 _finish_35 -00:06b9 _test_data_36 -00:06cf _finish_36 -00:06df _test_data_37 -00:06f5 _finish_37 -00:0705 _test_data_38 -00:071b _finish_38 -00:072b _test_data_39 -00:0741 _finish_39 -00:0751 _test_data_40 -00:0767 _finish_40 -00:0777 _test_data_41 -00:078d _finish_41 -00:079d _test_data_42 -00:07b3 _finish_42 -00:07c3 _test_data_43 -00:07d9 _finish_43 -00:07e9 _test_data_44 -00:07ff _finish_44 -00:080f _test_data_45 -00:0825 _finish_45 -00:0835 _test_data_46 -00:084b _finish_46 -00:085b _test_data_47 -00:0871 _finish_47 -00:0881 _test_data_48 -00:0897 _finish_48 -00:08a7 _test_data_49 -00:08bd _finish_49 -00:08cd _test_data_50 -00:08e3 _finish_50 -00:08f3 _test_data_51 -00:0909 _finish_51 -00:0919 _test_data_52 -00:092f _finish_52 -00:093f _test_data_53 -00:0955 _finish_53 -00:0965 _test_data_54 -00:097b _finish_54 -00:098b _test_data_55 -00:09a1 _finish_55 -00:09b1 _test_data_56 -00:09c7 _finish_56 -00:09d7 _test_data_57 -00:09ed _finish_57 -00:09fd _test_data_58 -00:0a13 _finish_58 -00:0a23 _test_data_59 -00:0a39 _finish_59 -00:0a49 _test_data_60 -00:0a5f _finish_60 -00:0a6f _test_data_61 -00:0a85 _finish_61 -00:0a95 _test_data_62 -00:0aab _finish_62 -00:0abb _test_data_63 -00:0ad1 _finish_63 -00:0ae1 _test_data_64 -00:0af7 _finish_64 -00:0b07 _test_data_65 -00:0b1d _finish_65 -00:0b2d _test_data_66 -00:0b43 _finish_66 -00:0b53 _test_data_67 -00:0b69 _finish_67 -00:0b79 _test_data_68 -00:0b8f _finish_68 -00:0b9f _test_data_69 -00:0bb5 _finish_69 -00:0bc5 _test_data_70 -00:0bdb _finish_70 -00:0beb _test_data_71 -00:0c01 _finish_71 -00:0c11 _test_data_72 -00:0c27 _finish_72 -00:0c37 _test_data_73 -00:0c4d _finish_73 -00:0c5d _test_data_74 -00:0c73 _finish_74 -00:0c83 _test_data_75 -00:0c99 _finish_75 -00:0ca9 _test_data_76 -00:0cbf _finish_76 -00:0ccf _test_data_77 -00:0ce5 _finish_77 -00:0cf5 _test_data_78 -00:0d0b _finish_78 -00:0d1b _test_data_79 -00:0d31 _finish_79 -00:0d41 _test_data_80 -00:0d57 _finish_80 -00:0d67 _test_data_81 -00:0d7d _finish_81 -00:0d8d _test_data_82 -00:0da3 _finish_82 -00:0db3 _test_data_83 -00:0dc9 _finish_83 -00:0dd9 _test_data_84 -00:0def _finish_84 -00:0dff _test_data_85 -00:0e15 _finish_85 -00:0e25 _test_data_86 -00:0e3b _finish_86 -00:0e4b _test_data_87 -00:0e61 _finish_87 -00:0e71 _test_data_88 -00:0e87 _finish_88 -00:0e97 _test_data_89 -00:0ead _finish_89 -00:0ebd _test_data_90 -00:0ed3 _finish_90 -00:0ee3 _test_data_91 -00:0ef9 _finish_91 -00:0f09 _test_data_92 -00:0f1f _finish_92 -00:0f2f _test_data_93 -00:0f45 _finish_93 -00:0f55 _test_data_94 -00:0f6b _finish_94 -00:0f7b _test_data_95 -00:0f91 _finish_95 -00:0fa1 _test_data_96 -00:0fb7 _finish_96 -00:0fc7 _test_data_97 -00:0fdd _finish_97 -00:0fed _test_data_98 -00:1003 _finish_98 -00:1013 _test_data_99 -00:1029 _finish_99 -00:1039 _test_data_100 -00:104f _finish_100 -00:105f _test_data_101 -00:1075 _finish_101 -00:1085 _test_data_102 -00:109b _finish_102 -00:10ab _test_data_103 -00:10c1 _finish_103 -00:10d1 _test_data_104 -00:10e7 _finish_104 -00:10f7 _test_data_105 -00:110d _finish_105 -00:111d _test_data_106 -00:1133 _finish_106 -00:1143 _test_data_107 -00:1159 _finish_107 -00:1169 _test_data_108 -00:117f _finish_108 -00:118f _test_data_109 -00:11a5 _finish_109 -00:11b5 _test_data_110 -00:11cb _finish_110 -00:11db _test_data_111 -00:11f1 _finish_111 -00:1201 _test_data_112 -00:1217 _finish_112 -00:1227 _test_data_113 -00:123d _finish_113 -00:124d _test_data_114 -00:1263 _finish_114 -00:1273 _test_data_115 -00:1289 _finish_115 -00:1299 _test_data_116 -00:12af _finish_116 -00:12bf _test_data_117 -00:12d5 _finish_117 -00:12e5 _test_data_118 -00:12fb _finish_118 -00:130b _test_data_119 -00:1321 _finish_119 -00:1331 _test_data_120 -00:1347 _finish_120 -00:1357 _test_data_121 -00:136d _finish_121 -00:137d _test_data_122 -00:1393 _finish_122 -00:13a3 _test_data_123 -00:13b9 _finish_123 -00:13c9 _test_data_124 -00:13df _finish_124 -00:13ef _test_data_125 -00:1405 _finish_125 -00:1415 _test_data_126 -00:142b _finish_126 -00:143b _test_data_127 -00:1451 _finish_127 -00:1461 _test_data_128 -00:1477 _finish_128 -00:1487 _test_data_129 -00:149d _finish_129 -00:14ad _test_data_130 -00:14c3 _finish_130 -00:14d3 _test_data_131 -00:14e9 _finish_131 -00:14f9 _test_data_132 -00:150f _finish_132 -00:151f _test_data_133 -00:1535 _finish_133 -00:1545 _test_data_134 -00:155b _finish_134 -00:156b _test_data_135 -00:1581 _finish_135 -00:1591 _test_data_136 -00:15a7 _finish_136 -00:15b7 _test_data_137 -00:15cd _finish_137 -00:15dd _test_data_138 -00:15f3 _finish_138 -00:1603 _test_data_139 -00:1619 _finish_139 -00:1629 _test_data_140 -00:163f _finish_140 -00:164f _test_data_141 -00:1665 _finish_141 -00:1675 _test_data_142 -00:168b _finish_142 -00:169b _test_data_143 -00:16b1 _finish_143 -00:16c1 _test_data_144 -00:16d7 _finish_144 -00:16e7 _test_data_145 -00:16fd _finish_145 -00:170d _test_data_146 -00:1723 _finish_146 -00:1733 _test_data_147 -00:1749 _finish_147 -00:1759 _test_data_148 -00:176f _finish_148 -00:177f _test_data_149 -00:1795 _finish_149 -00:17a5 _test_data_150 -00:17bb _finish_150 -00:17cb _test_data_151 -00:17e1 _finish_151 -00:17f1 _test_data_152 -00:1807 _finish_152 -00:1817 _test_data_153 -00:182d _finish_153 -00:1834 _finish_153@quit_inline_1 -00:1845 run_testcase -00:1863 run_testcase@quit_inline_2 -00:18e6 fetch_test_data -00:1900 print_got -00:1912 _print_zero -00:1916 _print_one -00:1918 _print_bit -00:1921 _skip -00:1922 _next +00:0164 _test_data_0 +00:017a _finish_0 +00:018d _test_data_1 +00:01a3 _finish_1 +00:01b6 _test_data_2 +00:01cc _finish_2 +00:01df _test_data_3 +00:01f5 _finish_3 +00:0208 _test_data_4 +00:021e _finish_4 +00:0231 _test_data_5 +00:0247 _finish_5 +00:025a _test_data_6 +00:0270 _finish_6 +00:0283 _test_data_7 +00:0299 _finish_7 +00:02ac _test_data_8 +00:02c2 _finish_8 +00:02d5 _test_data_9 +00:02eb _finish_9 +00:02fe _test_data_10 +00:0314 _finish_10 +00:0327 _test_data_11 +00:033d _finish_11 +00:0350 _test_data_12 +00:0366 _finish_12 +00:0379 _test_data_13 +00:038f _finish_13 +00:03a2 _test_data_14 +00:03b8 _finish_14 +00:03cb _test_data_15 +00:03e1 _finish_15 +00:03f4 _test_data_16 +00:040a _finish_16 +00:041d _test_data_17 +00:0433 _finish_17 +00:0446 _test_data_18 +00:045c _finish_18 +00:046f _test_data_19 +00:0485 _finish_19 +00:0498 _test_data_20 +00:04ae _finish_20 +00:04c1 _test_data_21 +00:04d7 _finish_21 +00:04ea _test_data_22 +00:0500 _finish_22 +00:0513 _test_data_23 +00:0529 _finish_23 +00:053c _test_data_24 +00:0552 _finish_24 +00:0565 _test_data_25 +00:057b _finish_25 +00:058e _test_data_26 +00:05a4 _finish_26 +00:05b7 _test_data_27 +00:05cd _finish_27 +00:05e0 _test_data_28 +00:05f6 _finish_28 +00:0609 _test_data_29 +00:061f _finish_29 +00:0632 _test_data_30 +00:0648 _finish_30 +00:065b _test_data_31 +00:0671 _finish_31 +00:0684 _test_data_32 +00:069a _finish_32 +00:06ad _test_data_33 +00:06c3 _finish_33 +00:06d6 _test_data_34 +00:06ec _finish_34 +00:06ff _test_data_35 +00:0715 _finish_35 +00:0728 _test_data_36 +00:073e _finish_36 +00:0751 _test_data_37 +00:0767 _finish_37 +00:077a _test_data_38 +00:0790 _finish_38 +00:07a3 _test_data_39 +00:07b9 _finish_39 +00:07cc _test_data_40 +00:07e2 _finish_40 +00:07f5 _test_data_41 +00:080b _finish_41 +00:081e _test_data_42 +00:0834 _finish_42 +00:0847 _test_data_43 +00:085d _finish_43 +00:0870 _test_data_44 +00:0886 _finish_44 +00:0899 _test_data_45 +00:08af _finish_45 +00:08c2 _test_data_46 +00:08d8 _finish_46 +00:08eb _test_data_47 +00:0901 _finish_47 +00:0914 _test_data_48 +00:092a _finish_48 +00:093d _test_data_49 +00:0953 _finish_49 +00:0966 _test_data_50 +00:097c _finish_50 +00:098f _test_data_51 +00:09a5 _finish_51 +00:09b8 _test_data_52 +00:09ce _finish_52 +00:09e1 _test_data_53 +00:09f7 _finish_53 +00:0a0a _test_data_54 +00:0a20 _finish_54 +00:0a33 _test_data_55 +00:0a49 _finish_55 +00:0a5c _test_data_56 +00:0a72 _finish_56 +00:0a85 _test_data_57 +00:0a9b _finish_57 +00:0aae _test_data_58 +00:0ac4 _finish_58 +00:0ad7 _test_data_59 +00:0aed _finish_59 +00:0b00 _test_data_60 +00:0b16 _finish_60 +00:0b29 _test_data_61 +00:0b3f _finish_61 +00:0b52 _test_data_62 +00:0b68 _finish_62 +00:0b7b _test_data_63 +00:0b91 _finish_63 +00:0ba4 _test_data_64 +00:0bba _finish_64 +00:0bcd _test_data_65 +00:0be3 _finish_65 +00:0bf6 _test_data_66 +00:0c0c _finish_66 +00:0c1f _test_data_67 +00:0c35 _finish_67 +00:0c48 _test_data_68 +00:0c5e _finish_68 +00:0c71 _test_data_69 +00:0c87 _finish_69 +00:0c9a _test_data_70 +00:0cb0 _finish_70 +00:0cc3 _test_data_71 +00:0cd9 _finish_71 +00:0cec _test_data_72 +00:0d02 _finish_72 +00:0d15 _test_data_73 +00:0d2b _finish_73 +00:0d3e _test_data_74 +00:0d54 _finish_74 +00:0d67 _test_data_75 +00:0d7d _finish_75 +00:0d90 _test_data_76 +00:0da6 _finish_76 +00:0db9 _test_data_77 +00:0dcf _finish_77 +00:0de2 _test_data_78 +00:0df8 _finish_78 +00:0e0b _test_data_79 +00:0e21 _finish_79 +00:0e34 _test_data_80 +00:0e4a _finish_80 +00:0e5d _test_data_81 +00:0e73 _finish_81 +00:0e86 _test_data_82 +00:0e9c _finish_82 +00:0eaf _test_data_83 +00:0ec5 _finish_83 +00:0ed8 _test_data_84 +00:0eee _finish_84 +00:0f01 _test_data_85 +00:0f17 _finish_85 +00:0f2a _test_data_86 +00:0f40 _finish_86 +00:0f53 _test_data_87 +00:0f69 _finish_87 +00:0f7c _test_data_88 +00:0f92 _finish_88 +00:0fa5 _test_data_89 +00:0fbb _finish_89 +00:0fce _test_data_90 +00:0fe4 _finish_90 +00:0ff7 _test_data_91 +00:100d _finish_91 +00:1020 _test_data_92 +00:1036 _finish_92 +00:1049 _test_data_93 +00:105f _finish_93 +00:1072 _test_data_94 +00:1088 _finish_94 +00:109b _test_data_95 +00:10b1 _finish_95 +00:10c4 _test_data_96 +00:10da _finish_96 +00:10ed _test_data_97 +00:1103 _finish_97 +00:1116 _test_data_98 +00:112c _finish_98 +00:113f _test_data_99 +00:1155 _finish_99 +00:1168 _test_data_100 +00:117e _finish_100 +00:1191 _test_data_101 +00:11a7 _finish_101 +00:11ba _test_data_102 +00:11d0 _finish_102 +00:11e3 _test_data_103 +00:11f9 _finish_103 +00:120c _test_data_104 +00:1222 _finish_104 +00:1235 _test_data_105 +00:124b _finish_105 +00:125e _test_data_106 +00:1274 _finish_106 +00:1287 _test_data_107 +00:129d _finish_107 +00:12b0 _test_data_108 +00:12c6 _finish_108 +00:12d9 _test_data_109 +00:12ef _finish_109 +00:1302 _test_data_110 +00:1318 _finish_110 +00:132b _test_data_111 +00:1341 _finish_111 +00:1354 _test_data_112 +00:136a _finish_112 +00:137d _test_data_113 +00:1393 _finish_113 +00:13a6 _test_data_114 +00:13bc _finish_114 +00:13cf _test_data_115 +00:13e5 _finish_115 +00:13f8 _test_data_116 +00:140e _finish_116 +00:1421 _test_data_117 +00:1437 _finish_117 +00:144a _test_data_118 +00:1460 _finish_118 +00:1473 _test_data_119 +00:1489 _finish_119 +00:149c _test_data_120 +00:14b2 _finish_120 +00:14c5 _test_data_121 +00:14db _finish_121 +00:14ee _test_data_122 +00:1504 _finish_122 +00:1517 _test_data_123 +00:152d _finish_123 +00:1540 _test_data_124 +00:1556 _finish_124 +00:1569 _test_data_125 +00:157f _finish_125 +00:1592 _test_data_126 +00:15a8 _finish_126 +00:15bb _test_data_127 +00:15d1 _finish_127 +00:15e4 _test_data_128 +00:15fa _finish_128 +00:160d _test_data_129 +00:1623 _finish_129 +00:1636 _test_data_130 +00:164c _finish_130 +00:165f _test_data_131 +00:1675 _finish_131 +00:1688 _test_data_132 +00:169e _finish_132 +00:16b1 _test_data_133 +00:16c7 _finish_133 +00:16da _test_data_134 +00:16f0 _finish_134 +00:1703 _test_data_135 +00:1719 _finish_135 +00:172c _test_data_136 +00:1742 _finish_136 +00:1755 _test_data_137 +00:176b _finish_137 +00:177e _test_data_138 +00:1794 _finish_138 +00:17a7 _test_data_139 +00:17bd _finish_139 +00:17d0 _test_data_140 +00:17e6 _finish_140 +00:17f9 _test_data_141 +00:180f _finish_141 +00:1822 _test_data_142 +00:1838 _finish_142 +00:184b _test_data_143 +00:1861 _finish_143 +00:1874 _test_data_144 +00:188a _finish_144 +00:189d _test_data_145 +00:18b3 _finish_145 +00:18c6 _test_data_146 +00:18dc _finish_146 +00:18ef _test_data_147 +00:1905 _finish_147 +00:1918 _test_data_148 +00:192e _finish_148 +00:1941 _test_data_149 +00:1957 _finish_149 +00:196a _test_data_150 +00:1980 _finish_150 +00:1993 _test_data_151 +00:19a9 _finish_151 +00:19bc _test_data_152 +00:19d2 _finish_152 +00:19e5 _test_data_153 +00:19fb _finish_153 +00:1a02 _finish_153@quit_inline_1 +00:1a13 run_testcase +00:1a31 run_testcase@quit_inline_2 +00:1ab4 fetch_test_data +00:1ace print_got +00:1ae0 _print_zero +00:1ae4 _print_one +00:1ae6 _print_bit +00:1aef _skip +00:1af0 _next 00:ff80 test_addr 00:ff82 test_got 00:ff83 test_reg @@ -363,7 +363,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font @@ -373,313 +373,313 @@ 00000001 _sizeof_test_mask 00000009 _sizeof_test_str_write 00000009 _sizeof_test_str_expect -00000011 _sizeof_main +00000014 _sizeof_main 00000016 _sizeof__test_data_0 -00000010 _sizeof__finish_0 +00000013 _sizeof__finish_0 00000016 _sizeof__test_data_1 -00000010 _sizeof__finish_1 +00000013 _sizeof__finish_1 00000016 _sizeof__test_data_2 -00000010 _sizeof__finish_2 +00000013 _sizeof__finish_2 00000016 _sizeof__test_data_3 -00000010 _sizeof__finish_3 +00000013 _sizeof__finish_3 00000016 _sizeof__test_data_4 -00000010 _sizeof__finish_4 +00000013 _sizeof__finish_4 00000016 _sizeof__test_data_5 -00000010 _sizeof__finish_5 +00000013 _sizeof__finish_5 00000016 _sizeof__test_data_6 -00000010 _sizeof__finish_6 +00000013 _sizeof__finish_6 00000016 _sizeof__test_data_7 -00000010 _sizeof__finish_7 +00000013 _sizeof__finish_7 00000016 _sizeof__test_data_8 -00000010 _sizeof__finish_8 +00000013 _sizeof__finish_8 00000016 _sizeof__test_data_9 -00000010 _sizeof__finish_9 +00000013 _sizeof__finish_9 00000016 _sizeof__test_data_10 -00000010 _sizeof__finish_10 +00000013 _sizeof__finish_10 00000016 _sizeof__test_data_11 -00000010 _sizeof__finish_11 +00000013 _sizeof__finish_11 00000016 _sizeof__test_data_12 -00000010 _sizeof__finish_12 +00000013 _sizeof__finish_12 00000016 _sizeof__test_data_13 -00000010 _sizeof__finish_13 +00000013 _sizeof__finish_13 00000016 _sizeof__test_data_14 -00000010 _sizeof__finish_14 +00000013 _sizeof__finish_14 00000016 _sizeof__test_data_15 -00000010 _sizeof__finish_15 +00000013 _sizeof__finish_15 00000016 _sizeof__test_data_16 -00000010 _sizeof__finish_16 +00000013 _sizeof__finish_16 00000016 _sizeof__test_data_17 -00000010 _sizeof__finish_17 +00000013 _sizeof__finish_17 00000016 _sizeof__test_data_18 -00000010 _sizeof__finish_18 +00000013 _sizeof__finish_18 00000016 _sizeof__test_data_19 -00000010 _sizeof__finish_19 +00000013 _sizeof__finish_19 00000016 _sizeof__test_data_20 -00000010 _sizeof__finish_20 +00000013 _sizeof__finish_20 00000016 _sizeof__test_data_21 -00000010 _sizeof__finish_21 +00000013 _sizeof__finish_21 00000016 _sizeof__test_data_22 -00000010 _sizeof__finish_22 +00000013 _sizeof__finish_22 00000016 _sizeof__test_data_23 -00000010 _sizeof__finish_23 +00000013 _sizeof__finish_23 00000016 _sizeof__test_data_24 -00000010 _sizeof__finish_24 +00000013 _sizeof__finish_24 00000016 _sizeof__test_data_25 -00000010 _sizeof__finish_25 +00000013 _sizeof__finish_25 00000016 _sizeof__test_data_26 -00000010 _sizeof__finish_26 +00000013 _sizeof__finish_26 00000016 _sizeof__test_data_27 -00000010 _sizeof__finish_27 +00000013 _sizeof__finish_27 00000016 _sizeof__test_data_28 -00000010 _sizeof__finish_28 +00000013 _sizeof__finish_28 00000016 _sizeof__test_data_29 -00000010 _sizeof__finish_29 +00000013 _sizeof__finish_29 00000016 _sizeof__test_data_30 -00000010 _sizeof__finish_30 +00000013 _sizeof__finish_30 00000016 _sizeof__test_data_31 -00000010 _sizeof__finish_31 +00000013 _sizeof__finish_31 00000016 _sizeof__test_data_32 -00000010 _sizeof__finish_32 +00000013 _sizeof__finish_32 00000016 _sizeof__test_data_33 -00000010 _sizeof__finish_33 +00000013 _sizeof__finish_33 00000016 _sizeof__test_data_34 -00000010 _sizeof__finish_34 +00000013 _sizeof__finish_34 00000016 _sizeof__test_data_35 -00000010 _sizeof__finish_35 +00000013 _sizeof__finish_35 00000016 _sizeof__test_data_36 -00000010 _sizeof__finish_36 +00000013 _sizeof__finish_36 00000016 _sizeof__test_data_37 -00000010 _sizeof__finish_37 +00000013 _sizeof__finish_37 00000016 _sizeof__test_data_38 -00000010 _sizeof__finish_38 +00000013 _sizeof__finish_38 00000016 _sizeof__test_data_39 -00000010 _sizeof__finish_39 +00000013 _sizeof__finish_39 00000016 _sizeof__test_data_40 -00000010 _sizeof__finish_40 +00000013 _sizeof__finish_40 00000016 _sizeof__test_data_41 -00000010 _sizeof__finish_41 +00000013 _sizeof__finish_41 00000016 _sizeof__test_data_42 -00000010 _sizeof__finish_42 +00000013 _sizeof__finish_42 00000016 _sizeof__test_data_43 -00000010 _sizeof__finish_43 +00000013 _sizeof__finish_43 00000016 _sizeof__test_data_44 -00000010 _sizeof__finish_44 +00000013 _sizeof__finish_44 00000016 _sizeof__test_data_45 -00000010 _sizeof__finish_45 +00000013 _sizeof__finish_45 00000016 _sizeof__test_data_46 -00000010 _sizeof__finish_46 +00000013 _sizeof__finish_46 00000016 _sizeof__test_data_47 -00000010 _sizeof__finish_47 +00000013 _sizeof__finish_47 00000016 _sizeof__test_data_48 -00000010 _sizeof__finish_48 +00000013 _sizeof__finish_48 00000016 _sizeof__test_data_49 -00000010 _sizeof__finish_49 +00000013 _sizeof__finish_49 00000016 _sizeof__test_data_50 -00000010 _sizeof__finish_50 +00000013 _sizeof__finish_50 00000016 _sizeof__test_data_51 -00000010 _sizeof__finish_51 +00000013 _sizeof__finish_51 00000016 _sizeof__test_data_52 -00000010 _sizeof__finish_52 +00000013 _sizeof__finish_52 00000016 _sizeof__test_data_53 -00000010 _sizeof__finish_53 +00000013 _sizeof__finish_53 00000016 _sizeof__test_data_54 -00000010 _sizeof__finish_54 +00000013 _sizeof__finish_54 00000016 _sizeof__test_data_55 -00000010 _sizeof__finish_55 +00000013 _sizeof__finish_55 00000016 _sizeof__test_data_56 -00000010 _sizeof__finish_56 +00000013 _sizeof__finish_56 00000016 _sizeof__test_data_57 -00000010 _sizeof__finish_57 +00000013 _sizeof__finish_57 00000016 _sizeof__test_data_58 -00000010 _sizeof__finish_58 +00000013 _sizeof__finish_58 00000016 _sizeof__test_data_59 -00000010 _sizeof__finish_59 +00000013 _sizeof__finish_59 00000016 _sizeof__test_data_60 -00000010 _sizeof__finish_60 +00000013 _sizeof__finish_60 00000016 _sizeof__test_data_61 -00000010 _sizeof__finish_61 +00000013 _sizeof__finish_61 00000016 _sizeof__test_data_62 -00000010 _sizeof__finish_62 +00000013 _sizeof__finish_62 00000016 _sizeof__test_data_63 -00000010 _sizeof__finish_63 +00000013 _sizeof__finish_63 00000016 _sizeof__test_data_64 -00000010 _sizeof__finish_64 +00000013 _sizeof__finish_64 00000016 _sizeof__test_data_65 -00000010 _sizeof__finish_65 +00000013 _sizeof__finish_65 00000016 _sizeof__test_data_66 -00000010 _sizeof__finish_66 +00000013 _sizeof__finish_66 00000016 _sizeof__test_data_67 -00000010 _sizeof__finish_67 +00000013 _sizeof__finish_67 00000016 _sizeof__test_data_68 -00000010 _sizeof__finish_68 +00000013 _sizeof__finish_68 00000016 _sizeof__test_data_69 -00000010 _sizeof__finish_69 +00000013 _sizeof__finish_69 00000016 _sizeof__test_data_70 -00000010 _sizeof__finish_70 +00000013 _sizeof__finish_70 00000016 _sizeof__test_data_71 -00000010 _sizeof__finish_71 +00000013 _sizeof__finish_71 00000016 _sizeof__test_data_72 -00000010 _sizeof__finish_72 +00000013 _sizeof__finish_72 00000016 _sizeof__test_data_73 -00000010 _sizeof__finish_73 +00000013 _sizeof__finish_73 00000016 _sizeof__test_data_74 -00000010 _sizeof__finish_74 +00000013 _sizeof__finish_74 00000016 _sizeof__test_data_75 -00000010 _sizeof__finish_75 +00000013 _sizeof__finish_75 00000016 _sizeof__test_data_76 -00000010 _sizeof__finish_76 +00000013 _sizeof__finish_76 00000016 _sizeof__test_data_77 -00000010 _sizeof__finish_77 +00000013 _sizeof__finish_77 00000016 _sizeof__test_data_78 -00000010 _sizeof__finish_78 +00000013 _sizeof__finish_78 00000016 _sizeof__test_data_79 -00000010 _sizeof__finish_79 +00000013 _sizeof__finish_79 00000016 _sizeof__test_data_80 -00000010 _sizeof__finish_80 +00000013 _sizeof__finish_80 00000016 _sizeof__test_data_81 -00000010 _sizeof__finish_81 +00000013 _sizeof__finish_81 00000016 _sizeof__test_data_82 -00000010 _sizeof__finish_82 +00000013 _sizeof__finish_82 00000016 _sizeof__test_data_83 -00000010 _sizeof__finish_83 +00000013 _sizeof__finish_83 00000016 _sizeof__test_data_84 -00000010 _sizeof__finish_84 +00000013 _sizeof__finish_84 00000016 _sizeof__test_data_85 -00000010 _sizeof__finish_85 +00000013 _sizeof__finish_85 00000016 _sizeof__test_data_86 -00000010 _sizeof__finish_86 +00000013 _sizeof__finish_86 00000016 _sizeof__test_data_87 -00000010 _sizeof__finish_87 +00000013 _sizeof__finish_87 00000016 _sizeof__test_data_88 -00000010 _sizeof__finish_88 +00000013 _sizeof__finish_88 00000016 _sizeof__test_data_89 -00000010 _sizeof__finish_89 +00000013 _sizeof__finish_89 00000016 _sizeof__test_data_90 -00000010 _sizeof__finish_90 +00000013 _sizeof__finish_90 00000016 _sizeof__test_data_91 -00000010 _sizeof__finish_91 +00000013 _sizeof__finish_91 00000016 _sizeof__test_data_92 -00000010 _sizeof__finish_92 +00000013 _sizeof__finish_92 00000016 _sizeof__test_data_93 -00000010 _sizeof__finish_93 +00000013 _sizeof__finish_93 00000016 _sizeof__test_data_94 -00000010 _sizeof__finish_94 +00000013 _sizeof__finish_94 00000016 _sizeof__test_data_95 -00000010 _sizeof__finish_95 +00000013 _sizeof__finish_95 00000016 _sizeof__test_data_96 -00000010 _sizeof__finish_96 +00000013 _sizeof__finish_96 00000016 _sizeof__test_data_97 -00000010 _sizeof__finish_97 +00000013 _sizeof__finish_97 00000016 _sizeof__test_data_98 -00000010 _sizeof__finish_98 +00000013 _sizeof__finish_98 00000016 _sizeof__test_data_99 -00000010 _sizeof__finish_99 +00000013 _sizeof__finish_99 00000016 _sizeof__test_data_100 -00000010 _sizeof__finish_100 +00000013 _sizeof__finish_100 00000016 _sizeof__test_data_101 -00000010 _sizeof__finish_101 +00000013 _sizeof__finish_101 00000016 _sizeof__test_data_102 -00000010 _sizeof__finish_102 +00000013 _sizeof__finish_102 00000016 _sizeof__test_data_103 -00000010 _sizeof__finish_103 +00000013 _sizeof__finish_103 00000016 _sizeof__test_data_104 -00000010 _sizeof__finish_104 +00000013 _sizeof__finish_104 00000016 _sizeof__test_data_105 -00000010 _sizeof__finish_105 +00000013 _sizeof__finish_105 00000016 _sizeof__test_data_106 -00000010 _sizeof__finish_106 +00000013 _sizeof__finish_106 00000016 _sizeof__test_data_107 -00000010 _sizeof__finish_107 +00000013 _sizeof__finish_107 00000016 _sizeof__test_data_108 -00000010 _sizeof__finish_108 +00000013 _sizeof__finish_108 00000016 _sizeof__test_data_109 -00000010 _sizeof__finish_109 +00000013 _sizeof__finish_109 00000016 _sizeof__test_data_110 -00000010 _sizeof__finish_110 +00000013 _sizeof__finish_110 00000016 _sizeof__test_data_111 -00000010 _sizeof__finish_111 +00000013 _sizeof__finish_111 00000016 _sizeof__test_data_112 -00000010 _sizeof__finish_112 +00000013 _sizeof__finish_112 00000016 _sizeof__test_data_113 -00000010 _sizeof__finish_113 +00000013 _sizeof__finish_113 00000016 _sizeof__test_data_114 -00000010 _sizeof__finish_114 +00000013 _sizeof__finish_114 00000016 _sizeof__test_data_115 -00000010 _sizeof__finish_115 +00000013 _sizeof__finish_115 00000016 _sizeof__test_data_116 -00000010 _sizeof__finish_116 +00000013 _sizeof__finish_116 00000016 _sizeof__test_data_117 -00000010 _sizeof__finish_117 +00000013 _sizeof__finish_117 00000016 _sizeof__test_data_118 -00000010 _sizeof__finish_118 +00000013 _sizeof__finish_118 00000016 _sizeof__test_data_119 -00000010 _sizeof__finish_119 +00000013 _sizeof__finish_119 00000016 _sizeof__test_data_120 -00000010 _sizeof__finish_120 +00000013 _sizeof__finish_120 00000016 _sizeof__test_data_121 -00000010 _sizeof__finish_121 +00000013 _sizeof__finish_121 00000016 _sizeof__test_data_122 -00000010 _sizeof__finish_122 +00000013 _sizeof__finish_122 00000016 _sizeof__test_data_123 -00000010 _sizeof__finish_123 +00000013 _sizeof__finish_123 00000016 _sizeof__test_data_124 -00000010 _sizeof__finish_124 +00000013 _sizeof__finish_124 00000016 _sizeof__test_data_125 -00000010 _sizeof__finish_125 +00000013 _sizeof__finish_125 00000016 _sizeof__test_data_126 -00000010 _sizeof__finish_126 +00000013 _sizeof__finish_126 00000016 _sizeof__test_data_127 -00000010 _sizeof__finish_127 +00000013 _sizeof__finish_127 00000016 _sizeof__test_data_128 -00000010 _sizeof__finish_128 +00000013 _sizeof__finish_128 00000016 _sizeof__test_data_129 -00000010 _sizeof__finish_129 +00000013 _sizeof__finish_129 00000016 _sizeof__test_data_130 -00000010 _sizeof__finish_130 +00000013 _sizeof__finish_130 00000016 _sizeof__test_data_131 -00000010 _sizeof__finish_131 +00000013 _sizeof__finish_131 00000016 _sizeof__test_data_132 -00000010 _sizeof__finish_132 +00000013 _sizeof__finish_132 00000016 _sizeof__test_data_133 -00000010 _sizeof__finish_133 +00000013 _sizeof__finish_133 00000016 _sizeof__test_data_134 -00000010 _sizeof__finish_134 +00000013 _sizeof__finish_134 00000016 _sizeof__test_data_135 -00000010 _sizeof__finish_135 +00000013 _sizeof__finish_135 00000016 _sizeof__test_data_136 -00000010 _sizeof__finish_136 +00000013 _sizeof__finish_136 00000016 _sizeof__test_data_137 -00000010 _sizeof__finish_137 +00000013 _sizeof__finish_137 00000016 _sizeof__test_data_138 -00000010 _sizeof__finish_138 +00000013 _sizeof__finish_138 00000016 _sizeof__test_data_139 -00000010 _sizeof__finish_139 +00000013 _sizeof__finish_139 00000016 _sizeof__test_data_140 -00000010 _sizeof__finish_140 +00000013 _sizeof__finish_140 00000016 _sizeof__test_data_141 -00000010 _sizeof__finish_141 +00000013 _sizeof__finish_141 00000016 _sizeof__test_data_142 -00000010 _sizeof__finish_142 +00000013 _sizeof__finish_142 00000016 _sizeof__test_data_143 -00000010 _sizeof__finish_143 +00000013 _sizeof__finish_143 00000016 _sizeof__test_data_144 -00000010 _sizeof__finish_144 +00000013 _sizeof__finish_144 00000016 _sizeof__test_data_145 -00000010 _sizeof__finish_145 +00000013 _sizeof__finish_145 00000016 _sizeof__test_data_146 -00000010 _sizeof__finish_146 +00000013 _sizeof__finish_146 00000016 _sizeof__test_data_147 -00000010 _sizeof__finish_147 +00000013 _sizeof__finish_147 00000016 _sizeof__test_data_148 -00000010 _sizeof__finish_148 +00000013 _sizeof__finish_148 00000016 _sizeof__test_data_149 -00000010 _sizeof__finish_149 +00000013 _sizeof__finish_149 00000016 _sizeof__test_data_150 -00000010 _sizeof__finish_150 +00000013 _sizeof__finish_150 00000016 _sizeof__test_data_151 -00000010 _sizeof__finish_151 +00000013 _sizeof__finish_151 00000016 _sizeof__test_data_152 -00000010 _sizeof__finish_152 +00000013 _sizeof__finish_152 00000016 _sizeof__test_data_153 00000018 _sizeof__finish_153 000000a1 _sizeof_run_testcase diff --git a/cinema/gb/mooneye-gb/misc/boot_div-A/config.ini b/cinema/gb/mooneye-gb/misc/boot_div-A/config.ini index d1235047e..b463eadf0 100644 --- a/cinema/gb/mooneye-gb/misc/boot_div-A/config.ini +++ b/cinema/gb/mooneye-gb/misc/boot_div-A/config.ini @@ -3,3 +3,4 @@ fail=1 [ports.cinema] gb.model=AGB + diff --git a/cinema/gb/mooneye-gb/misc/boot_div-A/test.gb b/cinema/gb/mooneye-gb/misc/boot_div-A/test.gb index b12fac773f9b54a43a126de2e4b4d62672116ab2..cf676f5620d1b12e3ed2640037a25a4434fe3d3b 100644 GIT binary patch delta 871 zcmZo@U}|V!+Th2?q!Ko{kWp%~EK@lUR{*ii=BZ5auJu*kXE%8VrKV>Vm!uXIGn@tT zfk@j6NPg(puAvK*bu2DUEh@>(&x1=lc~ouJ5CSROo zprC>R!)a#?O^{{=AYrAz@S)NFL)T6Xp0oWRO^ON(A`+rNM!i2stpqoasQ>{Cr@g@% z-C!CU{6BPJYQ)qBaSq7lV6XvBFaw(XKlI=-pdQ8MXs||Sn8qgm58b#lBI`rgoD4R= z1!h32|A#*O2GoN+&2Ty!tkD&wvBm#GFMf>>eF&S2!3KE13~2ZNFo75Y>Q7gLHTu9b zw)ubPCr0DpDsN$Mq&Wg3R|*)b(qNt&lqW0{}#eR|f#`>cWY*}TaIyiCo4y(`ZKdshK*H4xVTaV-!_$UE3M0cl*s zWJPar#@5M}-lhsOy=$MzzmvCV&A*^>Qjwv7kwIbo;YHqGPn(}j^8R=@X>y;p49jZo MqbD~rGJBW+04@(bMgRZ+ delta 879 zcmZo@U}|V!+Th2?q&{VGA*0k}S*CIzt^i`2%~P4;UF!?H&#v$eN=?r!E=esaW;hGv z1Ch2Dko?fGT|*Zr>sVZzT2zvmp9hzA@~GObAp}ym!aF3jxI`f>F*7GMh2iA-@DCmF zKtTlshSSa(njp;#K*CCa;X|YUhpwF(JZD=$niLfnL?lFkjCy~NS_y6-Qvm`PPJ4qj zy1_Iy_t# z3(SC4{||lm4X6iun&EUdSfeXUV~hWXUi=y%`Vcl3gAMS28PM+kVFED*)Ss>fYxIF> zZ1exnPmIRH1>VBoNOJ^6t`sm@$Q16!WC5oNP!26 z0v}`rCk+`MFdp?f`t+=o_gOXXvni7gc$vC*dRLzH^sWNpY9Ouw;#we<5OuI~0@7&6 zfkEQ$`Ug%AoF8~U@Ujzp;9&RXf&1a=$SB2 e@2{uL&qjEEJRC83hPMpMLhqv|H#0H^nE(K&AwggO diff --git a/cinema/gb/mooneye-gb/misc/boot_div-A/test.sym b/cinema/gb/mooneye-gb/misc/boot_div-A/test.sym index 4dd91c531..ea16898b0 100644 --- a/cinema/gb/mooneye-gb/misc/boot_div-A/test.sym +++ b/cinema/gb/mooneye-gb/misc/boot_div-A/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,34 +75,34 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -95,26 +114,7 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgb0/test.gb b/cinema/gb/mooneye-gb/misc/boot_div-cgb0/test.gb index c6e6a73082b47511ae45c703037a5502b63a7027..1cd981eebd105167bb8043d75d74114770f678c5 100644 GIT binary patch delta 863 zcmZo@U}|V!+Th2?q?RzbkWpgtea7<5_Zdaq>Z`oZZt@OFP0uVYNi8a7I1A(hk+v6* z{LryoLl-FPSX`W1RFavW2bXs8sM@X}1X8%kJ0!KZL?JCPGbc5L;pF=84;}G9K?Mbd z)6N>2Ak7Rw!b*YRL!&(C+_X0x<^EpRNXL^nqz?^Z(FK zjK;%N-ooHWa|A}N6fjn$!8|u8Pgoe}G>8Hx6a~(x3Iaj#?t-Gi6;%aDfd`5LA7lk5 z4H+IV9`!o<^sI~bSp)C0d6N%#nVJQASDp>_t^(p}Ag%%8S|FB?cd&B;(zuApir(Uk zt&=UiO%-N(*FKYfCvVf5e?jG>B0~csgTng5i@d*{Hb0x>{qbdK8$PuyoJG$<_L^jDPXKhgL!UHp0F^`X%GcYC<>fW6$FCf-33L3E2;{R0uK}gKFA7A z8Zta!JnD7y=~*l9vufUFQzjqqGIjCvt~~4MT?NF|KwJaFwLmN(>R{&tq|uNAgT&wU z51bx2Kk$CwWheN+!S2rk_rukboxM#J`n_wP$-k4gY0bZ&a#E3@fssLB{oxtjUr(E# Zjqv_>IAZb)ZyA<_-bYVvW@HXB0RSB~KobA} diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgb0/test.sym b/cinema/gb/mooneye-gb/misc/boot_div-cgb0/test.sym index a9d709f2b..8b331da36 100644 --- a/cinema/gb/mooneye-gb/misc/boot_div-cgb0/test.sym +++ b/cinema/gb/mooneye-gb/misc/boot_div-cgb0/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,34 +75,34 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -95,26 +114,7 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/test.gb b/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/test.gb index 5f5271cd959d09a8888140b740309c0cedc528d0..5381ac4b28f293434f97d1b7c1dd9e32ccd27da7 100644 GIT binary patch delta 871 zcmZo@U}|V!+Th2?q#QoEkWqTF98)Vm!uXIGn@tT zfk@j6NPg(puAvK*bu2DUEh@>(&x1=lc~ouJ5CSROo zprC>R!)a#?O^{{=AYrAz@S)NFL)T6Xp0oWRO^ON(A`+rNM!i2stpqoasQ>{Cr@g@% z-C!CU{6BPJYQ)qBaSq7lV6XvBFaw(XKlI=-pdQ8MXs||Sn8qgm58b#lBI`rgoD4R= z1!h32|A#*O2GoN+&2Ty!tkD&wvBm#GFMf>>eF&S2!3KE13~2ZNFo75Y>Q7gLHTu9b zw)ubPCr0DpDsN$Mq&Wg3R|*)b(qNt&lqW0{}#eR|f#`>cWY*}TaIyiCo4y(`ZKdshK*H4xVTaV-!_$UE3M0cl*s zWJPar#@5M}-lhsOy=$MzzmvCV&A*^>Qjwv7kwIbo;YHqGPn(}j^8R=@X>y;p49jZo MqbD~rGJBW+06ShiN&o-= delta 879 zcmZo@U}|V!+Th2?q&9VOA*1wUIi_+Tt^i`2&C{6TTsVZzT2zvmp9hzA@~GObAp}ym!aF3jxI`f>F*7GMh2iA-@DCmF zKtTlshSSa(njp;#K*CCa;X|YUhpwF(JZD=$niLfnL?lFkjCy~NS_y6-Qvm`PPJ4qj zy1_Iy_t# z3(SC4{||lm4X6iun&EUdSfeXUV~hWXUi=y%`Vcl3gAMS28PM+kVFED*)Ss>fYxIF> zZ1exnPmIRH1>VBoNOJ^6t`sm@$Q16!WC5oNP!26 z0v}`rCk+`MFdp?f`t+=o_gOXXvni7gc$vC*dRLzH^sWNpY9Ouw;#we<5OuI~0@7&6 zfkEQ$`Ug%AoF8~U@Ujzp;9&RXf&1a=$SB2 e@2{uL&qjEEJRC83hPMpMLhqv|H#0H^nE(K_kU?Ys diff --git a/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/test.sym b/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/test.sym index 364d96d57..5ac8f0881 100644 --- a/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/test.sym +++ b/cinema/gb/mooneye-gb/misc/boot_div-cgbABCDE/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,34 +75,34 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -95,26 +114,7 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h diff --git a/cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini b/cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini index 07d7f0398..20566851b 100644 --- a/cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini +++ b/cinema/gb/mooneye-gb/misc/boot_hwio-C/config.ini @@ -3,3 +3,4 @@ fail=1 [ports.cinema] gb.model=CGB + diff --git a/cinema/gb/mooneye-gb/misc/boot_hwio-C/test.gb b/cinema/gb/mooneye-gb/misc/boot_hwio-C/test.gb index 429c65d2d1ba7f34a4644a973052da7be4dea6e3..75273e048fa6de52e5a4a06bcfd34b19b7ed7c98 100644 GIT binary patch delta 228 zcmZo@U}|V!+Th2?w6b|}0AoGNE|0UHCSPV$_WI=E>ly6p7~<@q;25Hy!tkr{|Jm~% zzZyW~S)eMALJ!x709WS_R~H3_UrjKHPaf|6Aqrr?@T(apy4itgrz?Al$Jqjpv+E{# zn3_%Ys60E_qY8+tfw%^UYk^oo-oefZNaG?VCwho89-Un2VXAP`qxPBnJ9(Sd{0k~4 o6&V^B85GtZe&q4>wE5XZ9v=@cntaYfhUK-#(UY4mGI5v#0HuCsL;wH) delta 236 zcmZo@U}|V!+Th2?w0`O20LFTj4IXD-Ouo#h?DfLK*E87HF~r$J!7)TZh2dA@|FcIu zel>u|vp`iKg&wXE0j|y=t}Y4;znWkYFFf4+LlnS(;a4+Ibh87~PFMCSkF#kWXO~R! zFm>tls65;0Q3b@+KwJaFwLmN(>R{&tq|uNAgT&wU51bx2Kk$CwWheN+!S2rk_rtp< zH+z^WocE}GCjU;}rZxY9%1K3r21W*j^@neGd_8S`c815t!!st|@Q`77=yCMq=8H^1 F<^YvyZRr32 diff --git a/cinema/gb/mooneye-gb/misc/boot_hwio-C/test.sym b/cinema/gb/mooneye-gb/misc/boot_hwio-C/test.sym index 14d7c1d6f..01c7bca46 100644 --- a/cinema/gb/mooneye-gb/misc/boot_hwio-C/test.sym +++ b/cinema/gb/mooneye-gb/misc/boot_hwio-C/test.sym @@ -2,17 +2,17 @@ ; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/misc/boot_hwio-C.gb". [labels] -01:48bb clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:48cf memcpy -01:48d8 memset -01:4898 print_hex4 -01:48c5 print_hex8 -01:48e8 print_inline_string -01:48a4 print_load_font -01:48b0 print_newline -01:48e1 print_string +01:48c5 clear_vram +01:4884 disable_lcd_safe +01:488a disable_lcd_safe@wait_ly_0 +01:48d9 memcpy +01:48e2 memset +01:48a2 print_hex4 +01:48cf print_hex8 +01:48f2 print_inline_string +01:48ae print_load_font +01:48ba print_newline +01:48eb print_string 01:47f0 quit 01:4805 quit@cb_return 01:480a quit@wait_ly_1 @@ -21,10 +21,10 @@ 01:481c quit@wait_ly_4 01:4826 quit@success 01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte +01:486c quit@halt +01:486d quit@halt_execution_0 +01:4870 reset_screen +01:4893 serial_send_byte 01:4000 font 00:0150 main 00:01ce main@quit_inline_1 @@ -46,7 +46,7 @@ 0000000c _sizeof_print_load_font 0000000b _sizeof_print_newline 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini b/cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini index db562beed..fc43b1a7c 100644 --- a/cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini +++ b/cinema/gb/mooneye-gb/misc/boot_regs-A/config.ini @@ -1,2 +1,3 @@ [ports.cinema] gb.model=AGB + diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-A/test.gb b/cinema/gb/mooneye-gb/misc/boot_regs-A/test.gb index bc06a02dba24c15edf356c6867374222f5ca058d..a8e182aea4b9d8ff826fca8fe87115ddf510cbf8 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?cn zotPRi^+B8ivN;%RfD_DsX8#X8xD2RAu{j#7(HW+($^Sz)E{(|g5H=@+4RC=O(CYu8 z55EERU{5og&IW6Ag=uW@|ImwHBSas<=3=k`9xwyi{Xa|~#(?_M)nJW2FpX{gANq;W zc(}@27#wMiz{r&X#;P=!=LY2o3j>`7QQ(B4z!_CRASm8lP*k|0ssJhQKvCd>tl*>} z!vn^nUPqsvb@4uH;C(i4@&PYXvtaMav%%g~KwJ&PH9%Yo#1irjc1}PV7cp7UTb!|V zvZc4F!c6blXY%jlZCdj$sGL+}XkcVeSbunt_t(?rXOp}?9!{Fv=Pkps+WY9q&5TSQ FCIAGpJw*Tj delta 872 zcmZo@U}|V!+Th2?OlnfZBeX(x}W?HWQLg)6*6Qj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$6{JZ~fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?G(xSx@gOAg%`D8X&F(VhK?PJ0~EGh8!3q{;q%E z^uYOn_X96G!3Pd@e;&9WuAc1dZK}}kUHeS_oxDwJ{sonjiVO{m3<~QH&+z_w+Wc&U X_s7E#lV^C#uq^aGdU7)(Q;-P&oi0E) diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-A/test.sym b/cinema/gb/mooneye-gb/misc/boot_regs-A/test.sym index df3d6a8c5..33f8f8483 100644 --- a/cinema/gb/mooneye-gb/misc/boot_regs-A/test.sym +++ b/cinema/gb/mooneye-gb/misc/boot_regs-A/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:01d3 invalid_sp 00:01da invalid_sp@quit_inline_1 @@ -87,6 +87,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -98,28 +117,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000002 _sizeof_sp_save 00000083 _sizeof_main diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini index f041754a4..a7b84195c 100644 --- a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini +++ b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/config.ini @@ -1,2 +1,3 @@ [ports.cinema] gb.model=CGB + diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/test.gb b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/test.gb index 016d5a842edc2acefe51ce6b7adfddb455e32b6d..e3165182aec177bbee54e5bae557643e120c977f 100644 GIT binary patch delta 864 zcmZo@U}|V!+Th2?OlnfZBeX(x}W?HWQLg`2!XQj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$AEZf9fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?M&Hm&&=R8A@~G%zwKtUtWS`|D}*vq|0`4<}9T^Oj**?S1s*W=19t F698HkJjDP2 delta 872 zcmZo@U}|V!+Th2?OlnfZBeX(x}W?HWQLg)6*6Qj1Fz(h@UsQd1aCt`Gmv5f2npP+&Oi ztf2|g%m5^;6c|1<`hV!!slju$6{JZ~fk8w<6v(Le2dS0d1~L^OfZ?<^Sfd+EV}t*P zPE3uM`XJ5$*&GZuzzJqRv;T)4Tn5ym*c=Vk=nT`?G(xSx@gOAg%`D8X&F(VhK?PJ0~EGh8!3q{;q%E z^uYOn_X96G!3Pd@e;&9WuAc1dZK}}kUHeS_oxDwJ{sonjiVO{m3<~QH&+z_w+Wc&U X_s7E#lV^C#uq^aGdU7)(Q;-P&NN+&5 diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/test.sym b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/test.sym index 0751a8ba3..226e6695a 100644 --- a/cinema/gb/mooneye-gb/misc/boot_regs-cgb/test.sym +++ b/cinema/gb/mooneye-gb/misc/boot_regs-cgb/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,30 +75,11 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main 00:01d3 invalid_sp 00:01da invalid_sp@quit_inline_1 @@ -87,6 +87,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -98,28 +117,9 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000002 _sizeof_sp_save 00000083 _sizeof_main diff --git a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini index 07d7f0398..20566851b 100644 --- a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini +++ b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/config.ini @@ -3,3 +3,4 @@ fail=1 [ports.cinema] gb.model=CGB + diff --git a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/test.gb b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/test.gb index ccd80619a977dac2c07421f7c670b569277b733a..1d5959432cca652756da59516c54f7559c005d07 100644 GIT binary patch delta 1079 zcmZo@U}|V!+Th1%_s7VP;eq1B|8|F!>>8Eq7|Yi`;J0IZ@c(xi!{Hpp&x*y2hc|eg zt@1v*$=k!xCxk)F=_FM34WR1D{}^p2+c5EJ3bij&d zz!VoK*)f&dDLimQu~~5n*h$BL8tf-)GV^MKHO+)+dIHjfO@p2Ak7Rw!b*YRL!+8eCV4W_Zd|3fFHMofJW=YVVu1{>f6Goac3Lk}(k>QQWt z25WSNX>9WU(2YwYvOa{($zTIqU>tsuBQ-zt{wa?_=$=kH%Ur;%z$k4#Zps@b% fBJZ!K&Ce!ze>|KtxzAgMWwrOwlba_pdzb(K_mi1I delta 1093 zcmZo@U}|V!+Th1%%_yok@xR?+CA&H$JI3<$5BTjEAN>Da#&9^3@v~w9F*7GMh2iA-@DCmFKrIRi45ytnG(nmffP|F-!-q!y4_!Moc+R$h!cI|v zK}13n$f)-Rsg>XcG8G_z;j}kcqZ>?Pga3z4OpTcOAkG2V91J$V31&dE|A!u22Gpb2 z91Yg!4Aa=;|DhX~Mr3^mo0Gu?xWEi(_5aX^-++3srx{LXgEhLsG`9GE=*6!Qq7Pwn zG1vePm;vqnA0`lEK>g`zutp!4#y0;C{lsWIT;MGXjx7Ag%>s2~h_-Cm@Z692g}2u7BY4!1;mq11~$l2M%_B9=IQ_p6u*xs?hIU y`%M0wyiIHV1(lPE3=ND73hNKg@cw$*{A`5x$HNhmXL!r7Ec8Bla`QswAQJ#CXPlY< diff --git a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/test.sym b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/test.sym index a2a625192..0489e6e30 100644 --- a/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/test.sym +++ b/cinema/gb/mooneye-gb/misc/ppu/vblank_stat_intr-C/test.sym @@ -36,18 +36,37 @@ 01:4a13 check_asserts_cb@ok7 01:4a1d check_asserts_cb@skip7 01:4a28 check_asserts_cb@out7 -01:4b7b clear_vram -01:4b3a disable_lcd_safe -01:4b40 disable_lcd_safe@wait_ly_0 -01:4b8f memcpy -01:4b98 memset -01:4b58 print_hex4 -01:4b85 print_hex8 -01:4ba8 print_inline_string -01:4b64 print_load_font -01:4b70 print_newline +00:ff80 hram.regs_save +00:ff80 hram.regs_save.reg_f +00:ff81 hram.regs_save.reg_a +00:ff82 hram.regs_save.reg_c +00:ff83 hram.regs_save.reg_b +00:ff84 hram.regs_save.reg_e +00:ff85 hram.regs_save.reg_d +00:ff86 hram.regs_save.reg_l +00:ff87 hram.regs_save.reg_h +00:ff88 hram.regs_flags +00:ff89 hram.regs_assert +00:ff89 hram.regs_assert.reg_f +00:ff8a hram.regs_assert.reg_a +00:ff8b hram.regs_assert.reg_c +00:ff8c hram.regs_assert.reg_b +00:ff8d hram.regs_assert.reg_e +00:ff8e hram.regs_assert.reg_d +00:ff8f hram.regs_assert.reg_l +00:ff90 hram.regs_assert.reg_h +01:4b85 clear_vram +01:4b44 disable_lcd_safe +01:4b4a disable_lcd_safe@wait_ly_0 +01:4b99 memcpy +01:4ba2 memset +01:4b62 print_hex4 +01:4b8f print_hex8 +01:4bb2 print_inline_string +01:4b6e print_load_font +01:4b7a print_newline 01:4a2b print_reg_dump -01:4ba1 print_string +01:4bab print_string 01:4ab0 quit 01:4ac5 quit@cb_return 01:4aca quit@wait_ly_1 @@ -56,46 +75,27 @@ 01:4adc quit@wait_ly_4 01:4ae6 quit@success 01:4b0d quit@failure -01:4b22 quit@halt -01:4b23 quit@halt_execution_0 -01:4b26 reset_screen -01:4b49 serial_send_byte +01:4b2c quit@halt +01:4b2d quit@halt_execution_0 +01:4b30 reset_screen +01:4b53 serial_send_byte 01:4000 font -00:ff80 v_regs_save -00:ff80 v_regs_save.reg_f -00:ff81 v_regs_save.reg_a -00:ff82 v_regs_save.reg_c -00:ff83 v_regs_save.reg_b -00:ff84 v_regs_save.reg_e -00:ff85 v_regs_save.reg_d -00:ff86 v_regs_save.reg_l -00:ff87 v_regs_save.reg_h -00:ff88 v_regs_flags -00:ff89 v_regs_assert -00:ff89 v_regs_assert.reg_f -00:ff8a v_regs_assert.reg_a -00:ff8b v_regs_assert.reg_c -00:ff8c v_regs_assert.reg_b -00:ff8d v_regs_assert.reg_e -00:ff8e v_regs_assert.reg_d -00:ff8f v_regs_assert.reg_l -00:ff90 v_regs_assert.reg_h 00:0150 main -00:0169 fail_halt -00:0170 fail_halt@quit_inline_1 -00:017e test_round1 -00:018a test_round1@wait_ly_5 -00:01d5 finish_round1 -00:01f3 test_round2 -00:01ff test_round2@wait_ly_6 -00:024b finish_round2 -00:026d test_round3 -00:0279 test_round3@wait_ly_7 -00:02c3 finish_round3 -00:02e1 test_round4 -00:02ed test_round4@wait_ly_8 -00:0338 finish_round4 -00:033a test_finish +00:016c fail_halt +00:0173 fail_halt@quit_inline_1 +00:0181 test_round1 +00:018d test_round1@wait_ly_5 +00:01d8 finish_round1 +00:01f6 test_round2 +00:0202 test_round2@wait_ly_6 +00:024e finish_round2 +00:0270 test_round3 +00:027c test_round3@wait_ly_7 +00:02c6 finish_round3 +00:02e4 test_round4 +00:02f0 test_round4@wait_ly_8 +00:033b finish_round4 +00:033d test_finish 00:ff91 intr_vec_vblank 00:ff94 intr_vec_stat 00:ff97 round1 @@ -104,6 +104,25 @@ [definitions] 0000023b _sizeof_check_asserts_cb +00000008 _sizeof_hram.regs_save +00000001 _sizeof_hram.regs_save.reg_f +00000001 _sizeof_hram.regs_save.reg_a +00000001 _sizeof_hram.regs_save.reg_c +00000001 _sizeof_hram.regs_save.reg_b +00000001 _sizeof_hram.regs_save.reg_e +00000001 _sizeof_hram.regs_save.reg_d +00000001 _sizeof_hram.regs_save.reg_l +00000001 _sizeof_hram.regs_save.reg_h +00000001 _sizeof_hram.regs_flags +00000008 _sizeof_hram.regs_assert +00000001 _sizeof_hram.regs_assert.reg_f +00000001 _sizeof_hram.regs_assert.reg_a +00000001 _sizeof_hram.regs_assert.reg_c +00000001 _sizeof_hram.regs_assert.reg_b +00000001 _sizeof_hram.regs_assert.reg_e +00000001 _sizeof_hram.regs_assert.reg_d +00000001 _sizeof_hram.regs_assert.reg_l +00000001 _sizeof_hram.regs_assert.reg_h 0000000a _sizeof_clear_vram 0000000f _sizeof_disable_lcd_safe 00000009 _sizeof_memcpy @@ -115,35 +134,16 @@ 0000000b _sizeof_print_newline 00000085 _sizeof_print_reg_dump 00000007 _sizeof_print_string -00000076 _sizeof_quit +00000080 _sizeof_quit 00000014 _sizeof_reset_screen 0000000f _sizeof_serial_send_byte 000007f0 _sizeof_font -00000008 _sizeof_v_regs_save -00000001 _sizeof_v_regs_save.reg_f -00000001 _sizeof_v_regs_save.reg_a -00000001 _sizeof_v_regs_save.reg_c -00000001 _sizeof_v_regs_save.reg_b -00000001 _sizeof_v_regs_save.reg_e -00000001 _sizeof_v_regs_save.reg_d -00000001 _sizeof_v_regs_save.reg_l -00000001 _sizeof_v_regs_save.reg_h -00000001 _sizeof_v_regs_flags -00000008 _sizeof_v_regs_assert -00000001 _sizeof_v_regs_assert.reg_f -00000001 _sizeof_v_regs_assert.reg_a -00000001 _sizeof_v_regs_assert.reg_c -00000001 _sizeof_v_regs_assert.reg_b -00000001 _sizeof_v_regs_assert.reg_e -00000001 _sizeof_v_regs_assert.reg_d -00000001 _sizeof_v_regs_assert.reg_l -00000001 _sizeof_v_regs_assert.reg_h 00000003 _sizeof_intr_vec_vblank 00000003 _sizeof_intr_vec_stat 00000001 _sizeof_round1 00000001 _sizeof_round2 00000001 _sizeof_round3 -00000019 _sizeof_main +0000001c _sizeof_main 00000015 _sizeof_fail_halt 00000057 _sizeof_test_round1 0000001e _sizeof_finish_round1 diff --git a/cinema/gb/mooneye-gb/update.py b/cinema/gb/mooneye-gb/update.py index f561ea38f..032682a8f 100644 --- a/cinema/gb/mooneye-gb/update.py +++ b/cinema/gb/mooneye-gb/update.py @@ -2,8 +2,7 @@ import os import os.path import shutil -import yaml -from cinema.util import dict_merge +from configparser import ConfigParser suffixes = { 'C': 'CGB', @@ -37,19 +36,15 @@ def ingestDirectory(path, dest): for suffix, model in suffixes.items(): if fname.endswith('-' + suffix): - manifest = {} + manifest = ConfigParser() try: - with open(os.path.join(dest, root, fname, 'manifest.yml'), 'r') as f: - manifest = yaml.safe_load(f) or {} + with open(os.path.join(dest, root, fname, 'config.ini'), 'r') as f: + manifest.read_file(f) except IOError: pass - dict_merge(manifest, { - 'config': { - 'gb.model': model - } - }) - with open(os.path.join(dest, root, fname, 'manifest.yml'), 'w') as f: - yaml.dump(manifest, f) + manifest.set('ports.cinema', 'gb.model', model) + with open(os.path.join(dest, root, fname, 'config.ini'), 'w') as f: + manifest.write(f, space_around_delimiters=False) if __name__ == '__main__': import argparse From 96f1838faade59fec41b7f3e67f6c23805de6bd6 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 16 Jun 2020 20:00:44 -0700 Subject: [PATCH 16/20] GB MBC: Fix MBC1 mode changing behavior --- CHANGES | 1 + .../mbc1/bits_mode/baseline_0000.png | Bin 0 -> 411 bytes .../emulator-only/mbc1/bits_mode/config.ini | 2 - include/mgba/internal/gb/memory.h | 2 + include/mgba/internal/gb/serialize.h | 2 + src/gb/mbc.c | 40 ++++++++++-------- src/gb/memory.c | 11 ++++- 7 files changed, 38 insertions(+), 20 deletions(-) create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/baseline_0000.png delete mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini diff --git a/CHANGES b/CHANGES index 6a1153e18..f136763a2 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,7 @@ Features: Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation + - GB MBC: Fix MBC1 mode changing behavior - GB Video: Fix state after skipping BIOS (fixes mgba.io/i/1715 and mgba.io/i/1716) - GBA: Fix timing advancing too quickly in rare cases - GBA BIOS: Implement dummy sound driver calls diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe7e5937a4a0bdc08a3f6336d8a678ac75ae6ca GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|R4{r;B4q#hkYn895mg1P(ZC zt$%Lb%JEq5U_y18SnTt1hI~nx^ny7D3)zm3GRO&pJFMSKS!8D~ezp}9=$@{AF6*2U FngEd%oml_? literal 0 HcmV?d00001 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini deleted file mode 100644 index 7ddee425b..000000000 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_mode/config.ini +++ /dev/null @@ -1,2 +0,0 @@ -[testinfo] -fail=1 diff --git a/include/mgba/internal/gb/memory.h b/include/mgba/internal/gb/memory.h index 3c7387b14..514311351 100644 --- a/include/mgba/internal/gb/memory.h +++ b/include/mgba/internal/gb/memory.h @@ -108,6 +108,8 @@ enum GBTAMA5Register { struct GBMBC1State { int mode; int multicartStride; + uint8_t bankLo; + uint8_t bankHi; }; struct GBMBC6State { diff --git a/include/mgba/internal/gb/serialize.h b/include/mgba/internal/gb/serialize.h index 68b7d8533..be5d17e2f 100644 --- a/include/mgba/internal/gb/serialize.h +++ b/include/mgba/internal/gb/serialize.h @@ -362,6 +362,8 @@ struct GBSerializedState { struct { uint8_t mode; uint8_t multicartStride; + uint8_t bankLo; + uint8_t bankHi; } mbc1; struct { uint64_t lastLatch; diff --git a/src/gb/mbc.c b/src/gb/mbc.c index be03f1511..8c6e3b2cf 100644 --- a/src/gb/mbc.c +++ b/src/gb/mbc.c @@ -419,10 +419,27 @@ static void _latchRtc(struct mRTCSource* rtc, uint8_t* rtcRegs, time_t* rtcLastL } } +static void _GBMBC1Update(struct GB* gb) { + struct GBMBC1State* state = &gb->memory.mbcState.mbc1; + int bank = state->bankLo; + bank &= (1 << state->multicartStride) - 1; + bank |= state->bankHi << state->multicartStride; + if (state->mode) { + GBMBCSwitchBank0(gb, state->bankHi << state->multicartStride); + GBMBCSwitchSramBank(gb, state->bankHi & 3); + } else { + GBMBCSwitchBank0(gb, 0); + GBMBCSwitchSramBank(gb, 0); + } + if (!(state->bankLo & 0x1F)) { + ++bank; + } + GBMBCSwitchBank(gb, bank); +} + void _GBMBC1(struct GB* gb, uint16_t address, uint8_t value) { struct GBMemory* memory = &gb->memory; int bank = value & 0x1F; - int stride = 1 << memory->mbcState.mbc1.multicartStride; switch (address >> 13) { case 0x0: switch (value) { @@ -440,28 +457,17 @@ void _GBMBC1(struct GB* gb, uint16_t address, uint8_t value) { } break; case 0x1: - if (!bank) { - ++bank; - } - bank &= stride - 1; - GBMBCSwitchBank(gb, bank | (memory->currentBank & (3 * stride))); + memory->mbcState.mbc1.bankLo = bank; + _GBMBC1Update(gb); break; case 0x2: bank &= 3; - if (memory->mbcState.mbc1.mode) { - GBMBCSwitchBank0(gb, bank << gb->memory.mbcState.mbc1.multicartStride); - GBMBCSwitchSramBank(gb, bank); - } - GBMBCSwitchBank(gb, (bank << memory->mbcState.mbc1.multicartStride) | (memory->currentBank & (stride - 1))); + memory->mbcState.mbc1.bankHi = bank; + _GBMBC1Update(gb); break; case 0x3: memory->mbcState.mbc1.mode = value & 1; - if (memory->mbcState.mbc1.mode) { - GBMBCSwitchBank0(gb, memory->currentBank & ~((1 << memory->mbcState.mbc1.multicartStride) - 1)); - } else { - GBMBCSwitchBank0(gb, 0); - GBMBCSwitchSramBank(gb, 0); - } + _GBMBC1Update(gb); break; default: // TODO diff --git a/src/gb/memory.c b/src/gb/memory.c index 18ba75a17..36d083df0 100644 --- a/src/gb/memory.c +++ b/src/gb/memory.c @@ -733,6 +733,8 @@ void GBMemorySerialize(const struct GB* gb, struct GBSerializedState* state) { case GB_MBC1: state->memory.mbc1.mode = memory->mbcState.mbc1.mode; state->memory.mbc1.multicartStride = memory->mbcState.mbc1.multicartStride; + state->memory.mbc1.bankLo = memory->mbcState.mbc1.bankLo; + state->memory.mbc1.bankHi = memory->mbcState.mbc1.bankHi; break; case GB_MBC3_RTC: STORE_64LE(gb->memory.rtcLastLatch, 0, &state->memory.rtc.lastLatch); @@ -801,8 +803,15 @@ void GBMemoryDeserialize(struct GB* gb, const struct GBSerializedState* state) { case GB_MBC1: memory->mbcState.mbc1.mode = state->memory.mbc1.mode; memory->mbcState.mbc1.multicartStride = state->memory.mbc1.multicartStride; + memory->mbcState.mbc1.bankLo = state->memory.mbc1.bankLo; + memory->mbcState.mbc1.bankHi = state->memory.mbc1.bankHi; + if (!(memory->mbcState.mbc1.bankLo || memory->mbcState.mbc1.bankHi)) { + // Backwards compat + memory->mbcState.mbc1.bankLo = memory->currentBank & ((1 << memory->mbcState.mbc1.multicartStride) - 1); + memory->mbcState.mbc1.bankHi = memory->currentBank >> memory->mbcState.mbc1.multicartStride; + } if (memory->mbcState.mbc1.mode) { - GBMBCSwitchBank0(gb, memory->currentBank >> memory->mbcState.mbc1.multicartStride); + GBMBCSwitchBank0(gb, memory->mbcState.mbc1.bankHi); } break; case GB_MBC3_RTC: From c487b0cf4336ac373b95e2cf5518e27de65dab5d Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 16 Jun 2020 20:13:09 -0700 Subject: [PATCH 17/20] GB MBC: Fix MBC1 RAM enable bit selection --- CHANGES | 1 + .../emulator-only/mbc1/bits_ram_en/config.ini | 2 - .../emulator-only/mbc1/bits_ram_en/test.gb | Bin 65536 -> 0 bytes .../emulator-only/mbc1/bits_ram_en/test.sym | 84 ------------------ .../mbc1/bits_ramg/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc1/bits_ramg/config.ini | 2 +- src/gb/mbc.c | 2 +- 7 files changed, 3 insertions(+), 88 deletions(-) delete mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini delete mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/test.gb delete mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/test.sym create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/baseline_0000.png diff --git a/CHANGES b/CHANGES index f136763a2..0cb5eaafa 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation - GB MBC: Fix MBC1 mode changing behavior + - GB MBC: Fix MBC1 RAM enable bit selection - GB Video: Fix state after skipping BIOS (fixes mgba.io/i/1715 and mgba.io/i/1716) - GBA: Fix timing advancing too quickly in rare cases - GBA BIOS: Implement dummy sound driver calls diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini deleted file mode 100644 index 7ddee425b..000000000 --- a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/config.ini +++ /dev/null @@ -1,2 +0,0 @@ -[testinfo] -fail=1 diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/test.gb b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ram_en/test.gb deleted file mode 100644 index 6117c265b578f74acc6ae49bf2fd4814cea11e5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 zcmeI)O-LMP7zglo$JI>yNXLB07=}2zUChQ>F-DTbZl>dOt7BqXkxD^?nl)|`XjMoK z#%?y6lF}SXTkw#8r9CBw9;AUDN+3`qX_mO9&{Il;4KyC4X;adsjcwe%&pwW8rI#KX z{}0aWJoA44<{c3fbGh{$Vy4UY&HY4TwnCH@oe=Mca#11F%9{7ii%oZChvw(zZeP55 z_2|IRrXOeL?p*xj>X&=0w}yv@22Tw>e>85M96WJS^!AD(pW@pic9st9Udmae3ql0M zr#?+o&iOKPZXj24dSN`5T$sq++bb&X`!Y{_-kyU8z}GjC5XoXt(k z*2{I?RTj_Y@|~IIhEtcr#j?6yv|RWZ6-H$PGxIPo>zjGdp1I~`9=Wf{DVeVx6jdT! z{qaYeA8kHz=!fPP8vgvc=Eb#-nkPAP!F?F0P^g1PZujmMGv7nv@bNbXj|l4Xl)^oC zw;nQwhEJMDj-NOjr@|^H{V>q}A6gC$tu$Pm$Ys8B7su%=dwDCxKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=>qj89D(LtAtI`zmr_Y1`wxe)XmqQ3urMqDng;KtgOoqdBP^PLo zc7(%*QCb>}Qj7ln$;o5Ks;YMFDk-6I!!Tu3SJ&27S95*tm#!&PRnw@3rty9H^vj_8 zR9;tS7?x!ib#;_c&;%`u&YXK^uLb4NsCT#U$@LY5`!-G6rZQa*g&Y~7kgij%s=7{n ztEyp89*sJV->>VYnab~fFLxXsgX)LFuA5A9|EZL1CzFcel}DqL(+FHYmHOxS)E^yQ zIbU0rq7>G^Jr~yN=gaHk9;p86az*jh-__-fN9CGUULFi``!i=~t{glbuf={ph19;aH5lBwwa{N-zwr7Z5qeuF*x$DK-SPWrw)A}SZ8vT# z<8n<~`~Ffb3hvK)@Aw{_qfte%thTn67RpG5_HR7i*GD-8ztg;aMTTWLj#r=G7U2%f(9qOG51lifq4#{~USD54?l`nlZJY9z7TPWJ4k~%m`ue6O z8kfp=^}0@T=UmgGQJO(vd>X5^cKdcNr#)Es{zCUAWc2nX5`}Ww1FLi11DeL~EPZFC zQK-IQXj-ETO=Ex0%G)vY{L5visy9Ds)zsA4NuTu83qkpAk@Xe3*Y9P<+)TpFTyX>9 zLONjQZY@2CEq!1v%JYZ$^UC$uWpigq(Wc@mbw@?*wuYcRnmO;DlE;`l-j+vF9;fA@ zZ?i2&ey;hlh5lqZ>ttWb9?TxFDzmorSGIj7?b4vBn>^mFYw4`dn#d~C`)QKq. -; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/bits_ram_en.gb". - -[labels] -01:48c9 clear_vram -01:487a disable_lcd_safe -01:4880 disable_lcd_safe@wait_ly_0 -01:4898 memcmp -01:48dd memcpy -01:48e6 memset -01:48a6 print_hex4 -01:48d3 print_hex8 -01:48f6 print_inline_string -01:48b2 print_load_font -01:48be print_newline -01:48ef print_string -01:47f0 quit -01:4805 quit@cb_return -01:480a quit@wait_ly_1 -01:4810 quit@wait_ly_2 -01:4816 quit@wait_ly_3 -01:481c quit@wait_ly_4 -01:4826 quit@success -01:484d quit@failure -01:4862 quit@halt -01:4863 quit@halt_execution_0 -01:4866 reset_screen -01:4889 serial_send_byte -01:4000 font -00:0150 main -00:0164 test_round1 -00:018e test_round2 -00:01ae test_round2@expect_enabled -00:01b3 test_round2@expect_disabled -00:01cc test_round2@quit_inline_1 -00:01dd ram_data_enabled -00:01ed ram_data_disabled -00:01fd compare_ram_data -00:0206 fail_round1_disable -00:020d fail_round1_disable@quit_inline_2 -00:0240 fail_round1_enable -00:0247 fail_round1_enable@quit_inline_3 -00:0279 fail_round1_print_test_address -00:0286 fail_round2_disable -00:028d fail_round2_disable@quit_inline_4 -00:02ab fail_round2_expect -00:02b2 fail_round2_expect@quit_inline_5 -00:2000 ram_en_expectations -00:ff80 test_address -00:ff80 test_address_l -00:ff81 test_address_h -00:ff82 ram_en_value - -[definitions] -0000000a _sizeof_clear_vram -0000000f _sizeof_disable_lcd_safe -0000000e _sizeof_memcmp -00000009 _sizeof_memcpy -00000009 _sizeof_memset -0000000c _sizeof_print_hex4 -0000000a _sizeof_print_hex8 -00000006 _sizeof_print_inline_string -0000000c _sizeof_print_load_font -0000000b _sizeof_print_newline -00000007 _sizeof_print_string -00000076 _sizeof_quit -00000014 _sizeof_reset_screen -0000000f _sizeof_serial_send_byte -000007f0 _sizeof_font -00000002 _sizeof_test_address -00000001 _sizeof_test_address_l -00000001 _sizeof_test_address_h -00000001 _sizeof_ram_en_value -00000014 _sizeof_main -0000002a _sizeof_test_round1 -0000004f _sizeof_test_round2 -00000010 _sizeof_ram_data_enabled -00000010 _sizeof_ram_data_disabled -00000009 _sizeof_compare_ram_data -0000003a _sizeof_fail_round1_disable -00000039 _sizeof_fail_round1_enable -0000000d _sizeof_fail_round1_print_test_address -00000025 _sizeof_fail_round2_disable -00001d55 _sizeof_fail_round2_expect diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc1/bits_ramg/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xc> 13) { case 0x0: - switch (value) { + switch (value & 0xF) { case 0: memory->sramAccess = false; break; From 1402593855729beaca177d43700eb462bd8c123d Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 16 Jun 2020 20:49:07 -0700 Subject: [PATCH 18/20] GB MBC: Fix MBC2 bit selection --- CHANGES | 1 + .../mbc2/bits_ramg/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc2/bits_ramg/config.ini | 2 +- .../mbc2/bits_romb/baseline_0000.png | Bin 0 -> 528 bytes .../emulator-only/mbc2/bits_romb/config.ini | 2 +- src/gb/mbc.c | 14 ++++++++++---- 6 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/baseline_0000.png create mode 100644 cinema/gb/mooneye-gb/emulator-only/mbc2/bits_romb/baseline_0000.png diff --git a/CHANGES b/CHANGES index 0cb5eaafa..b4b1cccf3 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,7 @@ Emulation fixes: - ARM: Fix STR storing PC after address calculation - GB MBC: Fix MBC1 mode changing behavior - GB MBC: Fix MBC1 RAM enable bit selection + - GB MBC: Fix MBC2 bit selection - GB Video: Fix state after skipping BIOS (fixes mgba.io/i/1715 and mgba.io/i/1716) - GBA: Fix timing advancing too quickly in rare cases - GBA BIOS: Implement dummy sound driver calls diff --git a/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/baseline_0000.png b/cinema/gb/mooneye-gb/emulator-only/mbc2/bits_ramg/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcb*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcmemory; int shift = (address & 1) * 4; int bank = value & 0xF; - switch (address >> 13) { + switch ((address & 0xC100) >> 8) { case 0x0: - switch (value) { + switch (value & 0x0F) { case 0: memory->sramAccess = false; break; @@ -491,7 +491,7 @@ void _GBMBC2(struct GB* gb, uint16_t address, uint8_t value) { break; default: // TODO - mLOG(GB_MBC, STUB, "MBC1 unknown value %02X", value); + mLOG(GB_MBC, STUB, "MBC2 unknown value %02X", value); break; } break; @@ -501,7 +501,10 @@ void _GBMBC2(struct GB* gb, uint16_t address, uint8_t value) { } GBMBCSwitchBank(gb, bank); break; - case 0x5: + case 0x80: + case 0x81: + case 0x82: + case 0x83: if (!memory->sramAccess) { return; } @@ -517,6 +520,9 @@ void _GBMBC2(struct GB* gb, uint16_t address, uint8_t value) { } static uint8_t _GBMBC2Read(struct GBMemory* memory, uint16_t address) { + if (!memory->sramAccess) { + return 0xFF; + } address &= 0x1FF; int shift = (address & 1) * 4; return (memory->sramBank[(address >> 1)] >> shift) | 0xF0; From 673f4aa1492ac9a01b081b083af0c2ba1bca008c Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 16 Jun 2020 22:25:43 -0700 Subject: [PATCH 19/20] GB: Partially fix timing for skipped BIOS --- CHANGES | 1 + src/gb/gb.c | 31 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/CHANGES b/CHANGES index b4b1cccf3..86ea3ef60 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,7 @@ Features: Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation + - GB: Partially fix timing for skipped BIOS - GB MBC: Fix MBC1 mode changing behavior - GB MBC: Fix MBC1 RAM enable bit selection - GB MBC: Fix MBC2 bit selection diff --git a/src/gb/gb.c b/src/gb/gb.c index ff73614eb..3f9dda81a 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -502,8 +502,8 @@ void GBSkipBIOS(struct GB* gb) { cpu->e = 0x00; cpu->h = 0xC0; cpu->l = 0x60; - gb->timer.internalDiv = 0xABC; - nextDiv = 4; + gb->timer.internalDiv = 0xD85; + nextDiv = 8; break; case GB_MODEL_MGB: cpu->a = 0xFF; @@ -522,34 +522,31 @@ void GBSkipBIOS(struct GB* gb) { cpu->e = 0x00; cpu->h = 0xC0; cpu->l = 0x60; - gb->timer.internalDiv = 0xABC; - nextDiv = 4; + gb->timer.internalDiv = 0xD84; + nextDiv = 8; break; case GB_MODEL_AGB: - cpu->a = 0x11; cpu->b = 1; - cpu->f.packed = 0x00; - cpu->c = 0; - cpu->e = 0x08; - cpu->h = 0; - cpu->l = 0x7C; - gb->timer.internalDiv = 0x1EA; - nextDiv = 0xC; - break; + // Fall through case GB_MODEL_CGB: cpu->a = 0x11; - cpu->f.packed = 0x80; + if (gb->model == GB_MODEL_AGB) { + cpu->f.packed = 0x00; + } else { + cpu->f.packed = 0x80; + } cpu->c = 0; cpu->h = 0; if (cart->cgb & 0x80) { cpu->d = 0xFF; cpu->e = 0x56; cpu->l = 0x0D; + gb->timer.internalDiv = 0x2F0; } else { cpu->e = 0x08; cpu->l = 0x7C; + gb->timer.internalDiv = 0x260; } - gb->timer.internalDiv = 0x1EA; nextDiv = 0xC; break; } @@ -557,8 +554,10 @@ void GBSkipBIOS(struct GB* gb) { cpu->sp = 0xFFFE; cpu->pc = 0x100; + gb->timer.nextDiv = GB_DMG_DIV_PERIOD * (16 - nextDiv); + mTimingDeschedule(&gb->timing, &gb->timer.event); - mTimingSchedule(&gb->timing, &gb->timer.event, 0); + mTimingSchedule(&gb->timing, &gb->timer.event, gb->timer.nextDiv); GBIOWrite(gb, REG_LCDC, 0x91); GBVideoSkipBIOS(&gb->video); From 91dd493f954ea2c109e18fc0eb647f5cd7d9217f Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 16 Jun 2020 23:06:32 -0700 Subject: [PATCH 20/20] GB Memory: Fix OAM DMA from top 8 kB --- CHANGES | 1 + .../oam_dma/sources-GS/baseline_0000.png | Bin 0 -> 528 bytes .../acceptance/oam_dma/sources-GS/config.ini | 2 -- src/gb/io.c | 2 +- src/gb/memory.c | 4 ++-- 5 files changed, 4 insertions(+), 5 deletions(-) create mode 100644 cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/baseline_0000.png delete mode 100644 cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/config.ini diff --git a/CHANGES b/CHANGES index 86ea3ef60..006db1256 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation - GB: Partially fix timing for skipped BIOS + - GB Memory: Fix OAM DMA from top 8 kB - GB MBC: Fix MBC1 mode changing behavior - GB MBC: Fix MBC1 RAM enable bit selection - GB MBC: Fix MBC2 bit selection diff --git a/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/baseline_0000.png b/cinema/gb/mooneye-gb/acceptance/oam_dma/sources-GS/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5e47b50a4d548ddbc988a8e76364d30f505cf GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|VoAPZ!6KiaBquU(7mWz~FE( z<;Va1cWgxt&B%VfEU&=!xnok3TT$lH;@jICuivi!&oIyXfkoqEmOfz%KM+GNxySPP z*F*Dd<=5Z6-dB81|M;InsWNlk%!+)xcmemory.io[REG_DMA] = 0xFF; GBIOWrite(gb, REG_BGP, 0xFC); if (gb->model < GB_MODEL_CGB) { GBIOWrite(gb, REG_OBP0, 0xFF); diff --git a/src/gb/memory.c b/src/gb/memory.c index 36d083df0..b070ff601 100644 --- a/src/gb/memory.c +++ b/src/gb/memory.c @@ -519,8 +519,8 @@ uint8_t GBView8(struct SM83Core* cpu, uint16_t address, int segment) { } void GBMemoryDMA(struct GB* gb, uint16_t base) { - if (base > 0xF100) { - return; + if (base >= 0xE000) { + base &= 0xDFFF; } mTimingDeschedule(&gb->timing, &gb->memory.dmaEvent); mTimingSchedule(&gb->timing, &gb->memory.dmaEvent, 8);