/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *   Mupen64plus-input-sdl - plugin.h                                      *
 *   Mupen64Plus homepage: http://code.google.com/p/mupen64plus/           *
 *   Copyright (C) 2008-2009 Richard Goedeken                              *
 *   Copyright (C) 2008 Tillin9                                            *
 *   Copyright (C) 2002 Blight                                             *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   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 General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.          *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef __PLUGIN_H__
#define __PLUGIN_H__

#define M64P_PLUGIN_PROTOTYPES 1
#include "m64p_plugin.h"
#include "m64p_config.h"

// Some stuff from n-rage plugin
#define RD_GETSTATUS		0x00 // get status
#define RD_READKEYS			0x01 // read button values
#define RD_READPAK			0x02 // read from controllerpack
#define RD_WRITEPAK			0x03 // write to controllerpack
#define RD_RESETCONTROLLER	0xff // reset controller
#define RD_READEEPROM		0x04 // read eeprom
#define RD_WRITEEPROM		0x05 // write eeprom

#define RD_ABSOLUTE			0x01 // Default gamepad
#define RD_RELATIVE			0x02
#define RD_GAMEPAD			0x04 // Default gamepad
        //B2
#define RD_EEPROM			0x80 
#define RD_NOEEPROM			0x00

        //C3
        // No Plugin in Controller
#define RD_NOPLUGIN			0x00 // No pak in controller
#define RD_PLUGIN			0x01 // Any pak in controller
#define RD_NOTINITIALIZED	0x02 // Pak was uninitialized before call
#define RD_ADDRCRCERR		0x04 // Last I/O address was invalid
#define RD_EEPROMBUSY		0x80 // EEPROM busy

typedef struct
{
    CONTROL *control;               // pointer to CONTROL struct in Core library
	BOOL rumbling;
} SController;

/* global data definitions */
extern SController controller[4];   // 4 controllers

/* global function definitions */
extern void DebugMessage(int level, const char *message, ...);

#endif // __PLUGIN_H__
