Reading 2007 during rendering
From NESdev Wiki
Jump to navigationJump to search
Some raw data on the effect of reading from $2007 when rendering is enabled and occurring.
; Beginning of vblank begins here ; Delays N PPU clocks, where N is value listed in first column. ; Delay so that STA $2001 begins about 10 clocks ; before normal rendering can begin delay 2273 - 32 - 10 ; VRAM addr = $141F lda #$14 sta $2006 lda #$1F sta $2006 lda #0 sta $2005 lda #0 sta $2005 ; Momentarily enable rendering and read from $2007 lda #$08 ldx #0 sta $2001 lda $2007 stx $2001
Output
Dummy is VRAM addr after code when LDA $2007 has been replaced by LDA $100, since enabling rendering for a moment alters VRAM address already. VRAM address is determined by having VRAM previous filled with all zeroes, except first byte with $FF. To determine address, code reads from $2007 until it reads back $FF, then subtracts that count from $4000 and ANDs with $3FFF.
Time Read Dummy 0: 1420 141F 1: 1420 141F 2: 1420 141F 3: 1420 141F 4: 1420 141F 5: 1420 141F 6: 1420 141F 7: 1420 141F 8: 1420 141F 9: 1420 141F 10: 1421 1400 11: 1421 1000 12: 2001 1000 13: 2001 1000 14: 2001 1000 15: 2001 1000 16: 2001 1000 17: 2001 1000 18: 2002 1001 19: 2001 1001 20: 2002 1001 21: 2002 1001 22: 2002 1001 23: 2002 1001 24: 2002 1001 25: 2002 1001 26: 2003 1002 27: 2002 1002 28: 2003 1002 29: 2003 1002 30: 2003 1002 31: 2003 1002 32: 2003 1002 33: 2003 1002 34: 2003 1002 35: 2002 1002 36: 2003 1002 37: 2003 1002 38: 2003 1002 39: 2003 1002 40: 2003 1002 41: 2003 1002 42: 2003 1002 43: 2002 1002 44: 2003 1002 45: 2003 1002 46: 2003 1002 47: 2003 1002 48: 2003 1002 49: 2003 1002 50: 2003 1002 51: 2002 1002 52: 2003 1002 53: 2003 1002 54: 2003 1002 55: 2003 1002 56: 2003 1002 57: 2003 1002 58: 2003 1002 59: 2002 1002 60: 2003 1002 61: 2003 1002 62: 2003 1002 63: 2003 1002 64: 2003 1002 65: 2003 1002 66: 2003 1002 67: 2002 1002 68: 2003 1002 69: 2003 1002 70: 2003 1002 71: 2003 1002 72: 2003 1002 73: 2003 1002 74: 2003 1002 75: 2002 1002 76: 2003 1002 77: 2003 1002 78: 2003 1002 79: 2003 1002 80: 2003 1002 81: 2003 1002 82: 2003 1002 83: 2002 1002 84: 2003 1002 85: 2003 1002 86: 2003 1002 87: 2003 1002 88: 2003 1002 89: 2003 1002 90: 2003 1002 91: 2002 1002 92: 2003 1002 93: 2003 1002 94: 2003 1002 95: 2003 1002 96: 2003 1002 97: 2003 1002 98: 2003 1002 99: 2002 1002 100: 2003 1002 101: 2003 1002 102: 2003 1002 103: 2003 1002 104: 2003 1002 105: 2003 1002 106: 2003 1002 107: 2002 1002 108: 2003 1002 109: 2003 1002 110: 2003 1002 111: 2003 1002 112: 2003 1002 113: 2003 1002 114: 2003 1002 115: 2002 1002 116: 2003 1002 117: 2003 1002 118: 2003 1002 119: 2003 1002 120: 2003 1002 121: 2003 1002 122: 2003 1002 123: 2002 1002 124: 2003 1002 125: 2003 1002 126: 2003 1002 127: 2003 1002 128: 2003 1002 129: 2003 1002 130: 2003 1002 131: 2002 1002 132: 2003 1002 133: 2003 1002 134: 2003 1002 135: 2003 1002 136: 2003 1002 137: 2003 1002 138: 2003 1002 139: 2002 1002 140: 2003 1002 141: 2003 1002 142: 2003 1002 143: 2003 1002 144: 2003 1002 145: 2003 1002 146: 2003 1002 147: 2002 1002 148: 2003 1002 149: 2003 1002 150: 2003 1002 151: 2003 1002 152: 2003 1002 153: 2003 1002 154: 2003 1002 155: 2002 1002 156: 2003 1002 157: 2003 1002 158: 2003 1002 159: 2003 1002 160: 2003 1002 161: 2003 1002 162: 2003 1002 163: 2002 1002 164: 2003 1002 165: 2003 1002 166: 2003 1002 167: 2003 1002 168: 2003 1002 169: 2003 1002 170: 2003 1002 171: 2002 1002 172: 2003 1002 173: 2003 1002 174: 2003 1002 175: 2003 1002 176: 2003 1002 177: 2003 1002 178: 2003 1002 179: 2002 1002 180: 2003 1002 181: 2003 1002 182: 2003 1002 183: 2003 1002 184: 2003 1002 185: 2003 1002 186: 2003 1002 187: 2002 1002 188: 2003 1002 189: 2003 1002 190: 2003 1002 191: 2003 1002 192: 2003 1002 193: 2003 1002 194: 2003 1002 195: 2002 1002 196: 2003 1002 197: 2003 1002 198: 2003 1002 199: 2003 1002 200: 2003 1002 201: 2003 1002 202: 2003 1002 203: 2002 1002 204: 2003 1002 205: 2003 1002 206: 2003 1002 207: 2003 1002 208: 2003 1002 209: 2003 1002 210: 2003 1002 211: 2002 1002 212: 2003 1002 213: 2003 1002 214: 2003 1002 215: 2003 1002 216: 2003 1002 217: 2003 1002 218: 2003 1002 219: 2002 1002 220: 2003 1002 221: 2003 1002 222: 2003 1002 223: 2003 1002 224: 2003 1002 225: 2003 1002 226: 2003 1002 227: 2002 1002 228: 2003 1002 229: 2003 1002 230: 2003 1002 231: 2003 1002 232: 2003 1002 233: 2003 1002 234: 2003 1002 235: 2002 1002 236: 2003 1002 237: 2003 1002 238: 2003 1002 239: 2003 1002 240: 2003 1002 241: 2003 1002 242: 2003 1002 243: 2002 1002 244: 2003 1002 245: 2003 1002 246: 2003 1002 247: 2003 1002 248: 2003 1002 249: 2003 1002 250: 2003 1002 251: 2002 1002 252: 2003 1002 253: 2003 1002 254: 2003 1002 255: 2003 1002 256: 2003 1002 257: 2003 1002 258: 3400 3400 259: 3400 2400 260: 3400 2400 261: 3400 2400 262: 3400 2400 263: 3400 2400 264: 3400 2400 265: 3400 2400 266: 3400 2400 267: 2400 2400 268: 3000 2400 269: 3401 2400 270: 3401 2400 271: 3401 2400 272: 3401 2400 273: 3401 2400 274: 3401 2400 275: 3401 2400 276: 3401 2400 277: 3401 2400 278: 3401 2400 279: 3401 2400 280: 3401 2400 281: 3401 2400 282: 2000 141F 283: 0000 041F 284: 0000 041F 285: 0000 041F 286: 0000 041F 287: 0000 041F 288: 0000 041F 289: 0000 041F 290: 0000 041F 291: 0000 041F 292: 0000 041F 293: 0000 041F 294: 0000 041F 295: 0000 041F 296: 0000 041F 297: 0000 041F 298: 0000 041F 299: 0000 041F 300: 0000 041F 301: 0000 041F 302: 0000 041F 303: 0000 041F 304: 0000 041F 305: 0000 041F 306: 0000 041F 307: 0000 041F 308: 0000 041F 309: 0000 041F 310: 0000 041F 311: 0000 041F 312: 0000 041F 313: 0000 041F 314: 0000 041F 315: 0000 041F 316: 1000 041F 317: 1000 041F 318: 1000 041F 319: 1000 041F 320: 1000 041F 321: 1000 041F 322: 1000 041F 323: 1000 041F 324: 1000 041F 325: 1000 041F 326: 1000 041F 327: 1000 041F 328: 1000 041F 329: 1000 041F 330: 1001 0400 331: 2001 1000 332: 2001 1000 333: 2001 1000 334: 2001 1000 335: 2001 1000 336: 2001 1000 337: 2001 1000 338: 2002 1001 339: 2001 1001 340: 2002 1001 341: 2002 1001 342: 2002 1001 343: 2002 1001 344: 2002 1001 345: 2002 1001 346: 2002 1001 347: 2001 1001 348: 2002 1001 349: 2002 1001 350: 2003 1001 351: 2003 1002 352: 2003 1002 353: 2003 1002 354: 2002 1001 355: 2002 1001 356: 2002 1001 357: 2002 1001 358: 2003 1002 359: 2003 1002 360: 2002 1002 361: 2003 1002 362: 2002 1001 363: 2002 1001 364: 2002 1001 365: 2002 1001 366: 2002 1001 367: 2003 1002 368: 2002 1002 369: 2003 1002 370: 2003 1002 371: 2003 1002 372: 2003 1002 373: 2003 1002 374: 2003 1002 375: 2003 1002 376: 2002 1002 377: 2003 1002 378: 2003 1002 379: 2003 1002 380: 2003 1002 381: 2003 1002 382: 2003 1002 383: 2003 1002 384: 2002 1002 385: 2003 1002 386: 2003 1002 387: 2003 1002 388: 2003 1002 389: 2003 1002 390: 2003 1002 391: 2003 1002 392: 2002 1002 393: 2003 1002 394: 2003 1002 395: 2003 1002 396: 2003 1002 397: 2003 1002 398: 2003 1002 399: 2003 1002 400: 2002 1002 401: 2003 1002 402: 2003 1002 403: 2003 1002 404: 2003 1002 405: 2003 1002 406: 2003 1002 407: 2003 1002 408: 2002 1002 409: 2003 1002 410: 2003 1002 411: 2003 1002 412: 2003 1002 413: 2003 1002 414: 2003 1002 415: 2003 1002 416: 2002 1002 417: 2003 1002 418: 2003 1002 419: 2003 1002 420: 2003 1002 421: 2003 1002 422: 2003 1002 423: 2003 1002 424: 2002 1002 425: 2003 1002 426: 2003 1002 427: 2003 1002 428: 2003 1002 429: 2003 1002 430: 2003 1002 431: 2003 1002 432: 2002 1002 433: 2003 1002 434: 2003 1002 435: 2003 1002 436: 2003 1002 437: 2003 1002 438: 2003 1002 439: 2003 1002 440: 2002 1002 441: 2003 1002 442: 2003 1002 443: 2003 1002 444: 2003 1002 445: 2003 1002 446: 2003 1002 447: 2003 1002 448: 2002 1002 449: 2003 1002 450: 2003 1002 451: 2003 1002 452: 2003 1002 453: 2003 1002 454: 2003 1002 455: 2003 1002 456: 2002 1002 457: 2003 1002 458: 2003 1002 459: 2003 1002 460: 2003 1002 461: 2003 1002 462: 2003 1002 463: 2003 1002 464: 2002 1002 465: 2003 1002 466: 2003 1002 467: 2003 1002 468: 2003 1002 469: 2003 1002 470: 2003 1002 471: 2003 1002 472: 2002 1002 473: 2003 1002 474: 2003 1002 475: 2003 1002 476: 2003 1002 477: 2003 1002 478: 2003 1002 479: 2003 1002 480: 2002 1002 481: 2003 1002 482: 2003 1002 483: 2003 1002 484: 2003 1002 485: 2003 1002 486: 2003 1002 487: 2003 1002 488: 2002 1002 489: 2003 1002 490: 2003 1002 491: 2003 1002 492: 2003 1002 493: 2003 1002 494: 2003 1002 495: 2003 1002 496: 2002 1002 497: 2003 1002 498: 2003 1002 499: 2003 1002 500: 2003 1002 501: 2003 1002 502: 2003 1002 503: 2003 1002 504: 2002 1002 505: 2003 1002 506: 2003 1002 507: 2003 1002 508: 2003 1002 509: 2003 1002 510: 2003 1002 511: 2003 1002 512: 2002 1002 513: 2003 1002 514: 2003 1002 515: 2003 1002 516: 2003 1002 517: 2003 1002 518: 2003 1002 519: 2003 1002 520: 2002 1002 521: 2003 1002 522: 2003 1002 523: 2003 1002 524: 2003 1002 525: 2003 1002 526: 2003 1002 527: 2003 1002 528: 2002 1002 529: 2003 1002 530: 2003 1002 531: 2003 1002 532: 2003 1002 533: 2003 1002 534: 2003 1002 535: 2003 1002 536: 2002 1002 537: 2003 1002 538: 2003 1002 539: 2003 1002 540: 2003 1002 541: 2003 1002 542: 2003 1002 543: 2003 1002 544: 2002 1002 545: 2003 1002 546: 2003 1002 547: 2003 1002 548: 2003 1002 549: 2003 1002 550: 2003 1002 551: 2003 1002 552: 2002 1002 553: 2003 1002 554: 2003 1002 555: 2003 1002 556: 2003 1002 557: 2003 1002 558: 2003 1002 559: 2003 1002 560: 2002 1002 561: 2003 1002 562: 2003 1002 563: 2003 1002 564: 2003 1002 565: 2003 1002 566: 2003 1002 567: 2003 1002 568: 2002 1002 569: 2003 1002 570: 2003 1002 571: 2003 1002 572: 2003 1002 573: 2003 1002 574: 2003 1002 575: 2003 1002 576: 2002 1002 577: 2003 1002 578: 2003 1002 579: 2003 1002 580: 2003 1002 581: 2003 1002 582: 2003 1002 583: 2003 1002 584: 2002 1002 585: 2003 1002 586: 2003 1002 587: 2003 1002 588: 2003 1002 589: 2003 1002 590: 2003 1002 591: 2003 1002 592: 2002 1002 593: 2003 1002 594: 2003 1002 595: 2003 1002 596: 2003 1002 597: 2003 1002 598: 2003 1002 599: 3400 3400 600: 3400 2400 601: 3400 2400 602: 3400 2400 603: 3400 2400 604: 3400 2400 605: 3400 2400 606: 3400 2400 607: 3400 2400 608: 2400 2400 609: 3000 2400 610: 3401 2400 611: 3401 2400 612: 3401 2400 613: 3401 2400 614: 3401 2400 615: 3401 2400 616: 3401 2400 617: 3401 2400 618: 3401 2400 619: 3401 2400 620: 3401 2400 621: 3401 2400 622: 3401 2400 623: 2000 141F 624: 2000 141F 625: 2000 141F 626: 2000 141F 627: 2000 141F 628: 2000 141F 629: 2000 141F 630: 2000 141F 631: 2000 141F 632: 2000 141F 633: 2000 141F 634: 2000 141F 635: 2000 141F 636: 2000 141F 637: 2000 141F 638: 2000 141F 639: 2000 141F 640: 2000 141F 641: 2000 141F 642: 2000 141F 643: 2000 141F 644: 2000 141F 645: 2000 141F 646: 2000 141F 647: 2000 141F 648: 2000 141F 649: 2000 141F 650: 2000 141F 651: 2000 141F 652: 2000 141F 653: 2000 141F 654: 2000 141F 655: 2000 141F 656: 2000 141F 657: 2000 141F 658: 2000 141F 659: 2000 141F 660: 2000 141F 661: 2000 141F 662: 2000 141F 663: 2000 141F 664: 2000 141F 665: 2000 141F 666: 2000 141F 667: 2000 141F 668: 2000 141F 669: 2000 141F 670: 2000 141F 671: 2001 1400 672: 2001 1000 673: 2001 1000 674: 2001 1000 675: 2001 1000 676: 2001 1000 677: 2001 1000 678: 2001 1000 679: 2002 1001 680: 2001 1001 681: 2002 1001 682: 2002 1001 683: 2002 1001 684: 2002 1001 685: 2002 1001 686: 2002 1001 687: 2002 1001 688: 2001 1001 689: 2002 1001 690: 2002 1001 691: 2002 1001 692: 2003 1002 693: 2003 1002 694: 2003 1002 695: 2002 1001 696: 2002 1001 697: 2002 1001 698: 2002 1001 699: 2002 1001 700: 2003 1002 701: 2002 1002 702: 2003 1002 703: 2002 1001 704: 2002 1001 705: 2002 1001 706: 2002 1001 707: 2002 1001 708: 2003 1002 709: 2002 1002 710: 2003 1002 711: 2003 1002 712: 2003 1002 713: 2003 1002 714: 2003 1002 715: 2003 1002 716: 2003 1002 717: 2002 1002 718: 2003 1002 719: 2003 1002 720: 2003 1002 721: 2003 1002 722: 2003 1002 723: 2003 1002 724: 2003 1002 725: 2002 1002 726: 2003 1002 727: 2003 1002 728: 2003 1002 729: 2003 1002 730: 2003 1002 731: 2003 1002 732: 2003 1002 733: 2002 1002 734: 2003 1002 735: 2003 1002 736: 2003 1002 737: 2003 1002 738: 2003 1002 739: 2003 1002 740: 2003 1002 741: 2002 1002 742: 2003 1002 743: 2003 1002 744: 2003 1002 745: 2003 1002 746: 2003 1002 747: 2003 1002 748: 2003 1002 749: 2002 1002