• Manual Focus
• Manual ISO
• Manual Shutter Speed (1/2s to 1/2000s)
• Colour Filters (Yellow, Grey, Blue, Red)
• Slow Sync Flash (< 1/10s)
• Slow Shutter Scene (< 1/4s)
• Special flash icons and GUI display
• Upgrade video resolution (352x288 @ 30 FPS)
• Own language file
Date: 30.06.2009.
Author: Jigonx
Nationality: Indonesian
download
// Filename: jigonx camdriver mod series
// Phone project: finalMod 5.1
// SPACE: 06-2009
// Companion chips: forumponsel.com
// Special thanks to Raiderski and Brazzuka @ esato.com
//Information section
//=========================================================
info_name=MCB991;
info_vendor=JIGONX_finalMod V.5.1;
info_major_ver=5;
info_minor_ver=1;
// Macros for camera
//================================================
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 =
$h 0 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
;
INIT_SAT_CC =
$p5 10
$c5 00
#COM_EVENT(58,07)
$cl
#COM_EVENT(58,03)
$cx
;
WB_CC =
#SET_REG(65,F7)
#SET_REG(66,1B)
#COM_EVENT(13,01)
#INIT_SAT_CC
;
WB_CC_R =
#SET_REG(65,F7)
#SET_REG(66,08)
#COM_EVENT(13,01)
#INIT_SAT_CC
;
UPDATE_WB =
$p5 01
$c5 00
$cl
$u01
$cx;
UPDATE_PHOTO =
$p5 16
$c5 00
$cl
$u16
$cx;
WB_ISO100 =
#SET_REG(98,29)
#SET_REG(99,63)
;
WB_ISO200 =
#SET_REG(98,29)
#SET_REG(99,63)
;
WB_ISO400 =
#SET_REG(98,29)
#SET_REG(99,63)
;
FLASH_LIMIT_AUTO =
#SET_REG(A2,00) #SET_REG(A3,32)
#SET_REG(A4,80) #SET_REG(A5,32)
;
FLASH_LIMIT_ISO100 =
#SET_REG(A2,00) #SET_REG(A3,33)
#SET_REG(A4,80) #SET_REG(A5,33)
;
FLASH_LIMIT_ISO200 =
#SET_REG(A2,00) #SET_REG(A3,31)
#SET_REG(A4,80) #SET_REG(A5,31)
;
FLASH_LIMIT_ISO400 =
#SET_REG(A2,00) #SET_REG(A3,2F)
#SET_REG(A4,80) #SET_REG(A5,2F)
;
UPDATE_ISO =
$p5 11
$c5 00
$cl
$u11
$cx;
NOT_DOC_MODE =
#COM_EVENT(55,00)
#COM_EVENT(56,05)
#COM_EVENT(57,20)
#COM_EVENT(58,05)
#COM_EVENT(06,FF)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,09)
#SET_REG(95,04)
#WB_ISO100
#FLASH_LIMIT_ISO200
;
UPDATE_MIN_FRMRATE =
$p5 10
$c5 03
#SET_REG(22,04)
$cl $c5 05
#SET_REG(22,01)
$cl
#SET_REG(22,0A)
$cx
$cx;
FLASH_SETTINGS =
#SET_REG(92,00)
#SET_REG(A0,01)
#SET_REG(A1,04)
#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
$cl
$cx
;
MANUAL_FOCUS =
$p1 08
$c1 02
#COM_EVENT(53,00)
#COM_EVENT(06,00)
$s4 %0
$-4 03
$*4 08
#COM_EVENT(43,$w4)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00);
MANUAL_CONTRAST =
$p1 00
$c1 03
#COM_EVENT(53,00)
#COM_EVENT(06,00)
$s4 %0
$-4 03
$*4 08
#COM_EVENT(55,$w4)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_2000 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,05)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_1000 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,08)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_800 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,09)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_640 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,0A)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_500 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,0B)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_250 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,0E)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_125 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,11)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_60 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,14)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_30 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,17)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_15 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,1A)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_8 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,1D)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_4 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,20)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
MANUAL_SS_xenon_2 =
$cd 02
#COM_EVENT(06,02)
#SET_REG(95,03)
#SET_REG(9E,23)
$c1
#COM_EVENT(61,40)
$c1 $cx
$cx $cx
#COM_EVENT(72,00)
;
CC_OFF =
#COM_EVENT(13,00)
#SET_REG(65,F7)
#SET_REG(66,09)
#COM_EVENT(11,00);
CC_GRE =
#SET_REG(66,16)
#SET_REG(65,0A)
$pj 0e
$cj 00 #COM_EVENT(13,01) $cl
$cj 02 #COM_EVENT(11,02) #COM_EVENT(13,00) $cl
$cj 03 #COM_EVENT(11,02) #COM_EVENT(13,00) $cx
$cx $cx;
CC_RED =
#SET_REG(66,00)
#SET_REG(65,F5)
$pj 0e
$cj 00 #COM_EVENT(13,01) $cl
$cj 02 #COM_EVENT(11,04) #COM_EVENT(13,00) $cl
$cj 03 #COM_EVENT(11,04) #COM_EVENT(13,00) $cx
$cx $cx;
CC_YEL =
#SET_REG(66,2D)
#SET_REG(65,00)
$pj 0e
$cj 00 #COM_EVENT(13,01) $cl
$cj 02 #COM_EVENT(11,01) #COM_EVENT(13,00) $cl
$cj 03 #COM_EVENT(11,01) #COM_EVENT(13,00) $cx
$cx $cx;
CC_BLU =
#SET_REG(66,D0)
#SET_REG(65,0C)
$pj 0e
$cj 00 #COM_EVENT(13,01) $cl
$cj 02 #COM_EVENT(11,03) #COM_EVENT(13,00) $cl
$cj 03 #COM_EVENT(11,03) #COM_EVENT(13,00) $cx
$cx $cx;
MEM =
#COM_EVENT(11,00)
$p6 01
$c6 00 #CC_OFF $cl
$c6 01 #CC_GRE $cl
$c6 02 #CC_RED $cl
$c6 03 #CC_YEL $cl
$c6 04 #CC_BLU $cx
$cx $cx $cx $cx;
MEM2 =
#COM_EVENT(13,00)
$p6 01
$c6 00 #COM_EVENT(11,00) $cl
$c6 01 #COM_EVENT(11,01) $cl
$c6 02 #COM_EVENT(11,02) $cl
$c6 03 #COM_EVENT(11,03) $cl
$c6 04 #COM_EVENT(11,04) $cx
$cx $cx $cx $cx;
//Camera characteristics section
//=========================================================
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;
// Supported sizes
//================================================
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[160,120,BB8],
2b[160,120,9C4],
2c[160,120,7D0],
2f[160,120,BB8]
;
// I2C sequences
//================================================
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,32)
#SET_REG(64,1D)
#SET_REG(22,0A)
#MANUAL_CONTRAST
#COM_EVENT(06,FF)
#COM_EVENT(55,00)
#COM_EVENT(56,05)
#COM_EVENT(57,20)
#COM_EVENT(58,05)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,09)
#SET_REG(95,04)
#WB_ISO100
#FLASH_LIMIT_ISO200
#COM_EVENT(5A,01)
;
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
//D[0,0,0], //
E[0,4,0], // Xenon flash support
//F[0,0,0], //
10[0,7,0], // Scenes
11[0,4,0], // ISO
12[0,1,0], // Framerate adjustments for GUI speed
//13[0,0,0], //
//14[0,0,0], //
//15[0,0,0], //
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 = #COM_EVENT(06,FA)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_2000;
seq_set_prop_0_4 = #COM_EVENT(06,FA)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_1000;
seq_set_prop_0_5 = #COM_EVENT(06,FB)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_800;
seq_set_prop_0_6 = #COM_EVENT(06,FC)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_640;
seq_set_prop_0_7 = #COM_EVENT(06,FD)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_500;
seq_set_prop_0_8 = #COM_EVENT(06,FE)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_250;
seq_set_prop_0_9 = #COM_EVENT(06,FF)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_125; //EV 0,0
seq_set_prop_0_a = #COM_EVENT(06,00)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_60;
seq_set_prop_0_b = #COM_EVENT(06,01)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_30;
seq_set_prop_0_c = #COM_EVENT(06,02)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_15;
seq_set_prop_0_d = #COM_EVENT(06,03)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_8;
seq_set_prop_0_e = #COM_EVENT(06,04)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_4;
seq_set_prop_0_f = #COM_EVENT(06,05)
#MANUAL_FOCUS
#MANUAL_CONTRAST
#MANUAL_SS_xenon_2;
// Property 1, White balance (colour filter)
//---------------------------------------------------
seq_set_prop_1_0 = #CC_OFF; // Auto
seq_set_prop_1_1 = $c1 01 #COM_EVENT(11,04) $cl #CC_RED $cx; // Incandescent
seq_set_prop_1_2 = $c1 01 #COM_EVENT(11,03) $cl #CC_BLU $cx; // Flourescent
seq_set_prop_1_3 = $c1 01 #COM_EVENT(11,01) $cl #CC_YEL $cx; // Outdoor clear sky
seq_set_prop_1_4 = $c1 01 #COM_EVENT(11,02) $cl #CC_GRE $cx; // 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
//---------------------------------------------------
seq_set_prop_8_0 =
#TO_DRAFT
#COM_EVENT(57,20)
#COM_EVENT(58,0A)
#COM_EVENT(53,00); // All Auto
seq_set_prop_8_1 =
#TO_DRAFT
#COM_EVENT(57,20)
#COM_EVENT(58,0A)
#COM_EVENT(53,01); // 2 negatif
seq_set_prop_8_2 =
#TO_DRAFT
#COM_EVENT(57,20)
#COM_EVENT(58,0A)
#COM_EVENT(53,00); // 4 solarize /manual Focus
seq_set_prop_8_3 =
#TO_DRAFT
#COM_EVENT(57,20)
#COM_EVENT(58,0A)
#COM_EVENT(53,03); // 3 sephia
seq_set_prop_8_4 =
#TO_DRAFT
#COM_EVENT(57,20)
#COM_EVENT(58,0A)
#COM_EVENT(53,04); // 1 BW
// 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(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
$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 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)
#COM_EVENT(57,20)
#COM_EVENT(06,00)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,09)
; // FLASH_XENON_MODE = 0
seq_set_prop_e_1 =
$sd 01;
seq_set_prop_e_2 =
$sd 02 // Auto internal flash
#FLASH_SETTINGS
#COM_EVENT(57,20)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,09)
;
seq_set_prop_e_3 =
$sd 03 // Auto red-eye
#FLASH_SETTINGS
#COM_EVENT(57,20)
#COM_EVENT(06,00)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,09)
;
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)
#SET_REG(22,0A)
#SET_REG(65,F7)
#SET_REG(66,09)
#SET_REG(7A,3C)
#COM_EVENT(55,00)
#COM_EVENT(56,05)
#COM_EVENT(57,20)
#COM_EVENT(58,05)
#COM_EVENT(06,FF)
#COM_EVENT(13,01)
#COM_EVENT(02,00)
#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)
$cl
$cx
;
seq_set_prop_10_1 = // Portrait
$sa 09
#TO_DRAFT
#SET_REG(64,1D)
#SET_REG(22,0A)
#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)
$cl
$cx
;
seq_set_prop_10_2 = // Landscape
$sa 09
#TO_DRAFT
#SET_REG(64,1D)
#SET_REG(22,0A)
#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)
$cl
$cx
;
seq_set_prop_10_3 = // Night
$sa 09
#TO_DRAFT
#SET_REG(64,29)
#SET_REG(22,01)
#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)
$cl
$cx
;
seq_set_prop_10_4 = // Night portrait
$sa 09
#TO_DRAFT
#SET_REG(64,23)
#SET_REG(22,0A)
#COM_EVENT(02,00)
#SET_REG(77,20)
#SET_REG(78,1A)
#SET_REG(79,3C)
#SET_REG(7A,2A)
#SET_REG(7B,1A)
#SET_REG(7C,3C)
#COM_EVENT(51,08)
#UPDATE_WB
#NOT_DOC_MODE
#CHANGE_MODE(34,00)
#COM_EVENT(5A,01)
$cf.00 1
#CHANGE_MODE(35,00)
$cl
$cx
;
seq_set_prop_10_5 = // Beach & snow:slow shutter
$sa 09
#TO_DRAFT
#SET_REG(64,2C)
#SET_REG(22,01)
#SET_REG(77,2C)
#SET_REG(79,3C)
#SET_REG(7A,3A)
#SET_REG(7C,12)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,1D)
#COM_EVENT(51,08)
#COM_EVENT(02,00)
#UPDATE_WB
#NOT_DOC_MODE
#CHANGE_MODE(34,00)
#COM_EVENT(5A,01)
$cf.00 1
#CHANGE_MODE(35,00)
$cl
$cx
;
seq_set_prop_10_6 = // Sports
$sa 09
#TO_DRAFT
#SET_REG(64,14)
#SET_REG(22,0A)
#COM_EVENT(02,00)
#COM_EVENT(51,05)
#COM_EVENT(56,08)
#COM_EVENT(57,20)
#COM_EVENT(58,0A)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,1D)
#UPDATE_WB
#NOT_DOC_MODE
#CHANGE_MODE(34,00)
#COM_EVENT(5A,01)
$cf.00 1
#CHANGE_MODE(35,00)
$cl
$cx
;
seq_set_prop_10_7 = // Document
$sa 09
#TO_DRAFT
#SET_REG(64,1A)
#SET_REG(22,0A)
#SET_REG(6B,06)
#SET_REG(6C,01)
#SET_REG(AD,FF0)
#COM_EVENT(55,00)
#COM_EVENT(56,08)
#COM_EVENT(57,20)
#COM_EVENT(58,0A)
#COM_EVENT(06,FF)
#COM_EVENT(13,01)
#SET_REG(65,F7)
#SET_REG(66,1D)
#COM_EVENT(02,00)
#COM_EVENT(51,08)
#UPDATE_WB
#UPDATE_PHOTO
#NOT_DOC_MODE
#CHANGE_MODE(34,00)
#COM_EVENT(5A,01)
$cf.00 1
#CHANGE_MODE(35,00)
$cl
$cx
;
// Property 17, XENON ISO
//----------------------------------------------------
seq_set_prop_11_0 = // Auto
#TO_DRAFT
$sc 00
#SET_REG(95,04)
#COM_EVENT(02,00)
#WB_ISO100
#FLASH_LIMIT_ISO200
#COM_EVENT(5A,01)
;
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)
;
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)
;
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)
;
// 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);
seq_set_prop_16_1 =
#TO_DRAFT
#COM_EVENT(08,01);
// Property 23, Xenon flash required
//----------------------------------------------------
seq_get_prop_17 =
#READ_REG(93)
$-4 02 $m0 4
$sf.06 0
$cd 02
$c0 01
$sf.06 1
#WB_CC_R
$p5 10
$c5 04
#SET_REG(91,03)
$cl
#SET_REG(91,03)
$cx
$cl
$p5 10
$c5 04
$sf.06 0
#WB_CC_R
#SET_REG(91,00)
$cl
#WB_CC_R
#SET_REG(91,01)
$cx
$cx
$cl
$cx
$cd 03
$c0 01
$sf.06 1
#WB_CC_R
$p5 10
$c5 04
#SET_REG(9E,23)
#SET_REG(91,13)
$cl
#SET_REG(9E,23)
#SET_REG(91,13)
$cx
$cl
$p5 10
$c5 04
$sf.06 0
#WB_CC_R
#SET_REG(91,00)
$cl
$sf.06 1
#WB_CC_R
#SET_REG(91,13)
$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,02) // ZM_SMTH_SPEED = 2
#COM_EVENT(61,04);
seq_set_prop_19_2 = // Zoom out
#TO_DRAFT
#SET_REG(67,02) // ZM_SMTH_SPEED = 2
#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,50) // JPEG_INIT_QUALITY = 80d, 50
$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
DC 05 // JPEG_MAX_CODE_SIZE = 1500d
B0 04 // JPEG_MIN_CODE_SIZE = 1200d
78 05 // JPEG_TARGET_CODE_SIZE = 1400d
50 // JPEG_INIT_QUALITY = 80d
46 // JPEG_FIRST_QUALITY = 70d
3C // JPEG_LAST_QUALITY = 60d
$f $ra 1111111111 $d0002
$cl // Else low compression
$"CAMDRIVER0: 5M 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_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,0B) // DRAFT_IMAGE_SIZE 352x288
#SET_REG(23,0B) // HS_DRAFT_IMAGE_SIZE 352x288
$cf.07 1 // If in menu mode
// do not change max framerate
$cl
#SET_REG(22,3C) // DRAFT_MIN_FRMRATE 30 fps
#SET_REG(25,3C) // HS_DRAFT_MIN_FRMRATE 30 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,0B) // DRAFT_IMAGE_SIZE 352x288
#SET_REG(23,0B) // HS_DRAFT_IMAGE_SIZE 352x288
$cf.07 1 // If menu mode
// do not change max framerate
$cl
#SET_REG(22,28) // DRAFT_MIN_FRMRATE 20 fps
#SET_REG(25,28) // HS_DRAFT_MIN_FRMRATE 20 fps
#SET_REG(21,28) // DRAFT_MAX_FRMRATE 25 fps
#SET_REG(24,28) // HS_DRAFT_MAX_FRMRATE 25 fps
$cx
$s8 01 // Video HS
;
seq_vf_config_2c = // VR
#SET_REG(20,0B) // DRAFT_IMAGE_SIZE 352x288
#SET_REG(23,0B) // HS_DRAFT_IMAGE_SIZE 352x288
$cf.07 1 // If in menu mode
// do not change max framerate
$cl
#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
$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;
