Camera drivers info

For Sony Ericsson K850i phone the original camera driver that are given by the manufactures are not that good, like does not have much features and much fineness. Here I have gathered many drivers what I found on the internet. These drivers provide manual focus, manual shutter speed, realistic colors, special flash functions, etc. There are many drivers each with a peculiar features. So if you want to try those drivers then you can download from below.

Original camera features:

Shoot Mode
Normal (set by default)
BestPic (Sony’s trademark technology)
Panorama (stitches a batch of three photos together, no top resolution available)
Frames (select various frames right on the screen)

Scenes
Auto
Twilight landscape
Twilight portrait
Landscape
Portrait
Beach/Snow
Sports
Document

Focus (autofocus cannot be disabled)
Auto
Macro
Infinite

Flash (forced flash not available)
Auto
Red-eye reduction
Disabled

Timer (can be either enabled or disabled, time span is not adjustable)

ISO
Auto (ISO64-ISO400)
ISO100
ISO200
ISO400

Effects
Black&White
Negative
Sepia
Solarize

White balance
Auto
Daylight
Cloudy
Fluorescent
Incandescent

Metering mode
Normal (Center weighted average)
Spot

Image resolutions
5 MP (2592x1944 pixels)
3 MP (2048x1536 pixels)
1 MP (1280x960 pixels)
VGA (640x480 pixels)

Settings
Self-timer (10 seconds)
Picture quality – Fine, Normal
AF Light – Auto, can be disabled
BestPIC – Fast, Slow
Review – Yes or No
Stabilizer – On or Off
Save to – built-in memory or memory card
Auto picture rotation – Yes or No
Shutter sound – five available, can be disabled at all
Shot counter reset

Digital zoom – x16
Shutter speed – 1/4-1/1600s
Average file size (Fine quality) – from 1 to 1.5 MB
Time to save a shot – 2-3 seconds
Camera startup time – 1.5-2 seconds
Matrix type: CMOS

Lens and sensor

Sony IMX020 sensor
 * Diagonal 6.52 mm (Type 1/2.8) 5.15M effective pixels
 * High picture quality sensor for cellular phones
 * The industry's smallest 2.0 μm unit pixel
 * 10-bit column A/D converter readout
 * High-speed serial interface
 * Extensive set of solutions

Smaller Pixels and Improved Picture Quality
Due to the strong desires for module miniaturization in the cameras included in cellular phones, it is necessary to reduce the pixel size when increasing the pixel count.

Faster Operation
The IMX020 adopts Sony's unique column-parallel A/D conversion technique that is optimal for increasing operating speeds. Sony also introduced their unique two-channel data strobe type sub-LVDS serial interface, which allows applications to read out the 10 bits per pixel output at 864 Mbps (a pixel rate of 86.4 MHz). Despite the large number of pixels, 5M pixels, this allows the IMX020 top operate at 15 frame/s in progressive scan mode and to achieve the high speed of 120 frame/s in 1/8 decimation mode, which is equivalent to QVGA output mode.

Extensive Set of Solutions
To respond to our customer's diverse needs, Sony provides solutions in a variety of forms as IMX020-related products.
 • Independent sensor
 • IU020 series (lens modules): sensor + optical system
 • MCB990 series (camera modules): sensor + camera DSP + optical system
These lens and camera modules use a lens optimized for the IMX020 and achieve miniaturization, high resolution, and low shading.

Thanhcong to camdriver K850 v5.2

download
Date: 12.12.2011.
Author: Thanhcong to
Nationality: Vietnamese

//Information section
//=========================================================

info_name=thanhcong_to;
info_vendor=se-cafe.net;
info_major_ver=5;
info_minor_ver=2;

//================================================
// Macros for camera
//================================================

SET_REG =             // Sets register to value 
  05 02 00 !0 !1 $f   // Syntax: SET_REG(REG,VAL)
  $r2 1 1 $d0002      // 
  ;

READ_REG =            // Read from camera and put result in platf. reg 4
  05 01 00 !0 01 $f   // Syntax: READ_REG(REG)
  $r2 4 4 $d0002      // Result saved in reg 4.
  ;

CLEAR_EVENT =         // Clears event register. FIFO is not cleared
  05 01 00 03 03 $f   // Packet length, access code, id number, reg to read (int source), req packet length
  $r4 1 123 $d0002    // Put Int_source in reg 1, Event_info in reg 2 and Event_id in reg 3
  $c3 00              // If internal register 3 holds 0 (means the queue was empty)
    $"CAMDRIVER0: Queue_was_empty"
  $cl
    $"CAMDRIVER0: Cleared_Int_Source_%1_Event_Info_%2_Event_ID_%3"   
  $cx
  #SET_REG(06,03)     // Clears the event     
  ;

CLEAR_EVENT_FIFO =    // Clears the event FIFO
  $s0 01              // Set internal register 0 to 0x01 (otherwise the loop won't even start)
  [ 0 ff              // Loop 0xff times or quit looping when internal register 0 holds 0
    #CLEAR_EVENT      // Read the event and clear it
    $c3 00            // If internal register 3 holds 00 (= if EVENT_ID equals 00, meaning the queue is empty)
      $s0 00          // Set internal register 0 to 0x00 in order to exit the loop
    $cx
  ]
  ;

SEND_COMMAND =          // Only send command, no reply is read out
  06 02 00 01 !1 !0 $f  // Syntax: SEND_COMMAND(REG,VALUE)
  $r3 111 $d0002        //
  ; 

WAIT_FOR_TRIG =       // Listen to TRIG
  $h 0 02 5 1000      // Listen to trig on Application GPIO_02 = TRIG
  $c0 00                
    $"CAMDRIVER0: TRIG_Timeout"   // No event occured
  $cl
    $"CAMDRIVER0: TRIG_Recieved"  // Event occured
  $cx
  ;
                      // Reads and clears events until the specified event occurs. 
POLL_EVENT_ID =       // Syntax: POLL_EVENT_ID($s4 Event Identification)           
  !0                  // "Execute" the first parameter
  $s0 01              // Set internal register 0 to 0x01 (otherwise the loop won't even start)
  [ 0 ff              // Loop 0xff times or quit looping when internal register 0 holds 0
    #CLEAR_EVENT      // Clear event. If the event id (which the CLEAR_EVENT-makro will store in
                      // internal register 2) is equal to 0xea (= EV_MODE_CHANGED)
    $-3 r4            // Subtract the contents of internal register 4 from the contents of register 3 (EVENT_ID)
                      // and store the result in internal register 3
    $c3 00            // If internal register 3 holds 0
      $"CAMDRIVER0: Successfully_acknowledged_Event_ID_%4"
      $s0 00          // Set internal register 0 to 0x00 in order to exit the loop
    $cx               // End if
  ]
  ;

CAPTURE_EVENT = 
  #WAIT_FOR_TRIG
  #CLEAR_EVENT
  ;

CHANGE_MODE =               // Syntax: CHANGE_MODE(command, value) 
  #CLEAR_EVENT_FIFO         // Clear the fifo
  #SEND_COMMAND(!0,!1)      // Send command
  #POLL_EVENT_ID($s4 ea)    // Wait for EV_mode_changed (0xea)
  #SET_REG(06,03)
  ;

COM_EVENT =                 // Syntax: COM_EVENT(command, value)
  #CLEAR_EVENT_FIFO
  #SEND_COMMAND(!0,!1)
  #WAIT_FOR_TRIG
  #CLEAR_EVENT
  ;

UPDATE_WB =           // Updates white balance if necessary
  $p5 01
  $c5 00       // WB is auto?
  $cl
    $u01       // Update WB
  $cx;

UPDATE_PHOTO =        // Updates photo metering
  $p5 16
  $c5 00       // Photo metering is not spot?
  $cl
    $u16       // Update photo metering => spot
  $cx;

WB_ISO100 =           // Correct WB for ISO100 xenon  
  #SET_REG(98,25)    // FLASH_CC_R = 0x25 (colour temperature of 7000 K for flash)
  #SET_REG(99,70)    // FLASH_CC_B = 0x73 (colour temperature of 7000 K for flash)
  ;

WB_ISO200 =           // Correct WB for ISO200 xenon
  #SET_REG(98,27)    // FLASH_CC_R = 0x27 (colour temperature of 6000 K for flash)
  #SET_REG(99,6A)    // FLASH_CC_B = 0x6D (colour temperature of 6000 K for flash)
  ;
  
WB_ISO400 =           // Correct WB for ISO400 xenon
  #SET_REG(98,28)    // FLASH_CC_R = 0x28 (colour temperature of 5700 K for flash)
  #SET_REG(99,68)    // FLASH_CC_B = 0x6A (colour temperature of 5700 K for flash)
  ;

FLASH_LIMIT_ISO100 =  // Set flash limits for ISO100  
  #SET_REG(A2,C8) #SET_REG(A3,25) // Flash limits 
  #SET_REG(A4,D0) #SET_REG(A5,25)
  ;

FLASH_LIMIT_ISO200 =  // Set flash limits for ISO200
  #SET_REG(A2,C7) #SET_REG(A3,21) 
  #SET_REG(A4,D0) #SET_REG(A5,21)  
  ;

FLASH_LIMIT_ISO400 =  // Set flash limits for ISO400
  #SET_REG(A2,C6) #SET_REG(A3,1D) 
  #SET_REG(A4,D0) #SET_REG(A5,1D)  
  ;

UPDATE_ISO =          // Updates ISO
  $p5 11
  $c5 00       // ISO is auto
  $cl
    $u11       // Update ISO
  $cx;

DOC_MODE =            // Updates special doc scene settings 
  #COM_EVENT(55,02)   // Increase contrast to 2
  #COM_EVENT(56,08)   // Increase sharpness to max (8)
  #COM_EVENT(06,02)   // Increase exposure to 2
  #SET_REG(95,01)     // Set flash ISO to 100 
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  ;

NOT_DOC_MODE =        // Reverses special doc scene settings
  #COM_EVENT(02,00)   // AE_AUTO
  #COM_EVENT(55,00)   // Reset contrast
  #COM_EVENT(56,00)   // Reset sharpness
  #COM_EVENT(06,00)   // Reset exposure
  #SET_REG(95,04)     // Set flash ISO to default 200 
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  ;

UPDATE_MIN_FRMRATE =  // Updates minimum framerate
  $p5 10
  $c5 03 
    #SET_REG(22,04)   // DRAFT_MIN_FRMRATE 2 fps
  $cl
    #SET_REG(22,0A)   // DRAFT_MIN_FRMRATE 5 fps
  $cx;

FLASH_SETTINGS =
  #SET_REG(92,00)     // FLASH_MSHUT_MODE = 0
  #SET_REG(A0,02)     // FLASH_REDEYE_NUM = 2
  #SET_REG(A1,07)     // FLASH_REDEYE_TWAIT = 7
  #SET_REG(96,00)     // FLASH_EXPOSING_OFFSET = 0x0400
  #SET_REG(97,04)     // Low byte of FLASH_EXPOSING_OFFSET
  #SET_REG(9A,F0)     // CC_FLASH_OFFSET_MAX_RATIO
  #SET_REG(9B,A0)     // CC_FLASH_OFFSET_MIN_RATIO
  #SET_REG(9C,0D)     // CC_FLASH_OFFSET_DARK
  #SET_REG(9D,2A)     // CC_FLASH_OFFSET_BRIGHT 
  ;

TO_DRAFT =                     // Changes to draft (but not on display)
  $cf.02 0                     // If not draft       
    #CHANGE_MODE(33,00)        // MODE_MAIN
    $sf.02 1                   // Set draft flag to 1
  $cl
  $cx
  ;


//======================================================
// macro manual settings
//======================================================


ISO_AUTO =
  #TO_DRAFT
  $sc 00
  #SET_REG(95,03)
  #COM_EVENT(02,00)
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  #COM_EVENT(5A,01); 

ISO100 =
  #TO_DRAFT
  $sc 01 
  #SET_REG(61,01)
  #SET_REG(95,01)
  #COM_EVENT(02,04)
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  #COM_EVENT(5A,01);
  
ISO125 =
  #TO_DRAFT
  $sc 02 
  #SET_REG(61,02)
  #SET_REG(95,02)
  #COM_EVENT(02,04)
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  #COM_EVENT(5A,01);

ISO160 =
  #TO_DRAFT
  $sc 03 
  #SET_REG(61,03)
  #SET_REG(95,03)
  #COM_EVENT(02,04)
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  #COM_EVENT(5A,01);

ISO200 =
  #TO_DRAFT
  $sc 04 
  #SET_REG(61,04)
  #SET_REG(95,04)
  #COM_EVENT(02,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01);

ISO250 =
  #TO_DRAFT
  $sc 05 
  #SET_REG(61,05)
  #SET_REG(95,05)
  #COM_EVENT(02,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01);

ISO320 =
  #TO_DRAFT
  $sc 06 
  #SET_REG(61,06)
  #SET_REG(95,06)
  #COM_EVENT(02,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01);

ISO400 =
  #TO_DRAFT
  $sc 07
  #SET_REG(61,07)
  #SET_REG(95,07)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01);

ISO500 =
  #TO_DRAFT
  $sc 08 
  #SET_REG(61,08)
  #SET_REG(95,08)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01);

ISO640 =
  #TO_DRAFT
  $sc 09 
  #SET_REG(61,09)
  #SET_REG(95,09)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01);

ISO800 =
  #TO_DRAFT
  $sc 0a 
  #SET_REG(61,0A)
  #SET_REG(95,0A)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01);

ISO1000 =
  #TO_DRAFT
  $sc 0b 
  #SET_REG(61,0B)
  #SET_REG(95,0B)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01);


MANUAL_FOCUS =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 03
  $*4 08
  #COM_EVENT(43,$w4)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;

MANUAL_CONTRAST =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 08
  #COM_EVENT(55,$w4)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;

MANUAL_SATURATION =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 08
  $*4 08
  #COM_EVENT(58,$w4)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;
  
MANUAL_HUE =  
  #COM_EVENT(53,00)
  $s4 %0  
  $-4 08  
  $*4 12  
  #COM_EVENT(57,$w4)  
  $c1  
  #COM_EVENT(61,40)  
  $c1 $cx  
  $cx 
  ;


//MANUAL_SHUTTER
MANUAL_BRIGHTNESS =
  $s4 %0
  $-4 03
  $*4 07
  $/4 02
  #COM_EVENT(02,02)
  #SET_REG(60,$w4)
  $sf.0a 1
  ;





//Brightness
MANUAL_SHUTTER =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 08
  #COM_EVENT(54,$w4)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;

CC_CYANRED =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 03
  $*4 13
  #SET_REG(65,$w4)
  #COM_EVENT(13,01)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;

CC_YELLOWBLUE =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 03
  $*4 13
  #SET_REG(66,$w4)
  #COM_EVENT(13,01)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;

MANUAL_WB =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 08
  #COM_EVENT(11,$w4)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;

MANUAL_EFFECT =
  $s4 %0
  $-4 09
  #COM_EVENT(53,$w4)
  ;
 
MANUAL_SS_FLASH =
  #COM_EVENT(53,00)
  $s4 %0
  $-4 03
  $*4 08
  #SET_REG(9E,$w4)
  $c1
  #COM_EVENT(61,40)
  $c1 $cx
  $cx
  ;

WB_CC =
 $ph 09
 $ch 01
  #SET_REG(65,00)
  #SET_REG(66,10)
  #COM_EVENT(13,01)
 $cl
  #SET_REG(65,00)
  #SET_REG(66,07)
  $pi 01
  $ci 00
   #COM_EVENT(13,01)
  $cl
   #COM_EVENT(13,00)
  $cx
 $cx;

EV =
  $s5 %0 $ma 5 $-5 09 
  #COM_EVENT(06,$w5)  
  ;

ISO =
  $s5 %0 $ma 5 $-5 03 
  #SET_REG(61,$w5)
  #COM_EVENT(02,02)
  ;

CHECK = 
  $p5 10
  $c5 03
  #ISO
  $cl
  #EV
  $cx;


//Camera characteristics section
//=========================================================


cam_power_on_0 = 5, 2, 31, 0, 05;   // Pull RST pin (expander_GPIO_O9 = GPIO_31), delay 5ms 
cam_power_on_1 = 5, 2, 20, 1, 05;   // Videocamera standby (expander_GPIO_00 = GPIO_30)
cam_power_on_2 = 5, 2, 33, 1, 00;   // VDDs (expander_GPIO_O11=GPIO_33) delay 5ms   
cam_power_on_3 = 5, 2, 30, 1, 05;   // VDDs (expander_GPIO_O8=GPIO_30) delay 5ms
cam_power_on_4 = 5, 3,  9, 6590,05; // Turn on 26 MHz clock, delay 5ms
cam_power_on_5 = 5, 2, 31, 1, 05;   // Release RST (expander_GPIO_09 = GPIO_41)

cam_power_off_0 = 5, 2, 31, 0, 05;  // Pull RST pin (expander_GPIO_09 = GPIO_41), delay 5ms
cam_power_off_1 = 5, 3,  9, 0, 05;  // Turn off 26 MHz clock and wait 5 ms
cam_power_off_2 = 5, 2, 30, 0, 20;  // VDDs (expander_GPIO_O8=GPIO_30), delay 32ms
cam_power_off_3 = 5, 2, 33, 0, 05;  // VDDs (expander_GPIO_O11=GPIO_33), delay 5ms 
cam_power_off_4 = 5, 2, 20, 0, 05;  // Release standby (expander_GPIO_00 = GPIO_30) for videocamera

cam_i2c_address = 1F;
cam_i2c_clock   = 64;         // 100 kHz
cam_vf_clock_freq = 9, 6590;  // 26 MHz clock
cam_ss_clock_freq = 9, 6590;  // 26 MHz clock

cam_vf_format    = B100;
cam_ss_format  = 0001;      // JPEG default
cam_ss_format_10 = B100;      // YCbCr
cam_ss_format_11 = B100;      // YCbCr

cam_data_offset    = 2;       // JPEG default
cam_data_offset_10 = 0;       // YCbCr
cam_data_offset_11 = 0;       // YCbCr

cam_vf_sync = 5;
cam_ss_sync = 5;

cam_post_processing_20 = 1;   // viewfinder rotation
cam_post_processing_25 = 1;   // videotelephony
cam_post_processing_26 = 1;   // videotelephony
cam_post_processing_29 = 1;   // video recording

cam_ss_jpeg_buf_size_1 = 25800; // 150 KB buffer for   640x480  SS
cam_ss_jpeg_buf_size_2 = 64000; // 400 KB buffer for  1280x960  SS
cam_ss_jpeg_buf_size_4 = 96000; // 600 KB buffer for  1632x1244 SS
cam_ss_jpeg_buf_size_5 = E1000; // 900 KB buffer for  2048x1536 SS
cam_ss_jpeg_buf_size_6 = 177000; //1500 KB buffer for  2592x1944 SS


// Supported sizes
//================================================

sup_sizes = 

  1[280,1E0,0],         //  SS 640  x 480  JPEG   
  2[500,3C0,0],         //  SS 1280 x 960  JPEG 1M
  
  4[660,4C8,0],         //  SS 1632 x 1224 JPEG 2M   
  5[800,600,0],         //  SS 2048 x 1536 JPEG 3M
  6[A20,798,0],         //  SS 2592 x 1944 JPEG 5M

  10[140, F0,0], //  SS 320  x 240  YCbCr     
  11[280,1E0,0], //  SS 640  x 480  YCbCr    
   
  20[140,F0,BB8],       //  VF  320 x 240  YCbCr 30 fps
  21[140,F0,5DC],       //  VF  320 x 240  YCbCr 15 fps
  
  25[60,80,4B0],        //  VT   96 x 128  YCbCr 12 fps max
  26[90,B0,4B0],        //  VT  144 x 176  YCbCr 12 fps max 

  29[90,B0,3E8],        //  VR  144 x 176  YCbCr 10 fps fixed
  2a[140,F0,BB8],       //  VR  320 x 240  YCbCr 30 fps fixed
  2b[140,F0,5DC],       //  VR  320 x 240  YCbCr 15 fps fixed
  2c[140,F0,2EE],       //  VR  320 x 240  YCbCr 7.5 fps fixed
  2f[140,F0,BB8]        //  VF  320 x 240  YCbCr 30 fps
  ;


// I2C sequences
//================================================

seq_init =                        // This sequence is run after power_on
  $sf 00                          // Set all flags to zero
  $sf.05 1                        // Normal JPEG compression
  $sf.02 1                        // Set draft flag to YES
  $s6 00                          // Set auto ISO  
  $s7 01                         // Quick start 
  $s8 00                          // Video HS OFF
  $sa 09                          // EV = 0
  $sc 00                          // Set iso to auto
  $se 00                          // Normal snapshot operation
  $sd 00                          // Flash mode "auto"
  $s8 01            // Quick VF Start Up
  #CAPTURE_EVENT                  // EV_CAM_READY 
  #CAPTURE_EVENT                  // EV_MUTE_OFF
  #SET_REG(29,01)                 // STILL_OUT_REPEAT

  #SET_REG(3B,03)  #SET_REG(3A,E8)// JPEG_RETRY_LIMIT
  
  #SET_REG(6B,06)             // SCANAF_MODE_1
  #SET_REG(6C,01)             // SCANAF_AF_ILLUMI
  #SET_REG(6F,3C)             // SCANAF_MAX_FRMRATE = 30 fps
  #SET_REG(70,1E)             // SCANAF_MIN_FRMRATE = 15 fps
  #SET_REG(64,1D)             // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)             // DRAFT_MIN_FRMRATE 5 fps

  #COM_EVENT(56,08)           // Sharpness
  #COM_EVENT(57,20)           // HUE
  #COM_EVENT(58,07)               // Saturation
  #SET_REG(95,04)                 // Default ISO 200
  #WB_ISO200                      // Correct xenon WB
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01)               // FLASH_INFO = 1
  ;

