Changeset 1162


Ignore:
Timestamp:
05/01/11 02:59:14 (2 years ago)
Author:
reyalP
Message:

SX30 and G12 - fix AV bracketing in continuous drive mode - from philmoz in http://chdk.setepontos.com/index.php?topic=650.msg65680#msg65680 with minor modification

Location:
trunk/platform
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/platform/g12/sub/100c/stubs_entry_2.S

    r1145 r1162  
    9595NHSTUB(rand,                                                    0xFFA5B364)     // search for 0x41C64E6D. Function before this value is rand. 
    9696NHSTUB(srand,                                                   0xFFA5B358)     // search for 0x41C64E6D. Function before rand is srand. 
     97NHSTUB(MoveIrisWithAv,                                  0xFFB04878) 
    9798 
    9899# From stubs_entry_ida.s 
  • trunk/platform/g12/sub/100e/stubs_entry_2.S

    r1145 r1162  
    9595NHSTUB(rand,                                                    0xFFA5B370)     // search for 0x41C64E6D. Function before this value is rand. 
    9696NHSTUB(srand,                                                   0xFFA5B364)     // search for 0x41C64E6D. Function before rand is srand. 
     97NHSTUB(MoveIrisWithAv,                                  0xFFB04A28) 
    9798 
    9899# From stubs_entry_ida.s 
  • trunk/platform/generic/shooting.c

    r1143 r1162  
    11321132 
    11331133void shooting_av_bracketing(){ 
    1134  short value, is_odd; 
    1135  int m=mode_get()&MODE_SHOOTING_MASK; 
    1136  if (bracketing.shoot_counter==0) { // first shoot 
    1137     bracketing.shoot_counter=1; 
    1138     //short av_override_value=shooting_get_av96_override_value; 
    1139     //if (av_override_value) bracketing.av96=av_override_value; 
    1140     if (!(m==MODE_M || m==MODE_AV)) bracketing.av96=shooting_get_av96(); 
    1141         else bracketing.av96=shooting_get_user_av96(); 
    1142     bracketing.av96_step=32*conf.av_bracket_value; 
    1143   } 
    1144   // other shoots 
    1145    bracketing.shoot_counter++; 
    1146    is_odd=(bracketing.shoot_counter&1); 
    1147    if (((!is_odd) || (conf.bracket_type>0)) || (((is_odd) && (conf.bracket_type==0)) && ((bracketing.av96-bracketing.dav96)<AV96_MIN))) 
    1148        bracketing.dav96+=bracketing.av96_step; 
    1149    if ((((!is_odd) && (conf.bracket_type==0)) || (conf.bracket_type==1)) && ((bracketing.av96-bracketing.dav96)>=AV96_MIN)) 
    1150      { 
    1151      value=bracketing.av96-bracketing.dav96; 
    1152      shooting_set_av96_direct(value, SET_NOW); 
    1153      } 
    1154    else if (((is_odd) && (conf.bracket_type==0)) || (conf.bracket_type==2)  || (((!is_odd) && (conf.bracket_type==0)) && ((bracketing.av96-bracketing.dav96)<AV96_MIN))) 
    1155      { 
    1156      value=bracketing.av96+bracketing.dav96; 
    1157      shooting_set_av96_direct(value, SET_NOW); 
    1158      } 
     1134    short value,is_odd; 
     1135 
     1136    int m = mode_get()&MODE_SHOOTING_MASK; 
     1137 
     1138    if (bracketing.shoot_counter == 0) { // first shoot 
     1139        bracketing.shoot_counter = 1; 
     1140        //short av_override_value=shooting_get_av96_override_value; 
     1141        //if (av_override_value) bracketing.av96=av_override_value; 
     1142        if (!(m==MODE_M || m==MODE_AV)) 
     1143            bracketing.av96 = shooting_get_av96(); 
     1144        else 
     1145            bracketing.av96 = shooting_get_user_av96(); 
     1146        bracketing.av96_step = 32*conf.av_bracket_value; 
     1147    } 
     1148    // other shoots 
     1149    bracketing.shoot_counter++; 
     1150    is_odd = (bracketing.shoot_counter&1); 
     1151    value = bracketing.av96; 
     1152 
     1153    if ( !is_odd || (conf.bracket_type > 0) || 
     1154         ( is_odd && (conf.bracket_type == 0) && ((bracketing.av96 - bracketing.dav96) < AV96_MIN) )) 
     1155    { 
     1156       bracketing.dav96 += bracketing.av96_step; 
     1157    } 
     1158 
     1159    if (((!is_odd && (conf.bracket_type == 0)) || (conf.bracket_type == 1)) && ((bracketing.av96 - bracketing.dav96) >= AV96_MIN)) 
     1160    { 
     1161        value -= bracketing.dav96; 
     1162    } 
     1163    else if ((is_odd && (conf.bracket_type == 0))  
     1164                || (conf.bracket_type == 2)  
     1165                || ((!is_odd && (conf.bracket_type == 0)) && ((bracketing.av96 - bracketing.dav96) < AV96_MIN))) 
     1166    { 
     1167        value += bracketing.dav96; 
     1168    } 
     1169 
     1170    if (value != bracketing.av96) 
     1171    { 
     1172        shooting_set_av96_direct(value, SET_NOW); 
     1173// sx30 and g12 apparently do not set aperture from propcase in continuous mode 
     1174// TODO if this is common to other models it should become a camera.h define 
     1175#if defined(CAMERA_sx30) || defined(CAMERA_g12) 
     1176        extern int _MoveIrisWithAv(short*); 
     1177        _MoveIrisWithAv(&value); 
     1178#endif 
     1179    } 
    11591180} 
    11601181 
  • trunk/platform/sx30/sub/100e/stubs_entry_2.S

    r1145 r1162  
    9292NHSTUB(rand,                                                    0xFFA4D8C8)     // search for 0x41C64E6D. Function before this value is rand. 
    9393NHSTUB(srand,                                                   0xFFA4D8BC)     // search for 0x41C64E6D. Function before rand is srand. 
     94NHSTUB(MoveIrisWithAv,                                  0xFFAE8D58) 
    9495 
    9596# from stubs_entry_ida.S 
  • trunk/platform/sx30/sub/100h/stubs_entry_2.S

    r1145 r1162  
    9292NHSTUB(rand,                                                    0xFFA4D984)     // search for 0x41C64E6D. Function before this value is rand. 
    9393NHSTUB(srand,                                                   0xFFA4D978)     // search for 0x41C64E6D. Function before rand is srand. 
     94NHSTUB(MoveIrisWithAv,                                  0xFFAE8E14) 
    9495 
    9596# from stubs_entry_ida.S 
  • trunk/platform/sx30/sub/100l/stubs_entry_2.S

    r1145 r1162  
    9292NHSTUB(rand,                                                    0xFFA4DB2C)     // search for 0x41C64E6D. Function before this value is rand. 
    9393NHSTUB(srand,                                                   0xFFA4DB20)     // search for 0x41C64E6D. Function before rand is srand. 
     94NHSTUB(MoveIrisWithAv,                                  0xFFAE8FBC) 
    9495 
    9596# from stubs_entry_ida.S 
Note: See TracChangeset for help on using the changeset viewer.