If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Radiant SilverGun (Arcade)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Radiant SilverGun

Developer: Treasure
Platform: Arcade (Sega ST-V)
Released in JP: May 28, 1998


SourceIcon.png This game has uncompiled source code.
RegionIcon.png This game has regional differences.


Cactus 2.0!
This article has just been started and needs the article basics added.
Help us out and add them.

A vertical shoot-'em-up game that's considered to be a predecessor to Ikaruga.

Regional Differences

The ST-V version, when using a non-Japanese BIOS, has quite different behavior than the Japanese version. These changes have never been present in any other version of the game.

  • Practice stage removed
  • Boss introductions removed
  • Button 3 completely disabled
  • Button 1+2 together uses the sword
  • Button 2 shoots shot C
  • Shot C additionally shoots directly behind the player
  • Shot C bombs-on-screen limit is 8 instead of 5 (It actually literally compares to a double-precision floating point 7.5, but that just ends up being effectively 8)

Source Code

Large amounts of uncompiled source code can be found throughout the ST-V version's ROM. These addresses are assuming the ROM has been pre-concatenated.

0xC8800

This is part of the source code for the boss Golets.

eam[]={
	0x2000,
	0x2400,
	0x2800,
	0x2c00,
	0x3000,
};
/*-----------------------------------------------------------------*/
static	void	rain_beam(ENM_WK *x){
/*-----------------------------------------------------------------*/
	if(shot_kill_chk((COMM_OBJ *)x,1)){
		;
	}else{
		if(x->sp==0){
			x->s8w1--;
			x->mw.zoomx += 0x800;
			if(x->s8w1<=0){
				x->sp++;
				x->s8w1 = 16;
				if(x->s8w0){
					x->mw.angz = x->s16w0;
				}else{
					x->mw.angz = get_ang(x, get_play0(&x->mw));
				}
				x->dx = 0;
				x->dy = 0;
//				x->s32w0 = fixmuls(sin32(x->mw.angz),+0x2c00);
//				x->s32w1 = fixmuls(cos32(x->mw.angz),-0x2c00);
				x->s32w0 = fixmuls(sin32(x->mw.angz),+LV5_rain_beam[LV5]);
				x->s32w1 = fixmuls(cos32(x->mw.angz),-LV5_rain_beam[LV5]);
			}
			x->dx += x->s32w0;
			x->dy += x->s32w1;
		}else{
			if(x->s8w1>0){
				x->s8w1--;
				x->dx += x->s32w0;
				x->dy += x->s32w1;
				x->mw.zoomx -= 0x800;
				x->mw.zoomy -= 0x180;
			}
		}
		x->mw.x += x->dx;
		x->mw.y += x->dy;
	}
	x->mw.anm_no = rain_beam_anm[gtimer&3];
}
/*-----------------------------------------------------------------*/
static	void	rain_beam_set(DELIVERY_WK *dw, BOS12_WK *ms){
/*-----------------------------------------------------------------*/
	ENM_WK	*x;

	x = obj_set(ENM_OBJ_AREA,obj_size(sizeof(ENM_WK)),shot);
	if(x == NULL)	return;

	mw_init(&x->mw);
	aw_init(&x->aw);
	ENM_WK_init(x);

	x->mw.obj_no		= ms->mw.obj_no;
	x->mw.dousa_func	= rain_beam;
	x->mw.sys_fg 		= KILL_TAMA|SPR_NO_CUT_FG;

	x->mw.x	= ms->rain_pos[X];
	x->mw.y	= ms->rain_pos[Y];
	x->mw.z	= 0;
	x->mw.pri_ofs = PRI_INU;

	x->mw.anm_no	= A_MARU1;
	x->mw.char_no	= CHAR_EFT;

	x->aw.atari_tbl_adr	= at_rain_beam;
	x->aw.nakama		= NAKAMA_ENM;
	x->aw.zoku 			= ZOKU_TAMA;

	x->s8w0    = dw->par;		/* Shoot Type */
	x->s8w1    = 16;        	/* Speed Down Flame */
	x->mw.angz = dw->Ds16w0;	/* 1st angZ */
	x->s16w0   = dw->Ds16w1;	/* 2nd angZ */

	x->dx    = fixmuls(sin32(x->mw.angz),x->s8w1*+dw->Ds16w2*DEC/0x10);
	x->dy    = fixmuls(cos32(x->mw.angz),x->s8w1*-dw->Ds16w2*DEC/0x10);
	x->s32w0 = x->dx/-0x10;
	x->s32w1 = x->dy/-0x10;

	x->mw.zoomx = 0x1000;
	x->mw.zoomy = 0x8000;

	if(x->s8w0){
		x->mw.color_b	= char_tbl[CHAR_EFT].color + COL_YRED;
	}else{
		x->mw.color_b	= char_tbl[CHAR_EFT].color + COL_YELLOW;
	}
	x->mw.color_m	= x->mw.color_b;
}
/*============================================*/
/* ------------------------------------------ */
/*            Bakurai Touka                   */
/* ------------------------------------------ */
/*============================================*/
static	ATARI_TBL	at_baku[]={
	{	(ATFG_ATTACK | ATFG_TBL_END),	AT_NML,+0x00,+0x00,0x10,0x10,	},
};
extern	void	eft_moon(EFTC_OBJ *x);
/*-----------------------------------------------------------------*/
static	void	moon2(EFTC_OBJ *x){
/*-----------------------------------------------------------------*/
	eft_moon(x);
	x->mw.y -= SC_DY;
}
/*-----------------------------------------------------------------*/
static	void	baku(ENM_WK  *x){
/*-----------------------------------------------------------------*/
	EFTC_OBJ	*p;
	DELIVERY_WK	dw;

	if(x->sp==0){
		x->dy    += 0x0e00;
		x->s32w0 += 0x0b00;

		if(x->mw.z > 0){
			x->sp++;
			x->mw.sys_fg = KILL_TAMA;
			x->dy = -SC_DY;
			x->s32w0 = 0;
			x->s32w1 = +0x1000;
			x->mw.zoomx = 0x2000;
	
			x->mw.anm_no	= A_MARU0;
			x->mw.char_no	= CHAR_EFT;
			x->mw.color_m	= 
			x->mw.color_b	= char_tbl[CHAR_EFT].color + COL_YRED;

			dw.x = x->mw.x;
			dw.y = x->mw.y;
			dw.z = x->mw.z;
			dw.Ds32w0 = +0x14000;
			p = eft_moon_set(&dw);
			if(p){
				p->mw.dousa_func = moon2;
			}
			se_set(SE02_BAKU2_2,x->mw.x);
		}else{
			if(x->mw.z < -0x30*DEC){
				x->mw.anm_no = A_SONI_BAKURAI01_A;
			}
			if(x->mw.z < -0x28*DEC){
				x->mw.anm_no = A_SONI_BAKURAI02_A;
			}
			if(x->mw.z < -0x20*DEC){
				x->mw.anm_no = A_SONI_BAKURAI03_A;
			}
			if(x->mw.z < -0x18*DEC){
				x->mw.anm_no = A_SONI_BAKURAI04_A;
			}else{
				x->mw.anm_no = A_SONI_BAKURAI05_A;
			}
			x->mw.anm_no += gtimer&1;
		}
	}else{
		x->mw.anm_no = rain_beam_anm[gtimer&3];
		x->mw.angz = RAND;
		x->s32w1 -= 0x080;
		x->mw.zoomx += x->s32w1;
		x->mw.zoomy = x->mw.zoomx;

		if(x->s32w0<0&&x->mw.zoomx<0x3000){
			x->mw.sys_fg = (KILL_TAMA|ATARI_OFF_FG);
		}
		x->mw.sys_fg &= -(X_FLP|Y_FLP)-1;
		x->mw.sys_fg |= RAND&(X_FLP|Y_FLP);
	}
	x->mw.y += x->dy;
	x->mw.z += x->s32w0;

	if(x->sp && (range_chk(&x->mw)||x->mw.zoomx<0)){
		x->mode = OBJ_M_KIE;
	}
}
/*-----------------------------------------------------------------*/
static	void	baku_set(DELIVERY_WK *dw){
/*-----------------------------------------------------------------*/
	ENM_WK	*x;

	x = obj_set(ENM_OBJ_AREA,obj_size(sizeof(ENM_WK)),shot);
	if(x == NULL)	return;

	mw_init(&x->mw);
	aw_init(&x->aw);
	ENM_WK_init(x);

	x->mw.obj_no		= dw->Dobj_no;
	x->mw.dousa_func	= baku;
	x->mw.sys_fg 		= (KILL_TAMA|ATARI_OFF_FG);

	x->mw.x	= dw->x;
	x->mw.y	= dw->y;
	x->mw.z	= dw->z;
	x->dy = -0x00000;
	x->mw.pri_ofs = PRI_SHOT;

	x->mw.anm_no	= A_SONI_BAKURAI01_A;
	x->mw.char_no	= CHAR_SONIC_E;
	x->mw.color_m	= 
	x->mw.color_b	= char_tbl[CHAR_SONIC_E].color + COL_SONIC_EFT;

	x->aw.atari_tbl_adr	= at_baku;
	x->aw.nakama		= NAKAMA_ENM;
	x->aw.zoku 			= ZOKU_TAMA;
	return;
}
/*============================================*/
/* ------------------------------------------ */
/*            SHUTTER VELM                    */
/* ------------------------------------------ */
/*============================================*/
extern	void	enm00_dead(COMM_OBJ *);
extern	ATARI_TBL	at_enm00_0[];
#define	ENM00_0_LIFE	 	(SHOT_PW_VALCAN*2)		/* VELM */
/*=================================================================*/
static	void	bos12_enm00(ENM_WK *x){
/*=================================================================*/
	if(x->mw.y > +0x80*DEC){
		x->mode = OBJ_M_KIE;
			return;
	}
	if(x->aw.life <= 0){
		enm00_dead((COMM_OBJ *) x);
		x->mode	= OBJ_M_KIE;
	}else{
		x->mw.anm_no = (x->mw.anm_no+1)&0x1f;
		x->mw.y -= SC_DY;
	}
}
/*=================================================================*/
static	void	bos12_enm00_set(DELIVERY_WK *dw){
/*=================================================================*/
	s8	i;
	ENM_WK	*x;

	i = ENM_OBJ_get();
	if(i == DUMMY_OBJ)	return;
	x = obj_set(ENM_OBJ_AREA,obj_size(sizeof(ENM_WK)),enm);
	if(x == NULL)		return;

	mw_init(&x->mw);
	aw_init(&x->aw);
	ENM_WK_init(x);

	x->mw.dousa_func	= bos12_enm00;
	x->mw.sys_fg		= KILL_TAMA|Y_FLP;
	x->mw.obj_no	    = i;
	obj_x[x->mw.obj_no]	= x;

	x->mw.char_no	    = CHAR_VELM;
	x->mw.anm_no	    = 0;
	x->aw.atari_tbl_adr	= at_enm00_0;
	x->aw.life  		= ENM00_0_LIFE;
	x->mw.color_m	    = char_tbl[CHAR_VELM].color + ZOKU_YELLOW*0x10;
	x->mw.color_b	    = x->mw.color_m;

	x->aw.nakama	= NAKAMA_ENM;
	x->aw.zoku 		= ZOKU_YELLOW;

	x->mw.x	= dw->x;
	x->mw.y	= dw->y;
	x->mw.z	= 0;
}
/*============================================*/
/* ------------------------------------------ */
/*            SHUTTER                         */
/* ------------------------------------------ */
/*============================================*/
/*=================================================================*/
static	ATARI_TBL	at_shut0[]={
/*=================================================================*/
	{(ATFG_ATTACK               ),	AT_BODY,+0x34,+0x00,0x22,0x03,},
	{(ATFG_DAMAGE | ATFG_TBL_END),	DM_NML, +0x34,+0x00,0x28,0x04,},
};
/*=================================================================*/
static	ATARI_TBL	at_shut1[]={
/*=================================================================*/
	{(ATFG_ATTACK               ),	AT_BODY,-0x34,+0x00,0x22,0x03,},
	{(ATFG_DAMAGE | ATFG_TBL_END),	DM_NML, -0x34,+0x00,0x28,0x04,},
};
/*=================================================================*/
static	void	shutout(ENM_WK *x){
/*=================================================================*/
	if(gtimer&1){
		x->aw.atari_tbl_adr	= at_shut0;
	}else{
		x->aw.atari_tbl_adr	= at_shut1;
	}
	x->mw.y -= SC_DY;
	if(x->mw.y>(+0x80*DEC+(+0x10*DEC/2))){
		x->mode = OBJ_M_KIE;
	}
}
/*=================================================================*/
static	void	shutout_disp(MAIN_WK *mw){
/*=================================================================*/
	ENM_WK	*x;
	MAIN_WK	m;

	x = (ENM_WK *)((u32)mw-0x10);

	mw_init(&m);

	m.char_no = CHAR_SONIC_E;
	m.anm_no 	= A_STAGE2_KABE;
	m.pri_ofs	= PRI_ENM;
	m.color_m	= 0x2000+char_tbl[CHAR_SONIC_E].color+COL_STAGE2_KABE;

	m.y = x->mw.y;
	m.z	= 0;
	m.x = x->mw.x-0x34*DEC;
	spr_put(&m);
	m.x = x->mw.x+0x34*DEC;
	spr_put(&m);
}
/*=================================================================*/
static	void	shutout_set(s32 XP, s32 YP, BOS12_WK *ms, u8 FG){
/*=================================================================*/
	s8		i;
	ENM_WK	*p;
	DELIVERY_WK	dw;
/*--------------------------------------------------------*/
	i = ENM_OBJ_get();
	if(i == DUMMY_OBJ)	return;
	p = obj_set(ENM_OBJ_AREA,obj_size(sizeof(ENM_WK)),enm);
	if(p == NULL)		return;
/*--------------------------------------------------------*/
	mw_init(&p->mw);
	aw_init(&p->aw);
	ENM_WK_init(p);

	p->mw.dousa_func	= shutout;
	p->mw.sys_fg	    = (MODEL_DISP_FG|MODEL_FUNC_CALL_FG
	                      |ATARI_MUTEKI_FG|ATARI_STEALTH_FG|KILL_TAMA);
	p->mw.poly_adr		= shutout_disp;
	p->mw.obj_no	    = i;
	obj_x[p->mw.obj_no]	= p;

	p->aw.atari_tbl_adr	= at_shut0;
	p->aw.life          = 10;

	p->aw.nakama	= NAKAMA_KABE;
	p->aw.zoku 		= ZOKU_NORMAL;

	p->mw.x = XP+(ms->scr_shut*16*DEC);
	p->mw.y = YP;
	if(RAND&0x10){
		if(ms->scr_shut>-2){
			ms->scr_shut--;
		}else{
			ms->scr_shut++;
		}
	}else{
		if(ms->scr_shut<+2){
			ms->scr_shut++;
		}else{
			ms->scr_shut--;
		}
	}
	if(FG && ms->zibaku==0){
		dw.x = p->mw.x;
		dw.y = p->mw.y;
		bos12_enm00_set(&dw);
	}
}
/*============================================================================*/
/* ------------------------------------------                                 */
/*              Sub Routines                                                  */
/* ------------------------------------------                                 */
/*============================================================================*/
/*=================================================================*/
static	BOS12_WK	*get_letsGO(BOS12_WK *x){
/*=================================================================*/
	return	obj_x[x->LG_no];
}

/*============================================================================*/
/* ------------------------------------------                                 */
/*              Steps Init                                                    */
/* ------------------------------------------                                 */
/*============================================================================*/
/*=================================================================*/
static	void	IDEON_SWORD_init(BOS12_WK *x){
/*=================================================================*/
	x->sp = s_IDEON_SWORD;
	x->runYpos = (+0x40+0x20)*DEC;
	x->s16w0 = 45;
	x->s32w0 = 0;
	x->s32w1 = 0;
	x->s32w2 = DEC;
	x->s32w3 = DEC;
}

/*============================================================================*/
/* ------------------------------------------                                 */
/*              Steps Main (SONIC)                                            */
/* ------------------------------------------                                 */
/*============================================================================*/
#if	EDIT
	#include	"ang_edt.c"
	#include	"mot_edt.c"
/*=================================================================*/
static	void	TEST(BOS12_WK *x){
/*=================================================================*/
//	s16	*p;

	ang_edit(&x->mw);
	mot_edit(&x->sw,&x->ew);

#if	0
	/* Hit3D Posi Edit */
	if(spad[PAD_1P].trig & PAD_L){
		x->p0_posi_num--;
		if(x->p0_posi_num<0){
			x->p0_posi_num = p0_suu-1;
		}
	}
	if(spad[PAD_1P].trig & PAD_R){
		x->p0_posi_num++;
		if(x->p0_posi_num>p0_suu-1){
			x->p0_posi_num = 0;
		}
	}
	if(spad[PAD_1P].trig & PAD_UP){
		x->p0_menu--;
		if(x->p0_menu<0){
			x->p0_menu = 0;
		}
	}
	if(spad[PAD_1P].trig & PAD_DOWN){
		x->p0_menu++;
		if(x->p0_menu>3){
			x->p0_menu = 3;
		}
	}

	p = &p0_posi_data[4 * x->p0_posi_num];

	if(spad[PAD_1P].data & PAD_A){
		if(spad[PAD_1P].data & PAD_LEFT){
			*(p+x->p0_menu) -= 1;
		}
		if(spad[PAD_1P].data & PAD_RIGHT){
			*(p+x->p0_menu) += 1;
		}
	}else{
		if(spad[PAD_1P].trig & PAD_LEFT){
			*(p+x->p0_menu) -= 1;
		}
		if(spad[PAD_1P].trig & PAD_RIGHT){
			*(p+x->p0_menu) += 1;
		}
	}
	if(x->p0_menu == 3){
		*(p+x->p0_menu) &= 3;
	}

		num_set16(+0x80*DEC,+0x30*DEC,0,x->p0_posi_num);

	if(!(x->p0_menu==0 && gtimer&1)){
		num_set16(+0x80*DEC,+0x40*DEC,0,*(p+X));
	}
	if(!(x->p0_menu==1 && gtimer&1)){
		num_set16(+0x80*DEC,+0x48*DEC,0,*(p+Y));
	}
	if(!(x->p0_menu==2 && gtimer&1)){
		num_set16(+0x80*DEC,+0x50*DEC,0,*(p+Z));
	}
	if(!(x->p0_menu==3 && gtimer&1)){
		num_set16(+0x80*DEC,+0x60*DEC,0,*(p+3));
	}
#endif
}
#endif


/*=================================================================*/
/*=================================================================*/
/*=================================================================*/
#if	SCR_DBG
static	void	test_hit_set(s32 XP, s32 YP);
#endif