seq_ping = ;

// Supported properties
//===================================================================

sup_properties = 

  0[3,f,9],     // Exposure 
  1[0,4,0],     // White balance  
  2[0,3,0],     // Flicker  
  3[0,1,0],     // Vertical mirroring  
  4[0,1,0],     // Horisontal mirroring
  5[0,1,0],     // JPEG compression
  6[A,A0,A],    // Step zoom 
  7[0,1,0],     // Night mode, HS ON/OFF
  8[0,4,0],     // Effects  
  9[0,1,0],     // Focus mode
  A[0,2,0],     // Focus operation
  B[0,0,0],     // EXIF info 1
  C[0,0,0],     // EXIF info 2
  E[0,4,0],     // Xenon flash support
  10[0,7,0],    // Scenes    
  11[0,4,0],    // ISO
  12[0,1,0],    // Framerate adjustments for GUI speed
  16[0,1,0],    // Photo metering
  17[0,0,0],    // Xenon flash required
  18[0,1,0],    // Image stabilization
  19[0,2,0],    // Continuous zoom
  1A[0,0,0],    // Get zoom level in percentage
  1B[0,9,0],    // Snapshot operation
  1C[0,3,0],    // BestPic picture size
  1D[0,4,0],    // BestPic Operation
  1E[0,1,0]     // Reset and Test pattern 
  ;

// Property 0, Exposure
//---------------------------------------------------

seq_set_prop_0_3 =
  $p1 11
  $c1 01
  #ISO100  
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_4 =
  $p1 11
  $c1 01
  #ISO100
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_5 =
  $p1 11
  $c1 01
  #ISO125
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;
 
seq_set_prop_0_6 =
  $p1 11
  $c1 01
  #ISO160
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;

seq_set_prop_0_7 =
  $p1 11
  $c1 01
  #ISO200
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;

seq_set_prop_0_8 =
  $p1 11
  $c1 01
  #ISO250
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;

seq_set_prop_0_9 =
  $p1 11
  $c1 01
  #ISO_AUTO
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,00)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_a =
  $p1 11
  $c1 01
  #ISO320
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_b =
  $p1 11
  $c1 01
  #ISO400
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_c =
  $p1 11
  $c1 01
  #ISO500
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_d =
  $p1 11
  $c1 01
  #ISO640
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_e =
  $p1 11
  $c1 01
  #ISO800
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;


seq_set_prop_0_f =
  $p1 11
  $c1 01
  #ISO1000
  $cl
  $p1 08
  $c1 04
  #MANUAL_FOCUS
  $cl
  $p1 08
  $c1 01
  #MANUAL_CONTRAST
  $cl
  $p1 08
  $c1 03
  #MANUAL_SATURATION
  $cl
  $p1 08
  $c1 02
  #MANUAL_HUE
  $cl
  $p1 01
  $c1 03
  #CC_CYANRED
  $cl
  $p1 01
  $c1 04
  #CC_YELLOWBLUE
  $cl
  $p1 01
  $c1 02
  #MANUAL_WB
  $cl
  $p1 01
  $c1 01
  #MANUAL_EFFECT
  $cl
  $p1 11
  $c1 02
  #MANUAL_BRIGHTNESS
  $cl
  $p1 11
  $c1 03
  #COM_EVENT(02,01)
  $cl
  $cd 03
  #MANUAL_SS_FLASH
  $cl
  #CHECK
  $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx $cx;

/// Property 1, White balance
//---------------------------------------------------

seq_set_prop_1_0 = 
  #TO_DRAFT
  #COM_EVENT(11,00);   // Auto 
seq_set_prop_1_1 = 
  #TO_DRAFT
  #COM_EVENT(11,03);   // Incandescent
seq_set_prop_1_2 = 
  #TO_DRAFT
  #COM_EVENT(11,04);   // Flourescent
seq_set_prop_1_3 = 
  #TO_DRAFT
  #COM_EVENT(11,05);   // Outdoor clear sky
seq_set_prop_1_4 = 
  #TO_DRAFT
  #COM_EVENT(11,06);   // Outdoor cloudy


// Property 2, Flicker mode
//---------------------------------------------------

seq_set_prop_2_0 = #COM_EVENT(21,01);   // Auto
seq_set_prop_2_1 = #COM_EVENT(21,02);   // 50 Hz
seq_set_prop_2_2 = #COM_EVENT(21,03);   // 60 Hz
seq_set_prop_2_3 = #COM_EVENT(21,00);   // Disable


// Property 3, Vertical mirroring
//---------------------------------------------------

seq_set_prop_3_0 = #COM_EVENT(52,00);   // Off 
seq_set_prop_3_1 = #COM_EVENT(52,0A);   // On


// Property 4, Horizontal mirroring
//---------------------------------------------------

seq_set_prop_4_0 = #COM_EVENT(52,00);   // Off
seq_set_prop_4_1 = #COM_EVENT(52,05);   // On


// Property 5, JPEG compression
//---------------------------------------------------

seq_set_prop_5_0 = $sf.05 1;     // Normal compression
seq_set_prop_5_1 = $sf.05 0;     // Low compression


// Property 6, Zoom
//---------------------------------------------------

seq_set_prop_6 =                 // Set zoom level  y = -60x/150 + 68    
  #TO_DRAFT
  $s4 %0  $ma 4 
  $*4 3C  $/4 96  
  $s5 44  $-5 r4  
  #SET_REG(67,3C)                // ZM_SMTH_SPEED = 60 
  #COM_EVENT(61,$w5);            // Send value to camera  

seq_get_prop_6 = 
  #TO_DRAFT
  #READ_REG(69)   // Get zoom level x = -150y/60 + 170
  $*4 96  $/4 3C  $s0 AA
  $-0 r4  $s1 00  $s2 00  $s3 00;


// Property 7, Night mode 
//---------------------------------------------------

seq_set_prop_7_0 = ;        // Normal mode

seq_set_prop_7_1 = ;        // HS mode ON

// Property 8, Effects
//---------------------------------------------------
// 0 => normal, 1 => negative, 2 => solarize, 3 => sepia
// 4 => black&white

seq_set_prop_8 =
  #COM_EVENT(53,0F);

// Property 9, Focus mode  
//---------------------------------------------------

seq_set_prop_9_0 = 
  #TO_DRAFT
  #SET_REG(6A,00); // Normal range
seq_set_prop_9_1 = 
  #TO_DRAFT
  #SET_REG(6A,01); // Full range


// Property 10, Focus operation    
//----------------------------------------------------

seq_set_prop_a_0 =             // Stop AF 
  $cf.02 0                     // If not in draft mode 
    #CHANGE_MODE(33,00)        // MODE_MAIN
    $sf.02 1                   // Set draft flag to 1
    #COM_EVENT(43,00)          // MANUAL_FOCUS = 00, Infinity
    #COM_EVENT(56,04)
    #COM_EVENT(5A,01)          // FLASH_INFO = 01
  $cx
  ;
seq_set_prop_a_1 =             // Start AF
  #CHANGE_MODE(31,06)          // Half-release
  $sf.02 0                     // Not in draft mode
  ;
seq_set_prop_a_2 =             // Go to infinity, do not autofocus!
  #CHANGE_MODE(31,02)          // Half-release
  $sf.02 0                     // Not in draft mode
  ;

seq_get_prop_a = // Status of focus operation
  05 01 00 03 03 $f     // Packet length, access code, id number, reg to read (int source), req packet length
  $r4 1 123 $d0005      // Put Int_source in reg 0, Event_info in reg 2 and Event_id in reg 3
  $c3 e9                // If EV_HALF_REL, e9
    $b2 00 4 1         // Remove the flash notification bit
    $c2 00
      $"CAMDRIVER0: Focus_operation_succeded"
      $s0 04
   $p5 10
   $c5 04
   $cf.06 1
    #SEND_COMMAND(72,00)
    #READ_REG(71)
    $"CAMDRIVER0: Lens_position_=_%4"
    $cs4 1C
     #SET_REG(95,03)
     #WB_ISO200
     #FLASH_LIMIT_ISO100
    $cl
     #SET_REG(95,01)
     #WB_ISO100
     #FLASH_LIMIT_ISO100
    $cx
   $cl
      $cx
  $cl
  $cx
    $cl
      $"CAMDRIVER0: Focus_operation_failed"
      $s0 05
   $p5 10
   $c5 04
         #SET_REG(95,06)
   #WB_ISO400
         #FLASH_LIMIT_ISO400
        $cl
  $cx
 $cx
    $"CAMDRIVER0: Received_and_cleared_Int_Source_%0_Event_Info_%2_Event_ID_%3"
    #SET_REG(06,03)            // Clears the event     
  $cl
    $"CAMDRIVER0: Focus_operation_not_finnished"
    $s0 03         
  $cx
  $s1 00  $s2 00  $s3 00
  ;


// Property 11, EXIF 1    
//----------------------------------------------------

seq_get_prop_b = 
  #COM_EVENT(72,00)        // INFO_GET_DATA 
  05 01 00 B0 04 $f        // Read 4 bytes from adress B0
 $r5 0 0 1 2 3 $d0002     // ISO r0 r1, Shutter r2 r3
 ;

// Property 12, EXIF 2
//----------------------------------------------------

seq_get_prop_c =
  #COM_EVENT(72,00)        // INFO_GET_DATA 
  05 01 00 B4 02 $f        // Read 2 bytes from adress B4
 $r3 0 0 1 $d0002         // CC r0, Distance r1
  $cf.06 1
    $ce 00                 // If not BestPic
      $s2 01               // Flash
    $cl
      $s2 00               // BestPic, no flash used even if  
    $cx                    //          it was dark 
  $cl
    $s2 00                 // No flash
  $cx
  #READ_REG(4A) $m3 4      // Q-value
  ;

// Property 14, Xenon flash support    
//----------------------------------------------------

seq_set_prop_e_0 =         // Off
  $sd 00
  #SET_REG(91,00);         // FLASH_XENON_MODE = 0 

seq_set_prop_e_1 = $sd 01;

seq_set_prop_e_2 = 
  $sd 02                   // Auto internal flash
  #FLASH_SETTINGS;

seq_set_prop_e_3 = 
  $sd 03                   // Auto red-eye
  #FLASH_SETTINGS;

seq_set_prop_e_4 =         // Forced on
  $sd 04
  #SET_REG(91,03);   


// Property 16, Scenes    
//----------------------------------------------------

seq_set_prop_10_0 =        // Normal
  $sa 09
  #TO_DRAFT
  #SET_REG(64,1D)          // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)          // DRAFT_MIN_FRMRATE 5 fps
  #COM_EVENT(51,00)        // Auto scene
  #COM_EVENT(54,00)               // Brightness
  #COM_EVENT(55,00)               // Contrast
  #COM_EVENT(56,08)           // Sharpness
  #COM_EVENT(57,20)           // HUE
  #COM_EVENT(58,03)               // Saturation
  #UPDATE_WB
  #UPDATE_PHOTO
  #NOT_DOC_MODE            // Must be called before UPDATE_ISO
  #UPDATE_ISO  
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)        // FLASH_INFO = 1
  $cf.00 1                 // If imst mode
    #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $cl                      // Not in IS
  $cx  
  ;   

seq_set_prop_10_1 =        // Portrait
  $sa 09
  #TO_DRAFT
  #SET_REG(64,1D)          // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)          // DRAFT_MIN_FRMRATE 5 fps
  #COM_EVENT(02,00)        // AE Auto
  #COM_EVENT(51,01)        // Portrait scene
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)        // FLASH_INFO = 1
  $cf.00 1                 // If imst mode
    #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $cl                      // Not in IS
  $cx  
  ;   
 
seq_set_prop_10_2 =        // Landscape
  $sa 09
  #TO_DRAFT
  #SET_REG(64,1D)          // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)          // DRAFT_MIN_FRMRATE 5 fps
  #COM_EVENT(02,00)        // AE Auto
  #COM_EVENT(51,06)        // Landscape scene
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)        // FLASH_INFO = 1
  $cf.00 1                 // If imst mode
    #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $cl                      // Not in IS
  $cx  
  ;

seq_set_prop_10_3 =   //Night
  $sa 09
  #TO_DRAFT
  #SET_REG(22,02)  
  #SET_REG(60,2C)
  #COM_EVENT(02,02)
  #SET_REG(77,2C)            
  #SET_REG(79,12)         
  #SET_REG(7A,0F)                         
  #SET_REG(7C,12)
  #COM_EVENT(54,00)               // Brightness
  #COM_EVENT(55,00)               // Contrast
  #COM_EVENT(56,05)           // Sharpness
  #COM_EVENT(57,20)           // HUE
  #COM_EVENT(58,03)               // Saturation
  #COM_EVENT(51,04)
  #UPDATE_WB
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1  
    #CHANGE_MODE(35,00) 
  $cl 
  $cx;


seq_set_prop_10_4 =        // Night portrait
  $sa 09
  #TO_DRAFT
  #SET_REG(64,1D)          // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)          // DRAFT_MIN_FRMRATE 5 fps
  #COM_EVENT(02,00)        // AE Auto
  #SET_REG(77,20)          // SCENE_SHUT_MAX = 1/4 s, 0x20=32
  #SET_REG(78,1A)          // SCENE_SHUT_MID
  #SET_REG(79,46)          // SCENE_GAIN_MAX = 21 dB, 0x46 = 70 = 21/0.3 (ISO 399)
  #SET_REG(7A,3C)          // SCENE_GAIN_MID = 18 dB (ISO 200)
  #SET_REG(7B,1A)          // SCENE_STILL_SHUT_MID = 1/15 s, 0x1A = 26
  #SET_REG(7C,3C)          // SCENE_STILL_GAIN_MAX = 18 dB 0x3C = 60 = 18/0.3 (ISO 200) 
  #COM_EVENT(51,08)        // Custom scene
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)        // FLASH_INFO = 1
  $cf.00 1                 // If imst mode
    #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $cl                      // Not in IS
  $cx  
  ;

seq_set_prop_10_5 =        // Beach & snow
  $sa 09
  #TO_DRAFT
  #SET_REG(64,1D)          // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)          // DRAFT_MIN_FRMRATE 5 fps
  #COM_EVENT(02,00)        // AE Auto
  #COM_EVENT(51,02)        // Beach & snow scene
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)        // FLASH_INFO = 1
  $cf.00 1                 // If imst mode
    #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $cl                      // Not in IS
  $cx  
  ;
       
seq_set_prop_10_6 =        // Sports
  $sa 09
  #TO_DRAFT
  #SET_REG(64,1D)          // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)          // DRAFT_MIN_FRMRATE 5 fps
  #COM_EVENT(02,00)        // AE Auto
  #COM_EVENT(51,05)        // Sports scene
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)        // FLASH_INFO = 1
  $cf.00 1                 // If imst mode
    #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $cl                      // Not in IS
  $cx  
  ;   
   
seq_set_prop_10_7 =        // Document
  $sa 0B                   // EV=+2/3
  #TO_DRAFT
  #SET_REG(64,1D)          // SCENE_SLOW_SHUTTER = 29, 1/8
  #SET_REG(22,0A)          // DRAFT_MIN_FRMRATE 5 fps
  #COM_EVENT(02,00)        // AE Auto
  #COM_EVENT(51,08)        // Custom scene   
  #UPDATE_WB
  #DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)        // FLASH_INFO = 1
  $cf.00 1                 // If imst mode
    #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $cl                      // Not in IS
  $cx 
  ;


// Property 17, ISO    
//----------------------------------------------------

seq_set_prop_11_0 =     // Auto
  #TO_DRAFT
  $sc 00
  #SET_REG(95,04)       // Default ISO 200
 #COM_EVENT(02,00)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01)     // FLASH_INFO = 1
 ;
  
seq_set_prop_11_1 =     // ISO 100
  #TO_DRAFT
  $sc 01 
  #SET_REG(61,01) 
  #SET_REG(95,01)
  #COM_EVENT(02,04)
  #WB_ISO100
  #FLASH_LIMIT_ISO100  
  #COM_EVENT(5A,01)     // FLASH_INFO = 1
  ;
  
seq_set_prop_11_2 =     // ISO 200
  #TO_DRAFT
  $sc 04 
  #SET_REG(61,04)
  #SET_REG(95,04) 
  #COM_EVENT(02,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01)     // FLASH_INFO = 1
  ;
  
seq_set_prop_11_3 =     // ISO 400
  #TO_DRAFT
  $sc 07  
  #SET_REG(61,07) 
  #SET_REG(95,07)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01)     // FLASH_INFO = 1
  ;


// Property 18, Framerate reduction/restoration for GUI speed
//------------------------------------------------------------

seq_set_prop_12_0 =        // Restore framerate
  $"CAMDRIVER0: Restore framerate" 
  $sf.07 0                 // Set flag to "not in menu"
  $z5                      // Put res id in reg 5
  $c5 20                   // If res id 0x20
    $p6 10                 // Put scene value in reg 6
    $c6 03          // Scene is night?
      #SET_REG(22,02)      // DRAFT_MIN_FRMRATE 1 fps
    $cl
      #SET_REG(22,0A)      // DRAFT_MIN_FRMRATE 5 fps
      #SET_REG(25,0A)      // HS_DRAFT_MIN_FRMRATE 5 fps
    $cx
    #SET_REG(21,3C)        // DRAFT_MAX_FRMRATE 30 fps
    #SET_REG(24,3C)        // HS_DRAFT_MAX_FRMRATE 30 fps      
  $cx
  $c5 2f                   // If res id 0x2f
    $p6 10                 // Put scene value in reg 6
    $c6 03          // Scene is night?
      #SET_REG(22,02)      // DRAFT_MIN_FRMRATE 1 fps
    $cl
      #SET_REG(22,0A)      // DRAFT_MIN_FRMRATE 5 fps
      #SET_REG(25,0A)      // HS_DRAFT_MIN_FRMRATE 5 fps
    $cx
    #SET_REG(21,3C)        // DRAFT_MAX_FRMRATE 30 fps
    #SET_REG(24,3C)        // HS_DRAFT_MAX_FRMRATE 30 fps      
  $cx
  $c5 21                   // If res id 0x21
    #SET_REG(22,0A)        // DRAFT_MIN_FRMRATE 5 fps
    #SET_REG(25,0A)        // HS_DRAFT_MIN_FRMRATE 5 fps
    #SET_REG(21,3C)        // DRAFT_MAX_FRMRATE 30 fps
    #SET_REG(24,3C)        // HS_DRAFT_MAX_FRMRATE 30 fps      
  $cx
  $c5 25                   // If res id 0x25
    #SET_REG(22,18)        // DRAFT_MIN_FRMRATE 12 fps
    #SET_REG(25,18)        // HS_DRAFT_MIN_FRMRATE 12 fps
    #SET_REG(21,18)        // DRAFT_MAX_FRMRATE 12 fps
    #SET_REG(24,18)        // HS_DRAFT_MAX_FRMRATE 12 fps      
  $cx
  $c5 26                   // If res id 0x26
    #SET_REG(22,18)        // DRAFT_MIN_FRMRATE 12 fps
    #SET_REG(25,18)        // HS_DRAFT_MIN_FRMRATE 12 fps
    #SET_REG(21,18)        // DRAFT_MAX_FRMRATE 12 fps
    #SET_REG(24,18)        // HS_DRAFT_MAX_FRMRATE 12 fps      
  $cx
  $c5 29                   // If res id 0x29
    #SET_REG(22,14)        // DRAFT_MIN_FRMRATE 10 fps
    #SET_REG(25,14)        // HS_DRAFT_MIN_FRMRATE 10 fps
    #SET_REG(21,14)        // DRAFT_MAX_FRMRATE 10 fps
    #SET_REG(24,14)        // HS_DRAFT_MAX_FRMRATE 10 fps      
  $cx
  $c5 2a                   // If res id 0x2a
    #SET_REG(22,3B)        // DRAFT_MIN_FRMRATE 29.5 fps
    #SET_REG(25,3B)        // HS_DRAFT_MIN_FRMRATE 29.5 fps
    #SET_REG(21,3C)        // DRAFT_MAX_FRMRATE 30 fps
    #SET_REG(24,3C)        // HS_DRAFT_MAX_FRMRATE 30 fps      
  $cx
  $c5 2b                   // If res id 0x2b
    #SET_REG(22,1E)        // DRAFT_MIN_FRMRATE 15 fps
    #SET_REG(25,1E)        // HS_DRAFT_MIN_FRMRATE 15 fps
    #SET_REG(21,1E)        // DRAFT_MAX_FRMRATE 15 fps
    #SET_REG(24,1E)        // HS_DRAFT_MAX_FRMRATE 15 fps      
  $cx
  $c5 2c                   // If res id 0x2c
    #SET_REG(22,0F)        // DRAFT_MIN_FRMRATE 7,5 fps
    #SET_REG(25,0F)        // HS_DRAFT_MIN_FRMRATE 7,5 fps
    #SET_REG(21,0F)        // DRAFT_MAX_FRMRATE 7,5 fps
    #SET_REG(24,0F)        // HS_DRAFT_MAX_FRMRATE 7,5 fps      
  $cl $cx

  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)          // FLASH_INFO = 1
  $cf.00 1                   // If imst mode
    #CHANGE_MODE(35,00)      // IS_DRAFT mode
    $cf.01 1                 // If (IS) HS mode 
      #CHANGE_MODE(38,00)    // Mode IS HS draft
    $cl 
    $cx 
  $cl                        // Not in IS
    $cf.01 1                 // If HS mode
      #CHANGE_MODE(37,00)    // Mode HS draft
    $cl 
    $cx  
  $cx   
  ;

