/*
** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com)
**
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of version 2 of the GNU Library General 
** Public License as published by the Free Software Foundation.
**
** This program is distributed in the hope that it will be useful, 
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
** Library General Public License for more details.  To obtain a 
** copy of the GNU Library General Public License, write to the Free 
** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**
** Any permitted reproduction of these routines, in whole or in part,
** must bear this legend.
**
**
** nesinput.h
**
** Platform independent input definitions
** $Id: nesinput.h,v 1.1.1.1 2001/04/27 07:03:54 neil Exp $
*/

#ifndef _NESINPUT_H_
#define _NESINPUT_H_

/* NES control pad bitmasks */
#define  INP_PAD_A         0x01
#define  INP_PAD_B         0x02
#define  INP_PAD_SELECT    0x04
#define  INP_PAD_START     0x08
#define  INP_PAD_UP        0x10
#define  INP_PAD_DOWN      0x20
#define  INP_PAD_LEFT      0x40
#define  INP_PAD_RIGHT     0x80

#define  INP_ZAPPER_HIT    0x00
#define  INP_ZAPPER_MISS   0x08
#define  INP_ZAPPER_TRIG   0x10

#define  INP_JOYPAD0       0x0001
#define  INP_JOYPAD1       0x0002
#define  INP_ZAPPER        0x0004
#define  INP_POWERPAD      0x0008
#define  INP_ARKANOID      0x0010
#define  INP_VSDIPSW0      0x0020
#define  INP_VSDIPSW1      0x0040

/* upper byte is what's returned in D4, lower is D3 */
#define  INP_PPAD_1        0x0002
#define  INP_PPAD_2        0x0001
#define  INP_PPAD_3        0x0200
#define  INP_PPAD_4        0x0100
#define  INP_PPAD_5        0x0004
#define  INP_PPAD_6        0x0010
#define  INP_PPAD_7        0x0080
#define  INP_PPAD_8        0x0800
#define  INP_PPAD_9        0x0008
#define  INP_PPAD_10       0x0020
#define  INP_PPAD_11       0x0040
#define  INP_PPAD_12       0x0400


enum
{
   INP_STATE_BREAK,
   INP_STATE_MAKE
};

typedef struct nesinput_s
{
   int type;
   int data;
} nesinput_t;

#define  MAX_CONTROLLERS   32

extern uint8 input_get(int type);
extern void input_register(nesinput_t *input);
extern void input_event(nesinput_t *input, int state, int value);
extern void input_strobe(void);

#endif /* _NESINPUT_H_ */

/*
** $Log: nesinput.h,v $
** Revision 1.1.1.1  2001/04/27 07:03:54  neil
** initial
**
** Revision 1.1  2000/10/24 12:20:28  matt
** changed directory structure
**
** Revision 1.6  2000/09/10 23:25:02  matt
** minor changes
**
** Revision 1.5  2000/07/17 01:52:29  matt
** made sure last line of all source files is a newline
**
** Revision 1.4  2000/06/09 15:12:26  matt
** initial revision
**
*/
