# X68000 hardware facts (verified, not assumed) Target baseline: X68000 ACE/Expert class. 68000 @ 10MHz, 2MB RAM, SCSI HDD. ## Cycle budget Content is cel animation shot on twos -> 12fps effective. 10,000,000 / 12 = **833,333 cycles per frame**. This is the wall. ## GVRAM layout [verified: JC-000/x68000-dev-guide docs/graphics.md] - 512KB physical, mapped at $C00000-$DFFFFF as aliased page windows. - **One 16-bit word per pixel position, in EVERY color mode.** Bit depth does NOT change VRAM bandwidth. It only subdivides the word. - Address formula (512-wide page): `addr = page_base + y*1024 + x*2` - Horizontally adjacent pixels are 2 bytes apart in all modes. | Mode | Pages | Word subdivision | Page aliases | |-------|-------|-----------------------------|-----------------------------------| | 16 | 4 | nibble per page (P3..P0) | $C00000/$C80000/$D00000/$D80000 | | 256 | 2 | byte per page (P0=lo,P1=hi) | $C00000 (P0) / $C80000 (P1) | | 65536 | 1 | whole word | $C00000 | Writes via a page alias are **auto-masked and shifted by hardware** into that page's field. No software read-modify-write is needed for 16-color mode. ## Chosen mode: 256 colors, 256x192 active area Rationale: since every mode is one word-access per pixel, low bit depth buys no speed. 256-color halves on-disk data vs 65536-color for identical blit cost. Coalescing trick: in 256-color mode a `move.l` spans two pixel positions across BOTH pages. We sacrifice page 1 as a double-buffer and let it take duplicate data, which lets us use `movem.l` bursts: movem.l d0-d7/a0-a3,(a6) ; 12 regs = 48 bytes = 24 pixels Full-frame refresh cost: 49,152 px / 24 = 2,048 bursts ~104 cyc/burst + VRAM waits (~1.5x) = ~320k cycles << 833k budget A hard scene cut fits. Delta frames cost far less. ## Audio MSM6258 ADPCM via HD63450 DMAC. ~7.8KB/s at 15.6kHz mono, near-zero CPU. 22 min ~= 10MB. ## Storage estimate ~15,800 frames. Target ~3-5KB/frame compressed -> 50-80MB video + 10MB audio. Stream rate ~40-60KB/s. Well within SCSI sustained throughput. --- ## Corrections applied after session-1 measurement - Storage estimate below was optimistic. Measured naive codec gives ~470MB @24fps. See FINDINGS.md §3. VQ codec targets ~40MB. - "Content is cel animation shot on twos -> 12fps effective" — **the transfer has zero duplicate frames**; 12fps requires explicit decimation. See FINDINGS.md §3. - 10MHz models are **SASI**, not SCSI. See FINDINGS.md §5.