seq_set_prop_12_1 =        // Decrease framerate
  $"CAMDRIVER0: Decrease framerate"
  $sf.07 1                 // Set flag to "menu" mode
  #SET_REG(22,0F)          // DRAFT_MIN_FRMRATE 7,5 fps
  #SET_REG(25,0F)          // HS_DRAFT_MIN_FRMRATE 7,5 fps
  #SET_REG(21,0F)          // DRAFT_MAX_FRMRATE 7,5 fps
  #SET_REG(24,0F)          // HS_DRAFT_MAX_FRMRATE 7,5 fps  
  #CHANGE_MODE(34,00)
  ;

// Property 22, Photo metering    
//----------------------------------------------------

seq_set_prop_16_0 = 
  #TO_DRAFT
  #COM_EVENT(08,00);   // Multimode
seq_set_prop_16_1 = 
  #TO_DRAFT
  #COM_EVENT(08,01);   // Spot


// Property 23, Xenon flash required   
//----------------------------------------------------

seq_get_prop_17 =        // 0 = no flash, 1 = flash
  #READ_REG(93)          // FLASH_INFO_STATUS
  $-4 02 $m0 4 
  $sf.06 0               // Set flash flag to FALSE     
  $cd 02                    
    $c0 01               // If use flash?
   #AUTOFLASH
      $sf.06 1           // Set flash flag to TRUE                  
      $p5 10             // Put value of Scene in reg 5
      $c5 04             // If scene = night portrait
        #SET_REG(9E,26)  // FLASH_MSHUT_LONG = 1/8 sec 
        #SET_REG(91,23)  // FLASH_XENON_MODE = 0b00100011, slow sync 
     $cl
        #SET_REG(9E,15) 
  #SET_REG(91,03)  // FLASH_XENON_MODE = 0b00000011, autoflash ON
      $cx    
    $cl  
   $p5 10
   $c5 04
     $sf.06 0
  #UPDATECOLOUR
  #SET_REG(91,00)    // FLASH_XENON_MODE = 0, autoflash OFF   
   $cl
        #UPDATECOLOUR
        #SET_REG(91,00)
      $cx     
    $cx
  $cl 
  $cx
  $cd 03                 // Auto RER setting?
  #SET_REG(9E,26) 
    $c0 01
 #SET_REG(95,04) 
   #RERFLASH
      $sf.06 1                            
      $p5 10            
      $c5 04            
        #SET_REG(9E,23)  // FLASH_MSHUT_LONG  
        #SET_REG(91,13)
   $cl
     #SET_REG(9E,26)  // FLASH_MSHUT_LONG
        #SET_REG(91,13)    // FLASH_XENON_MODE = 0b00010011, autoflash ON, RER
      $cx
    $cl
   $p5 10
   $c5 04
     $sf.06 0 
  #UPDATECOLOUR
  #SET_REG(91,00)
   $cl
                #SET_REG(95,04)
  #RERFLASH
  $sf.06 1 
//  #SET_REG(9E,01)
        #SET_REG(91,13)    // FLASH_XENON_MODE = 0b00010011, autoflash ON, RER
      $cx  
    $cx
  $cl
  $cx
  $s1 00 $s2 00 $s3 00; 


// Property 24, Image stabilization 
//----------------------------------------------------

seq_set_prop_18_0 =      // IS Off
  #TO_DRAFT
  #CHANGE_MODE(34,00)    // DRAFT_MODE
  $sf.00 0  
  $cc 00                 // AE_MODE = auto?
    #COM_EVENT(02,00)    // Auto
  $cl
    #COM_EVENT(02,04)    // ISO priority
    #SET_REG(61,$wc)     // Change back to last ISO
  $cx
  #COM_EVENT(5A,01)      // FLASH_INFO = 1
  $c8 01                 // If (IS) HS video mode 
    #CHANGE_MODE(37,00)  // Mode HS draft
  $cl $cx
  ;
                 
seq_set_prop_18_1 =      // IS On
  #TO_DRAFT
  $sf.00 1     
  #COM_EVENT(02,00)      // AE_MODE = Auto
  #CHANGE_MODE(35,00)    // IS_DRAFT mode
  $c8 01                 // If (IS) HS video mode 
    #CHANGE_MODE(38,00)  // Mode IS HS draft
  $cl $cx
  ;

// Property 25, Continuous zoom 
//----------------------------------------------------

seq_set_prop_19_0 =      // Stop
  #TO_DRAFT
  #COM_EVENT(61,84);
seq_set_prop_19_1 =      // Zoom in
  #TO_DRAFT
  #SET_REG(67,01)        // ZM_SMTH_SPEED = 1 
  #COM_EVENT(61,04);      
seq_set_prop_19_2 =      // Zoom out
  #TO_DRAFT
  #SET_REG(67,01)        // ZM_SMTH_SPEED = 1 
  #COM_EVENT(61,40);     


// Property 26, Get continuous zoom 
//----------------------------------------------------

seq_get_prop_1a = 
  #TO_DRAFT
  #READ_REG(69)   // Get zoom level in percent 1-100
  $s0 63  $*0 40  $/0 r4  $-0 54
  $/0 0F  $s3 00  $s2 00 $s1 00;

// Property 27, Snapshot operation 
//----------------------------------------------------

seq_set_prop_1b = $se %0;        // 0 => Normal, Read out pict 1-9 in BestPic


// Property 28, BestPic image size
//----------------------------------------------------

seq_set_prop_1c_0 =     // 5M
  #SET_REG(2D,01)       // BURST_JPEG_IMAGE_SIZE = 5M
  #SET_REG(42,46)       // JPEG_INIT_QUALITY = 70d, 0x46
  $cf.05 1              // If normal
    #SET_REG(45,5A)     // JPEG_BURST_TARGET_RATE = 90d  850KB
  $cl                   // Else low compr
    #SET_REG(45,5F)     // JPEG_BURST_TARGET_RATE = 95d = 897KB
  $cx;

seq_set_prop_1c_1 =     // 3M
  #SET_REG(2D,03)       // BURST_JPEG_IMAGE_SIZE = 3M   
  #SET_REG(42,40)       // JPEG_INIT_QUALITY = 64d, 0x40
  $cf.05 1              // If normal
    #SET_REG(45,40)     // JPEG_BURST_TARGET_RATE = 64d 605 KB
  $cl                   // Else low compr
    #SET_REG(45,46)     // JPEG_BURST_TARGET_RATE = 70d 662 KB
  $cx;

seq_set_prop_1c_2 =     // 1M
  #SET_REG(2D,06)       // BURST_JPEG_IMAGE_SIZE = SXGA  
  #SET_REG(42,32)       // JPEG_INIT_QUALITY = 50d, 0x32
  $cf.05 1              // If normal
    #SET_REG(45,14)     // JPEG_BURST_TARGET_RATE = 20d 189KB
  $cl                   // Else low compr
    #SET_REG(45,1E)     // JPEG_BURST_TARGET_RATE = 30d 283KB   
  $cx;

seq_set_prop_1c_3 =     // VGA
  #SET_REG(2D,08)       // BURST_JPEG_IMAGE_SIZE = VGA 
  #SET_REG(42,20)       // JPEG_INIT_QUALITY = 32d, 0x20
  $cf.05 1              // If normal
    #SET_REG(45,05)     // JPEG_BURST_TARGET_RATE = 5d 43KB      
  $cl                   // Else low compr
    #SET_REG(45,0A)     // JPEG_BURST_TARGET_RATE = 10d 95KB 
  $cx;


// Property 29, BestPic operation, 
//----------------------------------------------------

seq_set_prop_1d_0 =     // Normal burst operation
  $sb 00;

seq_set_prop_1d_1 =     // Half speed burst operation
  $sb 01;
   
seq_set_prop_1d_2 =     // Abort Burst operation      
  $sb 02;

seq_set_prop_1d_3 =     // Start Burst (only for ITP)
  #CHANGE_MODE(31,02)   // Half-release with focus set to inf
  #CHANGE_MODE(39,04)
  ;

seq_set_prop_1d_4 =     // Stop Burst (only for ITP)
  #COM_EVENT(3A,00)     // Take picture  
  ;

// Reset and test pattern,  property 30
//---------------------------------------------------------------

seq_set_prop_1e_0 = 
  $go 31 0             // Reset low
  $d0020
  $go 31 1             // Reset high
  #CAPTURE_EVENT       // EV_CAM_READY 
  #CAPTURE_EVENT       // EV_MUTE_OFF
  #SET_REG(29,01)      // STILL_OUT_REPEAT = 1
  #SET_REG(2B,01)      // VSGATE ON   
  ;

seq_set_prop_1e_1 =    // Testpattern
  #SET_REG(81,01) 
  03 55 AA $f $r2 01 $d0003   
  08 04 70 30 00 05 01 00 $f $r3 001 $d0003
  ;

// Viewfinder and snapshot sequences
//=================================================================

seq_ss_config_1 =
  $sf.03 1             // JPEG flag to 1
  #SET_REG(26,08)      // 640 x 480 JPEG and JPEG IMST
  $cf.05 1             // If normal compression
    $"CAMDRIVER0: VGA NORMAL COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    96 00              // JPEG_MAX_CODE_SIZE    = 150d   
    A0 00              // JPEG_MIN_CODE_SIZE    =  10d
    37 00              // JPEG_TARGET_CODE_SIZE =  55d
    46                 // JPEG_INIT_QUALITY     =  70d
    3C                 // JPEG_FIRST_QUALITY    =  60d
    32                 // JPEG_LAST_QUALITY     =  50d
    $f $ra 1111111111 $d0002
  $cl                  // Else low compression
    $"CAMDRIVER0: VGA LOW COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    96 00              // JPEG_MAX_CODE_SIZE    = 150d   
    A0 00              // JPEG_MIN_CODE_SIZE    =  50d
    50 00              // JPEG_TARGET_CODE_SIZE =  80d
    50                 // JPEG_INIT_QUALITY     =  80d
    46                 // JPEG_FIRST_QUALITY    =  70d
    3C                 // JPEG_LAST_QUALITY     =  60d    
    $f $ra 1111111111 $d0002
  $cx
  ;

seq_ss_config_2 =
  $sf.03 1             // JPEG flag to 1
  #SET_REG(26,06)      // 1280 x 960 JPEG and JPEG IMST
  $cf.05 1             // If normal compression
    $"CAMDRIVER0: 1M NORMAL COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    90 01              // JPEG_MAX_CODE_SIZE    = 400d   
    3C 00              // JPEG_MIN_CODE_SIZE    =  60d
    C8 00              // JPEG_TARGET_CODE_SIZE = 200d
    46                 // JPEG_INIT_QUALITY     =  70d
    3C                 // JPEG_FIRST_QUALITY    =  60d
    32                 // JPEG_LAST_QUALITY     =  50d
    $f $ra 1111111111 $d0002
  $cl                  // Else low compression
    $"CAMDRIVER0: 1M LOW COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    90 01              // JPEG_MAX_CODE_SIZE    = 400d   
    64 00              // JPEG_MIN_CODE_SIZE    = 100d
    2C 01              // JPEG_TARGET_CODE_SIZE = 300d
    50                 // JPEG_INIT_QUALITY     =  80d
    46                 // JPEG_FIRST_QUALITY    =  70d
    3C                 // JPEG_LAST_QUALITY     =  60d    
    $f $ra 1111111111 $d0002 
  $cx
  ;

seq_ss_config_4 =
  $sf.03 1             // JPEG flag to 1
  #SET_REG(26,05)      // 1632 x 1224 JPEG and JPEG IMST 
  $cf.05 1             // If normal compression
    $"CAMDRIVER0: 2M NORMAL COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    58 02              // JPEG_MAX_CODE_SIZE    = 600d   
    96 00              // JPEG_MIN_CODE_SIZE    = 150d
    90 01              // JPEG_TARGET_CODE_SIZE = 400d
    46                 // JPEG_INIT_QUALITY     =  70d
    3C                 // JPEG_FIRST_QUALITY    =  60d
    32                 // JPEG_LAST_QUALITY     =  50d
    $f $ra 1111111111 $d0002
  $cl                  // Else low compression
    $"CAMDRIVER0: 2M LOW COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    58 02              // JPEG_MAX_CODE_SIZE    = 600d   
    90 01              // JPEG_MIN_CODE_SIZE    = 400d
    F4 01              // JPEG_TARGET_CODE_SIZE = 500d
    50                 // JPEG_INIT_QUALITY     =  80d
    46                 // JPEG_FIRST_QUALITY    =  70d
    3C                 // JPEG_LAST_QUALITY     =  60d    
    $f $ra 1111111111 $d0002
  $cx
  ;

seq_ss_config_5 =
  $sf.03 1             // JPEG output
  #SET_REG(26,03)      // 2048 x 1536 JPEG and JPEG IMST 
  $cf.05 1             // If normal compression
    $"CAMDRIVER0: 3M NORMAL COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    20 03              // JPEG_MAX_CODE_SIZE    = 800d   
    90 01              // JPEG_MIN_CODE_SIZE    = 400d
    58 02              // JPEG_TARGET_CODE_SIZE = 600d
    46                 // JPEG_INIT_QUALITY     =  70d
    3C                 // JPEG_FIRST_QUALITY    =  60d
    32                 // JPEG_LAST_QUALITY     =  50d
    $f $ra 1111111111 $d0002
  $cl                  // Else low compression
    $"CAMDRIVER0: 3M LOW COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    84 03              // JPEG_MAX_CODE_SIZE    = 900d   
    58 02              // JPEG_MIN_CODE_SIZE    = 600d
    52 03              // JPEG_TARGET_CODE_SIZE = 850d
    50                 // JPEG_INIT_QUALITY     =  80d
    46                 // JPEG_FIRST_QUALITY    =  70d
    3C                 // JPEG_LAST_QUALITY     =  60d    
    $f $ra 1111111111 $d0002
  $cx
  ;

seq_ss_config_6 =
  $sf.03 1             // JPEG output
  #SET_REG(26,01)      // 2592 x 1944 JPEG and JPEG IMST 
  $cf.05 1             // If normal compression
    $"CAMDRIVER0: 5M NORMAL COMPRESSION" 
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    46 05              // JPEG_MAX_CODE_SIZE    = 1350d   
    9E 02              // JPEG_MIN_CODE_SIZE    =  670d
    E8 03              // JPEG_TARGET_CODE_SIZE = 1000d
    5A                 // JPEG_INIT_QUALITY     =  90d
    50                 // JPEG_FIRST_QUALITY    =  80d
    46                 // JPEG_LAST_QUALITY     =  70d
    $f $ra 1111111111 $d0002
  $cl                  // Else low compression
    $"CAMDRIVER0: 5M LOW COMPRESSION"
    0D 02 00 3C        // Start sending 13 bytes at adress 3C
    DC 05              // JPEG_MAX_CODE_SIZE    = 1500d   
    B0 04              // JPEG_MIN_CODE_SIZE    = 1200d
    78 05              // JPEG_TARGET_CODE_SIZE = 1400d
    64                 // JPEG_INIT_QUALITY     =  100d
    5A                 // JPEG_FIRST_QUALITY    =  90d
    50                 // JPEG_LAST_QUALITY     =  80d    
    $f $ra 1111111111 $d0002
  $cx
  ;

seq_ss_config_10 =
  $sf.03 0             // YCbCr output
  #SET_REG(26,0C)      // 320 x 240 YCbCr and YCbCr IMST 
  ;

seq_ss_config_11 =
  $sf.03 0             // YCbCr output
  #SET_REG(26,08)      // 640 x 480 YCbCr and YCbCr IMST 
  ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

seq_vf_config_20 =     // Viewfinder 
  #SET_REG(20,0C)      // DRAFT_IMAGE_SIZE 320x240 
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
    #SET_REG(21,3C)    // DRAFT_MAX_FRMRATE = 30 (60/2)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00               // No video HS
  ;

seq_vf_config_21 =     // Viewfinder for BestPic
  #SET_REG(20,0C)      // DRAFT_IMAGE_SIZE 320x240 
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
   #SET_REG(21,1E)    // DRAFT_MAX_FRMRATE = 15 (30/2)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00               // No video HS  
  ;

seq_vf_config_25 =     // VT
  #SET_REG(20,14)      // DRAFT_IMAGE_SIZE 96x128
  #SET_REG(23,14)      // HS_DRAFT_IMAGE_SIZE 96x128
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
    #SET_REG(22,14)    // DRAFT_MIN_FRMRATE 10 fps
    #SET_REG(25,14)    // HS_DRAFT_MIN_FRMRATE 10 fps    
    #SET_REG(21,14)    // DRAFT_MAX_FRMRATE 10 fps
    #SET_REG(24,14)    // HS_DRAFT_MAX_FRMRATE 10 fps
  $cx
  $s8 00               // No video HS
  ;

seq_vf_config_26 =     // VT
  #SET_REG(20,12)      // DRAFT_IMAGE_SIZE 144x176
  #SET_REG(23,12)      // HS_DRAFT_IMAGE_SIZE 144x176
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
    #SET_REG(22,18)    // DRAFT_MIN_FRMRATE 12 fps
    #SET_REG(25,18)    // HS_DRAFT_MIN_FRMRATE 12 fps    
    #SET_REG(21,18)    // DRAFT_MAX_FRMRATE 12 fps
    #SET_REG(24,18)    // HS_DRAFT_MAX_FRMRATE 12 fps  
  $cx
  $s8 00               // No video HS
  ;

seq_vf_config_29 =     // VR
  #SET_REG(20,12)      // DRAFT_IMAGE_SIZE 144x176
  #SET_REG(23,12)      // HS_DRAFT_IMAGE_SIZE 144x176
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
    #SET_REG(22,14)    // DRAFT_MIN_FRMRATE 10 fps
    #SET_REG(25,14)    // HS_DRAFT_MIN_FRMRATE 10 fps    
    #SET_REG(21,14)    // DRAFT_MAX_FRMRATE 10 fps
    #SET_REG(24,14)    // HS_DRAFT_MAX_FRMRATE 10 fps  
  $cx
  $s8 01               // Video HS
 ;

seq_vf_config_2a =     // VR
  #SET_REG(20,0C)      // DRAFT_IMAGE_SIZE 320x240
  #SET_REG(23,0C)      // HS_DRAFT_IMAGE_SIZE 320x240
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
    #SET_REG(22,3B)    // DRAFT_MIN_FRMRATE 29.5 fps
    #SET_REG(25,3B)    // HS_DRAFT_MIN_FRMRATE 29.5 fps    
    #SET_REG(24,3C)    // HS_DRAFT_MAX_FRMRATE 30 fps  
    #SET_REG(21,3C)    // DRAFT_MAX_FRMRATE 30 fps
 $cx
  $s8 01               // Video HS
 ;

seq_vf_config_2b =     // VR
  #SET_REG(20,0C)      // DRAFT_IMAGE_SIZE 320x240
  #SET_REG(23,0C)      // HS_DRAFT_IMAGE_SIZE 320x240
  $cf.07 1             // If menu mode
                      // do not change max framerate
  $cl
    #SET_REG(22,1E)    // DRAFT_MIN_FRMRATE 15 fps
    #SET_REG(25,1E)    // HS_DRAFT_MIN_FRMRATE 15 fps    
    #SET_REG(21,1E)    // DRAFT_MAX_FRMRATE 15 fps
    #SET_REG(24,1E)    // HS_DRAFT_MAX_FRMRATE 15 fps  
  $cx
  $s8 01               // Video HS
 ;

seq_vf_config_2c =     // VR
  #SET_REG(20,0C)      // DRAFT_IMAGE_SIZE 320x240
  #SET_REG(23,0C)      // HS_DRAFT_IMAGE_SIZE 320x240
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
    #SET_REG(22,1E)    // DRAFT_MIN_FRMRATE 15 fps
    #SET_REG(25,1E)    // HS_DRAFT_MIN_FRMRATE 15 fps    
    #SET_REG(21,1E)    // DRAFT_MAX_FRMRATE 15 fps
    #SET_REG(24,1E)    // HS_DRAFT_MAX_FRMRATE 15 fps  
  $cx 
  $s8 01               // Video HS
  ;

seq_vf_config_2f =     // Viewfinder 
  #SET_REG(20,0C)      // DRAFT_IMAGE_SIZE 320x240 
  $cf.07 1             // If in menu mode
                      // do not change max framerate
  $cl
    #SET_REG(21,3C)    // DRAFT_MAX_FRMRATE = 30 (60/2)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00               // No Video HS
  ;


