-
Notifications
You must be signed in to change notification settings - Fork 1
/
constants.inc
193 lines (148 loc) · 3.78 KB
/
constants.inc
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
IF !DEF(CONSTANTS_INCLUDED)
CONSTANTS_INCLUDED SET 1
;;;;;;;;;;;;;;; HEADER OPTIONS ;;;;;;;;;;;;;;;;;;;;;;
;; CGB Support ;;
NO_COLOUR_SUPPORT EQU $00
COLOUR_SUPPORT EQU $80
COLOUR_ONLY EQU $C0
;; Licensee code ;;
UNLICENSED EQU "00"
;; SGB Support ;;
NO_SGB_SUPPORT EQU $00
SGB_SUPPORTED EQU $03
;; Catridge types ;;
; 32kB ROM
ROM_ONLY EQU $00
; MBC1 - max 2MB ROM and/or 32kB RAM)
MBC1 EQU $01
MBC1_RAM EQU $02
MBC1_BATTERY EQU $03
; MBC2 - max 256kB ROM and 256B RAM
MBC2 EQU $05
MBC2_BATTERY EQU $06
MBC2_RAM EQU $08
MBC2_RAM_BATTERY EQU $09
; MMO1 - max 8MB ROM and 128kB RAM
MMM01 EQU $0b
MMM01_RAM EQU $0c
MMM01_RAM_BATTERY EQU $0d
; MBC3 - max 2MB ROM and/or 32kB RAM and Timer
MBC3_TIMER_BATTERY EQU $0f
MBC3_TIMER_RAM_BATTERY EQU $10
MBC3 EQU $11
MBC3_RAM EQU $12
MBC3_RAM_BATTERY EQU $13
; MBC5 - max 8MB ROM and/or 128kB RAM
MBC5 EQU $19
MBC5_RAM EQU $1a
MBC5_RAM_BATTERY EQU $1b
MBC5_RUMBLE EQU $1c
MBC5_RUMBLE_RAM EQU $1d
MBC5_RUMBLE_RAM_BATTER EQU $1e
; MBC6 - who knows?
MBC6 EQU $20
; MBC7 - max 8MB ROM or 256kB RAM and Accelerometer
MBC7_SENSOR_RUMBLE_RAM_BATTERY EQU $22
;; ROM SIZE ;;
ROM_32kB EQU $00 ; no banks
ROM_64kB EQU $01 ; 4 banks
ROM_128kB EQU $02 ; 8 banks
ROM_256kB EQU $03 ; 16 banks
ROM_512kB EQU $04 ; 32 banks
ROM_1MB EQU $05 ; 64 banks
ROM_2MB EQU $06 ; 128 banks
ROM_4MB EQU $07 ; 256 banks
ROM_8MB EQU $08 ; 512 banks
ROM_1_1MB EQU $52 ; 1.1MB, 72 banks
ROM_1_2MB EQU $53 ; 1.2MB 80 banks
ROM_1_5MB EQU $54 ; 1/5MB 96 banks
;; RAM size ;;
NO_RAM EQU $00
RAM_2kB EQU $01
RAM_8kB EQU $02
RAM_32Kb EQU $03
RAM_128kB EQU $04
RAM_64kB EQU $05
;; Destination code ;;
FOREIGN_DESTINATION EQU $01
;; Original Licensee code ;;
USE_NEW_LICENSEE_CODE EQU $33
;;;;;;;;;;;;;;; IO Register Options ;;;;;;;;;;;;;;;;;;;;;;
; Interrupt Flags
INTERRUPT_VBLANK EQU %00000001
; Joypad Flags
JOYPAD_GET_BUTTONS EQU %00100000
JOYPAD_GET_DPAD EQU %00010000
JOYPAD_CLEAR EQU %00110000
;; Audio Related ;;
LEFT_SPEAKER_ON EQU %10000000
RIGHT_SPEAKER_ON EQU %00001000
MAX_VOLUME EQU %11111111
; TODO
CHANNEL_4_LEFT_SPEAKER EQU %00000000
CHANNEL_3_LEFT_SPEAKER EQU %00000000
CHANNEL_2_LEFT_SPEAKER EQU %00000000
CHANNEL_1_LEFT_SPEAKER EQU %00000000
CHANNEL_4_RIGHT_SPEAKER EQU %00000000
CHANNEL_3_RIGHT_SPEAKER EQU %00000000
CHANNEL_2_RIGHT_SPEAKER EQU %00000000
CHANNEL_1_RIGHT_SPEAKER EQU %00000000
AUDIO_ON_BIT EQU 7
;; LCD Related ;;
; LCD Control Flags
LCD_OFF EQU %00000000
LCD_ON EQU %10000000
LCD_ON_BIT EQU 7
WINDOW_MAP_1 EQU %00000000
WINDOW_MAP_2 EQU %01000000
WINDOW_OFF EQU %00000000
WINDOW_ON EQU %00100000
TILE_DATA_88 EQU %00000000
TILE_DATA_80 EQU %00010000
BACKGROUND_MAP_1 EQU %00000000
BACKGROUND_MAP_2 EQU %00001000
SQUARE_TILES EQU %00000000
LONG_TILES EQU %00000100
SPRITES_OFF EQU %00000000
SPRITES_ON EQU %00000010
BACKGROUND_OFF EQU %00000000
BACKGROUND_ON EQU %00000001
VRAM_BUSY EQU %00000010
SCREEN_HEIGHT EQU 144
SCREEN_WIDTH EQU 160
BACKGROUND_HEIGHT EQU 18
BACKGROUND_WIDTH EQU 20
CANVAS_WIDTH EQU 256
CANVAS_HEIGHT EQU 256
SCREEN_BYTE_WIDTH EQU 32
SCREEN_BYTE_HEIGHT EQU 32
SPRITE_WIDTH EQU 8
;;;;;;;;;;;;;;; DMA/OAM Related ;;;;;;;;;;;;;;;;;;
DMA_WAIT_TIME EQU $28
OAM_SIZE EQU $A0
SPRITE_SIZE EQU 4
SPRITE_Y EQU 0
SPRITE_X EQU 1
SPRITE_TILE EQU 2
SPRITE_FLAGS EQU 3
SPRITE_COUNT EQU 40
HAS_PRIORITY EQU %00000000
NO_PRIORITY EQU %10000000
IS_Y_FLIPPED EQU %01000000
IS_X_FLIPPED EQU %00100000
USE_PALETTE_0 EQU %00000000
USE_PALETTE_1 EQU %00010000
;;;;;;;;;;;;;;; Mmemory Bank Related ;;;;;;;;;;;;;
DISABLE_RAM EQU $00
ENABLE_RAM EQU $0a
ROM_BANK_MODE EQU $00
RAM_BANK_MODE EQU $01
CLOCK_MODE_SECONDS EQU $08
CLOCK_MODE_MINUTES EQU $09
CLOCK_MODE_HOURS EQU $0a
CLOCK_MODE_DAY EQU $0b
CLOCK_MODE_FLAGS EQU $0c
CLOCK_HIGH_DAY EQU %00000001
CLOCK_HALT EQU %01000000
CLOCK_DAY_OVERFLOW EQU %10000000
ENDC