Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: "premia" Newsgroups: playstation.ny.program.questions Subject: =?iso-2022-jp?B?UmU6IBskQiNrI3IjbyNtIzIjdCNpI20kSyREJCQkRhsoQg==?= Date: Wed, 4 Feb 1998 11:41:50 +0900 Organization: PlayStation Net Yarouze Lines: 52 Message-ID: <6b8l21$hhj@news1.scei.co.jp> References: <6b4jpa$cga@news1.scei.co.jp> <34d743f8pc171@base.minoru.isl.intec.co.jp> NNTP-Posting-Host: 202.219.12.233 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Newsreader: Microsoft Outlook Express 4.71.1712.3 X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 Minoru Matsumoto wrote in message <34d743f8pc171@base.minoru.isl.intec.co.jp>... >cqz03222 の松本 実です。 > >In article <6b4jpa$cga@news1.scei.co.jp>, IZC05326@niftyserve.or.jp says... >> >>krom2timの使い方がよくわかりませ。 >>どうやって使えばよいのでしょうか? >>そのあとどうやって表示するかもわかりません。 >>その辺を教えてもらえないでしょうか? >>よろしくお願いします。 >>ではでは。。。。 > >Krom2Tim() を呼ぶと、漢字ROM データが TIM 形式に展開されるので、 >GsGetTimInfo() で ビットマップと clut に分離し、それぞれ VRAM に >転送します。こんな感じです。 > >void ExpandKanjiStr(u_char *kstr, int fg, int bg) { > RECT rc1, rc2; > GsImage tim; > /* SJIS 漢字のみ含むとする */ > u_long *tmp = (u_long *)malloc(strlen(kstr) * 128 / 2 + 84); > > /* dx, dy, cx, dy は VRAM 上でのアドレス */ > /* 本当はメモリマップを考えるべきだが、 */ > /* とりあえず、通常は画面に映らないところに置く */ > Krom2Tim(kstr, tmp, 640, 0, 0, 480, fg, bg); > GsGetTimInfo(tmp + 1, &tim); > setRECT(&rc1, tim.px, tim.py, tim.pw, tim.ph); > LoadImage(&rc1, tim.pixel); > if ((tim.pmode & 3) < 2) { > setRECT(&rc2, tim.cx, tim.cy, tim.cw, tim.ch); > LoadImage(&rc2, tim.clut); > } > DrawSync(0); > free(tmp); >} > >あとは上の例なら、通常のループ中で、(640, 0) - (640 + 文字数 × 16, > 16) をビットマップとして、(0, 480) - (16, 480) の領域を clut として >GsSortFastSprite() などで転送してやれば表示できます。 > >なお、Krom2Tim() はものすごくスタックを食うので、プログラムは >0x801d0000 以下に配置した方が無難です。 >--- > > ありがとうございます。 早速やってみたいと思います。