wav.c
来自「redboy for gba 是BPNS为GBA编写的一个小软件。软件的邹形是B」· C语言 代码 · 共 49 行
C
49 行
#include <CsAgb.h>
#include <rb_string.h>
#include <string.h>
#include <rb_stdio.h>
void play_wave(u32 srate,u32 loc);
u16 is_play_wav=0;
typedef struct //wave文件头信息
{
char type[4];//"RIFF"
u32 flen;//文件大小
char flg[4];//"WAVE"
char id[4];//"fmt "最后一个为空格
u32 size;//数据大小
u16 format;//1:无压缩
u16 channels;//声道
u32 sample_rate;//采样率
u32 cnt;//每秒播放数据 =rate为8位采样
u16 wBlockAlign;
u16 bit;//几位采样
char xxx[14];//???
char data[4];//="date"
u32 dat_cnt;//数据大小
} wav_head;//58个字符长度
int open_wav(u32 loc)
{
int i;
char *str=(char *)loc;
char *temp;//[sizeof(wav_head)];
wav_head head;
temp=(char *)&head;
for (i=0;i<sizeof(wav_head);i++) temp[i]=str[i];
head.type[3]='\0';
head.flg[3]='\0';
head.id[3]='\0';
str_up(head.type);
str_up(head.flg);
str_up(head.id);
if (strcmp(head.type,"RIF")!=0 || strcmp(head.flg,"WAV")!=0
|| strcmp(head.id,"FMT")!=0) return 1;//检查是否为wav文件
if (head.format!=1 || head.bit!=8) return 1;//检查是否为压缩格式与8位采样
stop_dsound();
is_play_wav=0;
is_play_wav=4*(head.flen/head.sample_rate);
show_float(is_play_wav,RGB(30,30,30));
play_wave(head.sample_rate,loc+sizeof(wav_head));//播放音乐
return 0;//返回
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?