//-----------------------------------------------

seq_vf_start = 
  $cf.02 0                    // If not in any draft mode 
    #CHANGE_MODE(33,00)        // MODE_MAIN
    #COM_EVENT(43,00)          // MANUAL_FOCUS = 00, Infinity    
    #COM_EVENT(5A,01)          // FLASH_INFO = 1
    $sf.02 1                   // Set draft flag to 1
    $se 00                     // Set snapshot operation to normal     
  $cl
    #CHANGE_MODE(34,00)
    #COM_EVENT(5A,01)          // FLASH_INFO = 1
    $cf.00 1                   // If imst mode
      #CHANGE_MODE(35,00)      // IS_DRAFT mode
      $c8 01                   // If (IS) HS video mode 
        #CHANGE_MODE(38,00)    // Mode IS HS draft
      $cl $cx 
    $cl                        // Not in IS
      $c8 01                   // If HS video mode
        #CHANGE_MODE(37,00)    // Mode HS draft
      $cl $cx  
    $cx       
  $cx     
  ;

seq_vf_stop = ; 

seq_ss_start =
  $cf.02 1                       // If draft mode?
    #CHANGE_MODE(31,02)          // Half-release with focus set to inf
    $sf.02 0                     // Not in draft mode
  $cl
  $cx   
  ;

seq_ss_take = 
  $ce 00                         // If not BestPic
    $cf.03 1                     // IF JPEG 
      #CHANGE_MODE(36,80)        // MODE_IMST_STILL_CAPT, JPEG
      #CAPTURE_EVENT             // EV_CAPTURE_STATUS, 02 e4
    $cl                          // Else IMST OFF       
      #CHANGE_MODE(36,00)        // MODE_STILL_CAPT, YCbCr
    $cx 
  $cl                            // Else BestPic mode
    #CHANGE_MODE(3A,$we)         // Read out pict # stored in reg e
  $cx  
  #CAPTURE_EVENT                 // Capture EV_CAPTURE_STATUS, 00 E4
  ;     

seq_ss_verify = #CAPTURE_EVENT   // Capture EV_CAPTURE_STATUS, 01 E4
  $c2 01
    $s0 01
    $"CAMDRVIER0: Image_verified"
  $cl            
    $"CAMDRIVER0: Image_not_verified"
  $cx
  ;

seq_ss_stop = ;

// Functions for synchronized viewfinder images in burst mode. 

seq_pv_start =
  $cf.02 1                       // If draft mode?
    #CHANGE_MODE(31,02)          // Half-release with focus set to inf
    $sf.02 0                     // Not in draft mode
  $cl
  $cx  
  $"CAMDRIVER0: seq_pv_start"
  $s9 00                        // BurstStatus -> Init
  $cb 00                        // If normal interval    
    #CHANGE_MODE(39,04)         // Mode burst start, BURST_INTERVAL = 0, BURST_REMAIN = 4
  $cl                           // Else half speed, every 2nd frame 
    #CHANGE_MODE(39,14)         // Mode burst start, BURST_INTERVAL = 1, BURST_REMAIN = 4
  $cx;

seq_pv_stop =
  $c9 01
    $"CAMDRIVER0: seq_pv_stop"
    $s9 03                      // BurstStatus -> BurstOutput
    #COM_EVENT(3A,00)           // Take picture
  $cl
    $"CAMDRIVER0: seq_pv_stop is waiting for EV_RECORD_STATUS"
    $s9 02                      // BurstStatus -> WaitForEV_RECORD_STATUS
  $cx;

seq_pv_verify = 
  $h0 02 5 0000                 // Wait for TRIG  
  05 01 00 03 03 $f $r4 0 012   // [source, info, id]
  05 02 00 06 03 $f             // Release interrupt
  $cb 02                        // If Burst operation  = abort? 
    $s0 ff                      // Abort!
  $cl 
    $s0 00
    $c2 e3
      $b1 00 4 4
      $c1 00
        $s0 01                  // Rotate, i.e synch vf-image
        $"CAMDRIVER0: Rotate, synch vf"
      $cl
        $"CAMDRIVER0: Compr_failed_%0_%1_%2"
      $cx
    $cl 
    $cx
    $c2 ea                      // If EVENT_MODE_CHANGED
      $c1 50  
        $s0 ff                  // Done (Burst output)
      $cl
      $cx
    $cl
    $cx
    $c2 ee                      // EV_RECORD_STATUS
      $c9 02
        $"CAMDRIVER0: EV_RECORD_STATUS(completed)"
        $"CAMDRIVER0: Change the mode to BurstOutput"
        $s9 03                  // BurstStatus -> BurstOutput
        #COM_EVENT(3A,00)       // Take picture
        $s0 00                  // Reset register 0 to 0
      $cl
        $"CAMDRIVER0: EV_RECORD_STATUS(completed)"
        $s9 01                  // BurstStatus -> ReadyForBurstOutput
      $cx
    $cl
    $cx
  $cx;

// JPEG section
//================================================

jpeg_qtable_selector_0 = 
      $s2 00 #READ_REG(4A)    // JPEG_HOST_QUALITY
      $m0 4 $s1 00
   $"CAMDRIVER0: qtable0=%0"
      ;   

jpeg_qtable_selector_1 = 
      $s2 01 #READ_REG(4A)    // JPEG_HOST_QUALITY 
      $m0 4 $s1 00
      $"CAMDRIVER0: qtable1=%0"
      ;

jpeg_qtable_0 =
      10 0B 0C 0E 0C 0A 10 0E 
      0D 0E 12 11 10 13 18 28 
      1A 18 16 16 18 31 23 25 
      1D 28 3A 33 3D 3C 39 33 
      38 37 40 48 5C 4E 40 44 
      57 45 37 38 50 6D 51 57 
      5F 62 67 68 67 3E 4D 71
      79 70 64 78 5C 65 67 63
      ;

jpeg_qtable_1 = 
      11 12 12 18 15 18 2F 1A 
      1A 2F 63 42 38 42 63 63 
      63 63 63 63 63 63 63 63 
      63 63 63 63 63 63 63 63 
      63 63 63 63 63 63 63 63 
      63 63 63 63 63 63 63 63 
      63 63 63 63 63 63 63 63 
      63 63 63 63 63 63 63 63
      ; 
                        
jpeg_qtable_factors = 
      0,320100,190000,10AB00,C8000,A0000,85500,72500,64000,58E00,50000,
      48C00,42B00,3D900,39200,35500,32000,2F100,2C700,2A200,28000,
      26200,24600,22D00,21500,20000,1EC00,1DA00,1C900,1B900,1AB00,
      19D00,19000,18400,17800,16E00,16400,15A00,15100,14800,14000,
      13800,13100,12A00,12300,11C00,11600,11000,10B00,10500,10000,
       FB00, F600, F100, EC00, E600, E100, DC00,D700,D200,CD00,
       C800, C300, BD00, B800, B300, AE00, A900,A400,9F00,9A00,
       9400, 8F00, 8A00, 8500, 8000, 7B00, 7600,7100,6C00,6600,
       6100, 5C00, 5700, 5200, 4D00, 4800, 4300,3D00,3800,3300,
       2E00, 2900, 2400, 1F00, 1A00, 1400,  F00, A00, 500, 100
      ;

jpeg_header= FF D8
             FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00
             FF DB 00 84 00 $qt0  01 $qt1                             
             FF C4 01 A2 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 
                            00 01 02 03 04 05 06 07 08 09 0A 0B
                         01 00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00 
                            00 01 02 03 04 05 06 07 08 09 0A 0B
                         10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D
                            01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 
                            22 71 14 32 81 91 a1 08 23 42 b1 c1 15 52 d1 f0 
                            24 33 62 72 82 09 0a 16 17 18 19 1a 25 26 27 28 
                            29 2a 34 35 36 37 38 39 3a 43 44 45 46 47 48 49 
                            4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 
                            6a 73 74 75 76 77 78 79 7a 83 84 85 86 87 88 89 
                            8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 
                            a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 
                            c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e1 e2
                            e3 e4 e5 e6 e7 e8 e9 ea f1 f2 f3 f4 f5 f6 f7 f8 
                            f9 fa
                         11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77
                            00 01 02 03 11 04 05 21 31 06 12 41 51 07 61 71 
                            13 22 32 81 08 14 42 91 a1 b1 c1 09 23 33 52 f0 
                            15 62 72 d1 0a 16 24 34 e1 25 f1 17 18 19 1a 26 
                            27 28 29 2a 35 36 37 38 39 3a 43 44 45 46 47 48 
                            49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 
                            69 6a 73 74 75 76 77 78 79 7a 82 83 84 85 86 87 
                            88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 
                            a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 
                            c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da
                            e2 e3 e4 e5 e6 e7 e8 e9 ea f2 f3 f4 f5 f6 f7 f8 
                            f9 fa             
             FF DD 00 04 00 00 
             FF C0 00 11 08 $h $w 03 01 21 00 02 11 01 03 11 01
             FF DA 00 0C 03 01 00 02 11 03 11 00 3F 00;

KillerBG Simple Camdriver

download
Date: 16.11.2011.
Author: KillerBG
Nationality: Bulgarian

info_name = MCB991;
info_vendor = Sony;
info_major_ver = 3;
info_minor_ver = 7;
SET_REG =
  05 02 00 !0 !1 $f
  $r2 1 1
  $d0002
;
READ_REG =
  05 01 00 !0 01 $f
  $r2 4 4
  $d0002
;
CLEAR_EVENT =
  05 01 00 03 03 $f
  $r4 1 123
  $d0002
  $c3 00
    $"CAMDRIVER0: Queue_was_empty"
  $cl
    $"CAMDRIVER0: Cleared_Int_Source_%1_Event_Info_%2_Event_ID_%3"
  $cx
  #SET_REG(06,03)
;
CLEAR_EVENT_FIFO =
  $s0 01
  [ 0 ff
    #CLEAR_EVENT
    $c3 00
      $s0 00
    $cx
  ]
;
SEND_COMMAND =
  06 02 00 01 !1 !0 $f
  $r3 111
  $d0002
;
WAIT_FOR_TRIG =
  $h0 02 5 1000
  $c0 00
    $"CAMDRIVER0: TRIG_Timeout"
  $cl
    $"CAMDRIVER0: TRIG_Recieved"
  $cx
;
POLL_EVENT_ID =
  !0
  $s0 01
  [ 0 ff
    #CLEAR_EVENT
    $-3 r4
    $c3 00
      $"CAMDRIVER0: Successfully_acknowledged_Event_ID_%4"
      $s0 00
    $cx
  ]
;
CAPTURE_EVENT =
  #WAIT_FOR_TRIG
  #CLEAR_EVENT
;
CHANGE_MODE =
  #CLEAR_EVENT_FIFO
  #SEND_COMMAND(!0,!1)
  #POLL_EVENT_ID($s4 ea)
  #SET_REG(06,03)
;
COM_EVENT =
  #CLEAR_EVENT_FIFO
  #SEND_COMMAND(!0,!1)
  #WAIT_FOR_TRIG
  #CLEAR_EVENT
;
UPDATE_WB =
  $p5 01
  $c5 00
  $cl
    $u01
  $cx
;
UPDATE_PHOTO =
  $p5 16
  $c5 00
  $cl
    $u16
  $cx
;
WB_ISO100 =
  #SET_REG(98,25)
  #SET_REG(99,73)
;
WB_ISO200 =
  #SET_REG(98,27)
  #SET_REG(99,6D)
;
WB_ISO400 =
  #SET_REG(98,28)
  #SET_REG(99,6A)
;
FLASH_LIMIT_ISO100 =
  #SET_REG(A2,C8)
  #SET_REG(A3,25)
  #SET_REG(A4,D0)
  #SET_REG(A5,25)
;
FLASH_LIMIT_ISO200 =
  #SET_REG(A2,C7)
  #SET_REG(A3,21)
  #SET_REG(A4,D0)
  #SET_REG(A5,21)
;
FLASH_LIMIT_ISO400 =
  #SET_REG(A2,C6)
  #SET_REG(A3,1D)
  #SET_REG(A4,D0)
  #SET_REG(A5,1D)
;
UPDATE_ISO =
  $p5 11
  $c5 00
  $cl
    $u11
  $cx
;
DOC_MODE =
  #COM_EVENT(55,02)
  #COM_EVENT(56,08)
  #COM_EVENT(06,02)
  #SET_REG(95,01)
  #WB_ISO100
  #FLASH_LIMIT_ISO100
;
NOT_DOC_MODE =
  #COM_EVENT(02,00)
  #COM_EVENT(55,00)
  #COM_EVENT(56,00)
  #COM_EVENT(06,00)
  #SET_REG(95,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
;
UPDATE_MIN_FRMRATE =
  $p5 10
  $c5 06
    #SET_REG(22,3C)
  $cl
    #SET_REG(22,02)
  $cx
;
FLASH_SETTINGS =
  #SET_REG(92,00)
  #SET_REG(A0,02)
  #SET_REG(A1,07)
  #SET_REG(96,00)
  #SET_REG(97,04)
  #SET_REG(9A,F0)
  #SET_REG(9B,A0)
  #SET_REG(9C,0D)
  #SET_REG(9D,2B)
;
TO_DRAFT =
  $cf.02 0
    #CHANGE_MODE(33,00)
    $sf.02 1
  $cx
;
cam_power_on_0 = 5,2,31,0,05;
cam_power_on_1 = 5,2,20,1,05;
cam_power_on_2 = 5,2,33,1,00;
cam_power_on_3 = 5,2,30,1,05;
cam_power_on_4 = 5,3,9,6590,05;
cam_power_on_5 = 5,2,31,1,05;
cam_power_off_0 = 5,2,31,0,05;
cam_power_off_1 = 5,3,9,0,05;
cam_power_off_2 = 5,2,30,0,20;
cam_power_off_3 = 5,2,33,0,05;
cam_power_off_4 = 5,2,20,0,05;
cam_i2c_address = 1F;
cam_i2c_clock = ;
cam_vf_clock_freq = 9,6590;
cam_ss_clock_freq = 9,6590;
cam_vf_format = B100;
cam_ss_format = 0001;
cam_ss_format_10 = B100;
cam_ss_format_11 = B100;
cam_data_offset = 2;
cam_data_offset_10 = 0;
cam_data_offset_11 = 0;
cam_vf_sync = 5;
cam_ss_sync = 5;
cam_post_processing_20 = 1;
cam_post_processing_25 = 1;
cam_post_processing_26 = 1;
cam_post_processing_29 = 1;
cam_ss_jpeg_buf_size_1 = 25800;
cam_ss_jpeg_buf_size_2 = 64000;
cam_ss_jpeg_buf_size_4 = 96000;
cam_ss_jpeg_buf_size_5 = E1000;
cam_ss_jpeg_buf_size_6 = 177000;
sup_sizes =
  1[280,1E0,0],
  2[500,3C0,0],
  4[660,4C8,0],
  5[800,600,0],
  6[A20,798,0],
  10[140,F0,0],
  11[280,1E0,0],
  20[140,F0,BB8],
  21[140,F0,5DC],
  25[60,80,4B0],
  26[90,B0,4B0],
  29[90,B0,3E8],
  2a[140,F0,BB8],
  2b[140,F0,5DC],
  2c[140,F0,2EE],
  2f[140,F0,BB8]
;
seq_init =
  $sf 00
  $sf.05 1
  $sf.02 1
  $s8 00
  $sa 09
  $sc 00
  $se 00
  $sd 00
  #CAPTURE_EVENT
  #CAPTURE_EVENT
  #SET_REG(29,01)
  #SET_REG(3B,02)
  #SET_REG(3A,BC)
  #SET_REG(6B,06)
  #SET_REG(6C,01)
  #SET_REG(6F,3C)
  #SET_REG(70,1E)
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(51,00)
  #COM_EVENT(57,20)
  #COM_EVENT(58,08)
  #SET_REG(95,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01)
;
seq_ping = ;
sup_properties =
  0[3,f,9],
  1[0,4,0],
  2[0,3,0],
  3[0,1,0],
  4[0,1,0],
  5[0,1,0],
  6[A,A0,A],
  7[0,1,0],
  8[0,4,0],
  9[0,1,0],
  A[0,2,0],
  B[0,0,0],
  C[0,0,0],
  E[0,4,0],
  10[0,7,0],
  11[0,4,0],
  12[0,1,0],
  16[0,1,0],
  17[0,0,0],
  18[0,1,0],
  19[0,2,0],
  1A[0,0,0],
  1B[0,9,0],
  1C[0,3,0],
  1D[0,4,0],
  1E[0,1,0]
;
seq_set_prop_0 =
  #TO_DRAFT
  $s5 %0
  $ma 5
  $-5 09
  #COM_EVENT(06,$w5)
;
seq_get_prop_0 =
  $s3 00
  $s2 00
  $s1 00
  $m0 a
;
seq_set_prop_1_0 =
  #TO_DRAFT
  #COM_EVENT(11,00)
;
seq_set_prop_1_1 =
  #TO_DRAFT
  #COM_EVENT(11,03)
;
seq_set_prop_1_2 =
  #TO_DRAFT
  #COM_EVENT(11,04)
;
seq_set_prop_1_3 =
  #TO_DRAFT
  #COM_EVENT(11,05)
;
seq_set_prop_1_4 =
  #TO_DRAFT
  #COM_EVENT(11,06)
;
seq_set_prop_2_0 = #COM_EVENT(21,01);
seq_set_prop_2_1 = #COM_EVENT(21,02);
seq_set_prop_2_2 = #COM_EVENT(21,03);
seq_set_prop_2_3 = #COM_EVENT(21,00);
seq_set_prop_3_0 = #COM_EVENT(52,00);
seq_set_prop_3_1 = #COM_EVENT(52,0A);
seq_set_prop_4_0 = #COM_EVENT(52,00);
seq_set_prop_4_1 = #COM_EVENT(52,05);
seq_set_prop_5_0 = $sf.05 1;
seq_set_prop_5_1 = $sf.05 0;
seq_set_prop_6 =
  #TO_DRAFT
  $s4 %0
  $ma 4
  $*4 3C
  $/4 96
  $s5 44
  $-5 r4
  #SET_REG(67,3C)
  #COM_EVENT(61,$w5)
;
seq_get_prop_6 =
  #TO_DRAFT
  #READ_REG(69)
  $*4 96
  $/4 3C
  $s0 AA
  $-0 r4
  $s1 00
  $s2 00
  $s3 00
;
seq_set_prop_7_0 = ;
seq_set_prop_7_1 = ;
seq_set_prop_8 =
  #TO_DRAFT
  $s5 %0
  #COM_EVENT(53,$w5)
;
seq_set_prop_9_0 =
  #TO_DRAFT
  #SET_REG(6A,00)
;
seq_set_prop_9_1 =
  #TO_DRAFT
  #SET_REG(6A,01)
;
seq_set_prop_a_0 =
  $cf.02 0
    #CHANGE_MODE(33,00)
    $sf.02 1
    #COM_EVENT(43,00)
    #COM_EVENT(5A,01)
  $cx
;
seq_set_prop_a_1 =
  #CHANGE_MODE(31,06)
  $sf.02 0
;
seq_set_prop_a_2 =
  #CHANGE_MODE(31,02)
  $sf.02 0
;
seq_get_prop_a =
  05 01 00 03 03 $f
  $r4 1 123
  $d0005
  $c3 e9
    $b2 00 4 1
    $c2 00
      $"CAMDRIVER0: Focus_operation_succeded"
      $s0 04
    $cl
      $"CAMDRIVER0: Focus_operation_failed"
      $s0 05
    $cx
    $"CAMDRIVER0: Received_and_cleared_Int_Source_%0_Event_Info_%2_Event_ID_%3"
    #SET_REG(06,03)
  $cl
    $"CAMDRIVER0: Focus_operation_not_finnished"
    $s0 03
  $cx
  $s1 00
  $s2 00
  $s3 00
;
seq_get_prop_b =
  #COM_EVENT(72,00)
  05 01 00 B0 04 $f
  $r5 0 0 1 2 3
  $d0002
;
seq_get_prop_c =
  #COM_EVENT(72,00)
  05 01 00 B4 02 $f
  $r3 0 0 1
  $d0002
  $cf.06 1
    $ce 00
      $s2 01
    $cl
      $s2 00
    $cx
  $cl
    $s2 00
  $cx
  #READ_REG(4A)
  $m3 4
;
seq_set_prop_e_0 =
  $sd 00
  #SET_REG(91,00)
;
seq_set_prop_e_1 = $sd 01;
seq_set_prop_e_2 =
  $sd 02
  #FLASH_SETTINGS
;
seq_set_prop_e_3 =
  $sd 03
  #FLASH_SETTINGS
;
seq_set_prop_e_4 =
  $sd 04
  #SET_REG(91,03)
