#include #include #include #include #include #include #include #if 1 #define MOVING #endif void sendcmd(int fd, char *cmd) { write(fd, cmd, strlen(cmd)); } struct character { int dx, dy; int mx, my; int vx, vy; int image; } ch[3]; int image_init(int fd) { char cmd[128]; sprintf(cmd, "$id0000ffffffffffffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0001ffffff7777ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0002ffff77777777ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0003ffff77777777ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0004ffffff7777ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0005fffffff77ffff77f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0006fffffff77ffff77f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0007f77777777777777f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0008f77777777777777f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0009f77fff1111ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id000af77fff1111ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id000bffffff2222ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id000cfffff222222fffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id000dffff222ff222ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id000efff222ffff222fff+"); sendcmd(fd, cmd); sprintf(cmd, "$id000f222222ffff222222+"); sendcmd(fd, cmd); sprintf(cmd, "$id0100ffffffffffffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0101ffffff2222ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0102ffff22222222ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0103ffff22222222ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0104ffffff2222ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0105fffffff22ffff77f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0106fffffff22ffff77f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0107f77777777777777f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0108f77777777777777f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0109f77fff3333ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id010af77fff3333ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id010bffffff1111ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id010cfffff111111fffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id010dffff111ff111ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id010efff111ffff111fff+"); sendcmd(fd, cmd); sprintf(cmd, "$id010f111111ffff111111+"); sendcmd(fd, cmd); sprintf(cmd, "$id0200ffffffffffffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0201ffffff2222ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0202ffff22222222ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0203fff2222222222fff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0204ff222222222222ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0205ff222222222222ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0206ff222222222722ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0207ff222222227722ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0208fff2222227722fff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0209ffff22222222ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id020affffff2222ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id020bfffffff77fffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id020cfffffff77fffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id020dffffff77ffffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id020efffff77fffffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id020ffff777ffffffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0300ffffffffffffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0301ffffff4444ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0302ffff44444444ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0303fff4444444444fff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0304ff444444444444ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0305ff444444444444ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id0306f44444444444444f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0307f44444444444444f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0308f44444444444444f+"); sendcmd(fd, cmd); sprintf(cmd, "$id0309f44444444444744f+"); sendcmd(fd, cmd); sprintf(cmd, "$id030aff444444444774ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id030bff444444447744ff+"); sendcmd(fd, cmd); sprintf(cmd, "$id030cfff4444447744fff+"); sendcmd(fd, cmd); sprintf(cmd, "$id030dffff44444444ffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id030effffff4444ffffff+"); sendcmd(fd, cmd); sprintf(cmd, "$id030fffffffffffffffff+"); sendcmd(fd, cmd); return 0; } void send_chd(int fd, int i) { char cmd[128]; sprintf(cmd, "$dx%02x%04x+", i, ch[i].dx); sendcmd(fd, cmd); sprintf(cmd, "$dy%02x%04x+", i, ch[i].dy); sendcmd(fd, cmd); } void send_chm(int fd, int i) { char cmd[128]; sprintf(cmd, "$mx%02x%02x+", i, ch[i].mx); sendcmd(fd, cmd); sprintf(cmd, "$my%02x%02x+", i, ch[i].my); sendcmd(fd, cmd); } int sprite_init(int fd) { char cmd[128]; int i; srand(time(NULL)); for (i = 0; i < 4; i++) { #ifdef MOVING ch[i].dx = (rand() % 200) + 200; ch[i].dy = (rand() % 200) + 200; ch[i].vx = (rand() % 2) * 2 - 1; ch[i].vy = (rand() % 2) * 2 - 1; ch[i].mx = (rand() % 4); ch[i].my = (rand() % 4); #else ch[i].dx = (i % 2) * 160; ch[i].dy = (i / 2) * 160; ch[i].vx = (rand() % 2) * 2 - 1; ch[i].vy = (rand() % 2) * 2 - 1; ch[i].mx = 3; ch[i].my = 3; #endif send_chd(fd, i); send_chm(fd, i); sprintf(cmd, "$im%02x%02x+", i, i); sendcmd(fd, cmd); sprintf(cmd, "$en%02x%02x+", i, 1); sendcmd(fd, cmd); } return 0; } int main(int argc, char *argv[]) { int fd; #ifdef MOVING int i; #endif fd = open("/dev/cuad0", O_RDWR); if (fd < 0) { fprintf(stderr, "cannot open device.\n"); exit (-1); } image_init(fd); sprite_init(fd); #ifdef MOVING while (1) { for (i = 0; i < 4; i++) { ch[i].dx += ch[i].vx; ch[i].dy += ch[i].vy; if (ch[i].dx < 0) ch[i].vx = 3 + (rand() % 5); if (ch[i].dx> 639) ch[i].vx = -3 - (rand() % 5); if (ch[i].dy < 0) ch[i].vy = 3 + (rand() % 5); if (ch[i].dy> 479) ch[i].vy = -3 - (rand() % 5); if ((rand() % 100) == 0) { ch[i].mx = (rand() % 4); ch[i].my = (rand() % 4); send_chm(fd, i); } send_chd(fd, i); fprintf(stdout, "%d, dx = %d, dy = %d, vx = %d, vy = %d, mx = %d, my = %d\n", i, ch[i].dx, ch[i].dy, ch[i].vx, ch[i].vy, ch[i].mx, ch[i].my); } usleep(100000); } #endif return 0; }

AltStyle によって変換されたページ (->オリジナル) /