NVIDIA BIOS Modification Program

Example Script

.An example script is shown below:

// BIOSMOD Script to edit the default flat panel EDID
//                                   

Struct EDIDAHeader find

    // * HEADER * (8 bytes)
    // EDID_1_HEAD
    byte    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00

    // * Vendor/Product ID * (10 bytes)
    // MFG_NAME
    //RECORD chr2l:3=0, chr3:5=0Dh, rsv:1=0, chr1:5=0Bh, chr2h:2=2
    word    0000110100101110b

    byte    ?   // ID Product Code
    byte    ?   
    dword   ?   // ID Serial Number

    byte    ?   // Week
    byte    ?   // Year

    // * EDID Structure Version * (2 bytes)
    byte    1   // Version
    byte    2   // Revision

EndStruct


Struct EDIDA at EDIDAHeader+0x0014
    // * Basic Display Parameters / Features * (5 bytes)
    label   EDIDAVideoInputDefiniton
    byte    ?   // Video Input Definition
    byte    ?   // Max Horizontal Image Size
    byte    ?   // Max Vertial Image Size
    byte    ?   // Gamma
    byte    ?   // Feature Support (DPMS)

    // * Color Characteristics * (10 bytes)
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 
    byte    ?   // 

    // * Established Timings * (3 bytes)
    label   EDIDAEstablishedTimingI
    byte    ? // Established Timings I
    label   EDIDAEstablishedTimingII
    byte    ? // Established Timings II
    label   EDIDAManufacturesTimings
    byte    ? // Manufacture Timings

    // * Standard Timing Identification * (16 bytes)
    byte    ?
    byte    ?
    word    ?
    word    ?
    word    ?
    word    ?
    word    ?
    word    ?
    word    ?

    // * Detailed Timing Description * (72 bytes)
    label   EDIDAPixelClock
    word    ? // Pixel Clock / 10,000

    label   EDIDAHorizontalActive
    byte    ? // Horizontal Active
    label   EDIDAHorizontalBlanking
    byte    ? // Horizontal Blanking
    label   EDIDAhorizontalActiveBlanking
    byte    ? // Horizontal Active Blanking

    label   EDIDAVerticalActive
    byte    ? // Vertical Active
    label   EDIDAVerticalBlanking
    byte    ? // Vertical Blanking
    label   EDIDAVerticalActiveBlanking
    byte    ? // Vertical Active/Blanking MSN

    label   EDIDAHorizontalSyncOffset
    byte    ? // Horizontal Sync Offset
    label   EDIDAHorizontalSyncPulseWidth
    byte    ? // Horizontal Sync Pulse Width
    label   EDIDAVerticalSyncOffsetPulseWidth
    byte    ? // Vertical Sync_Offset/Pulse Width
    label   EDIDAHorizVertSync
    byte    ? // Horiz/Vert Sync

    label   EDIDAHorizontalImageSize
    byte    ? // Horizontal Image Size
    label   EDIDAVerticalImageSize
    byte    ? // Vertial Image Size
    label   EDIDAHorizVertImageSize
    byte    ? // Horiz/Vert Image Size

    label   EDIDAHorizontalBorder
    byte    ? // Horizontal Border
    label   EDIDAVerticalBoarder
    byte    ? // Vertical Border
    
    label   EDIDAFlags
    byte    ? // Flags

    skip    18
    skip    18
    skip    18

    // * Extension Flag * (1 byte)
    byte    ?

    // * Checksum * (1 byte)
    label   EDIDAChecksum
    byte    ?

EndStruct

valueprompt EDIDAPixelClock, 'Pixel Clock / 10,000:', 10, EDIDAPixelClock:0:16

valueprompt EDIDAHorizontalActivePrompt, 'Horizontal Active:', 10, EDIDAHorizontalActive:0:8, EDIDAHorizontalActiveBlanking:4:4
valueprompt EDIDAHorizontalBlankingPrompt, 'Horizontal Blanking:', 10, EDIDAHorizontalBlanking:0:8, EDIDAHorizontalActiveBlanking:0:4

