この文章は、CLIE PEG-NXシリーズへのHRCapt対応に際して気が付いた事を書き連ねたものです。単なる覚え書きです。また、作者の勘違いの可能性もありますので、ここの情報を信じる場合、自己責任でお願いします(笑)
返されるOSバージョンに問題あり
NXシリーズでは、FtrGetで取得されるOSバージョン(sysFtnNumROMVersion)の値が、5.0.0.Development.0(sysMakeROMVersion(5,0,0,sysROMStageDeveropment,0))である。数値にすると0x05000000。Palm OS SDKの公式資料では、バージョンのチェックは、sysROMStageReleaseで行うように定めているので、5.0.0.Release.0(0x05003000)でバージョンチェックを行っていると、わざわざPalm OS 5用に書いたコードが実行されない事になる。事実、それでしばらく悩んだ(--;
現在はCLIE版のPalm OS 5 Simulatorが出たので、自分のコードがどの様な流れで実行されているのかとか、取得したバージョン値がどの様な値かを、デバッガー上で簡単に確かめることができるが、HRCaptの対応作業時には標準のPalm OS 5 SimulatorとNX実機しかなかったので、バージョン値に問題があると気づくのにかなり遅れてしまった。
Palm OS 5対応ソフトを作ったはずなのに、NXでうまく動かなくて悩んでいるそこのあなた! バージョンチェックに失敗して、従来OS向けのコードが実行されているのかもしれませんよ(笑)
ちなみに、CLIE版のSimulatorでも、しっかりと0x05000000が返されます(標準のSimulatorは0x05003000をちゃんと返してくれます)。
なお、この件については、ソニーのクリエデベロッパー事務局へ報告済みです。
スクリーンはリトルエンディアン
NXシリーズはPalm OS 5搭載機なので、CPUがリトルエンディアンのARM系にかわっている。当然、VRAMに直接アクセスする場合には、ビット構成がリトルエンディアンである事を覚えておかなければならない(実際には、適切なAPIをコールしてピクセルフォーマットを取得して判断する)。一方、メモリ上のビットマップは、ネイティブ指定しない限りビッグエンディアン。これは、Palm OS 4までとの互換性のためだろう。8ビット/ピクセルの場合は、どちらでも同じ(笑)なので、一瞬悩んだ。
勝手に透けちゃう
Palm OS 5のSDKのAPI Referenceには、BitmapTypeV3形式のビットマップに対して、透明色を設定するAPIにおいて透明色を無しにする定数がある様に書かれているが、どこにも定義されていないので不透明化ができない(--;
かといって、透明・不透明を決めるフラグには直にアクセスしてはならんと言う…
これは未解決(私の理解が何か足りないのかも(笑))
(02.10.22)
(02.10.22)