libtonc
Memory Map

Basic memory map. More...

Modules

 Memory map bit(fields)
 List of all bit(field) definitions of memory mapped items.
 
 Memory mapped arrays
 These are some macros for easier access of various memory sections. They're all arrays or matrices, using the types that would be the most natural for that concept.
 
 IO Registers
 

Main sections

#define MEM_EWRAM   0x02000000
 External work RAM.
 
#define MEM_IWRAM   0x03000000
 Internal work RAM.
 
#define MEM_IO   0x04000000
 I/O registers.
 
#define MEM_PAL   0x05000000
 Palette. Note: no 8bit write !!
 
#define MEM_VRAM   0x06000000
 Video RAM. Note: no 8bit write !!
 
#define MEM_OAM   0x07000000
 Object Attribute Memory (OAM) Note: no 8bit write !!
 
#define MEM_ROM   0x08000000
 ROM. No write at all (duh)
 
#define MEM_SRAM   0x0E000000
 Static RAM. 8bit write only.
 

Main section sizes

#define EWRAM_SIZE   0x40000
 
#define IWRAM_SIZE   0x08000
 
#define PAL_SIZE   0x00400
 
#define VRAM_SIZE   0x18000
 
#define OAM_SIZE   0x00400
 
#define SRAM_SIZE   0x10000
 

Sub section sizes

#define PAL_BG_SIZE   0x00200
 BG palette size.
 
#define PAL_OBJ_SIZE   0x00200
 Object palette size.
 
#define CBB_SIZE   0x04000
 Charblock size.
 
#define SBB_SIZE   0x00800
 Screenblock size.
 
#define VRAM_BG_SIZE   0x10000
 BG VRAM size.
 
#define VRAM_OBJ_SIZE   0x08000
 Object VRAM size.
 
#define M3_SIZE   0x12C00
 Mode 3 buffer size.
 
#define M4_SIZE   0x09600
 Mode 4 buffer size.
 
#define M5_SIZE   0x0A000
 Mode 5 buffer size.
 
#define VRAM_PAGE_SIZE   0x0A000
 Bitmap page size.
 

Sub sections

#define REG_BASE   MEM_IO
 Background palette address.
 
#define MEM_PAL_BG   (MEM_PAL)
 Background palette address.
 
#define MEM_PAL_OBJ   (MEM_PAL + PAL_BG_SIZE)
 Object palette address.
 
#define MEM_VRAM_FRONT   (MEM_VRAM)
 Front page address.
 
#define MEM_VRAM_BACK   (MEM_VRAM + VRAM_PAGE_SIZE)
 Back page address.
 
#define MEM_VRAM_OBJ   (MEM_VRAM + VRAM_BG_SIZE)
 Object VRAM address.
 

Palette

#define pal_bg_mem   ((COLOR*)MEM_PAL)
 Background palette.
 
#define pal_obj_mem   ((COLOR*)MEM_PAL_OBJ)
 Object palette.
 
#define pal_bg_bank   ((PALBANK*)MEM_PAL)
 Background palette matrix.
 
#define pal_obj_bank   ((PALBANK*)MEM_PAL_OBJ)
 Object palette matrix.
 

VRAM

#define tile_mem   ( (CHARBLOCK*)MEM_VRAM)
 Charblocks, 4bpp tiles.
 
#define tile8_mem   ((CHARBLOCK8*)MEM_VRAM)
 Charblocks, 8bpp tiles.
 
#define tile_mem_obj   ( (CHARBLOCK*)MEM_VRAM_OBJ)
 Object charblocks, 4bpp tiles.
 
#define tile8_mem_obj   ((CHARBLOCK8*)MEM_VRAM_OBJ)
 Object charblocks, 4bpp tiles.
 
#define se_mem   ((SCREENBLOCK*)MEM_VRAM)
 Screenblocks as arrays.
 
#define se_mat   ((SCREENMAT*)MEM_VRAM)
 Screenblock as matrices.
 
#define vid_mem   ((COLOR*)MEM_VRAM)
 Main mode 3/5 frame as an array.
 
#define m3_mem   ((M3LINE*)MEM_VRAM)
 Mode 3 frame as a matrix.
 
#define m4_mem   ((M4LINE*)MEM_VRAM)
 Mode 4 first page as a matrix.
 
#define m5_mem   ((M5LINE*)MEM_VRAM)
 Mode 5 first page as a matrix.
 
#define vid_mem_front   ((COLOR*)MEM_VRAM)
 First page array.
 
#define vid_mem_back   ((COLOR*)MEM_VRAM_BACK)
 Second page array.
 
#define m4_mem_back   ((M4LINE*)MEM_VRAM_BACK)
 Mode 4 second page as a matrix.
 
#define m5_mem_back   ((M5LINE*)MEM_VRAM_BACK)
 Mode 5 second page as a matrix.
 

OAM

#define oam_mem   ((OBJ_ATTR*)MEM_OAM)
 Object attribute memory.
 