/*=================================================================*/
static	void	RUN_se(BOS12_WK *x, s32 se_Xpos){
/*=================================================================*/
	if(x->runXpos != se_Xpos){
		se_set(SE02_BURNER2_2,x->mw.x);
	}
}
/*=================================================================*/
static	void	set_run_rain_beam(BOS12_WK *x){
/*=================================================================*/
	DELIVERY_WK	dw;

	if(LV5<2){
		return;
	}
	se_set(SE_T_SHOT1,x->mw.x);

	dw.par    = 0x0000;	/* Type */
	dw.Ds16w2 = 0x0007;	/* 1st Speed */

	dw.Ds16w0 = 0xe000;	/* 1st angZ */
	rain_beam_set(&dw,x);
	dw.Ds16w0 = 0x2000;	/* 1st angZ */
	rain_beam_set(&dw,x);

	dw.Ds16w0 = 0xc000;	/* 1st angZ */
	rain_beam_set(&dw,x);
	dw.Ds16w0 = 0x4000;	/* 1st angZ */
	rain_beam_set(&dw,x);

	dw.Ds16w0 = 0xa000;	/* 1st angZ */
	rain_beam_set(&dw,x);
	dw.Ds16w0 = 0x6000;	/* 1st angZ */
	rain_beam_set(&dw,x);
}
/*=================================================================*/
static	void	SCROLL(BOS12_WK *x){
/*=================================================================*/
	s8	i,suu,set;
	u16	dat;
	s32	s32w0;
	FIXED		XpYp[XY];
	u8	FG;
#if	SCR_DBG
	s16	BGX;
#endif
	DELIVERY_WK	dw;
/*-------------------------------------*/
/*  Boss Moved Command                 */
/*-------------------------------------*/
	for(i=0; i<2; i++){
		x->scr_y[i] += SC_DY;
		if(x->scr_y[i] < -0x80*DEC){
/*-------------------------------------*/
#if	SCR_DBG
			BGX = SCROLL_BG[(x->scr_step*2)+0];
			if(BGX!=BG_END){
				test_hit_set(BGX*DEC,(-0x80-0xc0)*DEC);
			}
			BGX = SCROLL_BG[(x->scr_step*2)+1];
			if(BGX!=BG_END){
				test_hit_set(BGX*DEC,(-0x80-0xc0)*DEC);
			}
#endif
/*-------------------------------------*/
			x->scr_step++;
			dat = SCROLL_proc[x->scr_step];
			if(dat==SC_loop){
				x->zibaku++;
				x->scr_step = 0;
				dat = SCROLL_proc[0];
			}
			x->scr_p[i] = dat&0xf;
			x->scr_y[i] += 0x80*2*DEC;

		/*---------------------*/
		/* Change Running Root */
		/*---------------------*/
			if(BACK_RUN_CHK){
				get_play_posi(x, 0, &XpYp[0]);

				if(XpYp[X]>0){
					x->scr_rand[i] = -1;
				}else{
					x->scr_rand[i] = +1;
				}
				if(LV5<3){
					x->scr_rand[i] = 0-x->scr_rand[i];
				}
			}else{
				if(RAND&0x10){
					x->scr_rand[i] = -1;
				}else{
					x->scr_rand[i] = +1;
				}
			}
		/*-----------------*/
		/* Scroll Objs Set */
		/*-----------------*/
			suu = 0;
			yaji_set(x,dat&0xf00);
			dat &= 0xff;
			switch(dat){
				case	SC_ZERO  + ESET_SHUTOUT_SEL:
					if(x->mw.x>0){
						s32w0 = -0x78*DEC;
					}else{
						s32w0 = +0x78*DEC;
					}
					for(; suu<3; suu++){
						shutout_set(s32w0,
								    (-0x80-0x94-(suu*0x2c))*DEC,x,1);
					}
					x->scr_p[i] = SC_ZERO;
					break;

				case	SC_CENT  + ESET_SHUTOUT_ENM6:
				case	SC_CENT  + ESET_SHUTOUT_START6:
				case	SC_CENT  + ESET_SHUTOUT_START:
					set_run_rain_beam(x);

					x->scr_shut = x->scr_rand[i];

					if(dat==SC_CENT+ESET_SHUTOUT_ENM6  ){
						FG = 1;
					}else{
						FG = 0;
					}
					if(dat==SC_CENT+ESET_SHUTOUT_START6
					|| dat==SC_CENT+ESET_SHUTOUT_ENM6  ){
						set = 6;
					}else{
						set = 3;
					}
					for(; suu<set; suu++){
						shutout_set(x->scr_rand[i]*-0x78*DEC,
								    (-0x80-0x94-(suu*0x2c))*DEC,x,FG);
					}
					x->scr_p[i] = SC_CENT;
					break;

				case	SC_CENT2 + ESET_SHUTOUT_START:
					set_run_rain_beam(x);

					x->scr_shut = x->scr_rand[i];
					for(; suu<3; suu++){
						shutout_set(x->scr_rand[i]*-0x78*DEC,
								    (-0x80-0x94-0x80-(suu*0x2c))*DEC,x,0);
					}
					x->scr_p[i] = SC_CENT2;
					break;
				case	SC_ZERO  + ESET_GO_SET:
					x->fg ^= 1;
					x->scr_p[i] = SC_ZERO;
					break;
				case	SC_ZERO  + ESET_FIGHT:
					x->fg ^= 2;
					x->btimer = 0;
					x->scr_p[i] = SC_ZERO;
					x->IDEON_X_fg = 30;
					break;
			}
		}
	}
/*-------------------------------------*/
/* Command Trans ???                   */
/*-------------------------------------*/
	for(i=0; i<2; i++){
		if(x->scr_rand[i] && -x->scr_y[i]>=(x->mw.y-0x10*DEC)){
			x->scr_command = x->scr_p[i];
			switch(x->scr_command){
				case	SC_ZERO:
			/*--------------*/
			/* 2way Missile */
			/*--------------*/
					if(((x->sp==s_WAIT && x->runYpos>0)
					&& (x->IDEON_X==0||(x->IDEON_X!=0&&i)))
					|| (x->sp==s_IDEON_SWORD
					&& x->p1_fg&fg_brk&&x->p2_fg&fg_brk)){
						dw.x = x->rain_pos[X];
						dw.y = x->rain_pos[Y];
						dw.z = 0;
						dw.Ds32w3 = 0x1c000;	/* Speed */
						dw.Ds16w1 = 40; 		/* Homing Flame */
						dw.Ds16w3 = 0x2000;		/* Re_Ang_Mode (64) */
						dw.Ds16w0 = x->mw.angz;
					
						dw.Ds16w4 = dw.Ds16w0+0x0e00;	/* First Dir */
						eshot03_set_cstm(&dw);
						dw.Ds16w4 = dw.Ds16w0-0x0e00;	/* First Dir */
						eshot03_set_cstm(&dw);
					}
					break;
				case	SC_SIDE:
					RUN_se(x,0);
					x->runsgt  = 0x20;
					x->runXpos = 0;
					x->runHundle = 0x50;
					break;
				case	SC_SIDE2:
					RUN_se(x,0);
					x->runsgt  = 0x80;
					x->runXpos = 0;
					x->runHundle = 0x18;
					break;
				case	SC_CENT2:
					RUN_se(x,0x78*DEC*x->scr_rand[i]);
					x->runsgt  = 0x80;
					x->runXpos = 0x78*DEC*x->scr_rand[i];
					x->runHundle = 0x18;
					break;
				case	SC_CENT:
					RUN_se(x,0x78*DEC*x->scr_rand[i]);
					x->runsgt  = 0x20;
					x->runXpos = 0x78*DEC*x->scr_rand[i];
					x->runHundle = 0x50;
					break;
				case	SC_LFT2:
					RUN_se(x,+0x78*DEC);
					x->runsgt  = 0x60;
					x->runXpos = +0x78*DEC;
					x->runHundle = 0x38;
					break;
				case	SC_RGT2:
					RUN_se(x,-0x78*DEC);
					x->runsgt  = 0x60;
					x->runXpos = -0x78*DEC;
					x->runHundle = 0x38;
					break;
				case	SC_BACK_TURN:
					if(BACK_RUN_CHK){
						IDEON_SWORD_init(x);
					}else{
						x->sp = s_BACK_TURN;
						x->runspd = -SC_DY+DEC+0x8000;
						x->runHundle = 0x40;
						x->s32w0 = 0;
						x->s32w1 = 0;
						se_set(SE02_KAITEN2_2,x->mw.x);
						M_hit_off(x);
					}
					break;
			}
			x->scr_rand[i] = 0;
		}
	}
	x->runZ = atan(x->runXpos-x->mw.x, (x->mw.y-x->runsgt*DEC)-x->mw.y);
	x->mw.y -= SC_DY;
}
/*=================================================================*/
static	void	RUN_rot(BOS12_WK *x){
/*=================================================================*/
	rot_sub(&x->angZspd,&x->angZssp,x->mw.angz,x->runZ,
			0x2000,8,x->runHundle);
	rot_sub(&x->angYspd,&x->angYssp,x->mw.angy,-x->mw.angz,
			0x4000,0x10,0x060);
}
/*=================================================================*/
static	void	RUN_sub(BOS12_WK *x){
/*=================================================================*/
	x->dx = fixmuls(sin32(x->mw.angz),-SC_DY+DEC);

	if(x->mw.y<x->runYpos+get_rand(0x10000)){
		x->runspd = comps32(x->runspd,-SC_DY-0x10000,0x8000);
		x->dy = -fixmuls(cos32(x->mw.angz),x->runspd);
	}else{
		x->runspd = comps32(x->runspd,-SC_DY+0xe000, 0x7000);
		x->dy = -fixmuls(cos32(x->mw.angz),x->runspd);
	}
}
/*=================================================================*/
static	void	DEMO(BOS12_WK *x){
/*=================================================================*/
	x->angYspd = comps32(x->angYspd, 0x800,0x20);
	x->angYssp = (x->mw.y/DEC)*-0x20;
	x->mw.x = (sin32(x->mw.angy+0x8000+x->angYssp)*((-x->mw.y/(DEC*2))-0x20));
	x->mw.z = (cos32(x->mw.angy+0x8000+x->angYssp)*-0x20)-0x40*DEC;
	x->dy = -0x20000;
	if(x->mw.y<0){
		x->sp++;
		x->mw.angx = 0;
		x->mw.angz = 0;
		if(x->LG_fg==0){
			M_hit_on(x);
			x->dx = -0x38000;
		}else{
			x->dx = +0x40000;
		}
	}
}
/*=================================================================*/
static	void	DEMO_1(BOS12_WK *x){
/*=================================================================*/
	if(x->LG_fg==0){
		x->dy += 0x0a00;
		x->dx += 0x1400;
		x->angYspd -= 0x2d;
		x->dz += 0x0696;

		if(x->dx>0 && x->mw.x>-0x30*DEC){
			x->sp++;
			x->angYssp = x->angYspd*2;
		}
	}else{
		x->angZspd -= 0x4;
		x->dx -= 0x4000;
		x->dy -= 0x0800;
		x->angYspd += 0x30;
		x->dz -= 0x0100;

		if(x->mw.y<-0x120*DEC){
			x->sp = m_Wait;
			x->mw.sys_fg = (SPR_DISP_CUT|ATARI_OFF_FG);
			x->dx = 0;
			x->dy = 0;
			x->dz = 0;
		}
	}
}
/*=================================================================*/
static	void	DEMO_2(BOS12_WK *x){
/*=================================================================*/
	RUN_rot(x);

	x->dx = comps32(x->dx, 0, 0x1234);
	x->dz = comps32(x->dz, 0, 0x1000);
	x->dy -= 0x700;

	if(x->dz==0){
		x->sp = s_WAIT;
		x->dy = 0;
		x->mw.z = 0x10*DEC;
	}
}
static	u8	LV5_kirai[]={
	40,
	30,
	20,
	17,
	14,
};
/*=================================================================*/
static	void	WAIT(BOS12_WK *x){
/*=================================================================*/
	PLAY_OBJ	*pw;
	DELIVERY_WK	dw;

//	rot_sub(&x->angXspd,&x->angXssp,x->mw.angx,0,
//			0x1800,0x10,0x040);

	SCROLL(x);

/*------------------*/
/* Running Position */
/*------------------*/
	if(BACK_RUN_CHK){
		x->runYpos = (+0x48+0x20)*DEC;
	}else{
		x->runYpos = (-0x3c+0x20)*DEC;
	}
/*----------------*/
/* Running Attack */
/*----------------*/
	dw.Dobj_no = x->mw.obj_no;

	if(x->fg&2){

		x->IDEON_X = comps32(x->IDEON_X,16,2);
		if(x->IDEON_X == 14){
			se_set(SE02_METAL2_2,x->mw.x);
		}

	/*--------------*/
	/* Search Laser */
	/*--------------*/
		if(x->IDEON_X==16 && x->btimer>40){

			x->runZ = 0;

			pw = get_play0(&x->mw);
			dw.Ds32w0 = x->mw.x - pw->mw.x;
			if(dw.Ds32w0 > +0x0c*DEC){
				x->mw.x -= 0x2000;
			}
			if(dw.Ds32w0 < -0x0c*DEC){
				x->mw.x += 0x2000;
			}
			if(x->mw.x > +0x40*DEC){
				if(x->mw.x > (+0x78*DEC)+(0x10*DEC)){
					x->mw.x =(+0x78*DEC)+(0x10*DEC);
				}
				if(x->mw.x < (+0x78*DEC)-(0x10*DEC)){
					x->mw.x =(+0x78*DEC)-(0x10*DEC);
				}
			}else{
				if(x->mw.x < -0x40*DEC){
					if(x->mw.x < (-0x78*DEC)-(0x10*DEC)){
						x->mw.x =(-0x78*DEC)-(0x10*DEC);
					}
					if(x->mw.x > (-0x78*DEC)+(0x10*DEC)){
						x->mw.x =(-0x78*DEC)+(0x10*DEC);
					}
				}else{
					if(x->mw.x > (+0x00*DEC)+(0x14*DEC)){
						x->mw.x =(+0x00*DEC)+(0x14*DEC);
					}
					if(x->mw.x < (+0x00*DEC)-(0x14*DEC)){
						x->mw.x =(+0x00*DEC)-(0x14*DEC);
					}
				}
			}

			if(rest(x->btimer,WAIT_rain_tym[LV5])==0){
				se_set(SE_T_SHOT1,x->mw.x);

				dw.par    = 0x0000;	/* Type */
				dw.Ds16w2 = 0x0007;	/* 1st Speed */
				if(x->mw.y>0 || x->p6_fg&fg_brk || x->p4_fg&fg_brk){
					dw.Ds16w0 = 0xd000;	/* 1st angZ */
					rain_beam_set(&dw,x);
				}
				if(x->mw.y>0 || x->p5_fg&fg_brk || x->p3_fg&fg_brk){
					dw.Ds16w0 = 0x3000;	/* 1st angZ */
					rain_beam_set(&dw,x);
				}
			}
	/*-------------*/
	/* Armd Vulcan */
	/*-------------*/
			if(x->mw.y<0 && rest(x->btimer,25)==0){
				if(rest(x->btimer,25*2)==0){
					if((x->p5_fg&fg_brk)==0){
						dw.x = x->vul_L_pos[X];
						dw.y = x->vul_L_pos[Y];
						wall_set(&dw);
					}
				}else{
					if((x->p6_fg&fg_brk)==0){
						dw.x = x->vul_R_pos[X];
						dw.y = x->vul_R_pos[Y];
						wall_set(&dw);
					}
				}
			}
	/*----------------*/
	/* Wing Laser     */
	/*----------------*/
			if(x->mw.y<0 && x->btimer==45){
				if((x->p3_fg&fg_brk)==0){
					wing_laser_set(x,0);
				}
				if((x->p4_fg&fg_brk)==0){
					wing_laser_set(x,1);
				}
			}
	/*----------------*/
	/* Destroyed Mine */
	/*----------------*/
			if(x->p3_fg&fg_brk && x->p4_fg&fg_brk
			&& x->p5_fg&fg_brk && x->p6_fg&fg_brk
			&& x->mw.y<0 && rest(x->btimer,LV5_kirai[LV5])==0){
				se_set(SE02_T_SHOT2_1,x->mw.x);

				dw.x = x->rain_pos[X];
				dw.y = x->rain_pos[Y];
				dw.z = 0;
				dw.Ds16w0 = 0x8000+get_rand(0x0800);
				dw.Ds32w1 = 0x10000;		/* Main  MAX SPEED */
				dw.Ds16w1 = dw.Ds16w0;		/* First Seeta */
				#if	0
				dw.Ds16w6 = 3;              /* Attack Type */
				#endif
				dw.Ds16w6 = 0;              /* Attack Type */
				dw.Ds32w2 = 0x20000;		/* First SPEED */

				eshot06_set_cstm(&dw);
			}
		}
	}else{
		if(x->IDEON_X_fg){
			x->IDEON_X_fg--;
		}else{
			x->IDEON_X = comps32(x->IDEON_X,0,2);
			if(x->IDEON_X == 2){
				se_set(SE02_METAL2_2,x->mw.x);
			}
		}
#if	0
	/*------------*/
	/* Back Laser */
	/*------------*/
		if(x->runYpos>0 && (gtimer&0xf)==0){
			se_set(SE_E_SHOT1,x->mw.x);

			dw.x = x->rain_pos[X];
			dw.y = x->rain_pos[Y];
			dw.z       = 0;
			dw.Ds16w0  = x->mw.angz;
			dw.Ds16w1  = 0x10;	/* Speed Up Flame */
			dw.Ds16w2  = 0x01;	/* Color Type */
			eshot08_set_cstm(&dw);
		}
#endif
	}
	RUN_rot(x);
	RUN_sub(x);
}
/*=================================================================*/
static	void	BACK_TURN(BOS12_WK *x){
/*=================================================================*/
	SCROLL(x);
	RUN_rot(x);

	x->s32w1   = comps32(x->s32w1,0x300,0x08);
	x->mw.angx += x->s32w1;
#if	0
	if(x->mw.x<0){
		x->mw.angy  -= x->s32w1/2;
	}else{
		x->mw.angy  += x->s32w1/2;
	}
#endif
	x->s32w0   += x->s32w1;
	x->mw.z    =(cos32(x->mw.angx)*+0x40)-0x40*DEC+0x10*DEC;

	if(x->s32w0>DEC){
		x->mw.z = +0x10*DEC;
		x->mw.angx = 0;
		x->angXspd = 0;
		IDEON_SWORD_init(x);
	}
	x->runspd = comps32(x->runspd,-SC_DY-(0x30000),0x0900);
	x->dy = -fixmuls(cos32(x->mw.angz),x->runspd);
}
/*=================================================================*/
static	void	IDEON_SWORD(BOS12_WK *x){
/*=================================================================*/
	PLAY_OBJ	*p;
	DELIVERY_WK	dw;

	SCROLL(x);
	RUN_rot(x);
	RUN_sub(x);

	x->s16w0++;
	if(x->s16w0>(80*10)){
		x->sp = s_WAIT;
	}

	x->IDEON_X = comps32(x->IDEON_X,0xb,1);
	if(x->IDEON_X == 0xa){
		se_set(SE02_METAL2_2,x->mw.x);
		M_hit_on(x);
	}

	p = get_play0(&x->mw);
	if(p->mw.y>0){
		x->runYpos = comps32(x->runYpos,(+0x40+0x20)*DEC+p->mw.y/4,0x8000);
	}else{
		x->runYpos = comps32(x->runYpos,(+0x40+0x20)*DEC,          0x8000);
	}
/*---------------*/
/* Rain Beam Set */
/*---------------*/
	if(x->s16w0>80*2
	&& x->s16w0<80*(10-1) && rest(x->s16w0,IDEON_SWORD_rain_tym[LV5])==0){
		dw.par    = 0x0000;	/* Type */
		dw.Ds16w2 = 0x0007;	/* 1st Speed */
		if(rest(x->s16w0,IDEON_SWORD_rain_tym[LV5]*2)==0){
			dw.Ds16w0 = 0xd000;	/* 1st angZ */
		}else{
			dw.Ds16w0 = 0x3000;	/* 1st angZ */
		}
		rain_beam_set(&dw,x);

		se_set(SE_T_SHOT1,x->mw.x);
	}
/*-------------*/
/* IDEON Sword */
/*-------------*/
	if(x->s16w0<80*(10-1) && rest(x->s16w0,80)==0){
		if(rest(x->s16w0, 80*2)==0){
			if((x->p1_fg & fg_brk)==0){
				x->IDEON_L_sp = 1;
				x->s32w0 = 0;
				x->s32w2 = 0x8000;
				x->s16w2 = +0xc00;	/* zoomx 1st spd */
				x->s16w4 = +0xc00;	/* zoomy 1st spd */
				tame_set(&x->p1_fg, fg_brk, &x->IDEON_L_pos[X], &x->mw.angz,
						 COL_RRED);
			}
		}else{
			if((x->p2_fg & fg_brk)==0){
				x->IDEON_R_sp = 1;
				x->s32w1 = 0;
				x->s32w3 = 0x8000;
				x->s16w3 = +0xc00;	/* zoomx 1st spd */
				x->s16w5 = +0xc00;	/* zoomy 1st spd */
				tame_set(&x->p2_fg, fg_brk, &x->IDEON_R_pos[X], &x->mw.angz,
						 COL_RRED);
			}
		}
	}
	if(x->IDEON_L_sp){
		if(x->p1_fg & fg_brk || x->s32w0<0){
			x->IDEON_L_sp=0;
		}else{
			x->IDEON_L_sp++;
			if(x->IDEON_L_sp==40){
				se_set(SE02_SHOTL2_2,x->IDEON_L_pos[X]);

				IDEON_S_set(&x->IDEON_L_sp, &x->IDEON_L_pos[X], &x->s32w0);
				IDEON_S_eft_set(&x->IDEON_L_pos[X], COL_RRED, x->mw.angz);
				x->s32w2 = 0x0000;
			}
			if(x->IDEON_L_sp>=40){
				x->s32w0 += x->s16w2;
				x->s16w2 -= IDEON_SWORD_zoomx[LV5];

				x->s32w2 += x->s16w4;
				if(x->s16w4>0){
					x->s16w4 -= 0x48;	/* Zoomy Speed */
				}
			}
		}
	}
	if(x->IDEON_R_sp){
		if(x->p2_fg & fg_brk || x->s32w1<0){
			x->IDEON_R_sp=0;
		}else{
			x->IDEON_R_sp++;
			if(x->IDEON_R_sp==40){
				se_set(SE02_SHOTL2_2,x->IDEON_R_pos[X]);

				IDEON_S_set(&x->IDEON_R_sp, &x->IDEON_R_pos[X], &x->s32w1);
				IDEON_S_eft_set(&x->IDEON_R_pos[X], COL_RRED, x->mw.angz);
				x->s32w3 = 0x0000;
			}
			if(x->IDEON_R_sp>=40){
				x->s32w1 += x->s16w3;
				x->s16w3 -= IDEON_SWORD_zoomx[LV5];

				x->s32w3 += x->s16w5;
				if(x->s16w5>0){
					x->s16w5 -= 0x48;	/* Zoomy Speed */
				}
			}
		}
	}
}
/*=================================================================*/
static	void	DEAD(BOS12_WK *x){
/*=================================================================*/
	if(x->btimer > 120){
		x->sp = s_DEAD_WAIT;
		x->rep = report_set(100);
#if	DBG_FG
		x->STG_SCORE0 = play_data[0].befor_stg_score;
		x->STG_SCORE1 = play_data[1].befor_stg_score;
#endif
		SCR_NextSection();
	}
}
/*=================================================================*/
static	void	DEAD_WAIT(BOS12_WK *x){
/*=================================================================*/
	BOS12_WK	*ms;
	EFT_OBJ	*rep;

	rep = x->rep;
	if(rep->mode >= OBJ_M_KIE){
		x->mode = OBJ_M_KIE;
		area_no--;
#if	DBG_FG
		play_data[0].befor_stg_score = x->STG_SCORE0;
		play_data[1].befor_stg_score = x->STG_SCORE1;
#endif
		ms = get_letsGO(x);
		ms->fg |= 2;
	}
}


