From 07997022adf436436ca72079eb13c801e5b74c82 Mon Sep 17 00:00:00 2001 From: SDD Date: Fri, 16 Oct 2026 10:30:52 +0300 Subject: [PATCH] docs: the video RAM test draws characters then verifies; mapping alone cannot satisfy it --- harness/mame/BRINGUP_LOG.md | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/harness/mame/BRINGUP_LOG.md b/harness/mame/BRINGUP_LOG.md index 071445c..dc22ed0 100644 --- a/harness/mame/BRINGUP_LOG.md +++ b/harness/mame/BRINGUP_LOG.md @@ -798,11 +798,35 @@ step. The bank walk observed so far steps in `0x400000` units (`>>4`), reaching **Honest status:** level 1 is NOT passing. Video memory is located and mapped correctly; the test's *requirement* is not yet understood. +## The video test DRAWS, then verifies (2026-10-16) + +Reading the helper the test calls per bank — bit `0x3FDDFCB0`, file `0x17BF96` — shows it is +**not** the check. It is the display: + +``` +3fddfd60: ... loop building 8 hex digits from a9 ... ; format a9 as hex +3fddff40: movk 7,a11 ; 8 characters +3fddff50: movb *a5,a8 ; push char ; push a10 ; push 0xffff +3fde0000: calla 0x3fdf97f0 ; plot the character at a10 +3fde0030: addk 12,a10 ; next cell, +12 +``` + +It formats the address in hex and **draws it on the screen**, 12 units per character, via the +character plotter at `0x3fdf97f0`. That also explains the read PCs the catch-all saw inside +the video region (`3FDF97A0`, `3FDF9A00` — the drawing code reading VRAM). + +**Consequence for the diagnosis:** the level-1 "video RAM test" **draws characters and then +verifies them**; it is not a raw memory walk. So the fact that mapping the memory does not +make it pass is *expected* — the check is on the drawing path, which depends on the character +generator, not merely on memory existing. + +**Next:** find the verification — where the test compares what it drew against what it reads +back. That comparison is what fails and reports error 22 at bit `0x040000C0`. + --- ## Next steps -1. Read the check helper at bit 0x3FDDFCB0 (file 0x17BF96) to learn what the - level-1 video RAM test actually requires. -2. Map video memory at the full extent the bank walk reaches. -3. Re-run the console check after each change. +1. Find the VERIFY step of the video RAM test (what it compares after drawing). +2. That comparison is what fails; it likely needs the character generator / font data. +3. Re-run the console check (cap.lua) after each change.