コントローラ用の関数が用意されているので、ドキュメントのjoy.hを見ながらコントローラからの入力を試してみます。
JOY_init()がいかにも初期化用関数っぽいですが、ドキュメントを読むと、SGDKが自動的に呼び出すので、自作プログラムから呼び出さなくていいみたいです。
パッドの状態を読むにはJOY_readJoypad()を使います。
ドキュメントを読むと、パッドの状態は垂直同期割込み毎に更新されるようです。また、JOY_update()を使うと、強制的にパッドの状態を読み直すみたいですね。あと、JOY_setEventHandler()を使う事でパッドの状態が変化すると関数を呼び出すようにすることも出来るみたいです。
雑なプログラムですが、特にハマリどころも無く動きました。
#include <genesis.h>
int main()
{
u16 x0, y0;
u16 x1, y1;
u16 pad0, pad1;
x0 = y0 = x1 = y1 = 0;
pad0 = 0;
while(1)
{
pad1 = JOY_readJoypad(JOY_1);
if (pad0 != pad1) {
pad0 = pad1;
x0 = x1;
y0 = y1;
if (pad1 & BUTTON_UP) y1--;
if (pad1 & BUTTON_DOWN) y1++;
if (pad1 & BUTTON_LEFT) x1--;
if (pad1 & BUTTON_RIGHT) x1++;
}
VDP_waitVSync();
VDP_drawText(" ", x0, y0);
VDP_drawText("A", x1, y1);
}
return (0);
}