/* master.lib 98雑用ライブラリ * Version 0.22i * * mjoy.h - master.lib を joy.lib用プログラムで使うヘッダファイル * * master.lib 0.23: (C) 1994 恋塚,Kazumi,steelman * joy.lib 0.91: (C) 1990 STUDIO☆FEMY, 1991-1993 metys * * ○joy.libとの相違点 * ・JOY_INFO 構造体の各メンバは joy.libでは 16bitですが、 * mjoy.hでは 1bitです。このため、構造体の大きさも違います。 * 値を読むと、joy.libでは 0 以外の値は不定ですが、mjoy.hでは * 0 以外は常に 1 です。 * * ・TRIG1_1Pなどのキー割当指示定数は、joy.libでは int値ですが、 * mjoy.hではメモリアドレスです。このため、これを計算で扱っている * プログラムは修正が必要です。 * * ・joyKey2player(JOY_TRUE)を実行したあとに * joyKey2player(JOY_FALSE)を実行すると、 * joy.libでは完全に元に戻りませんが、mjoy.hでは奇麗に戻ります。 * * ・joy.libでは、2重includeや C++での使用を考慮していませんが、 * mjoy.hでは対応しています。また、メモリモデルも master.lib の * ものがそのまま利用できます。 */ #ifndef __MJOY_H #define __MJOY_H #ifndef __MASTER_H # include "master.h" #endif #if __MASTER_VERSION < 23 # error master.lib 0.23以上が必要です!! #endif #define JOY_COMPLETE 1 #define JOY_ERROR 0 #define TRIG1_1P JS_1P1 #define TRIG2_1P JS_1P2 #define IRST1_1P JS_1P4 #define IRST0_1P JS_1P3 #define UP_2P JS_2PUP #define DOWN_2P JS_2PDOWN #define LEFT_2P JS_2PLEFT #define RIGHT_2P JS_2PRIGHT #define TRIG1_2P JS_2P1 #define TRIG2_2P JS_2P2 /* type definition */ typedef struct JOY_INFO { unsigned up:1 ; unsigned down:1 ; unsigned left:1 ; unsigned right:1 ; unsigned trig1:1 ; unsigned trig2:1 ; unsigned irst1:1 ; unsigned irst0:1 ; unsigned esc:1 ; unsigned dummy:7 ; } JOY_INFO ; /* function replacements */ #define joyInit(flag) (js_start(flag) ? JOY_COMPLETE : JOY_ERROR) #define JOY_NORMAL JS_NORMAL #define JOY_IGNORE JS_IGNORE #define JOY_INITIALIZE JS_FORCE_USE #define joyReadInfo(joy_data) (js_sense(),\ (*(long *)(joy_data) = *(long *)js_stat),\ (joy_data[0].esc)) #define joyReadInfo2(joy_data) (js_sense2(),\ (*(long *)(joy_data) = *(long *)js_stat),\ (joy_data[0].esc)) #define joyKey2player(flag) js_key2player(flag) #define JOY_TRUE 1 #define JOY_FALSE 0 #define joyKeyAssign(func,group,mask) js_keyassign((func),(group),(mask)) #define joyAssign(n) (js_shift=(char)(n)) #define JOY_SHIFT 1 /* for backward compatibility */ #define joy_init(flag) joyInit(flag) #define joy_read_info(joy_data) joyReadInfo(joy_data) #define joy_read_info2(joy_data) joyReadInfo2(joy_data) #define joy_key_2player(flag) joyKey2player(flag) #define joy_key_assign(cf,kg,mb) joyKeyAssign((cf),(kg),(mb)) #define joy_assign(n) (js_shift=(char)(n)) #define joySft js_shift #endif