12 #define __BYTES extern UBYTE
13 #define __BYTE_REG extern volatile UBYTE
14 #define __REG extern volatile SFR
50 #define MBC7_LATCH_ERASE 0x55u
51 #define MBC7_LATCH_CAPTURE 0xAAu
52 #define MBC7_SRAM_ENABLE_KEY_1 0x0Au
53 #define MBC7_SRAM_ENABLE_KEY_2 0x40u
60 #define P1F_5 0b00100000
61 #define P1F_4 0b00010000
62 #define P1F_3 0b00001000
63 #define P1F_2 0b00000100
64 #define P1F_1 0b00000010
65 #define P1F_0 0b00000001
67 #define P1F_GET_DPAD P1F_5
68 #define P1F_GET_BTN P1F_4
69 #define P1F_GET_NONE (P1F_4 | P1F_5)
76 #define SIOF_XFER_START 0b10000000
77 #define SIOF_CLOCK_INT 0b00000001
78 #define SIOF_CLOCK_EXT 0b00000000
79 #define SIOF_SPEED_1X 0b00000000
80 #define SIOF_SPEED_32X 0b00000010
81 #define SIOF_B_CLOCK 0
82 #define SIOF_B_SPEED 1
83 #define SIOF_B_XFER_START 7
84 #define SCF_START SIOF_XFER_START
85 #define SCF_SOURCE SIOF_CLOCK_INT
86 #define SCF_SPEED SIOF_SPEED_32X
91 #define rTIMA TIMA_REG
97 #define TACF_START 0b00000100
98 #define TACF_STOP 0b00000000
99 #define TACF_4KHZ 0b00000000
100 #define TACF_16KHZ 0b00000011
101 #define TACF_65KHZ 0b00000010
102 #define TACF_262KHZ 0b00000001
108 #define rAUD1SWEEP NR10_REG
109 #define AUD1SWEEP_UP 0b00000000
110 #define AUD1SWEEP_DOWN 0b00001000
111 #define AUD1SWEEP_TIME(x) ((x) << 4)
112 #define AUD1SWEEP_LENGTH(x) (x)
114 #define rAUD1LEN NR11_REG
116 #define rAUD1ENV NR12_REG
118 #define rAUD1LOW NR13_REG
120 #define rAUD1HIGH NR14_REG
123 #define rAUD2LEN NR21_REG
125 #define rAUD2ENV NR22_REG
127 #define rAUD2LOW NR23_REG
129 #define rAUD2HIGH NR24_REG
132 #define rAUD3ENA NR30_REG
134 #define rAUD3LEN NR31_REG
136 #define rAUD3LEVEL NR32_REG
138 #define rAUD3LOW NR33_REG
140 #define rAUD3HIGH NR34_REG
143 #define rAUD4LEN NR41_REG
145 #define rAUD4ENV NR42_REG
147 #define rAUD4POLY NR43_REG
148 #define AUD4POLY_WIDTH_15BIT 0x00
149 #define AUD4POLY_WIDTH_7BIT 0x08
151 #define rAUD4GO NR44_REG
154 #define rAUDVOL NR50_REG
156 #define AUDVOL_VOL_LEFT(x) ((x) << 4)
157 #define AUDVOL_VOL_RIGHT(x) ((x))
158 #define AUDVOL_VIN_LEFT 0b10000000
159 #define AUDVOL_VIN_RIGHT 0b00001000
162 #define rAUDTERM NR51_REG
164 #define AUDTERM_4_LEFT 0b10000000
165 #define AUDTERM_3_LEFT 0b01000000
166 #define AUDTERM_2_LEFT 0b00100000
167 #define AUDTERM_1_LEFT 0b00010000
168 #define AUDTERM_4_RIGHT 0b00001000
169 #define AUDTERM_3_RIGHT 0b00000100
170 #define AUDTERM_2_RIGHT 0b00000010
171 #define AUDTERM_1_RIGHT 0b00000001
174 #define rAUDENA NR52_REG
176 #define AUDENA_ON 0b10000000
177 #define AUDENA_OFF 0b00000000
183 #define rLCDC LCDC_REG
185 #if defined(__TARGET_ap)
186 #define LCDCF_OFF 0b00000000
187 #define LCDCF_ON 0b00000001
188 #define LCDCF_WIN9800 0b00000000
189 #define LCDCF_WIN9C00 0b00000010
190 #define LCDCF_WINOFF 0b00000000
191 #define LCDCF_WINON 0b00000100
192 #define LCDCF_BG8800 0b00000000
193 #define LCDCF_BG8000 0b00001000
194 #define LCDCF_BG9800 0b00000000
195 #define LCDCF_BG9C00 0b00010000
196 #define LCDCF_OBJ8 0b00000000
197 #define LCDCF_OBJ16 0b00100000
198 #define LCDCF_OBJOFF 0b00000000
199 #define LCDCF_OBJON 0b01000000
200 #define LCDCF_BGOFF 0b00000000
201 #define LCDCF_BGON 0b10000000
203 #define LCDCF_B_WIN9C00 1
204 #define LCDCF_B_WINON 2
205 #define LCDCF_B_BG8000 3
206 #define LCDCF_B_BG9C00 4
207 #define LCDCF_B_OBJ16 5
208 #define LCDCF_B_OBJON 6
209 #define LCDCF_B_BGON 7
210 #elif defined(__TARGET_duck)
211 #define LCDCF_OFF 0b00000000
212 #define LCDCF_ON 0b10000000
213 #define LCDCF_WIN9800 0b00000000
214 #define LCDCF_WIN9C00 0b00001000
215 #define LCDCF_WINOFF 0b00000000
216 #define LCDCF_WINON 0b00100000
217 #define LCDCF_BG8800 0b00000000
218 #define LCDCF_BG8000 0b00010000
219 #define LCDCF_BG9800 0b00000000
220 #define LCDCF_BG9C00 0b00000100
221 #define LCDCF_OBJ8 0b00000000
222 #define LCDCF_OBJ16 0b00000010
223 #define LCDCF_OBJOFF 0b00000000
224 #define LCDCF_OBJON 0b00000001
225 #define LCDCF_BGOFF 0b00000000
226 #define LCDCF_BGON 0b01000000
228 #define LCDCF_B_WIN9C00 3
229 #define LCDCF_B_WINON 5
230 #define LCDCF_B_BG8000 4
231 #define LCDCF_B_BG9C00 2
232 #define LCDCF_B_OBJ16 1
233 #define LCDCF_B_OBJON 0
234 #define LCDCF_B_BGON 6
236 #define LCDCF_OFF 0b00000000
237 #define LCDCF_ON 0b10000000
238 #define LCDCF_WIN9800 0b00000000
239 #define LCDCF_WIN9C00 0b01000000
240 #define LCDCF_WINOFF 0b00000000
241 #define LCDCF_WINON 0b00100000
242 #define LCDCF_BG8800 0b00000000
243 #define LCDCF_BG8000 0b00010000
244 #define LCDCF_BG9800 0b00000000
245 #define LCDCF_BG9C00 0b00001000
246 #define LCDCF_OBJ8 0b00000000
247 #define LCDCF_OBJ16 0b00000100
248 #define LCDCF_OBJOFF 0b00000000
249 #define LCDCF_OBJON 0b00000010
250 #define LCDCF_BGOFF 0b00000000
251 #define LCDCF_BGON 0b00000001
253 #define LCDCF_B_WIN9C00 6
254 #define LCDCF_B_WINON 5
255 #define LCDCF_B_BG8000 4
256 #define LCDCF_B_BG9C00 3
257 #define LCDCF_B_OBJ16 2
258 #define LCDCF_B_OBJON 1
259 #define LCDCF_B_BGON 0
263 #define rSTAT STAT_REG
265 #if defined(__TARGET_ap)
266 #define STATF_LYC 0b00000010
267 #define STATF_MODE10 0b00000100
268 #define STATF_MODE01 0b00001000
269 #define STATF_MODE00 0b00010000
270 #define STATF_LYCF 0b00100000
271 #define STATF_HBL 0b00000000
272 #define STATF_VBL 0b10000000
273 #define STATF_OAM 0b01000000
274 #define STATF_LCD 0b11000000
275 #define STATF_BUSY 0b01000000
276 #define STATF_B_LYC 1
277 #define STATF_B_MODE10 2
278 #define STATF_B_MODE01 3
279 #define STATF_B_MODE00 4
280 #define STATF_B_LYCF 5
281 #define STATF_B_VBL 7
282 #define STATF_B_OAM 6
283 #define STATF_B_BUSY 6
285 #define STATF_LYC 0b01000000
286 #define STATF_MODE10 0b00100000
287 #define STATF_MODE01 0b00010000
288 #define STATF_MODE00 0b00001000
289 #define STATF_LYCF 0b00000100
290 #define STATF_HBL 0b00000000
291 #define STATF_VBL 0b00000001
292 #define STATF_OAM 0b00000010
293 #define STATF_LCD 0b00000011
294 #define STATF_BUSY 0b00000010
295 #define STATF_B_LYC 6
296 #define STATF_B_MODE10 5
297 #define STATF_B_MODE01 4
298 #define STATF_B_MODE00 3
299 #define STATF_B_LYCF 2
300 #define STATF_B_VBL 0
301 #define STATF_B_OAM 1
302 #define STATF_B_BUSY 1
318 #define rOBP0 OBP0_REG
320 #define rOBP1 OBP1_REG
326 #define rKEY1 KEY1_REG
327 #define rSPD KEY1_REG
329 #define KEY1F_DBLSPEED 0b10000000
330 #define KEY1F_PREPARE 0b00000001
338 #define VBK_ATTRIBUTES 1
340 #define BKGF_PRI 0b10000000
341 #define BKGF_YFLIP 0b01000000
342 #define BKGF_XFLIP 0b00100000
343 #define BKGF_BANK0 0b00000000
344 #define BKGF_BANK1 0b00001000
346 #define BKGF_CGB_PAL0 0b00000000
347 #define BKGF_CGB_PAL1 0b00000001
348 #define BKGF_CGB_PAL2 0b00000010
349 #define BKGF_CGB_PAL3 0b00000011
350 #define BKGF_CGB_PAL4 0b00000100
351 #define BKGF_CGB_PAL5 0b00000101
352 #define BKGF_CGB_PAL6 0b00000110
353 #define BKGF_CGB_PAL7 0b00000111
356 #define rHDMA1 HDMA1_REG
358 #define rHDMA2 HDMA2_REG
360 #define rHDMA3 HDMA3_REG
362 #define rHDMA4 HDMA4_REG
364 #define rHDMA5 HDMA5_REG
366 #define HDMA5F_MODE_GP 0b00000000
367 #define HDMA5F_MODE_HBL 0b10000000
369 #define HDMA5F_BUSY 0b10000000
374 #define RPF_ENREAD 0b11000000
375 #define RPF_DATAIN 0b00000010
376 #define RPF_WRITE_HI 0b00000001
377 #define RPF_WRITE_LO 0b00000000
380 #define rBCPS BCPS_REG
382 #define BCPSF_AUTOINC 0b10000000
384 #define rBCPD BCPD_REG
387 #define rOCPS OCPS_REG
389 #define OCPSF_AUTOINC 0b10000000
391 #define rOCPD OCPD_REG
393 #define rSVBK SVBK_REG
394 #define rSMBK SVBK_REG
397 #define rPCM12 PCM12_REG
400 #define rPCM34 PCM34_REG
405 #define IEF_HILO 0b00010000
406 #define IEF_SERIAL 0b00001000
407 #define IEF_TIMER 0b00000100
408 #define IEF_STAT 0b00000010
409 #define IEF_VBLANK 0b00000001
413 #define AUDLEN_DUTY_12_5 0b00000000
414 #define AUDLEN_DUTY_25 0b01000000
415 #define AUDLEN_DUTY_50 0b10000000
416 #define AUDLEN_DUTY_75 0b11000000
417 #define AUDLEN_LENGTH(x) (x)
420 #define AUDENV_VOL(x) ((x) << 4)
421 #define AUDENV_UP 0b00001000
422 #define AUDENV_DOWN 0b00000000
423 #define AUDENV_LENGTH(x) (x)
426 #define AUDHIGH_RESTART 0b10000000
427 #define AUDHIGH_LENGTH_ON 0b01000000
428 #define AUDHIGH_LENGTH_OFF 0b00000000
431 #define OAMF_PRI 0b10000000
432 #define OAMF_YFLIP 0b01000000
433 #define OAMF_XFLIP 0b00100000
434 #define OAMF_PAL0 0b00000000
435 #define OAMF_PAL1 0b00010000
436 #define OAMF_BANK0 0b00000000
437 #define OAMF_BANK1 0b00001000
439 #define OAMF_CGB_PAL0 0b00000000
440 #define OAMF_CGB_PAL1 0b00000001
441 #define OAMF_CGB_PAL2 0b00000010
442 #define OAMF_CGB_PAL3 0b00000011
443 #define OAMF_CGB_PAL4 0b00000100
444 #define OAMF_CGB_PAL5 0b00000101
445 #define OAMF_CGB_PAL6 0b00000110
446 #define OAMF_CGB_PAL7 0b00000111
448 #define OAMF_PALMASK 0b00000111
450 #define DEVICE_SCREEN_X_OFFSET 0
451 #define DEVICE_SCREEN_Y_OFFSET 0
452 #define DEVICE_SCREEN_WIDTH 20
453 #define DEVICE_SCREEN_HEIGHT 18
454 #define DEVICE_SCREEN_BUFFER_WIDTH 32
455 #define DEVICE_SCREEN_BUFFER_HEIGHT 32
456 #define DEVICE_SCREEN_MAP_ENTRY_SIZE 1
457 #define DEVICE_SPRITE_PX_OFFSET_X 8
458 #define DEVICE_SPRITE_PX_OFFSET_Y 16
459 #define DEVICE_WINDOW_PX_OFFSET_X 7
460 #define DEVICE_WINDOW_PX_OFFSET_Y 0
461 #define DEVICE_SCREEN_PX_WIDTH (DEVICE_SCREEN_WIDTH * 8)
462 #define DEVICE_SCREEN_PX_HEIGHT (DEVICE_SCREEN_HEIGHT * 8)
__BYTE_REG rROMB1
Definition: hardware.h:36
__REG NR33_REG
Definition: hardware.h:137
__REG NR14_REG
Definition: hardware.h:119
__REG P1_REG
Definition: hardware.h:57
__BYTES _SRAM[]
Definition: hardware.h:24
#define __REG
Definition: hardware.h:14
__BYTE_REG rMBC7_SRAM_ENABLE_2
Definition: hardware.h:42
__REG SC_REG
Definition: hardware.h:73
__BYTE_REG _IO[]
Definition: hardware.h:28
__REG OBP0_REG
Definition: hardware.h:317
__REG HDMA5_REG
Definition: hardware.h:363
__REG OCPS_REG
Definition: hardware.h:386
__BYTE_REG rMBC7_ACCEL_Y_LO
Definition: hardware.h:47
__REG WY_REG
Definition: hardware.h:321
__BYTE_REG rMBC7_ACCEL_Y_HI
Definition: hardware.h:48
__REG BCPD_REG
Definition: hardware.h:383
__REG SCY_REG
Definition: hardware.h:305
__REG NR32_REG
Definition: hardware.h:135
__BYTE_REG PCM_SAMPLE[16]
Definition: hardware.h:180
__REG BCPS_REG
Definition: hardware.h:379
__BYTES _RAMBANK[]
Definition: hardware.h:26
__BYTE_REG AUD3WAVE[16]
Definition: hardware.h:179
__REG WX_REG
Definition: hardware.h:323
__BYTE_REG rMBC7_ACCEL_X_HI
Definition: hardware.h:46
__REG TMA_REG
Definition: hardware.h:92
__REG HDMA4_REG
Definition: hardware.h:361
#define __BYTE_REG
Definition: hardware.h:13
__REG NR13_REG
Definition: hardware.h:117
__REG PCM12_REG
Definition: hardware.h:396
__BYTE_REG _HRAM[]
Definition: hardware.h:30
__REG IF_REG
Definition: hardware.h:104
__REG NR43_REG
Definition: hardware.h:146
__REG NR41_REG
Definition: hardware.h:142
__REG HDMA3_REG
Definition: hardware.h:359
__REG LYC_REG
Definition: hardware.h:311
__REG VBK_REG
Definition: hardware.h:332
__REG SB_REG
Definition: hardware.h:71
__BYTE_REG rRAMG
Definition: hardware.h:34
__REG LCDC_REG
Definition: hardware.h:182
__REG TAC_REG
Definition: hardware.h:94
__REG NR24_REG
Definition: hardware.h:128
__BYTES _VRAM9000[]
Definition: hardware.h:21
__REG NR21_REG
Definition: hardware.h:122
__BYTES _OAMRAM[]
Definition: hardware.h:27
__BYTE_REG _AUD3WAVERAM[]
Definition: hardware.h:29
__REG KEY1_REG
Definition: hardware.h:325
__BYTE_REG rMBC7_SRAM_ENABLE_1
Definition: hardware.h:41
__BYTES _VRAM8000[]
Definition: hardware.h:19
__REG RP_REG
Definition: hardware.h:371
__REG NR12_REG
Definition: hardware.h:115
__REG NR23_REG
Definition: hardware.h:126
__REG HDMA2_REG
Definition: hardware.h:357
__REG NR44_REG
Definition: hardware.h:150
__REG NR30_REG
Definition: hardware.h:131
__REG SCX_REG
Definition: hardware.h:307
__REG NR50_REG
Definition: hardware.h:153
__REG TIMA_REG
Definition: hardware.h:90
__REG OBP1_REG
Definition: hardware.h:319
__BYTE_REG rMBC7_ACCEL_X_LO
Definition: hardware.h:45
__REG SVBK_REG
Definition: hardware.h:392
__REG IE_REG
Definition: hardware.h:402
__REG HDMA1_REG
Definition: hardware.h:355
#define __BYTES
Definition: hardware.h:12
__REG NR51_REG
Definition: hardware.h:161
__REG NR34_REG
Definition: hardware.h:139
__REG NR42_REG
Definition: hardware.h:144
__BYTE_REG rMBC7_LATCH_2
Definition: hardware.h:44
__BYTES _RAM[]
Definition: hardware.h:25
__BYTE_REG rRAMB
Definition: hardware.h:37
__REG NR52_REG
Definition: hardware.h:173
__BYTES _SCRN0[]
Definition: hardware.h:22
__REG PCM34_REG
Definition: hardware.h:399
__REG STAT_REG
Definition: hardware.h:262
__REG NR11_REG
Definition: hardware.h:113
__REG NR10_REG
Definition: hardware.h:107
__BYTE_REG rROMB0
Definition: hardware.h:35
__REG DMA_REG
Definition: hardware.h:313
__REG OCPD_REG
Definition: hardware.h:390
__REG NR31_REG
Definition: hardware.h:133
__BYTES _VRAM[]
Definition: hardware.h:18
__REG LY_REG
Definition: hardware.h:309
__BYTE_REG rMBC7_LATCH_1
Definition: hardware.h:43
__REG NR22_REG
Definition: hardware.h:124
__REG BGP_REG
Definition: hardware.h:315
__BYTES _VRAM8800[]
Definition: hardware.h:20
__REG DIV_REG
Definition: hardware.h:88
__BYTES _SCRN1[]
Definition: hardware.h:23