#define obj_mem   ((OBJ_ATTR*)MEM_OAM)
 Object attribute memory.
 
#define obj_aff_mem   ((OBJ_AFFINE*)MEM_OAM)
 Object affine memory.
 

ROM

#define rom_mem   ((u16*)MEM_ROM)
 ROM pointer.
 

SRAM

#define sram_mem   ((u8*)MEM_SRAM)
 SRAM pointer.
 

Detailed Description

Basic memory map.

Macro Definition Documentation

◆ m3_mem

#define m3_mem   ((M3LINE*)MEM_VRAM)

Mode 3 frame as a matrix.

m3_mem[y][x] = pixel (x, y) ( COLOR )

◆ m4_mem

#define m4_mem   ((M4LINE*)MEM_VRAM)

Mode 4 first page as a matrix.

m4_mem[y][x] = pixel (x, y) ( u8 )

Note
This is a byte-buffer. Not to be used for writing.

◆ m4_mem_back

#define m4_mem_back   ((M4LINE*)MEM_VRAM_BACK)

Mode 4 second page as a matrix.

m4_mem[y][x] = pixel (x, y) ( u8 )

Note
This is a byte-buffer. Not to be used for writing.

◆ m5_mem

#define m5_mem   ((M5LINE*)MEM_VRAM)

Mode 5 first page as a matrix.

m5_mem[y][x] = pixel (x, y) ( COLOR )

◆ m5_mem_back

#define m5_mem_back   ((M5LINE*)MEM_VRAM_BACK)

Mode 5 second page as a matrix.

m5_mem[y][x] = pixel (x, y) ( COLOR )

◆ oam_mem

#define oam_mem   ((OBJ_ATTR*)MEM_OAM)

Object attribute memory.

oam_mem[i] = object i ( OBJ_ATTR )

◆ obj_aff_mem

#define obj_aff_mem   ((OBJ_AFFINE*)MEM_OAM)

Object affine memory.

obj_aff_mem[i] = object matrix i ( OBJ_AFFINE )

◆ obj_mem

#define obj_mem   ((OBJ_ATTR*)MEM_OAM)

Object attribute memory.

oam_mem[i] = object i ( OBJ_ATTR )

◆ pal_bg_bank

#define pal_bg_bank   ((PALBANK*)MEM_PAL)

Background palette matrix.

pal_bg_bank[y] = bank y ( COLOR[ ] )
pal_bg_bank[y][x] = color color y*16+x ( COLOR )

◆ pal_bg_mem

#define pal_bg_mem   ((COLOR*)MEM_PAL)

Background palette.

pal_bg_mem[i] = color i ( COLOR )

◆ pal_obj_bank

#define pal_obj_bank   ((PALBANK*)MEM_PAL_OBJ)

Object palette matrix.

pal_obj_bank[y] = bank y ( COLOR[ ] )
pal_obj_bank[y][x] = color y*16+x ( COLOR )

◆ pal_obj_mem

#define pal_obj_mem   ((COLOR*)MEM_PAL_OBJ)

Object palette.

pal_obj_mem[i] = color i ( COLOR )

◆ se_mat

#define se_mat   ((SCREENMAT*)MEM_VRAM)

Screenblock as matrices.

se_mat[s] = screenblock s ( SCR_ENTRY[ ][ ] )
se_mat[s][y][x] = screenblock s, entry (x,y) ( SCR_ENTRY )

◆ se_mem

#define se_mem   ((SCREENBLOCK*)MEM_VRAM)

Screenblocks as arrays.

se_mem[y] = screenblock y ( SCR_ENTRY[ ] )
se_mem[y][x] = screenblock y, entry x ( SCR_ENTRY )

◆ tile8_mem

#define tile8_mem   ((CHARBLOCK8*)MEM_VRAM)

Charblocks, 8bpp tiles.

tile_mem[y] = charblock y ( TILE[ ] )
tile_mem[y][x] = block y, tile x ( TILE )

◆ tile8_mem_obj

#define tile8_mem_obj   ((CHARBLOCK8*)MEM_VRAM_OBJ)

Object charblocks, 4bpp tiles.

tile_mem[y] = charblock y ( TILE[ ] )
tile_mem[y][x] = block y, tile x ( TILE )

◆ tile_mem

#define tile_mem   ( (CHARBLOCK*)MEM_VRAM)

Charblocks, 4bpp tiles.

tile_mem[y] = charblock y ( TILE[ ] )
tile_mem[y][x] = block y, tile x ( TILE )

◆ tile_mem_obj

#define tile_mem_obj   ( (CHARBLOCK*)MEM_VRAM_OBJ)

Object charblocks, 4bpp tiles.

tile_mem[y] = charblock y ( TILE[ ] )
tile_mem[y][x] = block y, tile x ( TILE )

◆ vid_mem

#define vid_mem   ((COLOR*)MEM_VRAM)

Main mode 3/5 frame as an array.

vid_mem[i] = pixel i ( COLOR )