diff options
| author | vin <git@vineetk.net> | 2024-07-03 21:02:34 -0400 |
|---|---|---|
| committer | vin <git@vineetk.net> | 2024-07-03 21:49:27 -0400 |
| commit | d57acb77c7d617fbfe4e0c2fb6d19e1b60723a97 (patch) | |
| tree | 547290156af8388d263ae37ed815a9fe914a4768 /cpu.c | |
| parent | 4fcc8d48f4dd3f7be37d917826a148c02701d0e3 (diff) | |
finalize trace logging to match nestest.log minus PPU cycles
Diffstat (limited to 'cpu.c')
| -rw-r--r-- | cpu.c | 20 |
1 files changed, 12 insertions, 8 deletions
| @@ -622,21 +622,18 @@ SEI(uint16_t arg) | |||
| 622 | void | 622 | void |
| 623 | STA(uint16_t mem) | 623 | STA(uint16_t mem) |
| 624 | { | 624 | { |
| 625 | uint8_t tmp = peek(mem); | ||
| 626 | memwrite(mem, regs.a); | 625 | memwrite(mem, regs.a); |
| 627 | } | 626 | } |
| 628 | 627 | ||
| 629 | void | 628 | void |
| 630 | STX(uint16_t mem) | 629 | STX(uint16_t mem) |
| 631 | { | 630 | { |
| 632 | uint8_t tmp = peek(mem); | ||
| 633 | memwrite(mem, regs.x); | 631 | memwrite(mem, regs.x); |
| 634 | } | 632 | } |
| 635 | 633 | ||
| 636 | void | 634 | void |
| 637 | STY(uint16_t mem) | 635 | STY(uint16_t mem) |
| 638 | { | 636 | { |
| 639 | uint8_t tmp = peek(mem); | ||
| 640 | memwrite(mem, regs.y); | 637 | memwrite(mem, regs.y); |
| 641 | } | 638 | } |
| 642 | 639 | ||
| @@ -728,13 +725,19 @@ interpret(void) | |||
| 728 | printf("$%04X", arg); | 725 | printf("$%04X", arg); |
| 729 | break; | 726 | break; |
| 730 | case AM_ABS_X: | 727 | case AM_ABS_X: |
| 731 | printf("$%04X,X @ %04X", arg - regs.x, arg); | 728 | printf("$%04X,X @ %04X", (uint16_t)(arg - regs.x), arg); |
| 732 | break; | 729 | break; |
| 733 | case AM_ABS_Y: | 730 | case AM_ABS_Y: |
| 734 | printf("$%04X,Y @ %04X", arg - regs.y, arg); | 731 | printf("$%04X,Y @ %04X", (uint16_t)(arg - regs.y), arg); |
| 735 | break; | 732 | break; |
| 736 | case AM_IND: | 733 | case AM_IND: |
| 737 | printf("($%04X) = %04X\t\t", arg, peek16(arg)); | 734 | printf("($%04X) = %04X", arg, peek16(arg)); |
| 735 | break; | ||
| 736 | case AM_IND_X: | ||
| 737 | printf("($%02X,X) @ %02X = %04X", peek(regs.pc - 1), peek(regs.pc - 1) + regs.x, arg); | ||
| 738 | break; | ||
| 739 | case AM_IND_Y: | ||
| 740 | printf("($%02X),Y = %04X @ %04X", peek(regs.pc - 1), (uint16_t)(arg - regs.y), arg); | ||
| 738 | break; | 741 | break; |
| 739 | case AM_ACC: | 742 | case AM_ACC: |
| 740 | case AM_NONE: | 743 | case AM_NONE: |
| @@ -748,9 +751,10 @@ interpret(void) | |||
| 748 | if (opcodes[op].memread || opcodes[op].memwrite) | 751 | if (opcodes[op].memread || opcodes[op].memwrite) |
| 749 | printf(" = %02X", peek(arg)); | 752 | printf(" = %02X", peek(arg)); |
| 750 | 753 | ||
| 751 | if (mode != AM_ABS_X && mode != AM_ABS_Y) | 754 | if (mode != AM_IND && mode != AM_ABS_X && mode != AM_ABS_Y) |
| 752 | putchar('\t'); | 755 | putchar('\t'); |
| 753 | printf("\t\t"); | 756 | if (mode != AM_IND_X && mode != AM_IND_Y) |
| 757 | printf("\t\t"); | ||
| 754 | 758 | ||
| 755 | printf("A:%02X X:%02X Y:%02X P:%02X SP:%02X CYC:%d\n", | 759 | printf("A:%02X X:%02X Y:%02X P:%02X SP:%02X CYC:%d\n", |
| 756 | regs.a, regs.x, regs.y, STATUS_TO_INT(), regs.sp, cycles); | 760 | regs.a, regs.x, regs.y, STATUS_TO_INT(), regs.sp, cycles); |