/*============================================================================*/
/* ------------------------------------------                                 */
/*              Steps Main (MUGNUM)                                           */
/* ------------------------------------------                                 */
/*============================================================================*/
/*=================================================================*/
static	void	M_hit_on(BOS12_WK *x){
/*=================================================================*/
	x->p0_fg &= -fg_hit-1;
	x->p1_fg &= -fg_hit-1;
	x->p2_fg &= -fg_hit-1;
	x->p3_fg &= -fg_hit-1;
	x->p4_fg &= -fg_hit-1;
	x->p5_fg &= -fg_hit-1;
	x->p6_fg &= -fg_hit-1;
}
/*=================================================================*/
static	void	M_hit_off(BOS12_WK *x){
/*=================================================================*/
	x->p0_fg |= fg_hit;
	x->p1_fg |= fg_hit;
	x->p2_fg |= fg_hit;
	x->p3_fg |= fg_hit;
	x->p4_fg |= fg_hit;
	x->p5_fg |= fg_hit;
	x->p6_fg |= fg_hit;
}
/*=================================================================*/
static	void	Wait(BOS12_WK *x){
/*=================================================================*/
	BOS12_WK	*ms;

	ms = get_letsGO(x);

	if(x->fg&2){
		x->sp = m_Figt_Wait;
		x->s32w0 = 0;
		return;
	}
	if(ms->fg & 1){
		x->sp = m_Dual;
		x->mw.x = -ms->mw.x;
		x->mw.y = -0xe0*DEC;
		x->mw.z = -0x30*DEC;
		x->dx   = -ms->dx;
		x->dy   =  ms->dy;
		x->dz = 0;
		x->angYspd = 0;
		x->mw.sys_fg = (MODEL_DISP_FG|MODEL_FUNC_CALL_FG|ATARI_OFF_FG);
	}
}
/*=================================================================*/
static	void	Dual(BOS12_WK *x){
/*=================================================================*/
	BOS12_WK	*ms;
	DELIVERY_WK	dw;

	ms = get_letsGO(x);

	x->dx = -ms->dx;
	x->dy =  ms->dy;
	if((ms->fg&1)==0||x->fg&1){
		x->sp = m_Rtrn;
		x->dy = -0x0e000;
	}
	x->mw.y = comps32(x->mw.y,-0x50*DEC,DEC);
	x->mw.angz = -ms->mw.angz/4;
	x->mw.angy = -ms->mw.angy;
	x->mw.y -= SC_DY;

	if(x->mw.y > -0x60*DEC && abs(x->mw.x) > 0x30*DEC
	&& rest(x->btimer,14)==0){
		dw.Dobj_no = x->mw.obj_no;
		dw.x = x->mw.x+get_rand(0x10*DEC);
		dw.y = x->mw.y+0x10*DEC;
		dw.z = x->mw.z;
		baku_set(&dw);
	}
}
/*=================================================================*/
static	void	Rtrn(BOS12_WK *x){
/*=================================================================*/
	x->runZ = 0;

	rot_sub(&x->angZspd,&x->angZssp,x->mw.angz,0,
			0x2000,8,0x10);

	if(x->mw.x>0){
		x->dx += 0x0400;
		x->angYspd -= 0x030;
	}else{
		x->dx -= 0x0400;
		x->angYspd += 0x030;
	}
	x->dy -= 0x1c00;
	if(x->mw.y<-0x0f0*DEC){
		x->sp = m_Wait;
		x->dx = 0;
		x->dy = 0;
		x->mw.sys_fg = (SPR_DISP_CUT|ATARI_OFF_FG);
	}
	x->mw.y -= SC_DY;
}
/*=================================================================*/
static	void	Figt_Wait(BOS12_WK *x){
/*=================================================================*/
	x->s32w0--;
	if(x->s32w0<0){
		se_set(SE02_APPEAR2_2_2,x->mw.x);

		x->sp = m_Demo;
		x->mw.sys_fg = (MODEL_DISP_FG|MODEL_FUNC_CALL_FG|ATARI_OFF_FG);
		x->mw.angz = 0;
		x->mw.angy = 0;
		x->mw.angx = 0;
		x->angZspd = 0;
		x->angZssp = 0;
		x->angYspd = 0;
		x->angYssp = 0;

		x->mw.x = -0x50*DEC+(-0xfff71f10);
		x->mw.y = -0xe0*DEC;
		x->mw.z = -0x70*DEC;
		x->dy   = +0x50000;
		x->dx   = +0x10000;
	
		x->fg |= 0x80;
		bar_set(P0_LIFE);
	}
}
/*=================================================================*/
static	void	Demo(BOS12_WK *x){
/*=================================================================*/
	x->mw.angx = div(x->mw.z-0x20*DEC,+0x280);
	x->mw.angy = -x->dx;
	x->mw.angz = x->dx/2;
	if(x->mw.z>=+0x20*DEC){
		se_set(SE02_SET2_2_2,x->mw.x);

		x->sp = m_Demo_Wait;
		x->proc_wait = 120;
		SSSS_Anime_Set(&x->sw, BOS12_TRNS1);
		M_hit_on(x);

		x->dx = 0;
		x->dy = 0;
		x->mw.z = +0x20*DEC;
		x->mw.angz = 0;
		x->mw.angy = 0;
		x->mw.angx = 0;
	}else{
		x->dx = comps32(x->dx,0,0x01d0);
		x->dy -= 0x0e00;
		x->mw.z += 0x10000;
	}
}
/*=================================================================*/
static	void	Demo_Wait(BOS12_WK *x){
/*=================================================================*/
	x->mw.y -= 0x3000;
	x->IDEON_X = comps32(x->IDEON_X,-3,1);
	if(x->sw.S_fg & ssss_end){
		x->sp = m_Figt;
	}
}

/*============================================================================*/
/* ------------------------------------------                                 */
/*              Main Proc                                                     */
/* ------------------------------------------                                 */
/*============================================================================*/
enum{
	BS_RAIN,
	BS_VULCAN,
	BS_MSHOT,
	BS_METEO,

	LOOP,
	BS_END
};
/*=================================================================*/
static	u8	proc_data[]={
/*=================================================================*/
	BS_RAIN,
	BS_VULCAN,
	BS_MSHOT,
	BS_METEO,
/*-------------------*/
	LOOP,
};
/*=================================================================*/
static	void	main_proc(BOS12_WK *x){
/*=================================================================*/
	u8	dt0;
	DELIVERY_WK	dw;

	if(x->proc_wait){
		return;
	}
	dt0 = proc_data[x->proc_step];
	if(LOOP == dt0){
		x->proc_step = 0;
		dt0 = proc_data[x->proc_step];
		x->zibaku++;
	}
	x->proc_step++;
	switch(dt0){
		case	BS_RAIN:
			x->proc_wait = 120;
			x->s16w0 = 0;
			break;
		case	BS_VULCAN:
			x->sp = m_Vulc_Wait;
			x->proc_wait = 120;
			x->s16w0 = 0;
			x->s32w0 = 0;
			SSSS_Anime_Set(&x->sw, BOS12_Vulc_Set);
			break;
		case	BS_METEO:
			x->sp = m_Meto;
			x->proc_wait = 120;
			x->s16w0 = 0;
			SSSS_Anime_Set(&x->sw, BOS12_Meto_Set);
			break;
		case	BS_MSHOT:
			x->sp = m_Msht;
			x->proc_wait = 120;
			x->s16w0 = -4;
	
			dw.ix = (void *)x;
			if((x->p4_fg&fg_brk)==0 && (x->fg & 0x8000)==0){
				dw.x       = x->wng_R_pos[X];
				dw.y       = x->wng_R_pos[Y];
				dw.Ds16w0 = -0x0001;
				search_set(&dw);
			}
			if((x->p3_fg&fg_brk)==0 && (x->fg & 0x4000)==0){
				dw.x       = x->wng_L_pos[X];
				dw.y       = x->wng_L_pos[Y];
				dw.Ds16w0 = +0x0001;
				search_set(&dw);
			}
			break;
	}
}
/*=================================================================*/
static	void	Move(BOS12_WK *x){
/*=================================================================*/
	if(x->mw.y<-0x50*DEC){
		x->dy = comps32(x->dy,+0x08000,0x4000);
	}else{
		x->dy = comps32(x->dy,-0x08000,0x6000);
	}

	if(x->sp==m_Msht&&
	  ((x->IDEON_L_sp&&x->IDEON_L_sp<64)||(x->IDEON_R_sp&&x->IDEON_R_sp<64))){
		rot_sub(&x->angZspd,&x->angZssp,x->mw.angz,
				x->IDEON_X_sv,
				0x0400,0x14,0x02);
	}else{
		rot_sub(&x->angZspd,&x->angZssp,x->mw.angz,
				get_ang(x, get_play0(&x->mw))+0x8000,
				0x0480,0x14,0x02);
	}
	x->mw.x = sin32(x->mw.angz+0x8000)*0x30;
}
/*=================================================================*/
static	void	Figt(BOS12_WK *x){
/*=================================================================*/
	PLAY_OBJ	*pw;
	DELIVERY_WK	dw;

	x->mw.z = comps32(x->mw.z,+0x20*DEC, 0x4000);
	Move(x);
	x->proc_wait = comps32(x->proc_wait,0,1);

	if(x->sw.S_fg & ssss_end){
		SSSS_Anime_Set(&x->sw, BOS12_Wait);
	}

	main_proc(x);
	if(x->sp == m_Figt){
		x->s16w0++;
		if(rest(x->s16w0,18)==0){
			dw.par    = 0x0001;	/* Type Red */
			pw = get_play0(&x->mw);
			if(pw->mw.y<x->mw.y){
				dw.Ds16w1 = x->mw.angz;
			}else{
				dw.Ds16w1 = 0x8000+x->mw.angz;
			}

			dw.Ds16w2 = 0x0006/*+rest(x->s16w0,18*8)/18*/;	/* 1st Speed */
	
			dw.Ds16w3 = (rest(x->s16w0,18*16)/18)*0x1000;
			dw.Ds16w0 = -dw.Ds16w3+0x4000+0x8000+x->mw.angz;	/* 1st angZ */
			rain_beam_set(&dw,x);
			dw.Ds16w0 = +dw.Ds16w3+0xc000+0x8000+x->mw.angz;	/* 1st angZ */
			rain_beam_set(&dw,x);

			se_set(SE02_T_SHOT2_2F2,x->mw.x);
		}
	}
}
/*=================================================================*/
static	void	Vulc_Wait(BOS12_WK *x){
/*=================================================================*/
	Move(x);
	if(x->sw.S_fg & ssss_end){
		x->sp = m_Vulc;
		SSSS_Anime_Set(&x->sw, BOS12_Vulc);
	}
}
/*=================================================================*/
static	void	Vulc(BOS12_WK *x){
/*=================================================================*/
	DELIVERY_WK dw;

	Move(x);
	x->s16w0++;
	if((x->p5_fg & fg_brk && x->p6_fg & fg_brk)
	|| x->s16w0>80*(10)){
		x->sp = m_Figt;
		SSSS_Anime_Set(&x->sw, BOS12_Wait);
		return;
	}
/*---------------*/
/* Arms Vulcan   */
/*---------------*/
	if(rest(x->s16w0,vulc_tym[LV5])==0){
		dw.Dobj_no = x->mw.obj_no;
		if((x->p5_fg&fg_brk)==0){
			dw.x = x->vul_L_pos[X];
			dw.y = x->vul_L_pos[Y];
			dw.Ds16w0 = 0x8000+x->mw.angz+(0xc000+LamANGZ);
	
			se_set(SE02_T_SHOT2_2F1, dw.x);

			if(rest(x->s16w0,vulc_tym[LV5]*2)==0){
				dw.Ds16w0 += 0x700;
				vul_set(&dw);
				dw.Ds16w0 -= 0x700*2;
				vul_set(&dw);
			}else{
				vul_set(&dw);
			}
		}
		if((x->p6_fg&fg_brk)==0){
			dw.x = x->vul_R_pos[X];
			dw.y = x->vul_R_pos[Y];
			dw.Ds16w0 = 0x8000+x->mw.angz-(0xc000+RamANGZ);
	
			se_set(SE02_T_SHOT2_2F1, dw.x);

			if(rest(x->s16w0,vulc_tym[LV5]*2)!=0){
				dw.Ds16w0 += 0x700;
				vul_set(&dw);
				dw.Ds16w0 -= 0x700*2;
				vul_set(&dw);
			}else{
				vul_set(&dw);
			}
		}
	}
/*---------------*/
/* Rain Beam Set */
/*---------------*/
	if(x->sw.S_fg & ssss_loop){
		x->s32w0 = 0;
	}
	dw.par    = 0x0000;	/* Type */
	if((x->s32w0 ==  0
	 || x->s32w0 == 15)
	){
		dw.Ds16w2 = 0x0006;	/* 1st Speed */

		dw.Ds16w0 = 0x3000+0x8000+x->mw.angz;	/* 1st angZ */
		rain_beam_set(&dw,x);
		dw.Ds16w0 = 0xd000+0x8000+x->mw.angz;	/* 1st angZ */
		rain_beam_set(&dw,x);

		se_set(SE_T_SHOT1,x->mw.x);
	}
	if((x->s32w0 ==  5
	 || x->s32w0 == 20)
	 && LV5>1){
		dw.Ds16w2 = 0x000a;	/* 1st Speed */

		dw.Ds16w0 = 0x4000+0x8000+x->mw.angz;	/* 1st angZ */
		rain_beam_set(&dw,x);
		dw.Ds16w0 = 0xc000+0x8000+x->mw.angz;	/* 1st angZ */
		rain_beam_set(&dw,x);

		se_set(SE_T_SHOT1,x->mw.x);
	}
	if((x->s32w0 == 10
	 || x->s32w0 == 25)
	 && LV5>0){
		dw.Ds16w2 = 0x0006;	/* 1st Speed */

		dw.Ds16w0 = 0x5000+0x8000+x->mw.angz;	/* 1st angZ */
		rain_beam_set(&dw,x);
		dw.Ds16w0 = 0xb000+0x8000+x->mw.angz;	/* 1st angZ */
		rain_beam_set(&dw,x);

		se_set(SE_T_SHOT1,x->mw.x);
	}
	x->s32w0++;
}