;
seq_set_prop_10_0 =
  $sa 09
  #TO_DRAFT
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(51,00)
  #UPDATE_WB
  #UPDATE_PHOTO
  #NOT_DOC_MODE
  #UPDATE_ISO
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_10_1 =
  $sa 09
  #TO_DRAFT
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(02,00)
  #COM_EVENT(51,01)
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_10_2 =
  $sa 09
  #TO_DRAFT
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(02,00)
  #COM_EVENT(51,06)
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_10_3 =
  $sa 09
  #TO_DRAFT
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(02,00)
  #COM_EVENT(51,04)
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_10_4 =
  $sa 09
  #TO_DRAFT
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(02,00)
  #COM_EVENT(51,08)
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_10_5 =
  $sa 09
  #TO_DRAFT
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(02,00)
  #COM_EVENT(51,02)
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_10_6 =
  $sa 09
  #TO_DRAFT
  #SET_REG(64,17)
  #SET_REG(22,3C)
  #COM_EVENT(02,00)
  #COM_EVENT(51,05)
  #UPDATE_WB
  #NOT_DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_10_7 =
  $sa 0B
  #TO_DRAFT
  #SET_REG(64,26)
  #SET_REG(22,02)
  #COM_EVENT(02,00)
  #COM_EVENT(51,08)
  #UPDATE_WB
  #DOC_MODE
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
  $cx
;
seq_set_prop_11_0 =
  #TO_DRAFT
  $sc 00
  #SET_REG(95,04)
  #COM_EVENT(02,00)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01)
;
seq_set_prop_11_1 =
  #TO_DRAFT
  $sc 01
  #SET_REG(61,01)
  #SET_REG(95,01)
  #COM_EVENT(02,04)
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  #COM_EVENT(5A,01)
;
seq_set_prop_11_2 =
  #TO_DRAFT
  $sc 04
  #SET_REG(61,04)
  #SET_REG(95,04)
  #COM_EVENT(02,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01)
;
seq_set_prop_11_3 =
  #TO_DRAFT
  $sc 07
  #SET_REG(61,07)
  #SET_REG(95,07)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01)
;
seq_set_prop_12_0 =
  $"CAMDRIVER0: Restore framerate"
  $sf.07 0
  $z5
  $c5 20
    $p6 10
    $c6 06
      #SET_REG(22,3C)
      #SET_REG(25,3C)
    $cl
      #SET_REG(22,02)
      #SET_REG(25,02)
    $cx
    #SET_REG(21,3C)
    #SET_REG(24,3C)
  $cx
  $c5 2f
    $p6 10
    $c6 06
      #SET_REG(22,3C)
      #SET_REG(25,3C)
    $cl
      #SET_REG(22,02)
      #SET_REG(25,02)
    $cx
    #SET_REG(21,3C)
    #SET_REG(24,3C)
  $cx
  $c5 21
    #SET_REG(22,0A)
    #SET_REG(25,0A)
    #SET_REG(21,3C)
    #SET_REG(24,3C)
  $cx
  $c5 25
    #SET_REG(22,18)
    #SET_REG(25,18)
    #SET_REG(21,18)
    #SET_REG(24,18)
  $cx
  $c5 26
    #SET_REG(22,18)
    #SET_REG(25,18)
    #SET_REG(21,18)
    #SET_REG(24,18)
  $cx
  $c5 29
    #SET_REG(22,14)
    #SET_REG(25,14)
    #SET_REG(21,14)
    #SET_REG(24,14)
  $cx
  $c5 2a
    #SET_REG(22,3B)
    #SET_REG(25,3B)
    #SET_REG(21,3C)
    #SET_REG(24,3C)
  $cx
  $c5 2b
    #SET_REG(22,1E)
    #SET_REG(25,1E)
    #SET_REG(21,1E)
    #SET_REG(24,1E)
  $cx
  $c5 2c
    #SET_REG(22,0F)
    #SET_REG(25,0F)
    #SET_REG(21,0F)
    #SET_REG(24,0F)
  $cx
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01)
  $cf.00 1
    #CHANGE_MODE(35,00)
    $cf.01 1
      #CHANGE_MODE(38,00)
    $cx
  $cl
    $cf.01 1
      #CHANGE_MODE(37,00)
    $cx
  $cx
;
seq_set_prop_12_1 =
  $"CAMDRIVER0: Decrease framerate"
  $sf.07 1
  #SET_REG(22,0F)
  #SET_REG(25,0F)
  #SET_REG(21,0F)
  #SET_REG(24,0F)
  #CHANGE_MODE(34,00)
;
seq_set_prop_16_0 =
  #TO_DRAFT
  #COM_EVENT(08,00)
;
seq_set_prop_16_1 =
  #TO_DRAFT
  #COM_EVENT(08,01)
;
seq_get_prop_17 =
  #READ_REG(93)
  $-4 02
  $m0 4
  $sf.06 0
  $cd 02
    $sf.06 1
    $p5 10
    $c5 04
      #SET_REG(9E,26)
      #SET_REG(91,23)
    $cl
      #SET_REG(9E,02)
      #SET_REG(91,03)
    $cx
  $cx
  $cd 03
    $sf.06 1
    $p5 10
    $c5 04
      #SET_REG(9E,26)
      #SET_REG(91,13)
    $cl
      #SET_REG(9E,02)
      #SET_REG(91,13)
    $cx
  $cx
  $s1 00
  $s2 00
  $s3 00
;
seq_set_prop_18_0 =
  #TO_DRAFT
  #CHANGE_MODE(34,00)
  $sf.00 0
  $cc 00
    #COM_EVENT(02,00)
  $cl
    #COM_EVENT(02,04)
    #SET_REG(61,$wc)
  $cx
  #COM_EVENT(5A,01)
  $c8 01
    #CHANGE_MODE(37,00)
  $cx
;
seq_set_prop_18_1 =
  #TO_DRAFT
  $sf.00 1
  #COM_EVENT(02,00)
  #CHANGE_MODE(35,00)
  $c8 01
    #CHANGE_MODE(38,00)
  $cx
;
seq_set_prop_19_0 =
  #TO_DRAFT
  #COM_EVENT(61,84)
;
seq_set_prop_19_1 =
  #TO_DRAFT
  #SET_REG(67,01)
  #COM_EVENT(61,04)
;
seq_set_prop_19_2 =
  #TO_DRAFT
  #SET_REG(67,01)
  #COM_EVENT(61,40)
;
seq_get_prop_1a =
  #TO_DRAFT
  #READ_REG(69)
  $s0 63
  $*0 40
  $/0 r4
  $-0 54
  $/0 0F
  $s3 00
  $s2 00
  $s1 00
;
seq_set_prop_1b = $se %0;
seq_set_prop_1c_0 =
  #SET_REG(2D,01)
  #SET_REG(42,46)
  $cf.05 1
    #SET_REG(45,5A)
  $cl
    #SET_REG(45,5F)
  $cx
;
seq_set_prop_1c_1 =
  #SET_REG(2D,03)
  #SET_REG(42,40)
  $cf.05 1
    #SET_REG(45,40)
  $cl
    #SET_REG(45,46)
  $cx
;
seq_set_prop_1c_2 =
  #SET_REG(2D,06)
  #SET_REG(42,32)
  $cf.05 1
    #SET_REG(45,14)
  $cl
    #SET_REG(45,1E)
  $cx
;
seq_set_prop_1c_3 =
  #SET_REG(2D,08)
  #SET_REG(42,20)
  $cf.05 1
    #SET_REG(45,05)
  $cl
    #SET_REG(45,0A)
  $cx
;
seq_set_prop_1d_0 = $sb 00;
seq_set_prop_1d_1 = $sb 01;
seq_set_prop_1d_2 = $sb 02;
seq_set_prop_1d_3 =
  #CHANGE_MODE(31,02)
  #CHANGE_MODE(39,04)
;
seq_set_prop_1d_4 =
  #COM_EVENT(3A,00)
;
seq_set_prop_1e_0 =
  $go 31 0
  $d0020
  $go 31 1
  #CAPTURE_EVENT
  #CAPTURE_EVENT
  #SET_REG(29,01)
  #SET_REG(2B,01)
;
seq_set_prop_1e_1 =
  #SET_REG(81,01)
  03 55 AA $f
  $r2 01
  $d0003
  08 04 70 30 00 05 01 00 $f
  $r3 001
  $d0003
;
seq_ss_config_1 =
  $sf.03 1
  #SET_REG(26,08)
  $cf.05 1
    $"CAMDRIVER0: VGA NORMAL COMPRESSION"
    0D 02 00 3C 96 00 A0 00 37 00 46 3C 32 $f
    $ra 1111111111
    $d0002
  $cl
    $"CAMDRIVER0: VGA LOW COMPRESSION"
    0D 02 00 3C 96 00 A0 00 50 00 50 46 3C $f
    $ra 1111111111
    $d0002
  $cx
;
seq_ss_config_2 =
  $sf.03 1
  #SET_REG(26,06)
  $cf.05 1
    $"CAMDRIVER0: 1M NORMAL COMPRESSION"
    0D 02 00 3C 90 01 3C 00 C8 00 46 3C 32 $f
    $ra 1111111111
    $d0002
  $cl
    $"CAMDRIVER0: 1M LOW COMPRESSION"
    0D 02 00 3C 90 01 64 00 2C 01 50 46 3C $f
    $ra 1111111111
    $d0002
  $cx
;
seq_ss_config_4 =
  $sf.03 1
  #SET_REG(26,05)
  $cf.05 1
    $"CAMDRIVER0: 2M NORMAL COMPRESSION"
    0D 02 00 3C 58 02 96 00 90 01 46 3C 32 $f
    $ra 1111111111
    $d0002
  $cl
    $"CAMDRIVER0: 2M LOW COMPRESSION"
    0D 02 00 3C 58 02 90 01 F4 01 50 46 3C $f
    $ra 1111111111
    $d0002
  $cx
;
seq_ss_config_5 =
  $sf.03 1
  #SET_REG(26,03)
  $cf.05 1
    $"CAMDRIVER0: 3M NORMAL COMPRESSION"
    0D 02 00 3C 20 03 90 01 58 02 46 3C 32 $f
    $ra 1111111111
    $d0002
  $cl
    $"CAMDRIVER0: 3M LOW COMPRESSION"
    0D 02 00 3C 84 03 58 02 52 03 50 46 3C $f
    $ra 1111111111
    $d0002
  $cx
;
seq_ss_config_6 =
  $sf.03 1
  #SET_REG(26,01)
  $cf.05 1
    $"CAMDRIVER0: 5M NORMAL COMPRESSION"
    0D 02 00 3C 46 05 9E 02 E8 03 46 3C 32 $f
    $ra 1111111111
    $d0002
  $cl
    $"CAMDRIVER0: 5M LOW COMPRESSION"
    0D 02 00 3C DC 05 B0 04 78 05 50 46 3C $f
    $ra 1111111111
    $d0002
  $cx
;
seq_ss_config_10 =
  $sf.03 0
  #SET_REG(26,0C)
;
seq_ss_config_11 =
  $sf.03 0
  #SET_REG(26,08)
;
seq_vf_config_20 =
  #SET_REG(20,0C)
  $cf.07 1
  $cl
    #SET_REG(21,3C)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00
;
seq_vf_config_21 =
  #SET_REG(20,0C)
  $cf.07 1
  $cl
    #SET_REG(21,1E)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00
;
seq_vf_config_25 =
  #SET_REG(20,14)
  #SET_REG(23,14)
  $cf.07 1
  $cl
    #SET_REG(22,14)
    #SET_REG(25,14)
    #SET_REG(21,14)
    #SET_REG(24,14)
  $cx
  $s8 00
;
seq_vf_config_26 =
  #SET_REG(20,12)
  #SET_REG(23,12)
  $cf.07 1
  $cl
    #SET_REG(22,18)
    #SET_REG(25,18)
    #SET_REG(21,18)
    #SET_REG(24,18)
  $cx
  $s8 00
;
seq_vf_config_29 =
  #SET_REG(20,12)
  #SET_REG(23,12)
  $cf.07 1
  $cl
    #SET_REG(22,14)
    #SET_REG(25,14)
    #SET_REG(21,14)
    #SET_REG(24,14)
  $cx
  $s8 01
;
seq_vf_config_2a =
  #SET_REG(20,0C)
  #SET_REG(23,0C)
  $cf.07 1
  $cl
    #SET_REG(22,3B)
    #SET_REG(25,3B)
    #SET_REG(24,3C)
    #SET_REG(21,3C)
  $cx
  $s8 01
;
seq_vf_config_2b =
  #SET_REG(20,0C)
  #SET_REG(23,0C)
  $cf.07 1
  $cl
    #SET_REG(22,1E)
    #SET_REG(25,1E)
    #SET_REG(21,1E)
    #SET_REG(24,1E)
  $cx
  $s8 01
;
seq_vf_config_2c =
  #SET_REG(20,0C)
  #SET_REG(23,0C)
  $cf.07 1
  $cl
    #SET_REG(22,0F)
    #SET_REG(25,0F)
    #SET_REG(21,0F)
    #SET_REG(24,0F)
  $cx
  $s8 01
;
seq_vf_config_2f =
  #SET_REG(20,0C)
  $cf.07 1
  $cl
    #SET_REG(21,3C)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00
;
seq_vf_start =
  $cf.02 0
    #CHANGE_MODE(33,00)
    #COM_EVENT(43,00)
    #COM_EVENT(5A,01)
    $sf.02 1
    $se 00
  $cl
    #CHANGE_MODE(34,00)
    #COM_EVENT(5A,01)
    $cf.00 1
      #CHANGE_MODE(35,00)
      $c8 01
        #CHANGE_MODE(38,00)
      $cx
    $cl
      $c8 01
        #CHANGE_MODE(37,00)
      $cx
    $cx
  $cx
;
seq_vf_stop = ;
seq_ss_start =
  $cf.02 1
    #CHANGE_MODE(31,02)
    $sf.02 0
  $cx
;
seq_ss_take =
  $ce 00
    $cf.03 1
      #CHANGE_MODE(36,80)
      #CAPTURE_EVENT
    $cl
      #CHANGE_MODE(36,00)
    $cx
  $cl
    #CHANGE_MODE(3A,$we)
  $cx
  #CAPTURE_EVENT
;
seq_ss_verify =
  #CAPTURE_EVENT
  $c2 01
    $s0 01
    $"CAMDRVIER0: Image_verified"
  $cl
    $"CAMDRIVER0: Image_not_verified"
  $cx
;
seq_ss_stop = ;
seq_pv_start =
  $cf.02 1
    #CHANGE_MODE(31,02)
    $sf.02 0
  $cx
  $"CAMDRIVER0: seq_pv_start"
  $s9 00
  $cb 00
    #CHANGE_MODE(39,04)
  $cl
    #CHANGE_MODE(39,14)
  $cx;
seq_pv_stop =
  $c9 01
    $"CAMDRIVER0: seq_pv_stop"
    $s9 03
    #COM_EVENT(3A,00)
  $cl
    $"CAMDRIVER0: seq_pv_stop is waiting for EV_RECORD_STATUS"
    $s9 02
  $cx;
seq_pv_verify =
  $h0 02 5 0000
  05 01 00 03 03 $f
  $r4 0 012
  05 02 00 06 03 $f
  $cb 02
    $s0 ff
  $cl
    $s0 00
    $c2 e3
      $b1 00 4 4
      $c1 00
        $s0 01
        $"CAMDRIVER0: Rotate,synch vf"
      $cl
        $"CAMDRIVER0: Compr_failed_%0_%1_%2"
      $cx
    $cx
    $c2 ea
      $c1 50
        $s0 ff
      $cx
    $cx
    $c2 ee
      $c9 02
        $"CAMDRIVER0: EV_RECORD_STATUS(completed)"
        $"CAMDRIVER0: Change the mode to BurstOutput"
        $s9 03
        #COM_EVENT(3A,00)
        $s0 00
      $cl
        $"CAMDRIVER0: EV_RECORD_STATUS(completed)"
        $s9 01
      $cx
    $cx
  $cx;
jpeg_qtable_selector_0 =
  $s2 00
  #READ_REG(4A)
  $m0 4
  $s1 00
  $"CAMDRIVER0: qtable0=%0"
;
jpeg_qtable_selector_1 =
  $s2 01
  #READ_REG(4A)
  $m0 4
  $s1 00
  $"CAMDRIVER0: qtable1=%0"
;
jpeg_qtable_0 =
  10 0B 0C 0E 0C 0A 10 0E 0D 0E 12 11 10 13 18 28
  1A 18 16 16 18 31 23 25 1D 28 3A 33 3D 3C 39 33
  38 37 40 48 5C 4E 40 44 57 45 37 38 50 6D 51 57
  5F 62 67 68 67 3E 4D 71 79 70 64 78 5C 65 67 63
;
jpeg_qtable_1 =
  11 12 12 18 15 18 2F 1A 1A 2F 63 42 38 42 63 63
  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63
  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63
  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63
;
jpeg_qtable_factors =
  0,320100,190000,10AB00,C8000,A0000,85500,72500,
  64000,58E00,50000,48C00,42B00,3D900,39200,35500,
  32000,2F100,2C700,2A200,28000,26200,24600,22D00,
  21500,20000,1EC00,1DA00,1C900,1B900,1AB00,19D00,
  19000,18400,17800,16E00,16400,15A00,15100,14800,
  14000,13800,13100,12A00,12300,11C00,11600,11000,
  10B00,10500,10000,FB00,F600,F100,EC00,E600,
  E100,DC00,D700,D200,CD00,C800,C300,BD00,
  B800,B300,AE00,A900,A400,9F00,9A00,9400,
  8F00,8A00,8500,8000,7B00,7600,7100,6C00,
  6600,6100,5C00,5700,5200,4D00,4800,4300,
  3D00,3800,3300,2E00,2900,2400,1F00,1A00,
  1400,F00,A00,500,100
;
jpeg_header =
  FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01
  00 01 00 00 FF DB 00 84 00 $qt001 $qt1 FF C4 01 A2 00
  00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00
  00 01 02 03 04 05 06 07 08 09 0A 0B 01 00 03 01
  01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02
  03 04 05 06 07 08 09 0A 0B 10 00 02 01 03 03 02
  04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11
  05 12 21 31 41 06 13 51 61 07 22 71 14 32 81 91
  a1 08 23 42 b1 c1 15 52 d1 f0 24 33 62 72 82 09
  0a 16 17 18 19 1a 25 26 27 28 29 2a 34 35 36 37
  38 39 3a 43 44 45 46 47 48 49 4a 53 54 55 56 57
  58 59 5a 63 64 65 66 67 68 69 6a 73 74 75 76 77
  78 79 7a 83 84 85 86 87 88 89 8a 92 93 94 95 96
  97 98 99 9a a2 a3 a4 a5 a6 a7 a8 a9 aa b2 b3 b4
  b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6 c7 c8 c9 ca d2
  d3 d4 d5 d6 d7 d8 d9 da e1 e2 e3 e4 e5 e6 e7 e8
  e9 ea f1 f2 f3 f4 f5 f6 f7 f8 f9 fa 11 00 02 01
  02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02
  03 11 04 05 21 31 06 12 41 51 07 61 71 13 22 32
  81 08 14 42 91 a1 b1 c1 09 23 33 52 f0 15 62 72
  d1 0a 16 24 34 e1 25 f1 17 18 19 1a 26 27 28 29
  2a 35 36 37 38 39 3a 43 44 45 46 47 48 49 4a 53
  54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a 73
  74 75 76 77 78 79 7a 82 83 84 85 86 87 88 89 8a
  92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 a8
  a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6
  c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e2 e3 e4
  e5 e6 e7 e8 e9 ea f2 f3 f4 f5 f6 f7 f8 f9 fa FF
  DD 00 04 00 00 FF C0 00 11 08 $h $w 03 01 21 00
  02 11 01 03 11 01 FF DA 00 0C 03 01 00 02 11 03
  11 00 3F 00
;

EasyShutter v1.2

download
Date: 25.06.2011.
Author: Deddot
Nationality: Indonesian

//EasyShutter
 //Filename: camdriver0.dat
 //Phone project: Sofia
 //SPACE: 1200-1425
 //Companion chips: none
//Information section
 info_name=MCB991;
 info_vendor=Sony;
 info_major_ver=1;
 info_minor_ver=2;
//Platform registers used
 //0, Used in CLEAR_EVENT_FIFO, POLL_EVENT_ID, jpeg_qtable_selector, WAIT_FOR_TRIG
 //1, Used in SET_REG, CLEAR_EVENT, SEND_COMMAND, jpeg_qtable_selector
 //2, Used in CLEAR_EVENT (Event info stored), CLEAR_EVENT_FIFO, POLL_EVENT_ID, jpeg_qtable_selector
 //3, Used in CLEAR_EVENT (Event id stored), CLEAR_EVENT_FIFO, POLL_EVENT_ID
 //4, Used in READ_REG (value stored), Property 6
 //5, Used in Property 6, Property 23, UPDATE_MIN_FRMRATE, UPDATE_ISO, UPDATE_PHOTO, UPDATE_WB, Property 10
 //6, ?
 //7, ?
 //8, Used as a flag for HS video
 //9, 0:Init 1:ReadyForBurstOutput 2:WaitForEV_RECORD_STATUS 3:BurstOutput
 //a, Used to remember EV value
 //b, Used in Property 29, BestPic operation, seq_pv_verify
 //c, Used to remember ISO setting since one has to change AE_MODE to "auto" for IS.
 //d, Used to remember Xenon flash mode (property 14)
 //e, Used for picture readout, 0=> normal, burst 1=> read out pict 1
 //f, Used as 32 flags:
 // bit 0, Image stabilization, 1=ON, 0=OFF
 // bit 1, High sensitivity, 1=ON, 0=OFF
 // bit 2, Any draft mode, 1=YES, 0=NO
 // bit 3, Snapshot format, 1=JPEG, 0=YCbCr
 // bit 4, Xenon flash needed, 1=Yes, 0=NO
 // bit 5, JPEG compression 1=Normal, 0=Low compression
 // bit 6, Flash was used 1=True, 0=False
 // bit 7, Menu mode(low frrate) 1=True,  0=False
 // bit a, Exposure lock 1=True,  0=False
