| 251 | } |
| 252 | |
| 253 | const char* srcGetCF(struct GenData* data) { |
| 254 | switch (data->lazyFlags) { |
| 255 | case sFLAGS_NONE: |
| 256 | return "(cpu->flags & CF)"; |
| 257 | case sFLAGS_ADD8: |
| 258 | return "(cpu->result.u8<cpu->dst.u8)"; |
| 259 | case sFLAGS_OR8: |
| 260 | return "0"; |
| 261 | case sFLAGS_ADC8: |
| 262 | return "((cpu->result.u8 < cpu->dst.u8) || (cpu->oldcf && (cpu->result.u8 == cpu->dst.u8)))"; |
| 263 | case sFLAGS_SBB8: |
| 264 | return "((cpu->dst.u8 < cpu->result.u8) || (cpu->oldcf && (cpu->src.u8==0xff)))"; |
| 265 | case sFLAGS_AND8: |
| 266 | return "0"; |
| 267 | case sFLAGS_SUB8: |
| 268 | return "(cpu->dst.u8<cpu->src.u8)"; |
| 269 | case sFLAGS_XOR8: |
| 270 | return "0"; |
| 271 | case sFLAGS_INC8: |
| 272 | return "cpu->oldcf"; |
| 273 | case sFLAGS_DEC8: |
| 274 | return "cpu->oldcf"; |
| 275 | case sFLAGS_SHL8: |
| 276 | return "((cpu->src.u8>8)?0:(cpu->dst.u8 >> (8-cpu->src.u8)) & 1)"; |
| 277 | case sFLAGS_SHR8: |
| 278 | return "((cpu->dst.u8 >> (cpu->src.u8 - 1)) & 1)"; |
| 279 | case sFLAGS_SAR8: |
| 280 | return "((((S8) cpu->dst.u8) >> (cpu->src.u8 - 1)) & 1)"; |
| 281 | case sFLAGS_CMP8: |
| 282 | return "(cpu->dst.u8<cpu->src.u8)"; |
| 283 | case sFLAGS_TEST8: |
| 284 | return "0"; |
| 285 | case sFLAGS_NEG8: |
| 286 | return "(cpu->dst.u8!=0)"; |
| 287 | |
| 288 | case sFLAGS_ADD16: |
| 289 | return "(cpu->result.u16<cpu->dst.u16)"; |
| 290 | case sFLAGS_OR16: |
| 291 | return "0"; |
| 292 | case sFLAGS_ADC16: |
| 293 | return "((cpu->result.u16 < cpu->dst.u16) || (cpu->oldcf && (cpu->result.u16 == cpu->dst.u16)))"; |
| 294 | case sFLAGS_SBB16: |
| 295 | return "((cpu->dst.u16 < cpu->result.u16) || (cpu->oldcf && (cpu->src.u16==0xffff)))"; |
| 296 | case sFLAGS_AND16: |
| 297 | return "0"; |
| 298 | case sFLAGS_SUB16: |
| 299 | return "(cpu->dst.u16<cpu->src.u16)"; |
| 300 | case sFLAGS_XOR16: |
| 301 | return "0"; |
| 302 | case sFLAGS_INC16: |
| 303 | return "cpu->oldcf"; |
| 304 | case sFLAGS_DEC16: |
| 305 | return "cpu->oldcf"; |
| 306 | case sFLAGS_SHL16: |
| 307 | return "((cpu->src.u8>16)?0:(cpu->dst.u16 >> (16-cpu->src.u8)) & 1)"; |
| 308 | case sFLAGS_SHR16: |
| 309 | return "((cpu->dst.u16 >> (cpu->src.u8 - 1)) & 1)"; |
| 310 | case sFLAGS_SAR16: |