Rizin
unix-like reverse engineering framework and cli tools
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
p
r
s
t
u
v
w
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Enumerations
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
x
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Enumerator
b
d
e
h
i
k
n
p
r
s
w
Properties
Events
Related Functions
Files
File List
File Members
All
$
.
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
$
.
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Events
Friends
Macros
Modules
Pages
nes_specs.h
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2015 maijin <maijin21@gmail.com>
2
// SPDX-License-Identifier: LGPL-3.0-only
3
4
// CPU_memory_map: http://wiki.nesdev.com/w/index.php/CPU_memory_map
5
6
#ifndef _NES_H
7
#define _NES_H
8
9
#define INES_MAGIC "\x4E\x45\x53\x1A"
10
11
#define PRG_PAGE_SIZE 0x4000
12
#define CHR_PAGE_SIZE 0x2000
13
#define INES_HDR_SIZE sizeof(ines_hdr)
14
15
#define RAM_START_ADDRESS 0x0000
16
#define RAM_SIZE 0x0800
17
18
#define RAM_MIRROR_1_ADDRESS 0x0800
19
#define RAM_MIRROR_1_SIZE 0x0800
20
21
#define RAM_MIRROR_2_ADDRESS 0x1000
22
#define RAM_MIRROR_2_SIZE 0x0800
23
24
#define RAM_MIRROR_3_ADDRESS 0x1800
25
#define RAM_MIRROR_3_SIZE 0x0800
26
27
#define PPU_REG_ADDRESS 0x2000
28
#define PPU_REG_SIZE 0x0008
29
30
#define APU_AND_IOREGS_START_ADDRESS 0x4000
31
#define APU_AND_IOREGS_SIZE 0x0020
32
33
#define SRAM_START_ADDRESS 0x6000
34
#define SRAM_SIZE 0x2000
35
36
#define ROM_START_ADDRESS 0x8000
37
#define ROM_SIZE 0x8000
38
39
#define ROM_MIRROR_ADDRESS 0xC000
40
#define ROM_MIRROR_SIZE 0x8000
41
42
#define NMI_VECTOR_START_ADDRESS 0xFFFA
43
#define RESET_VECTOR_START_ADDRESS 0xFFFC
44
#define IRQ_VECTOR_START_ADDRESS 0xFFFE
45
46
#define PPU_CTRL_REG1 0x2000
47
#define PPU_CTRL_REG2 0x2001
48
#define PPU_STATUS 0x2002
49
#define PPU_SPR_ADDR 0x2003
50
#define PPU_SPR_DATA 0x2004
51
#define PPU_SCROLL_REG 0x2005
52
#define PPU_ADDRESS 0x2006
53
#define PPU_DATA 0x2007
54
55
#define SND_REGISTER 0x4000
56
#define SND_SQUARE1_REG 0x4000
57
#define SND_SQUARE2_REG 0x4004
58
#define SND_TRIANGLE_REG 0x4008
59
#define SND_NOISE_REG 0x400c
60
#define SND_DELTA_REG 0x4010
61
#define SND_MASTERCTRL_REG 0x4015
62
63
#define SPR_DMA 0x4014
64
#define JOYPAD_PORT 0x4016
65
#define JOYPAD_PORT1 0x4016
66
#define JOYPAD_PORT2 0x4017
67
68
RZ_PACKED
(
69
typedef
struct
{
70
char
id
[0x4];
// NES\x1A
71
ut8
prg_page_count_16k;
// number of PRG-ROM pages
72
ut8
chr_page_count_8k;
// number of CHR-ROM pages
73
ut8
rom_control_byte_0;
// flags describing ROM image
74
ut8
rom_control_byte_1;
// flags describing ROM image
75
ut8
ram_bank_count_8k;
// size of PRG RAM
76
ut8
reserved
[7];
// zero filled
77
})
78
ines_hdr;
79
80
#endif
// _NES_H
ut8
uint8_t ut8
Definition:
lh5801.h:11
reserved
@ reserved
Definition:
lm32_isa.h:94
RZ_PACKED
RZ_PACKED(typedef struct { char id[0x4];ut8 prg_page_count_16k;ut8 chr_page_count_8k;ut8 rom_control_byte_0;ut8 rom_control_byte_1;ut8 ram_bank_count_8k;ut8 reserved[7];}) ines_hdr
librz
bin
format
nes
nes_specs.h
Generated by
1.9.1