//Macros for camera
 SET_REG = //Sets register to value 
  05 02 00 !0 !1 $f //Syntax: SET_REG(REG,VAL)
  $r2 1 1 $d0002 
  ;
 READ_REG = //Read from camera and put result in platf. reg 4
  05 01 00 !0 01 $f //Syntax: READ_REG(REG)
  $r2 4 4 $d0002 //Result saved in reg 4.
  ;
 CLEAR_EVENT = //Clears event register. FIFO is not cleared
  05 01 00 03 03 $f //Packet length, access code, id number, reg to read (int source), req packet length
  $r4 1 123 $d0002 //Put Int_source in reg 1, Event_info in reg 2 and Event_id in reg 3
  $c3 00 //If internal register 3 holds 0 (means the queue was empty)
   $"CAMDRIVER0: Queue_was_empty"
  $cl
   $"CAMDRIVER0: Cleared_Int_Source_%1_Event_Info_%2_Event_ID_%3"
  $cx
  #SET_REG(06,03) //Clears the event
  ;
 CLEAR_EVENT_FIFO = //Clears the event FIFO
  $s0 01 //Set internal register 0 to 0x01 (otherwise the loop won't even start)
  [ 0 ff //Loop 0xff times or quit looping when internal register 0 holds 0
   #CLEAR_EVENT //Read the event and clear it
   $c3 00 //If internal register 3 holds 00 (=if EVENT_ID equals 00, meaning the queue is empty)
    $s0 00 //Set internal register 0 to 0x00 in order to exit the loop
   $cx
  ]
  ;
 SEND_COMMAND = //Only send command, no reply is read out
  06 02 00 01 !1 !0 $f //Syntax: SEND_COMMAND(REG,VALUE)
  $r3 111 $d0002
  ;
 WAIT_FOR_TRIG = //Listen to TRIG
  $h 0 02 5 1000 //Listen to trig on Application GPIO_02=TRIG
  $c0 00
   $"CAMDRIVER0: TRIG_Timeout" //No event occured
  $cl
   $"CAMDRIVER0: TRIG_Recieved" //Event occured
  $cx
  ;
 //Reads and clears events until the specified event occurs.
 POLL_EVENT_ID = //Syntax: POLL_EVENT_ID($s4 Event Identification)
  !0 //"Execute" the first parameter
  $s0 01 //Set internal register 0 to 0x01 (otherwise the loop won't even start)
  [ 0 ff //Loop 0xff times or quit looping when internal register 0 holds 0
   #CLEAR_EVENT //Clear event. If the event id (which the CLEAR_EVENT-makro will store in internal register 2) is equal to 0xea (=EV_MODE_CHANGED)
   $-3 r4 //Subtract the contents of internal register 4 from the contents of register 3 (EVENT_ID) and store the result in internal register 3
   $c3 00 //If internal register 3 holds 0
    $"CAMDRIVER0: Successfully_acknowledged_Event_ID_%4"
    $s0 00 //Set internal register 0 to 0x00 in order to exit the loop
   $cx //End if
  ]
  ;
 CAPTURE_EVENT =
  #WAIT_FOR_TRIG
  #CLEAR_EVENT
  ;
 CHANGE_MODE = //Syntax: CHANGE_MODE(command, value)
  #CLEAR_EVENT_FIFO //Clear the fifo
  #SEND_COMMAND(!0,!1) //Send command
  #POLL_EVENT_ID($s4 ea) //Wait for EV_mode_changed (0xea)
  #SET_REG(06,03)
  ;
 COM_EVENT = //Syntax: COM_EVENT(command, value)
  #CLEAR_EVENT_FIFO
  #SEND_COMMAND(!0,!1)
  #WAIT_FOR_TRIG
  #CLEAR_EVENT
  ;
 WB_ISO100 = //Correct WB for ISO100 xenon
  #SET_REG(98,25) //FLASH_CC_R=0x25 (colour temperature of 7000 K for flash)
  #SET_REG(99,73) //FLASH_CC_B=0x73 (colour temperature of 7000 K for flash)
  ;
 WB_ISO200 = //Correct WB for ISO200 xenon
  #SET_REG(98,27) //FLASH_CC_R=0x27 (colour temperature of 6000 K for flash)
  #SET_REG(99,6C) //FLASH_CC_B=0x6D (colour temperature of 6000 K for flash)
  ;
 WB_ISO400 = //Correct WB for ISO400 xenon
  #SET_REG(98,28) //FLASH_CC_R=0x28 (colour temperature of 5700 K for flash)
  #SET_REG(99,6A) //FLASH_CC_B=0x6A (colour temperature of 5700 K for flash)
  ;
 FLASH_LIMIT_ISO100 = //Set flash limits for ISO100
  #SET_REG(A2,C8) #SET_REG(A3,25) //Flash limits
  #SET_REG(A4,D0) #SET_REG(A5,25)
  ;
 FLASH_LIMIT_ISO200 = //Set flash limits for ISO200
  #SET_REG(A2,C7) #SET_REG(A3,21)
  #SET_REG(A4,D0) #SET_REG(A5,21)
  ;
 FLASH_LIMIT_ISO400 = //Set flash limits for ISO400
  #SET_REG(A2,C6) #SET_REG(A3,1D)
  #SET_REG(A4,D0) #SET_REG(A5,1D)
  ;
 FLASH_ISO100 = ///flash ISO100
  #SET_REG(95,01) //Set flash ISO to 100
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  ;
 FLASH_ISO200 = ///flash ISO200
  #SET_REG(95,04) //Set flash ISO to 200
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  ;
 FLASH_ISO400 = ///flash ISO400
  #SET_REG(95,07) //Set flash ISO to 400
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  ;
 UPDATE_WB = //Updates white balance if necessary
  $p5 01
  $c5 00 //WB is auto?
  $cl
   $u01 //Update WB
  $cx
  ;
 UPDATE_ISO = //Updates ISO
  $p5 11
  $c5 00 //ISO is auto
  $cl
   $u11 //Update ISO
  $cx
  ;
 UPDATE_PHOTO = //Updates photo metering
  #TO_DRAFT
  $p5 16
  $c5 00
   #COM_EVENT(08,00)
  $cl
   #COM_EVENT(08,01)
  $cx
  ;
 UPDATE_AE = ///
  #READ_REG(69)
  $c4 40 //if zoomed
   //do nothing
  $cl
   #COM_EVENT(02,00) //AE Auto
  $cx
  ;
 UPDATE_MIN_FRMRATE = //Updates minimum framerate
  $p5 10
  $c5 00
   $p5 18
   $c5 00
    #SET_REG(22,0A) //5fps
   $cl
    #SET_REG(22,01) //0.5fps
   $cx
  $cl
   $c5 03
    #SET_REG(22,01) //0.5fps
   $cl 
    $c5 06
     #SET_REG(22,3C) //30fps
    $cl 
     #SET_REG(22,0A) //5fps
    $cx
   $cx
  $cx
  ;
 FLASH_SETTINGS =
  #SET_REG(92,00) //FLASH_MSHUT_MODE=0
  $p5 10
  $c5 01 ///if portrait
   $p5 0E
   $c5 03 //if RER on
    //fast triple flash
    #SET_REG(A0,02) //FLASH_REDEYE_NUM
    #SET_REG(A1,01) //FLASH_REDEYE_TWAIT
   $cl
    #SET_REG(A0,02) #SET_REG(A1,03) //medium triple flash
   $cx
  $cl
   $c5 04 ///if twilight portrait
    #SET_REG(A0,02) #SET_REG(A1,07) //long triple flash
   $cl
    #SET_REG(A0,01) #SET_REG(A1,01) //fast double flash
   $cx
  $cx
  #SET_REG(96,00) //FLASH_EXPOSING_OFFSET=0x0400
  #SET_REG(97,04) //Low byte of FLASH_EXPOSING_OFFSET
  #SET_REG(9A,F0) //CC_FLASH_OFFSET_MAX_RATIO
  #SET_REG(9B,A0) //CC_FLASH_OFFSET_MIN_RATIO
  #SET_REG(9C,0D) //CC_FLASH_OFFSET_DARK
  #SET_REG(9D,2B) //CC_FLASH_OFFSET_BRIGHT
  ;
 FLASH_WB = //white ba;ance correction for flash
  $p5 00
  $+5 B7 $/5 05
  #SET_REG(98,$w5) //FCC_R
  $p5 00
  $-5 A0
  #SET_REG(99,$w5) //FCC_B
  ;
 FLASH_MSHUT_SLOW = //flash shutter speed 1
  $p5 00
  $-5 03 $*5 03 $+5 08
  #SET_REG(9E,$w5)
  $c5 00
   #FLASH_ISO100
  $cl
   $p5 10
   $c5 00
    #FLASH_ISO200
   $cl
    #FLASH_ISO100
   $cx
  $cx
  #FLASH_WB
  ;
 FLASH_MSHUT_FAST = //flash shutter speed 2
  $p5 00
  $-5 03 $*5 02
  #SET_REG(9E,$w5)
  $c5 00
   #FLASH_ISO100
  $cl
   $p5 10
   $c5 00
    #FLASH_ISO200
   $cl
    #FLASH_ISO100
   $cx
  $cx
  #FLASH_WB
  ;
 TO_DRAFT = //Changes to draft (but not on display)
  $cf.02 0 //If not draft
   #CHANGE_MODE(33,00) //MODE_MAIN
   $sf.02 1 //Set draft flag to 1
  $cx
  ;
 EXPOSURE = //exposure control
  $p5 00
  $-5 09
  #COM_EVENT(06,$w5)
  ;
 MFOCUS = //manual focus control
  #READ_REG(69) //check zoom status
  $c4 40 //if zoomed
   #EXPOSURE
   $s7 00
  $cl
   $p5 00
   $-5 03 $*5 08
   #COM_EVENT(43,$w5)
   $s7 01
  $cx
  ;
 EXPOLOCK = //exposure lock
  #READ_REG(69)
  $c4 40
   #COM_EVENT(02,00)
   #EXPOSURE
  $cl
   #COM_EVENT(02,01)
   $s5
  $cx
  ;
 MSHUTTER = ///
  #READ_REG(69)
  $c4 40
   #COM_EVENT(02,00)
   $sf.0a 0
   #EXPOSURE
  $cl
   $p5 00
   $-5 03 $*5 03 $+5 08
   #COM_EVENT(02,02)
   #SET_REG(60,$w5)
   #COM_EVENT(02,02)
   $sf.0a 1
  $cx
  ;
 MHUE = ///
  #READ_REG(69)
  $c4 40
   #EXPOSURE
  $cl
   $p5 00
   $-5 09 $*5 15
   #COM_EVENT(57,$w5)
  $cx
  ;
 MSATURATION = ///
  #READ_REG(69)
  $c4 40
   #EXPOSURE
  $cl
   $p5 00
   $-5 09 $*5 06
   #COM_EVENT(58,$w5)
  $cx
  ;
 MSHARPNESS = ///
  #READ_REG(69)
  $c4 40
   #EXPOSURE
  $cl
   $p5 00
   $-5 09 $*5 03
   #COM_EVENT(56,$w5)
  $cx
  ;
 MCONTRAST =
  #READ_REG(69)
  $c4 40
   #EXPOSURE
  $cl
   $p5 00
   $-5 09 ///$*5 06
   #COM_EVENT(55,$w5)
  $cx
  ;
 MCOLORTEMP = ///
  #READ_REG(69)
  $c4 40
   #EXPOSURE
  $cl
   $p5 00
   $-5 09 $*5 0D //07
   $*5 FF
   #SET_REG(65,$w5)
   $p5 00
   $-5 09 $*5 15 //0D
   #SET_REG(66,$w5)
   #COM_EVENT(13,01)
   $s6 01
  $cx
  ;
 UPDATE_COLOR = ///
  #READ_REG(69)
  $c4 40
   #COM_EVENT(55,00) //Contrast
   $p5 10
   $c5 01
    #COM_EVENT(56,FA) //Sharpness
   $cl
    $c5 04
     #COM_EVENT(56,FA)
    $cl
     #COM_EVENT(56,04)
    $cx
   $cx
   #COM_EVENT(57,20) //Hue
   #COM_EVENT(58,08) //Saturation
   #SET_REG(65,00) //00-7F=C, 80-FF=R 
   #SET_REG(66,00) //00-7F=Y, 80-FF=M
   #COM_EVENT(13,01)
   $s6 00
  $cl
   $c6 01
    #MCOLORTEMP
   $cx
  $cx
  ;
 UPDATE_FOCUS = //
  #READ_REG(69)
  $c4 40
   #COM_EVENT(43,00)
   $s7 00
  $cx
  ;
//Camera characteristics section
 cam_power_on_0=5, 2, 31, 0, 05; //Pull RST pin (expander_GPIO_O9=GPIO_31), delay 5ms
 cam_power_on_1=5, 2, 20, 1, 05; //Videocamera standby (expander_GPIO_00=GPIO_30)
 cam_power_on_2=5, 2, 33, 1, 00; //VDDs (expander_GPIO_O11=GPIO_33) delay 5ms
 cam_power_on_3=5, 2, 30, 1, 05; //VDDs (expander_GPIO_O8=GPIO_30) delay 5ms
 cam_power_on_4=5, 3, 9, 7530,05; ///Turn on 30 MHz clock, delay 5ms
 cam_power_on_5=5, 2, 31, 1, 05; //Release RST (expander_GPIO_09=GPIO_41)
 cam_power_off_0=5, 2, 31, 0, 05; //Pull RST pin (expander_GPIO_09=GPIO_41), delay 5ms
 cam_power_off_1=5, 3, 9, 0, 05; //Turn off 30 MHz clock and wait 5 ms
 cam_power_off_2=5, 2, 30, 0, 20; //VDDs (expander_GPIO_O8=GPIO_30), delay 32ms
 cam_power_off_3=5, 2, 33, 0, 05; //VDDs (expander_GPIO_O11=GPIO_33), delay 5ms
 cam_power_off_4=5, 2, 20, 0, 05; //Release standby (expander_GPIO_00=GPIO_30) for videocamera

 cam_i2c_address=1F;
 cam_i2c_clock=; //Default 100 kHz
 cam_vf_clock_freq=9, 7530; ///30 MHz clock
 cam_ss_clock_freq=9, 7530; ///30 MHz clock

 cam_vf_format=B100;
 cam_ss_format=0001; //JPEG default
 cam_ss_format_10=B100; //YCbCr
 cam_ss_format_11=B100; //YCbCr

 cam_data_offset=2; //JPEG default
 cam_data_offset_10=0; //YCbCr
 cam_data_offset_11=0; //YCbCr

 cam_vf_sync=5;
 cam_ss_sync=5;

 cam_post_processing_20=1; //viewfinder rotation
 cam_post_processing_25=1; //videotelephony
 cam_post_processing_26=1; //videotelephony
 cam_post_processing_29=1; //video recording

 cam_ss_jpeg_buf_size_1=25800; //150 KB buffer for 640x480 SS
 cam_ss_jpeg_buf_size_2=64000; //400 KB buffer for 1280x960 SS
 cam_ss_jpeg_buf_size_4=96000; //600 KB buffer for 1632x1244 SS
 cam_ss_jpeg_buf_size_5=E1000; //900 KB buffer for 2048x1536 SS
 cam_ss_jpeg_buf_size_6=1F4000; ///2000 KB buffer for 2592x1944 SS
//Supported sizes
 sup_sizes =
  1[280,1E0,0], //SS 640 x 480 JPEG
  2[500,3C0,0], //SS 1280 x 960 JPEG 1M

  4[660,4C8,0], //SS 1632 x 1224 JPEG 2M
  5[800,600,0], //SS 2048 x 1536 JPEG 3M
  6[A20,798,0], //SS 2592 x 1944 JPEG 5M

  10[140, F0,0], //SS 320 x 240 YCbCr
  11[280,1E0,0], //SS 640 x 480 YCbCr

  20[140,F0,BB8], //VF 320 x 240 YCbCr 30fps
  21[140,F0,5DC], //VF 320 x 240 YCbCr 15fps

  25[60,80,4B0], //VT 96 x 128 YCbCr 12fps max
  26[90,B0,4B0], //VT 144 x 176 YCbCr 12fps max

  29[ 90,B0,3E8], //VR 144 x 176 YCbCr 10fps fixed
  2a[140,F0,BB8], //VR 320 x 240 YCbCr 30fps fixed
  2b[140,F0,7D0], ///VR 320 x 240 YCbCr 20fps fixed
  2c[140,F0,4B0], ///VR 320 x 240 YCbCr 12fps fixed
  2f[140,F0,BB8]; //VF 320 x 240 YCbCr 30fps
//I2C sequences
 seq_init = //This sequence is run after power_on
  $sf 00 //Set all flags to zero
  $sf.05 1 //Normal JPEG compression
  $sf.02 1 //Set draft flag to YES 
  $s8 00 //Video HS OFF
  $sa 09 //EV=0
  $sc 00 //Set iso to auto
  $se 00 //Normal snapshot operation
  $sd 00 //Flash mode "auto"

  #CAPTURE_EVENT //EV_CAM_READY
  #CAPTURE_EVENT //EV_MUTE_OFF
  #SET_REG(29,01) //STILL_OUT_REPEAT=1

  #SET_REG(3B,02) #SET_REG(3A,BC) //JPEG_RETRY_LIMIT=700d=0x02BC

  #SET_REG(6B,06) //SCANAF_MODE_1
  #SET_REG(6C,01) //SCANAF_AF_ILLUMI
  #SET_REG(6F,3C) //SCANAF_MAX_FRMRATE=30fps
  #SET_REG(70,28) ///SCANAF_MIN_FRMRATE=20fps

  #UPDATE_CLARITY
  #UPDATE_COLOR
  #UPDATE_ISO

  #COM_EVENT(5A,01) //FLASH_INFO=1
  ;
  seq_ping=;
//Supported properties
 sup_properties =
  0[3,f,9], //EV
  1[0,4,0], //White balance
  2[0,3,0], //Flicker
  3[0,1,0], //Vertical mirroring
  4[0,1,0], //Horisontal mirroring
  5[0,1,0], //JPEG compression
  6[A,A0,A], //Step zoom
  7[0,1,0], //Night mode, HS ON/OFF
  8[0,4,0], //Effects
  9[0,1,0], //Focus mode
  A[0,2,0], //Focus operation
  B[0,0,0], //EXIF info 1
  C[0,0,0], //EXIF info 2
  E[0,4,0], //Xenon flash support
  10[0,7,0], //Scenes
  11[0,4,0], //ISO
  12[0,1,0], //Framerate adjustments for GUI speed
  16[0,1,0], //Photo metering
  17[0,0,0], //Xenon flash required
  18[0,1,0], //Image stabilization
  19[0,2,0], //Continuous zoom
  1A[0,0,0], //Get zoom level in percentage
  1B[0,9,0], //Snapshot operation
  1C[0,3,0], //BestPic picture size
  1D[0,4,0], //BestPic Operation
  1E[0,1,0]; //Reset and Test pattern
//Property 00 00, EV
 seq_set_prop_0 =
  #TO_DRAFT
  $p5 10
  $c5 00
   #MSHARPNESS
  $cl
   $c5 03 //night landscape
    #EXPOLOCK
   $cl
    $c5 04 //night portrait
     #MCONTRAST
    $cl
     $c5 02 //landscape
      #MHUE
     $cl
      $c5 01 //portrait
       #MSATURATION
      $cl
       $c5 05 //beach snow
        #MCOLORTEMP
       $cl
        $c5 06 //sport 
         #MSHUTTER
        $cl
         #MFOCUS
        $cx
       $cx
      $cx
     $cx
    $cx
   $cx
 $cx
  ;
//Property 01 01, White balance
 // 0 => Auto, 1 => Incandescent, 2 => Flourescent, 3 => Outdoor clear sky, 4 => Outdoor cloudy
 seq_set_prop_1 =
  #TO_DRAFT
  $s5 %0
  $c5 00
  $cl
   $+5 02
  $cx
  #COM_EVENT(11,$w5)
  ;
//Property 02 02, Flicker mode
 // 0 => Auto, 1 => 50 Hz, 2 => 60 Hz, 3 => Disable
 seq_set_prop_2 =
  $s5 %0
  $c5 03
   $-5 03
  $cl
   $+5 01
  $cx
  #COM_EVENT(21,$w5)
  ;
//Property 03 03, Vertical mirroring
 seq_set_prop_3_0 =
  #COM_EVENT(52,00) //Off
  ;
 seq_set_prop_3_1 =
  #COM_EVENT(52,0A) //On
  ;
//Property 04 04, Horizontal mirroring
 seq_set_prop_4_0 =
  #COM_EVENT(52,00); //Off
 seq_set_prop_4_1 =
  #COM_EVENT(52,05) //On
  ;
//Property 05 05, JPEG compression
 seq_set_prop_5_0 =
  $sf.05 1; //Normal compression
 seq_set_prop_5_1 =
  $sf.05 0; //Low compression
