一昨日のルパンは雑記で書いたヤツじゃなかったなぁ。その前の予告で次元の帽子がメタメタにされてたからそー思ったんだけど、実際は銃組みたてながら国境まで行くヤツだった(この話も好きなヤツの一つだ)。基本的に次元が主な話が好きなのか?
昨日はDreamcast(以下DC)の「首都高バトル2」を買ってきた。1の時みたいな「こんな道幅の広い首都高は東京には御座いません」と突っ込みを入れたくなるような事も無い程度に、道幅も狭くなっている(それでもホンモノよりは広いが、ホンモノが狭すぎるだけだ)。
で、思ったんですけど、何故でしょう。PlayStation2(以下PS2)の「リッジレーサーV」並にジャギーが目立つんですなぁ。まぁフリッカーが目立たないだけPS2よりマシですが…。
んで予想ですが、ひょっとして「首都高バトル2」ってば320×240な画面でレンダリングしてフィルレートを稼いでフレームレートが1イント(60fps)になるような努力してないか?って思った。元々DCのビデオチップのPowerVRシリーズは、「描画しなくて良い所は描画しない事で高速化!」ってな特徴の石だしなー。2重に半透明な先に有るドアミラーに映る背景まで見える気がするが、これは半透明が重いPowerVRでは致命的な気がするのに1イントキープだもんねぇ(たまに0.5秒ほと止まる事があるが(笑))。
320×240から640×480へのStretchBltなんて、最近のビデオチップならほとんど処理コストかからないしね。
って思った。
そうでなければ、背景が暗いから車とのコントラスト差が激しくてジャギーが目立つダケかもな。
で昨日買いに行った店では、既に斜陽な兆しなDCだから不良在庫怖いぜ状態なのか、一部の××なソフトが安めで売っていた。その中に「定価じゃ買いたく無いが欲しいソフト」である所の「スピード・デビル」発見。買った。
んー。良い意味でも悪い意味でも「アメリカ製」って感じ…。
とにかく大味。15回くらい「よろしくメカドック」で言う所の「ニトロ」が使えるんだけど、それを使うかコースのショートカット使わないとスタート直後のレース順位が覆る事は皆無。競艇みたいなゲームだな。ま、コースのショートカット探すのが熱いとも言えない事も無いが…。そんなに熱くも無いか。てなワケでスタート時に「ニトロ」使ってトップになればミスしない限りトップでゴールできる。ミスっても直進コースの場所で「ニトロ」連発でリカバーできる。
路上の「お邪魔」物もイマイチだし。もっと無茶な走りができればねぇ。無茶な走りで「クレイジー・タクシー」を越えるゲームは出てこないのかなぁ…。嗚呼、歩行者轢き殺せる「クレイジー・タクシー」キボー。PCゲームだが「カーマゲ丼2000」に期待だな。
あと、昨日行った店には6月15日から出荷開始されたSPCH-15000のPS2が山積みだった。「現金販売のみ」とかケチ臭い事書いてあったので買わなかったがカードOKなら買ったかも。いや、今日現金握り締めて買いに行こう。
SPCH-15000は単にSPCH-10000の基板(以下PCB)を最適化したダケで各種メモリーカード周りのバグ修正一切無し、CPUである所のEmotionEngine(以下EE)のプロセスルールも0.25のまんまだ。したがって買う価値無しなんだが考えてみてほしい。この時期に型番変えたって事は、少なくともあと3ヶ月はEEのプロセスルールは0.25のままって事だ。もちろん、旧PlayStation(以下PS)のようにコッソリGPUが切り替わった例もあるしSPCH-15000の新PCBはプロセスルール0.18のEEに対応できるようにするためのモノである可能性も高い(折角0.18化で省スペース化できるのを0.25のヤツと同じパッケージで作るかどうか判らんがピン数の関係でパッケージサイズは変わらない気がする)。
って事で、さすがにあと(最低)3ヶ月も待ってたら機会損失の方が気になる。自分は発売日に買い逃したソフトを後から買う事が殆ど無いので、例えばゲームタイトルは忘れたが本宮ひろし絵の重機でバトルするバカゲーなんて中古で980円にでもならないと買わないだろう。フリッカーが激しいと話題の「グラディウスIII&IV」も、PS及びサターンの「グラディウスDELUXパック」を未だ買ってないとこから考えても、今買わないとそーとーな機会損失だ。
あと、やっぱDCには「リッジレーサー」的ソフトが無いんだよね。ナムコのレース順位八百長システムはゲームシステムとして素晴らしいし、カーブを曲がった爽快感で「リッジレーサー1」を超えるのも無いんだよね(じゃぁPSの1でも遊んどけってのは無し(笑))。
あと、妹のPSは2コン端子が死んでるので自分のPSと交換してやらんとイケナイってのもある(笑)。
そんな事からPS2の未来を予想すると、クリスマス時期にSPCH-17500が出て、値段が安くなってEEも完全0.18化。で、出るなら米国仕様のPS2とほぼ同じ設計のSPCH-20000が来年の夏とかじゃないかな?
EEが0.13化した頃にSPCH-30000。っても、現時点でこれだけ売れちゃうと先の伸びは期待できない気が。何千臆とか設備投資してるみたいだけど回収できるんかね?
PSみたいにソニータイマーで壊れて買い換え需要狙ってたりして(笑)。
問題にしてる人も多いけど、PS2は本体の出荷台数が全ソフトの売上数を上回っている(最近は流石にソフトの売上が超えたこもしれんけど)。これは何かって言うと、PS2は買ったけどDVDプレイヤーとしか使っていない人がかなり存在するって事だ。そうでなければPSのソフトしか遊んでないとか。
これが何故問題なるかと言うと、ゲーム機というのは本体価格は赤字が出るのが当たり前の設定になっていて、その赤字ぶんはゲームソフトの売上に対するロイヤリティ収入で賄う仕組みになっているからだ。つまりDVDソフトがいくら売れてもロイヤリティ収入が皆無なワケでぜんぜん儲からない。ただでさえPS2の価格は「戦略的安さ」なのにねぇ。つまり、現状では売れれば売れるだけヤバイという事で、早いところミリオン級ソフトが出ないとマズイって事だ(そのワリには「いかにもPS2」なソフトを作るのが難しいのがネックだが)。
ま、PS2はマスコミと世論がバックアップしてくれるから大丈夫かもね。
この時期になってもSCE系でPSのソフトが出るのも凄いね。サードパーティなら仕方ないとしても、ハード供給元なんて新ハードに一番近い所にいるわけだから、かなり早い段階で開発ターゲットを切りかえられるはず。「ぼくの夏休み」は2年くらい前から作ってたのか?
SCE系のPS2ソフトって「ファンタビジョン」以外に何が発売中なんだ?
サードパーティの方が沢山出してないか?
まぁ、Nintendo64とかサターンみたいな変な構成のハードでやってきたツワモノがSCEには少なそうだからな…。
サターンはやたらCPUが載っていて「おおけりゃ良いってモンじゃねーぞ」とツッコミを入れたくなるようなハードで、実際使いこなしてるメーカーは少なかったそうだ。サターンにはメインCPUとしてSH2が2個載ってるが、ほとんどのゲームは1個は寝てるらしい。ウチの開発用パソコンみたいだ(DualCPUマシンなのにOSがWindows98なので、片方のCPUは寝ている)。
同じようにPS2で作ったら、つまりEEのみ使ってVPUは使わないとかだと、表示能力に余裕があっても頂点計算に限界があってヘボい画面しか作れないらしい。DC並かそれ以下とか。20倍の性能が泣くな。しかもフリッカーで目が痛くなるぶんPS2の方がヘボくなるぞ。
サターンも負けるのが、その前身のMEGA-CDで(MEGA-CD+SUPER32Xなんて最狂に変なハードだが)、これを使いこなしてたゲームアーツなら、PS2用「シルフィード」でやってくれると期待してるよ。ただ、完成までに3年とかかけないででね。
ちなみに、ナムコは業務用基板では6809が3個も4個も載ったヤツ使ってたな。
この前書いた漢字フォントの解析だが、アスキーフォントの解析が終わってるだけに超簡単だった。ま、形式はぜんぜん違ってるけどね。
ただ、なんだいJISコードってヤツぁ。なぜ$307Fからイキナリ$3120とかにコードが飛ぶですか。第1水準は漢字の読みでグループ化されてるが、このグループ境界で飛んでるならまだしも、「イ」のグループの途中である15文字目くらいで飛んでるじゃないか。「カ」のところでも途中で飛んでるし。
泣くっす〜。理由を述べよ!!!。
グループ単位のケツから次のグループのアタマまでスキマがあるなら納得するよ。「あぁ、将来の追加用すか?」とか。でも、ケツからアタマの間はスキマ無しじゃねーか。超納得できぬわ。
ひょっとして旧JISにはあったが廃止した文字空間か?
だとしても、抹殺しなきゃイカンような文字っていったい…。
あ、気付いた。単に7bitで収めるためか。納得(笑)。
良く考えたら制御コードとかぶらないように$20以下は使ってないし、7bit伝送系でもOKなように$7Fまでしか使えないんだったな。あっはっはっはっは。歳だ死のう。
上記だが、JISコードから簡単に連番作る式の探求に疲れたので、結局$00〜$1Fと$80から$FFまで「フォント無し」の情報を詰める手抜き工事で決着させた…。
フォントがある場所よりも無い事を指してるインデックスデータの方が多いぜ!!!!無駄!無駄!無駄!。
以下訓戒の意を込めてデータコンバートの超汚いコードのさらしあげだぁ。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef unsigned short WORD;
typedef struct {
WORD p : 1;
short x : 7;
WORD r : 1;
short y : 7;
} fntvec;
long ReadLong( FILE *fp )
{
unsigned char buf[4];
fread( buf, 1, 4, fp );
return (long)(buf[0] * 16777216 + buf[1] * 65536 + buf[2] * 256 + buf[3]);
}
short ReadWord( FILE *fp )
{
unsigned char buf[2];
fread( buf, 1, 2, fp );
return (short)(buf[0] * 256 + buf[1]);
}
int main( void )
{
FILE *fp;
int code;
FILE *fpi;
FILE *fpd;
long indx;
unsigned char buf;
int wkc;
fpi = fopen( "FNTKNJ00.IDX", "w" );
fpd = fopen( "FNTKNJ00.DAT", "w" );
indx = ftell( fpd );
fwrite( &indx, sizeof(long), 1, fpi );
buf = 30;
fwrite( &buf, 1, 1, fpd );
buf = 0;
fwrite( &buf, 1, 1, fpd );
indx = ftell( fpd );
fwrite( &indx, sizeof(long), 1, fpi );
buf = 30;
fwrite( &buf, 1, 1, fpd );
buf = 0;
fwrite( &buf, 1, 1, fpd );
fp = fopen( "元の漢字フォント", "r" );
wkc = 0x22;
for ( code = 257; code < 8836; code++, wkc++ ) {
int len;
int idx;
if ( wkc == 0x7f ) {
indx = -1;
for ( ; wkc <= 0xFF + 0x21; wkc++ ) {
fwrite( &indx, sizeof(long), 1, fpi );
}
wkc = 0x21;
}
fseek( fp, code * sizeof(long), SEEK_SET );
indx = ReadLong( fp );
if ( indx == 0xFFFFFFFF ) {
fwrite( &indx, sizeof(long), 1, fpi );
continue;
}
fseek( fp, indx, SEEK_SET );
indx = ftell( fpd );
fwrite( &indx, sizeof(long), 1, fpi );
buf = 30;
fwrite( &buf, 1, 1, fpd );
buf = ReadWord( fp ) / 2;
fwrite( &buf, 1, 1, fpd );
len = buf;
for ( idx = 0; idx < len; idx++ ) {
fntvec f;
fread( &buf, 1, 1, fp );
f.p = buf >> 7;
f.x = buf & 0x7F;
fread( &buf, 1, 1, fp );
f.y = buf & 0x7F;
fwrite( &f, sizeof(fntvec), 1, fpd );
}
}
fclose( fpd );
fclose( fpi );
fclose( fp );
return EXIT_SUCCESS;
}
|
forループのcodeが257から始まっているのは、漢字データの前にASCIIコードの文字とJISコードなカタカナやひらがなが存在しているためだ。ASCIIコード部はこの前書いたASCIIコードフォントとまったく同じ形式で出力済みだ。JISの部分もインデックス領域のサイズが違うだけでデータ部は同じフォーマット(ASCIIが95文字に対してJISは128文字データを持っているので)。
まぁ、漢字もインデックス部のサイズが異なるだけで同じフォーマットにしたけどね。
あと、long型に関しては“-1”と“0xFFFFFFFF”は同じ意味だが別な書き方しているのに特に理由は無いよ。
FNTKNJ00.IDXとFNTKNJ00.DATはバインドして(単にcatコマンドくっ付けただけ)1個のファイルにしてから使う。