Trước, tôi xin lỗi vì sự kết thúc cởi mở và sự mơ hồ chung chung của câu hỏi này, bởi vì thành thật mà biết được chủ đề của tôi rất khó khăn và tôi thấy khó thậm chí mô tả vấn đề của tôi. Tôi thực sự không muốn đăng bài, nhưng tôi hoàn toàn bị mắc kẹt hoàn toàn.Lý thuyết mô phỏng NES cơ bản - Tôi bị kẹt
Tôi đã bắt đầu trình mô phỏng NES. Nó được giải thích (do đó không có recomp động).
Atm nó có thể tải và bản đồ roms (mapper 0 roms) và thực thi mã init ngay đến nơi tôi phải đối phó với ngắt và PPU. Đó là nơi tôi bị mắc kẹt.
Dưới đây là ví dụ về đầu ra từ emu của tôi. Thực hiện bắt đầu từ 8000, và tôi nhấn một vòng lặp vô hạn tại 800a, nơi tôi không có ý tưởng làm thế nào để tiến bộ từ đó.
8002: LDA #$10 ; read immediate value to set PPU control registers
8004: STA $2000 ; store value
8007: LDX #$FF ; load immediate value into X register
8009: TXS ; store X register into stack
800a: LDA $2002 ; read PPU flags into accumulator (set N flag based on bit 7)
800d: BPL ; test N flag, branch to 800a if not positive, (N is set)
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
etc, etc etc (inf loop)
Vì vậy, câu hỏi của tôi là, có thể ai đó hãy giải thích những điều cơ bản trong tổng số 1 lặp thông qua một PPU làm cho tôi, bao gồm những thứ như tính chu kỳ, ngắt vv (tức là vẽ cả một màn hình 240 scanline và chuyển sang kế tiếp).
Ta để thêm một thẻ 6502 –
đăng tại http://nesdev.parodius.com/ sẽ cho bạn kết quả xa, nhanh hơn và tốt hơn SO. Đó chỉ là cách nó dành cho các chủ đề thích hợp. –
Tôi đã đăng ở đó, nhưng 5 ngày sau, tôi có 1 câu trả lời, và về cơ bản là đọc tài liệu (tôi có 100 lần, nhưng tôi vẫn còn chút bối rối). –