//Property 06 06, Zoom
 seq_set_prop_6 = //Set zoom level y=-60x/150 + 68
  #TO_DRAFT
  $s4 %0 $ma 4
  $*4 3C $/4 96
  $s5 44 $-5 r4
  #SET_REG(67,3C) //ZM_SMTH_SPEED=60
  #COM_EVENT(61,$w5) //Send value to camera
  ;
 seq_get_prop_6 =
  #TO_DRAFT
  #READ_REG(69) //Get zoom level x=-150y/60 + 170
  $*4 96 $/4 3C $s0 AA
  $-0 r4 $s1 00 $s2 00 $s3 00
  ;
//Property 07 07, Night mode
 seq_set_prop_7_0=; //Normal mode
 seq_set_prop_7_1=; //HS mode ON
//Property 08 08, Effects
 //0=> normal, 1=> negative, 2=> solarize, 3=> sepia, 4=> black&white
 seq_set_prop_8 =
  #TO_DRAFT
  $s5 %0
  #COM_EVENT(53,$w5)
  ;
//Property 09 09, Focus mode
 /// 0=> Normal range, 1=> Full range
 seq_set_prop_9 =
  #TO_DRAFT
  #SET_REG(6A,%0)
  ;
//Property 0A 10, Focus operation
 seq_set_prop_a_0 = //Stop AF
  $cf.02 0 //If not in draft mode
   #CHANGE_MODE(33,00) //MODE_MAIN
   $sf.02 1 //Set draft flag to 1
   #COM_EVENT(5A,01) //FLASH_INFO=01
  $cx
  ;
 seq_set_prop_a_1 = //Start AF
  $c7 01
   #CHANGE_MODE(31,02)
  $cl
   #CHANGE_MODE(31,06) //Half-release
  $cx
  $sf.02 0 //Not in draft mode
  ;
 seq_set_prop_a_2 = //Go to infinity, do not autofocus!
  #CHANGE_MODE(31,02) //Half-release
  $sf.02 0 //Not in draft mode
  ;
 seq_get_prop_a = //Status of focus operation
  05 01 00 03 03 $f //Packet length, access code, id number, reg to read (int source), req packet length
  $r4 1 123 $d0005 //Put Int_source in reg 0, Event_info in reg 2 and Event_id in reg 3
  $c3 e9 //If EV_HALF_REL, e9
   $b2 00 4 1 //Remove the flash notification bit
   $c2 00
    $"CAMDRIVER0: Focus_operation_succeded"
    $s0 04
   $cl
    $"CAMDRIVER0: Focus_operation_failed"
    $s0 05
   $cx
   $"CAMDRIVER0: Received_and_cleared_Int_Source_%0_Event_Info_%2_Event_ID_%3"
   #SET_REG(06,03) //Clears the event
  $cl
   $"CAMDRIVER0: Focus_operation_not_finnished"
   $s0 03
  $cx
  $s1 00 $s2 00 $s3 00
  ;
//Property 0B 11, EXIF 1
 seq_get_prop_b =
  #COM_EVENT(72,00) //INFO_GET_DATA
  05 01 00 B0 04 $f //Read 4 bytes from adress B0
  $r5 0 0 1 2 3 $d0002 //ISO r0 r1, Shutter r2 r3
  ;
//Property 0C 12, EXIF 2
 seq_get_prop_c =
  #COM_EVENT(72,00) //INFO_GET_DATA
  05 01 00 B4 02 $f //Read 2 bytes from adress B4
  $r3 0 0 1 $d0002 //CC r0, Distance r1
  $cf.06 1
   $ce 00 //If not BestPic
    $s2 01 //Flash
   $cl
    $s2 00 //BestPic, no flash used even if it was dark
   $cx
  $cl
   $s2 00 //No flash
  $cx
  #READ_REG(4A) $m3 4 //Q-value
  ;
//Property 0E 14, Xenon flash support
 seq_set_prop_e_0 = //Off
  $sd 00
  #SET_REG(91,00) //FLASH_XENON_MODE=0

  $p5 01 //White balance adjustment
  $c5 00
   #COM_EVENT(11,00)
  $cx
  ;
 seq_set_prop_e_1 =
  $sd 01
  $u01
  ;
 seq_set_prop_e_2 =
  $sd 02 //Auto internal flash
  #FLASH_SETTINGS
  $u01
  ;
 seq_set_prop_e_3 =
  $sd 03 //Auto red-eye
  #FLASH_SETTINGS
  $u01
  ;
 seq_set_prop_e_4 = //Forced on
  $sd 04
  #SET_REG(91,03)
  ;
//Property 10 16, Scenes
 seq_set_prop_10_0 = //Normal
  $p5 18
  $c5 00
   #SET_REG(22,0A) //MIN_FRMRATE=5fps
   #SET_REG(64,1D) //SLOW_SHUTTER=1/8s
  $cl
   #SET_REG(22,01) //0.5fps
   #SET_REG(64,2C) //2s
  $cx

  #COM_EVENT(51,00) //Auto scene 0
  #UPDATE_COLOR
  #FLASH_ISO200
  #UPDATE_AE
  #UPDATE_WB
  #UPDATE_PHOTO
  #UPDATE_ISO
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ;
 seq_set_prop_10_1 = //Portrait
  #SET_REG(22,0A) //5fps
  #SET_REG(64,1D) //1/8s

  #SET_REG(77,20) //SHUT_MAX 1/4s
  #SET_REG(78,1A) //SHUT_MID 1/15s
  #SET_REG(79,46) //GAIN_MAX ISO399
  #SET_REG(7A,01) //GAIN_MID ISO32
  #SET_REG(7B,1A) //STILL_SHUT 1/15s
  #SET_REG(7C,01) //STILL_GAIN ISO32

  #COM_EVENT(51,08) //custom, 01 Portrait scene
  #UPDATE_COLOR
  #FLASH_ISO100
  #UPDATE_AE
  #UPDATE_WB
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ;
 seq_set_prop_10_2 = //Landscape
  #SET_REG(22,0A) //5fps
  #SET_REG(64,1D) //1/8s

  #COM_EVENT(51,06) //Landscape scene
  #UPDATE_COLOR
  #UPDATE_AE
  #UPDATE_WB
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ;
 seq_set_prop_10_3 = //Night
  #SET_REG(22,01) //0.5fps
  #SET_REG(64,2C) //2s

  #COM_EVENT(51,04) //Night scene
  #UPDATE_COLOR
  #UPDATE_AE
  #UPDATE_WB
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ;
 seq_set_prop_10_4 = //Night portrait
  #SET_REG(22,08) //4fps
  #SET_REG(64,20) //1/4s

  #SET_REG(77,20) //SHUT_MAX 1/4s
  #SET_REG(78,1A) //SHUT_MID 1/15s
  #SET_REG(79,46) //GAIN_MAX ISO399
  #SET_REG(7A,3C) //GAIN_MID ISO200
  #SET_REG(7B,1A) //STILL_SHUT 1/15s
  #SET_REG(7C,3C) //STILL_GAIN ISO200

  #COM_EVENT(51,08) //Custom scene
  #UPDATE_COLOR
  #FLASH_ISO200
  #UPDATE_AE
  #UPDATE_WB
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ;
 seq_set_prop_10_5 = //Beach & snow
  #SET_REG(22,0A) //5fps
  #SET_REG(64,1D) //1/8s

  #COM_EVENT(51,02) //Beach scene
  #UPDATE_COLOR
  #UPDATE_AE
  #UPDATE_WB
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ///$s6 01
  ;
 seq_set_prop_10_6 = //Sports
  #SET_REG(22,3C) //30fps
  #SET_REG(64,01) //1/5000s

  #COM_EVENT(51,05) //Sports scene
  #UPDATE_COLOR
  #UPDATE_AE
  #UPDATE_WB
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ;
 seq_set_prop_10_7 = //Document
  #SET_REG(6C,01)

  #SET_REG(22,0A) //5fps
  #SET_REG(64,1D) //1/8s

  #SET_REG(77,1D) //SHUT_MAX 1/8s
  #SET_REG(78,01) //SHUT_MID 1/5000s
  #SET_REG(79,46) //GAIN_MAX ISO399
  #SET_REG(7A,01) //GAIN_MID ISO32
  #SET_REG(7B,01) //STILL_SHUT 1/5000s
  #SET_REG(7C,01) //STILL_GAIN ISO32

  #COM_EVENT(51,08) //Custom scene
  #UPDATE_COLOR
  #UPDATE_AE
  #FLASH_ISO100
  #UPDATE_WB
  #UPDATE_FOCUS
  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
  $cx
  ;
//Property 11 17, ISO
 seq_set_prop_11_0 = //Auto
  #TO_DRAFT
  $sc 00
  #SET_REG(95,04) //Default ISO200
  #COM_EVENT(02,00)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01) //FLASH_INFO=1
  ;
 seq_set_prop_11_1 = //ISO 100
  #TO_DRAFT
  $sc 01
  #SET_REG(61,01)
  #SET_REG(95,01)
  #COM_EVENT(02,04)
  #WB_ISO100
  #FLASH_LIMIT_ISO100
  #COM_EVENT(5A,01) //FLASH_INFO=1
  ;
 seq_set_prop_11_2 = //ISO 200
  #TO_DRAFT
  $sc 04
  #SET_REG(61,04)
  #SET_REG(95,04)
  #COM_EVENT(02,04)
  #WB_ISO200
  #FLASH_LIMIT_ISO200
  #COM_EVENT(5A,01) //FLASH_INFO=1
  ;
 seq_set_prop_11_3 = //ISO 400
  #TO_DRAFT
  $sc 07
  #SET_REG(61,07)
  #SET_REG(95,07)
  #COM_EVENT(02,04)
  #WB_ISO400
  #FLASH_LIMIT_ISO400
  #COM_EVENT(5A,01) //FLASH_INFO=1
  ;
//Property 12 18, Framerate reduction/restoration for GUI speed
 seq_set_prop_12_0 = //Restore framerate
  $"CAMDRIVER0: Restore framerate"
  $sf.07 0 //Set flag to "not in menu"
  $z5 //Put res id in reg 5

  $c5 20 //If res id 0x20
   $p6 10 //Put scene value in reg 6
   $c6 00
    $p5 18
    $c5 00
     #SET_REG(22,0A) //5fps
    $cl
     #SET_REG(22,01) //0.5fps
    $cx
   $cl
    $c6 03
     #SET_REG(22,01) //0.5fps
    $cl
     $c6 06
      #SET_REG(22,3C) //30fps
     $cl
      #SET_REG(22,0A) //5fps
     $cx
    $cx
    #SET_REG(25,0A) //HS_DRAFT_MIN_FRMRATE 5fps
   $cx
   #SET_REG(21,3C) //DRAFT_MAX_FRMRATE 30fps
   #SET_REG(24,3C) //HS_DRAFT_MAX_FRMRATE 30fps
  $cx

  $c5 2f //If res id 0x2f
   $p6 10 //Put scene value in reg 6
   $c6 03 //Scene is night?
    #SET_REG(22,02) //DRAFT_MIN_FRMRATE 1fps
   $cl
    #SET_REG(22,0A) //DRAFT_MIN_FRMRATE 5fps
    #SET_REG(25,0A) //HS_DRAFT_MIN_FRMRATE 5fps
   $cx
   #SET_REG(21,3C) //DRAFT_MAX_FRMRATE 30fps
   #SET_REG(24,3C) //HS_DRAFT_MAX_FRMRATE 30fps
  $cx

  $c5 21 //If res id 0x21
   #SET_REG(22,0A) //DRAFT_MIN_FRMRATE 5fps
   #SET_REG(25,0A) //HS_DRAFT_MIN_FRMRATE 5fps
   #SET_REG(21,3C) //DRAFT_MAX_FRMRATE 30fps
   #SET_REG(24,3C) //HS_DRAFT_MAX_FRMRATE 30fps
  $cx

  $c5 25 //If res id 0x25
   #SET_REG(22,18) //DRAFT_MIN_FRMRATE 12fps
   #SET_REG(25,18) //HS_DRAFT_MIN_FRMRATE 12fps
   #SET_REG(21,18) //DRAFT_MAX_FRMRATE 12fps
   #SET_REG(24,18) //HS_DRAFT_MAX_FRMRATE 12fps
  $cx

  $c5 26 //If res id 0x26
   #SET_REG(22,18) //DRAFT_MIN_FRMRATE 12fps
   #SET_REG(25,18) //HS_DRAFT_MIN_FRMRATE 12fps
   #SET_REG(21,18) //DRAFT_MAX_FRMRATE 12fps
   #SET_REG(24,18) //HS_DRAFT_MAX_FRMRATE 12fps
  $cx

  $c5 29 //If res id 0x29
   #SET_REG(22,14) //DRAFT_MIN_FRMRATE 10fps
   #SET_REG(25,14) //HS_DRAFT_MIN_FRMRATE 10fps
   #SET_REG(21,14) //DRAFT_MAX_FRMRATE 10fps
   #SET_REG(24,14) //HS_DRAFT_MAX_FRMRATE 10fps
  $cx

  $c5 2a //If res id 0x2a
   #SET_REG(22,3B) //DRAFT_MIN_FRMRATE 29.5fps
   #SET_REG(25,3B) //HS_DRAFT_MIN_FRMRATE 29.5fps
   #SET_REG(21,3C) //DRAFT_MAX_FRMRATE 30fps
   #SET_REG(24,3C) //HS_DRAFT_MAX_FRMRATE 30fps
  $cx

  $c5 2b //If res id 0x2b
   #SET_REG(22,1E) //DRAFT_MIN_FRMRATE 15fps
   #SET_REG(25,1E) //HS_DRAFT_MIN_FRMRATE 15fps
   #SET_REG(21,1E) //DRAFT_MAX_FRMRATE 15fps
   #SET_REG(24,1E) //HS_DRAFT_MAX_FRMRATE 15fps
  $cx

  $c5 2c //If res id 0x2c
   #SET_REG(22,0F) //DRAFT_MIN_FRMRATE 7,5fps
   #SET_REG(25,0F) //HS_DRAFT_MIN_FRMRATE 7,5fps
   #SET_REG(21,0F) //DRAFT_MAX_FRMRATE 7,5fps
   #SET_REG(24,0F) //HS_DRAFT_MAX_FRMRATE 7,5fps
  $cx

  #CHANGE_MODE(34,00)
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $cf.00 1 //If imst mode
   #CHANGE_MODE(35,00) //IS_DRAFT mode
   $cf.01 1 //If (IS) HS mode
    #CHANGE_MODE(38,00) //Mode IS HS draft
   $cx
  $cl //Not in IS
   $cf.01 1 //If HS mode
    #CHANGE_MODE(37,00) //Mode HS draft
   $cx
  $cx  
  ;
 seq_set_prop_12_1 = //Decrease framerate
  $"CAMDRIVER0: Decrease framerate"
  $sf.07 1 //Set flag to "menu" mode
  #SET_REG(22,0F) //DRAFT_MIN_FRMRATE 7,5fps
  #SET_REG(25,0F) //HS_DRAFT_MIN_FRMRATE 7,5fps
  #SET_REG(21,0F) //DRAFT_MAX_FRMRATE 7,5fps
  #SET_REG(24,0F) //HS_DRAFT_MAX_FRMRATE 7,5fps
  #CHANGE_MODE(34,00)
  ;
//Property 16 22, Photo metering
 seq_set_prop_16_0 =
  #TO_DRAFT
  #COM_EVENT(08,00) //Multimode
  ;
 seq_set_prop_16_1 =
  #TO_DRAFT
  #COM_EVENT(08,01) //Spot
  ;
//Property 17 23, Xenon flash required
 seq_get_prop_17 = //0=no flash, 1=flash
  #FLASH_SETTINGS
  #READ_REG(93) //FLASH_INFO_STATUS
  $-4 02 $m0 4
  $sf.06 0 //Set flash flag to FALSE
  $cd 02 //Auto setting?
   $c0 01 //If use flash?
    $sf.06 1 //Set flash flag to TRUE
    $p5 10 //
    $c5 04 //If scene=night portrait
     #FLASH_MSHUT_SLOW
     #SET_REG(91,23) //FLASH_XENON_MODE=0b00100011, slow sync
    $cl
     #FLASH_MSHUT_FAST
     $c5 07
      #SET_REG(9E,01)
     $cx
     #SET_REG(91,03) //FLASH_XENON_MODE=0b00000011, autoflash ON
    $cx
   $cl //Else not use
    $u01
    #SET_REG(91,00) //FLASH_XENON_MODE=0, autoflash OFF
   $cx
  $cx
  $cd 03 //Auto RER setting?
   $sf.06 1 //Set flash flag to TRUE
   #FLASH_MSHUT_FAST
   $c0 01 //If use flash?
    $p5 10
    $c5 07
     #SET_REG(91,03)
    $cl
     #SET_REG(91,13) //FLASH_XENON_MODE=0b00010011, autoflash ON, RER
    $cx
   $cl
    #SET_REG(91,03) //FLASH_XENON_MODE=0b00000011, autoflash ON
   $cx
  $cx
  $s1 00 $s2 00 $s3 00
  ;
//Property 18 24, Image stabilization
 seq_set_prop_18_0 = //IS Off
  #TO_DRAFT
  #CHANGE_MODE(34,00) //DRAFT_MODE
  $sf.00 0
  $cc 00 //AE_MODE=auto?
   #COM_EVENT(02,00) //Auto
  $cl
   #COM_EVENT(02,04) //ISO priority
   #SET_REG(61,$wc) //Change back to last ISO
  $cx
  #COM_EVENT(5A,01) //FLASH_INFO=1
  $c8 01 //If (IS) HS video mode
   #CHANGE_MODE(37,00) //Mode HS draft
  $cx
  $p5 10
  $c5 00
   $u10 ///
  $cx
  ;
 seq_set_prop_18_1 = //IS On
  #TO_DRAFT
  $sf.00 1
  #COM_EVENT(02,00) //AE_MODE=Auto
  #CHANGE_MODE(35,00) //IS_DRAFT mode
  $c8 01 //If (IS) HS video mode
   #CHANGE_MODE(38,00) //Mode IS HS draft
  $cx
  $p5 10
  $c5 00
   $u10 ///
  $cx
  ;
//Property 19 25, Continuous zoom
 seq_set_prop_19_0 = //Stop
  #TO_DRAFT
  #COM_EVENT(61,84)
  ;
 seq_set_prop_19_1 = //Zoom in
  #TO_DRAFT
  #SET_REG(67,01) //ZM_SMTH_SPEED=1
  #COM_EVENT(61,04)
  ;
 seq_set_prop_19_2 = //Zoom out
  #TO_DRAFT
  #SET_REG(67,01) //ZM_SMTH_SPEED=1
  #COM_EVENT(61,40)
  ;
//Property 1A 26, Get continuous zoom
 seq_get_prop_1a =
  #TO_DRAFT
  #READ_REG(69) //Get zoom level in percent 1-100
  $s0 63 $*0 40 $/0 r4 $-0 54 $/0 0F
  $s3 00 $s2 00 $s1 00
  ;
//Property 1B 27, Snapshot operation
 seq_set_prop_1b=$se %0; //0=> Normal, Read out pict 1-9 in BestPic
//Property 1C 28, BestPic image size
 seq_set_prop_1c_0 = //5M
  #SET_REG(2D,01) //BURST_JPEG_IMAGE_SIZE=5M
  #SET_REG(42,46) //JPEG_INIT_QUALITY=70d, 0x46
  $cf.05 1 //If normal
   #SET_REG(45,5A) //JPEG_BURST_TARGET_RATE=90d 850KB
  $cl //Else low compr
   #SET_REG(45,5F) //JPEG_BURST_TARGET_RATE=95d=897KB
  $cx
  ;
 seq_set_prop_1c_1 = //3M
  #SET_REG(2D,03) //BURST_JPEG_IMAGE_SIZE=3M
  #SET_REG(42,40) //JPEG_INIT_QUALITY=64d, 0x40
  $cf.05 1 //If normal
   #SET_REG(45,40) //JPEG_BURST_TARGET_RATE=64d 605 KB
  $cl //Else low compr
   #SET_REG(45,46) //JPEG_BURST_TARGET_RATE=70d 662 KB
  $cx
  ;
 seq_set_prop_1c_2 = //1M
  #SET_REG(2D,06) //BURST_JPEG_IMAGE_SIZE=SXGA
  #SET_REG(42,32) //JPEG_INIT_QUALITY=50d, 0x32
  $cf.05 1 //If normal
   #SET_REG(45,14) //JPEG_BURST_TARGET_RATE=20d 189KB
  $cl //Else low compr
   #SET_REG(45,1E) //JPEG_BURST_TARGET_RATE=30d 283KB
  $cx
  ;
 seq_set_prop_1c_3 = //VGA
  #SET_REG(2D,08) //BURST_JPEG_IMAGE_SIZE=VGA
  #SET_REG(42,20) //JPEG_INIT_QUALITY=32d, 0x20
  $cf.05 1 //If normal
   #SET_REG(45,05) //JPEG_BURST_TARGET_RATE=5d 43KB
  $cl //Else low compr
   #SET_REG(45,0A) //JPEG_BURST_TARGET_RATE=10d 95KB
  $cx
  ;
