mirror of
https://github.com/libretro/RetroArch
synced 2025-03-14 01:19:01 +00:00
Tests for pointer device and associated buttons. (#17130)
Sensor screen is extended with a pointer (a single white pixel) and a few indicators for the mouse and lightgun buttons. Pointer type is selectable from core options (mouse, lightgun, pointer, old relative lightgun). An extra square indicator shows when absolute pointer types get near the edge / to the very edge / return to 0,0 position.
This commit is contained in:
parent
320bd8b750
commit
ede9ddcd05
@ -61,6 +61,10 @@
|
||||
#define NETRETROPAD_SCREEN_KEYBOARD 1
|
||||
#define NETRETROPAD_SCREEN_SENSORS 2
|
||||
#define EVENT_RATE 60
|
||||
#define NETRETROPAD_MOUSE 3
|
||||
#define NETRETROPAD_POINTER 4
|
||||
#define NETRETROPAD_LIGHTGUN 5
|
||||
#define NETRETROPAD_LIGHTGUN_OLD 6
|
||||
|
||||
struct descriptor
|
||||
{
|
||||
@ -91,6 +95,12 @@ static bool lux_sensor_enabled = false;
|
||||
static float tilt_sensor_values[3] = {0};
|
||||
static float gyro_sensor_values[3] = {0};
|
||||
static float lux_sensor_value = 0.0f;
|
||||
static unsigned mouse_type = 0;
|
||||
static int pointer_x = 0;
|
||||
static int pointer_y = 0;
|
||||
static unsigned pointer_prev_x = 0;
|
||||
static unsigned pointer_prev_y = 0;
|
||||
static unsigned pointer_prev_color = 0;
|
||||
|
||||
static int s;
|
||||
static int port;
|
||||
@ -141,16 +151,60 @@ static struct descriptor analog_button = {
|
||||
.id_max = RETRO_DEVICE_ID_JOYPAD_R3
|
||||
};
|
||||
|
||||
static struct descriptor mouse = {
|
||||
.device = RETRO_DEVICE_MOUSE,
|
||||
.port_min = 0,
|
||||
.port_max = 0,
|
||||
.index_min = 0,
|
||||
.index_max = 0,
|
||||
.id_min = RETRO_DEVICE_ID_MOUSE_X,
|
||||
.id_max = RETRO_DEVICE_ID_MOUSE_BUTTON_5
|
||||
};
|
||||
|
||||
static struct descriptor pointer = {
|
||||
.device = RETRO_DEVICE_POINTER/* | 0x10000*/,
|
||||
.port_min = 0,
|
||||
.port_max = 0,
|
||||
.index_min = 0,
|
||||
.index_max = 0,
|
||||
.id_min = RETRO_DEVICE_ID_POINTER_X,
|
||||
.id_max = RETRO_DEVICE_ID_POINTER_COUNT
|
||||
};
|
||||
|
||||
static struct descriptor lightgun = {
|
||||
.device = RETRO_DEVICE_LIGHTGUN,
|
||||
.port_min = 0,
|
||||
.port_max = 0,
|
||||
.index_min = 0,
|
||||
.index_max = 0,
|
||||
.id_min = RETRO_DEVICE_ID_LIGHTGUN_TRIGGER,
|
||||
.id_max = RETRO_DEVICE_ID_LIGHTGUN_RELOAD
|
||||
};
|
||||
|
||||
static struct descriptor lightgun_old = {
|
||||
.device = RETRO_DEVICE_LIGHTGUN,
|
||||
.port_min = 0,
|
||||
.port_max = 0,
|
||||
.index_min = 0,
|
||||
.index_max = 0,
|
||||
.id_min = RETRO_DEVICE_ID_LIGHTGUN_X,
|
||||
.id_max = RETRO_DEVICE_ID_LIGHTGUN_Y
|
||||
};
|
||||
|
||||
/* Sensors are not fed to the descriptors. */
|
||||
|
||||
static struct descriptor *descriptors[] = {
|
||||
&joypad,
|
||||
&analog,
|
||||
&analog_button
|
||||
&analog_button,
|
||||
&mouse, /* NETRETROPAD_MOUSE */
|
||||
&pointer, /* NETRETROPAD_POINTER */
|
||||
&lightgun, /* NETRETROPAD_LIGHTGUN */
|
||||
&lightgun_old /* NETRETROPAD_LIGHTGUN_OLD */
|
||||
};
|
||||
|
||||
static uint16_t analog_item_colors[32];
|
||||
static uint16_t sensor_item_colors[70];
|
||||
static uint16_t sensor_item_colors[104];
|
||||
|
||||
static uint16_t combo_def[] =
|
||||
{
|
||||
@ -571,6 +625,23 @@ static void NETRETROPAD_CORE_PREFIX(update_keyboard_cb)(bool down, unsigned keyc
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned get_pixel_coordinate(int val, unsigned dimension)
|
||||
{
|
||||
int64_t longval = (val + 32768) * dimension;
|
||||
return (unsigned) (longval / 65536);
|
||||
}
|
||||
|
||||
static unsigned set_pixel(unsigned x, unsigned y, unsigned color)
|
||||
{
|
||||
unsigned old_color;
|
||||
uint16_t *pixel;
|
||||
pixel = frame_buf + y * 320 + x;
|
||||
old_color = *pixel;
|
||||
*pixel = color;
|
||||
return old_color;
|
||||
|
||||
}
|
||||
|
||||
static void retropad_update_input(void)
|
||||
{
|
||||
unsigned i;
|
||||
@ -585,6 +656,10 @@ static void retropad_update_input(void)
|
||||
/* Get current descriptor */
|
||||
struct descriptor *desc = descriptors[i];
|
||||
|
||||
/* Only query one mouse type device */
|
||||
if ( i > 2 && i != mouse_type)
|
||||
continue;
|
||||
|
||||
/* Go through range of ports/indices/IDs */
|
||||
for (port = desc->port_min; port <= desc->port_max; port++)
|
||||
{
|
||||
@ -618,7 +693,42 @@ static void retropad_update_input(void)
|
||||
/* Update state */
|
||||
desc->value[offset] = state;
|
||||
|
||||
/* Do not send analog button state - RA side is not prepared to receive it */
|
||||
if (i>2)
|
||||
{
|
||||
/* NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_DEBUG, "Mouse state: %d %d %d (%d %d)\n",i,id, (int16_t)state,pointer_x,pointer_y); */
|
||||
if (mouse_type == NETRETROPAD_MOUSE || mouse_type == NETRETROPAD_LIGHTGUN_OLD)
|
||||
{
|
||||
if (id == RETRO_DEVICE_ID_MOUSE_X || id == RETRO_DEVICE_ID_LIGHTGUN_X)
|
||||
{
|
||||
int32_t large = pointer_x + (int16_t)state*204;
|
||||
if (large < -32768)
|
||||
pointer_x = -32768;
|
||||
else if (large > 32767)
|
||||
pointer_x = 32767;
|
||||
else
|
||||
pointer_x = (int16_t) large;
|
||||
}
|
||||
else if (id == RETRO_DEVICE_ID_MOUSE_Y || id == RETRO_DEVICE_ID_LIGHTGUN_Y)
|
||||
{
|
||||
int32_t large = pointer_y + (int16_t)state*273;
|
||||
if (large < -32768)
|
||||
pointer_y = -32768;
|
||||
else if (large > 32767)
|
||||
pointer_y = 32767;
|
||||
else
|
||||
pointer_y = (int16_t) large;
|
||||
}
|
||||
}
|
||||
else if (mouse_type == NETRETROPAD_POINTER || mouse_type == NETRETROPAD_LIGHTGUN)
|
||||
{
|
||||
if (id == RETRO_DEVICE_ID_POINTER_X || id == RETRO_DEVICE_ID_LIGHTGUN_SCREEN_X)
|
||||
pointer_x = (int16_t)state;
|
||||
else if (id == RETRO_DEVICE_ID_POINTER_Y || id == RETRO_DEVICE_ID_LIGHTGUN_SCREEN_Y)
|
||||
pointer_y = (int16_t)state;
|
||||
}
|
||||
}
|
||||
|
||||
/* Do not send extra descriptor state - RA side is not prepared to receive it */
|
||||
if (i>1)
|
||||
continue;
|
||||
|
||||
@ -674,6 +784,7 @@ void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
|
||||
{ "net_retropad_ip_octet4", "IP address part 4; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
|
||||
{ "net_retropad_screen", "Start screen; Retropad|Keyboard tester|Sensor tester" },
|
||||
{ "net_retropad_hide_analog_mismatch", "Hide mismatching analog button inputs; True|False" },
|
||||
{ "net_retropad_pointer_test", "Pointer test; Off|Mouse|Pointer|Lightgun|Old lightgun" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
|
||||
@ -695,7 +806,7 @@ void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
|
||||
|
||||
static void netretropad_check_variables(void)
|
||||
{
|
||||
struct retro_variable var, var2, var3, var4, port_var, screen_var, hide_a_var;
|
||||
struct retro_variable var, var2, var3, var4, port_var, screen_var, hide_a_var, mouse_var;
|
||||
var.key = "net_retropad_ip_octet1";
|
||||
var2.key = "net_retropad_ip_octet2";
|
||||
var3.key = "net_retropad_ip_octet3";
|
||||
@ -703,6 +814,7 @@ static void netretropad_check_variables(void)
|
||||
port_var.key = "net_retropad_port";
|
||||
screen_var.key = "net_retropad_screen";
|
||||
hide_a_var.key = "net_retropad_hide_analog_mismatch";
|
||||
mouse_var.key = "net_retropad_pointer_test";
|
||||
|
||||
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var);
|
||||
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var2);
|
||||
@ -711,6 +823,7 @@ static void netretropad_check_variables(void)
|
||||
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &port_var);
|
||||
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &screen_var);
|
||||
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &hide_a_var);
|
||||
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &mouse_var);
|
||||
|
||||
snprintf(server, sizeof(server), "%s.%s.%s.%s", var.value, var2.value, var3.value, var4.value);
|
||||
port = atoi(port_var.value);
|
||||
@ -725,6 +838,17 @@ static void netretropad_check_variables(void)
|
||||
else
|
||||
hide_analog_mismatch = false;
|
||||
|
||||
if (mouse_var.value && strstr(mouse_var.value,"Mouse"))
|
||||
mouse_type = NETRETROPAD_MOUSE;
|
||||
else if (mouse_var.value && strstr(mouse_var.value,"Pointer"))
|
||||
mouse_type = NETRETROPAD_POINTER;
|
||||
else if (mouse_var.value && strstr(mouse_var.value,"Lightgun"))
|
||||
mouse_type = NETRETROPAD_LIGHTGUN;
|
||||
else if (mouse_var.value && strstr(mouse_var.value,"Old lightgun"))
|
||||
mouse_type = NETRETROPAD_LIGHTGUN_OLD;
|
||||
else
|
||||
mouse_type = 0;
|
||||
|
||||
}
|
||||
|
||||
void NETRETROPAD_CORE_PREFIX(retro_set_audio_sample)(retro_audio_sample_t cb)
|
||||
@ -910,7 +1034,93 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
|
||||
sensor_item_colors[median_index] = (uint16_t)(fabsf(32*4*value)) << 11;
|
||||
}
|
||||
}
|
||||
|
||||
if (mouse_type == NETRETROPAD_MOUSE)
|
||||
{
|
||||
int offset;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_LEFT);
|
||||
sensor_item_colors[80] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_MIDDLE);
|
||||
sensor_item_colors[81] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_RIGHT);
|
||||
sensor_item_colors[82] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP);
|
||||
sensor_item_colors[83] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN);
|
||||
sensor_item_colors[84] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP);
|
||||
sensor_item_colors[85] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN);
|
||||
sensor_item_colors[86] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_BUTTON_4);
|
||||
sensor_item_colors[88] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_BUTTON_5);
|
||||
sensor_item_colors[89] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
}
|
||||
else if (mouse_type == NETRETROPAD_LIGHTGUN)
|
||||
{
|
||||
int offset;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_AUX_A);
|
||||
sensor_item_colors[70] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_AUX_B);
|
||||
sensor_item_colors[71] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_AUX_C);
|
||||
sensor_item_colors[72] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_TRIGGER);
|
||||
sensor_item_colors[73] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_RELOAD);
|
||||
sensor_item_colors[74] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_START);
|
||||
sensor_item_colors[75] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_SELECT);
|
||||
sensor_item_colors[76] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN);
|
||||
sensor_item_colors[77] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_DPAD_UP);
|
||||
sensor_item_colors[94] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_DPAD_DOWN);
|
||||
sensor_item_colors[95] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_DPAD_LEFT);
|
||||
sensor_item_colors[96] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_DPAD_RIGHT);
|
||||
sensor_item_colors[97] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||
|
||||
}
|
||||
if (mouse_type == NETRETROPAD_POINTER || mouse_type == NETRETROPAD_LIGHTGUN)
|
||||
{
|
||||
sensor_item_colors[90] = (pointer_x == -32768) ? 0xA000 : 0x0000;
|
||||
sensor_item_colors[100] = (pointer_x < -32700) ? 0xA000 : 0x0000;
|
||||
sensor_item_colors[92] = (pointer_x == 32767) ? 0xA000 : 0x0000;
|
||||
sensor_item_colors[102] = (pointer_x > 32700) ? 0xA000 : 0x0000;
|
||||
sensor_item_colors[91] = (pointer_y == -32768) ? 0xA000 : 0x0000;
|
||||
sensor_item_colors[101] = (pointer_y < -32700) ? 0xA000 : 0x0000;
|
||||
sensor_item_colors[93] = (pointer_y == 32767) ? 0xA000 : 0x0000;
|
||||
sensor_item_colors[103] = (pointer_y > 32700) ? 0xA000 : 0x0000;
|
||||
}
|
||||
if (mouse_type != 0)
|
||||
sensor_item_colors[87] = (pointer_x == 0 && pointer_y == 0) ? 0xA000 : 0x0000;
|
||||
|
||||
/* Input test section start. */
|
||||
|
||||
@ -1116,6 +1326,9 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
|
||||
}
|
||||
else if (current_screen == NETRETROPAD_SCREEN_SENSORS)
|
||||
{
|
||||
unsigned pointer_x_coord = get_pixel_coordinate(pointer_x, 320);
|
||||
unsigned pointer_y_coord = get_pixel_coordinate(pointer_y, 240);
|
||||
|
||||
for (rle = 0; rle < ARRAY_SIZE(sensor_buttons); )
|
||||
{
|
||||
unsigned runs;
|
||||
@ -1144,8 +1357,16 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
|
||||
|
||||
pixel += 65;
|
||||
}
|
||||
}
|
||||
|
||||
if(pointer_x_coord != pointer_prev_x || pointer_y_coord != pointer_prev_y)
|
||||
{
|
||||
set_pixel(pointer_prev_x, pointer_prev_y, pointer_prev_color);
|
||||
pointer_prev_color = set_pixel(pointer_x_coord, pointer_y_coord, 0xffff);
|
||||
pointer_prev_x = pointer_x_coord;
|
||||
pointer_prev_y = pointer_y_coord;
|
||||
}
|
||||
}
|
||||
|
||||
NETRETROPAD_CORE_PREFIX(video_cb)(frame_buf, 320, 240, 640);
|
||||
retro_sleep(4);
|
||||
}
|
||||
|
@ -700,23 +700,23 @@ static uint16_t sensor_buttons[] =
|
||||
/* 102 */ 1, 255,
|
||||
/* 103 */ 1, 255,
|
||||
/* 104 */ 1, 255,
|
||||
/* 105 */ 1, 255,
|
||||
/* 106 */ 1, 255,
|
||||
/* 107 */ 1, 255,
|
||||
/* 108 */ 1, 255,
|
||||
/* 109 */ 1, 255,
|
||||
/* 110 */ 1, 255,
|
||||
/* 111 */ 1, 255,
|
||||
/* 112 */ 1, 255,
|
||||
/* 113 */ 1, 255,
|
||||
/* 114 */ 1, 255,
|
||||
/* 115 */ 1, 255,
|
||||
/* 116 */ 1, 255,
|
||||
/* 117 */ 1, 255,
|
||||
/* 118 */ 1, 255,
|
||||
/* 119 */ 1, 255,
|
||||
/* 120 */ 1, 255,
|
||||
/* 121 */ 1, 255,
|
||||
/* 105 */ 3, 220, 91, 15, 20,
|
||||
/* 106 */ 31, 20, 70, 4, 5, 71, 4, 6, 72, 4, 4, 73, 6, 4, 74, 4, 6, 75, 3, 11, 76, 3, 11, 77, 3, 59, 94, 2, 8, 95, 2, 8, 96, 1, 8, 97, 1, 32, 90, 1, 1, 101, 13, 1, 92, 1, 19,
|
||||
/* 107 */ 45, 19, 70, 2, 2, 70, 2, 4, 71, 2, 2, 71, 1, 4, 72, 2, 7, 73, 6, 4, 74, 2, 2, 74, 1, 4, 75, 1, 6, 75, 3, 4, 76, 1, 6, 76, 3, 4, 77, 1, 2, 77, 2, 57, 94, 4, 7, 95, 2, 7, 96, 2, 8, 97, 2, 31, 90, 1, 0, 100, 1, 13, 102, 1, 0, 92, 1, 19,
|
||||
/* 108 */ 43, 19, 70, 2, 2, 70, 2, 4, 71, 4, 5, 72, 2, 9, 73, 2, 6, 74, 4, 5, 75, 4, 4, 75, 1, 5, 76, 4, 3, 76, 1, 6, 77, 1, 1, 77, 1, 1, 77, 1, 56, 94, 6, 6, 95, 2, 6, 96, 5, 4, 97, 5, 30, 90, 1, 0, 100, 1, 13, 102, 1, 0, 92, 1, 19,
|
||||
/* 109 */ 41, 19, 70, 6, 4, 71, 4, 5, 72, 2, 9, 73, 2, 6, 74, 4, 6, 75, 4, 3, 75, 1, 6, 76, 4, 2, 76, 2, 5, 77, 1, 1, 77, 1, 1, 77, 1, 58, 94, 2, 6, 95, 6, 4, 96, 5, 4, 97, 5, 30, 90, 1, 0, 100, 1, 13, 102, 1, 0, 92, 1, 19,
|
||||
/* 110 */ 45, 19, 70, 2, 2, 70, 2, 4, 71, 2, 2, 71, 1, 4, 72, 2, 9, 73, 2, 6, 74, 2, 2, 74, 1, 8, 75, 1, 3, 75, 1, 9, 76, 1, 2, 76, 1, 6, 77, 2, 2, 77, 1, 58, 94, 2, 7, 95, 4, 6, 96, 2, 8, 97, 2, 31, 90, 1, 0, 100, 1, 13, 102, 1, 0, 92, 1, 19,
|
||||
/* 111 */ 43, 19, 70, 2, 2, 70, 2, 4, 71, 4, 6, 72, 4, 6, 73, 2, 6, 74, 2, 2, 74, 1, 5, 75, 3, 4, 75, 1, 6, 76, 3, 3, 76, 3, 5, 77, 3, 59, 94, 2, 8, 95, 2, 8, 96, 1, 8, 97, 1, 32, 90, 1, 0, 100, 1, 5, 87, 3, 5, 102, 1, 0, 92, 1, 19,
|
||||
/* 112 */ 13, 219, 90, 1, 0, 100, 1, 4, 87, 1, 2, 87, 2, 4, 102, 1, 0, 92, 1, 19,
|
||||
/* 113 */ 15, 219, 90, 1, 0, 100, 1, 4, 87, 1, 1, 87, 1, 1, 87, 1, 4, 102, 1, 0, 92, 1, 19,
|
||||
/* 114 */ 15, 219, 90, 1, 0, 100, 1, 4, 87, 1, 1, 87, 1, 1, 87, 1, 4, 102, 1, 0, 92, 1, 19,
|
||||
/* 115 */ 43, 19, 80, 2, 8, 81, 1, 4, 81, 1, 4, 82, 4, 4, 83, 2, 2, 83, 2, 4, 84, 4, 5, 85, 2, 1, 85, 1, 1, 85, 1, 8, 86, 2, 1, 86, 1, 1, 86, 1, 73, 88, 1, 5, 89, 6, 48, 90, 1, 0, 100, 1, 4, 87, 2, 2, 87, 1, 4, 102, 1, 0, 92, 1, 19,
|
||||
/* 116 */ 49, 19, 80, 2, 8, 81, 6, 4, 82, 2, 2, 82, 1, 3, 83, 2, 2, 83, 2, 4, 84, 2, 2, 84, 1, 4, 85, 2, 1, 85, 1, 1, 85, 1, 2, 85, 1, 5, 86, 2, 1, 86, 1, 1, 86, 1, 1, 86, 1, 1, 86, 1, 68, 88, 2, 5, 89, 1, 53, 90, 1, 0, 100, 1, 5, 87, 3, 5, 102, 1, 0, 92, 1, 19,
|
||||
/* 117 */ 45, 19, 80, 2, 8, 81, 6, 4, 82, 4, 4, 83, 2, 2, 83, 2, 4, 84, 2, 2, 84, 1, 4, 85, 2, 1, 85, 1, 1, 85, 1, 2, 85, 1, 5, 86, 2, 1, 86, 1, 1, 86, 1, 1, 86, 2, 68, 88, 1, 1, 88, 1, 5, 89, 5, 49, 90, 1, 0, 100, 1, 13, 102, 1, 0, 92, 1, 19,
|
||||
/* 118 */ 47, 19, 80, 2, 8, 81, 2, 2, 81, 2, 4, 82, 2, 2, 82, 1, 3, 83, 2, 2, 83, 2, 4, 84, 2, 2, 84, 1, 4, 85, 2, 1, 85, 1, 1, 85, 1, 2, 85, 1, 5, 86, 2, 1, 86, 1, 1, 86, 1, 1, 86, 1, 68, 88, 5, 4, 89, 6, 48, 90, 1, 0, 100, 1, 13, 102, 1, 0, 92, 1, 19,
|
||||
/* 119 */ 45, 19, 80, 2, 8, 81, 2, 2, 81, 2, 4, 82, 2, 2, 82, 1, 3, 83, 6, 4, 84, 2, 2, 84, 1, 4, 85, 2, 1, 85, 1, 1, 85, 1, 2, 85, 1, 5, 86, 2, 1, 86, 1, 1, 86, 1, 1, 86, 1, 71, 88, 1, 10, 89, 1, 48, 90, 1, 0, 100, 1, 13, 102, 1, 0, 92, 1, 19,
|
||||
/* 120 */ 37, 19, 80, 6, 4, 81, 2, 2, 81, 2, 4, 82, 2, 2, 82, 1, 4, 83, 4, 5, 84, 4, 6, 85, 2, 1, 85, 1, 3, 85, 1, 6, 86, 2, 1, 86, 1, 2, 86, 1, 71, 88, 1, 5, 89, 5, 49, 90, 1, 1, 103, 13, 1, 92, 1, 19,
|
||||
/* 121 */ 3, 220, 93, 15, 20,
|
||||
/* 122 */ 1, 255,
|
||||
/* 123 */ 1, 255,
|
||||
/* 124 */ 1, 255,
|
||||
|
Loading…
x
Reference in New Issue
Block a user