2009年09月01日


NP21 for PSP Ver0.34をmakeする

さて、すっかり忘れていて申し訳ありませんでしたが、NP21 for PSP Ver.0.34をmakeしてみます。

NP21のソースも「NP2 for PSP v0.34ソース」に含まれています。
psp/Makefileを除いてみると、NP21がdefineされているかどうかで処理を分けているところが何箇所かあります。

# makefile for PSP

#NP21=1
PSPDEV=1
VERSION=0.34
#PSPDBG=1

ifdef NP21
TARGET = NP21
else
TARGET = NP2
endif
とか

ifdef NP21
IX86C = ../i386c
I386C = ../i386c
else
IX86C = ../i286c
I286C = ../i286c
endif

等ですね。

つまり、NP21=1を有効にしてmakeすれば、NP21 for PSPが作成されます。
早速実行してみましょう。


hissorii@ubuntu:~/tmp/np2psp_work/psp$ make NP21=1
:
net_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o NP21.elf
psp-fixup-imports NP21.elf
mksfo 'NP21 for PSP ver0.34' PARAM.SFO
psp-strip NP21.elf -o NP21_strip.elf
pack-pbp EBOOT.PBP PARAM.SFO NP21_logo01.png \
NULL NULL NULL \
NULL NP21_strip.elf NULL
[0] 408 bytes | PARAM.SFO
[1] 11449 bytes | NP21_logo01.png
[2] 0 bytes | NULL
[3] 0 bytes | NULL
[4] 0 bytes | NULL
[5] 0 bytes | NULL
[6] 729932 bytes | NP21_strip.elf
[7] 0 bytes | NULL
rm -f NP21_strip.elf
hissorii@ubuntu:~/tmp/np2psp_work/psp$


はい、これだけです。Makefileで対応できているので簡単でした。
アイコンもNP21用のものが使われています。

NP21 for PSP Ver0.34のバイナリは後ほどアップします。


posted by ひっそりぃ at 2009/09/01 12:00 | Comment(0) | TrackBack(0) | NP2 for PSP | このブログの読者になる | 更新情報をチェックする

2009年08月27日


NP2 for PSP Ver0.34 リリース

ということで、sakahiさんから引き継ぎ、NP2 for PSP Ver0.34をリリースします。

ver0.34
・BEEP/PSG音源が正しく再生されていなかった問題を修正
・起動時の「ぴぽっ」がなるようになりました。

NP2 for PSP v0.34バイナリ

NP2 for PSP v0.34ソース

例によって画面写真等の紹介記事は追ってひっそりぃドットコムの方で書きたいと思います。
posted by ひっそりぃ at 2009/08/27 17:20 | Comment(7) | TrackBack(0) | NP2 for PSP | このブログの読者になる | 更新情報をチェックする

NP2 for PSPでPC-98起動音を鳴るようにする

NP2 for PSPの公式サイトの掲示板にて、NP2 for PSPの最新ソースをいただけないか頼んでみたところ、ありがたいことにお返事をいただけました。

そして、v0.34の作成を依頼されました...

なんでも、v0.33までは、音源関係の小数演算を全て整数に変換して行っていたということです。最新の開発環境では小数演算もできると思うので、整数に変換したものを元の小数演算に戻してほしい、ということです。

soundディレクトリあたりをざっと見てみると、確かに#ifdef PSPされた箇所にそれっぽいところが何箇所も見られます。
たとえば、sound/opngenc.cを見ると、以下の様な小数演算を整数演算に直しているところや、

#define EG_STEP (96.0 / EVC_ENT) // dB step
#ifdef PSP
#define SC(db) (SINT32)((db * (3 * EVC_ENT / 96) * (1 << ENV_BITS)) + EC_DECAY)
#else
#define SC(db) (SINT32)((db) * ((3.0 / EG_STEP) * (1 << ENV_BITS))) + EC_DECAY
#endif

ここら辺には、あらかじめ作成された数値テーブルが埋め込まれています。

#ifdef PSP
// OPNGENX86がdefineされた場合の処理は未対応
static SINT32 psp_envtable[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,

:

static SINT32 psp_sintable[] = {
0, 50, 100, 150, 201, 251, 301, 351,
402, 452, 502, 552, 603, 653, 703, 753,
803, 854, 904, 954, 1004, 1054, 1104, 1155,
1205, 1255, 1305, 1355, 1405, 1455, 1505, 1555,


上記の数値テーブルを作成するのが、psp/psp/mk_n2p_data.cですね。これはmain()関数をもつ、独立したアプリケーションで、これで小数演算をPCなどであらかじめ行っておいて、NP2 for PSP本体にテーブルごと埋め込んでいたんですね。
NP2 for PSPのプログラムの方は、きれいに#ifdef PSPされているので、この部分を全てはずして元に戻せば大丈夫そう。

で、やってみた。音がなんか変。というかかなり変。きれいに鳴っていたFM音源がそもそもノイズだらけになって聞けたものではなかった。

で、ソースを調べていて原因が分かりました。
psp/psp/psplib.cにこんなコードが残っていました。


//浮動小数点関係は無効
:
//#ifndef PSPDEV
sin() {}
pow() {}
//#endif


sin()とかpow()とかダミー関数で中身が空っぽ。ダミーだこりゃ。
これを消して、sdkが用意している数値ライブラリをリンクするようにMakefileを修正します。LIBSの行に-lmを追加しました。

LIBS = -lpspgu -lpsppower -lpspaudiolib -lpspaudio -lm


おっけー。うまくいきました。FM音源のノイジーも元に戻って、待望の「ぴぽっ」も鳴るようになりました。
後ほど、NP2 for PSP Ver0.34 リリースします。
posted by ひっそりぃ at 2009/08/27 16:43 | Comment(0) | TrackBack(0) | NP2 for PSP | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。