게임보이/개발

최근 수정 시각: ()
분류

1. 개요2. 개발 키트 및 언어3. 하드웨어적 특징
3.1. MMIO3.2. ROM

1. 개요 [편집]

본 문서는 게임보이 시리즈용 소프트웨어 개발을 다루는 문서이다. 어드밴스는 개발에 큰 차이가 있어 서술하지 않는다.

2. 개발 키트 및 언어 [편집]

본 문서는 GBDK 개발 키트를 기준으로, C언어를 기본으로 하는 개발을 다룬다.

3. 하드웨어적 특징 [편집]

3.1. MMIO [편집]

MMIO는 Memory-Mapped I/O, 메모리 주소에 매핑된 장치 입출력을 뜻하는데, 게임보이는 이를 적극적으로 활용한다.
게임보이 / 컬러 MMIO 맵
메모리 주소
용도
0000-3FFF
ROM 0번 뱅크'[1]
4000-7FFF
ROM 자유 뱅크[2]
8000-9FFF
VRAM[3]
A000-BFFF
게임 팩 SRAM[4]
C000-CFFF
RAM 0번 뱅크
D000-DFFF
RAM 자유 뱅크[5]
E000-FDFF
ECHO RAM[6]
FE00-FE9F
OAM[7] 속성 메모리
FEA0-FEFF
액세스 불가
FF00-FF7F
하드웨어 IO
FF80-FFFE
상위 메모리 영역
FFFF
인터럽트 활성화 레지스터

3.2. ROM [편집]

ROM은 32 KB 용량부터 8 MB 용량까지 사용 가능하다. 동시 액세스 가능 용량은 32 KB이며, 그 중 절반은 0번 뱅크로 고정되므로 나머지 16 KB만을 실질적으로 자유롭게 접근할 수 있다.

뱅크 용량은 16 KB이다. 특수 칩을 이용해 뱅크 단위로 ROM을 액세스할 수 있다.

GBDK 개발 키트에서는 특수 칩으로 MBC5 (Multi Bank Controller 5)를 권장한다. 0번 뱅크와, 1-511번 뱅크를 사용할 수 있으며[8], 게임 팩 SRAM은 8, 32, 128 KB 중 하나를 사용 가능하다.[9]
SWITCH_ROM(uint8_t bank)
매크로를 통해 1-255번 뱅크로 뱅크 스위치를 할 수 있다.

SWITCH_ROM_MBC5_8M(uint16_t bank)
매크로를 통해 1-511번 뱅크로 뱅크 스위치를 할 수 있다. 다만 255번 뱅크를 넘어가려면 2바이트를 이용해야 하므로 성능에 영향이 있을 수 있다.
[1] 일부 특수 칩에서는 스위치 가능.[2] 32 KB ROM인 경우 1번 뱅크로 고정.[3] 컬러0-1번 뱅크로 스위치 가능.[4] 팩에 SRAM이 없는 경우 사용 불가능.[5] 흑백 게임보이인 경우 1번 뱅크로 고정.[6] C000-DDFF 액세스와 똑같이 동작.[7] 스프라이트[8] 다만 1-255 안쪽으로 사용하는 것을 추천한다.[9] 32 / 128 KB 사용 시 뱅크 스위치 필요.
Contents are available under the CC BY-NC-SA 2.0 KR; There could be exceptions if specified or metioned.
개인정보 처리방침