@@ -520,7 +520,7 @@ static inline void _w65816_adc16(w65816_t* cpu, uint16_t val) {
520520 }
521521 else {
522522 /* default mode */
523- uint16_t sum = _C (cpu ) + val + (cpu -> P & W65816_CF ? 1 :0 );
523+ uint32_t sum = _C (cpu ) + val + (cpu -> P & W65816_CF ? 1 :0 );
524524 cpu -> P &= ~(W65816_VF |W65816_CF );
525525 cpu -> P = _W65816_NZ16 (cpu -> P ,sum );
526526 if (~(_C (cpu )^val ) & (_C (cpu )^sum ) & 0x8000 ) {
@@ -565,7 +565,7 @@ static inline void _w65816_sbc(w65816_t* cpu, uint8_t val) {
565565 /* default mode */
566566 uint16_t diff = _A (cpu ) - val - (cpu -> P & W65816_CF ? 0 : 1 );
567567 cpu -> P &= ~(W65816_VF |W65816_CF );
568- cpu -> P = _W65816_NZ (cpu -> P , ( uint8_t ) diff );
568+ cpu -> P = _W65816_NZ (cpu -> P , diff );
569569 if ((_A (cpu )^val ) & (_A (cpu )^diff ) & 0x80 ) {
570570 cpu -> P |= W65816_VF ;
571571 }
@@ -581,7 +581,7 @@ static inline void _w65816_sbc16(w65816_t* cpu, uint16_t val) {
581581 /* decimal mode (credit goes to MAME) */
582582 uint8_t c = cpu -> P & W65816_CF ? 0 : 1 ;
583583 cpu -> P &= ~(W65816_NF |W65816_VF |W65816_ZF |W65816_CF );
584- uint16_t diff = _C (cpu ) - val - c ;
584+ uint32_t diff = _C (cpu ) - val - c ;
585585 uint8_t al = (_A (cpu ) & 0x0F ) - (val & 0x0F ) - c ;
586586 if ((int8_t )al < 0 ) {
587587 al -= 6 ;
@@ -614,9 +614,9 @@ static inline void _w65816_sbc16(w65816_t* cpu, uint16_t val) {
614614 }
615615 else {
616616 /* default mode */
617- uint16_t diff = _C (cpu ) - val - (cpu -> P & W65816_CF ? 0 : 1 );
617+ uint32_t diff = _C (cpu ) - val - (cpu -> P & W65816_CF ? 0 : 1 );
618618 cpu -> P &= ~(W65816_VF |W65816_CF );
619- cpu -> P = _W65816_NZ16 (cpu -> P , ( uint8_t ) diff );
619+ cpu -> P = _W65816_NZ16 (cpu -> P , diff );
620620 if ((_C (cpu )^val ) & (_C (cpu )^diff ) & 0x8000 ) {
621621 cpu -> P |= W65816_VF ;
622622 }
0 commit comments