[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WitchTech 00627] wwc_palette_set_color について



はじめての投稿です。motokiと言います。


カラースワンで、16色モード・異なるキャラ・異なるパレットを
2つ同時に表示したいのですが、なぜか1つのパレットしか表示されません。

以下のソースは、image0,1 のそれぞれに、パレット0,1 を割り当てようと
したものです。キャラデータやパレットデータは間違ってないと思います。
なぜなら、それぞれは単独パレットだと正しく表示されるからです。
これが、パレット0以外を使うと化けてしまい、2つのパレットを使うと、
1番のパレットのキャラは0番で表示されてしまいます。

基本的なことですが、どうしてもわからないのでご教授をお願いいたします。
-----------------------------------------------------------------------------------------------
#include <sys/bios.h>
#include <sys/libwwc.h>

#include "image0.h"
#include "image.h"

/* キャラサイズ */
#define W0 2  /* image0 */
#define H0 2
#define W1 4  /* image1 */
#define H1 4

/* キャラNo格納用 */
unsigned data_image0[ W0 * H0 ];
unsigned data_image1[ W1 * H1 ];


int main( void )
{
 int i;

 /* 初期化 */
    wwc_set_color_mode( COLOR_MODE_16COLOR );
    wwc_clear_font();
 display_control( DCM_SCR2);

 /* パレット設定 */
    for ( i=0; i<16; i++ )
 {
     wwc_palette_set_color( 0, i, palette_image0[i] ); /* これはできる。ただし0のみ */
 }
    for ( i=0; i<16; i++ )
 {
   wwc_palette_set_color( 1, i, palette_image1[i]  ); /* これが設定できない!なんで?*/
 }

    /* キャラ登録 */
    wwc_font_set_colordata( 1, W0*H0, bmp_image0 );
    wwc_font_set_colordata( 5, W1*H1, bmp_image1 );

 /* キャラNoを格納 */
    for ( i=0; i<W0*H0; i++ )
 {
     data_image0[i] = i+1;
 }
    for ( i=0; i<W1*H1; i++ )
 {
     data_image1[i] = i+1+(W0*H0);
 }

 /* chr0でクリア */
 screen_fill_char( SCREEN2, 0, 0, 28, 18, data_image0[0]);

 screen_set_char( SCREEN2, 0,  0, W0, H0, data_image0 );
 screen_set_char( SCREEN2, 0, 10, W1, H1, data_image1  );

 key_wait();

 return 0;
}
 -----------------------------------------------------------------------------------------------






ML Archives