またーりと色々模索中です。
■ MIDI
MIDI音源チップは載ってないかも知れないと思えてきた。
ROMファイルとして "Mobile_0300_base.dls" というDLSファイルが入ってるのを見つけてしまった。
バイナリエディタで中身確認したけど確かにDLSっぽい。
うーん。
でもWindowsMobileってDirectMusic使えたっけ?
■ エミュレータ
開発環境のWindowsMobile2003エミュレータですが。
mixiにてVGAエミュレータのDL場所を教えてもらいました。感謝感謝。
で起動してみたらLibrettoの画面だと縦幅足りなくて収まらないのでスキンを作ってみました。
ダウンロードは
http://www.easy-creator.net/will-storage/old/ppcemuvga.LZH
このへんから。
エミュレータのイメージが入ってるところに適当にブチ込んでお使いください(ぉ
■ SDKドキュメント
何を開発するでもなく、片っ端から眺めてみるのもいいです。
で興味深いAPIを 発見(*゚Д゚) ムホムホ
SHCloseApps
The Pocket PC 2002 shell sends WM_CLOSE messages if there is less than 128 KB of free memory. The shell does not send WM_CLOSE messages if you ask for more memory than is available. For example, the Pocket PC 2002 does not allocate 200 KB of memory if it only has 190 KB free. Instead, the shell displays an Out Of Memory dialog box to the user. There are two ways to deal with the problem. First, allocate memory in small amounts, such as 16 KB so that your application does not run the risk of asking for more memory than is available. Alternatively, call SHCloseApps, which sends WM_CLOSE messages until there is enough memory for the allocation. However, SHCloseApps does not allocate memory to your application; it only frees memory. If a large memory allocation fails in your application, call SHCloseApps. Then, attempt to allocate memory again.
念のため翻訳。
Pocket PC 2002 のシェルは、空きメモリが128KB以下になるとWM_CLOSEメッセージを送ります。シェルは、もしあなたが利用可能な量より多いメモリを要求してもWM_CLOSEメッセージを送りません。たとえば、PocketPC2002は190KBしか空きメモリがなければ、200KBのメモリを確保することはありません。その代わりに、シェルはユーザーに「メモリ不足」のダイアログボックスを表示します。この問題に対処する方法は二つあります。一つは、16KBのような少ないメモリを確保することで、これはより利用可能な量より多くのメモリを要求する危険を冒しません(?)。もう一つは、必要なメモリが確保されるまでWM_CLOSEメッセージを送信する SHCloseApps を呼び出すことです。しかし、SHCloseAppsはメモリを確保しません(メモリを開放するだけです)。もしあなたのアプリケーションで大きなメモリの確保が失敗したら、SHCloseApps を呼び出し、それから、再度メモリの確保を試してください。
うわさの「メモリ足りなくなると古いアプリから落とされていく」というやつですが、「古いアプリを落とす」のは別にOSが勝手にやるわけじゃなくてAPIを呼び出してやる必要があったんですね。
WindowsCE開発を長くやってる人には常識なんでしょうけど、知らなかったんで書いてみました。
少し前に2chで話題になった、アプリを起動しまくると電話アプリが落ちて着信不可能になるという話。
試したけど電話アプリが落ちた人と落ちなかった人がいました。
落ちなかった人はSHCloseAppsを呼び出さないソフトを起動していたんじゃないかなぁ。とか思ったりしました。


