Navigation Log - なびろぐ -
2011/04/01

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
Splatoon2 (スプラトゥーン2)|オンラインコード版 []
Splatoon2 ...
Amazonほしい物リスト


2011/04/01 (金) 晴時々曇

GAMDX -Android MXDRV Player (Android)

_ エイプリルフールまでにGUI作るとか言っておきながら、やっぱりできなかった・・・(苦笑)。

_ 以下は技術解説。

  • 15:20:37 #GAMDX について技術解説
  • 15:22:36 #GAMDX Win版のMXDRVg(以下MXDRVg)はFM音源コアをX68sound.dllに頼っていたが、GAMDXではfmgenを使用。単純な技術的興味が理由
  • 15:24:07 #GAMDX MSM6258/PCM8エンジンはX68sound.dllのソースを解体して持ってきている。なおX68sound.dllのソースは事実上制限のないライセンスで使えると判断
  • 15:27:24 #GAMDX 22kHzモードで起動したときはfmgenを22kHzで駆動させているが、44kHz以上のときは「常に62500Hzで駆動して得た波形を、GAMDX側でダウンサンプリング」して目的のレートにしている
  • 15:30:19 #GAMDX X68sound.dllが持っていたLPFも移植しており、「fmgenで生成した音の過剰な高域を抑える」ことができるようになっている。環境設定でON/OFFが可能
  • 15:31:24 #GAMDX LPFをONにすると多少こもって聞こえるが、X68000本来のアナログ音声出力はこんなもん
  • 15:32:36 #GAMDX MXDRVコアはMXDRGgそのまま。演奏できるデータが多少限られるのもMXDRVgそのまま
  • 15:36:32 #GAMDX 以上をNDK(AndroidのネイティブC++環境)で使うためにI/Fを整理したものが、GAMDXのMXDRVエンジンになっている
  • 15:36:48 #GAMDX Winで動く同等の(X68sound.dllを使わない)エンジンも作ってあるが、出すことがあるかどうかは未定
  • 15:38:50 #GAMDX NDK側で生成した波形をそのままNDK内で鳴らせるかどうかを調べなかったので、波形は一旦java側に上げてそちらから鳴らしている
  • 15:40:30 #GAMDX この部分のオーバーヘッドが結構でかい&割り込み制御の問題からか、手持ちの環境だとGALAXY Tabではときどき音声が途切れる現象がある
  • 15:41:34 #GAMDX javaレベルでスレッド優先順位を上げても途切れはなくならないので、実用レベルにするにはやはりNDK内でサウンドデバイスを叩く必要がある気がする
  • 15:42:41 #GAMDX ただ、IS01は同じコードでもほとんど音声の途切れが出ない。やはりこのへんは優秀なのかもというか、メモリが少ないのだけが残念というか(苦笑
  • 15:44:50 #GAMDX 少なくともエミュレータで正常に鳴らないことは確認済みだが、どれくらいのスペックがあればそこそこ鳴るのかはわりと興味あり。webのコメント欄で報告あれば嬉しい
  • 15:47:55 #GAMDX アプリとしての構造はAiCiAから流用しまくりだったりする。非常駐のUI部と常駐のプレイヤーサービス部に分かれた構造とかはそのまんま
  • 15:48:47 #GAMDX とりあえずこれくらいかな…

[Trackback/Comment]
2011/06/14 09:16:01 2008/11頃にGORRYさんとの連絡方法が判らないという方からMXDRVgの関数L001330の|= 0x17;は|= 0x01;ではないかという連絡をいただきました。GAMDXのソースでも同様なので代わりに報告します。 (手で変換したんですか)
2011/06/14 13:22:16 GAMDXリリース後に同じ内容の連絡を頂いています。次回リリースでの修正を考えていますが、今のところ作業予定を立てておりません。 (GORRY)




メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」