home *** CD-ROM | disk | FTP | other *** search
- /* zmdplay.c */
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/iocs.h>
-
- #include "zmcall.h"
-
-
-
- void usage (void)
- {
- printf (
- ".ZMD ファイルを演奏するテスト zmdplay.x ver0.01\n"
- " programmed by Mitsuky <FreeSoftware>\n"
- "PT034MK.ZMD を読み込んで演奏し、AXE0004.PCM を再生します\n"
- );
- }
-
-
-
- int main (int argc, char *argv[])
- {
- FILE *fp;
- void *zmd_file, *pcm_file;
- int zmd_size, pcm_size;
-
- if (argc > 1) {
- usage ();
- return (-1);
- }
- /* PT034MK.ZMD をメモリに読み込む */
- fp = fopen ("PT034MK.ZMD", "rb");
- if (fp == NULL) {
- printf ("PT034MK.ZMD が読み込めません\n");
- return (-1);
- }
- fseek (fp, 0, SEEK_END);
- zmd_size = ftell (fp);
- fseek (fp, 0, SEEK_SET);
- zmd_file = malloc (zmd_size);
- if (zmd_file == NULL) {
- printf ("メモリが足りません\n");
- return (-1);
- }
- fread (zmd_file, sizeof (char), zmd_size, fp);
- fclose (fp);
-
- /* AXE0004.PCM をメモリに読み込む */
- fp = fopen ("AXE0004.PCM", "rb");
- if (fp == NULL) {
- printf ("AXE0004.PCM が読み込めません\n");
- return (-1);
- }
- fseek (fp, 0, SEEK_END);
- pcm_size = ftell (fp);
- fseek (fp, 0, SEEK_SET);
- pcm_file = malloc (pcm_size);
- if (pcm_file == NULL) {
- printf ("メモリが足りません\n");
- return (-1);
- }
- fread (pcm_file, sizeof (char), pcm_size, fp);
- fclose (fp);
-
-
- if (ZmKeepCheck () < 0) {
- printf ("ZMUSIC が常駐していません\n");
- return (-1);
- }
- ZmInit (); /* ZMUSIC 初期化 */
- ZmPlay (zmd_file, zmd_size); /* .ZMD を演奏する */
-
- printf ("ジョイスティックの [A] ボタンを押すと効果音を再生します\n"
- "[B] ボタンで終了します\n");
-
- for (;;) {
- int j; /* ジョイスティックの入力 */
-
- j = _iocs_joyget (0); /* ジョイスティック0番 */
-
- /* [A] ボタンが押されたか? */
- if ((j & 0b00100000) == 0) {
- ZmAdpcmSE (pcm_file, pcm_size, 4 * 256 + 3, 0); /* 効果音再生 */
- /* [A] ボタンが離されるのを待つ */
- while ((_iocs_joyget (0) & 0b00100000) == 0);
- }
- /*
- ZmAdpcmSE() の引き数
- ADPCM データへのポインタ,
- ADPCM データのサイズ,
- 周波数*256+PAN,
- 優先順位
- */
-
- /* [B] ボタンが押されたか? */
- if ((j & 0b1000000) == 0)
- break;
- }
-
- ZmStop (); /* 音楽停止 */
-
- free (zmd_file);
- free (pcm_file);
-
- return (0);
- }
-