- if (nes_flags != X.P) {
- printf("flags: %02x vs %02x\n", nes_flags, X.P);
- leave();
+ if (nes_flags != (X.P&~0x20)) {
+ printf("flags: %02x vs %02x\n", nes_flags, (X.P&~0x20));
+ fail = 1;
+ }
+
+ if (((int32)nes_registers[7] >> 16) != X.count) {
+ printf("cycles: %i vs %i\n", (int32)nes_registers[7] >> 16, X.count);
+ fail = 1;
+ }
+
+ if (dread_count_a != dread_count_c) {
+ printf("dread_count: %i vs %i\n", dread_count_a, dread_count_c);
+ fail = 1;
+ }
+
+ if (dwrite_count_a != dwrite_count_c) {
+ printf("dwrite_count: %i vs %i\n", dwrite_count_a, dwrite_count_c);
+ fail = 1;
+ }
+
+ for (i = dwrite_count_a - 1; !fail && i >= 0; i--)
+ if (dwrites_a[i] != dwrites_c[i]) {
+ printf("dwrites[%i]: %06x vs %06x\n", dwrite_count_a, dwrites_a[i], dwrites_c[i]);
+ fail = 1;
+ }
+
+ if (mapirq_cyc_a != mapirq_cyc_c) {
+ printf("mapirq_cyc: %i vs %i\n", mapirq_cyc_a, mapirq_cyc_c);
+ fail = 1;