/*=================================================================*/
static	void	Meto(BOS12_WK *x){
/*=================================================================*/
	DELIVERY_WK dw;

	x->mw.z = comps32(x->mw.z, 0x0c*DEC, 0x4000);
	if(x->sw.S_fg & ssss_end){
		SSSS_Anime_Set(&x->sw, BOS12_Meto);
	}
	Move(x);
	x->s16w0++;
	if(x->s16w0>80*(10)){
		x->sp = m_Figt;
		SSSS_Anime_Set(&x->sw, BOS12_Wait);
		return;
	}
	if(x->p1_fg&fg_brk
	&& x->p2_fg&fg_brk
	&& x->p5_fg&fg_brk
	&& x->p6_fg&fg_brk){
		dw.Ds16w0 = 1;
	}else{
		dw.Ds16w0 = 0;
	}

	if(x->mw.z==0xc*DEC && rest(x->s16w0,meteo_tym[LV5]+dw.Ds16w0)==0){
		dw.Dobj_no = x->mw.obj_no;
		dw.x       = x->rain_pos[X];
		dw.y       = x->rain_pos[Y];
		dw.ang    = x->mw.angz;
		dw.Ds16w0 = (gtimer&8)/8;
		meteo_set(&dw);
	}
}
/*=================================================================*/
static	void	Msht(BOS12_WK *x){
/*=================================================================*/
	PLAY_OBJ	*pw;

	Move(x);

	pw = get_play0(&x->mw);
	if((abs(tang_dist_get(x->mw.angz+0x8000
						 ,get_ang(x,pw)))<0x1c00) 
	||(x->IDEON_L_sp&&x->IDEON_L_sp<40)||(x->IDEON_R_sp&&x->IDEON_R_sp<40)
	||x->s16w0>=80*4){
		x->s16w0++;
	}
	if(((x->p1_fg & fg_brk && x->p2_fg & fg_brk)
	|| x->s16w0>80*(6) || pw->mw.y<x->mw.y)
	&& x->IDEON_L_sp==0&&x->IDEON_R_sp==0){
		x->sp = m_Figt;
		return;
	}
	if(x->s16w0<80*(6-1) && rest(x->s16w0,80)==0){
		if(rest(x->s16w0, 80*2)==0){
			if((x->p1_fg & fg_brk)==0){
				x->IDEON_L_sp = 1;
				x->IDEON_X_sv = x->mw.angz;
				x->s32w0 = 0;
				x->s32w2 = 0x8000;
				x->s16w2 = +0xc00;	/* zoomx 1st spd */
				x->s16w4 = +0xc00;	/* zoomy 1st spd */
				tame_set(&x->p1_fg, fg_brk, &x->IDEON_L_pos[X], &x->mw.angz,
						 COL_RBLUE);
				SSSS_Anime_Set(&x->sw, BOS12_MshtL);
			}
		}else{
			if((x->p2_fg & fg_brk)==0){
				x->IDEON_R_sp = 1;
				x->IDEON_X_sv = x->mw.angz;
				x->s32w1 = 0;
				x->s32w3 = 0x8000;
				x->s16w3 = +0xc00;	/* zoomx 1st spd */
				x->s16w5 = +0xc00;	/* zoomy 1st spd */
				tame_set(&x->p2_fg, fg_brk, &x->IDEON_R_pos[X], &x->mw.angz,
						 COL_RBLUE);
				SSSS_Anime_Set(&x->sw, BOS12_MshtR);
			}
		}
	}
	if(x->IDEON_L_sp){
		if(x->p1_fg & fg_brk || x->s32w0<0){
			x->IDEON_L_sp=0;
		}else{
			x->IDEON_L_sp++;
			if(x->IDEON_L_sp==40){
				se_set(SE02_SHOTL2_2,x->IDEON_L_pos[X]);

				IDEON_S_set(&x->IDEON_L_sp, &x->IDEON_L_pos[X], &x->s32w0);
				IDEON_S_eft_set(&x->IDEON_L_pos[X], COL_RBLUE, x->mw.angz);
				x->s32w2 = 0x0000;
				x->angZspd = -0x180;
				x->angZssp = -0x040;
			}
			if(x->IDEON_L_sp>=40){
				x->s32w0 += x->s16w2;
				x->s16w2 -= IDEON_SWORD_zoomx[LV5];

				x->s32w2 += x->s16w4;
				if(x->s16w4>0){
					x->s16w4 -= 0x48;	/* Zoomy Speed */
				}
			}
		}
	}
	if(x->IDEON_R_sp){
		if(x->p2_fg & fg_brk || x->s32w1<0){
			x->IDEON_R_sp=0;
		}else{
			x->IDEON_R_sp++;
			if(x->IDEON_R_sp==40){
				se_set(SE02_SHOTL2_2,x->IDEON_R_pos[X]);

				IDEON_S_set(&x->IDEON_R_sp, &x->IDEON_R_pos[X], &x->s32w1);
				IDEON_S_eft_set(&x->IDEON_R_pos[X], COL_RBLUE, x->mw.angz);
				x->s32w3 = 0x0000;
				x->angZspd = +0x180;
				x->angZssp = +0x040;
			}
			if(x->IDEON_R_sp>=40){
				x->s32w1 += x->s16w3;
				x->s16w3 -= IDEON_SWORD_zoomx[LV5];

				x->s32w3 += x->s16w5;
				if(x->s16w5>0){
					x->s16w5 -= 0x48;	/* Zoomy Speed */
				}
			}
		}
	}
}

/*=================================================================*/
static	void	Dead(BOS12_WK *x){
/*=================================================================*/
	DELIVERY_WK	dw;

	x->angXspd = comps32(x->angXspd, -0x0c00, 0x08);
	x->angZspd = comps32(x->angZspd, +0x0200, 0x01);

	x->dx = comps32(x->dx, 0, 0x1000);
	x->dy = comps32(x->dy, 0, 0x1000);

	if(x->btimer==60){
		dw.x = x->mw.x;
		dw.y = x->mw.y;
		dw.z = x->mw.z;
		dw.ix= x;
		bbom_set(&dw);
	}
	x->mw.z += x->dz;
	x->dz = comps32(x->dz, +0x30000, 0x80);

	if(x->btimer > 60+150){
		x->mode = OBJ_M_KIE;
	}
}

/*============================================================================*/
/* ------------------------------------------                                 */
/*            Main Proc                                                       */
/* ------------------------------------------                                 */
/*============================================================================*/
/*=================================================================*/
static	void	(*step_tbl[])(BOS12_WK *x)={
/*=================================================================*/
#if	EDIT
	TEST,
#endif
/*- SONIC  ----------------------------*/
	DEMO,
	DEMO_1,
	DEMO_2,
	WAIT,
	BACK_TURN,
	IDEON_SWORD,
	DEAD,
	DEAD_WAIT,
/*- MUGNUM ----------------------------*/
	DEMO,
	DEMO_1,
	Wait,
	Dual,
	Rtrn,
	Figt_Wait,
	Demo,
	Demo_Wait,
	Figt,
	Vulc_Wait,
	Vulc,
	Meto,
	Msht,
	Dead,
};

/*=================================================================*/
void	bos12(BOS12_WK *x){
/*=================================================================*/
	u16	sp;
	s8	ZIBAKU_SUU;
	BOS12_WK	*ms;

	DELIVERY_WK	dw;

#if	MUTEKI_FG
	x->p0_life = P0_LIFE;
#endif
/*-----------------------------------------*/
	ms = get_letsGO(x);
	if(x->LG_fg==0){
		sp = s_DEAD;
		ZIBAKU_SUU = RT_zibaku_suu;
#if	GO_START
		x->zibaku  = 100;
#endif
	}else{
		sp = m_Dead;
		ZIBAKU_SUU = GO_zibaku_suu;
	}
	if(x->fg&0x80){
		bar_life(x->p0_life);
	}

	if(x->sp<sp && (x->p0_life <= 0 || x->zibaku>ZIBAKU_SUU)){
	/*---------------------------------*/
		x->mw.sys_fg = (SPR_DISP_CUT|ATARI_OFF_FG);

		if(x->LG_fg==0){
			ms->fg = 1;
			SCR_NextSection();
		}
	/*---------------------------------*/
		dw.x = x->mw.x;
		dw.y = x->mw.y;
		dw.z = x->mw.z;
		eft_boms_set(&dw);
	/*---------------------------------*/
		x->sp = sp;
		boss_dead_sub();
		x->p0_fg |= (fg_brk|fg_off);
		x->btimer = 0;
	/*---------------------------------*/
	/* Rate Bonus Calc */
		BOS_RATE = 0;

		if(x->p0_life <= 0){
			BOS_POINT = POINT;
			BOS_RATE += P0_RATE;
		}else{
			BOS_POINT = 0;
		}
		if(x->p1_life <= 0){
			BOS_RATE += P1_RATE;
		}
		if(x->p2_life <= 0){
			BOS_RATE += P2_RATE;
		}
		if(x->p3_life <= 0){
			BOS_RATE += P3_RATE;
		}
		if(x->p4_life <= 0){
			BOS_RATE += P4_RATE;
		}
		if(x->p5_life <= 0){
			BOS_RATE += P5_RATE;
		}
		if(x->p6_life <= 0){
			BOS_RATE += P6_RATE;
		}
	/*---------------------------------*/
		x->p0_life = 0;
		x->p1_life = 0;
		x->p2_life = 0;
		x->p3_life = 0;
		x->p4_life = 0;
		x->p5_life = 0;
		x->p6_life = 0;
	}
/*-----------------------------------------*/
	if(x->p1_brk_sp==0 && x->p1_life <= 0){
		x->p1_brk_sp++;
		x->p1_fg |= fg_brk;
	}
	if(x->p2_brk_sp==0 && x->p2_life <= 0){
		x->p2_brk_sp++;
		x->p2_fg |= fg_brk;
	}
	if(x->p3_brk_sp==0 && x->p3_life <= 0){
		x->p3_brk_sp++;
		x->p3_fg |= fg_brk;
	}
	if(x->p4_brk_sp==0 && x->p4_life <= 0){
		x->p4_brk_sp++;
		x->p4_fg |= fg_brk;
	}
	if(x->p5_brk_sp==0 && x->p5_life <= 0){
		x->p5_brk_sp++;
		x->p5_fg |= fg_brk;
	}
	if(x->p6_brk_sp==0 && x->p6_life <= 0){
		x->p6_brk_sp++;
		x->p6_fg |= fg_brk;
	}
/*-----------------------------------------*/
/* Main Proc */
	(*step_tbl[x->sp])(x);

	SSSS_Anime(&x->sw);

	x->mw.x    += x->dx;
	x->mw.y    += x->dy;
	x->mw.z    += x->dz;
	x->mw.angx += x->angXspd;
	x->mw.angy += x->angYspd;
	x->mw.angz += x->angZspd;
/*-----------------------------------------*/
/* Parts Break Proc */
	if(x->p1_brk_sp && (x->p1_brk_sp-1 < p1_suu)){
		if(boss_brk_sub(&x->p1_posi[(x->p1_brk_sp-1)*XYZ], 8, 4)){
			x->p1_brk_sp++;
		}
	}
	if(x->p2_brk_sp && (x->p2_brk_sp-1 < p2_suu)){
		if(boss_brk_sub(&x->p2_posi[(x->p2_brk_sp-1)*XYZ], 8, 4)){
			x->p2_brk_sp++;
		}
	}
	if(x->p3_brk_sp && (x->p3_brk_sp-1 < p3_suu)){
		if(boss_brk_sub(&x->p3_posi[(x->p3_brk_sp-1)*XYZ], 8, 4)){
			x->p3_brk_sp++;
		}
	}
	if(x->p4_brk_sp && (x->p4_brk_sp-1 < p4_suu)){
		if(boss_brk_sub(&x->p4_posi[(x->p4_brk_sp-1)*XYZ], 8, 4)){
			x->p4_brk_sp++;
		}
	}
	if(x->p5_brk_sp && (x->p5_brk_sp-1 < p5_suu)){
		if(boss_brk_sub(&x->p5_posi[(x->p5_brk_sp-1)*XYZ], 8, 4)){
			x->p5_brk_sp++;
		}
	}
	if(x->p6_brk_sp && (x->p6_brk_sp-1 < p6_suu)){
		if(boss_brk_sub(&x->p6_posi[(x->p6_brk_sp-1)*XYZ], 8, 4)){
			x->p6_brk_sp++;
		}
	}
	x->btimer++;

	x->fg &= -0xc000-1;	/* For Side Bits Comunication */
}

/*============================================================================*/
/* ------------------------------------------                                 */
/*            Polygon Disp                                                    */
/* ------------------------------------------                                 */
/*============================================================================*/
#if	SCR_DBG
/*=================================================================*/
static	void	test_hit(ENM_WK *x){
/*=================================================================*/
	x->mw.y -= SC_DY;
	if(x->mw.y>(+0x80*DEC+(+0x80*DEC/2))){
		x->mode = OBJ_M_KIE;
	}
}
/*=================================================================*/
static	void	test_hit_disp(MAIN_WK *mw){
/*=================================================================*/
	ENM_WK	*x;
	MAIN_WK	m;
	s16	pos[4][XY];

	x = (ENM_WK *)((u32)mw-0x10);

	mw_init(&m);

	m.sys_fg	= POLYGON_DISP_FG;
	m.poly_adr	= pos;
	m.pri_ofs	= PRI_ENM;
	m.color_m	= char_tbl[CHAR_EFT].color+COL_YRED+8;

	m.x = x->mw.x;
	m.y = x->mw.y;
	m.z	= 0;

	pos[0][X]	= -0x40;
	pos[0][Y]	= -0x40;
	pos[1][X]	= +0x40;
	pos[1][Y]	= -0x40;
	pos[2][X]	= +0x40;
	pos[2][Y]	= +0x40;
	pos[3][X]	= -0x40;
	pos[3][Y]	= +0x40;

	spr_put(&m);
}
/*=================================================================*/
static	ATARI_TBL	at_test[]={
/*=================================================================*/
	{(ATFG_ATTACK               ),	AT_BODY,+0x00,+0x00,0x40,0x40,},
	{(ATFG_DAMAGE | ATFG_TBL_END),	DM_NML, +0x00,+0x00,0x40,0x40,},
};
/*=================================================================*/
static	void	test_hit_set(s32 XP, s32 YP){
/*=================================================================*/
	s8		i;
	ENM_WK	*p;
/*--------------------------------------------------------*/
	i = ENM_OBJ_get();
	if(i == DUMMY_OBJ)	return;
	p = obj_set(ENM_OBJ_AREA,obj_size(sizeof(ENM_WK)),enm);
	if(p == NULL)		return;
/*--------------------------------------------------------*/
	mw_init(&p->mw);
	aw_init(&p->aw);
	ENM_WK_init(p);

	p->mw.dousa_func	= test_hit;
	p->mw.sys_fg	   |= (MODEL_DISP_FG|MODEL_FUNC_CALL_FG);
	p->mw.sys_fg	   |= (ATARI_MUTEKI_FG|ATARI_STEALTH_FG);
	p->mw.poly_adr		= test_hit_disp;
	p->mw.obj_no	    = i;
	obj_x[p->mw.obj_no]	= p;

	p->aw.atari_tbl_adr	= at_test;
	p->aw.life          = 10;

	p->aw.nakama	= NAKAMA_KABE;
	p->aw.zoku 		= ZOKU_NORMAL;

	p->mw.x = XP;
	p->mw.y = YP;
}

#endif

/*=================================================================*/
static	void	bos12_disp(MAIN_WK *mw){
/*=================================================================*/
	BOS12_WK	*x;
	u16	i,*fg,LG;
	s16	*p;
	s32	s32w0,ofsX;
	MAIN_WK		b;
	FIXED	IDE_L_pos[XYZ*4];
	FIXED	IDE_R_pos[XYZ*4];

#if	SCR_DBG
	MAIN_WK	m;
	s16	pos[4][XY];
#endif
/*----------------------------------------------------------------------------*/
	x = (BOS12_WK *)((u32)mw-0x10);
/*----------------------------------------------------------------------------*/
	if(x->LG_fg){
		LG = 0;
		ofsX = 0;
	}else{
		LG = M_MAGNUM_BREST_R;
		ofsX = x->IDEON_X*DEC;
	}
/*----------------------------------------------------------------------------*/
/*  Scroll Debug                                                              */
/*----------------------------------------------------------------------------*/
#if	SCR_DBG
	mw_init(&m);

	m.sys_fg	= POLYLINE_DISP_FG;
	m.poly_adr	= pos;
	m.pri_ofs	= PRI_SYS;
	m.color_m	= char_tbl[CHAR_EFT].color+COL_YRED;

	m.x	= 0;
	m.z	= 0;

	pos[0][X]	= -0x80;
	pos[0][Y]	= 0;
	pos[1][X]	= +0x80;
	pos[1][Y]	= 0;
	pos[2][X]	= +0x80;
	pos[2][Y]	= 0;
	pos[3][X]	= -0x80;
	pos[3][Y]	= 0;

	m.y		= -x->scr_y[0];
	spr_put(&m);
	m.y		= -x->scr_y[1];
	spr_put(&m);
#endif
/*----------------------------------------------------------------------------*/
/*  Damage Flag Proc                                                          */
/*----------------------------------------------------------------------------*/
	fg = &x->p0_fg;
	for(i=0; i<((8-2)+1); i++,fg++){
		if(*(fg) & fg_dmg_on)
			*(fg) &= -(fg_dmg_on + fg_dmg)-1;
		if(*(fg) & fg_dmg)
			*(fg) |=   fg_dmg_on;
	}
/*----------------------------------------------------------------------------*/
/*  Ideon Sword                                                               */
/*----------------------------------------------------------------------------*/
	if(x->IDEON_L_sp || x->IDEON_R_sp){
		if(v_timer&7){
			if(x->LG_fg){
				i = COL_RBLUE;
			}else{
				i = COL_RRED;
			}
		}else{
			if(x->LG_fg){
				i = COL_BLUE2;
			}else{
				i = COL_YRED;
			}
		}
		model_col_set(CHAR_MEFT,M_EFFECT_HADOUHOU,
						 char_tbl[CHAR_EFT].color + i);
	}
/*----------------------------------------------------------------------------*/
/*  Master Body                                                               */
/*----------------------------------------------------------------------------*/
	slPushMatrix();	/* PUSH 0 */
	slTranslate(x->mw.x,x->mw.y,x->mw.z);

	slPushMatrix();	/* PUSH */
	slRotZ(x->mw.angz);
	slRotX(x->mw.angx+MasANGZ);
	slRotY(x->mw.angy+MasANGY);
	slTranslate(0,-0x20*DEC,-0x10*DEC);
	p = &p0_posi_data[0];				/* Basic XYZ Data */
	for(i=0; i<p0_suu*3; p+=4,i+=3){
		slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
		            &x->p0_posi[i]);		/* Trans XYZ Data */
	}
	if((x->p0_fg & fg_off)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_BODY+LG][x->p0_fg&fg_dmg]);

		slCalcPoint(0,0,0,&x->rain_pos[X]);
	}
