]> git.sur5r.net Git - cc65/blobdiff - include/nes.h
Remove trailings spaces from CBM-related asm files
[cc65] / include / nes.h
index 7a2f3e176fca1a4771afc3f82a9334b93463d4a7..217a90779ac716b6c644b6f8105d4216b76e896d 100644 (file)
@@ -1,8 +1,8 @@
 /*****************************************************************************/
 /*                                                                           */
-/*                                  nes.h                                   */
+/*                                   nes.h                                   */
 /*                                                                           */
-/*                     NES system specific definitions                      */
+/*                      NES system specific definitions                      */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
 
 
 /* Key and character defines */
-#define CH_ENTER               '\n'
-#define CH_CURS_UP             0x01
-#define CH_CURS_DOWN           0x02
-#define CH_CURS_LEFT           0x03
-#define CH_CURS_RIGHT          0x04
-#define CH_ESC                 8
-#define CH_DEL                 20
-
-#define CH_CROSS               0x10
+#define CH_ENTER                '\n'
+#define CH_CURS_UP              0x01
+#define CH_CURS_DOWN            0x02
+#define CH_CURS_LEFT            0x03
+#define CH_CURS_RIGHT           0x04
+#define CH_ESC                  8
+#define CH_DEL                  20
+
+#define CH_CROSS                0x10
 #define CH_RTEE                 0x17
 #define CH_LTEE                 0x0f
 #define CH_TTEE                 0x16
 #define CH_LRCORNER             0x08
 #define CH_PI                   0x05
 
-
 /* Color defines */
-#define COLOR_BLACK            0x00
-#define COLOR_WHITE            0x01
-#define COLOR_RED              0x02
-#define COLOR_CYAN             0x03
-#define COLOR_VIOLET           0x04
-#define COLOR_GREEN            0x05
-#define COLOR_BLUE             0x06
-#define COLOR_YELLOW           0x07
-#define COLOR_ORANGE           0x08
-#define COLOR_BROWN            0x09
-#define COLOR_LIGHTRED         0x0A
-#define COLOR_GRAY1            0x0B
-#define COLOR_GRAY2            0x0C
-#define COLOR_LIGHTGREEN       0x0D
-#define COLOR_LIGHTBLUE        0x0E
-#define COLOR_GRAY3            0x0F
-
-
-
-void __fastcall__ waitvblank (void);
-/* Wait for the vertical blanking */
+#define COLOR_BLACK             0x00
+#define COLOR_WHITE             0x01
+#define COLOR_RED               0x02
+#define COLOR_CYAN              0x03
+#define COLOR_VIOLET            0x04
+#define COLOR_GREEN             0x05
+#define COLOR_BLUE              0x06
+#define COLOR_YELLOW            0x07
+#define COLOR_ORANGE            0x08
+#define COLOR_BROWN             0x09
+#define COLOR_LIGHTRED          0x0A
+#define COLOR_GRAY1             0x0B
+#define COLOR_GRAY2             0x0C
+#define COLOR_LIGHTGREEN        0x0D
+#define COLOR_LIGHTBLUE         0x0E
+#define COLOR_GRAY3             0x0F
+
+/* Masks for joy_read */
+#define JOY_UP_MASK     0x10
+#define JOY_DOWN_MASK   0x20
+#define JOY_LEFT_MASK   0x40
+#define JOY_RIGHT_MASK  0x80
+#define JOY_BTN_1_MASK  0x01
+#define JOY_BTN_2_MASK  0x02
+#define JOY_BTN_3_MASK  0x04
+#define JOY_BTN_4_MASK  0x08
+
+#define JOY_BTN_A_MASK  JOY_BTN_1_MASK
+#define JOY_BTN_B_MASK  JOY_BTN_2_MASK
+#define JOY_SELECT_MASK JOY_BTN_3_MASK
+#define JOY_START_MASK  JOY_BTN_4_MASK
+
+#define JOY_BTN_A(v)    ((v) & JOY_BTN_A_MASK)
+#define JOY_BTN_B(v)    ((v) & JOY_BTN_B_MASK)
+#define JOY_SELECT(v)   ((v) & JOY_SELECT_MASK)
+#define JOY_START(v)    ((v) & JOY_START_MASK)
+
+/* Return codes of get_tv */
+#define TV_NTSC         0
+#define TV_PAL          1
+#define TV_OTHER        2
+
+/* No support for dynamically loadable drivers */
+#define DYN_DRV         0
+
+/* Define hardware */
+
+/* Picture Processing Unit */
+struct __ppu {
+    unsigned char control;
+    unsigned char mask;                 /* color; show sprites, background */
+      signed char volatile const status;
+    struct {
+        unsigned char address;
+        unsigned char data;
+    } sprite;
+    unsigned char scroll;
+    struct {
+        unsigned char address;
+        unsigned char data;
+    } vram;
+};
+#define PPU             (*(struct __ppu*)0x2000)
+#define SPRITE_DMA      (APU.sprite.dma)
+
+/* Audio Processing Unit */
+struct __apu {
+    struct {
+        unsigned char control;          /* duty, counter halt, volume/envelope */
+        unsigned char ramp;
+        unsigned char period_low;       /* timing */
+        unsigned char len_period_high;  /* length, timing */
+    } pulse[2];
+    struct {
+        unsigned char counter;          /* counter halt, linear counter */
+        unsigned char unused;
+        unsigned char period_low;       /* timing */
+        unsigned char len_period_high;  /* length, timing */
+    } triangle;
+    struct {
+        unsigned char control;          /* counter halt, volume/envelope */
+        unsigned char unused;
+        unsigned char period;           /* loop, timing */
+        unsigned char len;              /* length */
+    } noise;
+    struct {
+        unsigned char control;          /* IRQ, loop, rate */
+        unsigned char output;           /* output value */
+        unsigned char address;
+        unsigned char length;
+    } delta_mod;                        /* delta pulse-code modulation */
+    struct {
+        unsigned char dma;
+    } sprite;
+      signed char volatile status;
+    unsigned char unused;
+    unsigned char fcontrol;
+};
+#define APU             (*(struct __apu*)0x4000)
+
+#define JOYPAD          ((unsigned char volatile[2])0x4016)
+
+/* The addresses of the static drivers */
+extern void nes_stdjoy_joy[];       /* Referred to by joy_static_stddrv[] */
+extern void nes_64_56_2_tgi[];      /* Referred to by tgi_static_stddrv[] */
+
+
+
+void waitvsync (void);
+/* Wait for start of the next frame */
+
+unsigned char get_tv (void);
+/* Return the video mode the machine is using. */
 
 
 
 /* End of nes.h */
 #endif
-
-
-