//Property 1D 29, BestPic operation
 seq_set_prop_1d_0=$sb 00; //Normal burst operation
 seq_set_prop_1d_1=$sb 01; //Half speed burst operation
 seq_set_prop_1d_2=$sb 02; //Abort Burst operation
 seq_set_prop_1d_3 = //Start Burst (only for ITP)
  #CHANGE_MODE(31,02) //Half-release with focus set to inf
  #CHANGE_MODE(39,04)
  ;
 seq_set_prop_1d_4 = //Stop Burst (only for ITP)
  #COM_EVENT(3A,00) //Take picture
  ;
//Property 1E 30, Reset and test pattern
 seq_set_prop_1e_0 =
  $go 31 0 //Reset low
  $d0020
  $go 31 1 //Reset high
  #CAPTURE_EVENT //EV_CAM_READY
  #CAPTURE_EVENT //EV_MUTE_OFF
  #SET_REG(29,01) //STILL_OUT_REPEAT=1
  #SET_REG(2B,01) //VSGATE ON
  ;
 seq_set_prop_1e_1 = //Testpattern
  #SET_REG(81,01)
  03 55 AA $f $r2 01 $d0003
  08 04 70 30 00 05 01 00 $f $r3 001 $d0003
  ;
//Viewfinder and snapshot sequences
 seq_ss_config_1 = //Snapshot sequences
  $sf.03 1 //JPEG flag to 1
  #SET_REG(26,08) //640 x 480 JPEG and JPEG IMST
  $cf.05 1 //If normal compression
   $"CAMDRIVER0: VGA NORMAL COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   96 00 //JPEG_MAX_CODE_SIZE=150d
   A0 00 //JPEG_MIN_CODE_SIZE=10d
   37 00 //JPEG_TARGET_CODE_SIZE=55d
   46 //JPEG_INIT_QUALITY=70d
   3C //JPEG_FIRST_QUALITY=60d
   32 //JPEG_LAST_QUALITY=50d
   $f $ra 1111111111 $d0002
  $cl //Else low compression
   $"CAMDRIVER0: VGA LOW COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   96 00 //JPEG_MAX_CODE_SIZE=150d
   A0 00 //JPEG_MIN_CODE_SIZE=50d
   50 00 //JPEG_TARGET_CODE_SIZE=80d
   60 //JPEG_INIT_QUALITY=96d
   55 //JPEG_FIRST_QUALITY=85d
   46 //JPEG_LAST_QUALITY=75d
   $f $ra 1111111111 $d0002
  $cx
  ;
 seq_ss_config_2 =
  $sf.03 1 //JPEG flag to 1
  #SET_REG(26,06) //1280 x 960 JPEG and JPEG IMST
  $cf.05 1 //If normal compression
   $"CAMDRIVER0: 1M NORMAL COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   90 01 //JPEG_MAX_CODE_SIZE=400d
   3C 00 //JPEG_MIN_CODE_SIZE=60d
   C8 00 //JPEG_TARGET_CODE_SIZE=200d
   46 //JPEG_INIT_QUALITY=70d
   3C //JPEG_FIRST_QUALITY=60d
   32 //JPEG_LAST_QUALITY=50d
   $f $ra 1111111111 $d0002
  $cl //Else low compression
   $"CAMDRIVER0: 1M LOW COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   90 01 //JPEG_MAX_CODE_SIZE=400d
   64 00 //JPEG_MIN_CODE_SIZE=100d
   2C 01 //JPEG_TARGET_CODE_SIZE=300d
   60 //JPEG_INIT_QUALITY=96d
   55 //JPEG_FIRST_QUALITY=85d
   46 //JPEG_LAST_QUALITY=75d
   $f $ra 1111111111 $d0002
  $cx
  ;
 seq_ss_config_4 =
  $sf.03 1 //JPEG flag to 1
  #SET_REG(26,05) //1632 x 1224 JPEG and JPEG IMST
  $cf.05 1 //If normal compression
   $"CAMDRIVER0: 2M NORMAL COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   58 02 //JPEG_MAX_CODE_SIZE=600d
   96 00 //JPEG_MIN_CODE_SIZE=150d
   90 01 //JPEG_TARGET_CODE_SIZE=400d
   46 //JPEG_INIT_QUALITY=70d
   3C //JPEG_FIRST_QUALITY=60d
   32 //JPEG_LAST_QUALITY=50d
   $f $ra 1111111111 $d0002
  $cl //Else low compression
   $"CAMDRIVER0: 2M LOW COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   58 02 //JPEG_MAX_CODE_SIZE=600d
   90 01 //JPEG_MIN_CODE_SIZE=400d
   F4 01 //JPEG_TARGET_CODE_SIZE=500d
   60 //JPEG_INIT_QUALITY=96d
   55 //JPEG_FIRST_QUALITY=85d
   46 //JPEG_LAST_QUALITY=75d
   $f $ra 1111111111 $d0002
  $cx
  ;
 seq_ss_config_5 =
  $sf.03 1 //JPEG output
  #SET_REG(26,03) //2048 x 1536 JPEG and JPEG IMST
  $cf.05 1 //If normal compression
   $"CAMDRIVER0: 3M NORMAL COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   20 03 //JPEG_MAX_CODE_SIZE=800d
   90 01 //JPEG_MIN_CODE_SIZE=400d
   58 02 //JPEG_TARGET_CODE_SIZE=600d
   46 //JPEG_INIT_QUALITY=70d
   3C //JPEG_FIRST_QUALITY=60d
   32 //JPEG_LAST_QUALITY=50d
   $f $ra 1111111111 $d0002
  $cl //Else low compression
   $"CAMDRIVER0: 3M LOW COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   84 03 //JPEG_MAX_CODE_SIZE=900d
   58 02 //JPEG_MIN_CODE_SIZE=600d
   52 03 //JPEG_TARGET_CODE_SIZE=850d
   60 //JPEG_INIT_QUALITY=96d
   55 //JPEG_FIRST_QUALITY=85d
   46 //JPEG_LAST_QUALITY=75d
   $f $ra 1111111111 $d0002
  $cx
  ;
 seq_ss_config_6 =
  $sf.03 1 //JPEG output
  #SET_REG(26,01) //2592 x 1944 JPEG and JPEG IMST
  $cf.05 1 //If normal compression
   $"CAMDRIVER0: 5M NORMAL COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   46 05 //JPEG_MAX_CODE_SIZE=1350d
   9E 02 //JPEG_MIN_CODE_SIZE=670d
   E8 03 //JPEG_TARGET_CODE_SIZE=1000d
   46 //JPEG_INIT_QUALITY=70d
   3C //JPEG_FIRST_QUALITY=60d
   32 //JPEG_LAST_QUALITY=50d
   $f $ra 1111111111 $d0002
  $cl //Else low compression
   $"CAMDRIVER0: 5M LOW COMPRESSION"
   0D 02 00 3C //Start sending 13 bytes at adress 3C
   DC 05 //JPEG_MAX_CODE_SIZE=1500d
   B0 04 //JPEG_MIN_CODE_SIZE=1200d
   78 05 //JPEG_TARGET_CODE_SIZE=1400d
   60 //JPEG_INIT_QUALITY=96d
   55 //JPEG_FIRST_QUALITY=85d
   46 //JPEG_LAST_QUALITY=75d
   $f $ra 1111111111 $d0002
  $cx
  ;
 seq_ss_config_10 =
  $sf.03 0 //YCbCr output
  #SET_REG(26,0C) //320 x 240 YCbCr and YCbCr IMST
  ;
 seq_ss_config_11 =
  $sf.03 0 //YCbCr output
  #SET_REG(26,08) //640 x 480 YCbCr and YCbCr IMST
  ;
 seq_vf_config_20 = //Viewfinder
  #SET_REG(20,0C) //DRAFT_IMAGE_SIZE 320x240
  $cf.07 1 //If in menu mode do not change max framerate
  $cl
   #SET_REG(21,3C) //DRAFT_MAX_FRMRATE=30 (60/2)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00 //No video HS
  ;
 seq_vf_config_21 = //Viewfinder for BestPic
  #SET_REG(20,0C) //DRAFT_IMAGE_SIZE 320x240
  $cf.07 1 //If in menu mode do not change max framerate
  $cl
   #SET_REG(21,1E) //DRAFT_MAX_FRMRATE=15 (30/2)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00 //No video HS
  ;
 seq_vf_config_25 = //VT
  #SET_REG(20,14) //DRAFT_IMAGE_SIZE 96x128
  #SET_REG(23,14) //HS_DRAFT_IMAGE_SIZE 96x128
  $cf.07 1 //If in menu mode do not change max framerate
  $cl
   #SET_REG(22,14) //DRAFT_MIN_FRMRATE 10fps
   #SET_REG(25,14) //HS_DRAFT_MIN_FRMRATE 10fps
   #SET_REG(21,14) //DRAFT_MAX_FRMRATE 10fps
   #SET_REG(24,14) //HS_DRAFT_MAX_FRMRATE 10fps
  $cx
  $s8 00 //No video HS
  ;
 seq_vf_config_26 = //VT
  #SET_REG(20,12) //DRAFT_IMAGE_SIZE 144x176
  #SET_REG(23,12) //HS_DRAFT_IMAGE_SIZE 144x176
  $cf.07 1 //If in menu mode do not change max framerate
  $cl
   #SET_REG(22,18) //DRAFT_MIN_FRMRATE 12fps
   #SET_REG(25,18) //HS_DRAFT_MIN_FRMRATE 12fps
   #SET_REG(21,18) //DRAFT_MAX_FRMRATE 12fps
   #SET_REG(24,18) //HS_DRAFT_MAX_FRMRATE 12fps
  $cx
  $s8 00 //No video HS
  ;
 seq_vf_config_29 = //VR
  #SET_REG(20,12) //DRAFT_IMAGE_SIZE 144x176
  #SET_REG(23,12) //HS_DRAFT_IMAGE_SIZE 144x176
  $cf.07 1 //If in menu mode do not change max framerate
  $cl
   #SET_REG(22,14) //DRAFT_MIN_FRMRATE 10fps
   #SET_REG(25,14) //HS_DRAFT_MIN_FRMRATE 10fps
   #SET_REG(21,14) //DRAFT_MAX_FRMRATE 10fps
   #SET_REG(24,14) //HS_DRAFT_MAX_FRMRATE 10fps
  $cx
  $s8 01 //Video HS
  ;
 seq_vf_config_2a = //VR
  #SET_REG(20,0C) //DRAFT_IMAGE_SIZE 320x240
  #SET_REG(23,0C) //HS_DRAFT_IMAGE_SIZE 320x240
  $cf.07 1 //If in menu mode o not change max framerate
  $cl
   #SET_REG(22,3B) //DRAFT_MIN_FRMRATE 29.5fps
   #SET_REG(25,3B) //HS_DRAFT_MIN_FRMRATE 29.5fps
   #SET_REG(24,3C) //HS_DRAFT_MAX_FRMRATE 30fps
   #SET_REG(21,3C) //DRAFT_MAX_FRMRATE 30fps
  $cx
  $s8 01 //Video HS
  ;
 seq_vf_config_2b = //VR
  #SET_REG(20,0C) //DRAFT_IMAGE_SIZE 320x240
  #SET_REG(23,0C) //HS_DRAFT_IMAGE_SIZE 320x240
  $cf.07 1 //If menu mode do not change max framerate
  $cl
   #SET_REG(22,1E) //DRAFT_MIN_FRMRATE 15fps
   #SET_REG(25,1E) //HS_DRAFT_MIN_FRMRATE 15fps
   #SET_REG(21,1E) //DRAFT_MAX_FRMRATE 15fps
   #SET_REG(24,1E) //HS_DRAFT_MAX_FRMRATE 15fps
  $cx
  $s8 01 //Video HS
  ;
 seq_vf_config_2c = //VR
  #SET_REG(20,0C) //DRAFT_IMAGE_SIZE 320x240
  #SET_REG(23,0C) //HS_DRAFT_IMAGE_SIZE 320x240
  $cf.07 1 //If in menu mode do not change max framerate
  $cl
   #SET_REG(22,0F) //DRAFT_MIN_FRMRATE 7,5fps
   #SET_REG(25,0F) //HS_DRAFT_MIN_FRMRATE 7,5fps
   #SET_REG(21,0F) //DRAFT_MAX_FRMRATE 7,5fps
   #SET_REG(24,0F) //HS_DRAFT_MAX_FRMRATE 7,5fps
  $cx
  $s8 01 //Video HS
  ;
 seq_vf_config_2f = //Viewfinder
  #SET_REG(20,0C) //DRAFT_IMAGE_SIZE 320x240
  $cf.07 1 //If in menu mode do not change max framerate
  $cl
   #SET_REG(21,3C) //DRAFT_MAX_FRMRATE=30 (60/2)
  $cx
  #UPDATE_MIN_FRMRATE
  $s8 00 //No Video HS
  ;
 seq_vf_start =
  $cf.02 0 //If not in any draft mode
   #CHANGE_MODE(33,00) //MODE_MAIN
   #COM_EVENT(5A,01) //FLASH_INFO=1
   $sf.02 1 //Set draft flag to 1
   $se 00 //Set snapshot operation to normal
  $cl
   #CHANGE_MODE(34,00)
   #COM_EVENT(5A,01) //FLASH_INFO=1
   $cf.00 1 //If imst mode
    #CHANGE_MODE(35,00) //IS_DRAFT mode
    $c8 01 //If (IS) HS video mode
     #CHANGE_MODE(38,00) //Mode IS HS draft
    $cx
   $cl //Not in IS
    $c8 01 //If HS video mode
     #CHANGE_MODE(37,00) //Mode HS draft
    $cx
   $cx
  $cx

  $p5 01 //White balance adjustment
  $c5 00
   #COM_EVENT(11,00)
  $cx
  ;
 seq_vf_stop =
 ;
 seq_ss_start =
  $cf.02 1 //If draft mode?
   #CHANGE_MODE(31,02) //Half-release with focus set to inf
   $sf.02 0 //Not in draft mode
  $cx
  #SET_REG(22,3C)
  ;
 seq_ss_take =
  $ce 00 //If not BestPic
   $cf.03 1 //IF JPEG
    #CHANGE_MODE(36,80) //MODE_IMST_STILL_CAPT, JPEG
    #CAPTURE_EVENT //EV_CAPTURE_STATUS, 02 e4
   $cl //Else IMST OFF
    #CHANGE_MODE(36,00) //MODE_STILL_CAPT, YCbCr
   $cx
  $cl //Else BestPic mode
   #CHANGE_MODE(3A,$we) //Read out pict # stored in reg e
  $cx
  #CAPTURE_EVENT //Capture EV_CAPTURE_STATUS, 00 E4
  ;
 seq_ss_verify =
  #CAPTURE_EVENT  //Capture EV_CAPTURE_STATUS, 01 E4
  $c2 01
   $s0 01
   $"CAMDRVIER0: Image_verified"
  $cl
   $"CAMDRIVER0: Image_not_verified"
  $cx
  ;
 seq_ss_stop=;
 //Functions for synchronized viewfinder images in burst mode.
 seq_pv_start =
  $cf.02 1 //If draft mode?
   #CHANGE_MODE(31,02) //Half-release with focus set to inf
   $sf.02 0 //Not in draft mode
  $cx
  $"CAMDRIVER0: seq_pv_start"
  $s9 00 //BurstStatus -> Init
  $cb 00 //If normal interval
   #CHANGE_MODE(39,04) //Mode burst start, BURST_INTERVAL=0, BURST_REMAIN=4
  $cl //Else half speed, every 2nd frame
   #CHANGE_MODE(39,14) //Mode burst start, BURST_INTERVAL=1, BURST_REMAIN=4
  $cx
  ;
 seq_pv_stop =
  $c9 01
   $"CAMDRIVER0: seq_pv_stop"
   $s9 03 //BurstStatus -> BurstOutput
   #COM_EVENT(3A,00) //Take picture
  $cl
   $"CAMDRIVER0: seq_pv_stop is waiting for EV_RECORD_STATUS"
   $s9 02 //BurstStatus -> WaitForEV_RECORD_STATUS
  $cx
  ;
 seq_pv_verify =
  $h0 02 5 0000 //Wait for TRIG
  05 01 00 03 03 $f $r4 0 012 //[source, info, id]
  05 02 00 06 03 $f //Release interrupt
  $cb 02 //If Burst operation=abort?
   $s0 ff //Abort!
  $cl
   $s0 00
   $c2 e3
    $b1 00 4 4
    $c1 00
     $s0 01 //Rotate, i.e synch vf-image
     $"CAMDRIVER0: Rotate, synch vf"
    $cl
     $"CAMDRIVER0: Compr_failed_%0_%1_%2"
    $cx
   $cx
   $c2 ea //If EVENT_MODE_CHANGED
    $c1 50
     $s0 ff //Done (Burst output)
    $cx
   $cx
   $c2 ee //EV_RECORD_STATUS
    $c9 02
     $"CAMDRIVER0: EV_RECORD_STATUS(completed)"
     $"CAMDRIVER0: Change the mode to BurstOutput"
     $s9 03 //BurstStatus -> BurstOutput
     #COM_EVENT(3A,00) //Take picture
     $s0 00 //Reset register 0 to 0
    $cl
     $"CAMDRIVER0: EV_RECORD_STATUS(completed)"
     $s9 01 //BurstStatus -> ReadyForBurstOutput
    $cx
   $cx
  $cx
  ;
//JPEG section
 jpeg_qtable_selector_0 =
  $s2 00 #READ_REG(4A) //JPEG_HOST_QUALITY
  $m0 4 $s1 00
  $"CAMDRIVER0: qtable0=%0"
  ;
 jpeg_qtable_selector_1 =
  $s2 01 #READ_REG(4A)  //JPEG_HOST_QUALITY
  $m0 4 $s1 00
  $"CAMDRIVER0: qtable1=%0"
  ;
 jpeg_qtable_0 =
  10 0B 0C 0E 0C 0A 10 0E
  0D 0E 12 11 10 13 18 28
  1A 18 16 16 18 31 23 25
  1D 28 3A 33 3D 3C 39 33
  38 37 40 48 5C 4E 40 44
  57 45 37 38 50 6D 51 57
  5F 62 67 68 67 3E 4D 71
  79 70 64 78 5C 65 67 63
  ;
 jpeg_qtable_1 =
  11 12 12 18 15 18 2F 1A
  1A 2F 63 42 38 42 63 63
  63 63 63 63 63 63 63 63
  63 63 63 63 63 63 63 63
  63 63 63 63 63 63 63 63
  63 63 63 63 63 63 63 63
  63 63 63 63 63 63 63 63
  63 63 63 63 63 63 63 63
  ;
 jpeg_qtable_factors =
  0,320100,190000,10AB00,C8000,A0000,85500,72500,64000,58E00,50000,
  48C00,42B00,3D900,39200,35500,32000,2F100,2C700,2A200,28000,
  26200,24600,22D00,21500,20000,1EC00,1DA00,1C900,1B900,1AB00,
  19D00,19000,18400,17800,16E00,16400,15A00,15100,14800,14000,
  13800,13100,12A00,12300,11C00,11600,11000,10B00,10500,10000,
  FB00, F600, F100, EC00, E600, E100, DC00,D700,D200,CD00,
  C800, C300, BD00, B800, B300, AE00, A900,A400,9F00,9A00,
  9400, 8F00, 8A00, 8500, 8000, 7B00, 7600,7100,6C00,6600,
  6100, 5C00, 5700, 5200, 4D00, 4800, 4300,3D00,3800,3300,
  2E00, 2900, 2400, 1F00, 1A00, 1400, F00, A00, 500, 100
  ;
 jpeg_header =
  FF D8
  FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00
  FF DB 00 84 00 $qt0 01 $qt1
  FF C4 01 A2 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00
  00 01 02 03 04 05 06 07 08 09 0A 0B
  01 00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00
  00 01 02 03 04 05 06 07 08 09 0A 0B
  10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D
  01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07
  22 71 14 32 81 91 a1 08 23 42 b1 c1 15 52 d1 f0
  24 33 62 72 82 09 0a 16 17 18 19 1a 25 26 27 28
  29 2a 34 35 36 37 38 39 3a 43 44 45 46 47 48 49
  4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69
  6a 73 74 75 76 77 78 79 7a 83 84 85 86 87 88 89
  8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7
  a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5
  c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e1 e2
  e3 e4 e5 e6 e7 e8 e9 ea f1 f2 f3 f4 f5 f6 f7 f8
  f9 fa
  11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77
  00 01 02 03 11 04 05 21 31 06 12 41 51 07 61 71
  13 22 32 81 08 14 42 91 a1 b1 c1 09 23 33 52 f0
  15 62 72 d1 0a 16 24 34 e1 25 f1 17 18 19 1a 26
  27 28 29 2a 35 36 37 38 39 3a 43 44 45 46 47 48
  49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68
  69 6a 73 74 75 76 77 78 79 7a 82 83 84 85 86 87
  88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5
  a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3
  c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da
  e2 e3 e4 e5 e6 e7 e8 e9 ea f2 f3 f4 f5 f6 f7 f8
  f9 fa
  FF DD 00 04 00 00
  FF C0 00 11 08 $h $w 03 01 21 00 02 11 01 03 11 01
  FF DA 00 0C 03 01 00 02 11 03 11 00 3F 00
  ;