/*----------------------------------------------------------------------------*/
/*  Breat Parts L                                                             */
/*----------------------------------------------------------------------------*/
	slPushMatrix();	/* PUSH 1 */
	slTranslate(+0x010*DEC+x->IDEON_X*DEC,+0x000*DEC+(LwgPOSX*0x020),
	            +0x000*DEC+(LwgPOSX*0x040));

	slPushMatrix();	/* PUSH 2 */
	slRotX(BstANGX);
	slRotY(BstANGY);
	slTranslate(+0x000*DEC,-0x010*DEC,+0x000*DEC);
	p = &p1_posi_data[0];
	for(i=0; i<p1_suu*3; p+=4,i+=3){
		slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
		            &x->p1_posi[i]);
	}
	if((x->p1_fg & fg_off)==0){
		if((x->p1_fg & fg_brk)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_BREST_L+LG][x->p1_fg&fg_dmg]);
		}else{
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_BREST_L_DMG+LG][0]);
		}
	/*-------------*/
	/* Ideon Sword */
	/*-------------*/
		if(x->IDEON_L_sp){
			slPushMatrix();	/* PUSH */
			slRotY(v_timer*-0x0830);
			slScale(x->s32w0,x->s32w2,x->s32w0);
			slTranslate(+0x000*DEC,-0x00c*DEC,+0x000*DEC);
			slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_MEFT].header_adr)
						   ->pdata_tbl[M_EFFECT_HADOUHOU][0]);

			if(gtimer&1&&x->IDEON_L_sp>40){
				s32w0 = -(0x14+0x1c)*DEC;
			}else{
				s32w0 = -0x14*DEC;
			}
			for(i=0; i<4; i++){
				slCalcPoint(0,(i*-0x1c*2*DEC)+s32w0,0,&x->IDEON_L_pos[i*XYZ]);
			}
			for(i=0; i<4; i++){
				slCalcPoint(0,-abs(get_rand(x->s32w2*0x160)),0,&IDE_L_pos[i*XYZ]);
			}
			slPopMatrix();	/* POP */
		}
	}
	slPopMatrix();	/* PUSH 2 */
	slPopMatrix();	/* PUSH 1 */
/*----------------------------------------------------------------------------*/
/*  Breat Parts R                                                             */
/*----------------------------------------------------------------------------*/
	slPushMatrix();	/* PUSH 3 */
	slTranslate(-0x010*DEC-(x->IDEON_X*DEC),+0x000*DEC+(LwgPOSX*0x020),
	            +0x000*DEC+(LwgPOSX*0x040));

	slPushMatrix();	/* PUSH 4 */
	slRotX(BstANGX);
	slRotY(-BstANGY);
	slTranslate(+0x000*DEC,-0x010*DEC,+0x000*DEC);
	p = &p2_posi_data[0];
	for(i=0; i<p2_suu*3; p+=4,i+=3){
		slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
		            &x->p2_posi[i]);
	}
	if((x->p2_fg & fg_off)==0){
		if((x->p2_fg & fg_brk)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_BREST_R+LG][x->p2_fg&fg_dmg]);
		}else{
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_BREST_R_DMG+LG][0]);
		}
	/*-------------*/
	/* Ideon Sword */
	/*-------------*/
		if(x->IDEON_R_sp){
			slPushMatrix();	/* PUSH */
			slRotY(v_timer*+0x0830);
			slScale(x->s32w1,x->s32w3,x->s32w1);
			slTranslate(+0x000*DEC,-0x00c*DEC,+0x000*DEC);
			slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_MEFT].header_adr)
						   ->pdata_tbl[M_EFFECT_HADOUHOU][0]);

			if(gtimer&1&&x->IDEON_R_sp>40){
				s32w0 = -(0x14+0x1c)*DEC;
			}else{
				s32w0 = -0x14*DEC;
			}
			for(i=0; i<4; i++){
				slCalcPoint(0,(i*-0x1c*2*DEC)+s32w0,0,&x->IDEON_R_pos[i*XYZ]);
			}
			for(i=0; i<4; i++){
				slCalcPoint(0,-abs(get_rand(x->s32w3*0x160)),0,&IDE_R_pos[i*XYZ]);
			}
			slPopMatrix();	/* POP */
		}
	}
	slPopMatrix();	/* PUSH 4 */
	slPopMatrix();	/* PUSH 3 */
/*----------------------------------------------------------------------------*/
/*  Wings Parts L                                                             */
/*----------------------------------------------------------------------------*/
	slPushMatrix();	/* PUSH 5 */
	slTranslate(+0x010*DEC+(LwgPOSX*0x100)+ofsX,
	            +0x008*DEC-(LwgPOSX*0x060),+0x000*DEC);

	slPushMatrix();	/* PUSH 6 */
	slTranslate(+0x000*DEC,+0x000*DEC,+0x000*DEC);
	slRotZ(LwgANGZ);
	slRotY(LwgANGY);
	p = &p3_posi_data[0];
	for(i=0; i<p3_suu*3; p+=4,i+=3){
		slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
		            &x->p3_posi[i]);
	}
	if((x->p3_fg & fg_off)==0){
		if((x->p3_fg & fg_brk)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_KATA_L+LG][x->p3_fg&fg_dmg]);
		slCalcPoint(+0x8*DEC,+0x40*DEC,0,&x->wng_L_pos[X]);
	/*--------------------------------------------------------------*/
	/* Omake Wing                                                   */
	/*--------------------------------------------------------------*/
		slPushMatrix();
		slTranslate(+0x014*DEC,+0x030*DEC,+0x008*DEC);
		if(x->mw.angy>0){
			slRotY(x->mw.angy);
		}
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_HANE_L+LG][x->p3_fg&fg_dmg]);
		slPopMatrix();

		}else{
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_KATA_L_DMG+LG][0]);
		}
	}
	/*------------------------------------------------------------------------*/
	/* Arm Parts L                                                            */
	/*------------------------------------------------------------------------*/
		slPushMatrix();	/* PUSH 7 */
		slTranslate(-0x004*DEC+(LamPOSX*0x040)-ofsX,
				    +0x00e*DEC+(LamPOSX*0x100),+0x000*DEC);

		slPushMatrix();	/* PUSH 8 */
		slRotZ(LamANGZ);
		slRotX(LamANGX);
		slTranslate(-0x000*DEC,+0x00a*DEC,0x000*DEC);
		p = &p5_posi_data[0];
		for(i=0; i<p5_suu*3; p+=4,i+=3){
			slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
			            &x->p5_posi[i]);
		}
		if((x->p5_fg & (fg_off|fg_brk))==0){
			slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
						   ->pdata_tbl[M_SONIC_ARM_L+LG][x->p5_fg&fg_dmg]);
			slCalcPoint(0,+0x8*DEC,0,&x->vul_L_pos[X]);
		}
		slPopMatrix();	/* PUSH 8 */
		slPopMatrix();	/* PUSH 7 */
	/*------------------------------------------------------------------------*/
	slPopMatrix();	/* PUSH 6 */
	slPopMatrix();	/* PUSH 5 */
/*----------------------------------------------------------------------------*/
/*  Wings Parts R                                                             */
/*----------------------------------------------------------------------------*/
	slPushMatrix();	/* PUSH 9 */
	slTranslate(-0x010*DEC-(LwgPOSX*0x100)-ofsX,
	            +0x008*DEC-(LwgPOSX*0x060),+0x000*DEC);

	slPushMatrix();	/* PUSH 10*/
	slTranslate(-0x000*DEC,+0x000*DEC,+0x000*DEC);
	slRotZ(-LwgANGZ);
	slRotY(-LwgANGY);
	p = &p4_posi_data[0];
	for(i=0; i<p4_suu*3; p+=4,i+=3){
		slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
		            &x->p4_posi[i]);
	}
	if((x->p4_fg & fg_off)==0){
		if((x->p4_fg & fg_brk)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_KATA_R+LG][x->p4_fg&fg_dmg]);
		slCalcPoint(-0x8*DEC,+0x40*DEC,0,&x->wng_R_pos[X]);
	/*--------------------------------------------------------------*/
	/* Omake Wing                                                   */
	/*--------------------------------------------------------------*/
		slPushMatrix();
		slTranslate(-0x014*DEC,+0x030*DEC,+0x008*DEC);
		if(x->mw.angy<0){
			slRotY(x->mw.angy);
		}
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_HANE_R+LG][x->p4_fg&fg_dmg]);
		slPopMatrix();

		}else{
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_KATA_R_DMG+LG][0]);
		}
	}
	/*------------------------------------------------------------------------*/
	/* Arm Parts R                                                            */
	/*------------------------------------------------------------------------*/
		slPushMatrix();	/* PUSH 11*/
		slTranslate(+0x004*DEC-(LamPOSX*0x040)+ofsX,
				    +0x00e*DEC+(LamPOSX*0x100),+0x000*DEC);

		slPushMatrix();	/* PUSH 12*/
		slRotZ(-RamANGZ);
		slRotX(+RamANGX);
		slTranslate(-0x000*DEC,+0x00a*DEC,0x000*DEC);
		p = &p6_posi_data[0];
		for(i=0; i<p6_suu*3; p+=4,i+=3){
			slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
			            &x->p6_posi[i]);
		}
		if((x->p6_fg & (fg_off|fg_brk))==0){
			slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
						   ->pdata_tbl[M_SONIC_ARM_R+LG][x->p6_fg&fg_dmg]);
			slCalcPoint(0,+0x8*DEC,0,&x->vul_R_pos[X]);
		}
		slPopMatrix();	/* PUSH 12*/
		slPopMatrix();	/* PUSH 11*/
	/*------------------------------------------------------------------------*/
	slPopMatrix();	/* PUSH 10*/
	slPopMatrix();	/* PUSH 9 */
/*----------------------------------------------------------------------------*/
/*  Reg   Parts  L                                                            */
/*----------------------------------------------------------------------------*/
	slPushMatrix();
	slTranslate(+0x013*DEC+(LwgPOSX*0x020),
				+0x020*DEC-(LwgPOSX*0x020),+0x015*DEC+(LrgPOSZ)*0x100);

	slPushMatrix();
	slRotX(LrgANGX);
	slRotZ(LrgANGZ);
	slRotY(LrgANGY);
	slTranslate(+0x000*DEC,+0x000*DEC,+0x000*DEC);
	p = &p7_posi_data[0];
	for(i=0; i<p7_suu*3; p+=4,i+=3){
		slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
		            &x->p7_posi[i]);
	}
	if((x->p0_fg & fg_off)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_LEG_L+LG][x->p0_fg&fg_dmg]);

		/* Back Fire Point */
		slCalcPoint( 0x0000*DEC,
		            (+0x0028+(RAND&3)+(rest(v_timer,3))*0x08)*DEC,
		             0x0008*DEC,
		            &x->p7_fire[0]);		/* Trans XYZ Data */
	}
	slPopMatrix();
	slPopMatrix();
/*----------------------------------------------------------------------------*/
/*  Reg   Parts  R                                                            */
/*----------------------------------------------------------------------------*/
	slPushMatrix();
	slTranslate(-0x013*DEC-(LwgPOSX*0x020),
				+0x020*DEC-(LwgPOSX*0x020),+0x015*DEC+(LrgPOSZ)*0x100);

	slPushMatrix();
	slRotX(RrgANGX);
	slRotZ(-RrgANGZ);
	slRotY(-RrgANGY);
	slTranslate(-0x000*DEC,+0x000*DEC,+0x000*DEC);
	p = &p8_posi_data[0];
	for(i=0; i<p8_suu*3; p+=4,i+=3){
		slCalcPoint(*(p+X)*DEC,*(p+Y)*DEC,*(p+Z)*DEC,
		            &x->p8_posi[i]);
	}
	if((x->p0_fg & fg_off)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_LEG_R+LG][x->p0_fg&fg_dmg]);

		/* Back Fire Point */
		slCalcPoint( 0x0000*DEC,
		            (+0x0028+(RAND&3)+(rest(v_timer,3))*0x08)*DEC,
		             0x0008*DEC,
		            &x->p8_fire[0]);		/* Trans XYZ Data */
	}
	slPopMatrix();
	slPopMatrix();
/*----------------------------------------------------------------------------*/
/*  Tail  Parts                                                               */
/*----------------------------------------------------------------------------*/
	slPushMatrix();
	slTranslate(+0x000*DEC,+0x01e*DEC,-0x00a*DEC);

	slPushMatrix();
	slRotX(TilANGX);
	slTranslate(+0x000*DEC,+0x000*DEC,+0x000*DEC);
	if((x->p0_fg & fg_off)==0){
		slPutPolygonS((void *)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)
					   ->pdata_tbl[M_SONIC_SHIPPO+LG][x->p0_fg&fg_dmg]);
	}
	slPopMatrix();
	slPopMatrix();
/*----------------------------------------------------------------------------*/
	slPopMatrix();	/* PUSH */
	slPopMatrix();	/* PUSH 0 */

/*----------------------------------------------------------------------------*/
/*  Ideon Elec                                                                */
/*----------------------------------------------------------------------------*/
	if(x->IDEON_L_sp>40
	|| x->IDEON_R_sp>40){
		mw_init(&b);
		b.sys_fg    = RAND&MESH_ON;
		b.angz		= x->mw.angz;
		b.char_no	= CHAR_EFT;
		b.pri_ofs	= PRI_INU;
		b.zoomy	    = 0xc000;
		b.anm_no	= A_DENKI0+(RAND&0xf);
		if(x->LG_fg){
			b.color_m	= char_tbl[CHAR_EFT].color + COL_E_BLUE;
		}else{
			b.color_m	= char_tbl[CHAR_EFT].color + COL_E_RED;
		}
		if(x->IDEON_L_sp>40){
			b.zoomx 	= x->s32w0+0x6000;
			for(i=0; i<4; i++){
				b.x			= IDE_L_pos[XYZ*i+X];
				b.y			= IDE_L_pos[XYZ*i+Y];
				b.z			= IDE_L_pos[XYZ*i+Z]-0xb0*DEC;
				spr_put(&b);
			}
		}
		if(x->IDEON_R_sp>40){
			b.zoomx 	= x->s32w1+0x6000;
			for(i=0; i<4; i++){
				b.x			= IDE_R_pos[XYZ*i+X];
				b.y			= IDE_R_pos[XYZ*i+Y];
				b.z			= IDE_R_pos[XYZ*i+Z]-0xb0*DEC;
				spr_put(&b);
			}
			spr_put(&b);
		}
	}
/*----------------------------------------------------------------------------*/
/*  Backed Fire                                                               */
/*----------------------------------------------------------------------------*/
	if((x->p0_fg & fg_off)==0){
		mw_init(&b);

		b.zoomx 	= (rest(v_timer,3)*0x3000)+0x4000+((RAND&0xf)*0x300);
		b.zoomy		= fixmuls(b.zoomx,0x14000);
		b.angz      = x->mw.angz;
		b.char_no	= CHAR_EFT;
		b.pri_ofs	= 0;

		switch(rest(v_timer,3)){
			case	0:
				if(LG){
					b.color_m	= char_tbl[CHAR_EFT].color + COL_YELLOW;
				}else{
					b.color_m	= char_tbl[CHAR_EFT].color + COL_BLUE2;
				}
				b.anm_no	= A_MARU0;
				break;
			case	1:
				if(LG){
					b.color_m	= char_tbl[CHAR_EFT].color + COL_YRED;
				}else{
					b.color_m	= char_tbl[CHAR_EFT].color + COL_BLUE;
				}
				b.anm_no	= A_MARU1;
				break;
			case	2:
				b.sys_fg |= MESH_ON;
				if(LG){
					b.color_m	= char_tbl[CHAR_EFT].color + COL_E_RED;
				}else{
					b.color_m	= char_tbl[CHAR_EFT].color + COL_E_BLUE;
				}
				b.anm_no	= A_MARU1;
		}
		if(v_timer&1){
			b.x	= x->p8_fire[X];
			b.y	= x->p8_fire[Y];
			b.z	= x->p8_fire[Z]-0xb0*DEC;
			spr_put(&b);
			b.x	= x->p7_fire[X];
			b.y	= x->p7_fire[Y];
			b.z	= x->p7_fire[Z]-0xb0*DEC;
			spr_put(&b);
		}else{
			b.x	= x->p7_fire[X];
			b.y	= x->p7_fire[Y];
			b.z	= x->p7_fire[Z]-0xb0*DEC;
			spr_put(&b);
			b.x	= x->p8_fire[X];
			b.y	= x->p8_fire[Y];
			b.z	= x->p8_fire[Z]-0xb0*DEC;
			spr_put(&b);
		}
	}
}


/*============================================================================*/
/* ------------------------------------------                                 */
/*            Init Main                                                       */
/* ------------------------------------------                                 */
/*============================================================================*/
/*=================================================================*/
static	void	bos12_set_S(BOS12_WK *x){
/*=================================================================*/
	x->sp = s_DEMO;

	x->runHundle = 0x40;
	x->runZ = 0;
	x->runsgt = 0x20;
	x->runspd = -SC_DY;
	x->runXpos = 0;
	x->runYpos = (-0x40+0x20)*DEC;

	x->scr_command = SC_ZERO;
	x->scr_step = 0;
	x->scr_p[0] = SC_ZERO;
	x->scr_p[1] = SC_ZERO;
	x->scr_y[0] = +0x80*DEC;
	x->scr_y[1] = +0x00*DEC;
	x->scr_rand[0] = +1;
	x->scr_rand[1] = +1;
	x->scr_shut = 0;

	x->fg = 0x80;
	bar_set(P0_LIFE);

	M_hit_off(x);
	se_set(SE02_APPEAR2_2,0);
}
/*=================================================================*/
static	void	bos12_set_M(BOS12_WK *x){
/*=================================================================*/
	x->sp = m_DEMO;
	x->mw.angy = 0x8000;

#if	SCR_DBG
	x->scr_y[0] = +0x180*DEC;
	x->scr_y[1] = +0x080*DEC;
#endif
	M_hit_off(x);
}

