0x0FFF - это маска из 12 бит, т.е. она оставляет младшие 12 бит и отсекает старшие. "address>>12" сдвигает число на 12 бит вправо.
Таким образом
return memory_mapped[address>>12][address&0x0FFF];
по сути отображает 16-битный адрес в 2 числа: старшие 4 бита и младшие 12 бит. Т.е. разбивает адресное пространство 64 к на блоки по 4 к. Зачем это сделано - видать, для НЕС так надо.
Добавлено позже:
Вторая и третья функции - тоже понятно, работа со словами, поэтому "data>>8" в записи и мемори_мэппед в чтении.
А чуть ниже объясняется, что 12 берётся как стандартный размер страницы маппера. Точнее, 2^12.
#define NES6502_BANKSHIFT 12
Я уверен, там где-то должно быть описано, что NES6502_NUMBANKS = 16 - NES6502_BANKSHIFT.