PSP开发教程第六课----如何加入音乐

本教程介绍如何在PSP游戏机上播放MP3音乐,包括获取libmad库、编译安装、编写C语言代码及Makefile配置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
中将 你在程序中播放音 来一点小小的提示。音效和背景音 乐经 常被忽略,但它往往能 你的程序 得更有趣。幸运的是, 篇教程会教你如何在程序里加入音
 
 首先我
先要通 SVN得到libmad(libmad是一个遵循GPL的MPED的音 开发 包)
cygwin, 入:
 svn checkout svn://svn.ps2dev.org/psp/trunk/libmad
你会看到一个很
的列表,我 们进 到libmad目 编译这
cd libmad
make
下一
回合我 第4 中学 到的安装 文件的方法有些不同,平常我只需要 入“make install”,就会自 的安装文件到相 的目 里。 里不同了,libmad的安装脚本 make install不感冒,,不 不要担心,我 自己 手来解决它
cp -Rf ./include /usr/local/pspdev/psp/
cp -Rf ./lib/libmad.a /usr/local/pspdev/psp/lib
注意:"./include" 和"/usr..." ,libmad.a" 和 "/usr..."之
各有一个空格
所有的文件就会被拷
到相 的位置。“-Rf” 标签 的意思是"Recursive"( 递归 ) 和 "final"(最后)--帮助你保 准确无 的拷 所有文件。
接下来,下
另外一些必要的文件mp3player.c 和 mp3player.h在一个新建的文件 里(下 地址:http://www.scriptscribbler.com/psp/tutorials/lesson06.zip)
下面
入本 中有趣的部分:建立main.c,写把注 写上吧!
// Mp3 Player Sample on PSP
// By *YOUR NAME HERE*
下面
段代 你是否感 似曾相 啊,只有两个新的.h文件看起来眼生,他 是在程序中加入音 频处 理部分所必 的。
#include <pspkernel.h>
#include <pspctrl.h>
#include <pspdebug.h>
#include <pspaudio.h>
#include <pspaudiolib.h>
#include <psppower.h>

#include "mp3player.h"

PSP_MODULE_INFO("Mp3 Player Example", 0, 1, 1);
#define printf pspDebugScreenPrintf
你肯定
还发现 才下 的mp3player.h(它一定要和你的源代 在同一文件 里),我 们还 了printf和PSP_MODULE_INFO。
候是本 中的黎明前 分,因 不知道下面 段代 工作,不 以后会明白的。但是可以肯定它 你的程序是十分必 的。
// TWILIGHT ZONE!
<do doo do doo>
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
          sceKernelExitGame();
          return 0;
}

/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
          int cbid;

          cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
          sceKernelRegisterExitCallback(cbid);

          sceKernelSleepThreadCB();

          return 0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
          int thid = 0;

          thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
          if(thid >= 0) {
                    sceKernelStartThread(thid, 0, 0);
          }

          return thid;
}
// END OF TWILIGHT ZONE!
<do doo do do>
始我 的main部分吧,首先我 们让 psp的 时钟满负 荷,不用担心 绝对 不会 你心 的小p受到任何 害。 得注意的是:“pspAudioInit()”函数,它跟我 们经 用的“pspDebugScreenInit()”函数有些 似之 ,它 psp 为发 声做好准
int main() {
          scePowerSetClockFrequency(333, 333, 166);

          pspDebugScreenInit();
          SetupCallbacks();

          pspAudioInit();
          SceCtrlData pad;
          int i;
擦亮你的眼睛,新
西哦
          MP3_Init(1);
          MP3_Load("test.mp3");
          MP3_Play();
MP3_Init() 初始化了一个
构体, 入的参数代表psp播放 所使用的声道(本例中 选择 的是1)。MP3_Load() 负责读 取你的mp3文件(文件名是test.mp3).。MP3_Play() 你的psp 始播放mp3。
下面是一些你可以
选择 的部分,会 你提供一个 简单 的用 界面。
                 while(1) {
                    sceCtrlReadBufferPositive(&pad, 1);
                    if(pad.Buttons & PSP_CTRL_CROSS) {
                              break;
                    } else if(pad.Buttons & PSP_CTRL_CIRCLE) {
                              MP3_Pause();
                              for(i=0; i<10; i++) {
                                        sceDisplayWaitVblankStart();
                              }
                    }

                    if (MP3_EndOfStream() == 1) {
                              MP3_Stop();
                    }
          }
这样 就可以 取用 的按 键输 入(第3 中已 经说 明了),如果我 按了“X”,我 就会退出播放循 ,如果按下“O”,MP3_Stop() 函数会帮我 们暂 停mp3的播放。最后我 用MP3_EndOfStream()函数来 检查 mp3是不是播放完了。如果播放完,函数返回1,没有播放完就返回0。如果播放完了,我 要将重 播放的功能停止,不然它一直播放到psp没
接下来,我
添加一些当用 退出播放循 束作用的代
        MP3_Stop();
          MP3_FreeTune();

          sceKernelSleepThread();

          return 0;
          }
关闭 的程序,首先我 先要停止mp3, 放播放mp3文件 使用的内存空 放空 间对 程序来 是十分重要的。如果那你不 放内存的 部分内存在MP3停止之后不能被其他程序使用。
就是本 所的c程序。很 简单 吧。接下来 是要Makefile
住了,Makefile没有后 名。
最大的改
是我 添加了新的 “lmad”,用来 接libmad, mp3 编码 ,"pspaudiolib" 和 "pspaudio"
们访问 psp的声音 设备 提供了接口。
TARGET = mp3
OBJS = mp3player.o main.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =

LIBS = -lmad -lpspaudiolib -lpspaudio -lpsppower
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = MP3 Player Example
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

在,我 们进 入cygwin,找到我 的工程文件 入那个有魔力的 单词 “make”!
你需要拷
test.mp3文件到你的psp,1.50版本, 你把它放在文件名 尾没有 "%"的那个文件 。另外mp3文件的比特率必 小于等于160 KBPS,否 将会提示 错误 ,但是播放没有 问题
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值