FC2ブログ
東方移植計画
PSPのプログラミングとかが全く解らない初心者が
多くの人に愛される弾幕系シューティングゲームをPSPに移植してみる試み。
                      ------Last update 7/15(記事以外)------
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
PSPでケロちゃん風雨に負けず バイナリキタ━━━━(゜∀゜)━━━━ッ!!
七次元様が公開されていた動画のバイナリが公開されたようです。



この動画です。

画像コンバータ同梱で配布されている模様。

早速TRY!地味にやり方とかあったりなかったり。
使った物
①brightmoon
②anm2png
③一括.bat
④dBpoweramp Music Converter
⑤東方BGM Player THxxBGM
Lame Ivy Frontend Encoder

※以下で言う"PSPフォルダ"とは、七次元様配布のパッケージの中にあるフォルダを指します。
メモステのPSPフォルダのことではありません。

手順1:画像コンバート
①七次元様の所からバイナリ&コンバータ同梱パッケージをDL
②それを適当なところに解凍
③brightmoonを使い、風神録のdatファイル(th10.dat)を展開(このフォルダはまた後で使います)
④その中のanmファイルを別のフォルダに隔離
⑤anm2pngとbatファイルを④のフォルダに叩き込む
⑥一括.bat実行。
⑦出てきたフォルダ群の中の画像ファイル全てを一つの別フォルダに隔離(多分必要ファイルだけで良いけど振り分けめんどくさい)
⑧画像コンバータを使用し、そのファイルを指定。
中に出てきたbmp(7個)とbin(2個)をPSPフォルダに叩き込む

以上で画像は完了です。次、音楽関係行きます。

手順2:音楽変換
①手順1の③で作ったファイルの中からse_kira00.wav、se_pldead00.wav、se_plst00.wavをどっかに隔離
②それをdBpoweramp Music Converterにかけ、wave、2ch、16bit、44.1KHzで上書き
③出来た効果音×3をPSPフォルダに叩き込む
④次に東方BGM Player THxxBGMを使用し、ネイティブフェイスを吸い出す
⑤th10_15.wavが出てくるハズなので、それをLame Ivy Frontend Encoderにかけmp3に変換
そいつ(th10_15.mp3)をPSPフォルダに叩き込む

これで全て完了です。PSPフォルダをms0:/PSP/GAMEに叩き込み、実行。
こんな感じになれば、成功です。
toho1
クリックで拡大


わはーすごいすごい
操作はreadmeに書いてあるとおりです。その他にも色々な隠し機能が存在しますが、触ってはいけないようです。

でも動画とは多少違いますね。画像も動画は地霊殿だった気が・・・
う~む、ソース欲しい。 ・・・自分で頑張ります。ハイ。

と言う訳なのでした。


七次元様へ
問題があるようでしたら記事を削除しますのでその際はお手数ですが連絡して下さい。
スポンサーサイト




コメント
▼この記事へのコメント<(あれば表示)
なんだ、この記事は…

いいぞ、もっとやれw

自分が動画を上げたときはすべて手動で画像を加工してたので、1回目のテストの時に使用した地霊殿のフレーム画像をそのまま使ってただけです。
わざわざ風神録以外から持ってくる意味もないですしね。
べ、別に差し替えるのを忘れてたわけじゃないんだからね///
他にも余白部分の色が#0000FFだと明るすぎたので、暗くしてます。
左に表示してるデバック情報も減ってますが、実はこの文字の表示だけで111MHz時に2ms以上使用してることがわかりました^^;
効果的な改善点の内の一つなんですが、記事に書き忘れてたな…

ソースと言っても、本当普通の内容だしなぁ…
C言語には慣れてないので、かなり稚拙でルールのない滅茶苦茶な書き方だから、非常に読み辛いと思います^^;
それと、やっぱり自分で組んだ方が効率が良くなると思います。
他人が使うことを想定してないので、意味不明な俺様用関数の内容を理解して手直しをする手間も出てきますし。
オープンソースなソフトを色々参考するのに、自分は公開しないという都合の良い俺w
o... rz
GPLコワイ

デバッグ機能ですが、Rトリガーを押しながら十字キーを押すことで、自機、弾、背景やフレームの表示を設定できます。
1回目のテストの時に実装したものなので、一部の画像は表示されたままです。
弾を非表示にすると、移動の計算も止まって弾が増え続ける状態になるので、最高2000発まで増やすことが可能です。
どれだけの弾を処理落ちが無く処理できるかのテストにも使えますが、一箇所に固まってしまうので正確なデータを取るのは難しいです。
他にも起動時にコマンドを入れると1回目のテストが起動するようになってますが、素材がそろってないのでフリーズして電源が落ちます。

