| 128 | } |
| 129 | |
| 130 | static void encode_L2_Q(uae_u8 *inout) |
| 131 | { |
| 132 | uae_u8 *Q; |
| 133 | int i,j; |
| 134 | |
| 135 | Q = inout + 4 + L2_RAW + 4 + 8 + L2_P; |
| 136 | memset(Q, 0, L2_Q); |
| 137 | for (j = 0; j < 26; j++) { |
| 138 | for (i = 0; i < 43; i++) { |
| 139 | uae_u8 data; |
| 140 | /* LSB */ |
| 141 | data = inout[(j*43*2+i*2*44) % (4 + L2_RAW + 4 + 8 + L2_P)]; |
| 142 | if (data != 0) { |
| 143 | uae_u32 base = rs_l12_log[data]; |
| 144 | uae_u32 sum = base + DQ[0][i]; |
| 145 | if (sum >= ((1 << RS_L12_BITS)-1)) |
| 146 | sum -= (1 << RS_L12_BITS)-1; |
| 147 | Q[0] ^= rs_l12_alog[sum]; |
| 148 | sum = base + DQ[1][i]; |
| 149 | if (sum >= ((1 << RS_L12_BITS)-1)) |
| 150 | sum -= (1 << RS_L12_BITS)-1; |
| 151 | Q[26*2] ^= rs_l12_alog[sum]; |
| 152 | } |
| 153 | /* MSB */ |
| 154 | data = inout[(j*43*2+i*2*44+1) % (4 + L2_RAW + 4 + 8 + L2_P)]; |
| 155 | if (data != 0) { |
| 156 | uae_u32 base = rs_l12_log[data]; |
| 157 | uae_u32 sum = base+DQ[0][i]; |
| 158 | if (sum >= ((1 << RS_L12_BITS)-1)) |
| 159 | sum -= (1 << RS_L12_BITS)-1; |
| 160 | Q[1] ^= rs_l12_alog[sum]; |
| 161 | sum = base + DQ[1][i]; |
| 162 | if (sum >= ((1 << RS_L12_BITS)-1)) |
| 163 | sum -= (1 << RS_L12_BITS)-1; |
| 164 | Q[26*2+1] ^= rs_l12_alog[sum]; |
| 165 | } |
| 166 | } |
| 167 | Q += 2; |
| 168 | } |
| 169 | } |
| 170 | |
| 171 | static void encode_L2_P(uae_u8 inout[4 + L2_RAW + 4 + 8 + L2_P]) |
| 172 | { |