2013-09-23 2 views
5

내가 여기에 대해 오해하니? 128kB는 0xFFFFFF 바이트보다 작습니다.

답변

5

SNES의 주소 공간이 실제 주소 수보다 훨씬 크다는 사실은 문제가되지 않습니다. 64 비트 컴퓨터에서 포인터는 1.844674407 × 10 바이트를 처리 할 수있을만큼 커 (약 100 억 GB). 나는이 많은 RAM을 가진 컴퓨터를 본적이 없다. 그러나 그것은 문제가 아니다. 일부 주소는 메모리의 어떤 주소도 참조하지 않습니다.

희망이 도움이됩니다.

+0

이 질문을 통해 제 질문에 대한 이해를 도울 수 있습니다. 감사! 사실, SNES 메모리 맵에서이 주소는 실제로 실제 주소와 일치합니다. 이 주소 (128k)의 특정 부분 만 RAM입니까? RAM 이외의 다른 유형의 메모리는 무엇입니까? (내가 완전히 이해가 안되면 죄송합니다.) – VJC1288

+0

이 링크 (http://romhack.wikia.com/wiki/SNES_ROM_layout)에서 언급했듯이 메모리에는 다른 RAM 위치로 리디렉션되는 주소 인 여러 * mirror * 영역이 포함됩니다 . 이것은 특정 메모리 영역이 두 배가되어 유효하지 않은 주소를 올바른 위치로 리디렉션한다는 것을 의미합니다. – templatetypedef

6

오케이, 오래된 질문이지만, 이것이 Google에 방금 나타나서 전적으로 대답 할 수 있습니다.

여기서 혼동은 RAM, ROM 및 SNES의 총 주소 공간의 차이에 있습니다. SNES에만 128K의 RAM이 있지만 실제로는 이며 번데기 메모리는이며 ROM 공간은 고려하지 않습니다. 작업 RAM은 각 64K의 뱅크 7E 및 7F에 매핑됩니다. VRAM은 또 다른 32K의 휘발성 메모리이지만 표준 주소 공간에서는 액세스 할 수 없으므로 특수 레지스터를 통해 써야합니다.

가장 일반적인 ROM 매핑 (커뮤니티에서 LoROM 및 HiROM이라고 함)은 각 뱅크의 주소 공간 또는 전체 64K 뱅크의 상위 절반에 32K 뱅크를 매핑합니다. HiROM은 64K 뱅크를 매핑하는 반면 "LoROM"은 32K 뱅크를 매핑합니다 (00 : 8000-00 : FFFF, 01 : 8000-01 : FFFF, ..., 3F : 8000-3F : FFFF, 80 : 8000-BF : FFFF로 미러 됨) (C0 : 0000-C0 : FFFF, C1 : 0000 : C1-FFFF, ... FF : 0000-FF : FFFF). 앞에서 언급했듯이 RAM을 64K 뱅크 7E 및 7F에 매핑합니다. 나는 SRAM의 작동 방식에 익숙하지 않지만 70 : 0000 iirc에 매핑되고 7X 지역의 여러 은행에 미러링됩니다.

편집 : 추가 참고로 ROM은 물론 읽기 전용입니다. 그것은 귀하의 프로그램 데이터 (읽기 : 게임, 지침 및 자산)가 저장되는 곳입니다. 수정할 필요가있는 데이터 (압축 해제해야하는 압축 데이터, 레벨 데이터, 적, 플레이어 통계, 다양한 배경에 표시되는 타일 맵 등)는 처리를 위해 RAM (7E/7F)으로 전송됩니다. ROM은 카트리지의 칩에 인쇄되는 것이며 RAM은 시스템이 켜질 때마다 가비지 데이터로 채워집니다. 간단한 루프를 사용하여 게임의 초기화 단계에서 RAM을 제로로 만드는 것이 상당히 표준적인 방법입니다.

희망을 버리는 희망!