📄 ov518_decomp.c
字号:
/* OV518 Decompression Support Module (No-MMX version)
*
* Copyright (c) 2002 Mark W. McClelland. All rights reserved.
* Fast integer iDCT by Yuri van Oers <yvanoers AT xs4all.nl>
* Original OV511 decompression code Copyright 1998-2000 OmniVision Technologies
*
* Please see the file: linux/Documentation/usb/ov511.txt
* and the web site at: http://alpha.dyndns.org/ov511/
* for more info.
*
* 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; version 2 of the License.
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#include <linux/config.h>
#if defined(OUTSIDE_KERNEL)
#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS)
#define MODVERSIONS
#endif
#include <linux/version.h>
#ifdef MODVERSIONS
#include <linux/modversions.h>
#endif
#else
#include <linux/version.h>
#endif
#include <linux/module.h>
#include <linux/init.h>
#include "ov511.h"
/******************************************************************************
* Compile-time Options
******************************************************************************/
/* Defining APPROXIMATE_MUL_BY_SHIFT increases performance by approximation
* the multiplications by shifts. I think there's no change in the
* calculated picture, but I'm not sure, so the choice is still in here. */
#undef APPROXIMATE_MUL_BY_SHIFT
/* Allows printing the dynamic quantization tables (only if debug >= 5) */
#define PRINT_QT
/******************************************************************************
* Version Information
******************************************************************************/
#define DRIVER_VERSION "v1.3"
#define DRIVER_AUTHOR "Mark McClelland <mark@alpha.dyndns.org>, \
Yuri van Oers <yvanoers AT xs4all.nl>, OmniVision Technologies \
<http://www.ovt.com/>"
#define DRIVER_DESC "OV518 Decompression Module"
/******************************************************************************
* Decompression Module Interface Constants
******************************************************************************/
static const int interface_ver = DECOMP_INTERFACE_VER;
static const int ov518 = 1;
static const int mmx = 0;
/******************************************************************************
* Module Features
******************************************************************************/
static int debug = 0;
static int nouv = 1;
/* Static quantization. This uses a fixed quantization table versus the one
* that is normally embedded in the data. Define this if you see very bad
* contrast or "blockiness" in the decompressed output. */
static int staticquant = 0;
MODULE_PARM(debug, "i");
MODULE_PARM_DESC(debug,
"Debug level: 0=none, 1=inits, 2=warning, 3=config, 4=functions, 5=max");
MODULE_PARM(nouv, "i");
MODULE_PARM_DESC(nouv, "Disable color (default:on; it isn't working yet)");
MODULE_PARM(staticquant, "i");
MODULE_PARM_DESC(staticquant, "Static quantization (default:off)");
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
#if defined(MODULE_LICENSE) /* Introduced in ~2.4.10 */
MODULE_LICENSE("GPL");
#endif
/******************************************************************************
* Prototypes
******************************************************************************/
extern int ov511_register_decomp_module(int ver, struct ov51x_decomp_ops *ops,
int ov518, int mmx);
extern void ov511_deregister_decomp_module(int ov518, int mmx);
/******************************************************************************
* Local Data Types
******************************************************************************/
/* Make sure this remains naturally aligned and 2^n bytes in size */
typedef struct tree_node {
short left; /* Pointer to left child node */
short right; /* Pointer to right child node */
signed char depth; /* Depth (starting at 1) if leaf, else -1 */
signed char coeffbits; /* Size of coefficient data, or zero if none */
signed char skip; /* Number of zero coefficients. Unused w/ DC */
char padding; /* Pad out to 8 bytes */
} tree_node;
typedef struct CompInfo {
int bytes; /* Number of processed input bytes */
int bits; /* Number of unprocessed input bits */
int rawLen; /* Total number of bytes in input buffer */
unsigned char *qt; /* Current quantization table */
} CompInfo;
/******************************************************************************
* Constant Data Definitions
******************************************************************************/
/* Zig-Zag Table */
static const unsigned char ZigZag518[] = {
0x00, 0x02, 0x03, 0x09,
0x01, 0x04, 0x08, 0x0a,
0x05, 0x07, 0x0b, 0x11,
0x06, 0x0c, 0x10, 0x12,
0x0d, 0x0f, 0x13, 0x19,
0x0e, 0x14, 0x18, 0x1a,
0x15, 0x17, 0x1b, 0x1e,
0x16, 0x1c, 0x1d, 0x1f
};
/* Huffman trees */
static const tree_node treeYAC[] = {
{ 1, 4, -1, 0, -1, 0}, { 2, 3, -1, 0, -1, 0},
{ -1, -1, 2, 1, 0, 0}, { -1, -1, 2, 2, 0, 0},
{ 5, 9, -1, 0, -1, 0}, { 6, 7, -1, 0, -1, 0},
{ -1, -1, 3, 3, 0, 0}, {323, 8, -1, 0, -1, 0},
{ -1, -1, 4, 4, 0, 0}, { 10, 13, -1, 0, -1, 0},
{ 38, 11, -1, 0, -1, 0}, { 12, 39, -1, 0, -1, 0},
{ -1, -1, 5, 5, 0, 0}, { 59, 14, -1, 0, -1, 0},
{ 15, 18, -1, 0, -1, 0}, { 16, 113, -1, 0, -1, 0},
{ 17, 40, -1, 0, -1, 0}, { -1, -1, 7, 6, 0, 0},
{ 19, 22, -1, 0, -1, 0}, { 20, 41, -1, 0, -1, 0},
{ 21, 61, -1, 0, -1, 0}, { -1, -1, 8, 7, 0, 0},
{ 23, 27, -1, 0, -1, 0}, {169, 24, -1, 0, -1, 0},
{208, 25, -1, 0, -1, 0}, { 26, 62, -1, 0, -1, 0},
{ -1, -1, 10, 8, 0, 0}, { 44, 28, -1, 0, -1, 0},
{ 63, 29, -1, 0, -1, 0}, { 30, 191, -1, 0, -1, 0},
{ 31, 119, -1, 0, -1, 0}, { 32, 82, -1, 0, -1, 0},
{ 33, 55, -1, 0, -1, 0}, { 34, 48, -1, 0, -1, 0},
{171, 35, -1, 0, -1, 0}, { 36, 37, -1, 0, -1, 0},
{ -1, -1, 16, 9, 0, 0}, { -1, -1, 16, 10, 0, 0},
{ -1, -1, 4, 1, 1, 0}, { -1, -1, 5, 2, 1, 0},
{ -1, -1, 7, 3, 1, 0}, {151, 42, -1, 0, -1, 0},
{ 43, 79, -1, 0, -1, 0}, { -1, -1, 9, 4, 1, 0},
{ 96, 45, -1, 0, -1, 0}, {246, 46, -1, 0, -1, 0},
{ 47, 115, -1, 0, -1, 0}, { -1, -1, 11, 5, 1, 0},
{ 49, 52, -1, 0, -1, 0}, { 50, 51, -1, 0, -1, 0},
{ -1, -1, 16, 6, 1, 0}, { -1, -1, 16, 7, 1, 0},
{ 53, 54, -1, 0, -1, 0}, { -1, -1, 16, 8, 1, 0},
{ -1, -1, 16, 9, 1, 0}, { 56, 71, -1, 0, -1, 0},
{ 57, 68, -1, 0, -1, 0}, { 58, 67, -1, 0, -1, 0},
{ -1, -1, 16, 10, 1, 0}, { 60, 77, -1, 0, -1, 0},
{ -1, -1, 5, 1, 2, 0}, { -1, -1, 8, 2, 2, 0},
{ -1, -1, 10, 3, 2, 0}, {265, 64, -1, 0, -1, 0},
{ 65, 134, -1, 0, -1, 0}, { 66, 80, -1, 0, -1, 0},
{ -1, -1, 12, 4, 2, 0}, { -1, -1, 16, 5, 2, 0},
{ 69, 70, -1, 0, -1, 0}, { -1, -1, 16, 6, 2, 0},
{ -1, -1, 16, 7, 2, 0}, { 72, 75, -1, 0, -1, 0},
{ 73, 74, -1, 0, -1, 0}, { -1, -1, 16, 8, 2, 0},
{ -1, -1, 16, 9, 2, 0}, { 76, 81, -1, 0, -1, 0},
{ -1, -1, 16, 10, 2, 0}, { 78, 95, -1, 0, -1, 0},
{ -1, -1, 6, 1, 3, 0}, { -1, -1, 9, 2, 3, 0},
{ -1, -1, 12, 3, 3, 0}, { -1, -1, 16, 4, 3, 0},
{ 83, 101, -1, 0, -1, 0}, { 84, 91, -1, 0, -1, 0},
{ 85, 88, -1, 0, -1, 0}, { 86, 87, -1, 0, -1, 0},
{ -1, -1, 16, 5, 3, 0}, { -1, -1, 16, 6, 3, 0},
{ 89, 90, -1, 0, -1, 0}, { -1, -1, 16, 7, 3, 0},
{ -1, -1, 16, 8, 3, 0}, { 92, 98, -1, 0, -1, 0},
{ 93, 94, -1, 0, -1, 0}, { -1, -1, 16, 9, 3, 0},
{ -1, -1, 16, 10, 3, 0}, { -1, -1, 6, 1, 4, 0},
{ 97, 225, -1, 0, -1, 0}, { -1, -1, 10, 2, 4, 0},
{ 99, 100, -1, 0, -1, 0}, { -1, -1, 16, 3, 4, 0},
{ -1, -1, 16, 4, 4, 0}, {102, 109, -1, 0, -1, 0},
{103, 106, -1, 0, -1, 0}, {104, 105, -1, 0, -1, 0},
{ -1, -1, 16, 5, 4, 0}, { -1, -1, 16, 6, 4, 0},
{107, 108, -1, 0, -1, 0}, { -1, -1, 16, 7, 4, 0},
{ -1, -1, 16, 8, 4, 0}, {110, 116, -1, 0, -1, 0},
{111, 112, -1, 0, -1, 0}, { -1, -1, 16, 9, 4, 0},
{ -1, -1, 16, 10, 4, 0}, {114, 133, -1, 0, -1, 0},
{ -1, -1, 7, 1, 5, 0}, { -1, -1, 11, 2, 5, 0},
{117, 118, -1, 0, -1, 0}, { -1, -1, 16, 3, 5, 0},
{ -1, -1, 16, 4, 5, 0}, {120, 156, -1, 0, -1, 0},
{121, 139, -1, 0, -1, 0}, {122, 129, -1, 0, -1, 0},
{123, 126, -1, 0, -1, 0}, {124, 125, -1, 0, -1, 0},
{ -1, -1, 16, 5, 5, 0}, { -1, -1, 16, 6, 5, 0},
{127, 128, -1, 0, -1, 0}, { -1, -1, 16, 7, 5, 0},
{ -1, -1, 16, 8, 5, 0}, {130, 136, -1, 0, -1, 0},
{131, 132, -1, 0, -1, 0}, { -1, -1, 16, 9, 5, 0},
{ -1, -1, 16, 10, 5, 0}, { -1, -1, 7, 1, 6, 0},
{135, 152, -1, 0, -1, 0}, { -1, -1, 12, 2, 6, 0},
{137, 138, -1, 0, -1, 0}, { -1, -1, 16, 3, 6, 0},
{ -1, -1, 16, 4, 6, 0}, {140, 147, -1, 0, -1, 0},
{141, 144, -1, 0, -1, 0}, {142, 143, -1, 0, -1, 0},
{ -1, -1, 16, 5, 6, 0}, { -1, -1, 16, 6, 6, 0},
{145, 146, -1, 0, -1, 0}, { -1, -1, 16, 7, 6, 0},
{ -1, -1, 16, 8, 6, 0}, {148, 153, -1, 0, -1, 0},
{149, 150, -1, 0, -1, 0}, { -1, -1, 16, 9, 6, 0},
{ -1, -1, 16, 10, 6, 0}, { -1, -1, 8, 1, 7, 0},
{ -1, -1, 12, 2, 7, 0}, {154, 155, -1, 0, -1, 0},
{ -1, -1, 16, 3, 7, 0}, { -1, -1, 16, 4, 7, 0},
{157, 175, -1, 0, -1, 0}, {158, 165, -1, 0, -1, 0},
{159, 162, -1, 0, -1, 0}, {160, 161, -1, 0, -1, 0},
{ -1, -1, 16, 5, 7, 0}, { -1, -1, 16, 6, 7, 0},
{163, 164, -1, 0, -1, 0}, { -1, -1, 16, 7, 7, 0},
{ -1, -1, 16, 8, 7, 0}, {166, 172, -1, 0, -1, 0},
{167, 168, -1, 0, -1, 0}, { -1, -1, 16, 9, 7, 0},
{ -1, -1, 16, 10, 7, 0}, {170, 187, -1, 0, -1, 0},
{ -1, -1, 9, 1, 8, 0}, { -1, -1, 15, 2, 8, 0},
{173, 174, -1, 0, -1, 0}, { -1, -1, 16, 3, 8, 0},
{ -1, -1, 16, 4, 8, 0}, {176, 183, -1, 0, -1, 0},
{177, 180, -1, 0, -1, 0}, {178, 179, -1, 0, -1, 0},
{ -1, -1, 16, 5, 8, 0}, { -1, -1, 16, 6, 8, 0},
{181, 182, -1, 0, -1, 0}, { -1, -1, 16, 7, 8, 0},
{ -1, -1, 16, 8, 8, 0}, {184, 188, -1, 0, -1, 0},
{185, 186, -1, 0, -1, 0}, { -1, -1, 16, 9, 8, 0},
{ -1, -1, 16, 10, 8, 0}, { -1, -1, 9, 1, 9, 0},
{189, 190, -1, 0, -1, 0}, { -1, -1, 16, 2, 9, 0},
{ -1, -1, 16, 3, 9, 0}, {192, 258, -1, 0, -1, 0},
{193, 226, -1, 0, -1, 0}, {194, 210, -1, 0, -1, 0},
{195, 202, -1, 0, -1, 0}, {196, 199, -1, 0, -1, 0},
{197, 198, -1, 0, -1, 0}, { -1, -1, 16, 4, 9, 0},
{ -1, -1, 16, 5, 9, 0}, {200, 201, -1, 0, -1, 0},
{ -1, -1, 16, 6, 9, 0}, { -1, -1, 16, 7, 9, 0},
{203, 206, -1, 0, -1, 0}, {204, 205, -1, 0, -1, 0},
{ -1, -1, 16, 8, 9, 0}, { -1, -1, 16, 9, 9, 0},
{207, 209, -1, 0, -1, 0}, { -1, -1, 16, 10, 9, 0},
{ -1, -1, 9, 1, 10, 0}, { -1, -1, 16, 2, 10, 0},
{211, 218, -1, 0, -1, 0}, {212, 215, -1, 0, -1, 0},
{213, 214, -1, 0, -1, 0}, { -1, -1, 16, 3, 10, 0},
{ -1, -1, 16, 4, 10, 0}, {216, 217, -1, 0, -1, 0},
{ -1, -1, 16, 5, 10, 0}, { -1, -1, 16, 6, 10, 0},
{219, 222, -1, 0, -1, 0}, {220, 221, -1, 0, -1, 0},
{ -1, -1, 16, 7, 10, 0}, { -1, -1, 16, 8, 10, 0},
{223, 224, -1, 0, -1, 0}, { -1, -1, 16, 9, 10, 0},
{ -1, -1, 16, 10, 10, 0}, { -1, -1, 10, 1, 11, 0},
{227, 242, -1, 0, -1, 0}, {228, 235, -1, 0, -1, 0},
{229, 232, -1, 0, -1, 0}, {230, 231, -1, 0, -1, 0},
{ -1, -1, 16, 2, 11, 0}, { -1, -1, 16, 3, 11, 0},
{233, 234, -1, 0, -1, 0}, { -1, -1, 16, 4, 11, 0},
{ -1, -1, 16, 5, 11, 0}, {236, 239, -1, 0, -1, 0},
{237, 238, -1, 0, -1, 0}, { -1, -1, 16, 6, 11, 0},
{ -1, -1, 16, 7, 11, 0}, {240, 241, -1, 0, -1, 0},
{ -1, -1, 16, 8, 11, 0}, { -1, -1, 16, 9, 11, 0},
{243, 251, -1, 0, -1, 0}, {244, 248, -1, 0, -1, 0},
{245, 247, -1, 0, -1, 0}, { -1, -1, 16, 10, 11, 0},
{ -1, -1, 10, 1, 12, 0}, { -1, -1, 16, 2, 12, 0},
{249, 250, -1, 0, -1, 0}, { -1, -1, 16, 3, 12, 0},
{ -1, -1, 16, 4, 12, 0}, {252, 255, -1, 0, -1, 0},
{253, 254, -1, 0, -1, 0}, { -1, -1, 16, 5, 12, 0},
{ -1, -1, 16, 6, 12, 0}, {256, 257, -1, 0, -1, 0},
{ -1, -1, 16, 7, 12, 0}, { -1, -1, 16, 8, 12, 0},
{259, 292, -1, 0, -1, 0}, {260, 277, -1, 0, -1, 0},
{261, 270, -1, 0, -1, 0}, {262, 267, -1, 0, -1, 0},
{263, 264, -1, 0, -1, 0}, { -1, -1, 16, 9, 12, 0},
{ -1, -1, 16, 10, 12, 0}, {266, 322, -1, 0, -1, 0},
{ -1, -1, 11, 1, 13, 0}, {268, 269, -1, 0, -1, 0},
{ -1, -1, 16, 2, 13, 0}, { -1, -1, 16, 3, 13, 0},
{271, 274, -1, 0, -1, 0}, {272, 273, -1, 0, -1, 0},
{ -1, -1, 16, 4, 13, 0}, { -1, -1, 16, 5, 13, 0},
{275, 276, -1, 0, -1, 0}, { -1, -1, 16, 6, 13, 0},
{ -1, -1, 16, 7, 13, 0}, {278, 285, -1, 0, -1, 0},
{279, 282, -1, 0, -1, 0}, {280, 281, -1, 0, -1, 0},
{ -1, -1, 16, 8, 13, 0}, { -1, -1, 16, 9, 13, 0},
{283, 284, -1, 0, -1, 0}, { -1, -1, 16, 10, 13, 0},
{ -1, -1, 16, 1, 14, 0}, {286, 289, -1, 0, -1, 0},
{287, 288, -1, 0, -1, 0}, { -1, -1, 16, 2, 14, 0},
{ -1, -1, 16, 3, 14, 0}, {290, 291, -1, 0, -1, 0},
{ -1, -1, 16, 4, 14, 0}, { -1, -1, 16, 5, 14, 0},
{293, 308, -1, 0, -1, 0}, {294, 301, -1, 0, -1, 0},
{295, 298, -1, 0, -1, 0}, {296, 297, -1, 0, -1, 0},
{ -1, -1, 16, 6, 14, 0}, { -1, -1, 16, 7, 14, 0},
{299, 300, -1, 0, -1, 0}, { -1, -1, 16, 8, 14, 0},
{ -1, -1, 16, 9, 14, 0}, {302, 305, -1, 0, -1, 0},
{303, 304, -1, 0, -1, 0}, { -1, -1, 16, 10, 14, 0},
{ -1, -1, 16, 1, 15, 0}, {306, 307, -1, 0, -1, 0},
{ -1, -1, 16, 2, 15, 0}, { -1, -1, 16, 3, 15, 0},
{309, 316, -1, 0, -1, 0}, {310, 313, -1, 0, -1, 0},
{311, 312, -1, 0, -1, 0}, { -1, -1, 16, 4, 15, 0},
{ -1, -1, 16, 5, 15, 0}, {314, 315, -1, 0, -1, 0},
{ -1, -1, 16, 6, 15, 0}, { -1, -1, 16, 7, 15, 0},
{317, 320, -1, 0, -1, 0}, {318, 319, -1, 0, -1, 0},
{ -1, -1, 16, 8, 15, 0}, { -1, -1, 16, 9, 15, 0},
{321, -1, -1, 0, -1, 0}, { -1, -1, 16, 10, 15, 0},
{ -1, -1, 11, 0, 16, 0}, { -1, -1, 4, 0, -1, 0},
};
static const tree_node treeUVAC[] = {
{ 1, 3, -1, 0, -1, 0}, {323, 2, -1, 0, -1, 0},
{ -1, -1, 2, 1, 0, 0}, { 4, 8, -1, 0, -1, 0},
{ 5, 6, -1, 0, -1, 0}, { -1, -1, 3, 2, 0, 0},
{ 7, 37, -1, 0, -1, 0}, { -1, -1, 4, 3, 0, 0},
{ 9, 13, -1, 0, -1, 0}, { 10, 60, -1, 0, -1, 0},
{ 11, 12, -1, 0, -1, 0}, { -1, -1, 5, 4, 0, 0},
{ -1, -1, 5, 5, 0, 0}, { 14, 17, -1, 0, -1, 0},
{ 15, 97, -1, 0, -1, 0}, { 16, 38, -1, 0, -1, 0},
{ -1, -1, 6, 6, 0, 0}, { 18, 21, -1, 0, -1, 0},
{ 19, 39, -1, 0, -1, 0}, { 20, 135, -1, 0, -1, 0},
{ -1, -1, 7, 7, 0, 0}, { 22, 26, -1, 0, -1, 0},
{ 82, 23, -1, 0, -1, 0}, { 24, 99, -1, 0, -1, 0},
{ 25, 42, -1, 0, -1, 0}, { -1, -1, 9, 8, 0, 0},
{ 27, 31, -1, 0, -1, 0}, {211, 28, -1, 0, -1, 0},
{248, 29, -1, 0, -1, 0}, { 30, 63, -1, 0, -1, 0},
{ -1, -1, 10, 9, 0, 0}, { 43, 32, -1, 0, -1, 0},
{ 33, 48, -1, 0, -1, 0}, {153, 34, -1, 0, -1, 0},
{ 35, 64, -1, 0, -1, 0}, { 36, 47, -1, 0, -1, 0},
{ -1, -1, 12, 10, 0, 0}, { -1, -1, 4, 1, 1, 0},
{ -1, -1, 6, 2, 1, 0}, {152, 40, -1, 0, -1, 0},
{ 41, 62, -1, 0, -1, 0}, { -1, -1, 8, 3, 1, 0},
{ -1, -1, 9, 4, 1, 0}, { 84, 44, -1, 0, -1, 0},
{322, 45, -1, 0, -1, 0}, { 46, 136, -1, 0, -1, 0},
{ -1, -1, 11, 5, 1, 0}, { -1, -1, 12, 6, 1, 0},
{ 49, 189, -1, 0, -1, 0}, { 50, 119, -1, 0, -1, 0},
{ 51, 76, -1, 0, -1, 0}, { 66, 52, -1, 0, -1, 0},
{ 53, 69, -1, 0, -1, 0}, { 54, 57, -1, 0, -1, 0},
{ 55, 56, -1, 0, -1, 0}, { -1, -1, 16, 7, 1, 0},
{ -1, -1, 16, 8, 1, 0}, { 58, 59, -1, 0, -1, 0},
{ -1, -1, 16, 9, 1, 0}, { -1, -1, 16, 10, 1, 0},
{ 61, 81, -1, 0, -1, 0}, { -1, -1, 5, 1, 2, 0},
{ -1, -1, 8, 2, 2, 0}, { -1, -1, 10, 3, 2, 0},
{ 65, 86, -1, 0, -1, 0}, { -1, -1, 12, 4, 2, 0},
{286, 67, -1, 0, -1, 0}, { 68, 304, -1, 0, -1, 0},
{ -1, -1, 15, 5, 2, 0}, { 70, 73, -1, 0, -1, 0},
{ 71, 72, -1, 0, -1, 0}, { -1, -1, 16, 6, 2, 0},
{ -1, -1, 16, 7, 2, 0}, { 74, 75, -1, 0, -1, 0},
{ -1, -1, 16, 8, 2, 0}, { -1, -1, 16, 9, 2, 0},
{ 77, 102, -1, 0, -1, 0}, { 78, 91, -1, 0, -1, 0},
{ 79, 88, -1, 0, -1, 0}, { 80, 87, -1, 0, -1, 0},
{ -1, -1, 16, 10, 2, 0}, { -1, -1, 5, 1, 3, 0},
{ 83, 171, -1, 0, -1, 0}, { -1, -1, 8, 2, 3, 0},
{ 85, 117, -1, 0, -1, 0}, { -1, -1, 10, 3, 3, 0},
{ -1, -1, 12, 4, 3, 0}, { -1, -1, 16, 5, 3, 0},
{ 89, 90, -1, 0, -1, 0}, { -1, -1, 16, 6, 3, 0},
{ -1, -1, 16, 7, 3, 0}, { 92, 95, -1, 0, -1, 0},
{ 93, 94, -1, 0, -1, 0}, { -1, -1, 16, 8, 3, 0},
{ -1, -1, 16, 9, 3, 0}, { 96, 101, -1, 0, -1, 0},
{ -1, -1, 16, 10, 3, 0}, { 98, 116, -1, 0, -1, 0},
{ -1, -1, 6, 1, 4, 0}, {100, 188, -1, 0, -1, 0},
{ -1, -1, 9, 2, 4, 0}, { -1, -1, 16, 3, 4, 0},
{103, 110, -1, 0, -1, 0}, {104, 107, -1, 0, -1, 0},
{105, 106, -1, 0, -1, 0}, { -1, -1, 16, 4, 4, 0},
{ -1, -1, 16, 5, 4, 0}, {108, 109, -1, 0, -1, 0},
{ -1, -1, 16, 6, 4, 0}, { -1, -1, 16, 7, 4, 0},
{111, 114, -1, 0, -1, 0}, {112, 113, -1, 0, -1, 0},
{ -1, -1, 16, 8, 4, 0}, { -1, -1, 16, 9, 4, 0},
{115, 118, -1, 0, -1, 0}, { -1, -1, 16, 10, 4, 0},
{ -1, -1, 6, 1, 5, 0}, { -1, -1, 10, 2, 5, 0},
{ -1, -1, 16, 3, 5, 0}, {120, 156, -1, 0, -1, 0},
{121, 138, -1, 0, -1, 0}, {122, 129, -1, 0, -1, 0},
{123, 126, -1, 0, -1, 0}, {124, 125, -1, 0, -1, 0},
{ -1, -1, 16, 4, 5, 0}, { -1, -1, 16, 5, 5, 0},
{127, 128, -1, 0, -1, 0}, { -1, -1, 16, 6, 5, 0},
{ -1, -1, 16, 7, 5, 0}, {130, 133, -1, 0, -1, 0},
{131, 132, -1, 0, -1, 0}, { -1, -1, 16, 8, 5, 0},
{ -1, -1, 16, 9, 5, 0}, {134, 137, -1, 0, -1, 0},
{ -1, -1, 16, 10, 5, 0}, { -1, -1, 7, 1, 6, 0},
{ -1, -1, 11, 2, 6, 0}, { -1, -1, 16, 3, 6, 0},
{139, 146, -1, 0, -1, 0}, {140, 143, -1, 0, -1, 0},
{141, 142, -1, 0, -1, 0}, { -1, -1, 16, 4, 6, 0},
{ -1, -1, 16, 5, 6, 0}, {144, 145, -1, 0, -1, 0},
{ -1, -1, 16, 6, 6, 0}, { -1, -1, 16, 7, 6, 0},
{147, 150, -1, 0, -1, 0}, {148, 149, -1, 0, -1, 0},
{ -1, -1, 16, 8, 6, 0}, { -1, -1, 16, 9, 6, 0},
{151, 155, -1, 0, -1, 0}, { -1, -1, 16, 10, 6, 0},
{ -1, -1, 7, 1, 7, 0}, {154, 267, -1, 0, -1, 0},
{ -1, -1, 11, 2, 7, 0}, { -1, -1, 16, 3, 7, 0},
{157, 173, -1, 0, -1, 0}, {158, 165, -1, 0, -1, 0},
{159, 162, -1, 0, -1, 0}, {160, 161, -1, 0, -1, 0},
{ -1, -1, 16, 4, 7, 0}, { -1, -1, 16, 5, 7, 0},
{163, 164, -1, 0, -1, 0}, { -1, -1, 16, 6, 7, 0},
{ -1, -1, 16, 7, 7, 0}, {166, 169, -1, 0, -1, 0},
{167, 168, -1, 0, -1, 0}, { -1, -1, 16, 8, 7, 0},
{ -1, -1, 16, 9, 7, 0}, {170, 172, -1, 0, -1, 0},
{ -1, -1, 16, 10, 7, 0}, { -1, -1, 8, 1, 8, 0},
{ -1, -1, 16, 2, 8, 0}, {174, 181, -1, 0, -1, 0},
{175, 178, -1, 0, -1, 0}, {176, 177, -1, 0, -1, 0},
{ -1, -1, 16, 3, 8, 0}, { -1, -1, 16, 4, 8, 0},
{179, 180, -1, 0, -1, 0}, { -1, -1, 16, 5, 8, 0},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -