spacerace / romfont

VGA and BIOS rom font extraction
546 stars 20 forks source link
3dfx ami at ati bios bitmap-font cga ega font ibm mda nvidia pc s3 spea tandy tseng v7 vga xt

What is this?

I have diassembled and/or searched BIOS and VGA-ROMs for fonts and extracted these. Also I have written a few tools to support this job. All extracted fonts and screenshots are available here. I have written a big table to show what is covered. Also had a look and wrote about fonts of open source BIOSes/source available.

If you have exotic ROMs or links to other open source BIOSes please let me know. Testing a ROM for known fonts and add it to this list only takes a few minutes and if there is one with a yet unknown font, I am happy to extract and document it :)
I am really intersted in ROMs of old laptops with weird LCD-fonts and embedded devices (like POS systems, cash registers, money machines and other stuff). Also if you have localized graphic cards, that bring a local charset (ex. greek), I am happy to extract their' fonts.

I already extracted more than 240 ROM-fonts. Most likely I am not updating this counter for every font, so check the font-bin and font-images folder, if there is something new relevant to you.

The tool

I have written a tool to browse a ROM image and search for 8x8, 8x14, 8x16 charsets and export. It can be found here on github in another repo, called "romfont-extractor".

ls

Already extracted fonts

LEGEND: "ok" - font already extracted
        "XX" - font not included in ROM (newer cards dont ship 8x14 usually)
        "  " - not yet done
        "??" - something strange
        "LO" - only lower 128 characters available

