「コントローラチェックソフトの作り方」の編集履歴(バックアップ)一覧はこちら
「コントローラチェックソフトの作り方」(2012/03/08 (木) 08:13:11) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
***1.メモ帳に以下の内容を書き、test.cという名前でデスクトップに保存する。
#highlight(c){{{
#include <conio.h>
#define JOYPAD (char*)0x4016
#define BTN_A 0x80
#define BTN_B 0x40
#define BTN_SELECT 0x20
#define BTN_START 0x10
#define BTN_UP 0x08
#define BTN_DOWN 0x04
#define BTN_LEFT 0x02
#define BTN_RIGHT 0x01
unsigned char padinfo[2][2];
//player:0=1P , 1=2P
void check_pad(unsigned char player)
{
unsigned char i;
*JOYPAD = 1;
*JOYPAD = 0;
padinfo[player][1] = padinfo[player][0];
padinfo[player][0]= 0;
for(i=0; i<8; i++) {
padinfo[player][0] <<= 1;
padinfo[player][0] += (*(JOYPAD + player) & 0x01);
}
}
//ボタン押しっぱなし
char btndown(unsigned char player,unsigned char btn)
{
if(padinfo[player][0] & btn) {
return 1;
} else {
return 0;
}
}
//ボタン押す
char btnpush(unsigned char player,unsigned char btn)
{
if((padinfo[player][0] & btn) &&
! (padinfo[player][1] & btn)) {
return 1;
} else {
return 0;
}
}
void main(void)
{
clrscr();
cprintf("CHECK START\r\n");
while(1)
{
check_pad(0);
if ( btndown(0 , BTN_A ) ) {
cprintf("A," );
}
if ( btndown(0 , BTN_B ) ) {
cprintf("B," );
}
if ( btnpush(0 , BTN_SELECT) ) {
cprintf("Select,");
}
if ( btnpush(0 , BTN_START ) ) {
cprintf("Start," );
}
if ( btnpush(0 , BTN_UP ) ) {
cprintf("Up," );
}
if ( btnpush(0 , BTN_DOWN ) ) {
cprintf("Down," );
}
if ( btnpush(0 , BTN_LEFT ) ) {
cprintf("Left," );
}
if ( btnpush(0 , BTN_RIGHT ) ) {
cprintf("Right," );
}
if (wherey() > 27) {
clrscr();
gotoxy(0, 0);
}
}
}
}}}
***2.デスクトップのsakusei.batをダブルクリックする。
***3.test.nesが作成されるので、ファミコンエミュレータで開く。
***1.メモ帳に以下の内容を書き、test.cという名前でデスクトップに保存する。
#highlight(c){{{
#include <conio.h>
#define JOYPAD (char*)0x4016
#define BTN_A 0x80
#define BTN_B 0x40
#define BTN_SELECT 0x20
#define BTN_START 0x10
#define BTN_UP 0x08
#define BTN_DOWN 0x04
#define BTN_LEFT 0x02
#define BTN_RIGHT 0x01
unsigned char padinfo[2][2];
//player:0=1P , 1=2P
void check_pad(unsigned char player)
{
unsigned char i;
*JOYPAD = 1;
*JOYPAD = 0;
padinfo[player][1] = padinfo[player][0];
padinfo[player][0]= 0;
for(i=0; i<8; i++) {
padinfo[player][0] <<= 1;
padinfo[player][0] += (*(JOYPAD + player) & 0x01);
}
}
//ボタン押しっぱなし
char btndown(unsigned char player,unsigned char btn)
{
if(padinfo[player][0] & btn) {
return 1;
} else {
return 0;
}
}
//ボタン押す
char btnpush(unsigned char player,unsigned char btn)
{
if((padinfo[player][0] & btn) &&
! (padinfo[player][1] & btn)) {
return 1;
} else {
return 0;
}
}
void main(void)
{
clrscr();
cprintf("CHECK START\r\n");
while(1)
{
check_pad(0);
if ( btndown(0 , BTN_A ) ) {
cprintf("A," );
}
if ( btndown(0 , BTN_B ) ) {
cprintf("B," );
}
if ( btnpush(0 , BTN_SELECT) ) {
cprintf("Select,");
}
if ( btnpush(0 , BTN_START ) ) {
cprintf("Start," );
}
if ( btnpush(0 , BTN_UP ) ) {
cprintf("Up," );
}
if ( btnpush(0 , BTN_DOWN ) ) {
cprintf("Down," );
}
if ( btnpush(0 , BTN_LEFT ) ) {
cprintf("Left," );
}
if ( btnpush(0 , BTN_RIGHT ) ) {
cprintf("Right," );
}
if (wherey() > 27) {
clrscr();
gotoxy(0, 0);
}
}
}
}}}
***2.デスクトップのsakusei.batをダブルクリックする。
***3.test.nesが作成されるので、ファミコンエミュレータで開く。