あと、効果音変換部分の44.1KHzが4.41KHzになってますYO!
2009/07/09(木) 02:12:22 | URL | by七次元 (#sGvNOJjo) [ 編集]
報告ありがとうございます。誤り修正しておきました^^;

しかしデバッグ情報って案外処理時間食うんですね。
文字の表示だけ ってことは、計算の時間は別換算なんですか?

ソースは余り期待していなかったんで大丈夫です^^;
オープンソースと言いますが、参考に出来そうなソフトを探すのが一苦労という・・・ウッ(´;ω;`)
よさげなソフトが見つかってもオープンソースじゃなかったり・・・
どこかにまとめサイトないかなぁ・・・

画像表示の設定は気づいてましたが書きませんでした。
一応禁止されてたもんで^^;
R←で消したときはそんな処理が施されていたんですね。

最後になりましたが、わざわざコメントありがとうございます。
2009/07/09(木) 19:26:42 | URL | by紅黒 (#-) [ 編集]
デバッグ情報の計算(計測)はすべて内部で行ってますね。
表示部分をコメントアウトしただけなので、時間の計測やら空きメモリの計測もすべて行ってる状態です。
SDKに付いてるデバッグ用の文字表示関数は、VRAMに直接書き込んでるので、メモリへのアクセスが遅いPSPだと非常にタイムロスになります。
GUで文字を表示させるためのライブラリとか作らないといけないんだろうなぁ…

今回、自分が参考にしたのはSDK付属のサンプルと龍神録プログラミングの館ぐらいですね。
あとはMP3の再生には、開発スレに投下されたライブラリを利用してます。

デバッグ機能は特に書く必要がないと思ってたので、触らないように書いただけです。
何も書かないとバグだと思われそうだったんで^^;
2009/07/09(木) 19:43:43 | URL | by七次元 (#sGvNOJjo) [ 編集]
じゃあ計算部分ではあまり時間取られていないんですか・・・
debug系関数が重いというのは噂に聞いていましたが、
そんな使用になっているせいで重かったんですね。

mediumgauge氏制作の全角文字表示ライブラリはGU使っていないですか?
重いかどうかはわかりませんが^^;

SDKのサンプルだけで出来るものなんですか・・・
まだまだ解析が甘いと言ったところですかね。精進します。

龍神録さんのところの弾の管理システムだとPSPでは速度が出ないと勝手に思いこんでいるのですが・・・どうなんでしょうか^^;
2009/07/09(木) 20:46:03 | URL | by紅黒 (#-) [ 編集]
デバッグ系の関数が重いというのは分からないですが、描画に関してはVRAMを直書きする方法なので、遅いですね。
VRAMの場合はすぐに表示する必要があるので、CPUキャッシュではなく、メモリに直接書き込む必要もありますし。

mediumgauge氏のも同じくVRAM直書きです。
しかもダブルバッファに対応してないので、修正が必要になってきます。
2バイト文字を使う分、処理が多そうな気がしますね…

SDKのサンプルを参考と言っても、GUの使い方ぐらいですね。
龍神録の館もゲームの構成を参考にしてるだけで、ソースは自分で考えて書いてます。
とはいえ、弾を登録制にして、ループ回して計算、表示するのは同じだと思いますが。
2009/07/09(木) 21:53:58 | URL | by七次元 (#sGvNOJjo) [ 編集]
Re: タイトルなし
そうなんですか・・・よくわかってもいないのに意見するべきじゃないですね^^;

サンプルは参考にしてるだけ、でしたか。申し訳ないです。
PSPは計算速度はそんなに遅くないんですね。
七次元様がその方法でやっているというのであれば可能なのでしょう。

なんどもなんどもありがとうございます^^;
2009/07/09(木) 23:07:18 | URL | by紅黒 (#-) [ 編集]
まぁ、自分も良く分かってないので手探り状態ですw
他の人との会話を通して知ることは良いことだと思いますよ。

他のソースを参考したりしてるのは、CPU使用率の測定だとか、prxを作成してWindowsのDLLのように使う方法だとかで、中身にはあまり関係の無いことばかりです。

計算速度は1000回以上ループしてるので、乗除算とかが多いとやはり遅くなってきます。
使用頻度の高い関数だと、ループ回数の何倍も呼ばれるのでちょっと複雑になるだけで遅くなります。
逆を言えば、その関数をちょっと手直しするだけで負荷が減ったりします。
三角関数の関数(?)で、360度を超えていた場合の処理をn%360からwhileで360を引く処理にするだけでも、そこそこ負荷が減りました。
桁が多くなってくると%360の方が早くなるかもしれませんが…
doubleやfloatも極力使わない方が良いかもしれません。

あと、私のブログと紅黒さんのブログのURLを載せた変なスレが立てられてるようです^^;
2009/07/10(金) 02:55:33 | URL | by七次元 (#sGvNOJjo) [ 編集]
2chで晒されるとはこのブログも大きくなったなぁ・・・
アクセス数が地味に上がったのはそのせいなんでしょうね。

三角関数・・・というと当たり判定とホーミング計算ですか?
あ、当たり判定はピタゴラスの定理か・・・
そんな地味な変更だけで早くなるって事は、本当にシビアな世界なんですね・・・
PCの容量に甘えていた時代が懐かしいですw
doubleは使うなと各所で聞きましたが、floatも使うなと言うのは初耳です。
やはり浮動小数点の計算は遅いんですか・・・

ブログをあんな風に使うことが出来るのには少しびっくりしました(←そっちかい
東方関連はアンチが多いせいなのかアホが多いせいのか、
変な行動をする輩が後を絶ちませんねー^^;
それでもほんの一部の方だけなのでしょうが。
一体何がしたいのか私には解りかねます^^;
2009/07/10(金) 16:52:51 | URL | by紅黒 (#-) [ 編集]
乗除算が遅く、特に除算が遅いとか聞いたことあります。
自分もよくわかってないのですが、やはりfloatよりintの方が早いと思うので、自分が知ってるような高速化は全部やっとけって感じですw
計算がめんどくさくなるので、保守性や可読性が低下するので、コメントとか付けていくべきなんですが、自分のソースはつけてないのでたまにミスって弾が瞬間移動したりw

あの使い方はエイプリルフールネタの時に考えましたw
FC2の広告を消してはいけないので、上と下のフレームに分けて、広告を表示してるので何とか規約通りになってるはずなんですが…
そもそも改変自体だめかも?w
今回は自分もちょっと煽りすぎたようです。
でも、やっぱりちょっと納得がいかない部分が多いですね。
今回のことで、多くの人が私と関わりたくなったことでしょう。

あと、こっちのリンクにも紅黒さんのブログを追加しておきましたが、問題があるようなら遠慮せず言ってください。
2009/07/10(金) 21:45:32 | URL | by七次元 (#sGvNOJjo) [ 編集]
加減算>乗算>除算
ってところですかね?
必要最小限の変数型にしろと言うのは良く聞きますね。
コメント・・・私はめんどくさいですけど共同開発ですので必然的に付ける必要が^^;
相方も私の駄目ソースをエスパーできる程度の能力をもっておらず、私も同様なので^^;

いつのまにかサイト戻ってましたね。お疲れ様です。
タイトルが微妙に変わってる^^;
雛差分公開お疲れ様ですー。
運命のダークサイド、頂きました。y軸が安置じゃない・・・だと・・・
敵弾にもホーミング実装したんですね。
これが大量に増えたりすると重くなったりするんですかね?

煽り過ぎだとかそうでないとかの判断は難しいですよね。でも客観的に見るとおかしいことを言っているのは向こう側なので^^;
そんなに気にしないで、ゆっくりしてくださいw

リンクの件、ありがとうございます。
問題どころか、むしろ大歓迎でございますです。はい。
でも小心者なのでアクセス数が伸びたら焦るかも・・・^^;
とか言ってたら今これ書いている途中でデイリーアクセス165^^;
どうもありがとうございますm(_ _)m
2009/07/10(金) 22:48:28 | URL | by紅黒 (#-) [ 編集]
変数のサイズ的にはfloatとintは変わらないですが、やっぱり浮動小数だと演算が複雑になるようです。
3Dを使うには浮動小数が無いときついので、GUの引数にfloatが使えますが、PSPのCPUだと座標の計算に時間がかかるのでVFPUとかいうのが付いてるそうです。
自分には何かよくわからないのですが、浮動小数を計算するエンジンみたいで、SDKに付いてる行列の計算関数内部で使ってるみたいです。
共同開発はやったこと無いのですが、会社などの開発だと決められたフォーマットで書かないといけないので、ものすごくめんどくさそうです^^;
最近は可読性を向上するために、スペースを入れたり、改行を入れたりしてますが、どうしても書きやすいやり方になって、スパゲティが完成しますw

ホーミングと自機狙いはちょっと違いますYO!
自機狙いは発射時に計算して、後は同じ値を毎フレーム足すだけなので、大した処理にはなりません。
CPUの使用率を表示してますが、111MHzだとずれることがあるので、処理時間を参考にしてもらえれば負荷がわかりやすいです。
一番処理が重いのは描画部分なので、弾数が重要かもしれません。
Lunaでも2000発を超えることがないと聞いたので、2000発表示できれば良いかと思います。

煽られてることに気づかないとは思ってなかったので、色々と予想外でした…
ある意味一番怖いです。
アクセス数が増えてるのは、スレにURLが貼られたのと変なスレが原因の可能性が高いです。
自分のところでアクセス解析をしたところ、2chから飛んでくる場合に経由するttp://ime.nuが多かったです。
大体の人は専ブラを使っていてリファラが無く直接飛んでくるので、専ブラを使わない人がたくさん来てるということは、かなりの人が2chから飛んできていることになりますね…
土日は普段見ない人が多く来るので、余計に増えます。
自分のところだと現時点で普段の土曜のアクセス数の2倍以上回ってます^^;
2009/07/11(土) 22:29:40 | URL | by七次元 (#sGvNOJjo) [ 編集]
およよ、レスが1日も遅れてしまった。申し訳ないです。

VFPUはSDKのサンプルで結構頻繁に使われていますね。
共同開発と言っても、会社などではないので結構好き勝手にやっております。
相方とはリアルでも微妙に知り合いなので、多少の無茶は許されるかと勝手に思いこんでおります^^;
私もスパゲティは良く完成しますが、コメント入れる習慣が付くと、自然に改行するようになっていました。
やはりコメントはあった方が読みやすさが数段違います^^;

ホーミング→常に計算
時期狙い→発射時に計算
ということですか?
また、CPU使用率の件ですが、7/11更新のパッチを当ててプレイしてみたところ、
333で垂直同期待ちを解除?してみると、今までの94.6%程まで行かないようになっているのですが、
これは使用ですか?そうでしたらすみません。

煽りはもう気にしたら負けだと思いますねw
こんな事を言うのは無責任かも知れませんが、頑張って下さいね。
2009/07/13(月) 00:27:53 | URL | by紅黒 (#-) [ 編集]
最終的には平和な頃の土曜の3倍ぐらい回ってたぜ^^;

お互いに色々と忙しいので、すぐ返事を書く必要は無いですよ。
私は他人のブログのコメ欄で雑談しちゃって良いもんなのかといつも心配ですがw

ライブラリの開発とかが目的ではないので、共同開発でもある程度融通が利くかと思います。
ゲームの構造もdixq氏の龍神録の館が非常に参考になるので、弾幕アルゴリズムがメインになりそうですね。

HSPを使うときも、規模が大きくなった時の修正時にコメントを入れてなかったことをよく後悔しますw
速度改善のために、関数をコピーして元のをコメントアウトしたりを繰り返してるので、同じ名前の関数が大量にあったり^^;

ホーミングは追尾弾なので、常に計算してます。
自機狙いは初回に計算して、後はまっすぐですね。
ホーミングはアークタンジェントとサイン、コサインを使うので、負荷が多そうですが、自機弾ぐらいしか使わないからあんまり気にならないかも?

CPUの使用率に関しては、他所様のソースを使用しているので、詳しい計算内容が分からないのですが、おそらくGU周りが関係してるかも知れません。
333MHzで動作させた場合、早く計算が終了しても、GUの描画を待つ必要があるので、その分のスリープで使用率が変わってくると思います。
1つ目のパッチ→2つ目のパッチでの話だとすると、計算量は対して変わってませんが、弾数が増えたのでその可能性が高いです。

上にちょろっと書いたことですが、個人的には弾幕アルゴリズムが一番の難所ですね…
60fpsで動画を撮れるようなスペックのPCでは無いので、プラクティスモードをノーショットでクリアしたリプレイを永遠とEscキー連打で見続けて、やっとこさ雛の1段目の通常弾幕が完成^^;
発射点の回転速度と弾の速度を修正すれば、多分そっくりになりそうです。
ブロークンアミュレット?見えねぇよwww
低速化ツールとか無いのかな。
全体の弾数とか当たり判定とか表示できたら便利なんだが。
無いのなら作れば良(ry
DirectX自体使ったこと無いのにフックなんてできんw

毎度ながら長文駄文失礼しました。
2009/07/14(火) 02:38:53 | URL | by七次元 (#sGvNOJjo) [ 編集]
こっち側はそんなに激しくもないですね。
といっても最初の一桁から考えるとこのアクセス数は・・・
麻痺するって怖いですね!

コメでの雑談は全く構わないので結構ですよ^^;
この雑談の中で得る物も沢山ありますし、むしろ大歓迎です。

骨組みが出来てからは、弾幕の解析が一番大変でしょうね。
最初の頃はまだ良いにしても、後の方になってくると早い多いでどうなってるのかわかりゃしませんからねw

HSPは私も入門に弄ったのですが、
サブルーチンを知らなかったという論外な環境で開発していたのは良い思い出ですw
同じ関数って何個も定義したらエラー吐かないんですか?

ホーミングの件ですが・・・敵弾にもホーミングしてくる物ってあるじゃないですか?
例えば紅魔郷2面の大ちゃんの通常攻撃の白弾や、そして誰もいなくなるか?の最初の光源など。
そして未だにアークタンジェントがよくわからないという^^;
毎回数学のサイト見ながら組んでます。いい加減覚えたい・・・
ふつうのタンジェント等はいけるんですけどね。

CPUの使用率はバグではないと言うことなんですね。安心しました。
計算と描画の間にタイムラグが生じるということですかね?よくわかりません^^;

本当に弾幕のアルゴリズムは複雑ですよね。
いや、根は単純なんでしょうが、解析する方にとっては大変なことこの上ない^^;
自分もノーマルシューターに毛が生えた程度のレベルなので、他人様のリプレイを参考にしていますw
以前に貼った東方無抵抗とかもそうですね。
低速化ツールはなさそうですが処理落ちさせれば・・・駄目ですね。
弾数はアイデアが浮かびませんが、当たり判定の方は画像の方を弄るのでは駄目ですかね?

言ってみたは良いものの、そもそもの当たり判定が解らないという^^;

私の方も長文駄文度全開なので気にしないでいただけるとありがたいです^^;
2009/07/14(火) 17:41:26 | URL | by紅黒 (#-) [ 編集]
それでは遠慮なく駄文を書かせていただきます^^

今思えば、HSPはgoto文やgosubだらけで、C言語で考えると酷いコードですね^^;
HSP2時代はgosubが無かったような気がするので、HSP3からはものすごく重宝してました。
HSPは自作関数内の変数が同じ空間で共有してるのがなぁ…
関数をコピペして元のをコメントアウトしてるので、コメントアウトされた関数がたくさんあり、どれが安定動作する奴か分からなくなったという話ですw

>紅魔郷2面の大ちゃんの通常攻撃の白弾や、そして誰もいなくなるか?の最初の光源
これらも全部自機狙いですね。
敵弾でホーミングが無かったとは言い切れませんが、あった場合は当たるまで追尾するので即ピチュってしまいます。
そういえば、地霊殿のゾンビフェアリーなんかは敵自体がある意味ホーミングしてますね。
サイン、コサイン、アークタンジェントに関しては、数学的な知識が無くても値を放り込んで使えるので、中学生でも使えるとかなんとか。
サイン、コサインは距離を掛けてやれば移動量が出ますし、アークタンジェントは対象物へのx、yそれぞれの差を放り込めば角度が出ます。
ゲームを作成する上では何をしてるのかの意味を特に考えずにコピペすれば良いっぽいです。
ほとんどDixq氏の受け売りなんですが^^;
龍神録プログラミングの館だけでなく、ゲームプログラミングの館も参考にしてます。

>CPUの使用率
描画はグラフィックエンジンで行われるので、計算(ゲーム処理)と描画は並列して行われてます。
描画に掛かる時間が計算より遅い場合、CPUのクロック数を上げると計算が速くなってさらに差が出るので描画を待つ時間が増えます。
この描画終了待ちが増える分、CPUの使用率が下がるのだと思います。
手元で確認したところ、222MHzで60~70%、333MHzで60%前後という結果になりました。(222MHz以外での値は色々と怪しいですが^^;)
計算が少ないので描画終了待ち時間は2msほどかかってますね。
全体の処理が6msほどなので計算時間の割合は2/3≒66%
GUの使用率も考慮してるのかは分かりませんが、大体あってますね。

なぜ永夜抄の無抵抗が無い…
あと、60fpsで等倍サイズじゃないと、精確な速度やフレームが分からないんですよね…
弾数はメモリを参照すれば出てきそうですね。
フレーム数の管理もしてあれば、何フレーム間隔にいくつ弾を生成してるのかのログが取れそうなんだが…

当たり判定は何度も体当たりして実験するしか無いですねw
楕円の弾やレーザーの当たり判定処理が非常に気になる。
2009/07/15(水) 05:17:15 | URL | by七次元 (#sGvNOJjo) [ 編集]
HSPは変数がよくわからなくなるとのことで定評がありますね。自分的に。
一度Cの様な変数の形式に慣れてしまうと元に戻るのはキツイです^^;
HSP2.6ではgosubありますよ。それ以前のバージョンではわかりませんが^^;
関数はせっかくコメントアウトしているのであれば、
一緒に説明も書けば良いんじゃないでしょうか^^;
更新した日付とかも書いておくと便利そうですね。そんなことしてませんがw

ホーミングという物を私は大きく勘違いしていたようです。
何度もしつこく申し訳ありません^^;
sin,cos,atanは確かに数値を放り込めば使えますが、
なんの数値を入れるのか、その結果なんの数値が帰ってくるのかという基本がわかっていないとですね^^;
比較的以上に理解力のない⑨なもんですから^^;

弾幕を表示するだけの時は計算は少ないんですね。
弾を消すと恐ろしいスピードが出るのもそんな理由ですね。
結局一番重い動作は弾幕の描画だと・・・今更ですがw

無抵抗・・・非公式パッチ使って移動なしでやればいいじゃない!
と思ってやってみた結果、当たり判定は残り、残機とボムが無限になるだけでした\(^o^)/
フレーム数管理はしてると思いますがね・・・
まあそんなのがわかったところで自分には解析ソフトを作るスキルがありませんし^^;
漢なら目で解析。これに尽きますw

紅魔郷はおそらく全て円判定だと思うので良いのですが、永夜抄とかは明らかに楕円ですよね・・・
楕円なんてどうやって判定すればいいのやら。四角形にしたら擬似的な物はできそうですが。
レーザーは、倒した時に点になるので、弾が大量に連なっているのかとも一時期考えましたが、
それだと回転や移動させるときにズレるんですよね・・・^^;
グレイズも1秒5回とのことでしたので、普通の弾とは別の判定なんでしょうね。(何を当たり前のことを
2009/07/15(水) 21:02:55 | URL | by紅黒 (#-) [ 編集]
変数名を少し間違えてもそのまま新しい変数として実行されて、バグが発生するのはHSPのあるあるw
HSP2.6でもgosubはありましたか。無かったのは関数型命令だったかな?
関数型命令は返り値を変数に代入したりと、必ず何かに使用する必要があったので、エラー処理を省略しにくいです。
コメントアウトした関数は、書き換えた関数が正常に動いたら消すつもりで置いてるのですが、どんどん派生して増えていくというw

一般的に改造コードと呼ばれるものを使用すれば、常時無敵状態にすることが可能なんですが、60fpsでキャプチャーできないと動きの観察が厳しいですね…
ぱっとメモリを見たところ、固定アドレスでフレーム数を管理していて、それを利用してるようなのでなんとかなりそうです。
弾数とかの情報は環境依存アドレスなので、調べるのはめんどくさそうですが…
見た目では弾が増殖してるように見えて、内部では表示していないだけとかあるので、やっぱりデータを見るのも必要になってきそうです。

点アイテムから考えて、レーザーとかの当たり判定は全部○の集合体かと思ってましたが、レーザーは弾数に含まれてないようです。
かといって、龍神録Pの館のように□にするとぐにょりレーザーが再現できないし…
そもそも、ぐにょりレーザーの描画もよくわからんw
スペル時に敵の周りをぐるぐる回ってる帯も、元画像は細長い矩形なので、矩形を滑らかに曲げるような描画が必要なようです…
2009/07/16(木) 23:29:22 | URL | by七次元 (#sGvNOJjo) [ 編集]
5日間のブランク・・・だと・・・
ネットワーク回線がおじょんになっちったんです。申し訳ありません。

関数系はいくつかしかなかった気がしますねー。
殆どはシステム変数でまかなっていた気がします。
自作関数自体、昔はあまり理解していなかったのでサブルーチンで大部分まかなっていたという^^;
今から考えると超非効率なんですよね。
個人的にbuttonで配置したボタンの処理が、ジャンプ系以外出来ないのが残念です。
あくまで私の知っている範囲の話ですが^^;

弾の描画関係・・・よくわかりません^^;
ぱっとメモリを見られる技術が私も欲しいですw
ggrksってとこですかね。努力します。
データを見るには自分でソフトを作るのが一番なんでしょうか?

ぐにょりんレーザーの描画にはサインカーブを使うらしいですがPSPで再現できるのかどうか。
矩形・・・wikiさんに行ったところ複雑な計算式が出てきたので一瞬でウィンドウを閉じました。
ええゆとりですとも。
そもそも画像の描画すら満足に出来ない今の私。
しっかりしないと^^;

p.s.ここでこっそりライブラリの配布を希望してみたりします^^;
2009/07/21(火) 22:08:04 | URL | by紅黒 (#-) [ 編集]
ネットワーク回線が落ちるとどうしようもないですからね…
自分はいざというときは、携帯を利用しようと考えてますw

HSP3あたりからか、buttonにgosubが追加されたので、そこそこ使えるかな?とか思ったけど、連打されると多重に飛ぶという^^;
無効化できたり、モーダルウィンドウが表示できればなぁ…

プロセスメモリエディタを利用すれば、簡単にメモリを閲覧したり、検索したりできますよ。
うさみみハリケーンという、名前はあれですがかなり使えるソフトがあります。
値の増減などで絞込み検索ができるので、アドレスの特定も容易です。
そこで得たアドレスの内容を常時表示したりしたい場合は、自分でツールを作るしかないですが、上記のソフトを公開しているサイトに、HSPでプロセスのメモリを操作できるDLLを配布してるサイトのリンクがあるので、これを利用すればものすごく簡単に作れますw

矩形とは長方形のことですよ。
ヤフったらうぃきぺぢあの矩形波とかいう必殺技みたいなのが出てきますが、その下に長方形とあります。どうやらwikipediaで矩形を検索すると長方形に転送されるようです。
こういうときはYahoo!辞書がいいよ!
正弦波という言葉は知ってたんですが、あの曲線をサインカーブと呼ぶのは知らなかったです。
サインで描いたカーブなんでまんまですねw
弾の軌道がサインカーブなら簡単なんですが、レーザーとなると滑らかに描画するのが難しそうですね…
あと当たり判定の計算とか。
レーザーの当たり判定は丸の連結にした方が簡単そうですね。
精密な計算と、単純な計算の塊ではどっちの方が処理的に速いのだろうか。
実は精密に計算した場合の意外に単純だったり…
数学の世界は非常に興味深いですが、適当に公式を覚えるだけじゃ使い方がわからないですね…
学校で数学を教えるときに、ゲームを題材にすれば意味も理解できて、簡単に覚えれるのにw

ライブラリというのは、GUで文字を表示するゴミライブラリのことですか?
それとも俺様用描画ライブラリのことですか?
2009/07/25(土) 06:28:44 | URL | by七次元 (#sGvNOJjo) [ 編集]
モブログの設定をしておけば良かったと今更ながら後悔しました。
今度からは大丈夫です。もうネットワーク回線が逝っても大丈夫です。
・・・そう何回も逝ってほしくないですが^^;

gosubのbuttonは挙動があまりよろしくないので使っていませんでしたね。
無効化はclrobj→buttonで再配置して、gosubでなにもないサブルーチンに飛ばすようにしてましたね。
でもいちいちサイズと座標の再設定がめんどくさいですw
モーダルウインドウも同じ方法で、サブルーチンの内容を変えればできませんかね。

自分で作ってみようとしてうさみみハリケーンはすでにインスコしてありました。
HSPのDLLがあるとは知りませんでした。ちょいと作ってみようかと思います。
・・・Cでプロセスメモリ監視なんてできません\(^o^)/

矩形とは長方形のことなんですか。普通に辞書引けば良かった^^;
PCに広辞苑入ってるのでそっちの方が早いですね。
そもそもyahoo辞書など使ったことがありません。

サインカーブは龍神録pさんの所の掲示板で昔見た記憶がありました。
レーザの当たり判定を大量の円にすると、グレイズが愉快なことになるんじゃないでしょうか?
別に計算するなら何とかなりそうですが、遅くなりそう^^;
計算速度はやってみないことには解りませんね。
数学は公式じゃなくて理屈を覚えろってけーねが言ってた
いや、けーねじゃなくてばっちゃなんですが^^;
学校でプログラムと一緒に教えたら一石二鳥な気がしてきました。
そんな学校あったら行きたい^^;

俺様用描画ライブラリ・・・だと・・・
物凄い勢いで欲しかったりするのですが、そのコメで書いたのはGUで全角文字の方ですね。
正直両方欲s(乞食
・・・げふんげふん
もし宜しければ片方でも頂けますか・・・?
2009/07/25(土) 19:44:07 | URL | by紅黒 (#-) [ 編集]
gosubで飛ばしてすぐにフラグを立てて、フラグが立ってる間はreturnするようにしてたりしてましたが、確かオブジェクトをグレー(無効化)にするモジュールがあったはず…
と思って見てみると、obj.asにobjgrayってのがありましたね^^;
モーダルウィンドウは、それ自体をHSPで出すのが難しいみたいです。
本来はリソースとやらで設定する必要があるとかないとか。
確か非公式wikiに疑似的に表示させるスクリプトがありました。

プロセスのメモリを簡単に弄れるDLLは各種言語用のがあるみたいなんですが、自分はC言語でウィンドウを表示したことが無い^^;
当分HSPから抜けられそうに無いですねw

自分はYahooで検索して、それでも出てこない場合にGoogleを使ってるので、単語で検索した場合はYahoo辞書が一番上に来るので、そこそこYahoo辞書は利用してますね。

本家東方でもレーザーは別判定になってるみたいです。
弾数に含まれてないし、当たり判定を無効化する改造をする場合は弾とレーザーの2箇所弄る必要があるとか。
楕円な弾とかも、複数の当たり判定を使用してそうな気がします。
そして今、妖々夢のレーザーを見てみると曲がり方が酷いw
どうやらサインカーブだけでなく、自由自在に曲げれるようなので、丸の集合体じゃないと難しそうですね…
サインとかコサインも学校でやったときはわかりにくかったけど、実際にプログラミングとかで使ってみると意味が分かってくるからなぁ…
学校はやることが非効率すぐる。

描画ライブラリはprx化しようかとか考えてるんですが、回転の角度が0.1度単位だったりと色々特殊なんですよね。
GUで全角文字を表示するライブラリはまだ作ってません^^;
SDKのデバッグ関数で表示する奴をGU化しただけなんで、半角英数のみです。
2009/07/25(土) 22:59:01 | URL | by七次元 (#sGvNOJjo) [ 編集]
まだもう一つのコメ返してないのにw
やっぱりほしいと思った機能がすぐに引っ張ってこられるHSP凄いw
Cとかでも出来ますが、単純さが違いますね。

ループさせて常にアクティブにすればモーダルウィンドウ的な物体はできませんかね?
よくわかってないんですが・・・

Cで窓表示はDX使えば楽ですね。
そうしないとなるとDirectXとAPIのおべんきょの必要が・・・

yahooはタスクバー使わないと、TOPが重くてかなわないんですよね・・・
googleはTOP軽くて良いんですけど。
まあ検索エンジンの使い方は個人毎に違うと言うことで^^;

龍神録pさんの所に書いてあった長方形判定じゃないんですか。
でもそれはあくまでもPC上な訳ですからね・・・
楕円は4つくらい使えば良さそうですかね?
とりあえず実機の基本は丸って事なんですね。
妖々夢・・・今やってきましたが凄いですねw
ぐにょんぐにょん曲がっちゃっててもうなにがなんだか・・・
三角関数とかも、学校は抽象的なことしかやりませんからね。
それに対してプログラムでは具体的にどれをこうすると言うのを考えなければなりませんし。
それに必要に迫られていたりするので^^;

prx・・・だと・・・使い方ググらないと^^;
回転の角度はラジアンじゃないんですか?
普通に度の方がわかりやすくていいですがw
GUの方は軽く勘違いしてました。
見逃して下さい^^;
2009/07/25(土) 23:39:25 | URL | by紅黒 (#-) [ 編集]
Cは逆に出来ることが多すぎて、なかなかとっつけない。
何から始めれば良いかわからなくて挫折しましたからねw

フォーカスを監視して、他のウィンドウに移ったら切り替えるのは、見た目はそれっぽいですが、ボタンは押せますからねぇ…
もう普通にメインウィンドウ消せば良いよね、うん。

検索するときはいつもツールバーからやってますね。
オートコンプリートを整理するのがめんどくさくてツールバーから入力してたのに、履歴残るようにバージョンアップしてやがる^^;

龍神録Pの館のレーザー判定方法はものすごくややこしい^^;
また、レーザーの見た目は楕円に近いので、当たり判定は長方形じゃないかもしれません。
そして楕円の当たり判定もものすごくややこしいw
作品によって当たり判定が変わってくるみたいなので、紅魔郷あたりはシンプルな方法を使ってるかも。
レーザーはあまり見る機会が無いので、もう少し詳しく調べる必要がありそうです。
あとは描画もどうやってるのやら。
単純に丸い弾を引き伸ばしてるだけなら簡単なんだがw
難易度と反比例して新しい作品ほど実装が難しいよぅorz

prxはWindowsでいうDLLみたいなもんなので、最初にpspSdkLoadStartModule等でprxを読み込み、ソースにヘッダを追加して、コンパイル時にprxのエクスポートファイル(?)をくっつけたら普通の関数と同じように使えます。
prx化で速度に影響がなければ良いのですが。
ラジアンだと浮動小数の演算が出てくるので、10倍した度(整数型)を引数にしてます。
拡大縮小の倍率もパーセント指定になってます。
まあ、素人が作ったものより、精製されたDXLPみたいなものの方が、速度や使い勝手は上だと思いますが。
2009/07/27(月) 13:39:23 | URL | by七次元 (#sGvNOJjo) [ 編集]
七次元様の所からバイナリ&コンバータ同梱パッケージ
2009/08/01(土) 06:52:18 | URL | byどっかのだれかさん (#-) [ 編集]
がどこにあるのか分かりません。
2009/08/01(土) 06:53:30 | URL | byどっかのだれかさん (#-) [ 編集]
>七次元さん
最近返信遅くて鬱ってます。
C自体で出来ることはむしろHSPよりも少ないですがね。
それゆえにライブラリを使用するのは当たり前となっているのでやれることは多くなってきますねー^^;

ウィンドウ消したら他の操作ができなくなると言うw
まあそんな難しいのはお呼びでないので調べたこともありませんでしたがw
必要とあらば調べるんですけどねー^^;

バーの履歴はfirefoxを閉じたときに自動的に削除されるような設定にしてます。
火狐使いでサーセンw

龍神録Pの館のレーザー判定方法は数学的でもうなにがなにやら。
スイマセン日本語でお願いします・・・
そして紅魔郷には楕円なかった気がしてきたんですがないですよね?
でもレーザーあるなら同じ話か・・・
しかし作品毎にシステムがパワーアップしていくって言うのも凄い話ですね。

prxはそう言うもんなんですね。プラグインだとしか思ってなかった・・・
πの値から先に変換するってことなんですね。わかってるのかわかりませんw
速度等はどんなのか解りませんね・・・

ところで例の画像コンバーターで変換した縞々bmpはどんな形式なんですか?
面倒であったら答えて頂く必要はありませんが^^;
ふと気になっただけです。


>とあるだれかさん
OK!俺は初見さんに優しい男だ!
そんな君にアドヴァイス!
過去記事と日本語嫁
PSPでケロちゃん風雨に負けず
とか言うタイトルだったはず。
その中の本文を読めば、きっと未来は見えてくる!

・・・サーセンw
2009/08/01(土) 21:50:29 | URL | by紅黒 (#-) [ 編集]
>>紅黒さん
C言語は標準ライブラリだとできることが少ない→ネットの海にある膨大な量のライブラリから使いたいものを探す。ということになるので、自分には非常に敷居が高いように感じられました。
まぁ、そのライブラリもCで書かれているので、Cで出来ることが多いという考え方もあるのですが。
HSPは標準関数だけである程度やりくりでき、物足りなくなったらネットの海から欲しい機能のプラグインを探すというステップアップ形式なので、非常にとっつきやすく感じました。
Cは基本的なライブラリも日本語訳が無くて、自分のようなゆとりには使い辛いというのもあるのですがw
日本発の言語ってのは良いですね。

HSP以外の言語で作られたソフトでも設定ウィンドウを出すときに、メインウィンドウを消すというやり方はたまに見かけますよ。
HSPだと簡単にウィンドウの表示、非表示を切り替えることができますが、タスクバーからも消えるのでちと厄介ですが…

自分もFirefoxを使ってますね。
正確にはlolifoxですが^^;;
一応IE7も同時に使ってますが、起動して置いておくだけでどんどんメモリを喰って行き、最終的には1GBほど占有する訳の分からないバグがあるのでメインには使ってられないw

紅魔郷は米粒も円判定っぽいですね。
小さい弾に関しては、今でも円判定かもしれません。
直線のレーザーでも、角が丸くなってて、長さが決まってるものと、画面外まで伸びてるものがあるので、同じ判定かどうかわかりません。
紅魔郷の頃はWindows向けのプログラムは始めたばかりで、DirectXも慣れておらず、骨組みを作るのがメインだったと思うので、新作を出すごとに肉付けをしてきたのでしょう。
永夜抄が東方の完成形と呼ばれるのもそういう意味があるのかもしれません。
移植をするならリリース順にやった方が、効率がよさそうですね。

prx=CFWのプラグインという認識はよくある話ですw
WindowsでもDLLをプラグインとして使ったりするのであながち間違ってはいないのですが。
PSP内蔵のフラッシュメモリーや、UMDの中にも大量にあって、こいつらを叩いてPSPの内部関数を呼んでるみたいです。
1.50kernelが使えない新型でカーネル用関数を使うときも必要になってきます。

角度の計算はそのまま整数型の度で計算しちゃえば楽だし速いけど、標準の数学関数はラジアンを渡さないといけないから面倒だね…
atanもラジアンで返って来るし。
全くラジアンを使わないように組んでる、まさに俺様用ってわけですw

あのbmpは二次利用を防ぐためのスクランブルを掛けてます。
本当は元の画像の面影のないめちゃくちゃなものにしたかったのですが、32bitのデータから規則的に生成したものなので、パターンができて縞々になっちゃったんですよねw
テキストなら読めないレベルになると思いますが、画像だと大体の形が残っちゃう^^;
暗号化の練習も兼ねてやってみたんですが、32bitじゃきついです。
やっぱりランダムなテーブルを用意した方がいいのかなぁ。


>>どっかのだれかさん
他の人のブログとかで迷惑を掛けた場合は最悪、公開の停止になる可能性がありますので注意してください。
⑨の記事で公開してます。
2009/08/02(日) 03:02:57 | URL | by七次元 (#sGvNOJjo) [ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2010/03/29(月) 15:58:26 | | by (#) [ 編集]
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
2011/02/08(火) 22:01:59 | | by (#) [ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2011/03/21(月) 19:26:19 | | by (#) [ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2011/07/18(月) 16:59:32 | | by (#) [ 編集]

■ コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL

▼この記事へのトラックバック(あれば表示)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。