/* OUGON            by matu */
#include <stdio.h>
#include <sys/bios.h>
#include <sys/fcntl.h>
#include <sys/libwwc.h>
#include <stdlib.h>

#define    SCR_CHAR_W SCREEN_CHAR_WIDTH
#define SCR_CHAR_H SCREEN_CHAR_HEIGHT


/*----------------------*/
#define CHR_PIX   8   /* １キャラクタの1辺の長さ[ピクセル]*/
#define CHR_BYTE 16   /* １キャラクタのデータ数[バイト](4階調時) */

#define MAS_PIX     16    /* 通常キャラの一辺の長さ[ピクセル数] */
#define MAS_CX      (MAS_PIX / CHR_PIX)  /* 通常キャラの一辺[キャラクタ数] */
#define MAS_CHR     (MAS_CX * MAS_CX)    /* 通常キャラの総キャラクタ数 */
#define MAS_BYTE    (MAS_CHR * CHR_BYTE) /* 通常キャラのバイト数 */

#define BG_CHR      4    /*背景1チップあたりのキャラクタ数*/
#define BG_BYTE     (BG_CHR * CHR_BYTE)  /*１背景あたりの使用バイト数*/
#define BGN_NONE    0    /*背景のID番号:何もなし*/
#define BGN_HASIGO  1    /*背景のID番号:はしご*/
#define BGN_DROPEN  2    /*背景のID番号:*/
#define BGN_ONEWAY  3    /*背景のID番号:*/
#define BGN_BLOCK   4    /*背景のID番号:*/
#define BGN_DOOR    5    /*背景のID番号:*/
#define BGN_BLOCK3  6    /*背景のID番号:*/
#define BGN_JINMEN  7   /*背景のID番号:*/
#define BGN_MAX     8    /*背景の使用パターン数*/

#define ANIMAX      2    /*"主人公"のアニメパターン数*/

#define ZAKOMAX     8    /*画面に登場できる最大敵数*/
#define JIDANMAX    5    /* 自分の弾最大数 */
#define TKDANMAX    6    /* 敵の弾最大数 */

#define    BAKU_MAX    40    /*爆発パターン数:弾未発射状態＆爆発完了ループ数*/
#define    BAKU_ANI    5    /*爆発パターン数*/
#define    BAKU_START  0    /*爆発パターン:爆発スタート*/
#define    BAKU_OFF    99    /*爆発パターン:弾発射状態 爆発前*/

/*----------------------------オープニング*/

    /*タイトル表示座標*/
#define TITLE_X     8
#define TITLE_Y     2
#define TITLE_DX    14
#define TITLE_DY    3

#define KAO_X    15
#define KAO_Y    5
#define KAO_DX   4
#define KAO_DY   4

#define MENU_X   12
#define MENU_Y   10
#define MENU_DX  6
#define MENU_DY  6

#define END_X    6
#define END_Y    6
#define END_DX   16
#define END_DY   8

#define INST_X   19
#define INST_Y   16
#define INST_DX   8

/*-------------------キャラクタ番号---*/
#define CHN_MIN  0    /*最初*/
#define CHN_MY   CHN_MIN        /*主人公*/
#define CHN_BG   (CHN_MY + (MAS_CHR * ANIMAX))    /*敵*/
#define CHN_HP   (CHN_BG + (BG_CHR * BGN_MAX))    /*HPバー*/
#define CHN_GOLD (CHN_HP+1)
#define CHN_KEY       (CHN_HP+2)
#define CHN_JIDANH    (CHN_HP+3)
#define CHN_JIDANV    (CHN_HP+4)
#define CHN_TKDAN     (CHN_HP+5)
#define CHN_BAKU      (CHN_HP+6)
#define CHN_BANZAI    (CHN_BAKU+BAKU_ANI)
#define CHN_DEAD      (CHN_BANZAI+ (MAS_CHR * ANIMAX))
#define CHN_OP        (CHN_DEAD+ (MAS_CHR * ANIMAX))
#define CHN_TOMEBOX   CHN_OP    /*透明*/
#define CHN_KUROBOX1    (CHN_TOMEBOX+1)
#define CHN_KUROBOX2    (CHN_TOMEBOX+2)
#define CHN_KUROBOX3    (CHN_TOMEBOX+3)
#define CHN_KUROBOX4    (CHN_TOMEBOX+4)
#define CHN_KUROBOX5    (CHN_TOMEBOX+5)
#define CHN_KUROBOX6    (CHN_TOMEBOX+6)
#define CHN_OPBLOCK    (CHN_KUROBOX6+1)    /*ブロック*/
#define CHN_TITLE    (CHN_OPBLOCK+1)
#define CHN_OPKAO    (CHN_TITLE+(TITLE_DX * TITLE_DY))
#define CHN_MENU     (CHN_OPKAO+(KAO_DX * KAO_DY))
#define CHN_INST (CHN_MENU + (MENU_DX * MENU_DY))
#define CHN_WAVE (CHN_INST + INST_DX )
#define CHN_END (CHN_WAVE+1)
#define CHN_ZAKO (CHN_END+(END_DX * END_DY))         /**/

/*---------------------------*/
#define MAP_TEKI    'A'
#define MAP_OBJECT  '0'
#define MAP_NONE    ' '
#define MAP_NOBIT   0x80

/*---------------------スプライト番号------*/
#define SPN_ST  0      /*最初*/
#define SPN_MY  SPN_ST /*主人公*/
#define SPN_ZAKO (SPN_MY + MAS_CHR)  /*敵*/
#define SPN_JIDAN (SPN_ZAKO + (MAS_CHR*ZAKOMAX)) /*スプライト番号:最大使用数*/
#define SPN_TKDAN (SPN_JIDAN + JIDANMAX) /*スプライト番号:最大使用数*/
#define SPN_MAX (SPN_TKDAN + TKDANMAX) /*スプライト番号:最大使用数*/

/*
キャラクタカラーパレット0〜7はキャラクタ専用
キャラクタカラーパレット8〜15はキャラクタ／スプライト共用です。
パレット番号4〜7、12〜15は、無条件でカラー0=透明色
*/
#define CPN_CSR  0   /*カーソル用(透明色不可でスプライト非兼用)*/
#define CPN_CAVE 1     /*洞窟専用*/
#define CPN_MOJI 4
#define CPN_SP   8   /*キャラクタパレット番号：スプライト有効開始値(常数)*/
#define CPN_SPR 12   /*キャラクタパレット番号：透明色有効*/
#define CPN_SPB 13   /*キャラクタパレット番号：透明色有効*/
#define CPN_SPY 14   /*キャラクタパレット番号：透明色有効*/
#define CPN_SPG 15   /*キャラクタパレット番号：透明色有効*/

#define CFM_SPR ((CPN_SPR-CPN_SP) << CFSFT_PALETTE)  /*スプライト用CFM*/
#define CFM_SPB ((CPN_SPB-CPN_SP) << CFSFT_PALETTE)  /*スプライト用CFM*/
#define CFM_SPY ((CPN_SPY-CPN_SP) << CFSFT_PALETTE)  /*スプライト用CFM*/
#define CFM_SPG ((CPN_SPG-CPN_SP) << CFSFT_PALETTE)  /*スプライト用CFM*/

#define CFM_BGR (CPN_SPR << CFSFT_PALETTE)  /*スクリーン用CFM*/
#define CFM_BGB (CPN_SPB << CFSFT_PALETTE)  /*スクリーン用CFM*/
#define CFM_BGY (CPN_SPY << CFSFT_PALETTE)  /*スクリーン用CFM*/
#define CFM_BGG (CPN_SPG << CFSFT_PALETTE)  /*スクリーン用CFM*/
#define CFM_CAVE (CPN_CAVE << CFSFT_PALETTE)  /*スクリーン用CFM*/
#define CFM_MOJI (CPN_MOJI << CFSFT_PALETTE)  /*スクリーン用CFM*/

#define KEY_NONE    0

#define LCD_CHAR_W    (LCD_PIXEL_WIDTH / CHR_PIX)    /*1画面の幅[キャラクタ数]*/
#define LCD_CHAR_H    (LCD_PIXEL_HEIGHT / CHR_PIX)    /*1画面の高さ[キャラクタ数]*/

/*------------------仮想マップ*/
#define MAP_MIN    0    /**/
#define MAP_MAX 3    /*マップの数*/
#define    MAP_WIDTH    35
#define    MAP_HEIGHT    17

static unsigned char cMap[MAP_MAX][MAP_HEIGHT+1][MAP_WIDTH+1]={
    {
        {"66666666666666666666666666666666666"}, /*MAP1*/
        {"6       6          B   66   B     6"},
        {"6      K6    B  B     6 6     B   6"},
        {"6       666             6         6"},
        {"6        5         I            1 6"},
        {"66666666664664666666646666666666166"},
        {"6   F 6    6             5      1 6"},
        {"6   FJ6    6             66 A   1 6"},
        {"6  6666          D  D    66 A     6"},
        {"6 1         I            666      6"},
        {"6 1    D    6666666  666666666666 6"},
        {"6 1666666666666666666666666       6"},
        {"6 1  6       1          1 6  666666"},
        {"6 1 A6   K   1 1666666661 61      6"},
        {"6 1 66    CC    67        61     K6"},
        {"6        6666   6I        61    C 6"},
        {"66666666666666666666666666666666666"},
    },{
        {"6666666666666666666666666666661 666"}, /*MAP2*/
        {"6       6                     1   6"},
        {"6       6   B                   B 6"},
        {"6       6          B              6"},
        {"6                I       E    E   6"},
        {"666666666364  4  6  6   66        6"},
        {"6       63 4  4  6  6    6        6"},
        {"6   B   63 4  4  6  6    6        6"},
        {"6       63     C               C  6"},
        {"6 1 6   666666666666666666666666666"},
        {"  1 6  1              6JF  F       "},
        {"6 1 6          D      6666666666666"},
        {"6 1 6666666666666 D    6          6"},
        {"6 A  6          66661  6  61      6"},
        {"6 1 66          6   1     61      6"},
        {"6           C  I6 I 1     61      6"},
        {"6666666666666666666666666666661 666"},
    },{
        {"66666666666666666    66666666666666"}, /*MAP3*/
        {"6                   66     6      6"},
        {"6         B        66      6     I6"},
        {"6                 66       6      6"},
        {"6               C66        5  H   6"},
        {"666666666666666666         66666666"},
        {"6    I               D   C66      6"},
        {"6                       66        6"},
        {"6        E            C  6   66 636"},
        {"6              6666666666  A 66 636"},
        {"6        66666666           16   36"},
        {"6  1 66666666      C C      66JK666"},
        {"6  1 6             66666  666666666"},
        {"6  1 6   B       666   6666       6"},
        {"   166          66                 "},
        {"   1           66               I  "},
        {"6666666666666666     66666666666666"},
    },
};

#define ID_BAKYU    0    /*敵ID: A ハキュラ */
#define ID_BAT      1    /*敵ID: B コウモリ*/
#define ID_YOSAKU   2    /*敵ID: C 与作*/
#define ID_MARU     3    /*敵ID: D 丸い敵*/
#define ID_FUMIDAI  4    /*敵ID: E 踏み台*/
#define ID_BLOCK    5   /*敵ID: F 破壊可能な壁 */
#define ID_T1       6    /*敵ID: G 予約*/
#define ID_SIRU     7    /*敵ID: H シルビア*/
#define ID_GOLD     8   /*敵ID: I お金*/
#define ID_HART     9    /*敵ID: J ハート*/
#define ID_KEY      10   /*敵ID: K カギ*/
#define ID_MAX      11    /*敵ID最大数*/
#define ID_NONE     99
#define ID_ITEM     ID_GOLD

typedef struct {
    int  cfm;    /*キャラフォーマット*/
    int  max;    /*アニメパターン数*/
    int  hp;    /*体力*/
} ZAKOCHR;

ZAKOCHR zc[ID_MAX]=
{    /*キャラ番号,アニメパターン,体力*/
    {CFM_SPB  ,4 ,256}, /*[0]ハキュラ */
    {CFM_SPB  ,1 ,3  }, /*[1]コウモリ*/
    {CFM_SPB  ,2 ,10 }, /*[2]与作*/
    {CFM_SPB  ,2 ,5  }, /*[3]丸い敵*/
    {CFM_SPB  ,1 ,10 }, /*[4]踏み台*/
    {CFM_SPY  ,1 ,5  }, /*[5]破壊可能な壁*/
    {CFM_SPB  ,1 ,1  }, /*[6]*/
    {CFM_SPR  ,2 ,10 }, /*[7]シルビア*/
    {CFM_SPY  ,2 ,1  }, /*[8]GOLD*/
    {CFM_SPR  ,2 ,1  }, /*[9]ハート*/
    {CFM_SPY  ,1 ,1  }, /*[10]KEY*/
};

/*--------------------ザコ情報*/
typedef struct {
    int  id;    /*ID番号*/
    int  x;        /*X座標*/
    int  y;        /*Y座標*/
    int  hp;    /*体力*/
    int  dir;    /*移動方向*/
    int  ani;    /*アニメカウンタ*/
    int  cnt;    /*汎用*/
    int  mx;    /*出身地X*/
    int  my;    /*出身地Y*/
} ZAKOINFO;

/*------------------主人公情報*/
typedef struct {
    int  x;        /*X座標*/
    int  y;        /*Y座標*/
    int  gold;    /*お金*/
    int  key;    /*カギ*/
    int  hp;    /*体力*/
    int  dir;    /*移動方向*/
    int  tekinori;    /**/
    int  ani;    /*アニメカウンタ*/
    int  jmp;    /*ジャンプフラグ*/
} MYINFO;

/*------------------弾情報*/
typedef struct {
    int  x;        /*X座標*/
    int  y;        /*Y座標*/
    int  x1;    /*X移動方向*/
    int  y1;    /*Y移動方向*/
    int  cnt;    /*カウンタ*/
} TAMAINFO;



