stoneage8.5/石器时代8.5客户端最新源代码/石器源码/oft/vg410.h

506 lines
16 KiB
C
Raw Normal View History

2020-06-22 17:49:02 +08:00
#ifndef _VG410_H_
#define _VG410_H_
#include "windows.h"
#include "../systeminc/action.h"
typedef unsigned char Uint8 ; /* ????????<3F><>? */
typedef signed char Sint8 ; /* ????????<3F><>? */
typedef unsigned short Uint16 ; /* ????????<3F><>? */
typedef signed short Sint16 ; /* ????????<3F><>? */
typedef unsigned long Uint32 ; /* ????????<3F><>? */
typedef signed long Sint32 ; /* ????????<3F><>? */
typedef float Float32 ; /* ????<3F><>? */
typedef double Float64 ; /* ????<3F><>? */
/*---------- ???????????? ----------*/
#define ATR_MAX 256
typedef void (*FUNC)(Uint16);
typedef void (*FUNC2)();
typedef struct{
Uint8 vct_no;
Uint8 stimer;
ACTION *body_work[20];
Uint8 body_cnt;
int damage;
Uint8 hit_stop;
Uint8 hit_timing;
Uint8 group_flg;
int attack_kind[20];
int attack_pow[20];
Uint8 combo;
Uint8 kaishin;
int life;
ACTION *counter;
Uint8 counter_flg;
ACTION *jujutsu_work;
ACTION *magicstatus_work;
ACTION *attrib_work;
Uint8 guard_flg;
Uint8 damage_ang;
Uint8 first_flg;
Uint8 place_no;
Uint8 pet_ok;
Uint8 ako_flg;
Uint8 crs_old;
Uint8 sync_flg;
int int_work0;
int int_work1;
int int_work2;
int int_work3;
int long_work[20];
// Robin 0729
int attack_pet_kind[20];
int attack_pet_pow[20];
int pet_damage;
int int_workp;
int onRide;
//andy_mp
int mpdamage;
int addhp;
int mpflg;
int addhpflg;
int showaddhp;
int graNo;
#ifdef __NEW_BATTLE_EFFECT
int effect_flg;
int effect_anim;
int effect_param;
#endif
#ifdef _SKILL_SELFEXPLODE //<2F>Ա<EFBFBD>
int petSelfExplode; //<2F><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
#endif
#ifdef _PETSKILL_BATTLE_MODEL
int battle_model;
#endif
} ATR_EQU;
#define ATR_NAME(a) a->func
#define ATR_ATTRIB(a) a->atr
#define ATR_H_POS(a) a->x
#define ATR_V_POS(a) a->y
#define ATR_H_MINI(a) a->h_mini
#define ATR_V_MINI(a) a->v_mini
#define ATR_SPD(a) a->spd
#define ATR_CRS(a) a->crs
//#define ATR_SPD(a) ((ATR_EQU *)a->pReg)->spd
//#define ATR_CRS(a) ((ATR_EQU *)a->pReg)->crs
//#define ATR_H_MINI(a) ((ATR_EQU *)a->pReg)->h_mini
//#define ATR_V_MINI(a) ((ATR_EQU *)a->pReg)->v_mini
#define ATR_PAT_NO(a) a->bmpNo
#define ATR_PAT_BAK_NO(a) a->bmpNo_bak
#define ATR_CHR_NO(a) a->anim_chr_no
#define ATR_CHR_NO_OLD(a) a->anim_chr_no_bak
#define ATR_CHR_ACT(a) a->anim_no
#define ATR_CHR_ACT_OLD(a) a->anim_no_bak
#define ATR_CHR_ANG(a) a->anim_ang
#define ATR_CHR_ANG_OLD(a) a->anim_ang_bak
#define ATR_CHR_CNT(a) a->anim_cnt
#define ATR_CHR_TIM(a) a->anim_frame_cnt
#define ATR_CHR_H_POS(a) a->anim_x
#define ATR_CHR_V_POS(a) a->anim_y
#define ATR_TASK_PRIO(a) a->prio /* ????<3F>I?? */
#define ATR_DISP_PRIO(a) a->dispPrio /* <20><><EFBFBD><EFBFBD>??<3F>I?? */
#define ATR_LIFE(a) a->hp
#ifdef _PET_ITEM
#define ATR_OLD_LIFE(a) a->iOldHp
#endif
#define ATR_MP(a) a->mp
#define ATR_MAX_LIFE(a) a->maxHp
#ifdef _BATTLESKILL // (<28><><EFBFBD>ɿ<EFBFBD>) Syu ADD ս<><D5BD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
#define ATR_MAX_MANA(a) a->maxMp
#endif
#define ATR_HANDLE(a) a->name
#define ATR_TITLE(a) a->freeName
#define ATR_LEVEL(a) a->level
#define ATR_HIT(a) a->anim_hit
#define ATR_STATUS(a) a->status /* ????? */
// Robin 0728 ridePet
#define ATR_RIDE(a) a->onRide
#define ATR_PETNAME(a) a->petName
#define ATR_PETLEVEL(a) a->petLevel
#define ATR_PET_LIFE(a) a->petHp
#define ATR_PET_MAX_LIFE(a) a->petMaxHp
#define ATR_PETFALL(a) a->petFall
#ifdef _SKILL_ROAR
#define ATR_ROAR(a) a->petRoar //<2F><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
#endif
#ifdef _SKILL_SELFEXPLODE //<2F>Ա<EFBFBD>
#define ATR_SELFEXPLODE(a) a->petSelfExplode
#endif
#ifdef _MAGIC_DEEPPOISION //<2F>
#define ATR_DEEPPOISION(a) a->petDeepPoision
#endif
//#ifdef _BATTLESKILL // (<28><><EFBFBD>ɿ<EFBFBD>) Syu ADD ս<><D5BD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
#define ATR_WARRIOR_EFFECT(a) a->warrioreffect
//#endif
#ifdef _SFUMATO
#define ATR_SFUMATO(a) a->sfumato // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦͼ<C8BE><CDBC>ɫ<EFBFBD><C9AB>
#endif
#define ATR_VCT_NO(a) ((ATR_EQU *)a->pYobi)->vct_no
#define ATR_STIMER(a) ((ATR_EQU *)a->pYobi)->stimer
#define ATR_BODY_WORK(b,a) ((ATR_EQU *)a->pYobi)->body_work[b]
#define ATR_BODY_CNT(a) ((ATR_EQU *)a->pYobi)->body_cnt
#define ATR_DAMAGE(a) ((ATR_EQU *)a->pYobi)->damage
//#define ATR_BODY_WORK(b,a) _ATR_BODY_WORK(b,a,__FILE__,__LINE__)
ACTION * _ATR_BODY_WORK(int b ,ACTION * a,char *file,int line);
//andy_mp
#define ATR_MPDAMAGE(a) ((ATR_EQU *)a->pYobi)->mpdamage
#define ATR_MPDFLG(a) ((ATR_EQU *)a->pYobi)->mpflg
#define ATR_ADDHP(a) ((ATR_EQU *)a->pYobi)->addhp
#define ATR_ADDHPFLG(a) ((ATR_EQU *)a->pYobi)->addhpflg
#define ATR_SHOWADDHP(a) ((ATR_EQU *)a->pYobi)->showaddhp
#define ATR_BATTLEGRANO(a) ((ATR_EQU *)a->pYobi)->graNo
#define ATR_GROUP_FLG(a) ((ATR_EQU *)a->pYobi)->group_flg
#define ATR_ATTACK_KIND(b,a) ((ATR_EQU *)a->pYobi)->attack_kind[b]
#define ATR_ATTACK_POW(b,a) ((ATR_EQU *)a->pYobi)->attack_pow[b]
#define ATR_HIT_STOP(a) ((ATR_EQU *)a->pYobi)->hit_stop
#define ATR_HIT_TIMING(a) ((ATR_EQU *)a->pYobi)->hit_timing
#define ATR_COMBO(a) ((ATR_EQU *)a->pYobi)->combo
#define ATR_KAISHIN(a) ((ATR_EQU *)a->pYobi)->kaishin
#define ATR_COUNTER(a) ((ATR_EQU *)a->pYobi)->counter
#define ATR_COUNTER_FLG(a) ((ATR_EQU *)a->pYobi)->counter_flg
#define ATR_JUJUTSU_WORK(a) ((ATR_EQU *)a->pYobi)->jujutsu_work
#define ATR_MAGICSU_WORK(a) ((ATR_EQU *)a->pYobi)->magicstatus_work
#define ATR_ATTRIB_WORK(a) ((ATR_EQU *)a->pYobi)->attrib_work
#define ATR_GUARD_FLG(a) ((ATR_EQU *)a->pYobi)->guard_flg
#define ATR_DAMAGE_ANG(a) ((ATR_EQU *)a->pYobi)->damage_ang
#define ATR_FIRST_FLG(a) ((ATR_EQU *)a->pYobi)->first_flg
#define ATR_PLACE_NO(a) ((ATR_EQU *)a->pYobi)->place_no
#define ATR_PET_OK(a) ((ATR_EQU *)a->pYobi)->pet_ok
#define ATR_AKO_FLG(a) ((ATR_EQU *)a->pYobi)->ako_flg
#define ATR_CRS_OLD(a) ((ATR_EQU *)a->pYobi)->crs_old
#define ATR_SYNC_FLG(a) ((ATR_EQU *)a->pYobi)->sync_flg
#define ATR_INT_WORK0(a) ((ATR_EQU *)a->pYobi)->int_work0
#define ATR_INT_WORK1(a) ((ATR_EQU *)a->pYobi)->int_work1
#define ATR_INT_WORK2(a) ((ATR_EQU *)a->pYobi)->int_work2
#define ATR_INT_WORK3(a) ((ATR_EQU *)a->pYobi)->int_work3
#define ATR_LONG_WORK(b,a) ((ATR_EQU *)a->pYobi)->long_work[b]
// Robin 0729 ride pet
#define ATR_ATTACK_PET_KIND(b,a) ((ATR_EQU *)a->pYobi)->attack_pet_kind[b]
#define ATR_ATTACK_PET_POW(b,a) ((ATR_EQU *)a->pYobi)->attack_pet_pow[b]
#define ATR_PET_DAMAGE(a) ((ATR_EQU *)a->pYobi)->pet_damage
#define ATR_INT_WORKp(a) ((ATR_EQU *)a->pYobi)->int_workp
#define ATR_RIDE_FLAG(a) ((ATR_EQU *)a->pYobi)->onRide
#ifdef __NEW_BATTLE_EFFECT
#define ATR_EFFECT_FLAG(a) ((ATR_EQU *)a->pYobi)->effect_flg
#define ATR_EFFECT_ANIM(a) ((ATR_EQU *)a->pYobi)->effect_anim
#define ATR_EFFECT_PARAM(a) ((ATR_EQU *)a->pYobi)->effect_param
#endif
#ifdef _PETSKILL_BATTLE_MODEL
#define ATR_BATTLE_MODEL(a) ((ATR_EQU *)a->pYobi)->battle_model
#endif
#ifdef _SKILL_SELFEXPLODE //<2F>Ա<EFBFBD>
//#define ATR_SELFEXPLODE(a) ((ATR_EQU *)a->pYobi)->petSelfExplode //<2F>Ա<EFBFBD>
#endif
/*---------- ??<3F><>? ----------*/
#define ATT_HIT 'H' //???
#define ATT_FIRE 'Z' //?<3F>d
#define ATT_BOW 'B' //?
#define ATT_TAKE 'T' //<2F><>?
#define ATT_ESCAPE 'E' //<2F>D<EFBFBD><44>
#define ATT_SELECT 'S' //???<3F>k<EFBFBD><6B>
#define ATT_MONSTER 'W' //<2F><><EFBFBD>l
#define ATT_JUJUTSU 'J' //<2F><><EFBFBD><EFBFBD>
#ifdef __NEW_BATTLE_EFFECT
#define ATT_EFFECT 'j' //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD>Ч
#endif
//#ifdef _BATTLESKILL // (<28><><EFBFBD>ɿ<EFBFBD>) Syu ADD ս<><D5BD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
#define ATT_PROSKILL '+'
//#endif
#ifdef _FIREHUNTER_SKILL // (<28><><EFBFBD>ɿ<EFBFBD>) ROG ADD <20><>ȸ<EFBFBD><C8B8><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ
#define ATT_FIRESKILL 'f'
#endif
#ifdef _PROFESSION_ADDSKILL//<2F><><EFBFBD><EFBFBD>
#define ATT_BOUNDARY 'a'
#endif
#ifdef _PETSKILL_BATTLE_MODEL
#define ATT_BATTLE_MODEL 'b' // <20><><EFBFBD><EFBFBD><EFBCBC>ս<EFBFBD><D5BD>ģ<EFBFBD><C4A3>
#endif
#ifdef _PETSKILL_RIDE
#define ATT_RIDE 'c'
#endif
//andy_mp
#define ATT_MPDAMAGE 'p' //MP<4D>˺<EFBFBD>
#define ATT_DAMAGETOHP 'h'
#define ATT_MAGICSTATUS 'm' //<2F><><EFBFBD><EFBFBD>״̬
#ifdef _MAGIC_DEEPPOISION
#define ATT_DEEPPOISION 'd' //<2F>
#endif
#define ATT_BOOMERANG 'O' //?????
#define ATT_SYNCHRONOUS 'Y' //<2F>i???
#define ATT_MALFUNCTION 'M' //<2F>O<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD>
#define ATT_DAMAGE 'D' //<2F>O<EFBFBD>l????
#define ATT_FADE_OUT 'F' //<2F>N<EFBFBD>ͧT<CDA7><54>
#define ATT_LIFE 'L' //<2F><>??<3F><>?<3F><>
#define ATT_IN 'I' //<2F><>??<3F><><EFBFBD><EFBFBD>?
#define ATT_VARIABLE 'V' //<2F>N<EFBFBD><4E>??
#define ATT_REVERSE 'R' //<2F><>?<3F><>?
#define ATT_QUIT 'Q' //???<3F>`??
#define ATT_NIX 'X' //????<3F>r
#define ATT_KANJI 'K' //<2F><>??
#define ATT_NEXT_EQUIP 'N' //?<3F><><EFBFBD><EFBFBD>?
#define ATT_COMPANIONS '!' //<2F>s??
#define ATT_STEAL '#' //??
#define ATT_TALK '%' //????
#define ATT_TOCALL '$' // <20>ٻ<EFBFBD>
#define ATT_DEATH (1 << 0) //<2F><><EFBFBD><EFBFBD>
#define ATT_NORMAL (1 << 1) //<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
#define ATT_SATISFACTORY (1 << 2) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
#define ATT_GUARD (1 << 3) //<2F><><EFBFBD><EFBFBD>
#define ATT_COUNTER (1 << 4) //<2F><><EFBFBD><EFBFBD>
#define ATT_DODGE (1 << 5) //<2F><><EFBFBD><EFBFBD>
#define ATT_AKO1 (1 << 6) //<2F><>1
#define ATT_AKO2 (1 << 7) //<2F><>2
#define ATT_G_CRASH (1 << 8) //<2F><><EFBFBD><EFBFBD>ײ
#define ATT_VICARIOUS (1 << 9) //<2F><>Ȯ
#define ATT_REFLEX (1 << 10) //<2F><><EFBFBD><EFBFBD>
#define ATT_ABSORPTION (1 << 11) //<2F><><EFBFBD><EFBFBD>
#define ATT_BALLIA (1 << 12) //<2F><><EFBFBD><EFBFBD>
#define ATT_CRUSH (1 << 13) //<2F><>ײ
#define ATT_FALL (1 << 14) //<2F><><EFBFBD><EFBFBD>
#define ATT_TOOEH (1 << 15) //<2F><><EFBFBD><EFBFBD>
#define ATT_ATTDOUBLE (1 << 16) //<2F><><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#ifdef _SKILL_ROAR
#define ATT_ATTROAR (1 << 17) //<2F><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
#endif
#ifdef _SKILL_SELFEXPLODE //<2F>Ա<EFBFBD>
#define ATT_ATTSELFEXPLODE (1 << 18) //<2F>Ա<EFBFBD>
#endif
#ifdef _PETSKILL_EXPLODE
#define ATT_EXPLODE (1 << 29) //<2F><><EFBFBD><EFBFBD>(<28><><EFBFBD>Ա<EFBFBD>һ<EFBFBD><D2BB><>ǽ<EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ)
#endif
#define BCF_DEFMAGICATT (1 << 19)
#define BCF_SUPERWALL (1 << 20)
#define BCF_MODIFY (1 << 21) //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
//#ifdef _BATTLESKILL // (<28><><EFBFBD>ɿ<EFBFBD>) Syu ADD ս<><D5BD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
#define ATT_ATTPREPROSKILL (1 << 22) //ְҵ<D6B0><D2B5><EFBFBD><EFBFBD>
#define ATT_ATTNEXTPROSKILL (1 << 23) //ְҵ<D6B0><D2B5><EFBFBD><EFBFBD>
#define ATT_TRAP (1 << 25) //<2F><><EFBFBD><EFBFBD>
#define ATT_NOMISS (1 << 26) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>»<EFBFBD><C2BB><EFBFBD>
//#endif
#ifdef _EQUIT_ARRANGE
#define ATT_ARRANGE (1 << 24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ#endif
#endif
#ifdef _PETSKILL_ACUPUNCTURE
#define ATT_ACUPUNCTURE (1 << 27)
#endif
#ifdef _PETSKILL_ANTINTER
#define ATT_ANTINTER (1 << 28)
#endif
#ifdef _PET_ITEM
#define ATT_ATTACKBACK (1 << 30)
#endif
#define JUJUTSU_1 (1) // "<22><>",
#define JUJUTSU_2 (2) // "??",
#define JUJUTSU_3 (3) // "<22><>?",
#define JUJUTSU_4 (4) // "<22><>?",
#define JUJUTSU_5 (5) // "?????",
#define JUJUTSU_6 (6) // "??"
#define BC_FRESH (1 << 0) //<2F><>?<3F><>?
#define BC_DEATH (1 << 1) //?<3F><>
#define BC_PET_OK (1 << 2) //???<3F><>?<3F>V?<3F>ϣ<EFBFBD>
#define BC_BIT3 (1 << 3) // "<22><>",
#define BC_BIT4 (1 << 4) // "??",
#define BC_BIT5 (1 << 5) // "<22><>?",
#define BC_BIT6 (1 << 6) // "<22><>?",
#define BC_BIT7 (1 << 7) // "?????",
#define BC_BIT8 (1 << 8) // "??"
#define BC_FADE_OUT (1 << 9) //???
#define BC_REVERSE (1 << 10) //<2F>N<EFBFBD>ͧT<CDA7><54>
#ifdef _MAGIC_WEAKEN
#define BC_WEAKEN (1 << 11) //<2F><><EFBFBD><EFBFBD>
#endif
#ifdef _MAGIC_DEEPPOISION
#define BC_DEEPPOISON (1 << 12) //<2F>
#endif
#ifdef _MAGIC_BARRIER
#define BC_BARRIER (1 << 13) //ħ<><C4A7>
#endif
#ifdef _MAGIC_NOCAST
#define BC_NOCAST (1 << 14) //<2F><>Ĭ
#endif
#ifdef _SARS // WON ADD <20><>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD>
#define BC_SARS (1 << 15) // <20><>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD>
#endif
#ifdef _PETSKILL_LER
#define BC_CHANGE (1<<30) // <20>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD>
#endif
#ifdef _CHAR_PROFESSION // WON ADD
#define BC_DIZZY (1 << 16) // <20><>ѣ
#define BC_ENTWINE (1 << 17) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BC_DRAGNET (1 << 18) // <20><><EFBFBD>޵<EFBFBD><DEB5><EFBFBD>
#define BC_ICECRACK (1 << 19) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BC_OBLIVION (1 << 20) // <20><><EFBFBD><EFBFBD>
#define BC_ICEARROW (1 << 21) // <20><><EFBFBD><EFBFBD>
#define BC_BLOODWORMS (1 << 22) // <20><>Ѫ<EFBFBD><D1AA>
#define BC_SIGN (1 << 23) // һ<><D2BB><EFBFBD><EFBFBD>Ѫ
#define BC_CRAZY (1 << 24) // <20><><EFBFBD><EFBFBD>
#define BC_F_ENCLOSE (1 << 25) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BC_I_ENCLOSE (1 << 26) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BC_T_ENCLOSE (1 << 27) // <20>׸<EFBFBD><D7B8><EFBFBD>
#ifdef _PROFESSION_ADDSKILL
#define BC_WATER (1 << 28) // ˮ<><CBAE><EFBFBD><EFBFBD>
#define BC_FEAR (1 << 29) // <20>־<EFBFBD>
//#define BC_F_I_T_ENCLOSE (1 << 28) // <20><><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD><D7B8><EFBFBD>
#endif
#ifdef _PETSKILL_LER
#define BC_CHANGE (1<<30) // <20>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD>
#endif
#ifdef _PRO_KILLME
#define BC_ANGER (1<<31) // ŭ
#endif
#endif
/*---------- ???????? ----------*/
// ??
#define JOY_RIGHT (1 << 15) /* Right Key */
#define JOY_LEFT (1 << 14) /* Left Key */
#define JOY_DOWN (1 << 13) /* Down Key */
#define JOY_UP (1 << 12) /* Up Key */
#define JOY_START (1 << 11) /* Start */
#define JOY_A (1 << 10) /* A Trigger */
#define JOY_C (1 << 9) /* C Trigger */
#define JOY_B (1 << 8) /* B Trigger */
#define JOY_R (1 << 7) /* R Trigger */
#define JOY_X (1 << 6) /* X Trigger */
#define JOY_DEL (1 << 5) /* DELETE */
#define JOY_INS (1 << 4) /* INSERT */
#define JOY_END (1 << 3) /* END */
#define JOY_HOME (1 << 2) /* HOME */
#define JOY_P_DOWN (1 << 1) /* PAGE_UP */
#define JOY_P_UP (1 << 0) /* PAGE_DOWN */
#define JOY_ESC (1 << 31) /* ESC Key */
#define JOY_CTRL_M (1 << 30) /* Ctrl + M */
#define JOY_CTRL_S (1 << 29) /* Ctrl + S */
#define JOY_CTRL_P (1 << 28) /* Ctrl + P */
#define JOY_CTRL_I (1 << 27) /* Ctrl + I */
#define JOY_CTRL_E (1 << 26) /* Ctrl + E */
#define JOY_CTRL_A (1 << 25) /* Ctrl + A */
#define JOY_CTRL_C (1 << 24) /* Ctrl + C */
#define JOY_CTRL_V (1 << 23) /* Ctrl + V */
#define JOY_CTRL_T (1 << 22) /* Ctrl + T */
#if 0
#define JOY_X (1 << 22) /* X Trigger */
#define JOY_Y (1 << 21) /* Y Trigger */
#define JOY_Z (1 << 20) /* Z Trigger */
#define JOY_L (1 << 19) /* L Trigger */
#define JOY_G (1 << 18) /* L Trigger */
#define JOY_H (1 << 17) /* L Trigger */
#define JOY_H (1 << 16) /* L Trigger */
#endif
// ??
//#define JOY_RIGHT (1 << 15) /* Right Key */
//#define JOY_LEFT (1 << 14) /* Left Key */
//#define JOY_DOWN (1 << 13) /* Down Key */
//#define JOY_UP (1 << 12) /* Up Key */
// ?????????
#define JOY_F1 (1 << 0) /* F1 */
#define JOY_F2 (1 << 1) /* F2 */
#define JOY_F3 (1 << 2) /* F3 */
#define JOY_F4 (1 << 3) /* F4 */
#define JOY_F5 (1 << 4) /* F5 */
#define JOY_F6 (1 << 5) /* F6 */
#define JOY_F7 (1 << 6) /* F7 */
#define JOY_F8 (1 << 7) /* F8 */
#define JOY_F9 (1 << 8) /* F9 */
#define JOY_F10 (1 << 9) /* F10 */
#define JOY_F11 (1 << 10) /* F11 */
#define JOY_F12 (1 << 11) /* F12 */
// ?????????????
#define JOY_CTRL_1 (1 << 12) /* Ctrl + 1 */
#define JOY_CTRL_2 (1 << 13) /* Ctrl + 2 */
#define JOY_CTRL_3 (1 << 14) /* Ctrl + 3 */
#define JOY_CTRL_4 (1 << 15) /* Ctrl + 4 */
#define JOY_CTRL_5 (1 << 16) /* Ctrl + 5 */
#define JOY_CTRL_6 (1 << 17) /* Ctrl + 6 */
#define JOY_CTRL_7 (1 << 18) /* Ctrl + 7 */
#define JOY_CTRL_8 (1 << 19) /* Ctrl + 8 */
#define JOY_CTRL_9 (1 << 20) /* Ctrl + 9 */
#define JOY_CTRL_0 (1 << 21) /* Ctrl + 0 */
#define JOY_CTRL_MINUS (1 << 22) /* Ctrl + MINUS */
#define JOY_CTRL_CIRCUMFLEX (1 << 23) /* Ctrl + DIK_CIRCUMFLEX */
#define JOY_CTRL_YEN (1 << 28) /* Ctrl + YEN */
// ????
#define JOY_TAB (1 << 25) /* Ctrl + TAB */
// ?????
#define JOY_RSHIFT (1 << 26) /* Ctrl + RSHIFT */
#define JOY_LSHIFT (1 << 27) /* Ctrl + LSHIFT */
// <20><><EFBFBD><EFBFBD>?????
#define JOY_CTRL_J (1 << 24) /* Ctrl + J */
// <20><>?<3F>v?????
#define JOY_CTRL_Q (1 << 29) /* Ctrl + Q */
// ??????
#define JOY_CTRL_W (1 << 30) /* Ctrl + W */
// ?????????
#define JOY_CTRL_G (1 << 31) /* Ctrl + G */
#ifdef _TELLCHANNEL //ROG ADD <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
#define JOY_CTRL_R (1 << 31)
#endif
/*--------- ????? ------------------*/
#define VK_A 0x41
#define VK_B 0x42
#define VK_C 0x43
#define VK_D 0x44
#define VK_E 0x45
#define VK_F 0x46
#define VK_G 0x47
#define VK_H 0x48
#define VK_I 0x49
#define VK_J 0x4A
#define VK_K 0x4B
#define VK_L 0x4C
#define VK_M 0x4D
#define VK_N 0x4E
#define VK_O 0x4F
#define VK_P 0x50
#define VK_Q 0x51
#define VK_R 0x52
#define VK_S 0x53
#define VK_T 0x54
#define VK_U 0x55
#define VK_V 0x56
#define VK_W 0x57
#define VK_X 0x58
#define VK_Y 0x59
#define VK_Z 0x5A
#endif