1001Ferramentas
๐Ÿ“บ Calculators

MSX1 VDP VRAM Calculator

Computes VRAM usage on MSX1 TMS9918 VDP in graphic 1, graphic 2 and text modes including pattern table and sprite attribute table.

โ€”

MSX1 VDP TMS9918A: 16 KB VRAM split across screen modes

The MSX1 standard (1983) pairs a Zilog Z80 CPU with the Texas Instruments TMS9918A VDP and gives it 16 KB of dedicated VRAM that sits apart from the CPU's main RAM. That VRAM gets carved up into a Pattern Generator Table, a Name Table, a Color Table and the Sprite tables, and how it's laid out depends on the screen mode. Mode 0 (Text) gives you 40ร—24 monochrome characters. Mode 1 (Graphics 1) runs 32ร—24 tiles where 8 tile groups share a single color pair. Mode 2 (Graphics 2 / Bitmap) reaches 256ร—192 but carries the famous 8ร—1 attribute clash, where each 8-pixel row of a tile is limited to 2 colors. And Multicolor draws 64ร—48 chunky 4-color blocks. Sprites top out at 32 per screen, no more than 4 on any one scanline.

Applications

Brazilian retrocomputing on machines like the Gradiente Expert and Sharp HotBit, MSX homebrew built in openMSX or blueMSX, ROM cartridge tooling, demoscene work, working out sprite and tile budgets in Z80 assembly, and showing students just how tight early-80s graphics hardware really was.

FAQ

Why is bitmap mode limited to 2 colors per 8 pixels? The Color Table keeps one byte for every 8 horizontal pixels, split into 4 bits of foreground and 4 of background. That leaves each 8ร—1 strip with room for just 2 of the 15 palette colors, which is the classic TMS9918A attribute clash.

Is MSX1 VRAM the same as the Z80's RAM? No. You reach VRAM only through the VDP ports (#98/#99); it isn't memory-mapped, so every read and write goes via I/O and runs slower than main RAM.

MSX1 vs MSX2 VDP? MSX2 moves to the V9938 with 64 KB or 128 KB of VRAM, extra screen modes (256 colors in Screen 8) and hardware scrolling, though in the process it drops the old visual quirks of the TMS9918A.

How many sprites can flicker? The hardware draws at most 4 sprites on a scanline and simply drops the 5th and beyond. To fake having more, games shuffle sprite priorities every frame, and that's what produces the flicker.

Related Tools