static char cChrDat[]={
    /*------キャラデータ----*/
    /*主人公 A*/
     0x00,0x0F,0x0F,0x10,0x1F,0x20,0x07,0x3F,0x07,0x0F,0x07,0x1F,0x1F,0x21,0x3F,0x76
    ,0x00,0xE0,0xA0,0x70,0xF0,0x08,0x40,0xF8,0xE0,0xF0,0xC0,0xF0,0xF0,0x8C,0xFC,0x5E
    ,0x27,0x7F,0x37,0x7F,0x37,0x78,0x07,0x38,0x06,0x09,0x06,0x09,0x00,0x0E,0x00,0x0F
    ,0xC4,0xFE,0xCC,0xFE,0xCC,0x3E,0xE0,0x1C,0x60,0x90,0x60,0x90,0x00,0x60,0x00,0x70
    ,0x00,0x00,0x00,0x0F,0x0F,0x10,0x1F,0x20,0x07,0x3F,0x07,0x0F,0x07,0x3B,0x3F,0x65
    ,0x00,0x00,0x00,0xE0,0xA0,0x70,0xF0,0x08,0x40,0xF0,0xE0,0xF0,0xC0,0xFC,0xFC,0x9E
    ,0x67,0xFE,0x67,0xFF,0x07,0x68,0x07,0x08,0x0E,0x11,0x04,0x3A,0x00,0x1C,0x00,0x0C
    ,0xEE,0x5F,0xC6,0xEF,0xC0,0x26,0xE0,0x10,0x70,0x88,0x30,0x4C,0x00,0x3C,0x00,0x18

    /*---------------------背景*/
    /*[0] 何もなし*/
    ,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xF6
   ,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF
   ,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE
   ,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

    /*[1] はしご*/
    ,0x30,0x6F,0x3F,0x7F,0x3F,0x60,0x30,0x6F,0x30,0x68,0x30,0x68,0x30,0x6F,0x3F,0x7F
    ,0x06,0xFD,0xFE,0xFD,0xFE,0x05,0x06,0xFD,0x06,0x0D,0x06,0x0D,0x06,0xFD,0xFE,0xFD
    ,0x3F,0x60,0x30,0x6F,0x30,0x68,0x30,0x6F,0x3F,0x7F,0x3F,0x60,0x30,0x6F,0x30,0x68
    ,0xFE,0x05,0x06,0xFD,0x06,0x0D,0x06,0xFD,0xFE,0xFD,0xFE,0x05,0x06,0xFD,0x06,0x0D

    /*[2] ドアオープン */
    ,0x7F,0xFF,0xBF,0x7F,0xDF,0x3F,0xDF,0x3F,0xDF,0x3F,0xDF,0x3F,0xDF,0x3F,0x5F,0xBF
    ,0xFE,0xFF,0xFD,0xFE,0xFB,0xFC,0xFB,0xFC,0xFB,0xFC,0xFB,0xFC,0xFB,0xFC,0xFA,0xFD
    ,0xDF,0x3F,0xDF,0x3F,0xDF,0x3F,0xDF,0x3F,0xDF,0x3F,0xDF,0x3F,0xBF,0x7F,0x7F,0xFF
    ,0xFB,0xFC,0xFB,0xFC,0xFB,0xFC,0xFB,0xFC,0xFB,0xFC,0xFB,0xFC,0xFD,0xFE,0xFE,0xFF

    /*[3] 上に  */
    ,0xFF,0xFE,0xFF,0xFC,0xFF,0xFC,0xFF,0xF8,0xFF,0xF0,0xFF,0xF1,0xFF,0xE3,0xFF,0xC7
    ,0xFF,0x7F,0xFF,0x3F,0xFF,0x1F,0xFF,0x1F,0xFF,0x0F,0xFF,0x87,0xFF,0xC3,0xFF,0xE1
    ,0xFF,0x87,0xFF,0x0F,0xFF,0x1F,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    ,0xFF,0xF0,0xFF,0xF8,0xFF,0xFC,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

    /*[4] ブロック */
    ,0x7F,0xFF,0x3F,0xD5,0x5F,0xA0,0x3F,0xC0,0x5F,0xA0,0x3F,0xC0,0x5F,0xA0,0x2F,0xD0
    ,0xFF,0xFF,0xFF,0x57,0xFF,0x01,0xFF,0x03,0xFF,0x01,0xFF,0x03,0xFF,0x01,0xFF,0x03
    ,0x5F,0xA0,0x2F,0xD0,0x5F,0xA0,0x2F,0xD0,0x5F,0xA0,0x2A,0xD5,0x55,0xAA,0x00,0xFF
    ,0xFF,0x01,0xFF,0x03,0xFF,0x01,0xFF,0x03,0xFF,0x01,0xAB,0x57,0x55,0xAB,0x00,0xFF

    /*[5] ドア*/
    ,0x00,0xFF,0x1E,0xFF,0x7E,0xE3,0x7A,0x87,0x7E,0x83,0x7E,0x83,0x1A,0xEF,0xDA,0xAF
    ,0x00,0xFF,0xF8,0xFF,0xFE,0x87,0xBE,0xC1,0xFE,0x81,0xFE,0x81,0xB8,0xE7,0xBB,0xE6
    ,0xDA,0xAF,0x1E,0xE3,0x7E,0x83,0x7A,0x87,0x7E,0x83,0x7E,0x83,0x00,0xFF,0x00,0xFF
    ,0xBB,0xE6,0xF8,0x87,0xFE,0x81,0xBE,0xC1,0xFE,0x81,0xFE,0x81,0x00,0xFF,0x00,0xFF

    /*[6]レンガ*/
    ,0x01,0xFE,0xFE,0x01,0xFE,0x51,0xFE,0x01,0xFE,0x41,0xFE,0x01,0xFE,0x81,0xFF,0x25
    ,0x00,0xFF,0x55,0xAA,0xAF,0x50,0x57,0xAC,0xAA,0x7D,0x57,0xBC,0xAF,0x7A,0x5F,0xA0
    ,0x00,0xFF,0xAA,0x55,0x57,0xBD,0xAA,0x5D,0x57,0xAA,0xAF,0x74,0x5F,0xB2,0xBF,0x40
    ,0x00,0xFF,0xFE,0xA5,0xFE,0x01,0xFE,0x01,0xFE,0x09,0xFE,0x11,0xFE,0x41,0xFF,0x00

    /*[7]人面岩*/
    ,0x7F,0xBF,0xC1,0x7E,0xDE,0x7F,0xDE,0x7F,0xDE,0x7F,0xC0,0x7F,0xFE,0x41,0xFE,0x41
    ,0xFE,0xFF,0xC1,0x3F,0xBD,0x7E,0xBD,0x7E,0xBD,0x7E,0x81,0x7E,0xBF,0x40,0xBF,0x40
    ,0xFE,0x41,0xFF,0x40,0xC0,0x7F,0xD5,0x6A,0xD5,0x6A,0xC0,0x7F,0xFF,0x40,0x7F,0xA0
    ,0x3F,0xC0,0xFF,0x00,0x01,0xFE,0x55,0xAA,0x55,0xAA,0x01,0xFE,0xFF,0x00,0xFE,0x01

    /*--------------------*/
    /*[0] 体力アイコン*/
    ,0x00,0xFF,0x3C,0xD7,0x7E,0xBF,0x7E,0xBF,0x7E,0xBF,0x3C,0xDF,0x18,0xEF,0x00,0xFF

    /*お金アイコン*/
    ,0x00,0xFF,0x1C,0xFF,0x3E,0xFD,0x7E,0xF9,0x7E,0x81,0x7C,0xF3,0x78,0xF7,0x00,0xFF

    /*カギアイコン*/
    ,0xFF,0x00,0x80,0x7F,0x8E,0x7F,0xFA,0x7F,0xCA,0x7F,0xCE,0x7F,0x80,0x7F,0x80,0x7F

    /*[1] 自分の弾ヨコ*/
    ,0x00,0x00,0x00,0x00,0x00,0x7E,0x7E,0xFF,0x7E,0xFF,0x00,0x7E,0x00,0x00,0x00,0x00

    /*[2] 自分の弾タテ*/
    ,0x00,0x18,0x18,0x3C,0x18,0x3C,0x18,0x3C,0x18,0x3C,0x18,0x3C,0x18,0x3C,0x00,0x18

    /*[3] 敵の弾*/
    ,0x00,0x3C,0x20,0x5E,0x40,0xBF,0x62,0x9D,0x50,0xAF,0x6C,0x93,0x38,0x46,0x00,0x3C

    /*---------爆発パターン*/
    ,0x00,0x40,0x62,0xEE,0x2C,0x7E,0x3C,0x7C,0x78,0x7C,0x7E,0xFE,0x58,0x7C,0x00,0x40
    ,0x04,0x9D,0x32,0x7F,0x00,0x7E,0x00,0xFE,0x00,0x3F,0x00,0x7E,0x00,0x7E,0x44,0xEF
    ,0x77,0x77,0x5B,0xDF,0x7F,0xFF,0x7F,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0x83,0xB3
    ,0x37,0x37,0x65,0x7F,0x40,0x67,0x81,0xE3,0x81,0xC3,0x83,0xC3,0xC1,0xE7,0x6E,0x7F
    ,0x40,0x48,0x08,0x09,0x82,0xC2,0x00,0x00,0x00,0x08,0x44,0x44,0x01,0x93,0x10,0x10

    /*-------------バンザイ A*/
    ,0x00,0x00,0x00,0x0F,0x0F,0xF0,0x7F,0xE0,0x67,0xFF,0x27,0xFF,0x3F,0x73,0x3F,0x70
    ,0x00,0x00,0x00,0xE0,0xA0,0x7E,0xF6,0x0F,0x46,0xFF,0xE4,0xFF,0xFC,0xCF,0xFC,0x0E
    ,0x07,0x3F,0x07,0x0F,0x07,0x08,0x0F,0x10,0x1C,0x63,0x08,0x34,0x00,0x18,0x00,0x00
    ,0xC0,0xFC,0xC0,0xE0,0xC0,0x30,0xF0,0x08,0x38,0xC6,0x10,0x2C,0x00,0x18,0x00,0x00
    ,0x00,0x0F,0x0F,0x10,0x1F,0x20,0x07,0x3F,0x07,0x0F,0x07,0x6F,0x6F,0xF3,0x7F,0xF4
    ,0x00,0xE0,0xA0,0x70,0xF0,0x08,0x40,0xF8,0xE0,0xF0,0xC0,0xF6,0xF6,0x8F,0xFE,0x5F
    ,0x37,0x7F,0x07,0x3F,0x07,0x08,0x07,0x08,0x06,0x09,0x06,0x09,0x00,0x0E,0x00,0x1E
    ,0xCC,0xFE,0xC0,0xEC,0xC0,0x20,0xE0,0x10,0x60,0x90,0x60,0x90,0x00,0x60,0x00,0x70

    /*-------------死亡 A*/
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0
    ,0x00,0x1F,0x1F,0xA3,0x3F,0xC3,0x3F,0xC3,0x3F,0xC3,0x1F,0x23,0x0F,0x13,0x00,0x1F
    ,0xC0,0x3C,0xE4,0x9A,0xEE,0xD9,0xFE,0xD9,0xFE,0xD9,0xFE,0xD9,0xFE,0xD9,0x00,0xFE
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x30
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0
    ,0x08,0x77,0x1F,0xE3,0x3F,0x43,0x1F,0x23,0x1F,0x23,0x0F,0x13,0x0F,0x13,0x00,0x1F
    ,0xC0,0x3C,0xE4,0x9A,0xEE,0xD9,0xFE,0xD9,0xFE,0xD9,0xFE,0xD9,0xFE,0xD9,0x00,0xFE

    /*透明*/
     ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

    /*真っ黒*/
    ,0x00,0x01,0x00,0x03,0x00,0x07,0x00,0x0F,0x00,0x1F,0x00,0x3F,0x00,0x7F,0x00,0xFF
    ,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0x00,0x80,0x00,0xC0,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0xFC,0x00,0xFE,0x00,0xFF
    ,0x00,0xFF,0x00,0x7F,0x00,0x3F,0x00,0x1F,0x00,0x0F,0x00,0x07,0x00,0x03,0x00,0x01
    ,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0x00,0xFF,0x00,0xFE,0x00,0xFC,0x00,0xF8,0x00,0xF0,0x00,0xE0,0x00,0xC0,0x00,0x80

    /*レンガ*/
     ,0xFF,0xFE,0xFF,0x01,0xAF,0x51,0xFF,0x01,0xBF,0x41,0xFF,0x01,0x7F,0x81,0xDA,0x25

    /*タイトル文字*/
    ,0x00,0x01,0x00,0x0F,0x03,0x3D,0x0F,0x37,0x1F,0x6F,0x3F,0xDF,0x3F,0xDE,0x7E,0xBD
    ,0x00,0xFF,0x38,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0x3B,0x01,0xFE,0x00,0xC7
    ,0x00,0x00,0x00,0xE1,0x80,0x71,0xE0,0xD9,0xF0,0xED,0xF0,0xFD,0xF8,0xF7,0xF8,0x7F
    ,0x00,0x00,0x00,0xFE,0xFC,0x7A,0xFC,0x7A,0xFC,0x7A,0xFC,0x7A,0xFC,0x7A,0xFC,0x7A
    ,0x00,0x00,0x00,0x0F,0x07,0x0B,0x07,0x0B,0x07,0x0B,0x07,0x0B,0x07,0x0B,0x07,0x0B
    ,0x00,0x00,0x00,0xF0,0xE0,0xD3,0xE0,0xD3,0xE1,0xD6,0xE3,0xDD,0xE3,0xDD,0xC7,0xFB
    ,0x00,0x1F,0x01,0xFE,0x3F,0xDF,0xFF,0x7F,0xFF,0xFF,0xFE,0xF9,0xF0,0xEF,0xE0,0xDC
    ,0x00,0xF0,0x00,0xFE,0xF8,0xF7,0xFE,0xFD,0xFF,0xFE,0xFF,0x1F,0x1F,0xEF,0x0F,0x77
    ,0x00,0x00,0x00,0x01,0x00,0x07,0x01,0x8E,0x03,0xCD,0x07,0xDB,0x87,0x5B,0x8F,0x77
    ,0x00,0x3F,0x07,0xF8,0x7F,0xBF,0xFF,0xFF,0xFF,0xFF,0xF8,0xE7,0xE0,0xDF,0xC0,0xB8
    ,0x00,0xE0,0x00,0xFC,0xF0,0xEE,0xFC,0xFB,0xFE,0xFD,0xFE,0x7F,0x3F,0xDE,0x1F,0xEF
    ,0x00,0x00,0x00,0x3F,0x1F,0x2F,0x1F,0x2F,0x1F,0xAF,0x1F,0xEF,0x1F,0xEF,0x1F,0xEF
    ,0x00,0x00,0x00,0xC1,0x80,0x61,0x80,0xE1,0xC0,0xB1,0xE0,0xD9,0xE0,0xFD,0xF0,0xED
    ,0x00,0x00,0x00,0xFE,0x7C,0xFA,0x7C,0xFA,0x7C,0xFA,0x7C,0xFA,0x7C,0xFA,0x7C,0xFA
    ,0x7C,0xBF,0x7C,0xBB,0x7C,0xB3,0x7C,0x83,0x78,0x87,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0x00,0x83,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x83
    ,0x7C,0xFB,0x7C,0xBB,0x7C,0x9B,0x7C,0x83,0x7C,0x83,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0xF8,0x7E,0x78,0xFE,0x78,0xBE,0x78,0x86,0x78,0x86,0x00,0xFE,0x00,0xFE,0x00,0xFE
    ,0x07,0x0B,0x07,0x0B,0x03,0x0F,0x03,0x0C,0x03,0x0C,0x00,0x0F,0x00,0x0F,0x00,0x1F
    ,0xC7,0xFB,0xC7,0xFB,0xC7,0xBB,0xC7,0x38,0xC7,0x38,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0xC0,0xF8,0xC0,0xB1,0xC0,0x33,0xC0,0x33,0xC0,0x33,0x00,0xF3,0x00,0xF3,0x00,0xFB
    ,0x00,0x3F,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0x0F,0xF7,0x0F,0xF7,0x0F,0xF7,0x8F,0x70,0x8F,0x70,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0x80,0xE0,0x80,0x60,0x00,0xE0,0x00,0xC0,0x00,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xF0
    ,0x0F,0x3F,0x0F,0x37,0x0F,0x17,0x0F,0x10,0x0F,0x10,0x00,0x3F,0x00,0x3F,0x00,0x7F
    ,0x8F,0x7F,0x8F,0x7F,0x8F,0x7E,0x8F,0x70,0x8F,0x70,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0xF8,0xF7,0xF8,0x77,0xFC,0x3B,0x3C,0xC3,0x1E,0xE1,0x00,0xFF,0x00,0xFF,0x00,0xFF
    ,0x7C,0xFA,0x7C,0xFA,0x7C,0xB2,0x7C,0x82,0x78,0x86,0x00,0xFE,0x00,0xFE,0x00,0xFE
    ,0x3C,0xC3,0x1E,0xE1,0x1F,0x6F,0x0F,0x77,0x07,0x3B,0x01,0x1E,0x00,0x07,0x00,0x00
    ,0x00,0xEF,0x00,0xFF,0x83,0x7D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0xFF,0x00,0x7C
    ,0x70,0x8F,0xF0,0x0F,0xF0,0xED,0xE0,0xDC,0xC0,0xB8,0x00,0xF0,0x00,0xC0,0x00,0x00
    ,0x78,0x87,0x3C,0xC3,0x3E,0xFD,0x3F,0xDF,0x1F,0xEF,0x07,0x7B,0x00,0x1F,0x00,0x03
    ,0x03,0x3C,0x07,0xF8,0x0F,0xF7,0xFF,0xFF,0xFF,0xFE,0xFC,0xFB,0x00,0xFF,0x00,0xF8
    ,0x83,0x7C,0x81,0x7E,0x81,0xEE,0x00,0xE7,0x00,0xE3,0x00,0xC3,0x00,0x00,0x00,0x00
    ,0xC0,0x3C,0xE0,0x1F,0xF8,0xF7,0xFF,0xFF,0x7F,0xBF,0x1F,0xEF,0x00,0xFF,0x00,0x0F
    ,0x07,0x78,0x0F,0xF0,0x3F,0xDF,0xFF,0xFB,0xFB,0xF5,0xE3,0xDD,0x00,0xFF,0x00,0xC0
    ,0x07,0xF8,0x83,0x7C,0x83,0x7D,0x81,0x6E,0x80,0xE7,0x80,0x63,0x00,0xE0,0x00,0x00
    ,0x80,0x7D,0xC0,0x3F,0xF0,0xEF,0xFF,0xFF,0xFF,0x7F,0x3F,0xDF,0x00,0xFF,0x00,0x0F
    ,0x0F,0xF0,0x3E,0xC1,0xFE,0x3D,0xFC,0xFB,0xF8,0xF7,0xE0,0xDE,0x00,0xF8,0x00,0x80
    ,0x0F,0xF0,0x0F,0xF0,0x0F,0xFE,0x0F,0xBF,0x0F,0x3F,0x0F,0x30,0x00,0x3F,0x00,0x00
    ,0x03,0xDC,0x03,0xCC,0x01,0xCF,0x01,0xC6,0x00,0xC7,0x00,0xC3,0x00,0xC3,0x00,0x00
    ,0xF8,0x06,0xF8,0x06,0xF8,0xF6,0xF8,0xF6,0xF8,0xFE,0x78,0x86,0x00,0xFE,0x00,0x00
    
    /*顔*/
      ,0x1F,0x3F,0x1F,0x3F,0x1F,0x3F,0x0F,0x3F,0x00,0x1F,0x1F,0x20,0x37,0x48,0x2F,0xD0
      ,0xAF,0xF0,0xAF,0xF0,0xAF,0xF0,0x1F,0xE0,0x5F,0xA0,0xFF,0x00,0xDF,0x20,0xBF,0x40
      ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
      ,0x60,0x98,0xA0,0x58,0xD0,0x28,0xA0,0x5C,0xD0,0x2C,0xE8,0x16,0xD0,0x2E,0xA8,0x57
      ,0x00,0xFF,0x7F,0x80,0x7F,0x80,0x00,0xFF,0x01,0x1F,0x08,0x1F,0x0C,0x1F,0x08,0x1F
      ,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xF8,0xFF,0x78,0xFF,0x30,0xFF,0x36,0xFF
      ,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x07,0xFC,0x07,0xFF,0x0F,0xFE,0x1F,0xFF
      ,0x14,0xEB,0xC0,0x3F,0xD0,0x2F,0x00,0xFC,0xD0,0x3C,0xD0,0x7C,0xD0,0xBC,0xD0,0x7C
      ,0x04,0x1F,0x0C,0x1F,0x0F,0x10,0x0F,0x1F,0x0F,0x1F,0x0F,0x1F,0x0F,0x1F,0x0B,0x1F
      ,0xB9,0xFF,0xFF,0xFF,0x9F,0x78,0x3F,0xFF,0x7F,0xFF,0x7B,0xFF,0xB3,0xFF,0xCF,0xFF
      ,0x27,0xFE,0x3F,0xFF,0xFF,0x0E,0xFE,0xFF,0xFD,0xFE,0xFB,0xFD,0xFF,0xFA,0xFF,0xFD
      ,0xD0,0xBC,0xC0,0x7C,0xC0,0xB8,0x80,0x78,0x80,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0
      ,0x07,0x1F,0x07,0x0F,0x06,0x0F,0x05,0x0F,0x07,0x0F,0x00,0x07,0x00,0x01,0x00,0x01
      ,0xFF,0xFF,0x00,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xEF,0xFF,0x00,0xFF
      ,0xCF,0xFA,0xEF,0xF5,0x67,0xFA,0x34,0xFF,0xF4,0xFB,0xE0,0xFE,0xC0,0xF8,0x00,0xC0
      ,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

    /*----------メニュー*/
    ,0x00,0x7F,0x3F,0x7F,0x3F,0x7F,0x38,0x77,0x38,0x77,0x38,0x77,0x3F,0x7F,0x3F,0x7F
    ,0x00,0xFF,0xC3,0xBF,0xE3,0xFF,0x73,0xEF,0x33,0xFF,0x73,0xAF,0xF3,0xEF,0xE3,0xDF
    ,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC1,0x00,0xC1
    ,0x00,0x3F,0x1E,0x6D,0x1E,0x6D,0x1E,0xFF,0x3F,0xD2,0x33,0xFF,0x73,0xAF,0x61,0xFF
    ,0x00,0x3F,0x0C,0xBF,0x0E,0xB7,0x06,0xBF,0x07,0xDB,0x03,0xFF,0x83,0x6D,0x81,0xEF
    ,0x00,0x7F,0x1C,0xEB,0x18,0xFF,0x38,0xD6,0x30,0xFC,0xF0,0x2C,0xE0,0xD8,0xC0,0xF8
    ,0x38,0x77,0x38,0x77,0x38,0x76,0x38,0x76,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x00
    ,0x03,0xFF,0x03,0xFF,0x03,0x0F,0x03,0x0F,0x00,0x0F,0x00,0x0F,0x00,0x00,0x00,0x00
    ,0x00,0xC3,0x00,0xFF,0x80,0x7F,0xFF,0xFC,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00
    ,0x7F,0xF3,0xFF,0x7F,0xC1,0xFE,0xC0,0xFF,0x00,0xF3,0x00,0xF1,0x00,0x00,0x00,0x00
    ,0x81,0xF6,0xC1,0xB6,0xC1,0xFE,0xC1,0xFE,0x00,0xFF,0x00,0xFB,0x00,0x00,0x00,0x00
    ,0xC0,0xF0,0xC0,0xF0,0xC0,0xF0,0xC0,0xF0,0x00,0xF0,0x00,0xF0,0x00,0x00,0x00,0x00
    ,0x00,0x1F,0x02,0x1D,0x07,0x1B,0x07,0x1B,0x07,0x1B,0x07,0x1B,0x07,0x1B,0x07,0x1B
    ,0x00,0x9F,0x06,0xD9,0x07,0xFE,0x86,0x7F,0xC6,0xBF,0xC6,0x7F,0x66,0xDF,0x66,0xBF
    ,0x00,0xFF,0x1F,0xE0,0x3F,0xFF,0x38,0xF7,0x30,0xFF,0x30,0xFF,0x3F,0xFF,0x3F,0xF8
    ,0x00,0xFF,0xC4,0x3B,0xE6,0xFD,0x06,0xFD,0x06,0xFF,0x06,0xFB,0xC3,0xFE,0xC3,0x3F
    ,0x00,0x7E,0x18,0x67,0x3C,0xDB,0x3C,0xDB,0x3C,0xDB,0x3C,0xE7,0x66,0xBD,0x66,0xBD
    ,0x00,0xF8,0x20,0xD8,0x60,0xB8,0x60,0xB8,0x60,0xD8,0xC0,0x78,0xC0,0x70,0xC0,0xB0
    ,0x07,0x1B,0x07,0x1B,0x07,0x1B,0x07,0x1B,0x06,0x19,0x00,0x1F,0x00,0x07,0x00,0x00
    ,0x3E,0xD7,0x1E,0xEF,0x1E,0xEF,0x0F,0xB6,0x06,0xB9,0x00,0x9F,0x00,0x07,0x00,0x00
    ,0x30,0xFF,0x30,0xFF,0x38,0xF7,0x3F,0xFF,0x3F,0xC0,0x00,0xFF,0x00,0x7F,0x00,0x00
    ,0x03,0xFD,0x01,0xFF,0x01,0xFF,0xE1,0xFF,0xE0,0x1F,0x00,0xFF,0x00,0xF1,0x00,0x00
    ,0xE6,0x5B,0xC7,0xFB,0xC3,0xFF,0xC3,0xFF,0xC3,0x3C,0x00,0xFF,0x00,0xC3,0x00,0x00
    ,0xC0,0xB0,0x80,0xF0,0x80,0xE0,0x80,0x60,0x00,0xE0,0x00,0xE0,0x00,0x80,0x00,0x00
    ,0x00,0x0F,0x00,0x0F,0x03,0x0F,0x03,0x0F,0x03,0x0F,0x03,0x0F,0x03,0x0F,0x03,0x0F
    ,0x00,0xFF,0x00,0xFF,0xFE,0xFD,0xFE,0x81,0x80,0x7F,0x80,0x7F,0xFC,0x03,0xFE,0xFD
    ,0x00,0xFB,0x00,0xFF,0x61,0xFE,0x71,0xBF,0x3B,0xD5,0x1F,0xFF,0x1F,0x6E,0x0E,0x35
    ,0x00,0xFF,0x00,0xFF,0xCE,0xF5,0xCE,0xB5,0x8E,0xF5,0x0E,0xF5,0x0E,0xF5,0x0E,0xB5
    ,0x00,0xFF,0x00,0xFF,0x7F,0xFF,0x7F,0x8E,0x06,0xFF,0x06,0x9F,0x06,0x9F,0x06,0x9F
    ,0x00,0xF0,0x00,0xF8,0xE0,0xD8,0xE0,0x18,0x00,0xF8,0x00,0x80,0x00,0x80,0x00,0x80
    ,0x03,0x0F,0x03,0x0F,0x03,0x0F,0x03,0x0F,0x03,0x0F,0x00,0x0F,0x00,0x0F,0x00,0x00
    ,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xFE,0x81,0xFF,0xFE,0x00,0xFF,0x00,0xFF,0x00,0x00
    ,0x1F,0x6E,0x1F,0xFF,0x3B,0xD5,0x71,0xBF,0x60,0xFF,0x00,0xFF,0x00,0xF1,0x00,0x00
    ,0x0E,0xF5,0x0E,0xF5,0x8E,0xF5,0xCE,0xB5,0xC6,0xFD,0x00,0xFF,0x00,0xFF,0x00,0x00
    ,0x06,0x9F,0x06,0x9F,0x06,0x9F,0x06,0x9F,0x06,0x9F,0x00,0x9F,0x00,0x1F,0x00,0x00
    ,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00

    /*インストラクション*/
      ,0x00,0xFF,0x7C,0xFB,0x66,0xDD,0x66,0xDD,0x7C,0xFB,0x66,0xDD,0x66,0xDD,0x7C,0xFB
      ,0x00,0xFF,0x3D,0xFF,0xA0,0xFF,0x20,0xFF,0x3C,0xFF,0xA0,0xFF,0x20,0xFF,0x21,0xFF
      ,0x00,0xFF,0xDE,0xFF,0x91,0xFF,0x91,0xFF,0x9E,0xFF,0x94,0xFF,0x92,0xFF,0xD1,0xFF
      ,0x00,0xFE,0x78,0xFE,0x40,0xFE,0x40,0xFE,0x78,0xFE,0x40,0xFE,0x40,0xFE,0x78,0xFE

      ,0x00,0xFF,0x3C,0xFB,0x66,0xDD,0x66,0xDD,0x7E,0xFD,0x66,0xDD,0x66,0xDD,0x66,0xDD
      ,0x00,0xFF,0x05,0xFF,0x85,0xFF,0x05,0xFF,0x05,0xFF,0x85,0xFF,0x25,0xFF,0x3D,0xFF
      ,0x00,0xFF,0x28,0xFF,0x2D,0xFF,0x2F,0xFF,0x2F,0xFF,0x2A,0xFF,0x2A,0xFF,0xE8,0xFF
      ,0x00,0xFF,0xB8,0xFF,0xA4,0xFF,0xA4,0xFF,0xA4,0xFF,0xB8,0xFF,0xA0,0xFF,0xA0,0xFF

    /*波*/
    ,0xC3,0xFF,0x81,0xFF,0x3C,0xC3,0x7E,0x81,0xFF,0x00,0xFF,0x3C,0xFF,0x7E,0xFF,0xFF

    /*エンディングの絵*/
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x30
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x03,0xFF,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x7F,0x3F,0x7F,0x7F,0xFF,0x7F,0xFF
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x1F,0x1F,0xBF,0xBF,0xFF,0xBF,0xFF
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF8,0xF8,0xFC,0xF8,0xFE,0xF8,0xFE
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x01,0x06
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x1F,0xE0,0xFE,0x01,0xC1,0x3E
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xC0,0x3F,0x60,0x9F,0xE0,0x1F
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xF0
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x03,0x00,0x07,0x00,0x0F,0x00,0x0F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x1F
    ,0x07,0xF8,0x23,0xDC,0x23,0xDC,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFC
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xE7,0x18,0xE7,0x18,0xC7,0x38
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xCF,0x30,0xCE,0x31,0xC7,0x38,0xC7,0x38,0xC7,0x38
    ,0x80,0x60,0xC0,0x38,0xF0,0x0C,0xF8,0x06,0x3C,0xC2,0x1C,0xE2,0x1C,0xE2,0x8C,0x72
    ,0x7F,0xFF,0x3D,0x7F,0x3D,0x7F,0x1D,0x3F,0x1D,0x3F,0x0C,0x1F,0x0F,0x1F,0x07,0x0F
    ,0xFF,0xFF,0x8A,0xFF,0xAA,0xFF,0xAA,0xFF,0xA8,0xFF,0x8D,0xFF,0xFF,0xFF,0xFF,0xFF
    ,0xF8,0xFC,0x98,0xFC,0xB8,0xFC,0x98,0xFC,0xB0,0xF8,0x90,0xF8,0xF0,0xFB,0xE1,0xF6
    ,0x03,0x0C,0x07,0x08,0x0E,0x11,0x1D,0x22,0x1B,0x64,0x3B,0x44,0x20,0xDF,0xFF,0x00
    ,0x1F,0xE0,0x7F,0x80,0x70,0x8F,0xF7,0x0F,0xEF,0x1F,0xEF,0x1F,0xEF,0x1F,0x0F,0xFF
    ,0xFE,0x01,0xFF,0x00,0x3F,0xC0,0x9F,0xE0,0xCF,0xF0,0xCF,0xF0,0xCF,0xF0,0xCF,0xF0
    ,0x00,0xFE,0x80,0x7F,0xC0,0x3F,0xE0,0x1F,0xF0,0x0F,0xF8,0x07,0xFC,0x03,0xFC,0x03
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x1F,0x00,0x1F,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x3F
    ,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x07,0xF8,0x04,0xFB,0x00,0xFF,0x02,0xFF,0x06,0xFF
    ,0xC7,0x38,0xC7,0x38,0x87,0x78,0x87,0x78,0x04,0xFB,0x09,0xF7,0x03,0xFF,0x1F,0xFF
    ,0xC7,0x38,0xC7,0x38,0x87,0x78,0x04,0xFB,0x85,0xFB,0x83,0xFF,0x9F,0xEF,0xBF,0xFF
    ,0x88,0x76,0x48,0xB4,0x48,0xB4,0x08,0xF4,0x88,0xF4,0x88,0xF4,0x80,0xFC,0xE0,0xF8
    ,0x03,0x07,0x03,0x07,0x01,0x03,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xF8,0xFF,0xF0,0xFC,0x60,0xF8,0x00,0x30,0x00,0x00
    ,0xC3,0xFC,0x8F,0xF0,0x0F,0xD0,0x0F,0x10,0x0F,0x10,0x00,0x1F,0x00,0x00,0x00,0x00
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x1F,0xE0,0x47,0xF8,0x70,0xFF
    ,0xF7,0x0F,0xF8,0x07,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x7F,0x80
    ,0x9F,0xE0,0x01,0xFE,0xFE,0x01,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    ,0xFC,0x03,0xFE,0x01,0x3E,0xC1,0xC0,0x3F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    ,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF8,0xC0,0x3C,0xF8,0x06,0xFC,0x03
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x1F
    ,0x06,0xFF,0x04,0xFF,0x07,0xFF,0x07,0xFF,0x0F,0xFF,0x1F,0xFF,0x5F,0xFF,0x5F,0xFF
    ,0x1F,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xFF,0x9F,0xFF,0xBF,0xFF
    ,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xF7,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF
    ,0xE0,0xF8,0xE0,0xF0,0xE0,0xF0,0x60,0xF0,0xA0,0xF0,0xE0,0xF0,0xE0,0xF0,0xE0,0xF0
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01
    ,0x7C,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x70,0xFF,0x7F,0xFF,0x7D,0xFF
    ,0x3F,0xC0,0x83,0xFC,0xFD,0xFE,0xFE,0xFF,0xFF,0xFF,0x3F,0xFF,0xC7,0xFF,0xFF,0xFF
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x07,0xF8,0xF0,0xFF,0xFF,0xFF,0xC1,0xFF,0xDE,0xFF
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x0F,0xF0,0xF2,0xFD,0x78,0xFF
    ,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFE,0x01,0xFE,0x01,0xFE,0x01,0x1E,0xE1,0x00,0xFF
    ,0x00,0x00,0x00,0x80,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x0F,0x00,0x0F,0x00,0x0F,0x02,0x0D,0x03,0x04,0x03,0x04,0x00,0x07,0x03,0x07
    ,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0x3F,0xFF,0xDF,0x3F,0xDF,0x3F,0x0F,0xFF
    ,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFB,0xFF
    ,0xFF,0xFF,0xE7,0xFF,0xFB,0xFF,0xFD,0xFF,0xF9,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF
    ,0xE0,0xF8,0xF0,0xF8,0xF0,0xF8,0xF0,0xF8,0xA0,0xF8,0xA0,0xF0,0xA0,0xF0,0x40,0xF0
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xF7,0xFF,0x7B,0xFF,0x7C,0xFF,0x7F,0xFF,0x3F,0x7F,0x1B,0x7F,0x1B,0x3F,0x18,0x3F
    ,0xF7,0xFF,0xE7,0xFF,0x0F,0xFF,0xDF,0xFF,0x1F,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,0xFF
    ,0xF7,0xFF,0xFF,0xFF,0xDE,0xFF,0xE5,0xFF,0xFF,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF
    ,0xBD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xEF,0xFF
    ,0xE0,0xF3,0xE0,0xF0,0xC0,0xF0,0xC0,0xE0,0x00,0xC0,0x00,0x80,0x00,0x80,0x00,0x80
    ,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x07
    ,0x03,0x07,0x03,0x0F,0x03,0x1F,0x00,0x7F,0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0
    ,0xEF,0xFF,0xE1,0xFF,0xF0,0xFB,0x80,0xF9,0x70,0x88,0xF0,0x08,0xF0,0x08,0xF0,0x0F
    ,0xF9,0xFF,0xFC,0xFF,0xFF,0xFF,0x7F,0xFF,0x1F,0xFF,0x0F,0x3F,0x00,0x3F,0x0F,0xFF
    ,0xFE,0xFF,0x7D,0xFF,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0x03,0xFF,0xFE,0xFF
    ,0xC0,0xE0,0xC0,0xE0,0x80,0xC0,0x00,0xC0,0x00,0x80,0x00,0xF8,0x78,0x86,0xFE,0x01
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x07
    ,0x0C,0x1F,0x0C,0x1F,0x0E,0x1F,0x0F,0x1F,0x07,0x0F,0x07,0xFF,0x7B,0x87,0x7C,0x83
    ,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x80,0xFF,0xC0,0xFF,0xFF,0xFF,0xFE,0xFF
    ,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF
    ,0x8E,0xFF,0x1C,0xFF,0x1C,0xFE,0x38,0xFC,0x60,0xF8,0xE0,0xF0,0x80,0xE0,0xC0,0xFF
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x0F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x01,0x3E,0x03,0x3C
    ,0x1F,0xE0,0x3F,0xC0,0x3F,0xC0,0x78,0x87,0xE7,0x1F,0x9F,0x7F,0xBF,0x7F,0x3F,0xFF
    ,0xC7,0x38,0xCF,0x30,0x8F,0x50,0x1F,0xE0,0xCF,0xF0,0xE7,0xF8,0xF3,0xFC,0xFB,0xFC
    ,0xEF,0x1F,0xEF,0x1F,0xE7,0x1F,0xF3,0x0F,0xFB,0x07,0xF9,0x07,0xFC,0x03,0xFF,0x00
    ,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFC,0xFF,0xF9,0xFE,0xFB,0xFC,0xC7,0xF8,0x1F,0xE0
    ,0xFE,0x01,0xFE,0x01,0xFF,0x00,0xFF,0x00,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01
    ,0x00,0x01,0x00,0xA7,0x00,0xFF,0x3B,0xFF,0x3D,0xFF,0x9D,0xFF,0xDD,0xFF,0xCD,0xFF
    ,0x00,0xC0,0x40,0xE0,0xC0,0xEF,0x4F,0xFF,0x4E,0xFF,0x1E,0xFF,0x9E,0xFF,0xBE,0xFF
    ,0x03,0x07,0x03,0x07,0x07,0x8F,0x0F,0xDF,0x4E,0xFF,0xCE,0xFF,0xEE,0xFF,0xE6,0xFF
    ,0x7C,0x83,0x7F,0x80,0x7F,0x80,0x7F,0x80,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    ,0x3E,0xFF,0x80,0x7F,0xF7,0x0F,0xFB,0x07,0xF8,0x07,0xFE,0x01,0xFF,0x00,0xFF,0x00
    ,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x80,0x7F,0xFF,0x00
    ,0x3E,0xFF,0x7E,0xFF,0xFE,0xFF,0xFE,0xFF,0xFD,0xFE,0xF3,0xFC,0x07,0xF8,0xFF,0x00
    ,0xFC,0x03,0xFD,0x03,0xFD,0x03,0xFD,0x03,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01
    ,0x00,0xE0,0xE0,0xF0,0xF0,0xF8,0xF8,0xFC,0xF8,0xFC,0xF8,0xFC,0xF8,0xFE,0x7C,0xFF
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x07,0x38,0x07,0x38,0x0F,0x30,0x0F,0x30,0x1C,0x23,0x1C,0x22,0x00,0x3E,0x00,0x60
    ,0x3F,0xFF,0x3F,0xFF,0xBF,0x7F,0x3F,0xFF,0x3F,0xFF,0x3F,0x7F,0x3F,0x7F,0x3F,0x7F
    ,0xFD,0xFE,0xFC,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFC,0xFF
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x70,0x8F,0x07,0xFF,0x3F,0xFF,0x1F,0x7F
    ,0xFF,0x00,0xFF,0x00,0xFE,0x01,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    ,0xF0,0x0F,0xF6,0x0F,0x06,0xFF,0xEE,0xFF,0xEE,0xFF,0xEE,0xFF,0xEF,0xFF,0xEF,0xFF
    ,0xEE,0xFF,0xEE,0xFF,0xF7,0xFF,0xF3,0xFF,0xF9,0xFF,0x7C,0xFF,0x7E,0xFF,0x3F,0xFF
    ,0xBD,0xFF,0xBB,0xFF,0x33,0xFF,0x37,0xFF,0xB7,0xFF,0xAF,0xFF,0x2F,0xFF,0x9F,0xFF
    ,0xEA,0xFF,0xC8,0xFF,0xDC,0xFF,0xD8,0xFF,0xDB,0xFF,0xBB,0xFF,0xBB,0xFF,0x73,0xFF
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x7F,0x80,0x3F,0xC0,0xBF,0xC0,0xBF,0xC0,0x9F,0xE0
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    ,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
    ,0x7E,0xFF,0x7E,0xFF,0x7E,0xFF,0x7E,0xFF,0x7F,0xFF,0xBF,0x7F,0xBF,0x7F,0xBF,0x7F
    
    /*-------------ザコキャラデータ---*/
    /*[0] ハキュラA */
    ,0x00,0x00,0x00,0x00,0x00,0x7F,0x3F,0x40,0x3F,0x40,0x3F,0x40,0x3F,0x40,0x3F,0x40
    ,0x00,0x00,0x00,0x00,0x00,0xFE,0xFC,0x02,0xFC,0x02,0xFC,0x02,0xFC,0x02,0xFC,0x02
    ,0x3F,0x40,0x3F,0x40,0x3F,0x40,0x3F,0x40,0x3F,0x40,0x00,0x7F,0x00,0x00,0x00,0x00
    ,0xFC,0x02,0xFC,0x02,0xFC,0x02,0xFC,0x02,0xFC,0x02,0x00,0xFE,0x00,0x00,0x00,0x00

    /*[1] ハキュラB */
    ,0x00,0x00,0x00,0x1E,0x06,0x19,0x07,0x18,0x07,0x18,0x07,0x18,0x07,0x18,0x07,0x18
    ,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x30,0xF0,0x08,0xF0,0x08,0xF0,0x08,0xF0,0x08
    ,0x07,0x18,0x07,0x18,0x07,0x18,0x07,0x18,0x07,0x18,0x06,0x19,0x00,0x1E,0x00,0x00
    ,0xF0,0x08,0xF0,0x08,0xF0,0x08,0xF0,0x08,0xC0,0x30,0x00,0xC0,0x00,0x00,0x00,0x00

    /*[2] ハキュラC */
    ,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01
    ,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80
    ,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01
    ,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80

    /*[3] ハキュラD */
    ,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x0C,0x0F,0x10,0x0F,0x10,0x0F,0x10,0x0F,0x10
    ,0x00,0x00,0x00,0x78,0x60,0x98,0xE0,0x18,0xE0,0x18,0xE0,0x18,0xE0,0x18,0xE0,0x18
    ,0x0F,0x10,0x0F,0x10,0x0F,0x10,0x0F,0x10,0x03,0x0C,0x00,0x03,0x00,0x00,0x00,0x00
    ,0xE0,0x18,0xE0,0x18,0xE0,0x18,0xE0,0x18,0xE0,0x18,0x60,0x98,0x00,0x78,0x00,0x00

    /*[4] コウモリA*/
    ,0x00,0x00,0x00,0x0F,0x00,0x1F,0x02,0x3F,0x03,0x3F,0x00,0x3F,0x00,0x7F,0x00,0x7F
    ,0x00,0x00,0x00,0xF0,0x00,0xF8,0x20,0xFC,0x60,0xFC,0x00,0xFC,0x00,0xFE,0x00,0xFE
    ,0x00,0x7F,0x00,0x7F,0x00,0x7F,0x00,0x6F,0x00,0x46,0x00,0x44,0x00,0x00,0x00,0x00
    ,0x00,0xFE,0x00,0xFE,0x00,0xFE,0x00,0xE6,0x00,0x42,0x00,0x42,0x00,0x00,0x00,0x00

    /*[5] 与作A*/
    ,0x00,0xF0,0x70,0xFB,0x73,0xFF,0x73,0xFF,0x11,0xFF,0x17,0x3F,0x17,0x3F,0x1F,0x3F
    ,0x00,0x00,0x00,0xC0,0xC0,0xE0,0xC0,0xE0,0x80,0xF8,0xF8,0xFC,0xF8,0xFC,0xC8,0xFC
    ,0x13,0x3F,0x13,0x3F,0x06,0x3F,0x06,0x0F,0x0C,0x1E,0x0C,0x1E,0x18,0x3C,0x18,0x3C
    ,0xC8,0xFE,0xCC,0xFE,0x6C,0xFE,0x60,0xFC,0x20,0x70,0x30,0x78,0x38,0x7C,0x18,0x3C

    /*[6] 与作B*/
    ,0x00,0x07,0x03,0xFF,0x73,0xFF,0x71,0xFF,0x77,0xFF,0x17,0xFF,0x17,0x3F,0x1F,0x3F
    ,0x00,0xE0,0xC0,0xE0,0xC0,0xE0,0x80,0xE0,0xE0,0xFC,0xF8,0xFC,0xD8,0xFC,0xCC,0xFE
    ,0x13,0x3F,0x13,0x3F,0x12,0x3F,0x02,0x3F,0x06,0x0F,0x06,0x0F,0x0C,0x1F,0x0C,0x1E
    ,0xC6,0xEF,0xC6,0xEF,0x46,0xEF,0x40,0xEE,0x60,0xF0,0x60,0xF0,0x70,0xF8,0x30,0x78

    /*[7]丸い敵A*/
    ,0x00,0x03,0x03,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0xFF,0x7D,0xFF,0x7F,0xFF,0x7F,0xFF
    ,0x00,0xF0,0xF0,0xFC,0xF8,0xFC,0xFC,0xFE,0xFE,0xFF,0xF6,0xFF,0xFE,0xFF,0xFE,0xFF
    ,0x7E,0xFF,0x7D,0xFE,0x7C,0xFF,0x1F,0x7F,0x1F,0x3F,0x0F,0x1F,0x07,0x1F,0x00,0x0F
    ,0x00,0xFF,0xE0,0x10,0x00,0xFE,0xFC,0xFE,0xF8,0xFE,0xF8,0xFC,0xC0,0xF8,0x00,0xE0

    /*[8] 丸い敵B*/
    ,0x00,0x00,0x00,0x0F,0x0F,0x3F,0x1F,0x3F,0x1F,0x3F,0x3E,0x7F,0x3F,0x7F,0x3F,0x7F
    ,0x00,0x00,0x00,0xF0,0xF0,0xF8,0xF8,0xFC,0xFC,0xFE,0xEC,0xFE,0xFC,0xFE,0xFC,0xFE
    ,0x3F,0x7F,0x3C,0x7F,0x3F,0x7F,0x1F,0x7F,0x1F,0x3F,0x07,0x3F,0x00,0x0F,0x00,0x00
    ,0xFC,0xFE,0x00,0xFE,0xFC,0xFE,0xFC,0xFE,0xF8,0xFC,0xE0,0xFC,0x00,0xF0,0x00,0x00

    /*[9] 踏み台*/
    ,0x00,0x3F,0x3F,0x7F,0x7F,0xFF,0x7F,0xC0,0x7F,0xE0,0x7F,0xC0,0x7F,0xE0,0x7F,0xC0
    ,0x00,0xFE,0xFE,0xFD,0xFC,0xFF,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x03
    ,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x3F,0x60,0x00,0x3F
    ,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xFC,0x03,0xF8,0x07,0x00,0xFE

    /*[10] 破壊可能なかべ*/
    ,0x01,0xFE,0xFE,0x01,0xFE,0x51,0xFE,0x01,0xFE,0x41,0xFE,0x01,0xFE,0x81,0xFF,0x25
    ,0x00,0xFF,0x55,0xAA,0xAF,0x50,0x57,0xAC,0xAA,0x7D,0x57,0xBC,0xAF,0x7A,0x5F,0xA0
    ,0x00,0xFF,0xAA,0x55,0x57,0xBD,0xAA,0x5D,0x57,0xAA,0xAF,0x74,0x5F,0xB2,0xBF,0x40
    ,0x00,0xFF,0xFE,0xA5,0xFE,0x01,0xFE,0x01,0xFE,0x09,0xFE,0x11,0xFE,0x41,0xFF,0x00

    /*予約*/
    ,0x7F,0xBF,0xC1,0x7E,0xDE,0x7F,0xDE,0x7F,0xDE,0x7F,0xC0,0x7F,0xFE,0x41,0xFE,0x41
    ,0xFE,0xFF,0xC1,0x3F,0xBD,0x7E,0xBD,0x7E,0xBD,0x7E,0x81,0x7E,0xBF,0x40,0xBF,0x40
    ,0xFE,0x41,0xFF,0x40,0xC0,0x7F,0xD5,0x6A,0xD5,0x6A,0xC0,0x7F,0xFF,0x40,0x7F,0xA0
    ,0x3F,0xC0,0xFF,0x00,0x01,0xFE,0x55,0xAA,0x55,0xAA,0x01,0xFE,0xFF,0x00,0xFE,0x01

    /*シルビア*/
    ,0x00,0x03,0x00,0x07,0x03,0x0F,0x02,0x17,0x03,0x37,0x01,0x27,0x07,0x09,0x07,0x0C
    ,0x00,0xC0,0x00,0xE0,0xE0,0xF0,0xA0,0xF0,0xC0,0xE0,0x80,0xC0,0xC0,0xA0,0xE0,0x30
    ,0x0F,0x1C,0x1F,0x38,0x33,0x7C,0x37,0x78,0x07,0x38,0x06,0x0F,0x06,0x0F,0x06,0x0F
    ,0xF0,0x38,0xD8,0x3C,0x8C,0x5E,0xCC,0x3E,0xC0,0x2C,0xC0,0xE0,0xC0,0xE0,0xC0,0xE0

    ,0x00,0x00,0x00,0x03,0x00,0x07,0x03,0x3F,0x02,0x47,0x03,0x07,0x07,0x09,0x0F,0x1C
    ,0x00,0x00,0x00,0xC0,0x00,0xE0,0xE0,0xF0,0xA0,0xF0,0xE0,0xF0,0xC0,0xA0,0xE0,0x38
    ,0x1F,0x7C,0x77,0xF8,0x63,0xF4,0x07,0x68,0x07,0x08,0x06,0x0F,0x0C,0x1E,0x0C,0x1E
    ,0xF8,0x3E,0xDE,0x3F,0x86,0x5F,0xC0,0x26,0xC0,0x20,0x60,0xF0,0x60,0xF0,0x30,0x78
    
    /*[11] GOLD A*/
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x07,0x07,0x0F
    ,0x00,0x00,0x00,0x00,0x00,0x7C,0x74,0xFE,0xEE,0xF7,0xDC,0xF7,0xBA,0xF5,0x76,0xB9
    ,0x0E,0x1F,0x01,0x1F,0x1E,0x3F,0x3F,0x7F,0x3F,0x7F,0x3F,0x7F,0x00,0x7F,0x00,0x00
    ,0xEC,0xB2,0xD8,0xA6,0xB0,0xCC,0x60,0x98,0x40,0xB0,0x00,0xE0,0x00,0xC0,0x00,0x00
    ,0x00,0x01,0x01,0x43,0x41,0xE3,0x21,0x73,0x10,0x39,0x01,0x13,0x03,0x07,0x07,0x0F
    ,0x00,0x02,0x02,0x87,0x04,0xFE,0x68,0xFE,0xE6,0xFF,0xDC,0xEF,0xBA,0xED,0x76,0xE9
    ,0x0E,0x1F,0x01,0x1F,0x1E,0x3F,0x3F,0x7F,0x3F,0x7F,0x3F,0x7F,0x00,0x7F,0x00,0x00
    ,0xEC,0x72,0xD8,0x66,0xB0,0x4C,0x60,0x98,0x40,0xB0,0x00,0xE0,0x00,0xC0,0x00,0x00

    /*[13] ハート A */
    ,0x00,0x00,0x00,0x1C,0x1C,0x2E,0x3E,0x5F,0x3F,0x5F,0x3F,0x5F,0x3F,0x5F,0x3F,0x5F
    ,0x00,0x00,0x00,0x38,0x38,0x5C,0x7C,0xBE,0xFC,0x7E,0xFC,0xFE,0xFC,0xFE,0xFC,0xFE
    ,0x3F,0x5F,0x1F,0x2F,0x1F,0x2F,0x0F,0x17,0x07,0x0B,0x03,0x05,0x01,0x02,0x00,0x01
    ,0xFC,0xFE,0xF8,0xFC,0xF8,0xFC,0xF0,0xF8,0xE0,0xF0,0xC0,0xE0,0x80,0xC0,0x00,0x80

    /*[14] ハート B */
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x2E,0x3E,0x5F,0x3F,0x5E,0x3F,0x5F
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x70,0xB8,0xF8,0x7C,0xF8,0xFC,0xF8,0xFC
    ,0x3F,0x5F,0x3F,0x5F,0x1F,0x2F,0x1F,0x2F,0x0F,0x17,0x03,0x0F,0x01,0x03,0x00,0x01
    ,0xF8,0xFC,0xF8,0xFC,0xF0,0xF8,0xF0,0xF8,0xE0,0xF0,0x80,0xE0,0x00,0x80,0x00,0x00

    /*[15]カギ */
    ,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x03,0x03,0x06
    ,0x00,0x00,0x00,0xE0,0xE0,0x70,0xB0,0xD8,0xB0,0xD8,0xF0,0xF8,0xE0,0x70,0x00,0xE0
    ,0x06,0x0D,0x0C,0x1A,0x18,0x34,0x38,0x6C,0x6C,0xB6,0x34,0x5A,0x10,0x2C,0x00,0x10
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

/*------- キャラクタ番号テーブル：背景用テーブル */
static short wChnBg[BGN_MAX][BG_BYTE];

int fncOp();
void subEnding();

#define MENU_MIN    0
#define MENU_CONTINUE    0
#define MENU_START    1
#define MENU_EXIT    2
#define MENU_MAX    2

/*----------------------------サウンド系*/
#define    CHANNEL1    0  /*    sound_set_pitch/sound_set_volume用引数*/
#define    CHANNEL2    1
#define    CHANNEL3    2
#define    CHANNEL4    3

#define SSC_CH1    (1 << 0)    /*sound_set_channel:Ch1イネーブル*/
#define SSC_CH2    (1 << 1)    /*sound_set_channel:Ch2イネーブル*/
#define SSC_CH3    (1 << 2)    /*sound_set_channel:Ch3イネーブル*/
#define SSC_CH4    (1 << 3)    /*sound_set_channel:Ch4イネーブル*/
#define SSC_VOICE (1 << 5)    /*sound_set_channel:Ch2ボイスモード*/
#define SSC_SWEEP (1 << 6)    /*sound_set_channel:Ch3スイープモード*/
#define SSC_NOISE (1 << 7)    /*sound_set_channel:Ch4ノイズモード*/

#define SSO_SPK    (1 << 0)    /*sound_set_output:本体モノラルスピーカーEnable*/
#define SSO_EXT    (1 << 3)    /*sound_set_output:外部ヘッドホンEnable*/
#define SSO_D07    (0 << 1)    /*sound_set_output:D0-D7を出力*/
#define SSO_D18    (1 << 1)    /*sound_set_output:D1-D8を出力*/
#define SSO_D29    (2 << 1)    /*sound_set_output:D2-D9を出力*/
#define SSO_D3A    (3 << 1)    /*sound_set_output:D3-D10を出力*/

#define MUSIC_MAX    50
static char cMusDat[MUSIC_MAX];
static int iMusicPos;
static int iSndCnt1;    /*サウンド用カウンタ*/
static int iSndCnt2;    /*サウンド用カウンタ*/

#define HAKEI_A    0
#define HAKEI_B    1
#define HAKEI_C    2
#define HAKEI_D    3
#define HAKEI_MAX    4

static unsigned char wave_form[HAKEI_MAX][16]={
    {0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff},
    {0x00, 0x44, 0x88, 0xee, 0xee, 0x88, 0x44, 0x22},
    {0x00, 0x22, 0x44, 0x44, 0x44, 0x22, 0x22, 0x00},
    {0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33},
};


void subSoundInit()
{
    /*矩形波パターン*/

    sound_init();
    sound_set_output(SSO_SPK | SSO_EXT | SSO_D18);
    sound_set_channel(SSC_CH1 | SSC_CH2);
    sound_set_pitch(CHANNEL1, 0);
    sound_set_volume(CHANNEL1, 0);
    sound_set_pitch(CHANNEL2, 0);
    sound_set_volume(CHANNEL2, 0);

    iSndCnt1=0;
    iSndCnt2=0;
}


void subSndStart(int iHakei ,int iFrc ,int iCnt)
{
    sound_set_wave(CHANNEL1, wave_form[iHakei]);
    sound_set_pitch(CHANNEL1, iFrc);
    sound_set_volume(CHANNEL1, 0x80);
    iSndCnt1 = iCnt;
}

/*--------------------*/
void subMusSet(char *pMusicDat)
{
    int i;

    for(i=0 ;i<MUSIC_MAX ;i++)
    {
        cMusDat[i] = *(pMusicDat + i);
        if(cMusDat[i] == NULL)
            break;
    }
    iMusicPos=0;
}

/*------------------サウンドドライバ*/
void subSndCtrl()
{
    int iFrc;
    char cCode;

    /*----------------効果音*/
    if(iSndCnt1 > 0)
    {
        iSndCnt1 --;
        if(iSndCnt1 ==0)
        {
            sound_set_pitch(CHANNEL1, 0);
            sound_set_volume(CHANNEL1, 0);
        }
    }

    /*--------------曲(BGM)*/
    if(    iSndCnt2 > 0)
    {
        iSndCnt2 --;
    }else{
        cCode = cMusDat[iMusicPos];

        if(cCode == NULL)
            iMusicPos=0;

        if(cCode >= 'a')
        {
            /*波形変更*/
            sound_set_wave(CHANNEL2, wave_form[cCode - 'a']);
        }else{
            iFrc = ((int)(cCode - 'A')* 0x700)/('F'-'A') ;

            sound_set_pitch(CHANNEL2, iFrc);
            sound_set_volume(CHANNEL2, 0x80);
            iSndCnt2 = 20;
        }
        iMusicPos++;
    }
}

/*---------------タイル表示*/
void subTile(int iX ,int iY ,char *pStr)
{
    for(;;)
    {
        if( *pStr ==NULL)
            break;

        if( *pStr ==' ')
        {
            screen_fill_char(SCREEN2, iX, iY, 1, 1 ,CFM_BGR | CHN_TOMEBOX); 
        }else{
            screen_fill_char(SCREEN2, iX, iY, 1, 1 ,CFM_MOJI | ((*pStr-'1')+CHN_KUROBOX1)); 
        }
        iX++;
        pStr++;
    }
}

/*---------------パレットの書き換え*/
void subChagePal(int iScr ,int iX ,int iY ,int iWmax ,int iHmax ,int iPal)
{
    int iCfm;
    int iW,iH;

    for(iH=0 ;iH<iHmax ;iH++)
    {
        for(iW=0 ;iW<iWmax ;iW++)
        {
            iCfm = screen_get_char1(iScr, iX+iW, iY+iH);
            iCfm &= ~(0xf << CFSFT_PALETTE);
            iCfm |= (iPal << CFSFT_PALETTE);
            screen_fill_char(iScr ,iX+iW ,iY+iH, 1, 1 ,iCfm);
        }
    }
}

/*------------------スクリーンにキャラクタを書き込む*/
void subScreenSet(int iScr ,int iX ,int iY ,int iWmax ,int iHmax ,int iPal,int iChn)
{
    int iW,iH;

    for(iH=0 ;iH<iHmax ;iH++)
    {
        for(iW=0 ;iW<iWmax ;iW++)
        {
            screen_fill_char(iScr ,iX+iW ,iY+iH, 1, 1 ,iChn | (iPal << CFSFT_PALETTE));
            iChn++;
        }
    }
}

/*--------------------------"STAGE"*/
void subStagePr(int iMap)
{
#define SGNUM_DX    5
#define SGNUM_DY    5
#define STAGE_Y 3
#define STAGE_H 15

    int iY;
    int iTmp;

    char cSgPat[MAP_MAX][SGNUM_DY][SGNUM_DX]={
        {
            {"   1"},
            {"   2"},
            {"   2"},
            {"   2"},
            {"   2"},
        },{
            {"1223"},
            {"   2"},
            {"1556"},
            {"5   "},
            {"5555"},
        },{
            {"4223"},
            {"   2"},
            {" 552"},
            {"   2"},
            {"1556"},
        },
    };

    /* ディスプレイ設定（ スプライトとスクリーン１と２ 表示 ） */
    display_control( DCM_SCR2 | DCM_SCR1);
    screen_set_scroll(SCREEN1, 0, 0);     /*スクリーン座標設定*/
    screen_set_scroll(SCREEN2, 0, 0);     /*スクリーン座標設定*/

    screen_fill_char(SCREEN2, 0, 0, SCR_CHAR_W, STAGE_H ,CFM_BGR | CHN_TOMEBOX);

    subTile(1,STAGE_Y+0,"1222 22222 123  1222 12222");
    subTile(1,STAGE_Y+1,"2      2  16 43 2    2    ");
    subTile(1,STAGE_Y+2,"4553   2  2   2 2 22 22222");
    subTile(1,STAGE_Y+3,"   2   2  22222 2  2 2    ");
    subTile(1,STAGE_Y+4,"5226   2  2   2 4556 42222");

    for(iY=0 ;iY<SGNUM_DY ;iY++)
        subTile(12 ,STAGE_Y+6+iY ,cSgPat[iMap][iY]);

    subMusSet("bDDCCB");

    for(iTmp=0 ;iTmp<250 ;iTmp++)
    {
        sys_wait(1);    /*ループ内でウエイト*/
        subSndCtrl();    /*サウンド処理*/
    }
    screen_fill_char(SCREEN2, 0, 0, SCR_CHAR_W, STAGE_H ,CFM_BGR | CHN_TOMEBOX);

    /* ディスプレイ設定（ スプライトとスクリーン１と２ 表示 ） */
    display_control(DCM_SPR | DCM_SCR2 | DCM_SCR1);
}


/*--------スプライトx個をまとめて表示*/
/*（スプライト番号 ,x座標 ,y座標, 一辺の長さ ,キャラフォーマット ,方向）*/
void sprite_set_dx(int iSpn ,int iLx ,int iLy ,int iWidth ,int iCfm ,int iDir)
{
    int iSx,iSy;

    if(iDir < 0)
        iLx += (iWidth-CHR_PIX) ;

/*    iLy=iLy-(iWidth / 2);*/

    for(iSy=0 ;iSy<iWidth ;iSy+=CHR_PIX)
    {
        for(iSx=0 ;iSx<iWidth ;iSx+=CHR_PIX)
        {    /*スプライト設定（スクリーン２よりも手前に表示、左右反転あり）*/
            if(iDir > 0)
                sprite_set_char(iSpn ,  iCfm);
            else
                sprite_set_char(iSpn ,  iCfm | CFM_FLIP_H);

             /*スプライト位置指定*/
            sprite_set_location(iSpn ,iLx+(iSx*iDir) ,iLy+iSy);
            iSpn++;    /*スプライト番号+1*/
            iCfm++;    /*キャラクタ番号+1*/
        }
    }
}

/*-------------絶対値を求める関数----*/
/*引数（比較したい値１ ,比較したい値２）*/
int fncAbs(int d1,int d2)
{
    if(d1 > d2)
        return(d1-d2);
    else
        return(d2-d1);
}

/*-------------絶対値を求める関数----*/
/*引数（比較したい値）*/
int fncSgn(int d1)
{
    if(d1 > 0)
        return(1);
    else
        return(-1);
}

/* ----------------- 値0〜X-1を循環させる関数 */
/*  引数 (補正したい値 ,循環させたい範囲X) */
int fncLoop(int iArg ,int iPitch)
{
    if(iArg < 0)
        iArg = iArg + iPitch;

    if(iArg >= iPitch)
        iArg = iArg - iPitch;

    return(iArg);
}

/*-----------------ザコ出現*/
/*( 敵構造体 ,X ,Y ,敵種類 )*/
void subBone(int iMap ,ZAKOINFO *pEi ,int iEx ,int iEy ,int iEid ,int iLx ,int iLy)
{
    int    iT;

    for(iT=0 ;iT<ZAKOMAX ;iT++)
    {
        if(pEi->id == ID_NONE)
        {
            pEi->x = iEx;
            pEi->y = iEy;
            pEi->id = iEid;
            pEi->hp = zc[iEid].hp;
            pEi->ani = 0;
            pEi->dir = -1;
            pEi->cnt = 0;
            cMap[iMap][iLy][iLx] |= MAP_NOBIT; /**/
            pEi->mx = iLx;
            pEi->my = iLy;
            break;
        }
        pEi++;
    }
}



/*----------------------------敵初期化----*/
void subTekiInit(ZAKOINFO *pEi)
{
    int    iT;
    int iChnLast;

    for(iT=0 ;iT<ZAKOMAX ;iT++)
    {
        pEi->id = ID_NONE;
        pEi++;
    }


    /*ザコキャラの先頭キャラ番号をあらかじめ計算しておく*/
    iChnLast=CHN_ZAKO;    /*キャラ番号*/

    for(iT=0 ;iT<ID_MAX ;iT++)
    {
        zc[iT].cfm |= iChnLast;
        iChnLast += (zc[iT].max * MAS_CHR);
    }
}

/*-------------*/
#define HP_MAX  5
#define HP_MIN  0
#define HP_X    1    /*体力barの表示位置*/
#define HP_Y    16
#define HP_H    1

#define GOLD_X    10
#define GOLD_Y    16
#define GOLD_H    1
#define GOLD_MAX  3
#define GOLD_MIN  0

#define KEY_X    15
#define KEY_Y    16
#define KEY_H    1
#define KEY_MAX  3

void subStatusPr(MYINFO *pMi)
{
    screen_fill_char(SCREEN2, HP_X, HP_Y, HP_MAX  , HP_H , CFM_BGR | CHN_KUROBOX2);
    screen_fill_char(SCREEN2, HP_X, HP_Y, pMi->hp , HP_H , CFM_BGR | CHN_HP);    

    screen_fill_char(SCREEN2, GOLD_X, GOLD_Y, GOLD_MAX , GOLD_H , CFM_BGY | CHN_KUROBOX2);
    screen_fill_char(SCREEN2, GOLD_X, GOLD_Y, pMi->gold , GOLD_H , CFM_BGY | CHN_GOLD);    

    screen_fill_char(SCREEN2, KEY_X, KEY_Y, KEY_MAX , KEY_H , CFM_BGB | CHN_TOMEBOX);
    screen_fill_char(SCREEN2, KEY_X, KEY_Y, pMi->key , KEY_H , CFM_BGB | CHN_KEY);    
}

/*------------------スクロール---*/
static    int iPx,iPy;        /*仮想マップ(左上)座標*/
static    int iSx,iSy;        /*スクロール(左上)座標*/

/*--------------------仮想マップチェック*/
/*（Ｘ座標, Ｙ座標）*/
int fncMap(int iMap,int iX ,int iY)
{
    #define FNCMAP_CNT    4

    int iCx1,iCy1,iCx2,iCy2;
    int iC[4];
    int    iCmax,i;

    iX += iPx;    
    iY += iPy;    

    /*4隅に接触している背景をチェック*/
    iCx1 = fncLoop(iX ,MAP_WIDTH*MAS_PIX ) / MAS_PIX;    /*座標→マス目変換*/
    iCy1 = fncLoop(iY ,MAP_HEIGHT*MAS_PIX) / MAS_PIX;    /*座標→マス目変換*/
    iCx2 = fncLoop(iX+MAS_PIX-1 ,MAP_WIDTH*MAS_PIX ) / MAS_PIX;    /*座標→マス目変換*/
    iCy2 = fncLoop(iY+MAS_PIX-1 ,MAP_HEIGHT*MAS_PIX) / MAS_PIX;    /*座標→マス目変換*/
    iC[0] = cMap[iMap][iCy1][iCx1];    /*左上*/
    iC[1] = cMap[iMap][iCy1][iCx2];    /*右上*/
    iC[2] = cMap[iMap][iCy2][iCx1];    /*左下*/
    iC[3] = cMap[iMap][iCy2][iCx2];    /*右下*/

    iCmax=BGN_NONE;

    for(i=0 ;i<4 ;i++)
    {
        if(iC[i] >= MAP_TEKI)
            iC[i] = BGN_NONE;
        else
            iC[i] -= MAP_OBJECT;

        if(iC[i] > iCmax)
            iCmax=iC[i];
    }
    return(iCmax);
}


/*------------------------------------*/
int fncMapSmall(int iMap,int iX ,int iY)
{
    int iCx,iCy;
    int iC;

    iX += iPx;    
    iY += iPy;    

    iCx = fncLoop(iX ,MAP_WIDTH*MAS_PIX ) / MAS_PIX;    /*座標→マス目変換*/
    iCy = fncLoop(iY ,MAP_HEIGHT*MAS_PIX) / MAS_PIX;    /*座標→マス目変換*/
    iC = cMap[iMap][iCy][iCx];

    if(iC >= MAP_TEKI)
        iC = BGN_NONE;
    else
        iC -= MAP_OBJECT;

    return(iC);
}
/*------------------------------------*/
void subMapSet(int iMap ,int iX ,int iY ,char cId)
{
    int iCx,iCy;

    iX += iPx;
    iY += iPy;
    iCx = fncLoop(iX ,MAP_WIDTH*MAS_PIX ) / MAS_PIX;    /*座標→マス目変換*/
    iCy = fncLoop(iY ,MAP_HEIGHT*MAS_PIX) / MAS_PIX;    /*座標→マス目変換*/

    cMap[iMap][iCy][iCx]=cId;        /*左上*/
}

/* -----------------横方向スクロール サブルーチン*/
/*  (スクロール座標X ,スクロール座標Y ,仮想マップX ,仮想マップY)*/
void    subScrollH(int iMap,ZAKOINFO *pEi ,int iOfst)
{
    int iTx,iTy,iLx,iLy,iTc;
    int iC;

    iTx=(fncLoop(iSx+iOfst ,SCREEN_PIXEL_WIDTH) / MAS_PIX)*MAS_CX;
    iTy=(iSy / MAS_PIX)*MAS_CX;
    iLx=fncLoop(iPx+iOfst ,MAP_WIDTH*MAS_PIX) / MAS_PIX;
    iLy=iPy / MAS_PIX;

    for(iTc=0 ;iTc<(LCD_CHAR_H / MAS_CX) ;iTc++)
    {
        iC = cMap[iMap][iLy][iLx];
        if(iC & MAP_NOBIT)
        {
            iC=BGN_NONE;
        }else{
            if(iC >=MAP_TEKI)
            {
                if((iPx % MAS_PIX)==0)
                    subBone(iMap ,pEi
                        ,iOfst ,iTc*MAS_PIX-(iPy % 16)
                        ,iC - MAP_TEKI ,iLx ,iLy);

                iC=BGN_NONE;
            }else{
                iC -= MAP_OBJECT;
            }
        }

        screen_set_char(SCREEN1, iTx, iTy, MAS_CX, MAS_CX, wChnBg[iC]);

        iTy=fncLoop(iTy+MAS_CX ,SCR_CHAR_H);
        iLy=fncLoop(iLy+1 ,MAP_HEIGHT);
    }
}

/* ----------縦方向スクロール サブルーチン*/
void    subScrollV(int iMap ,ZAKOINFO *pEi ,int iOfst)
{
    int iTx,iTy,iLx,iLy,iTc;
    int iC;

    iTx=(iSx/MAS_PIX)*MAS_CX;    /*スクリーン更新座標を算出*/
    iTy=(fncLoop(iSy+iOfst ,SCREEN_PIXEL_HEIGHT)/MAS_PIX)*MAS_CX;
    iLx=iPx / MAS_PIX;        /*仮想マップの参照場所*/
    iLy=fncLoop(iPy+iOfst ,MAP_HEIGHT*MAS_PIX) / MAS_PIX;

    for(iTc=0 ;iTc<(LCD_CHAR_W / MAS_CX) ;iTc++)
    {
        iC = cMap[iMap][iLy][iLx];
        if(iC & MAP_NOBIT)
        {
            iC=BGN_NONE;
        }else{
            if(iC >=MAP_TEKI)
            {
                if((iPy % MAS_PIX)==0)
                    subBone(iMap ,pEi
                        ,iTc*MAS_PIX-(iPx % 16),iOfst
                        ,iC - MAP_TEKI ,iLx,iLy);

                iC=BGN_NONE;
            }else{
                iC -= MAP_OBJECT;
            }
        }
        screen_set_char(SCREEN1, iTx , iTy, MAS_CX, MAS_CX, wChnBg[iC]);

        iTx=fncLoop(iTx+MAS_CX ,SCR_CHAR_W);/*スクリーン更新座標を算出*/
        iLx=fncLoop(iLx+1 ,MAP_WIDTH);
    }
}

/* -------------サブルーチン*/
void    subBgDraw(int iMap)
{
    int iSTx,iSLx,iTx,iTy,iLx,iLy;
    int iTw,iTh;
    int iC;

    iSTx=(iSx/MAS_PIX)*MAS_CX;    /*スクリーン更新座標を算出*/
    iSLx=iPx / MAS_PIX;        /*仮想マップの参照場所*/
    iTy=(iSy/MAS_PIX)*MAS_CX;
    iLy=iPy / MAS_PIX;

    for(iTh=0 ;iTh<(LCD_CHAR_H / MAS_CX) ;iTh++)
    {
        iTx=iSTx;
        iLx=iSLx;

        for(iTw=0 ;iTw<(LCD_CHAR_W / MAS_CX) ;iTw++)
        {
            iC = cMap[iMap][iLy][iLx];
            if(iC >=MAP_TEKI)
            {
                iC=BGN_NONE;
            }else{
                iC -= MAP_OBJECT;
            }
            screen_set_char(SCREEN1, iTx , iTy, MAS_CX, MAS_CX, wChnBg[iC]);

            iTx=fncLoop(iTx+MAS_CX ,SCR_CHAR_W);
            iLx=fncLoop(iLx+1 ,MAP_WIDTH);
        }
        iTy=fncLoop(iTy+MAS_CX ,SCR_CHAR_H);
        iLy=fncLoop(iLy+1 ,MAP_HEIGHT);
    }
}

/*--------------------仮想マップチェック*/
/*（Ｘ座標, Ｙ座標）*/
int fncMapMy(int iMap ,int iX ,int iY ,MYINFO *pMi)
{
    int iCx,iCy,iC;
    int    iCmax,i;

    static    int x1[4]={0 ,MAS_PIX-1 ,        0 ,MAS_PIX-1};
    static    int y1[4]={0 ,        0 ,MAS_PIX-1 ,MAS_PIX-1};

    iX += iPx;    
    iY += iPy;    

    iCmax=BGN_NONE;
    for(i=0 ;i<4 ;i++)
    {
        iCx = fncLoop((iX+x1[i])/MAS_PIX ,MAP_WIDTH );    /*座標→マス目変換*/
        iCy = fncLoop((iY+y1[i])/MAS_PIX ,MAP_HEIGHT);    /*座標→マス目変換*/

        iC = cMap[iMap][iCy][iCx];    /**/

        if(iC >= MAP_TEKI)
            iC = BGN_NONE;
        else
            iC -= MAP_OBJECT;

        if(iC==BGN_DOOR)
        {
            if(    pMi->key > 0)
            {
                pMi->key--;
                subStatusPr(pMi);
                cMap[iMap][iCy][iCx] = MAP_OBJECT+BGN_DROPEN;    /**/

                subBgDraw(iMap);
                subSndStart(HAKEI_B ,1000 ,10);    /*サウンド*/
                iC = BGN_NONE;
            }else{
                subSndStart(HAKEI_B ,200 ,10);    /*サウンド*/
            }
        }

        if(iC > iCmax)
            iCmax=iC;
    }
    return(iCmax);
}

/*-------------------------スクロール初期化------*/
void subScrlInit(int iMap,ZAKOINFO *pEi)
{
    int iTy,iTx;
    char cId;
    int iChn;
    int iCfm;
    int iBgn;
    int    iNum;

    /*背景分のスクリーンキャラクタテーブルを作成*/
    iChn=CHN_BG;
    for(iBgn=0 ;iBgn<BGN_MAX ;iBgn++)
    {
        for(iNum=0 ;iNum<MAS_CHR ;iNum++)
        {
            switch(iBgn)
            {
            case BGN_NONE:
                iCfm = CFM_CAVE;
                break;
            case BGN_HASIGO:
            case BGN_DOOR:
            case BGN_DROPEN:
                iCfm = CFM_BGR;
                break;
            default:
                iCfm = CFM_BGY;
                break;
            }
            wChnBg[iBgn][iNum] = (iCfm | iChn);
            iChn++;
        }
    }

    iPx=0;
    iPy=0;
    iSx=0;
    iSy=0;

    for(iTx=0 ;iTx<MAP_WIDTH ;iTx++)
    {
        for(iTy=0 ;iTy<MAP_HEIGHT ;iTy++)
        {
            cId = cMap[iMap][iTy][iTx];
            if(cId==MAP_NONE   ) cId = MAP_OBJECT + BGN_NONE;
    
            /*敵の復活*/
            if(cId & MAP_NOBIT ) cId &= ~(MAP_NOBIT);

            /*ドアを閉じる*/
            if(cId==(MAP_OBJECT +BGN_DROPEN) ) cId = (MAP_OBJECT +BGN_DOOR);

            cMap[iMap][iTy][iTx]=cId;
        }
    }

    /*背景をスクリーンに敷き詰める*/
    for(iTy=0 ;iTy<LCD_PIXEL_HEIGHT ;iTy+=MAS_PIX)
        subScrollV(iMap,pEi ,iTy);

    screen_fill_char(SCREEN2, 0, 0, SCR_CHAR_W, SCR_CHAR_H    ,CFM_BGR | CHN_TOMEBOX);

    for(iTx=0 ;iTx < (INST_DX) ;iTx++)
        screen_fill_char(SCREEN2, INST_X+iTx ,INST_Y, 1, 1    ,CFM_BGR | (CHN_INST+iTx));

    /* ディスプレイ設定（ スプライトとスクリーン１と２ 表示 ） */
    display_control(DCM_SPR | DCM_SCR2 | DCM_SCR1);
}

int    fncPx1(int iX)
{
    iX = (iX+iPx) % MAS_PIX;

    if(iX == 0)
        return(0);

    if(iX > 8)
        return(1);

    return(-1);
}

void subScrl(int iMap ,ZAKOINFO *pEi ,TAMAINFO *pTij,TAMAINFO *pTik ,int iDx ,int iDy )
{
    int    iT;

    iSx=fncLoop(iSx+iDx ,SCREEN_PIXEL_WIDTH);
    iSy=fncLoop(iSy+iDy ,SCREEN_PIXEL_HEIGHT);
    iPx=fncLoop(iPx+iDx ,MAP_WIDTH*MAS_PIX);
    iPy=fncLoop(iPy+iDy ,MAP_HEIGHT*MAS_PIX);

    for(iT=0 ;iT<ZAKOMAX ;iT++)
    {
        if((pEi->id != ID_NONE)&&(pEi->hp > 0))
        {
            pEi->x -= iDx;
            pEi->y -= iDy;

            /*スクロールアウト*/
            if((pEi->x < -MAS_PIX)||(pEi->x > (LCD_PIXEL_WIDTH+MAS_PIX))
            ||(pEi->y < -MAS_PIX)||(pEi->y > (LCD_PIXEL_HEIGHT+MAS_PIX)))
            {
                pEi->id=ID_NONE;
                cMap[iMap][pEi->my][pEi->mx] &= ~(MAP_NOBIT);
            }
        }
        pEi++;
    }

    for(iT=0 ;iT<JIDANMAX ;iT++)
    {
        if(pTij->cnt != BAKU_MAX)
        {
            pTij->x -= iDx;
            pTij->y -= iDy;

            /*スクロールアウト*/
            if((pTij->x < -MAS_PIX)||(pTij->x > (LCD_PIXEL_WIDTH+MAS_PIX))
            ||(pTij->y < -MAS_PIX)||(pTij->y > (LCD_PIXEL_HEIGHT+MAS_PIX)))
                pTij->cnt = BAKU_MAX;
        }
        pTij++;
    }

    for(iT=0 ;iT<TKDANMAX ;iT++)
    {
        if(pTik->cnt != BAKU_MAX)
        {
            pTik->x -= iDx;
            pTik->y -= iDy;

            /*スクロールアウト*/
            if((pTik->x < -MAS_PIX)||(pTik->x > (LCD_PIXEL_WIDTH+MAS_PIX))
            ||(pTik->y < -MAS_PIX)||(pTik->y > (LCD_PIXEL_HEIGHT+MAS_PIX)))
                pTik->cnt = BAKU_MAX;
        }
        pTik++;
    }
}

/*--------------------------------スクロール処理*/
#define SCRX_PIX    64    /*スクロールを開始するまでのX距離[ピクセル数]*/
#define SCRY_PIX    32    /*スクロールを開始するまでのY距離[ピクセル数]*/

#define SCRX2 (LCD_PIXEL_WIDTH-(MAS_PIX+SCRX_PIX))
#define SCRY2 (LCD_PIXEL_HEIGHT-(MAS_PIX+SCRY_PIX))

void subScrlCtrl(int iMap,MYINFO *pMi ,ZAKOINFO *pEi ,TAMAINFO *pTij ,TAMAINFO *pTik)
{
     /* [←] */
    if(pMi->x < SCRX_PIX)
    {    /*スクロール範囲チェック*/
        pMi->x = SCRX_PIX;        /*主人公座標を戻し*/

        subScrollH(iMap ,pEi , -MAS_PIX);
        subScrl(iMap ,pEi ,pTij,pTik ,-1 ,0);
    }
     /* [→] */
    if(pMi->x > SCRX2)
    {    /*スクロール範囲チェック*/
        pMi->x = SCRX2;    /*主人公座標を戻し*/

        subScrollH(iMap ,pEi ,LCD_PIXEL_WIDTH);
        subScrl(iMap ,pEi ,pTij,pTik ,1 ,0);
    }
     /* [↓] */
    if(pMi->y > SCRY2)
    {    /*スクロール範囲チェック*/
        pMi->y = SCRY2;

        subScrollV(iMap ,pEi ,LCD_PIXEL_HEIGHT);
        subScrl(iMap ,pEi ,pTij,pTik ,0,1);
    }
     /* [↑] */
    if(pMi->y < SCRY_PIX)
    {    /*スクロール範囲チェック*/
        pMi->y = SCRY_PIX;        /*主人公座標を戻し*/

        subScrollV(iMap ,pEi , -MAS_PIX);
        subScrl(iMap ,pEi ,pTij,pTik ,0,-1);
    }
    screen_set_scroll(SCREEN1, iSx, iSy);    /*スクロール座標設定*/
}


/*------------------エンディング処理---*/
#define END_NONE    0
#define END_HAPPY    1
#define END_BAD        2
#define    ENDCNT_MAX    200
#define    ENDCNT_MIN    0

static    int    iEndCode;
static    int    iEndCnt;

void    subEndInit()
{
    iEndCode=END_NONE;
}


void subEndSet(int iCode)
{
    iEndCode=iCode;
    iEndCnt=ENDCNT_MAX;
}

/**/
int fncEndGet()
{
    return(iEndCode);
}

int subEndCtrl()
{
    if(iEndCode != END_NONE)
    {
        if(iEndCnt > ENDCNT_MIN)
            iEndCnt--;
        else
            return(TRUE);
    }
    return(FALSE);
}



/*-----------------------------お金処理-*/

void subGoldAdd(MYINFO *pMi)
{
    subSndStart(HAKEI_A ,2000 ,10);    /*サウンド*/

    if(pMi->gold < GOLD_MAX)
    {
        pMi->gold ++;
        subStatusPr(pMi);
    }

    if(pMi->gold >= GOLD_MAX)
    {
        subMusSet("aEFEFEDEF");

        subTile(1,1,"12223 2    2222  123  2223");
        subTile(1,2,"2   2 2    2    16 43 2  2");
        subTile(1,3,"2     2    222  22222 2226");
        subTile(1,4,"2   2 2    2    2   2 2 43");
        subTile(1,5,"42226 2222 2222 2   2 2  2");

        subEndSet(END_HAPPY);
    }
}


/*-----------------------------ダメージ処理--*/

#define DAMEGE_MAX    60    /*ダメージ開始ループ数*/
#define DAMEGE_MID    40    /*ダメージ後、移動可能ループ数*/
#define DAMEGE_MIN    0

static    int iDamage;

void subDamegeSet(MYINFO *pMi)
{
    if( iDamage==DAMEGE_MIN )
    {    /*無傷の時のみダメージ有効*/
        if(pMi->hp > HP_MIN)
        {    /*体力が残っているなら*/
            pMi->hp --;
            iDamage = DAMEGE_MAX;
            subStatusPr(pMi);
            subSndStart(HAKEI_A ,200 ,12);    /*サウンド*/

            if(pMi->hp <= HP_MIN)
            {    /*体力が底をついた場合*/
                subMusSet("bABABADBAAA");
                subEndSet(END_BAD);
            }
        }
    }
}

/*------------------------*/
void subDamegeReset(MYINFO *pMi)
{
    pMi->hp = HP_MAX;    /*体力満タン*/

    subStatusPr(pMi);

    subSndStart(HAKEI_B ,1200 ,22);    /*サウンド*/
}

/*-------------------------*/
void subDamegeInit()
{
    iDamage=DAMEGE_MIN;
}

/*-------------------------*/
void subDamegeCtrl()
{
    if(iDamage > DAMEGE_MIN)
        iDamage--;
}
/*-------------------------*/
int fncDamegeChk()
{
    return(iDamage);
}


/*------------------弾発射-------*/
void subTamaFire(TAMAINFO *pTi ,int iX ,int iY ,int iX1 ,int iY1 ,int iMax)
{
    int i;
    for(i=0 ;i<iMax ;i++)
    {
        if(pTi->cnt == BAKU_MAX)
        {
            pTi->x = iX;
            pTi->y = iY;
            pTi->x1 = iX1;
            pTi->y1 = iY1;
            pTi->cnt = BAKU_OFF;
            break;
        }
        pTi++;
    }
}

/*---------------------敵*/
void subTeki(int iMap ,MYINFO *pMi ,ZAKOINFO *pEi ,TAMAINFO *pTi)
{
    int iT;
    int i;
    int iSpn;
    int iOfst;

    pMi->tekinori = FALSE;

    /*-----------敵--*/
    for(iT=0 ;iT<ZAKOMAX ;iT++)
    {
        iSpn=SPN_ZAKO + iT*MAS_CHR;

        if(pEi->id == ID_NONE)
        {    /*キャラクタなし*/
            for(i=0 ;i<4 ;i++)
                sprite_set_location(iSpn+i ,LCD_PIXEL_WIDTH ,LCD_PIXEL_HEIGHT);

        }else{

            if(pEi->hp <= 0)
            {
                /*死んでいる場合、爆発*/
                iOfst = (pEi->ani * BAKU_ANI)/BAKU_MAX;

                for(i=0 ;i<4 ;i++)
                {
                    sprite_set_char( iSpn+i , CFM_SPY | (CHN_BAKU + iOfst) );
                }
                sprite_set_location(iSpn+0 ,pEi->x-iOfst         ,pEi->y - iOfst);
                sprite_set_location(iSpn+1 ,pEi->x+iOfst +CHR_PIX,pEi->y - iOfst);
                sprite_set_location(iSpn+2 ,pEi->x-iOfst         ,pEi->y + iOfst+CHR_PIX);
                sprite_set_location(iSpn+3 ,pEi->x+iOfst +CHR_PIX,pEi->y + iOfst+CHR_PIX);

                pEi->ani++;
                if(pEi->ani == BAKU_MAX)
                {
                    pEi->id = ID_NONE;
                }
            }else{
                /*生きている場合*/
                if(rand() < (RAND_MAX / 10))
                {
                    pEi->ani = fncLoop(pEi->ani+1 ,zc[pEi->id].max);    /*アニメ処理*/
                }

                switch(pEi->id)
                {
                case ID_BAT:            /*敵ID:コウモリ*/
                    if(rand() < (RAND_MAX / 2))
                    {
                        if(fncMap(iMap ,pEi->x + pEi->dir ,pEi->y ) < BGN_BLOCK)
                            pEi->x += pEi->dir;    /*前進*/
                    }

                    if(rand() < (RAND_MAX / 300))
                        subTamaFire(pTi ,pEi->x ,pEi->y    ,0 ,1 ,TKDANMAX);

                    if(rand() < (RAND_MAX / 180))
                        pEi->dir = fncSgn(pMi->x - pEi->x);

                    if(rand() < (RAND_MAX / 180))
                        pEi->dir = -(pEi->dir);    /*方向転換*/

                    break;

                case ID_FUMIDAI:        /*敵ID:踏み台 */
                    if(pEi->cnt > 60)
                    {        /**/
                        pEi->cnt = 0;
                        pEi->dir = -(pEi->dir);    /*方向転換*/
                    }
                    pEi->x += pEi->dir;    /*前進*/
                    pEi->cnt++;
                    break;

                case ID_BAKYU:        /*敵ID:ハキュラ */
                    if(fncMap(iMap,pEi->x + pEi->dir ,pEi->y) >= BGN_BLOCK)
                        pEi->dir = -(pEi->dir);    /*方向転換*/

                    if(fncMap(iMap,pEi->x + pEi->dir ,pEi->y) < BGN_BLOCK)
                        pEi->x += pEi->dir;    /*前進*/

                    break;

                case ID_SIRU:    /*シルビア*/
                    break;

                case ID_MARU:        /*敵ID:丸い敵*/
                    if(rand() < (RAND_MAX / 8))
                    {
                        if(fncMap(iMap,pEi->x + pEi->dir ,pEi->y) < BGN_BLOCK)
                            pEi->x += pEi->dir;    /*前進*/
                    }

                    if(rand() < (RAND_MAX / 200))
                    {
                        subTamaFire(pTi ,pEi->x ,pEi->y
                            ,pEi->dir ,fncSgn(pMi->y - pEi->y) ,TKDANMAX);

                        subTamaFire(pTi ,pEi->x ,pEi->y    ,pEi->dir ,0 ,TKDANMAX);
                    }
                    if(pEi->cnt > 0)
                    {        /*ジャンプ中*/
                        pEi->cnt--;
                           if(fncMap(iMap ,pEi->x ,pEi->y - 1)== BGN_NONE)
                        {
                            pEi->y --;
                        }
                    }else{
                           if(fncMap(iMap ,pEi->x ,pEi->y + 1)== BGN_NONE)
                        {    /*落下処理*/
                            pEi->y ++;
                        }else{
                            /*地面にいる状態*/
                            pEi->dir = fncSgn(pMi->x - pEi->x);

                            if(rand() < (RAND_MAX / 20))
                                pEi->cnt=30;
                        }
                    }
                    break;

                case ID_YOSAKU:        /*敵ID:与作*/
                    if(rand() < (RAND_MAX / 180))
                        subTamaFire(pTi ,pEi->x ,pEi->y    ,pEi->dir ,0 ,TKDANMAX);

                    if(rand() < (RAND_MAX / 2))
                    {
                        if(fncMap(iMap,pEi->x + pEi->dir ,pEi->y) < BGN_BLOCK)
                            pEi->x += pEi->dir;    /*前進*/
                    }
                    if(rand() < (RAND_MAX / 200))
                        pEi->dir = fncSgn(pMi->x - pEi->x);

                    if((fncMap(iMap,pEi->x+pEi->dir ,pEi->y + 1)== BGN_NONE)||
                        (fncMap(iMap,pEi->x+pEi->dir ,pEi->y) >= BGN_BLOCK))
                    {    /*落下処理*/
                        pEi->dir = -(pEi->dir);    /*方向転換*/
                        pEi->x += pEi->dir;    /*前進*/
                    }else{
                        if(rand() < (RAND_MAX / 400))
                            pEi->dir = -(pEi->dir);    /*方向転換*/
                    }
                    break;

                case ID_GOLD:        /*敵ID:お金*/
                case ID_KEY:        /*敵ID:*/
                case ID_HART:        /*敵ID:*/
                case ID_BLOCK:        /*敵ID:*/
                    break;
                }
                sprite_set_dx(
                    iSpn ,pEi->x ,pEi->y ,MAS_PIX
                    ,zc[pEi->id].cfm+(pEi->ani * MAS_CHR) ,pEi->dir );

                if(fncDamegeChk() == DAMEGE_MIN)
                {
                       /*---------敵と主人公との当たり判定----*/
                    if((fncAbs(pMi->x ,pEi->x) < MAS_PIX)
                        &&(fncAbs(pMi->y ,pEi->y) < MAS_PIX))
                    {
                        switch(pEi->id)
                        {
                        case ID_GOLD:
                            subGoldAdd(pMi);        /*お金を拾った*/
                            pEi->id=ID_NONE;    /*消滅*/
                            break;

                        case ID_KEY:
                            subSndStart(HAKEI_A ,1600 ,10);    /*サウンド*/
                            pMi->key ++;
                            subStatusPr(pMi);
                            pEi->id=ID_NONE;    /*消滅*/
                            break;

                        case ID_HART:
                            subDamegeReset(pMi);
                            pEi->id=ID_NONE;    /*消滅*/
                            break;

                        case ID_BLOCK:
                            if(pMi->y >= pEi->y)
                                pMi->x += fncSgn(pMi->x - pEi->x);
                            else
                                pMi->tekinori=TRUE;
                            break;

                        case ID_FUMIDAI:
                            if(pMi->y < pEi->y)
                            {
                                pMi->tekinori=TRUE;
                            }
                               if(fncMap(iMap ,pMi->x + pEi->dir ,pMi->y )== BGN_NONE)
                            {
                                pMi->x += pEi->dir;
                            }
                            break;

                        default:
                            /*敵と接触*/
                            subDamegeSet(pMi);    /*ダメージ処理*/
                            break;
                        }
                    }
                }

                /*----スクロールアウト*/
                if((pEi->x < -MAS_PIX)||(pEi->x > (LCD_PIXEL_WIDTH+MAS_PIX))
                  ||(pEi->y < -MAS_PIX)||(pEi->y > (LCD_PIXEL_HEIGHT+MAS_PIX)))
                {
                    pEi->id=ID_NONE;
                    cMap[iMap][pEi->my][pEi->mx] &= ~(MAP_NOBIT);
                }
            }
        }
        pEi++;
    }
}

/*--------------------------------キャラクタ初期化-------*/
void subDispInit()
{
    #define PAL_MAX   16
    #define COL_MAX   4

    int iChnMax;
    int iPalNum,iColNum;

/*
パレット0〜7はキャラクタ専用
パレット8〜15はキャラクタ／スプライト共用です。
パレット4〜7、12〜15は、無条件でカラー0=透明色
*/
    static int iWscPal[PAL_MAX][COL_MAX]={
        {0x000 ,0x444 ,0x888 ,0x000},    /*0:*/
        {0x000 ,0x6F6 ,0x6F6 ,0x6F6},    /*1:*/
        {0x000 ,0xA00 ,0xA00 ,0xfff},    /*2:*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*3:*/
        {0x000 ,0xA00 ,0xA00 ,0xfff},    /*4:(透)*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*5:(透)*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*6:(透)*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*7:(透)*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*8:(スプ)*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*9:(スプ)*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*10:(スプ)*/
        {0x000 ,0x000 ,0x000 ,0xfff},    /*11:(スプ)*/
        {0x000 ,0xA00 ,0x200 ,0xf88},    /*12:(透+スプ)*/
        {0x000 ,0x0A0 ,0x020 ,0x88f},    /*13:(透+スプ)*/
        {0x000 ,0xAA0 ,0x220 ,0xff8},    /*14:(透+スプ)*/
        {0x000 ,0xAA8 ,0x000 ,0xfff},    /*15:(透+スプ)*/
    };

    static int iWsPal[PAL_MAX]={
        0x7047,    /*0:*/
        0x0740,    /*1:*/
        0x0740,    /*2:*/
        0x0000,    /*3:*/
        0x0740,    /*4:(透)*/
        0x0000,    /*5:(透)*/
        0x0000,    /*6:(透)*/
        0x0000,    /*7:(透)*/
        0x0000,    /*8:(スプ)*/
        0x0000,    /*9:(スプ)*/
        0x0000,    /*10:(スプ)*/
        0x0000,    /*11:(スプ)*/
        0x0740,    /*12:(透+スプ)*/
        0x0740,    /*13:(透+スプ)*/
        0x0740,    /*14:(透+スプ)*/
        0x0740    /*15:(透+スプ)*/
    };

    iChnMax = sizeof(cChrDat) / CHR_BYTE;    /*使用するキャラ数*/

    /*表示するスプライト番号の範囲を設定*/
    sprite_set_range(SPN_ST ,SPN_MAX );

    /* LCD階調データ初期化 */
    /*（カラー番号000-011のLCD階調，カラー番号100-111のLCD階調 ）*/
    lcd_set_color(0x6420, 0xfca8);

    if( wwc_get_hardarch()==HARDARCH_WSC )
    {
        wwc_set_color_mode(COLOR_MODE_4COLOR);

        for(iPalNum=0 ;iPalNum<PAL_MAX ;iPalNum++)
        {
            for(iColNum=0 ;iColNum<COL_MAX ;iColNum++)
            {
                wwc_palette_set_color(iPalNum ,iColNum ,iWscPal[iPalNum][iColNum]);
            }
        }
    }else{
        /* ワンダースワン */

        for(iPalNum=0 ;iPalNum<PAL_MAX ;iPalNum++)
        {
            /*(キャラクタパレット番号，LCDカラー番号)*/
            palette_set_color(iPalNum ,iWsPal[iPalNum]);
        }
    }

    /*キャラクタ設定 */
    font_set_colordata(CHN_MIN ,iChnMax ,cChrDat);   /*  */

    /* debug */
/*
    text_screen_init();
    text_put_string(0, 10, "chn=");
    text_put_numeric(10, 10, 3, NUM_PADSPACE ,iChnMax );
    key_wait();
*/
}

/*--------------------主人公--*/

#define JMP_ST  MAS_PIX*2   /*ジャンプ用ベクトル：ジャンプ開始*/
#define JMP_ED  0    /*ジャンプ用ベクトル：ジャンプ完了*/

void subMyInit(MYINFO *pMi)
{
    pMi->jmp = JMP_ED;   /*ジャンプ用ベクトル*/
    pMi->x = (LCD_PIXEL_WIDTH/2)/MAS_PIX;
    pMi->y = (LCD_PIXEL_HEIGHT/2)/MAS_PIX;   /*主人公座標*/
    pMi->ani = 0;         /*主人公アニメカウンタ*/
    pMi->dir = 1;        /*主人公方向(1 / -1)*/
    pMi->gold = GOLD_MIN;    /*お金ゼロクリア*/
    pMi->key = 0;
    pMi->hp = HP_MAX;    /*体力*/
}

/*----------------主人公処理-------*/
void subMy(int iMap ,MYINFO *pMi ,TAMAINFO *pTi)
{
    static int iCnt=0;
    int iKey;          /*キー入力データ*/
    int iChn;

    if(pMi->hp > HP_MIN)
    {    /*主人公生きている*/
        /*-----------主人公のキー処理*/
           iKey = key_press_check();
           if (iKey & KEY_START)
            subEndSet(END_BAD);
    }else{
        /*主人公死亡*/
        iKey=KEY_NONE;
    }

    iCnt = fncLoop(iCnt+1 ,10);

    if(fncDamegeChk() > DAMEGE_MID)
    {    /*攻撃を食らっている最中、コントロール不能*/

        if(fncMap(iMap,pMi->x - pMi->dir ,pMi->y ) < BGN_BLOCK)
            pMi->x -= pMi->dir;        /*逆方向に吹っ飛ばされる*/

        if(fncMap(iMap,pMi->x ,pMi->y - 1) < BGN_BLOCK)
            pMi->y --;        /*上方向に吹っ飛ばされる*/

    }else{
        if(pMi->jmp == JMP_ED)
           {    /*未ジャンプ状態ならジャンプボタンチェック*/

               if((fncMap(iMap,pMi->x ,pMi->y + 1)== BGN_NONE)&&(pMi->tekinori==FALSE))
            {                    /*下移動*/
                pMi->y ++;            /*空白にいるなら落下!!*/
            }else{
                if(fncMap(iMap,pMi->x ,pMi->y)== BGN_HASIGO)
                {    /*はしごにいる場合、*/
                    if (iKey & KEY_UP1)
                    {    /* [↑] sw */
                        pMi->x += fncPx1(pMi->x);
                        if(fncMap(iMap,pMi->x ,pMi->y-1)<= BGN_HASIGO)
                        {
                            pMi->y --;
                        }
                    }
                }
                if (iKey & KEY_DOWN1)
                {
                    pMi->x += fncPx1(pMi->x);
                    if(fncMap(iMap,pMi->x ,pMi->y +1)<= BGN_HASIGO)
                    {
                        pMi->y ++;
                    }
                }
                if (iKey & KEY_A)
                {
                    subSndStart(HAKEI_C ,1000 ,10);
                          pMi->jmp = JMP_ST;    /*ジャンプスタート*/
                }
            }
           }else{            /*現在ジャンプ中*/
               pMi->jmp --;  /*ベクトル*/

            if(fncMap(iMap,pMi->x ,pMi->y - 1) < BGN_BLOCK)
            {
                pMi->y --;
            }else{            /*ジャンプ中に衝突*/
                pMi->jmp = JMP_ED;  /*ベクトル0*/
            }
        }

           if(iKey & KEY_RIGHT1)
            pMi->dir = 1;

        if(iKey & KEY_LEFT1)
            pMi->dir = -1;

           if((iKey & KEY_RIGHT1)||(iKey & KEY_LEFT1))
        {
            if(fncMapMy(iMap ,pMi->x + pMi->dir ,pMi->y ,pMi) < BGN_BLOCK)
                pMi->x += pMi->dir;
        }

           if((iCnt == 0)&&(iKey & KEY_B))
        {
            if(iKey & KEY_UP1)
            {
                subTamaFire(pTi ,pMi->x ,pMi->y ,0 ,-2 ,JIDANMAX);
            }else if(iKey & KEY_DOWN1){
                subTamaFire(pTi ,pMi->x ,pMi->y ,0 ,2 ,JIDANMAX);
            }else{
                subTamaFire(pTi ,pMi->x ,pMi->y ,pMi->dir * 2 ,0 ,JIDANMAX);
            }
            subSndStart(HAKEI_B ,500 ,5);    /*サウンド*/

            if((iKey & KEY_UP2)||(iKey & KEY_LEFT2))
            {
                subEndSet(END_HAPPY);
            }
        }
    }

    if(iCnt==0)
           pMi->ani=fncLoop(pMi->ani + 1 ,ANIMAX);    /* アニメカウンタ+1 */

    switch(fncEndGet())
    {
    case END_HAPPY:
        iChn=CHN_BANZAI;
        break;
    case END_NONE:
        iChn=CHN_MY;
        break;
    case END_BAD:
        iChn=CHN_DEAD;
        break;
    };

    /*----スプライト表示（主人公）*/
    sprite_set_dx(
        SPN_MY ,pMi->x ,pMi->y
        ,MAS_PIX ,CFM_SPR | (iChn+(MAS_CHR * pMi->ani)) ,pMi->dir);
}

/*------------------------*/
void subTamaInit(TAMAINFO *pTi ,int iMax)
{
    int i;

    for(i=0 ;i<iMax ;i++)
    {
        pTi->cnt = BAKU_MAX;
        pTi++;
    }
}

/*------------------------自分の弾--*/
void subJidan(int iMap ,TAMAINFO *pTi ,ZAKOINFO *pEiBak)
{
    int i;
    int iT;
    ZAKOINFO *pEi;

    for(i=0 ;i<JIDANMAX ;i++)
    {
        if(pTi->cnt == BAKU_MAX)
        {
            sprite_set_location(SPN_JIDAN+i ,LCD_PIXEL_WIDTH ,LCD_PIXEL_HEIGHT);
        }else{
            if(pTi->cnt != BAKU_OFF)
            {
                /*爆発中*/
                sprite_set_char(SPN_JIDAN+i
                    , CFM_SPY | (CHN_BAKU + (pTi->cnt * BAKU_ANI)/BAKU_MAX) );

                pTi->cnt++;
                if(pTi->cnt == BAKU_MAX)
                {
                }
            }else{
                /*非爆発中*/
                pTi->x += pTi->x1;
                pTi->y += pTi->y1;

                if(pTi->x1 == 0)
                    sprite_set_char(SPN_JIDAN+i , CFM_SPY | CHN_JIDANV);
                else
                    sprite_set_char(SPN_JIDAN+i , CFM_SPY | CHN_JIDANH);

                if(fncMapSmall(iMap,pTi->x  ,pTi->y  ) >= BGN_BLOCK)
                {
                    subSndStart(HAKEI_C ,300 ,10);    /*サウンド*/
                    pTi->cnt = BAKU_START;    /*爆発開始*/
                }else{
                    pEi=pEiBak;
                    for(iT=0 ;iT<ZAKOMAX ;iT++)
                    {
                        /*アイテムを壊さないように*/
                        if((pEi->id != ID_NONE)&&(pEi->id < ID_ITEM)&&(pEi->hp > 0))
                        {
                            if((fncAbs(pTi->x ,pEi->x)<CHR_PIX)
                                &&(fncAbs(pTi->y ,pEi->y)<CHR_PIX))
                            {
                                pTi->cnt = BAKU_START;    /*爆発開始*/
                                pEi->hp--;
                                if(pEi->hp <= 0)
                                {
                                    pEi->ani=BAKU_START;
                                    subSndStart(HAKEI_C ,200 ,5);    /*サウンド:敵死亡*/
                                }else{
                                    subSndStart(HAKEI_A ,200 ,15);    /*サウンド:敵ダメージ*/
                                }
                                break;
                            }
                        }
                        pEi++;
                    }
                }
            }
            sprite_set_location(SPN_JIDAN+i ,pTi->x ,pTi->y);

            /*スクロールアウト*/
            if((pTi->x < -MAS_PIX)||(pTi->x > (LCD_PIXEL_WIDTH+MAS_PIX))
             ||(pTi->y < -MAS_PIX)||(pTi->y > (LCD_PIXEL_HEIGHT+MAS_PIX)))
                pTi->cnt = BAKU_MAX;
        }
        pTi++;
    }
}

/*---------------------敵の弾--*/
void subTkdan(int iMap ,TAMAINFO *pTi ,MYINFO *pMi)
{
    int i;

    #define TKLOOP    3
    static int iTkCnt=0;

    iTkCnt=(iTkCnt+1) % TKLOOP;
    if(iTkCnt == 0)
        return;

    for(i=0 ;i<TKDANMAX ;i++)
    {
        if(pTi->cnt == BAKU_MAX)
        {
            sprite_set_location(SPN_TKDAN+i ,LCD_PIXEL_WIDTH ,LCD_PIXEL_HEIGHT);
        }else{

            if(pTi->cnt != BAKU_OFF)
            {
                /*爆発中*/
                sprite_set_char(SPN_TKDAN+i
                    , CFM_SPY | (CHN_BAKU + (pTi->cnt * BAKU_ANI)/BAKU_MAX ));

                pTi->cnt++;
                if(pTi->cnt == BAKU_MAX)
                {
                }
            }else{
                /*非爆発中*/
                pTi->x += pTi->x1;
                pTi->y += pTi->y1;

                sprite_set_char(SPN_TKDAN+i , CFM_SPY | CHN_TKDAN);

                if(fncMapSmall(iMap,pTi->x ,pTi->y ) >= BGN_BLOCK)
                {
                    pTi->cnt = BAKU_START;
                }else{
                    if(fncDamegeChk() == DAMEGE_MIN)
                    {
                        if((fncAbs(pTi->x ,pMi->x)<CHR_PIX)
                            &&(fncAbs(pTi->y ,pMi->y)<CHR_PIX))
                        {
                            pTi->cnt = BAKU_START;
                            subDamegeSet(pMi);    /*ダメージ処理*/
                        }
                    }
                }
            }
            sprite_set_location(SPN_TKDAN+i ,pTi->x ,pTi->y);

            /*スクロールアウト*/
            if((pTi->x < -MAS_PIX)||(pTi->x > (LCD_PIXEL_WIDTH+MAS_PIX)) 
              ||(pTi->y < -MAS_PIX)||(pTi->y > (LCD_PIXEL_HEIGHT+MAS_PIX)))
                pTi->cnt = BAKU_MAX;
        }
        pTi++;
    }
}


/*--------------------------メインプログラム*/
void main(int argc, char *argv[]) {

    int iMenuNum;
    int iMap=MAP_MIN;
    static MYINFO mi;    /*主人公情報*/
    static ZAKOINFO ei[ZAKOMAX];    /*敵情報*/
    static TAMAINFO tiMy[JIDANMAX];    /* 自分の弾 */
    static TAMAINFO tiTk[TKDANMAX];    /* 敵の弾 */

    subDispInit();    /*キャラ初期化*/
    subEndInit();    /*終了条件初期化*/
    for(;;)
    {
        subSoundInit();    /*サウンド初期化*/

        if(fncEndGet()!=END_HAPPY)
        {
            /*メニュー*/
            iMenuNum=fncOp();
            if(iMenuNum==MENU_EXIT)
            {
                break;
            }else if(iMenuNum==MENU_START){
                iMap=0;
            }
        }
        subEndInit();    /*終了条件初期化*/
        subTamaInit(tiMy ,JIDANMAX);
        subTamaInit(tiTk ,TKDANMAX);
        subMyInit(&mi);     /*主人公情報*/
        subTekiInit(ei);    /*敵の初期化*/
        subScrlInit(iMap,ei);    /*スクロール座標初期化*/
        subDamegeInit();    /*ダメージ初期化*/
        subStatusPr(&mi);
        subStagePr(iMap);    /*"STAGE"*/
        subMusSet("cACADDEEEDCCCEDCCCEFCDEEDCCCDE");

        /*-------------メインループ*/
        for(;;)
        {
            if(subEndCtrl()==TRUE)
                break;    /*ゲーム終了*/

            sys_wait(1);    /*ループ内でウエイト*/
            subSndCtrl();   /*サウンド処理*/
            subMy(iMap ,&mi ,tiMy);    /*主人公*/
            subDamegeCtrl();
            subScrlCtrl(iMap ,&mi ,ei ,tiMy ,tiTk );    /*スクロール処理*/
            subTeki(iMap ,&mi ,ei ,tiTk);   /*敵*/
            subJidan(iMap ,tiMy ,ei);    /*自分の弾*/
            subTkdan(iMap ,tiTk ,&mi);   /*敵の弾*/
        }

        if(fncEndGet()==END_HAPPY)
        {
            iMap++;
            if(iMap >= MAP_MAX)
            {
                iMap=MAP_MIN;
                subEnding();
                subEndInit();    /*終了条件初期化*/
            }
        }
    }
}



/*--------------------------オープニング-------*/
int fncOp()
{
#define MENU_CX    7
#define MENU_CW    16
#define MENU_CH    2

    int    iSx,iSy;
    int iKey;
    int iOk;
    int iMenu=0;

    /* ディスプレイ設定（ スクリーン１と２ 表示 ） */
    display_control(DCM_SCR2 | DCM_SCR1);

    /*下地になるレンガ*/
    screen_fill_char(SCREEN1, 0, 0, SCR_CHAR_W, SCR_CHAR_H    , CFM_BGY | CHN_OPBLOCK); 

    /*透明*/
    screen_fill_char(SCREEN2, 0, 0, SCR_CHAR_W, SCR_CHAR_H    , CFM_BGY | CHN_TOMEBOX); 

    subScreenSet(SCREEN2 ,TITLE_X ,TITLE_Y ,TITLE_DX ,TITLE_DY ,CPN_SPB ,CHN_TITLE);
    subScreenSet(SCREEN2 ,KAO_X ,KAO_Y ,KAO_DX ,KAO_DY ,CPN_SPR ,CHN_OPKAO);
    subScreenSet(SCREEN2 ,MENU_X ,MENU_Y ,MENU_DX ,MENU_DY ,CPN_SPR ,CHN_MENU);

    subChagePal(SCREEN2 ,MENU_CX, MENU_Y+(iMenu*MENU_CH) ,MENU_CW ,MENU_CH ,CPN_CSR);

    subMusSet("dAAAAABBBBCBCDEC");

    iSx=0;
    iSy=0;
    iOk=FALSE;
    for(;;)
    {
        iKey = key_press_check();
        if(iOk==FALSE)
        {
            if(iKey == KEY_NONE)
            {
                iOk=TRUE;
            }
        }else{
            if(iKey != KEY_NONE)
            {
                subChagePal(SCREEN2 ,MENU_CX, MENU_Y+(iMenu*MENU_CH) ,MENU_CW ,MENU_CH ,CPN_SPR);

                if(iKey == KEY_UP1)
                {
                    if(iMenu > MENU_MIN)
                    {
                        subSndStart(HAKEI_A ,1400 ,1);    /*サウンド*/
                        iMenu--;
                    }
                }

                if(iKey == KEY_DOWN1)
                {
                    if(iMenu < MENU_MAX)
                    {
                        subSndStart(HAKEI_A ,1400 ,1);    /*サウンド*/
                        iMenu++;
                    }
                }

                subChagePal(SCREEN2 ,MENU_CX, MENU_Y+(iMenu*MENU_CH) ,MENU_CW ,MENU_CH ,CPN_CSR);

                if((iKey == KEY_A)||(iKey == KEY_B))
                    break;

                iOk=FALSE;
            }
        }
        sys_wait(3);
        subSndCtrl();    /*サウンド処理*/

        iSx=fncLoop(iSx+1 ,SCREEN_PIXEL_WIDTH); /*ついでにスクロール*/
        iSy=fncLoop(iSy+1 ,SCREEN_PIXEL_HEIGHT); /*ついでにスクロール*/
        screen_set_scroll(SCREEN1, iSx, iSy);     /*スクリーン座標設定*/
    }
    subSndStart(HAKEI_A ,1900 ,3);    /*サウンド*/

    return(iMenu);
}

/*--------------------------*/
void subEnding()
{
    int    iSy;
    int iKey;
    int iCnt=300;

    /* ディスプレイ設定（ スクリーン１と２ 表示 ） */
    display_control(DCM_SCR2 | DCM_SCR1);

    screen_fill_char(SCREEN1, 0, 0, SCR_CHAR_W, SCR_CHAR_H ,CFM_BGY | CHN_WAVE); 
    screen_fill_char(SCREEN2, 0, 0, SCR_CHAR_W, SCR_CHAR_H    ,CFM_BGR | CHN_KUROBOX2); 
    screen_fill_char(SCREEN2, 0, 0, SCR_CHAR_W, END_Y+END_DY ,CFM_BGR | CHN_TOMEBOX); 

    subScreenSet(SCREEN2 ,END_X ,END_Y ,END_DX ,END_DY ,CPN_SPR ,CHN_END);

    subMusSet("cEFDFDEDAFEFEF");

    while( key_press_check() & KEY_A);    /**/

    iSy=0;
    for(;;)
    {
        iKey = key_press_check();
        if((iKey == KEY_A)||(iKey == KEY_B))
            break;

        sys_wait(1);
        subSndCtrl();    /*サウンド処理*/

        iSy=fncLoop(iSy+1 ,SCREEN_PIXEL_HEIGHT); /*ついでにスクロール*/
        screen_set_scroll(SCREEN1, 0, iSy);     /*スクリーン座標設定*/
        screen_set_scroll(SCREEN2, 0, 0);     /*スクリーン座標設定*/

        if(iCnt > 0)
        {
            iCnt--;
            if(iCnt == 0)
            {
                subTile(3,1+0,"222 2 2 22   22 2 2 223");
                subTile(3,1+1," 2  2 2 2    2  232 2 2");
                subTile(3,1+2," 2  222 22   22 222 2 2");
                subTile(3,1+3," 2  2 2 2    2  242 2 2");
                subTile(3,1+4," 2  2 2 22   22 2 2 226");
            }
        }
    }

    while( key_press_check() != KEY_NONE);
}