/*=================================================================*/
static	void	bos12_hitset(BOS12_WK *x){
/*=================================================================*/
	x->p0_fg       = 0;
	x->p0_brk_sp   = 0;
	x->p0_posi_num = 0;		/* For EDIT */
	x->p0_menu     = 0;		/* For EDIT */
	x->p0_life     = P0_LIFE;

	HIT3D_SET(    p0_suu,
			  &x->p0_posi[0],
			  &x->p0_fg,
			  &x->p0_life,
			  &   p0_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	x->p1_fg       = 0;
	x->p1_brk_sp   = 0;
	x->p1_life     = P1_LIFE;
	HIT3D_SET(    p1_suu,
			  &x->p1_posi[0],
			  &x->p1_fg,
			  &x->p1_life,
			  &   p1_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	x->p2_fg       = 0;
	x->p2_brk_sp   = 0;
	x->p2_life     = P2_LIFE;
	HIT3D_SET(    p2_suu,
			  &x->p2_posi[0],
			  &x->p2_fg,
			  &x->p2_life,
			  &   p2_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	x->p3_fg       = 0;
	x->p3_brk_sp   = 0;
	x->p3_life     = P3_LIFE;
	HIT3D_SET(    p3_suu,
			  &x->p3_posi[0],
			  &x->p3_fg,
			  &x->p3_life,
			  &   p3_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	x->p4_fg       = 0;
	x->p4_brk_sp   = 0;
	x->p4_life     = P4_LIFE;
	HIT3D_SET(    p4_suu,
			  &x->p4_posi[0],
			  &x->p4_fg,
			  &x->p4_life,
			  &   p4_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	x->p5_fg       = 0;
	x->p5_brk_sp   = 0;
	x->p5_life     = P5_LIFE;
	HIT3D_SET(    p5_suu,
			  &x->p5_posi[0],
			  &x->p5_fg,
			  &x->p5_life,
			  &   p5_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	x->p6_fg       = 0;
	x->p6_brk_sp   = 0;
	x->p6_life     = P6_LIFE;
	HIT3D_SET(    p6_suu,
			  &x->p6_posi[0],
			  &x->p6_fg,
			  &x->p6_life,
			  &   p6_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	HIT3D_SET(    p7_suu,
			  &x->p7_posi[0],
			  &x->p0_fg,
			  &x->p0_life,
			  &   p7_posi_data[0],
			  x->mw.obj_no);
/*-----------------------------------------------*/
	HIT3D_SET(    p8_suu,
			  &x->p8_posi[0],
			  &x->p0_fg,
			  &x->p0_life,
			  &   p8_posi_data[0],
			  x->mw.obj_no);
}

/*=================================================================*/
static	void	bos12_set_sub(BOS12_WK *x, s8 nB, u8 LG){
/*=================================================================*/
	/* Works Init */
	mw_init(&x->mw);
	aw_init(&x->aw);
/*-----------------------------------------------*/
	x->mw.dousa_func	= bos12;
	x->mw.sys_fg	   |= (MODEL_DISP_FG|MODEL_FUNC_CALL_FG|ATARI_OFF_FG);
	x->mw.poly_adr		= bos12_disp;

	x->LG_fg = LG;
	x->LG_no = nB;

/*-----------------------------------------------*/
	x->mw.x = +0x000*DEC;
  	x->mw.y = +0x120*DEC;
	x->mw.z = -0x060*DEC;
	x->dx = 0;
	x->dy = 0;
	x->dz = 0;

	x->angXspd = 0;
	x->angXssp = 0;
	x->angYspd = 0;
	x->angYssp = 0;
	x->angZspd = 0;
	x->angZssp = 0;

	x->btimer = 0;
	x->fg = 0;
	x->proc_step = 0;
	x->proc_wait = 0;
	x->zibaku = 0;

/*-----------------------------------------------*/
	if(LG==0){
		bos12_hitset(x);
		bos12_set_S(x);
	}else{
		bos12_hitset(x);
		bos12_set_M(x);
	}
	x->IDEON_L_sp = 0;
	x->IDEON_R_sp = 0;
	x->IDEON_X = 0;

/*--------------------------------------*/
/* SSSS Init */
	x->sw.S_Chain_suu = BOS12_Chain_suu;
	x->sw.S_mot_buf   = &x->mot_buf[0];
	x->sw.S_spd_buf   = &x->spd_buf[0];
	x->sw.S_ent_adr   = BOS12_mot_ent_tbl;

	SSSS_Mot_Set(&x->sw, BOS12_Mot_0000);
	SSSS_Anime_Set(&x->sw, BOS12_WAIT);
	SSSS_Anime(&x->sw);

#if	EDIT
	x->sp = s_TEST;
	x->ew.edit_anm_adr = &BOS12_TRNS[0];
	x->ew.sp = 0;
	x->ew.parts_num = 0;
	x->mw.x = 0;
	x->mw.y = 0;
	x->mw.z = +0x10*DEC;
	SSSS_Anime_Set(&x->sw, x->ew.edit_anm_adr);
#endif
}

/*=================================================================*/
s8	bos12_set(void){
/*=================================================================*/
	BOS12_WK	*xL,*xG;
	s8			 iL,iG;
	u16	i;

	iL = ENM_OBJ_get();
	if(iL == DUMMY_OBJ)	return	0;
	xL = obj_set(ENM_OBJ_AREA,obj_size(sizeof(BOS12_WK)),enm);
	if(xL == NULL)		return	0;
	xL->mw.obj_no	    = iL;
	obj_x[xL->mw.obj_no]= xL;

#if	!EDIT
	iG = ENM_OBJ_get();
	if(iG == DUMMY_OBJ)	return	0;
	xG = obj_set(ENM_OBJ_AREA,obj_size(sizeof(BOS12_WK)),enm);
	if(xG == NULL)		return	0;
	xG->mw.obj_no	    = iG;
	obj_x[xG->mw.obj_no]= xG;
#endif

/*-----------------------------------------------*/
/*	Lets                                         */
/*-----------------------------------------------*/
	bos12_set_sub(xL,iG,0);

/*-----------------------------------------------*/
/*	GO                                           */
/*-----------------------------------------------*/
#if	!EDIT
	bos12_set_sub(xG,iL,1);
#endif

	for(i=M_MAGNUM_BREST_R; i<M_SONIC_END; i++){
		model_col_set(CHAR_SONIC,i,
						get_look_colno(CHAR_SONIC) + COL_MAGNUM);
	}
	return	iG;
}





0xDB400

This is part of an objdump listing.

etNbg0
00002ce8  .text      00002ce8 _SCR_2_1d_ctrl
00016be4  .control   06056be4 _hit3D
0002de70  .control   0606de70 _slSpecialCCalcModeNbg0
0002de78  .control   0606de78 _slSpecialCCalcModeNbg3
060fff60  *ABS*      060fff60 _DAR1
060ffdf8  *ABS*      060ffdf8 _rb_char_adr
0600406c  *ABS*      0600406c _PCM_WkSize
00000040  COMMON     00000040 _tim0_pos
06008a58  *ABS*      06008a58 _f_title
060ffdc0  *ABS*      060ffdc0 _VDP2_CCRSA
060ffd92  *ABS*      060ffd92 _VDP2_WCTLB
00023618  .control   06063618 _set_laser_hit
06009434  *ABS*      06009434 _f_st24_tne
00021014  .control   06061014 _disp_string8
00014c18  .control   06054c18 _eshot04_set_cstm
060ffcd4  *ABS*      060ffcd4 _VDP2_CYCA1L
06008028  *ABS*      06008028 ___ashiftrt_r4_2
00000614  .data      00004534 _houmon1
0000662c  .control   0604662c _bef_link_dmc
060ffcde  *ABS*      060ffcde _VDP2_CYCB1U
060ffefc  *ABS*      060ffefc _Window1_data
000269d0  .control   060669d0 ___gesf2
060ffca8  *ABS*      060ffca8 _DMASetFlag
060fff2c  *ABS*      060fff2c _Center2_data
0001e178  .control   0605e178 _init_objscr
06009104  *ABS*      06009104 _f_ed_bg05
000066f8  .text      000066f8 _SCR_2_6c_ctrl
06008b6c  *ABS*      06008b6c _f_demo43
060092bc  *ABS*      060092bc _f_stg2_tne_m
00029714  .control   06069714 _slCos
060ffcd2  *ABS*      060ffcd2 _VDP2_CYCA0U
00021714  .control   06061714 _set_kaiwa_int_func
0000089c  .text      0000089c _SONIC_set
00008418  .contbss   0607bd88 _weapon_level
0001e0e8  .control   0605e0e8 _scroll_system_stop
00003ee4  .text      00003ee4 _SCR_2_3_n0_sub
00019528  .control   06059528 _boss_brk_sub
0002d840  .control   0606d840 _slIncMatrixPtr
00018de0  .control   06058de0 _eft_moon_set
06008b24  *ABS*      06008b24 _f_demo31
00032dd8  .control   06072dd8 _anm_hibana02
000015e4  .data      00005504 _tail_anmpat
060ffd6c  *ABS*      060ffd6c _VDP2_BKTA
000187a0  .control   060587a0 _bbom
00022f88  .control   06062f88 _model_gour_set
060ffc0c  *ABS*      060ffc0c _EventCount
0001ecb8  .control   0605ecb8 _Map2VRAM
06008e00  *ABS*      06008e00 _f_nurse
00000000  SLPROG     00000000 _slZoomR
000080d4  .control   060480d4 _player_set
0600ed28  *ABS*      0600ed28 _v_timer
000023a0  .text      000023a0 _enm05_2
060fff16  *ABS*      060fff16 _Window2_Bottom
00002244  .text      00002244 _nise_set
06009394  *ABS*      06009394 _f_st10_tne
00016ff4  .control   06056ff4 _rot_sub
06007ff2  *ABS*      06007ff2 ___ashiftrt_r4_24
06035010  *ABS*      06035010 _set_imask
00008420  .contbss   0607bd90 _load_end_ram_adr
060ffc1c  *ABS*      060ffc1c _mtptr
060ffcd6  *ABS*      060ffcd6 _VDP2_CYCA1U
000003d4  .text      000003d4 _padman_muku
0000170c  .data      0000562c _middle_pos
06008b9c  *ABS*      06008b9c _f_peft
060ffd64  *ABS*      060ffd64 _VDP2_LSTA1
06008c88  *ABS*      06008c88 _f_misako
060ffc1a  *ABS*      060ffc1a _TransRequest
0000391c  .text      0000391c _SCR_2_3b2_init
000041ec  .text      000041ec _SCR_2_3d3_ctrl
00000f74  .control   06040f74 _credit_ct
06

0xDC000

This is part of the header file for the boss Golets.

/*------------------------------------------------------------------------*/
/* HIT3D                                                                  */
/*------------------------------------------------------------------------*/
/*-------------------------------------------*/
//M_SONIC_BODY
static	s16		p0_posi_data[]={
/* 0x00 */	0x0000, 0x0000, 0xfffb, 	0x0000,
/* 0x00 */	0x0000, 0x0000, 0x0005, 	0x0000,
/* 0x00 */	0x0000, 0xfff4, 0x0000, 	0x0003,
/* 0x00 */	0x0000, 0x000b, 0x0002, 	0x0000,
/* 0x00 */	0x0000, 0xfff4, 0x0008, 	0x0003,
/* 0x00 */	0x0000, 0xfff4, 0xfff9, 	0x0003,
/* 0x06 */	0x0000, 0xffef, 0x0002, 	0x0003,
};
#define	p0_suu	(6+1)
/*-------------------------------------------*/
//M_SONIC_BREST_L
//M_SONIC_BREST_R
static	s16		p1_posi_data[]={
/* 0x00 */	0x0000, 0xfff9, 0x0000, 	0x0000,
/* 0x01 */	0x0000, 0x0006, 0x0000, 	0x0000,
};
#define	p1_suu	(1+1)
#define	p2_suu	(1+1)
#define	p2_posi_data	p1_posi_data
/*-------------------------------------------*/
//M_SONIC_KATA_L
static	s16		p3_posi_data[]={
/* 0x00 */	0x0000, 0xffff, 0x0000, 	0x0000,
/* 0x00 */	0xfffd, 0x0035, 0x0000, 	0x0000,
/* 0x00 */	0x0008, 0x000c, 0x0004, 	0x0003,
/* 0x00 */	0x0008, 0x000c, 0xfffc, 	0x0003,
/* 0x00 */	0x0008, 0x0014, 0x0004, 	0x0003,
/* 0x00 */	0x0008, 0x0014, 0xfffc, 	0x0003,
/* 0x00 */	0x0008, 0x001c, 0x0004, 	0x0003,
/* 0x00 */	0x0008, 0x001c, 0xfffc, 	0x0003,
/* 0x00 */	0x0008, 0x0024, 0x0004, 	0x0003,
/* 0x00 */	0x0008, 0x0024, 0xfffc, 	0x0003,
/* 0x00 */	0x000b, 0x002d, 0x0000, 	0x0000,
/* 0x0b */	0x000b, 0x0038, 0x0000, 	0x0000,
};
#define	p3_suu	(11+1)
/*-------------------------------------------*/
//M_SONIC_KATA_R
static	s16		p4_posi_data[]={
/* 0x00 */	0x0000, 0xffff, 0x0000, 	0x0000,
/* 0x00 */	0x0003, 0x0035, 0x0000, 	0x0000,
/* 0x00 */	0xfff8, 0x000c, 0x0004, 	0x0003,
/* 0x00 */	0xfff8, 0x000c, 0xfffc, 	0x0003,
/* 0x00 */	0xfff8, 0x0014, 0x0004, 	0x0003,
/* 0x00 */	0xfff8, 0x0014, 0xfffc, 	0x0003,
/* 0x00 */	0xfff8, 0x001c, 0x0004, 	0x0003,
/* 0x00 */	0xfff8, 0x001c, 0xfffc, 	0x0003,
/* 0x00 */	0xfff8, 0x0024, 0x0004, 	0x0003,
/* 0x00 */	0xfff8, 0x0024, 0xfffc, 	0x0003,
/* 0x00 */	0xfff5, 0x002d, 0x0000, 	0x0000,
/* 0x0b */	0xfff5, 0x0038, 0x0000, 	0x0000,
};
#define	p4_suu	(11+1)
/*-------------------------------------------*/
//M_SONIC_ARM_L
//M_SONIC_ARM_R
static	s16		p5_posi_data[]={
/* 0x00 */	0x0000, 0xfff9, 0x0000, 	0x0000,
/* 0x01 */	0x0000, 0x0005, 0x0000, 	0x0000,
};
#define	p5_suu	(1+1)
#define	p6_suu	(1+1)
#define	p6_posi_data	p5_posi_data
/*-------------------------------------------*/
//M_SONIC_LEG_L
static	s16		p7_posi_data[]={
/* 0x00 */	0x0009, 0x0000, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x000d, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x0017, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x0020, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x001b, 0x000a, 	0x0000,
/* 0x06 */	0x0000, 0x0011, 0x0006, 	0x0000,
};
#define	p7_suu	(6+1)
/*-------------------------------------------*/
//M_SONIC_LEG_R
static	s16		p8_posi_data[]={
/* 0x00 */	0xfff7, 0x0000, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x000d, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x0017, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x0020, 0x0000, 	0x0000,
/* 0x00 */	0x0000, 0x001b, 0x000a, 	0x0000,
/* 0x06 */	0x0000, 0x0011, 0x0006, 	0x0000,
};
#define	p8_suu	(6+1)

/*------------------------------------------------------------------------*/
/* SSSS Defines                                                           */
/*------------------------------------------------------------------------*/
#define	BOS12_Chain_suu	(19+1)

/*------------------------------------------------------------------------*/
/* Structs                                                                */
/*------------------------------------------------------------------------*/
obj_def(BOS12_WK,
	MAIN_WK		mw;
	ATARI_WK	aw;

/* For System */
	u8	sp;
	u16	fg;	/* Control Master */
	u16	btimer;

/* For GAME Proc */
	u16	proc_step;
	s16	proc_wait;
	s16	zibaku;

/* For Moving */
	s32	dx;
	s32	dy;
	s32	dz;

	s16		angXspd;
	s16		angXssp;
	s16		angYspd;
	s16		angYssp;
	s16		angZspd;
	s16		angZssp;

/* For Hit3D */
	u16		p0_fg;
	u16		p1_fg;
	u16		p2_fg;
	u16		p3_fg;
	u16		p4_fg;
	u16		p5_fg;
	u16		p6_fg;
	u8		p0_brk_sp;
	u8		p1_brk_sp;
	u8		p2_brk_sp;
	u8		p3_brk_sp;
	u8		p4_brk_sp;
	u8		p5_brk_sp;
	u8		p6_brk_sp;
	s32		p0_life;
	s32		p1_life;
	s32		p2_life;
	s32		p3_life;
	s32		p4_life;
	s32		p5_life;
	s32		p6_life;
	FIXED	p0_posi[(XYZ)*p0_suu];
	FIXED	p1_posi[(XYZ)*p1_suu];
	FIXED	p2_posi[(XYZ)*p2_suu];
	FIXED	p3_posi[(XYZ)*p3_suu];
	FIXED	p4_posi[(XYZ)*p4_suu];
	FIXED	p5_posi[(XYZ)*p5_suu];
	FIXED	p6_posi[(XYZ)*p6_suu];
	FIXED	p7_posi[(XYZ)*p7_suu];
	FIXED	p8_posi[(XYZ)*p8_suu];
	FIXED	p7_fire[(XYZ)];
	FIXED	p8_fire[(XYZ)];

/* For Hit3D EDIT */
	s16		p0_posi_num;
	s16		p0_menu;
	s16		p0_save;

/* For SSSS */
	SSSS_WK		sw;
	s16			mot_buf[BOS12_Chain_suu];
	s16			spd_buf[BOS12_Chain_suu];
	SEDT_WK		ew;

/* For Parts_Link TransForm */
	s8		IDEON_X;	
	u8		IDEON_X_fg;
	u16		IDEON_X_sv;	

/* For Run-away */
	u8 		runHundle;
	s16		runZ;
	s16		runsgt;
	s32		runspd;
	s32		runXpos;
	s32		runYpos;
	u8		scr_command;

	u8		scr_step;
	s8 		scr_rand[2];
	u8 		scr_p[2];
	s32		scr_y[2];
	s8		scr_shut;

/* For Lets&GO */
	u8			LG_fg;
	s8			LG_no;

/* For Ideon Sword */
	u8		IDEON_L_sp;
	u8		IDEON_R_sp;
	FIXED	IDEON_L_pos[XYZ*4];
	FIXED	IDEON_R_pos[XYZ*4];

/* For Shot Pos */
	FIXED	rain_pos[XYZ];
	FIXED	vul_L_pos[XYZ];
	FIXED	vul_R_pos[XYZ];
	FIXED	wng_L_pos[XYZ];
	FIXED	wng_R_pos[XYZ];

/* For Report Wait */
	EFT_OBJ	*rep;
	s32		STG_SCORE0;
	s32		STG_SCORE1;

/* For UserFree */
	s16		s16w0;
	s16		s16w1;
	s16		s16w2;
	s16		s16w3;
	s16		s16w4;
	s16		s16w5;
	s32		s32w0;
	s32		s32w1;
	s32		s32w2;
	s32		s32w3;
);
obj_def(IDEON_SWORD_WK,
	MAIN_WK		mw;
	ATARI_WK	aw;

	u8		*IDEON_sp;
	FIXED	*pos;
	s32  	*zom;
);
obj_def(SEARCH_WK,
	MAIN_WK	    mw;
	ATARI_WK	aw;

	BOS12_WK	*ms;
	u16		fg;
	s32		dx;
	s32		dy;
	s8 		s8w1;
	s8 		s16we;
);

/*------------------------------------------------------------------------*/
/* SSSS Datas                                                             */
/*------------------------------------------------------------------------*/
#define	DATA(Z)			Z,
#define	MasANGY			*(x->sw.S_mot_buf+0x00)
#define	MasANGZ			*(x->sw.S_mot_buf+0x01)
#define	BstANGY			*(x->sw.S_mot_buf+0x02)
#define	BstANGX			*(x->sw.S_mot_buf+0x03)
#define	LwgANGY			*(x->sw.S_mot_buf+0x04)
#define	LwgANGZ			*(x->sw.S_mot_buf+0x05)
#define	LwgPOSX			*(x->sw.S_mot_buf+0x06)

#define	LamPOSX			*(x->sw.S_mot_buf+0x07)
#define	LamANGZ			*(x->sw.S_mot_buf+0x08)
#define	LamANGX			*(x->sw.S_mot_buf+0x09)
#define	RamANGZ			*(x->sw.S_mot_buf+0x0a)
#define	RamANGX			*(x->sw.S_mot_buf+0x0b)

#define	LrgPOSZ			*(x->sw.S_mot_buf+0x0c)
#define	LrgANGZ			*(x->sw.S_mot_buf+0x0d)
#define	LrgANGY			*(x->sw.S_mot_buf+0x0e)
#define	LrgANGX			*(x->sw.S_mot_buf+0x0f)
#define	RrgANGZ			*(x->sw.S_mot_buf+0x10)
#define	RrgANGY			*(x->sw.S_mot_buf+0x11)
#define	RrgANGX			*(x->sw.S_mot_buf+0x12)

#define	TilANGX			*(x->sw.S_mot_buf+0x13)

/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0000[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x0000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
};
/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0001[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0xdc00)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xe000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0300)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0xf000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0xf000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xf600)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x3000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x3000)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x1000)                	/* Mas DATA   */
};
/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0002[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x8000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xf000)                	/* Mas DATA   */
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x1a00)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0800)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x3000)                	/* Mas DATA   */
	DATA  ( 0xe000)                	/* Mas DATA   */
	DATA  ( 0x3000)                	/* Mas DATA   */
	DATA  ( 0xe000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xf000)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
	DATA  ( 0x5800)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
	DATA  ( 0x5800)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x2000)                	/* Mas DATA   */
};
/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0003[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x4000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0x0800)                	/* Mas DATA   */
	DATA  ( 0xb800)                	/* Mas DATA   */
	DATA  ( 0x1600)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0800)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xe000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xe000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xe800)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0xfc00)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0xfc00)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x4000)                	/* Mas DATA   */
};
/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0004[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x3000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x1a00)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xf800)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xea00)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xea00)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x5400)                	/* Mas DATA   */
};
/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0005[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x1000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0x3000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x1100)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xf600)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x3b00)                	/* Mas DATA   */
};
/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0006[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x4000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xb800)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0xc400)                	/* Mas DATA   */
	DATA  ( 0x0e00)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0e00)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x6800)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x6800)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xec00)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0xfc00)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x0300)                	/* Mas DATA   */
	DATA  ( 0xfc00)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x0300)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x4b00)                	/* Mas DATA   */
};
/*====================================== 31 Line ===================*/
static	s16	BOS12_Mot_0007[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x3800)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc500)                	/* Mas DATA   */
	DATA  ( 0x5000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0xbb00)                	/* Mas DATA   */
	DATA  ( 0x0c00)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0300)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x1000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xec00)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0xfa00)                	/* Mas DATA   */
	DATA  ( 0x3500)                	/* Mas DATA   */
	DATA  ( 0xfe00)                	/* Mas DATA   */
	DATA  ( 0xfa00)                	/* Mas DATA   */
	DATA  ( 0x3500)                	/* Mas DATA   */
	DATA  ( 0xfe00)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x2800)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_0008[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x4400)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xcc00)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xfc00)                	/* Mas DATA   */
	DATA  ( 0xb800)                	/* Mas DATA   */
	DATA  ( 0x1200)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0900)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xd000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xd000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xe500)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0xfa00)                	/* Mas DATA   */
	DATA  ( 0x3500)                	/* Mas DATA   */
	DATA  ( 0xf000)                	/* Mas DATA   */
	DATA  ( 0xfa00)                	/* Mas DATA   */
	DATA  ( 0x3500)                	/* Mas DATA   */
	DATA  ( 0xf000)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x4b00)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_0009[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x4200)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x4600)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0x0400)                	/* Mas DATA   */
	DATA  ( 0xc500)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0800)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x3c00)                	/* Mas DATA   */
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x3c00)                	/* Mas DATA   */
	DATA  ( 0xc000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xe900)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0xf500)                	/* Mas DATA   */
	DATA  ( 0x3500)                	/* Mas DATA   */
	DATA  ( 0xf400)                	/* Mas DATA   */
	DATA  ( 0xf500)                	/* Mas DATA   */
	DATA  ( 0x3500)                	/* Mas DATA   */
	DATA  ( 0xf400)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x4000)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_000a[]={
	DATA  ( 0xfc00)                	/* MasANG Y   */
	DATA  ( 0x4000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xa800)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xe600)                	/* Mas DATA   */
	DATA  ( 0xcc00)                	/* Mas DATA   */
	DATA  ( 0x1300)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0500)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x7300)                	/* Mas DATA   */
	DATA  ( 0xe900)                	/* Mas DATA   */
	DATA  ( 0x1700)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xde00)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0xe900)                	/* Mas DATA   */
	DATA  ( 0x1f00)                	/* Mas DATA   */
	DATA  ( 0xe100)                	/* Mas DATA   */
	DATA  ( 0x1100)                	/* Mas DATA   */
	DATA  ( 0x5600)                	/* Mas DATA   */
	DATA  ( 0xea00)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x6d00)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_000b[]={
	DATA  ( 0x0400)                	/* MasANG Y   */
	DATA  ( 0x4000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xa800)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xe600)                	/* Mas DATA   */
	DATA  ( 0xcc00)                	/* Mas DATA   */
	DATA  ( 0x1300)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0500)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x1700)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0x7300)                	/* Mas DATA   */
	DATA  ( 0xe900)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xde00)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x1100)                	/* Mas DATA   */
	DATA  ( 0x5600)                	/* Mas DATA   */
	DATA  ( 0xea00)                	/* Mas DATA   */
	DATA  ( 0xe900)                	/* Mas DATA   */
	DATA  ( 0x1f00)                	/* Mas DATA   */
	DATA  ( 0xe100)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x6d00)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_000c[]={
	DATA  ( 0xfc00)                	/* MasANG Y   */
	DATA  ( 0x4000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xf200)                	/* Mas DATA   */
	DATA  ( 0xb100)                	/* Mas DATA   */
	DATA  ( 0x1300)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0a00)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0xcf00)                	/* Mas DATA   */
	DATA  ( 0x2800)                	/* Mas DATA   */
	DATA  ( 0xe000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xe300)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0300)                	/* Mas DATA   */
	DATA  ( 0x4c00)                	/* Mas DATA   */
	DATA  ( 0xde00)                	/* Mas DATA   */
	DATA  ( 0xfd00)                	/* Mas DATA   */
	DATA  ( 0x1c00)                	/* Mas DATA   */
	DATA  ( 0xe700)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x6900)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_000d[]={
	DATA  ( 0x0400)                	/* MasANG Y   */
	DATA  ( 0x4000)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xf200)                	/* Mas DATA   */
	DATA  ( 0xb100)                	/* Mas DATA   */
	DATA  ( 0x1300)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0a00)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x2800)                	/* Mas DATA   */
	DATA  ( 0xe000)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0xcf00)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xe300)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0xfd00)                	/* Mas DATA   */
	DATA  ( 0x1c00)                	/* Mas DATA   */
	DATA  ( 0xe700)                	/* Mas DATA   */
	DATA  ( 0x0300)                	/* Mas DATA   */
	DATA  ( 0x4c00)                	/* Mas DATA   */
	DATA  ( 0xde00)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x6900)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_000e[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x4600)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x4600)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0x1800)                	/* Mas DATA   */
	DATA  ( 0xa800)                	/* Mas DATA   */
	DATA  ( 0x0c00)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0700)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xaa00)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xaa00)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xf300)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x1800)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_000f[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x5c00)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x2400)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0xd800)                	/* Mas DATA   */
	DATA  ( 0x0e00)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0800)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x1b00)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
	DATA  ( 0x1b00)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xed00)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x0400)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0x0400)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x5800)                	/* Mas DATA   */
};
/*====================================== 30 Line ===================*/
static	s16	BOS12_Mot_0010[]={
	DATA  ( 0x0000)                	/* MasANG Y   */
	DATA  ( 0x6800)                	/* MasANG Y   */
/*- Brest --------------------------*/
	DATA  ( 0xc000)                	/* Mas DATA   */
	DATA  ( 0x1c00)                	/* Mas DATA   */
/*- Wing ---------------------------*/
	DATA  ( 0xf500)                	/* Mas DATA   */
	DATA  ( 0xd200)                	/* Mas DATA   */
	DATA  ( 0x1000)                	/* Mas DATA   */
/*- Arm Pos ------------------------*/
	DATA  ( 0x0800)                	/* Mas DATA   */
/*- Arm ----------------------------*/
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0xf000)                	/* Mas DATA   */
	DATA  ( 0x2000)                	/* Mas DATA   */
	DATA  ( 0xf000)                	/* Mas DATA   */