valueprompt EDIDAVerticalActivePrompt, 'Vertical Active:', 10, EDIDAVerticalActive:0:8, EDIDAVerticalActiveBlanking:4:4
valueprompt EDIDAVerticalBlankingPrompt, 'Vertical Blanking:', 10, EDIDAVerticalBlanking:0:8, EDIDAVerticalActiveBlanking:0:4

valueprompt EDIDAHorizontalSyncOffsetPrompt, 'Horizontal Sync Offset:', 10, EDIDAHorizontalSyncOffset:0:8, EDIDAHorizVertSync:6:2
valueprompt EDIDAHorizontalSyncPulseWidthPrompt, 'Horizontal Sync Pulse Width:', 10, EDIDAHorizontalSyncPulseWidth:0:8, EDIDAHorizVertSync:4:2

valueprompt EDIDAVerticalSyncOffsetPrompt, 'Vertical Sync Offset:', 10, EDIDAVerticalSyncOffsetPulseWidth:4:4, EDIDAHorizVertSync:2:2
valueprompt EDIDAVerticalSyncPulseWidthPrompt, 'Vertical Sync Pulse Width:', 10, EDIDAVerticalSyncOffsetPulseWidth:0:4, EDIDAHorizVertSync:0:2

valueprompt EDIDAHorizontalImageSizePrompt, 'Horizontal Image Size:', 10, EDIDAHorizontalImageSize:0:8, EDIDAHorizVertImageSize:4:4
valueprompt EDIDAVerticalImageSizePrompt, 'Vertial Image Size:', 10, EDIDAVerticalImageSize:0:8, EDIDAHorizVertImageSize:0:4

valueprompt EDIDAHorizontalBorderPrompt, 'Horizontal Border:', 10, EDIDAHorizontalBorder:0:8
valueprompt EDIDAVerticalBoarderPrompt, 'Vertical Border:', 10, EDIDAVerticalBoarder:0:8

valueprompt EDIDAInterlacedPrompt, 'Interlaced', 2, EDIDAFlags:7:1

EnumDef StereoEnum
    '( 000 ) No stereo', 0
    '( 010 ) Field sequential stereo, right image when stereo sync = 1', 2
    '( 100 ) Field sequential stereo, left image when stereo sync = 1', 4
    '( 011 ) 2-way interleaved stereo, right image on even lines', 3
    '( 101 ) 2-way interleaved stereo, left image on even lines', 5
    '( 110 ) 4-way interleaved stereo', 6
    '( 111 ) Side-by-side interleaved stereo', 7
EndEnumDef

enumprompt StereoPrompt, 'Stereo:', StereoEnum, EDIDAFlags:5:2, EDIDAFlags:0:1

EnumDef SyncConfigurationEnum
    '( 00 00 ) Analog composite, no serration, green sync', 0x00
    '( 00 01 ) Analog composite, no serration, RGB sync', 0x01
    '( 00 10 ) Analog composite, serration, green sync', 0x02
    '( 00 11 ) Analog composite, serration, RGB sync', 0x03
    '( 01 00 ) Bipolar analog composite, no serration, green sync', 0x04
    '( 01 01 ) Bipolar analog composite, no serration, RGB sync', 0x05
    '( 01 10 ) Bipolar analog composite, serration, green sync', 0x06
    '( 01 11 ) Bipolar analog composite, serration, RGB sync', 0x07
    '( 10 00 ) Digital composite, no serration, compositive negative', 0x08
    '( 10 01 ) Digital composite, no serration, compositive positive', 0x09
    '( 10 10 ) Digital composite, serration, compositive negative', 0x0A
    '( 10 11 ) Digital composite, serration, compositive positive', 0x0B
    '( 11 00 ) Digital separate, vsync negative, hsync negative', 0x0C
    '( 11 01 ) Digital separate, vsync negative, hsync positive', 0x0D
    '( 11 10 ) Digital separate, vsync positive, hsync negative', 0x0E
    '( 11 11 ) Digital separate, vsync positive, hsync positive', 0x0F
EndEnumDef

enumprompt SyncConfigurationPrompt, 'Sync Configuration:', SyncConfigurationEnum, EDIDAFlags:1:4

checksum EDIDAHeader, EDIDAChecksum, EDIDAChecksum