action.c 1.08 KB
/*
 *  NINTENDO64 SAMPLE PROGRAM
 *
 *  FILE : action.c
 *
 *  Copyright (C) 1997, NINTENDO Co,Ltd.
 */


#include  <ultra64.h>
#include  "system.h"
#include  "action.h"


/*
 *  Action 構造体の初期化
 */
void  actionInit(Action *Ac)
{
  u8  i;
  

  for (i = 0; i < MAXCONTROLLERS; i ++){
    Ac->pad[i].c = contPad + i;
    Ac->pad[i].button = Ac->pad[i].push = 0;
  }
}


/*
 *  Action 構造体の更新
 */
void  actionUpdate(Action *Ac)
{
  u8   i;
  u16  button, change;

  
  /* コントローラの状態を得る */
  osContGetReadData(contPad);
  
  /* 全コントローラについて更新 */
  for (i = 0; i < MAXCONTROLLERS; i ++){

    /* 今フレームのボタンの状態 */
    button = Ac->pad[i].c->button;

    /* 前フレームのボタンの状態との比較 
       change : ON->OFF or OFF->ON  ===> 1
                ON->ON  or OFF->OFF ===> 0 */
    change = Ac->pad[i].button ^ button;
  
    /* ボタンは新たに押されたのか?
       push    : OFF->ON  ===> 1
                 else     ===> 0   */
    Ac->pad[i].push = change & button;

    /* 今フレームのボタンの状態を次フレームに残す */
    Ac->pad[i].button = button;
  }
}