/*- Reg ZP -------------------------*/
	DATA  ( 0xed00)                	/* Mas DATA   */
/*- Reg ----------------------------*/
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xed00)                	/* Mas DATA   */
	DATA  ( 0x0000)                	/* Mas DATA   */
	DATA  ( 0x4000)                	/* Mas DATA   */
	DATA  ( 0xed00)                	/* Mas DATA   */
/*- Til ----------------------------*/
	DATA  ( 0x4d00)                	/* Mas DATA   */
};



/*=========================================================*/
static	s16	*BOS12_mot_ent_tbl[]={
/*--- Trans Form ------------------------------------------*/
	BOS12_Mot_0000,
	BOS12_Mot_0001,
	BOS12_Mot_0002,
	BOS12_Mot_0003,
	BOS12_Mot_0004,
	BOS12_Mot_0005,
/*--- M Vulcan --------------------------------------------*/
	BOS12_Mot_0006,
	BOS12_Mot_0007,
/*--- M Wait   --------------------------------------------*/
	BOS12_Mot_0008,
	BOS12_Mot_0009,
/*--- M Msht   --------------------------------------------*/
	BOS12_Mot_000a,
	BOS12_Mot_000b,
	BOS12_Mot_000c,
	BOS12_Mot_000d,
	BOS12_Mot_000e,
/*--- M Meto   --------------------------------------------*/
	BOS12_Mot_000f,
	BOS12_Mot_0010,
};

/*=========================================================*/
static	s16	BOS12_WAIT[]={
	0x0000,	10,	0,
	0x0000,	10,	0,
	SSSS_LOOP,
};
static	s16	BOS12_TRNS1[]={
	SSSS_START,
	0x0001,	10,	0,
	0x0002,	10,	0,
	0x0003,	10,	0,
	0x0003,	10,	0,
	0x0008,	30,	0,
	SSSS_END,
};
#if	0
static	s16	BOS12_TRNS2[]={
	SSSS_START,
	0x0004,	10,	0,
	0x0005,	10,	0,
	0x0000,	10,	0,
	SSSS_END,
};
#endif
static	s16	BOS12_Wait[]={
	0x0009,	20,   0,
	0x0008,	50, -45,
	0x0008,	40,  -5,
	0x0008,	20,   0,
	0x0009,	50, -45,
	0x0009,	40,  -5,
	SSSS_LOOP,
};

static	s16	BOS12_Vulc_Set[]={
	SSSS_START,
	0x0007,	30,  -8,
	0x0007,	20,  +4,
	SSSS_END,
};
static	s16	BOS12_Vulc[]={
	0x0007,	20,   0,
	0x0006,	100,-90,
	0x0006,	80, -10,
	0x0006,	20,   0,
	0x0007,	100,-90,
	0x0007,	80, -10,
	SSSS_LOOP,
};
static	s16	BOS12_MshtR[]={
	SSSS_START,
	0x000e,	40,   0,
	0x000a,	 8,   0,
	0x000c,	16,   0,
	0x0008,	20,  -10,
	0x0008,	30,    0,
	SSSS_END,
};
static	s16	BOS12_MshtL[]={
	SSSS_START,
	0x000e,	40,   0,
	0x000b,	 8,   0,
	0x000d,	16,   0,
	0x0008,	20,  -10,
	0x0008,	30,    0,
	SSSS_END,
};
static	s16	BOS12_Meto_Set[]={
	SSSS_START,
	0x0010,	30,   0,
	SSSS_END,
};
static	s16	BOS12_Meto[]={
	0x0010,	 7,   0,
	0x000f,	 7,   0,
	SSSS_LOOP,
};

#if	EDIT
static	s16	BOS12_TRNS[]={
	0x0010,	10,   0,
	0x000f,	10,   0,
	SSSS_LOOP,
};
#endif

0xE4400

This is part of an objdump listing.

0026d1c  .control   06066d1c ___mulsi3
06008adc  *ABS*      06008adc _f_demo13
00000000  .text      00000000 _SCR_2_init
00014ef0  .control   06054ef0 _eshot07_disp
00032e48  .control   06072e48 _anm_gero00
06007860  *ABS*      06007860 _SND_GetSeqStat
060ffd26  *ABS*      060ffd26 _VDP2_MPGHRB
060342d8  *ABS*      060342d8 _slSetPortMode2
0600931c  *ABS*      0600931c _f_stg4_tne_m
00018a60  .control   06058a60 _bbom_set
060ffc76  *ABS*      060ffc76 _TotalVertices
00018170  .control   06058170 _hahen_set
0000de64  .control   0604de64 _eft_func
06008d2c  *ABS*      06008d2c _f_s3jama
0000ac40  .contbss   0607e5b0 _vntbl_body
00001174  .text      00001174 _set_mime_matrix
0000847a  .contbss   0607bdea _local_load_tex_ofs
00024f8c  .control   06064f8c _sys__interrupt_handler28
0000424c  .text      0000424c _SCR_2_3_moya
060fff18  *ABS*      060fff18 _Win1Zlimit
060ffd28  *ABS*      060ffd28 _VDP2_MPIJRB
00024d48  .control   06064d48 _SYS_SetUintMacSave
060094e4  *ABS*      060094e4 _f_st51_tne
000311a0  .control   060711a0 _slDivFX
00016084  .control   06056084 _hansya_anm
0001f244  .control   0605f244 _SCR_MoveRbgRB
00021534  .control   06061534 _demo_start
06004000  *ABS*      06004000 _main
0000847c  .contbss   0607bdec _load_col_ofs
06008c14  *ABS*      06008c14 _f_makuno
06004064  *ABS*      06004064 _SortListSize
0600405c  *ABS*      0600405c _EventSize
00019d38  .control   06059d38 _enm01_dead
06033530  *ABS*      06033530 _slInitInterrupt
06008ba8  *ABS*      06008ba8 _f_warning
00006608  .text      00006608 _moni_scr
060fff20  *ABS*      060fff20 _Win1_ScreenDist
00021c4c  .control   06061c4c _set_next_win
00016030  .control   06056030 _hansya_set
0000019c  .data      00007124 _st2_name_10
060ffd7c  *ABS*      060ffd7c _VDP2_RPTA
00003508  .text      00003508 _SCR_2_2c_ctrl
06033276  *ABS*      06033276 _BlankIn
00030930  .control   06070930 _slMapNbg0
00023a98  .control   06063a98 _chase_laser
000216d0  .control   060616d0 _kaiwa_tim0_func3
000095d0  .control   060495d0 _play_spred_set
060ffd5a  *ABS*      060ffd5a _VDP2_SCRCTL
060344d8  *ABS*      060344d8 _Smpc_Result
060ffde0  *ABS*      060ffde0 _ScrRotPtr
0002da30  .control   0606da30 _slVRAMMode
00006268  .text      00006268 _guid_set
06034d92  *ABS*      06034d92 _PCM_EndCheck
00017bb4  .control   06057bb4 _eft_bomb04_set
00002284  .text      00002284 _SCR_2_1a_ctrl
00008480  .contbss   0607bdf0 _obj_x
060ffd2a  *ABS*      060ffd2a _VDP2_MPKLRB
06006a58  *ABS*      06006a58 _SND_TIMING
060ffcc4  *ABS*      060ffcc4 _VDP2_TVSTAT
00024f02  .control   06064f02 _sys__interrupt_handler3
00003b50  .text      00003b50 _padman_disp2
060093f4  *ABS*      060093f4 _f_stg2_seq
0001fb4c  .control   0605fb4c _disp_warning_bg
00020ab4  .control   06060ab4 _mk_credit_map_sub
06008f18  *ABS*      06008f18 _f_titlebg
060ffde4  *ABS*      060ffde4 _nbg0_char_adr
00020884  .control   06060884 _mk_score_map
00030eb0  .control   06070eb0 _slSetAmbient
00014638  .control   06054638 _eshot02_set
000006f4  

0xE5000

This is part of the source code for Stage 2.

/*==================================================================*/
/*                          STG02                                   */
/*==================================================================*/
#include	"bios.h"
#include	"ryo.h"
#include	"game.h"
#include	"nami.h"
#include	"scroll.h"
/*------------------------------------------------------------------*/
#define	NORMAL_SET		1
#define	BOSSX_DEBUG_SET	0
#define	BOSSY_DEBUG_SET	0
#define	BOSSZ_DEBUG_SET	0
#define	PAD_DEBUG_SET	0

#define	FLAT_MODE	0
/*------------------------------------------------------------------*/
#define	tm(X,Y,Z)	((X*60*60)+(Y*60)+Z)
/*------------------------------------------------------------------*/
ENM_SET_TBL_	etbl00[];
ENM_SET_TBL_	etbl01[];
ENM_SET_TBL_	etbl02[];
ENM_SET_TBL_	etbl03[];
ENM_SET_TBL_	etbl04[];

/*------------------------------------------------------------------*/
/* Common Enemy                                                     */
/*------------------------------------------------------------------*/
extern	s32		eset10_enm00_set(ESET_OBJ *ex);
extern	s32		inu_set(ESET_OBJ *ex);
extern	void	name_set_sub(s8 *AD0, s8 *AD1, s8 *AD2, s8 *AD3,  s16 Wait);

