66#include "../inc/global.h"
77//-----------------------------------------------------
88
9+
10+ s16 readX ,readY ; //_JOYupdateMouse(); Coordenadas absolutas del puntero raton
11+
912//Definiciones de las funciones---------------------------------------------------
1013static void inputHandler (u16 ,u16 ,u16 );
1114
@@ -28,10 +31,12 @@ void main(u16 hard){
2831 ScreenTY = 8 + (ScreenY * 8 );//224/240
2932 ScreenMY = ScreenTY /2 ;//112/120
3033 //--------------------------------------
31-
32- padtipo = JOY_getPortType (PORT_1 );
34+
35+ padtipo = JOY_getPortType (PORT_1 ); JOY_setSupport ( PORT_1 , JOY_SUPPORT_6BTN );
3336 padraton = JOY_getPortType (PORT_2 );
3437 if (padraton == PORT_TYPE_MOUSE ) JOY_setSupport (PORT_2 , JOY_SUPPORT_MOUSE );
38+ else JOY_setSupport (PORT_1 ,JOY_SUPPORT_3BTN );
39+
3540 SYS_doVBlankProcess (); // Necesario para detecte el JoypadType
3641 pad6 = JOY_getJoypadType (JOY_1 );
3742 JOY_setEventHandler (& inputHandler );
@@ -71,25 +76,36 @@ void inputHandler(u16 joy, u16 state, u16 changed){
7176
7277 BUTTONS [0 ]= changed ;
7378
74- if (joy == JOY_1 ){
75-
79+ if (joy == JOY_1 ){ //PORT 1
7680 BUTTONS [1 ]= changed & BUTTON_UP ;
7781 BUTTONS [2 ]= changed & BUTTON_DOWN ;
7882 BUTTONS [3 ]= changed & BUTTON_LEFT ;
7983 BUTTONS [4 ]= changed & BUTTON_RIGHT ;
8084
85+ BUTTONS [5 ]= changed & BUTTON_A ;//Boton Central
86+ BUTTONS [6 ]= changed & BUTTON_B ;//Boton Izquiero
87+ BUTTONS [7 ]= changed & BUTTON_C ;//Boton Derecho
88+
8189 BUTTONS [8 ]= changed & BUTTON_START ;
8290 if (pad6 == 1 ){
8391 BUTTONS [9 ]= changed & BUTTON_X ;
8492 BUTTONS [10 ]= changed & BUTTON_Y ;
8593 BUTTONS [11 ]= changed & BUTTON_Z ;
8694 BUTTONS [12 ]= changed & BUTTON_MODE ;
8795 }
96+ }else { //PORT 2
97+
98+ if (padraton == PORT_TYPE_PAD ){
99+ BUTTONS [13 ]= changed & BUTTON_UP ;
100+ BUTTONS [14 ]= changed & BUTTON_DOWN ;
101+ BUTTONS [15 ]= changed & BUTTON_LEFT ;
102+ BUTTONS [16 ]= changed & BUTTON_RIGHT ;
103+ }
104+
105+ BUTTONS [17 ]= changed & BUTTON_A ;//Boton Central
106+ BUTTONS [18 ]= changed & BUTTON_B ;//Boton Izquiero
107+ BUTTONS [19 ]= changed & BUTTON_C ;//Boton Derecho
88108 }
89- //necesario para que el mouse puerto 2 funcione los 3 botones
90- BUTTONS [5 ]= changed & BUTTON_A ;//Boton Central
91- BUTTONS [6 ]= changed & BUTTON_B ;//Boton Izquiero
92- BUTTONS [7 ]= changed & BUTTON_C ;//Boton Derecho
93109
94110}
95111
@@ -102,15 +118,29 @@ void _JOYsetXY ( s16 x, s16 y )
102118 readedX = JOY_readJoypadX (JOY_2 );
103119 readedY = JOY_readJoypadY (JOY_2 );
104120
121+ readX = readY = 0 ;
122+
105123 joypos .x = x ;
106124 joypos .y = y ;
125+
126+ SPR_setPosition (cursorsp ,x ,y );
107127}
108128
109129void _JOYupdateMouse ()
110130{
111- s16 readX = JOY_readJoypadX (JOY_2 );
112- s16 readY = JOY_readJoypadY (JOY_2 );
113-
131+ if (padraton == PORT_TYPE_MOUSE ){
132+ readX = JOY_readJoypadX (JOY_2 );
133+ readY = JOY_readJoypadY (JOY_2 );
134+ }else {
135+ //BUG Solo en emulador GENS! No funciona los diagonales!
136+ //usando un Gamepad!! teclado si funciona!
137+ if (BUTTONS [13 ]) readY -= 2 ;
138+ else if (BUTTONS [14 ]) readY += 2 ;
139+
140+ if (BUTTONS [15 ]) readX -= 2 ;
141+ else if (BUTTONS [16 ]) readX += 2 ;
142+ }
143+
114144 joypos .x -= readedX - readX ;
115145 joypos .y -= readedY - readY ;
116146
@@ -122,5 +152,7 @@ void _JOYupdateMouse ()
122152
123153 readedX = readX ;
124154 readedY = readY ;
155+
156+ SPR_setPosition (cursorsp ,joypos .x ,joypos .y );
125157}
126158
0 commit comments