문제

사전에, 나는이 질문에 대한 열린 종결과 일반적인 소망에 대해 사과드립니다. 주제에 대한 내 지식은 매우 뾰족하고 있기 때문에 내 문제를 묘사하기가 어려워지기를 찾는 것이 좋습니다.나는 정말로 게시하고 싶지 않았지만, 나는 완전하고 완전히 붙어있다.

나는 NES 에뮬레이터를 시작했습니다.그것은 해석되어 있습니다 (그래서 동적 재 comp).

ATM은 ROM (Mapper 0 ROM)을로드하고 맵핑 할 수 있으며 INIT 코드를 내가 인터럽트 및 PPU를 처리 해야하는 위치까지 오른쪽으로 실행할 수 있습니다.그게 내가 어디에 있는지 왔어.

여기에 EMU ATM에서 출력하는 예입니다.실행은 8000에서 시작되며 800A에서 무한 루프를 쳤습니다. 여기서는 거기에서 진행되는 방법을 모르겠습니다.

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)
.

그래서 제 질문은 사이클 수, 인터럽트 등을 포함하여 PPU 렌더링을 통해 PPU 렌더링을 통해 1 반복의 을 설명 할 수 있습니다 (즉, 하나의 전체 240 스크린 스크린을 그립니다.다음).

도움이 되었습니까?

해결책

저기에 에뮬레이터가 있습니다. 답변을위한 출처를 보았습니까?일반적으로 이들은 성능을 위해 쓰여지고별로 읽을 수 없지만 당신을 맛있는 가볍게 찾을 수 있습니다.인터럽트가 실행되기를 기다리고 있으며 해당 인터럽트를 실행 했습니까?인터럽트가 반환 주소를 수정하고 프로그램을 계속할 수 있습니까?무한 루프가 레지스터에서 조금 폴링하는 것입니까?아니면 그것은 자기 자신에게 무조건적인 분기입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top