/*------------------------------------------------------------------*/
/* Boss   Enemy                                                     */
/*------------------------------------------------------------------*/
extern	s8		bos10_set(void);
extern	s8		bos11_set(void);
extern	s8		bos12_set(void);
extern	s8		padman_set(void);
extern	s8		guid_set(void);

extern	s8		bike_set(void);
extern	s32		nise_set(ENM_SET_TBL *etbl);
/*------------------------------------------------------------------*/
static	s8 bos00_name[] = "^1KOTETSU";
static	s8 bos00_p0[]   = "1:HARDINESS";
static	s8 bos00_p1[]   = "2:SLEIGHT;OF;HAND";
static	s8 bos00_p2[]   = "3:FRIEND;SHIP";

static	s8 bos01_name[] = "^1GOLETS";
static	s8 bos01_p0[]   = "1:HIGH;SPEED;SIGHT";
static	s8 bos01_p1[]   = "2:BRAVE;HEART";
static	s8 bos01_p2[]   = "3:BROTHER;LOVE";

static	s8 bos02_name[] = "^1NASU";
static	s8 bos02_p0[]   = "1:BRAVE;FOR;ENTER;BOSOM";
static	s8 bos02_p1[]   = "2:PLACATE;TO;ANIMAL";
static	s8 bos02_p2[]   = "3:WILD;CAMERA";

static	s8 bos03_name[] = "^1DAIKAI10";
static	s8 bos03_p0[]   = "1:DECIDE;WEAPONS";
static	s8 bos03_p1[]   = "2:SUPPLE;THINK";
static	s8 bos03_p2[]   = "3:...AND;LUCK";

static	s8 bos04_name[] = "^1GEDO-O";
static	s8 bos04_p0[]   = "1:MAKE TIME";
static	s8 bos04_p1[]   = "2:DECIDE;WEAPONS";
static	s8 bos04_p2[]   = "3:LOOK;OVER;TO;LINES";

static	s8	*bos_name[]={
	bos00_name,
	bos01_name,
	bos02_name,
	bos03_name,
	bos04_name,
};
static	s8	*bos_poten[]={
	bos00_p0,bos00_p1,bos00_p2,
	bos01_p0,bos01_p1,bos01_p2,
	bos02_p0,bos02_p1,bos02_p2,
	bos03_p0,bos03_p1,bos03_p2,
	bos04_p0,bos04_p1,bos04_p2,
};
/*=================================================================*/
static	s32 name_set(ENM_SET_TBL *etbl){
/*=================================================================*/
	name_set_sub(bos_name[(u8)etbl->no],
	             bos_poten[((u8)etbl->no*3)+0],
	             bos_poten[((u8)etbl->no*3)+1],
	             bos_poten[((u8)etbl->no*3)+2],
	             etbl->d0.swl);
	return	1;
}
/*==================================================================*/
#define	step	no
#define	load_adr	etbl->w1.swl
#define	vram_adr	etbl->w2.swl
#define	tex_ofs		etbl->w3.sww[0]
#define	col_ofs		etbl->w3.sww[1]

#define	sd_adr	etbl->w1.swl
#define	sq_adr	(sd_adr + sd_size)
#define	sd_size	etbl->w2.swl
#define	sq_size	etbl->w3.swl

static	s32	SE_load(ENM_SET_TBL *etbl, u8 TONE){
	enum{
		LOAD_INIT,
		SD_LOAD_START,
		SD_LOAD_WAIT,
		SD_SET,
		LOAD_END,
		END
	};
	s32	ret;
#ifdef SS
	GfsHn	cdhn;
#endif
#ifdef STV
	LOAD_FILE_INF	*cdhn;
#endif
	cdhn	= etbl->w0.func;

//	return	1;

	ret	= 0;
	switch(etbl->step){
/*----------------------*/
	case LOAD_INIT:
/*----------------------*/
		sd_adr	= local_load_end_ram_adr;
		sd_adr	-= STG_TONE_BANK_SIZE_MAX;

		etbl->step	= SD_LOAD_START;
		break;
/*----------------------*/
	case SD_LOAD_START:
/*----------------------*/
		cdhn	= sd_data_load(TONE,sd_adr);
		if(cdhn == NULL)break;
		sd_size	= file_size_get(cdhn);
		etbl->step	= SD_LOAD_WAIT;
		break;
/*----------------------*/
	case SD_LOAD_WAIT:
/*----------------------*/
		if(!read_check(cdhn))break;
		etbl->step	= SD_SET;
		break;
/*----------------------*/
	case SD_SET:
/*----------------------*/
		sd_data_set(TONE,sd_adr,sd_size);
		etbl->step	= LOAD_END;
		break;
/*----------------------*/
	case LOAD_END:
/*----------------------*/
		ret	= 1;
		break;
	}
	etbl->w0.func	= cdhn;
	etbl->d0.swl--;
	return(ret);

}
/*============================================================================*/
static	s32	stg21_se_load(ENM_SET_TBL *etbl){
/*============================================================================*/
	return	SE_load(etbl,SD_STG21_TNE);
}
/*============================================================================*/
static	s32	stg22_se_load(ENM_SET_TBL *etbl){
/*============================================================================*/
	return	SE_load(etbl,SD_STG22_TNE);
}
/*============================================================================*/
static	s32	stg23_se_load(ENM_SET_TBL *etbl){
/*============================================================================*/
	return	SE_load(etbl,SD_STG23_TNE);
}
/*============================================================================*/
static	s32	stg24_se_load(ENM_SET_TBL *etbl){
/*============================================================================*/
	return	SE_load(etbl,SD_STG24_TNE);
}
/*============================================================================*/
static	s32	stg25_se_load(ENM_SET_TBL *etbl){
/*============================================================================*/
	return	SE_load(etbl,SD_STG25_TNE);
}
#undef	sd_adr
#undef	sq_adr
#undef	sd_size
#undef	sq_size
/*==================================================================*/
#define	step	no
#define	load_adr	etbl->w1.swl
#define	vram_adr	etbl->w2.swl
#define	tex_ofs		etbl->w3.sww[0]
#define	col_ofs		etbl->w3.sww[1]

#define	sd_adr	etbl->w1.swl
#define	sq_adr	(sd_adr + sd_size)
#define	sd_size	etbl->w2.swl
#define	sq_size	etbl->w3.swl

static	s32	bos_bgm_load(ENM_SET_TBL *etbl)
{
	enum{
		LOAD_INIT,
		SD_LOAD_START,
		SD_LOAD_WAIT,
		SQ_LOAD_START,
		SQ_LOAD_WAIT,

		BGM_STOP,
		BGM_STOP_WAIT,
		SD_SET,
		SQ_SET,
		BGM_SET,

		LOAD_END,
		END
	};
	s32	ret;

#ifdef SS
	GfsHn	cdhn;
#endif
#ifdef STV
	LOAD_FILE_INF	*cdhn;
#endif

	cdhn	= etbl->w0.func;

	ret	= 0;
	switch(etbl->step){
	case LOAD_INIT:
		sd_adr	= local_load_end_ram_adr;
		sd_adr	-= BGM_BANK_SIZE_MAX;

		etbl->step++;
		break;

	case SD_LOAD_START:
		cdhn	= sd_data_load(SD_BOS2_TNE_M,	sd_adr);
		if(cdhn == NULL)break;
		sd_size	= file_size_get(cdhn);
		etbl->step	= SD_LOAD_WAIT;
		break;
	case SD_LOAD_WAIT:
		if(!read_check(cdhn))break;
		etbl->step++;
		break;

	case SQ_LOAD_START:
		cdhn	= sd_data_load(SD_BOS2_SEQ_M,	sq_adr);
		if(cdhn == NULL)break;
		sq_size	= file_size_get(cdhn);
		etbl->step	= SQ_LOAD_WAIT;
		break;
	case SQ_LOAD_WAIT:
		if(!read_check(cdhn))break;
		etbl->step	= BGM_STOP;
		break;
	case BGM_STOP:
		if(etbl->d0.swl > 0)break;
		bgm_stop(200);
		etbl->step	= BGM_STOP_WAIT;
		break;
	case BGM_STOP_WAIT:
		if(sd_x->bgm_set_no != BGM_NULL)break;
		etbl->d0.swl	= 2;
		etbl->step	= SD_SET;
		break;
	case SD_SET:
		if(etbl->d0.swl > 0)break;
		sd_data_set(SD_BOS2_TNE_M,sd_adr,sd_size);
		sd_data_set(SD_BOS2_SEQ_M,sq_adr,sq_size);

		etbl->d0.swl	= cmin(etbl->d1.swl,((sd_size + sq_size) / DIV_DMA_SIZE) + 4);
		etbl->step	= BGM_SET;
		break;
	case BGM_SET:
		if(etbl->d0.swl > 0)break;
		gcon_x->bgm_load_no	= BGM_BOS02;
		bgm_set(BGM_BOS02);
		etbl->step	= LOAD_END;
		break;
	case LOAD_END:
		ret	= 1;
		break;
	}
	etbl->w0.func	= cdhn;
	etbl->d0.swl--;
	return(ret);
}
#undef	sd_adr
#undef	sq_adr
#undef	sd_size
#undef	sq_size


/*=================================================================*/
s32		demo01_set(ENM_SET_TBL *etbl){
/*=================================================================*/
	switch(Set_Step){
	case	0:			
		if(!(get_stage_fg() & STAGE_START_FG))break;
		Set_Step++;
		break;
	case	1:			
		if(SCR_NextAreaFlag){
			eset_x = enm_set_set((ENM_SET_TBL *)etbl00);
			return	-1;
		}
	}
	return	0;
}
/*============================================================================*/
/*                                                                            */
/* ---  KOTESU Stage  ------------------------------------------------------- */
/*                                                                            */
/*============================================================================*/
static	s32	kotetsu_load(ENM_SET_TBL *etbl)
{
	enum{
		LOAD_INIT,
		MODEL_LOAD_START,
		MODEL_LOAD_WAIT,
		MODEL_LOAD_END,

		CHAR_LOAD_START,
		CHAR_LOAD_WAIT,
		CHAR_LOAD_END,

		LOAD_END,
		END
	};
	s32	ret;

#ifdef SS
	GfsHn	cdhn;
#endif
#ifdef STV
	LOAD_FILE_INF	*cdhn;
#endif

	cdhn	= etbl->w0.func;

	ret	= 0;
	switch(etbl->step){
	case LOAD_INIT:
		load_adr	= local_load_ram_adr;
		vram_adr	= local_load_vram_adr;
		tex_ofs		= local_load_tex_ofs;
		col_ofs		= local_load_col_ofs;

		etbl->step	= MODEL_LOAD_START;
		break;

	case MODEL_LOAD_START:
		cdhn	= model_load(CHAR_KOTETSU,load_adr);
		if(cdhn == NULL)break;
		etbl->step	= MODEL_LOAD_WAIT;
		break;
	case MODEL_LOAD_WAIT:
		if(!read_check(cdhn))break;
		model_load_end(CHAR_KOTETSU,load_adr);
		vram_adr	= model_set(CHAR_KOTETSU,vram_adr,tex_ofs,col_ofs);
		tex_ofs	+= ((P_HEADER *)char_tbl[CHAR_KOTETSU].header_adr)->tex_suu;
		if((char_tbl[CHAR_KOTETSU].atrb & CL_MODE) != CL16Look){
			col_ofs	+= ((P_HEADER *)char_tbl[CHAR_KOTETSU].header_adr)->colsize;
		}
		load_adr	= (u32)((P_HEADER *)char_tbl[CHAR_KOTETSU].header_adr)->texinf;

		model_all_hss_set (CHAR_KOTETSU,M_KOTETSU_END);	
		model_all_flat_set(CHAR_KOTETSU,M_KOTETSU_END);
		set_light_color   (22,24,28);
		set_light_ambient (10,12,14);
		set_light_angle   (+0x1000,-0x2000,-0x0000);

		etbl->step	= MODEL_LOAD_END;
		break;
	case MODEL_LOAD_END:
		etbl->step	= CHAR_LOAD_START;
		break;

	case CHAR_LOAD_START:
		cdhn	= char_load(CHAR_KOTET_E,load_adr);
		if(cdhn == NULL)break;
		etbl->step	= CHAR_LOAD_WAIT;
		break;
	case CHAR_LOAD_WAIT:
		if(!read_check(cdhn))break;
		char_load_end(CHAR_KOTET_E,load_adr);
		vram_adr	= char_set(CHAR_KOTET_E,vram_adr,tex_ofs,col_ofs);
		tex_ofs	+= ((S_HEADER *)char_tbl[CHAR_KOTET_E].header_adr)->tex_suu;
		col_ofs	+= ((S_HEADER *)char_tbl[CHAR_KOTET_E].header_adr)->colsize;
		load_adr	= (u32)((S_HEADER *)char_tbl[CHAR_KOTET_E].header_adr)->texinf;

		etbl->step	= CHAR_LOAD_END;
		break;
	case CHAR_LOAD_END:
		etbl->step	= LOAD_END;
		break;

	case LOAD_END:
		ret	= 1;
		break;
	}

	etbl->w0.func	= cdhn;

	return(ret);
}

/*=================================================================*/
s32		KOTETSU_set(ENM_SET_TBL *etbl){
/*=================================================================*/
	EFT_OBJ	*x;
	s8	OBJ_NO;

	switch(Set_Step){
	case	0:			/* Boss Set */
		OBJ_NO = bos10_set();
		if(OBJ_NO){
			Set_Step++;
			Set_Boss_obj_no = OBJ_NO;
		}
		break;
	case	1:			/* Boss Dead Wait */
		if(obj_x[Set_Boss_obj_no]==0){
			x = report_set( 60);
			if(x){
				Set_Step++;
				Set_Report_Adr = (u32)x;
				SCR_NextSection();
			}
		}
		break;
	case	2:			/* Next Enemies Set */
		x = (EFT_OBJ *)Set_Report_Adr;
		if(x->mode >= OBJ_M_KIE){
			Set_Step++;
			SCR_NextSection();
		}
		break;
	case	3:			/* Next Enemies Set */
		if(SCR_NextAreaFlag){
			eset_x = enm_set_set((ENM_SET_TBL *)etbl01);
			return	-1;
		}
	}
	return	0;
}

/*============================================================================*/
/*                                                                            */
/* ---  SONIC  Stage  ------------------------------------------------------- */
/*                                                                            */
/*============================================================================*/
static	s32	sonic_load(ENM_SET_TBL *etbl)
{
	enum{
		LOAD_INIT,
		MODEL_LOAD_START,
		MODEL_LOAD_WAIT,
		MODEL_LOAD_END,

		CHAR_LOAD_START,
		CHAR_LOAD_WAIT,
		CHAR_LOAD_END,

		LOAD_END,
		END
	};
	s32	ret;

#ifdef SS
	GfsHn	cdhn;
#endif
#ifdef STV
	LOAD_FILE_INF	*cdhn;
#endif

	cdhn	= etbl->w0.func;

	ret	= 0;
	switch(etbl->step){
	case LOAD_INIT:
		load_adr	= local_load_ram_adr;
		vram_adr	= local_load_vram_adr;
		tex_ofs		= local_load_tex_ofs;
		col_ofs		= local_load_col_ofs;

		etbl->step	= MODEL_LOAD_START;
		break;

	case MODEL_LOAD_START:
		cdhn	= model_load(CHAR_SONIC,load_adr);
		if(cdhn == NULL)break;
		etbl->step	= MODEL_LOAD_WAIT;
		break;
	case MODEL_LOAD_WAIT:
		if(!read_check(cdhn))break;
		model_load_end(CHAR_SONIC,load_adr);
		vram_adr = model_set(CHAR_SONIC,vram_adr,tex_ofs,col_ofs);
		tex_ofs += ((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)->tex_suu;
		if((char_tbl[CHAR_SONIC].atrb & CL_MODE) != CL16Look){
			col_ofs += ((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)->colsize;
		}
		load_adr = (u32)((P_HEADER *)char_tbl[CHAR_SONIC].header_adr)->texinf;

		model_all_hss_set (CHAR_SONIC,M_SONIC_END);	
		model_all_flat_set(CHAR_SONIC,M_SONIC_END);
		set_light_color   (28,28,28);
		set_light_ambient (12,12,12);
		set_light_angle   (-0x2000,+0x2000,-0x0000);

		etbl->step	= MODEL_LOAD_END;
		break;
	case MODEL_LOAD_END:
		etbl->step	= CHAR_LOAD_START;
		break;

	case CHAR_LOAD_START:
		cdhn	= char_load(CHAR_SONIC_E,load_adr);
		if(cdhn == NULL)break;
		etbl->step	= CHAR_LOAD_WAIT;
		break;
	case CHAR_LOAD_WAIT:
		if(!read_check(cdhn))break;
		char_load_end(CHAR_SONIC_E,load_adr);
		vram_adr	= char_set(CHAR_SONIC_E,vram_adr,tex_ofs,col_ofs);
		tex_ofs	+= ((S_HEADER *)char_tbl[CHAR_SONIC_E].header_adr)->tex_suu;
		col_ofs	+= ((S_HEADER *)char_tbl[CHAR_SONIC_E].header_adr)->colsize;
		load_adr	= (u32)((S_HEADER *)char_tbl[CHAR_SONIC_E].header_adr)->texinf;

		etbl->step	= CHAR_LOAD_END;
		break;
	case CHAR_LOAD_END:
		etbl->step	= LOAD_END;
		break;

	case LOAD_END:
		ret	= 1;
		break;
	}

	etbl->w0.func	= cdhn;

	return(ret);
}

/*=================================================================*/
s32		SONIC_set(ENM_SET_TBL *etbl){
/*=================================================================*/
	EFT_OBJ	*x;
	s8	OBJ_NO;

	switch(Set_Step){
	case	0:			/* Scroll Wait */
		if(SCR_NextAreaFlag){
			Set_Step++;
		}
		break;
	case	1:			/* Boss Set */
		OBJ_NO = bos12_set();
		if(OBJ_NO){
			Set_Step++;
			Set_Boss_obj_no = OBJ_NO;
		}
		break;
	case	2:			/* Boss Dead Wait */
		if(obj_x[Set_Boss_obj_no]==0){
			x = report_set( 60);
			if(x){
				Set_Step++;
				Set_Report_Adr = (u32)x;
				SCR_NextSection();
			}
		}
		break;
	case	3:			/* Next Enemies Set */
		x = (EFT_OBJ *)Set_Report_Adr;
		if(x->mode >= OBJ_M_KIE){
			Set_Step++;
			SCR_NextSection();
		}
		break;
	case	4:			/* Next Enemies Set */
		if(SCR_NextAreaFlag){
			eset_x = enm_set_set((ENM_SET_TBL *)etbl02);
			return	-1;
		}
	}
	return	0;
}

/*============================================================================*/
/*                                                                            */
/* ---  NURSE  Stage  ------------------------------------------------------- */
/*