Filename of ROM                                  8x8  8x14 8x16  Bus    Memory   Date         Comments (BIOS manuf., year, version, ...)
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
ATI.X550.128.040512.rom                         | ok | xx | ok |      |        |            |
Asus.6200.16.050106.rom                         | ?? | ?? | ?? |      |        |            | NV44, 2004 Nvidia, Version 5.44.02.11.00 / AS05
CLGD5442.ROM                                    | ok | ok | ok |      |        |            | CL-GD540x/542x VGA BIOS Version 1.20, 1992-1993 Cirrus Logic, 1987-1990 Quadtel
avga1-a11.bin                                   | ?? | ?? | ?? |      |        |            |
AVGA2.ROM                                       | ok | ok | ok |      |        |            |
Commodore386SX-25_AVGA2.bin                     | ok | ok | ok | ISA  |   512k | 03/19/92   | Acumos AVGA2, DeskTop VGA BIOS (340-000-11-Rev1.00), 1984-1991 Phoenix
Connect3D.9500NP.128.Infineon30.021212.rom      | ok | xx | ok | AGP  |        | 2002/12/12 | R300, Infineon Memory BIOS - P/N 113-94232-101, 1988-2002 ATI BK-ATI VER008.004.008.004
Diamond Stealth 64 Video VRAM PCI 3.00.bin      | ok | ok | ok | PCI  |        | 07/05/95   | Stealth 64 Video VRAM Vers. 3.00, Diamond MultiMedia Systems
ELSAVIC2.ROM                                    | ok | ok | ok | AGP  |        | 11/23/98   | ELSA VICTORY II 4.03.00, 98-98 ELSA, 90-98 Elpin Systems
Elsa.FireGLV3200.128.040910.rom                 | ok | xx | ok | PCIE |  128MB | 2004/09/10 | RV380, 1988-2003, ATI BK-ATI VER008.015.121.000
FujitsuSiemens.QuadroFX1700.512.080123.rom      | ?? | ?? | ?? |      |  512MB |            | ??? compressed font ??? cant find font on first look
FujitsuSiemens.X300Mobility.32.050608.rom       | ok | xx | ok |      |   32MB |            |
G400.ROM                                        | ok | xx | ok |      |        |            | Matrox
GENOA.ROM                                       | ok | ok | ok |      |        |            | Tseng
Gigabyte.6200.16.050711.rom                     | ?? | ?? | ?? |      |        |            | ??? compressed font ??? cant find font on first look
Leadtek.6200.16.050128.rom                      | ?? | ?? | ?? |      |        |            | ??? compressed font ??? cant find font on first look
M32.ROM                                         | ok | ok | ok | PCI  |        |            | ATI
M64GX.ROM                                       | ok | ok | ok |      |        |            |
MGAMIL2.ROM                                     | ok | xx | ok |      |        |            |
MIROV968.ROM                                    | ok | ok | ok |      |        |            | Same like V7MERC
MORSE KP800 VGA CL-GD520A-32PC-B.bin            | ok | ok | ok |      |        |            | CL Award
NCR VLB VGA CL-GD5428-80QC-A.bin                | ok | ok | ok |      |        |            |
R128GL.ROM                                      | ok | xx | ok |      |        |            |
RIVA128A.ROM                                    | ok | xx | ok |      |        |            | STB
S3T64V2.ROM                                     | ok | ok | ok | PCI  |        |            | S3
S3VIRGX2.ROM                                    | ok | ok | ok | PCI  |        |            | S3
Sapphire.9600NP.256.unknown.031028.rom          | ok | xx | ok |      |  256MB |            |
Sapphire.9600PRO.128.Samsung28.030829.rom       | ok | xx | ok |      |  128MB |            |
TNT2M64.ROM                                     | ok | ok | ok |      |        |            |
TSVGA 9020-12 ET4000 ISA VGA.bin                | ok | ok | ok | ISA  |        |            |
Tseng ET3000AX ISA VGA-VGA ULTRA.bin            | ok | ok | ok | ISA  |        |            |
V7MERC.ROM                                      | ok | ok | ok |      |        |            |
V7_Vega                                         | ok | ok | ok |      |        |            | uses 3dfx font set, different fonts than V7MERC
video_seven_vega_vga_62L1989V5_435-0016-47.bin  | ok | ok | ok |      |        |            |
VANTA.ROM                                       | ok | ok | ?? |      |        |            | 8x16 not complete in ROM
VANTAGE.ROM                                     | xx | ok | ok |      |        |            | has no 8x8 font
VDOO3PCI.ROM                                    | ok | ok | ok |      |        |            | 3dfx Elpin
WIN1KXHR.ROM                                    | ok | ok | ok |      |        |            | ESLA
WONDER16.ROM                                    | ok | ok | ok |      |        |            |
XGA.ROM                                         | ok | ok | ok |      |        |            | Phoenix
et4000_stb.vbi                                  | ok | xx | ok |      |        |            |
et4000w32isa.BIN                                | ok | ok | ok |      |        |            |
et4000_weirdlowerL.bin                          | ok | ok | ok | ISA  |512k/1M |            | Has a weird lower L in 8x14 and 8x16 charsets. Typical TSENG change to a PC font.
OakTechnolgy-unknown-1.bin                      | ok | ok | ok |      |        |            |
OakTechnolgyVGA-KO77.bin                        | ok | ok | ok |      |        |            |
QuadtelS3_86C801_86C805EnhancedVGABIOS2.13.01   | ok | ok | ok |      |        |            |
QuadtelVGABIOSVersion1.21.00.bin                | ok | ok | ok |      |        |            |
SVGA141.ROM                                     | ok | ok | ok |      |        |            |
s3_764.bin                                      | ok | ok | ok |      |        |            |
TridentTVGA8900C_S27C256.bin                    | ?? | ?? | ?? |      |        |            |
tgui9400cxi.vbi                                 | ok | ok | ok |      |        |            |
tvga-c4.3.rom                                   | ok | ok | ok |      |        |            |
tvga-d3.0.rom                                   | ok | ok | ok |      |        |            |
tvga9000i-d4.01e                                | ?? | ?? | ?? |      |        |            |
tvga9000i-v2.vbi                                | ok | ok | ok |      |        |            |
tvga9000a_d211.bin                              | ok | ok | ok |      |        |            |
tvga9000a_d301.bin                              | ok | ok | ok |      |        |            |
tvga8800cs                                      | ok | ok | ok |      |        |            |
tvga8800cs_2                                    | ok | ok | ok |      |        |            |
BLADEXP.vbi                                     | ok | ok | ok |      |        |            |
BLADE3D_AGP.vbi                                 | ok | ok | ok |      |        |            |
BLADE3D_AGP_HIS.vbi                             | ok | ok | ok |      |        |            |
BLADE3D_PCI.vbi                                 | ok | ok | ok |      |        |            |
vgaedge.bin                                     | ok | ok | ok |      |        |            |
TsengLabsVGA-4000BIOSV1.1.bin                   | ok | ok | ok |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
ATIEgaWonder800p.bin                            | ok | ok | ok |      |        |            |
ami-ega.rom                                     | ok | ok | xx |      |        |            | VERY SPECIAL FONTS, 2 different 8x8 (1 is mirrored) and one 8x14
genoa-ega-2.41.rom                              | ok | ok | xx |      |        |            |
ibm-ega.rom                                     | ok | ok | xx |      |        |            |
NSILogic-SmartEGAPlus-04-086-01Rev1.45-U21.bin  | ok | ok | xx |      |        |            |
wd-pega.rom                                     | ok | ok | xx |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
IBM VGA                                         | ok | ok | ok |      |        |            | has a full 8x8 charset in 8x8, 8x14 and 8x16
IBM_PC_BIOS_1981-04-24_HALF_8x8.bin             | LO | XX | XX | ---  | ------ |            | IBM PC BIOS, only lower 128 characters, no "graphical" chars.
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
=> IN THIS SECTION: LOCALIZED VIDEO ROMS (greek, ...)
CGA_PRAVETZ.ROM                                 | ok | xx | xx |      |        |            | 4 different kyrillic fonts
acer500-II_cga_rom.bin                          | ok | xx | ?? |      |        |            | 2 different greek 8x8, somewhat strange 8x16 TBD
ati_small_wonder_rev1_GR-ROM.bin                | ok | xx | ?? |      |        |            | 4 different greek 8x8
clone2_cga_rom.bin                              | xx | ?? | ?? |      |        |            |
clone_cga_rom.bin                               | xx | ?? | ?? |      |        |            |
hyundai_mono-graphics-board_e40080004           | xx | ?? | ?? |      |        |            |
ibm5155_cga_rom_memotek_greek                   | ok | xx | xx |      |        |            | 10 different greek fonts?
tvga9000a_japan.vbi                             | ok | ok | ok |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
mda.rom                                         | ?? | ?? | ?? |      |        |            | 8k ROM only font data, what is this? not extracted yet, some problems
50146chareuro.rom                               | ok | xx | ok |      |        |            | Tandy 1000, 8x8 and 8x14 in both a 8x16 array with padding zero bytes
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
=> IN THIS SECTION: SYSTEM BIOS
ali1429g.amw (AMI WINBIOS)                      | LO | xx | xx |      |        |            |
amic206.bin                                     | xx | xx | xx |      |        |            | NO FONT at all
ami386.bin                                      | LO | xx | xx |      |        |            |
amxtv132.rom                                    | LO | xx | xx |      |        |            |
award-2.05.rom                                  | LO | xx | xx |      |        |            |
DTK.PII-151B-BIOS.version.1.06B.bin             | xx | xx | xx |      |        |            | NO FONT at all
dtk_erso_2.42_2764.bin                          | LO | xx | xx |      |        |            |
genxt.bin                                       | LO | xx | xx |      |        |            |
JukoD16X-BIOSversion1.2.bin                     | xx | xx | xx |      |        |            | NO FONT at all
LongshineLCS-6821N-BIOSversion1.04.bin          | xx | xx | xx |      |        |            | NO FONT at all
olivetti-m24-1.21.rom                           | LO | xx | xx |      |        |            |
opt495sx.ami                                    | LO | xx | xx |      |        |            |
phoenix-2.51.rom                                | LO | xx | xx |      |        |            |
ToshibaT1000-BIOSROM-V4.10.bin                  | ?? | xx | xx |      |        |            | lo and hi in different places
toshibaT5200cbiosv3.bin                         | ok | xx | ok |      |        |            | VERY SPECIAL contains each 2 different fonts, 8x8 and 8x16
VTech-LaserTurboXT-BIOS-V1.11-27C64D.bin        | LO | xx | xx |      |        |            | VERY SPECIAL
VTech-LaserXT3-BIOS-V1.26-27C64.bin             | LO | xx | xx |      |        |            | VERY SPECIAL
wang3050_bios_rom                               | ok | ok | ok |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
ibmjap.rom                                      | ok | ok | ok |      |        |            | Japanese PS/2 BIOS
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
=> IN THIS SECTION: FONTS THAT ARE AVAILABLE IN SOURCE
seabios                                         | ok | ok | ok | ---  | ------ |            | from official source
bochs                                           | LO | XX | XX | ---  | ------ |            | from official source
3dfx                                            | ok | ok | ok |      |        |            | from leaked source
IBM PC BIOS V1                                  | LO | XX | XX |      |        |   1981     | from IBM's source
IBM PC BIOS V2,V3                               | LO | XX | XX |      |        |   1981     | from IBM's source
IBM AT BIOS V1,V2,V3                            | LO | XX | XX |      |        |   1981     | from IBM's source
IBM XT BIOS V1,V2,V3                            | LO | XX | XX |      |        |   1981     | from IBM's source
IBM XT286 BIOS V1                               | LO | XX | XX |      |        |   1981     | from IBM's source
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------

OTHER SOURCES

The folder 'other_sources' contains subfolders, which each holds a set of files for a ROM-font. They were not extracted from ROMs, they are already available as source. These sources were adapted and simple bin-generators were added to create the binary font files. These are available:

ibm_pc             -  original IBM PC, V1/V2/V3
ibm_xt             -  IBM XT, V1/V2/V3
ibm_xt286          -  IBM XT 286, only one BIOS available
ibm_at             -  IBM AT, V1/V2/V3
seabios            -  qemu seabios, 8x8, 8x14, 8x16
3dfx_leadked_bios  -  original source code, 8x8, 8x14, 8x16, 9x14, 9x16
bochs_bios         -  bochs bios, 8x8, only lower half of charset implemented

Not all are yet converted to C (most of them in ASM) and bins are generated. The original sources are provided already.

comparing fonts / observations:

Have a look at MD5SUMs file, it is sorted by sum. This means, you will se which cards share same font. If you want to compare you may use a image viewer and view the zoomed images of the desired fonts.

The folder lowercharset holds the lower 128 characters of all 8x8 fonts to see, which one uses the original IBM PC's or the second version of this font.