※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


kyotsu.hの作成

メモ帳に以下の内容を書き、kyotsu.hという名前でcc65/includeに保存します。
/////////////////////////////////////////////////////////////////////////////////
// 2010.11.30 ver 0.02
// 煮るなり焼くなりお好きにどうぞ。
// -----------------------------------------------------------------------------
// cc65@wiki
// http://www34.atwiki.jp/cc65/
/////////////////////////////////////////////////////////////////////////////////
//アタリ判定(長方形)
char HitBox(unsigned char ax1,unsigned char ay1,unsigned char ax2,unsigned char ay2,
            unsigned char bx1,unsigned char by1,unsigned char bx2,unsigned char by2)
{
   if (ax1 < bx2 && bx1 < ax2 && ay1 < by2 && by1 < ay2) {
        return 1;
    } else {
        return 0;
    }
}
 
//アタリ判定(円形)
char HitCircle(unsigned char ax,unsigned char ay,unsigned char adiameter,
               unsigned char bx,unsigned char by,unsigned char bdiameter)
{
    unsigned char w,x,y,z;
 
    x = ax + adiameter / 2;
    w = bx + bdiameter / 2;
    if (x > w) {
        x -= w;
    } else {
        x  = w - x;
    }
 
    y = ay + adiameter / 2;
    w = by + bdiameter / 2;
    if (y > w) {
        y -= w;
    } else {
        y  = w - y;
    }
 
    z = (adiameter + bdiameter) / 2;
 
    if (x * x + y * y < z * z) {
        return 1;
    } else {
        return 0;
    }
}
 
//配列比較
char memcmp(char *a, char *b,char len)
{
    unsigned char i;
    for (i = 0; i < len; i++)
    {
        if (*(a + i) != *(b + i)) {
            return 0;
        }
    }
    return 1;
}
 
//配列複写
void memcpy(char *a, char *b,char len)
{
    unsigned char i;
    for (i = 0; i < len; i++)
    {
        *(a + i) = *(b + i);
    }
}
 
//配列複写(開始アドレス指定)
void memcpyfr(char *a, int afr, char *b, int bfr, char len)
{
    unsigned char i;
    for (i = 0; i < len; i++)
    {
        *(a + afr + i) = *(b + bfr + i);
    }
}
 
//待機処理
void Wait(int cnt)
{
    unsigned int i;
    for (i = 0; i < cnt; i++) {}
}
 

kyotsu.hの解説

  • HitBox:アタリ判定(長方形) 1=衝突 0=なし
    • ax1,ay1:キャラ1の左上座標
    • ax2,ay2:キャラ1の右下座標
    • bx1,by1:キャラ2の左上座標
    • bx2,by2:キャラ2の右下座標
  • HitBox:アタリ判定(円形) 1=衝突 0=なし
    • ax,ay:キャラ1の左上座標
    • adiameter:キャラ1の直径
    • bx,by:キャラ2の左上座標
    • bdiameter:キャラ2の直径
  • memcmp:配列比較 1=一致 0=不一致
    • *a,*b:比較する配列のポインタ
    • len:比較するバイト数
  • memcpy:配列複写
    • *a,*b:複写する配列のポインタ
    • len:複写するバイト数
  • memcpyfr:配列複写(開始アドレス指定)
    • *a,*b:複写する配列のポインタ
    • afr,bfr:複写する配列の開始アドレス
    • len:複写するバイト数
  • Wait:待機処理
    • cnt:待機する数