-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMapper.h
47 lines (40 loc) · 1.57 KB
/
Mapper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Memory Map
// -------------
// +---------+-------+-------+-----------------------+
// | Address | Size | Flags | Description |
// +---------+-------+-------+-----------------------+
// | $0000 | $800 | | RAM |
// | $0800 | $800 | M | RAM |
// | $1000 | $800 | M | RAM |
// | $1800 | $800 | M | RAM |
// | $2000 | 8 | | Registers |
// | $2008 | $1FF8 | R | Registers |
// | $4000 | $20 | | Registers |
// | $4020 | $1FDF | | Expansion ROM |
// | $6000 | $2000 | | SRAM |
// | $8000 | $4000 | | PRG-ROM |
// | $C000 | $4000 | | PRG-ROM |
// +---------+-------+-------+-----------------------+
// Flag Legend: M = Mirror of $0000
// R = Mirror of $2000-2008 every 8 bytes
// (e.g. $2008=$2000, $2018=$2000, etc.)
#ifndef MAPPER_H
#define MAPPER_H
#include "Constants.h"
#include "Memory.h"
#include "PPU.h"
#include "Controller.h"
class Mapper {
private:
Memory &mem;
PPU &ppu;
Controller &controller_1;
Word translate_address(Word address) const;
public:
Mapper(Memory &_mem, PPU &_ppu, Controller &controller_1);
Byte read(Word address) const;
Word read_word(Word address) const;
void write(Byte data, Word address);
void write(const Byte* data, Word address, int length);
};
#endif // MAPPER_H