PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

DXライブラリPortable を使ってプログラミングをしよう その1

まずは、mp3ファイルを再生するプログラムを作ることにします.
これをマスターできたら、mp3プレイヤー・アプリを作れるようになるかも知れませんね.

【 お約束事項 】
 DXライブラリPortable は MediaEngine側のCPUでmp3音声をデコードするコードを生成するのですc
 よって、スレッドの属性を ユーザーモードで書いてください.
 カスタムファームウェアのPSPの方は、リカバリーモードで Homebrew Game Folder を 1.50 Kernel では無い方(5.XX Kernel など)に設定してください.
 また、パソコンで WAVE から mp3 に変換する際は 「Lame Encoder」で行なって下さい.
 WAVE は、パソコンのシステム・サウンドファイルでも良いのですが サンプリング周波数が低かったり 再生時間が短かったりするので お手持ちの音楽CDアルバルを用意して下さい.

 mp3ファイルの作り方はこちらを参照のこと(Google検索)

 さて、mp3変換している間に EBOOT.PBP を作っちゃいましょう!
 使うライブラリは、最新版の DXライブラリPortable v0.5.7 です.
 >> DXライブラリPortable v0.5.7を導入しよう


ちゅうい!
 正常ビルドを確認したコンパイラは Minimalist PSPSDK v0.8.10 です

では、コピペ推奨で…… 今回は、各自コンパイルに挑戦してくださいっ

↓↓ファイル名は main.c でお願いします.

#include <dxlibp.h>
#include <pspaudiocodec.h>
#include <pspaudio.h>
#include <psputility.h>
#include <malloc.h>
#include <string.h>
#include <stdio.h>
#include <pspkernel.h>
#include <pspdisplay.h>
#include <pspuser.h>
#include <pspgu.h>
#include <pspctrl.h>


PSP_MODULE_INFO("PLaySound", 0, 0, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int main()
{
int handle_01; // サウンドのハンドル

if(DxLib_Init() == -1) { // もしライブラリの初期化に失敗したら
goto EXIT; // ラベル:EXIT へ飛びます
}

//=================================================================================
// まずは 全てのサウンドハンドルを削除します
InitSoundMem();

// ストリーミング再生モードに設定します(チョイ読みしながら再生)
SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);

// 再生させる音声ファイルを指定します(mp3ファイルを用意してね)
if((handle_01 = LoadSoundMem("ms0:/MUSIC/a.mp3")) == -1) { // もしエラーが発生したら
goto EXIT; // ラベル:EXIT へ飛びます
}

// パンを中央に設定します
SetPanSoundMem( 0, handle_01);

// 再生しよう! 音声が鳴れば、大成功 v
PlaySoundMem( handle_01, DX_PLAYTYPE_NORMAL, TRUE);

// 再生が終わったら、サウンドハンドルの再生を停止します
StopSoundMem( handle_01 );

//---------------------------------------------------------------------------------

// ◆ 今度は、その音声ファイルを、パンを左にして再生してみます ◆

// パンを左側に設定します(範囲は -10000 ~ +10000)
SetPanSoundMem( -9000, handle_01);

// 再生しよう! 左から音声が鳴れば、大成功 v
PlaySoundMem( handle_01, DX_PLAYTYPE_NORMAL, TRUE);

// 再生が終わったら、サウンドハンドルの再生を停止します
StopSoundMem( handle_01 );

//---------------------------------------------------------------------------------

// ◆ 今度は、その音声ファイルを、パンを右にして再生してみます ◆

// パンを右側に設定します(範囲は -10000 ~ +10000)
SetPanSoundMem( 9000, handle_01);

// 再生しよう! 右から音声が鳴れば、大成功 v
PlaySoundMem( handle_01, DX_PLAYTYPE_NORMAL, TRUE);

// 再生が終わったら、サウンドハンドルの再生を停止します
StopSoundMem( handle_01 );

//---------------------------------------------------------------------------------

// 終わったので、サウンドハンドルを削除します
DeleteSoundMem( handle_01 );

//=================================================================================

// エラーが発生したら、すぐココに飛んできます
EXIT:;

DxLib_End(); // 終了します
return 0;
}



Makefile も コピペ推奨

TARGET = PLaySound
OBJS = main.o

PSPSDK=$(shell psp-config --pspsdk-path)
INCS = $(PSPSDK)/include $(PSPSDK)/DXP/include
INCDIR = $(INCS)

CFLAGS = -Wall -G0 -O3 -fomit-frame-pointer -mgp32 -mlong32

CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR = $(PSPSDK)/DXP/lib
LDFLAGS =
LIBS = $(PSPSDK)/DXP/lib/dxlibp.a
LIBS += -lpspgu -lz -lm -lpsprtc -lpspaudio -lpspaudiocodec\
-lpsputility -lpspvalloc -lpsppower

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = PLaySound
PSP_EBOOT_ICON = NULL
PSP_EBOOT_ICON1 = NULL
PSP_EBOOT_UNKPNG= NULL
PSP_EBOOT_PIC1 = NULL
PSP_EBOOT_SND0 = NULL

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

main.o : main.c


おまけの !_ビルド.bat

PATH=C:\pspsdk\bin\;C:\pspsdk\psp\bin\
DEL *.ELF
DEL *.SFO
DEL *.PBP
make
pause



【 このソースについて 】
ソースについてですが、メイン関数にこんなに長く書いてしまうのは本来はNGです.
全体の流れが分かるように、通して書いたまでです.
このソースが 理解できたらサブルーチンを作って分割してみるのを推奨します.

【 著作権とか 】
このプログラムコードは、DXライブラリPortable を使う想定で書いてあります.
もし、このソースをコンパイルして出来た実行モジュールを配布などするなら DXライブラリPortable の 著作権 表記指示に従ってくださるよう、お願いします.
私は、このソースに 著作権を設定しません.改造を推奨します、是非っ

【 ヒント 】
mp3ファイルの名前を日本語にした場合、コンパイルで 下記のような warning が発生することがあります.
main.c:35:34: warning: unknown escape sequence: '\217'
main.c:35:34: warning: unknown escape sequence: '\216'
↑↑ 原因は、その日本語文字列に「だめ文字」が含まれているからなので、【はるるん v0.3】でソースを修正して下さい.

実行結果が どうなるかは楽しみにとっておきますので、実行して確認して下さいませ.

解説は次回やります.


PSPプログラミング EBOOT.PBP 生成用 Makefile 記述方法
PSPプログラミング 正しい main( ) 関数の書き方を ご紹介
PSPプログラミング PSP の 1.50カーネルとか、3.xxカーネルとか についての講釈
PSPプログラミング 「CFW導入済み 全PSP」対応の Homebrew 作成方法
PSPプログラミング Windowsアプリ 制御文字リペア 【はるるん v0.3】 リリース!
PSPプログラミング PSPSDKにライブラリを追加しよう(4) DXLibP v0.5.7
PSPプログラミング DXライブラリPortable でプログラムの「核」を書く
PSPプログラミング DXライブラリPortable サウンド関数の解説(1)
PSPプログラミング DXライブラリPortable サウンド関数の解説(2)
PSPプログラミング DXライブラリPortable サウンド関数の解説(3)


関連記事
スポンサーサイト

[edit]

CM: 0
TB: 0

page top

この記事に対するコメント

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://nekoyama2gillien.blog36.fc2.com/tb.php/221-9d780523
この記事にトラックバックする(FC2ブログユーザー)

page top


h o m e |


 

2017-09