Sadly there's no Windows tool for saving BIOS image of S3 Graphics cards, but perhaps it would be possible to add the support to GPU-Z? I have a tool to flash VGA BIOS for S3 Graphics cards but it's rather useless without a simple way to extract the BIOS.
However, with Linux a rather simple Python script makes it possible to save the BIOS image. I don't know how much is Linux specific, but I guess it should also be possible with Windows?
http://unichrome.cvs.sourceforge.net/unichrome/utils/ (it's part of the work for UniChrome/OpenChrome open source driver)
Please!
However, with Linux a rather simple Python script makes it possible to save the BIOS image. I don't know how much is Linux specific, but I guess it should also be possible with Windows?
http://unichrome.cvs.sourceforge.net/unichrome/utils/ (it's part of the work for UniChrome/OpenChrome open source driver)
Code:
#! /usr/bin/env python
#
# Reads VGA rom on standard x86 memory location.
# Tries to retrieve pci vendor and card ids from pci data structure.
# Writes image out to /tmp/VGAROM_<vendor>_<device>.img.
#
#
# /dev/mem is probably awfully linux specific
#
# Luc Verhaegen -- nothing copyrightable here.
from array import array
import sys
if __name__ == "__main__":
mem = open("/dev/mem", "rb")
mem.seek(0xC0000)
rom = array("B")
rom.fromfile(mem, 3)
if (rom[0] != 0x55) and (rom[1] != 0xAA):
print "No x86 video rom found."
mem.close()
sys.exit()
size = rom[2] * 512
print "x86 video rom found: %d bytes large." % size
rom.fromfile(mem, size - 3)
mem.close()
crc = 0;
for byte in rom:
crc = crc + byte
if crc > 0xFF:
crc = crc - 0x100
if crc:
print "Checksum failed."
# Read location of pci data.
pciloc = rom[0x18]
# check signature
if ((rom[pciloc] != 0x50) or (rom[pciloc + 1] != 0x43) or
(rom[pciloc + 2] != 0x49) or (rom[pciloc + 3] != 0x52)):
print "no PCIR signature."
name = "/tmp/VGAROM_unknown.img"
else:
vendor = "%04X" % ((rom[pciloc + 5] << 8) | rom[pciloc + 4])
device = "%04X" % ((rom[pciloc + 7] << 8) | rom[pciloc + 6])
name = "/tmp/VGAROM_%s_%s.img" % (vendor, device)
dump = open(name, "wb")
print "Writing complete rom to %s" % name
rom.tofile(dump)
Please!