由小白到大大的涅盘,从vgsky.com开始!

学习PSP游戏制作实况记录:制造噪音 安装mikmodlib

Update:2007/10/6,Click:0 本文如有下载 请从下面附件中下载

举手之劳 是您对我们最大的支持 感谢您!

相信大家对欣赏默片的兴趣都不会很大, 游戏也一样, 要是没有声音的辅助, 效果肯定会大打折扣! 所以这一篇我们研究一下怎样在PSP上弄点噪音 ;)5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 当我把跟随PSPSDK的声音范例会来一看, 不禁吓了一跳, 弄点声音, 不用这么一大段代码吧? 还好, 前人种树, 后人遮荫, 在svn.ps2dev.org 这个大宝藏里, 又找到宝藏: mikmodlib, 这样一来, 一切就变得容易得多了 :)5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
         UNIMOD *music = NULL;       // 音乐5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       SAMPLE *sample = NULL;       // 声效5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       int voice;                           // 声效handle5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
        ...5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       InitMikMod();5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       music = MikMod_LoadSong("china.mod", MAX_CHANNEL);5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       Player_Start(music);         // 播音乐5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       sample = WAV_LoadFN("right.wav");5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
        ....5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       if ((pad.Buttons&PSP_CTRL_CIRCLE) && !(oldButtons&PSP_CTRL_CIRCLE))       5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       {5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
              voice = MikMod_PlaySample(sample, 0, 0);    // 播声效5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
       }
5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 mikmodlib支持的音乐/声效格式不算太多, 但足够我们用以写一般的游戏了, 声效方面支持的是WAV, 而音乐方面则主要是mod 和一些由mod演变出来的格式, 如.it, .xm 和 .s3m.5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 WAV大家都应该耳熟能详了, 至于mod是什么呢? 或者在这里和大家简单介绍一下: mod 是一种源自Amiga计算机的音乐格式, 它的主要特点是把音乐所用的乐器的样本数据(sample), 也存在档案内, 所以用mod格式, 只要我们用的样本数据是高质量的, 播放出来的音乐基本上和wav 或 mp3的分别不大, 但它的档案比wav要小很多, 而播放时又不会像mp3般浪费系统资源.5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 用cygwin自行安装mikmodlib的方法大约如下:5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 - 打开cygwin5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 - svn export svn://svn.ps2dev.org/psp/trunk/mikmodlib5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 - cd mikmodlib5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 - make install5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 但这时应该有错 ;)5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 10月21日新拿到的mikmodlib似乎未有更新至应用最新的pspsdk. 所以我们要打开 mikmodlib/playercode/drv_psp.c, 把 PSP_Init(void)中, 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 pspAudioSetChannelCallback(0, (void *)sound_callback); 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 改为5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 pspAudioSetChannelCallback(0, (void *)sound_callback, NULL); 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 再 "make install" 一次就应该行了!5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 而用devkitPSP r5的朋友, 郄可以直接编译安装呢 :)5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 现在让我们跟这只可爱的老鼠一起闻歌起舞吧!5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 (又见到Anjou 可爱的老鼠了)5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 附带的执行包是1.50的 :) 自行编译, 要把mouse.png, cursor.png, bg.png, china.mod和right.wav放在记忆棒game05的目录内!5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 后记:5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 记得N年前, 我曾经在DOS环境下用watcom c++ 和 assembler 写过一个简单的mod player, 试听用的就是附录在示范包内一个叫"china.mod"的音乐, 经过几个晚上的苦战, 终于从sound blaster 卡内听到她美妙的乐章, 当时的感觉真是兴奋莫名! N年后, 再次从PSP听到同一首熟悉的音乐, 感觉依然是那么美妙!5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 5)TGdw5174>'>IE/}{+a5/NJE<i{36Y&xBE)zCj*k;R6@}MM!3B(}{612rB*UH7qE'd=ODXc.Q本文来自:V电G玩S天K空Y
 我想这一篇应该可以作为我们"学习"阶段的一个小结了! 运用我们现在已有的函数库, 我们应该可以写些不太复杂的游戏了, 所以跟着我打算开始写一个简单的射击游戏, 而在写游戏中另外需要的函数, 我们再一一加进去! 还有一样我准备做的, 就是由c 转到c++, 在此要感谢nj-zero在这方面的研究和分享 :)

【分类导航】

【热门游戏资讯】

更多

【推荐游戏资讯】

更多

【最新资讯更新】

更多

【赞助商链接】