;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º                                                            º
;º                    EGUCHI'S DPATHDAT                       º
;º                                                            º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SPECIAL OBJECT º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
	START_PATH	e_test_0

	P_INVISIBLE	ON
	P_IMPORT	pbyte2,KStackNumber
	P_IMPORT	pbyte1,EEnemyNumber_5
	P_IMPORT	pword1,SebangoSwitch_5

.lp
	P_PRINT		pbyte1,h,eguchi
	P_PRINT		pbyte2,d,eguchi
	P_PRINT		pword1,d,eguchi
	P_GOTO		.lp

	P_END
;------------
;------------
;------------
;------------
	START_PATH	e_auto_walker_bat

	P_INVISIBLE	ON
	P_PLAYER	1
	P_FORCETRANSFORM	robot
	P_PLAYER	2
	P_FORCETRANSFORM	robot
	P_REMOVE
;-----------
	START_PATH	e_final_map

	P_INVISIBLE	ON
	P_EXPORT	KSoundMapPtr,pbyte1	;sound_ptr init
	P_EXPORT	ebyte1,pbyte1		;switch init
	P_EXPORT	ebyte2,pbyte1		;
	P_EXPORT	ebyte3,pbyte1		;
	P_EXPORT	ebyte4,pbyte1		;
	P_EXPORT	ebyte5,pbyte1		;
	P_EXPORT	ebyte6,pbyte1		;
	P_EXPORT	eword1,pword1		;
	P_DO		16			;
	P_INC		pbyte1			;
	P_CLRSWITCH	pbyte1			;
	P_INEXT					;
	P_REMOVE
;------------
	START_PATH	e_andross_msg1

	P_INVISIBLE	ON
	P_WAIT		10
	P_SET		pbyte1,133
	P_DO		3
	P_MSG		pbyte1
	P_INC		pbyte1
	P_WAIT		30
	P_NEXT
	P_REMOVE
;------------
	START_PATH	e_starfox_msg1

	P_INVISIBLE	ON
	P_WAIT		8
	P_SET		pbyte1,136
	P_DO		6
	P_MSG		pbyte1
	P_WAIT		40
	P_INC		pbyte1
	P_NEXT
	P_REMOVE
;------------
	START_PATH	e_ck_msg_maker

	P_INVISIBLE	ON
	P_IMPORT	pbyte1,ebyte5
	P_SET		pbyte2,3
	P_IFSWITCH	pbyte2,pbyte1,.rem
	P_DO		20
	P_IMPORT	pbyte1,ebyte5
	P_SETSWITCH	pbyte2,pbyte1
	P_EXPORT	ebyte5,pbyte1
	P_NEXT
	P_CLRSWITCH	pbyte2,pbyte1
	P_EXPORT	ebyte5,pbyte1
.rem
	P_REMOVE
;;-----------
	START_PATH	e_msg_maker

	P_INVISIBLE	ON
	P_IMPORT	pbyte1,ebyte5
	P_SET		pbyte2,3
	P_IFSWITCH	pbyte2,pbyte1,.now_msg
	P_SETSWITCH	pbyte2,pbyte1
	P_EXPORT	ebyte5,pbyte1
	P_IMPORT	tx,Player_friend
	P_IFSAME	tx,-1,.now_msg
	P_ADD		tx,118				;boost wo tsukae
	P_MSG		tx
	P_DO		2
	P_WAIT		100
	P_NEXT
	P_IMPORT	pbyte1,ebyte5
	P_CLRSWITCH	pbyte2,pbyte1
	P_EXPORT	ebyte5,pbyte1
.now_msg
	P_REMOVE
;------------
	START_PATH	e_fire_mark

	P_QSPAWN	laser_0,egu_speed_RelElaser_suka,100,0
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_SPRITE	0,8
	P_ADD		tx,ap
	P_CLRTYPE	enemy1
	P_SETCOLANIM	0
	P_WAIT		1
	P_SETCOLANIM	1
	P_WAIT		1
	P_REMOVE
;-----------
	START_PATH	egu_speed_RelElaser_suka

	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_RELTOPLAYER	ON
	P_ALWAYSGENVECS	ON
	P_SET		childx,worldx
	P_SET		childy,worldy
	P_SET		childz,worldz
	P_FACEPLAYER	IMMEDIATE
	P_SETRANDOM	pbyte1,3
	P_ADD		pbyte1,-2
	P_ADD		roty,pbyte1
	P_SETRANDOM	pbyte1,3
	P_ADD		pbyte1,-2
	P_ADD		rotx,pbyte1
	P_SETVEL	70
	P_WAIT		1
	P_SET		ox,worldx
	P_SET		oy,worldy
	P_SET		oz,worldz
	P_NEG		childx
	P_NEG		childy
	P_NEG		childz
	P_ADD		ox,childx
	P_ADD		oy,childy
	P_ADD		oz,childz
	P_SETVEL	0

.loop
	P_DISTLESS	300,.near
	P_INC		pword1
	P_IFSAME	pword1,100,.rem
	P_DO		2
	P_ADD		worldx,ox
	P_ADD		worldy,oy
	P_ADD		worldz,oz
	P_INEXT
	P_GOTO		.loop
.near
	P_SETVEL	127
	P_WAIT		10
.rem
	P_REMOVE

	START_PATH	egu_speed_RelElaser

	P_COLLISIONS	OFF
	P_RANGECHECK	OFF

.lp
	P_WITHINRADIUS	300,.come
.rcome
	P_FACEPLAYER	IMMEDIATE
	P_MOVEINPLAYER	70
	P_MOVEINPLAYER	70
	P_INC		pword1
	P_IFSAME	pword1,100,.rem
	P_GOTO		.lp
.come
	P_SETVEL	90
	P_WAIT		10
.rem
	P_REMOVE
;ÉÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SEA OBJECT º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍ¼
	START_PATH	e_kozakana

	P_SET		hp,100
	P_SHADOW	OFF
	P_COLLISIONS	OFF
	P_GOSUB		sea_init_below
	P_SET		pbyte1,roty
	P_ZERO		roty
	P_SET		ox,-800
	P_SET		oy,-50

	P_DO		pbyte1
	P_INC		pbyte2
	P_EXPORT	gbyte1,pbyte2
	P_SPAWN		0,0,0,0,0,0,kozakana,e_kozakana_c,100,0,1
	P_BECOME
	P_IMPORT	pbyte1,gbyte1
	P_SETID		pbyte1
	P_SET		pbyte2,6
	P_SETRANDOM	pword1,255		;511
	P_ADD		pword1,-128		;256
	P_SETSWITCH	pbyte2,pword1
	P_ADD		childx,pword1
	P_SETRANDOM	pword1,255		;511
	P_ADD		pword1,-128		;256
	P_SETSWITCH	pbyte2,pword1
	P_ADD		childz,pword1
	P_SETRANDOM	pword1,127
	P_ADD		pword1,-127
	P_SETSWITCH	pbyte2,pword1
	P_ADD		childy,pword1
	P_UNBECOME
	P_INEXT

	P_ALWAYSGENVECS	ON
	P_SET		childx,worldx
	P_NEG		childx
	P_SET		childy,worldy
	P_NEG		childy
	P_SET		childz,worldz
	P_NEG		childz
	P_TRIGGER	.kozakana_c_move,Always
.loop
	P_SETVEL	40
	P_ACCEL		10,1
	P_WAIT		30

	P_GOSUB		.mk_fish_move
	P_DO		8
	P_CHASE		roty,childroty
	P_CHASE		rotx,childrotx
	P_NEXT
	P_GOTO		.loop

.mk_fish_move	LOCAL
	P_PUSH		roty
	P_PUSH		rotx
	P_FACEPLAYER	IMMEDIATE
	P_SET		childrotx,rotx
	P_SET		childroty,roty
	P_PULL		rotx
	P_PULL		roty
	P_SETRANDOM	childrotz,31
	P_ADD		childrotz,-16
	P_ADD		childrotx,childrotz
	P_RETURN

.kozakana_c_move
	P_IFLARGER	worldy,ox,.hi_ok
	P_SET		worldy,ox
	P_CHASE		rotx,0
.hi_ok
	P_IFSMALLER	worldy,oy,.hi_ok2
	P_SET		worldy,oy
.hi_ok2
	P_ADD		childx,worldx
	P_EXPORT	gword1,childx
	P_ADD		childy,worldy
	P_EXPORT	gword2,childy
	P_ADD		childz,worldz
	P_EXPORT	gword3,childz

	P_SET		childx,worldx
	P_NEG		childx
	P_SET		childy,worldy
	P_NEG		childy
	P_SET		childz,worldz
	P_NEG		childz

	P_EXPORT	gbyte1,roty
	P_EXPORT	gbyte2,rotx
	P_ZERO		pbyte2
	P_DO		pbyte1
	P_INC		pbyte2
	P_BECOMECHILD	pbyte2
	P_GADD		worldx,gword1
	P_GADD		worldy,gword2
	P_GADD		worldz,gword3
	P_IMPORT	roty,gbyte1
	P_IMPORT	rotx,gbyte2
	P_UNBECOME
	P_INEXT
	P_RETURN
;------------
	START_PATH	e_kozakana_c

	P_SHADOW	OFF
	P_COLLISIONS	OFF
	P_GOSUB		sea_init_below
	P_RELATIVE	OFF

	P_END
;-----------
	START_PATH	e_sea_nocol_above_soff

	P_SET		hp,100
	P_CLRTYPE	enemy1
	P_COLLISIONS	OFF
	P_SHADOW	OFF
	P_GOSUB		sea_init_above
	P_END
;-----------
	START_PATH	e_sea_buil_above_soff

	P_GOSUB		init_hardslope_soff
	P_GOSUB		sea_init_above
;.above_same	LOCAL
	P_END
;-----------
	START_PATH	e_sea_nocol_below_soff

	P_SET		hp,100
	P_CLRTYPE	enemy1
	P_SHADOW	OFF
	P_GOSUB		sea_init_below
	P_END
;-----------
	START_PATH	e_sea_buil_below_soff

	P_GOSUB		init_hardslope_soff
	P_GOSUB		sea_init_below
;sea_init_below
;	P_IMPORT	pword1,Player1_worldy
;	P_SET		ox,-1000
;	P_IFLARGER	pword1,ox,.below_same
;	P_INVISIBLE	ON
;.below_same
;	P_TRIGGER	i_sea_pl_in_sea_nocol,BelowSea
;	P_TRIGGER	i_sea_pl_out_sea,AboveSea
;	P_RETURN
	P_END
;-----------
	START_PATH	e_hyouzan

	P_CLIPPING	ON
	P_GOSUB		init_hardslope_soff
	P_SCENERY
	
;-----------
	START_PATH	e_sea_outline

	P_SET		hp,100
	P_SHADOW	OFF
	P_COLLISIONS	OFF
	P_CLRTYPE	enemy1
	P_SET		worldy,512
	P_IMPORT	pword1,Player1_worldy
	P_SET		ox,-1000
	P_IFLARGER	pword1,ox,.again
	P_SET		worldy,-488
.again
	P_TRIGGER	.under,BelowSea
	P_TRIGGER	.above,AboveSea

	P_END
.under
	P_SET		worldy,512
	P_RETURN
.above
	P_SET		worldy,-488
	P_RETURN

;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º GROUND OBJECT º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
	START_PATH	e_totem_pole

	P_GOSUB		init_hardslope_soff
	P_INVISIBLE	ON
.wait_loop
	P_WITHINRADIUS	500,.near
	P_GOTO		.wait_loop
.near
	P_INPLAYERSCONE	-10,10,.act_on
	P_GOTO		.wait_loop
.act_on
	P_SET		worldy,400
	P_CLIPPING	ON
	P_INVISIBLE	OFF
	P_COLLISIONS	OFF

	P_DO		8
	P_ADD		worldy,-50
	P_NEXT
	P_CLIPPING	OFF
	P_ZERO		worldy
	P_END
;------------
	START_PATH	e_kinoko

	P_GOSUB		init_hardslope
	P_SETANIM	0
	P_EXPORT	gbyte1,roty
	P_INC		roty
	P_DO		roty
	P_ADD		worldy,-20
	P_INEXT
	P_ZERO		roty
	P_EXPORT	gword1,worldy
	P_SET		pword1,-70
	P_IFSMALLER	worldy,pword1,.pass
	P_SET		shape,kinoko_dlow
.pass
	P_SPAWN		0,0,0,0,0,0,kinoko_n,e_buil_shadow_off,100,4,1
	P_BECOME
	P_IMPORT	childy,gword1
	P_NEG		childy
	P_IMPORT	animframe,gbyte1
	P_SET		pbyte1,8
	P_SETSWITCH	pbyte1,animframe
	P_UNBECOME

	P_WAIT		1
	P_POSCHILDREN	OFF
	P_SCENERY

;------------
	START_PATH	e_for_m_iwa

	P_GOSUB		init_hardslope_soff
.col_loop
	P_WITHINRADIUS	1500,.change_id
	P_SET		coltab,id_3_c&WM
	P_GOTO		.col_loop
.change_id
	P_IFNOTZERO	pbyte1,.id_is_1
	P_SET		coltab,id_0_c&WM
	P_GOTO		.col_loop
.id_is_1
	P_SET		coltab,id_1_c&WM
	P_GOTO		.col_loop
;------------
	START_PATH	e_hako_lift

	P_GOSUB		init_hardslope
	P_SETANIM	0
	P_SET		pbyte1,-2
.loop
	P_WAIT		60

;	P_SOUNDEFFECT	ob_slide_switch	;$ad
	P_DO		72
	P_ADD		worldy,pbyte1
	P_NEXT
;	P_SOUNDEFFECT	leveltrig_stop	;$cc

	P_NEG		pbyte1
	P_IGOTO		.loop

;------------
	START_PATH	e_hako_6
	P_INC		pbyte1
	START_PATH	e_hako_5
	P_INC		pbyte1
	START_PATH	e_hako_4
	P_INC		pbyte1
	START_PATH	e_hako_3
	P_INC		pbyte1
	START_PATH	e_hako_2
	P_INC		pbyte1
	START_PATH	e_hako_1
	P_INC		pbyte1
	START_PATH	e_hako_0
.hako_same
	P_SET		pbyte2,8
	P_SETSWITCH	pbyte2,pbyte1
	P_SET		animframe,pbyte1
	P_GOSUB		init_hardslope_soff
	P_IMPORT	pbyte1,KGameMapPtr
	P_IFNOTSAME	pbyte1,5,.not_sea
	P_CLIPPING	ON
.not_sea
	P_SCENERY
;------------
	START_PATH	e_kowareru_box

	P_INC		skidy
	P_IGOTO		pe_antenna_box.start
;------------
	START_PATH	e_kaifuku_panel

	P_GOSUB		init_hardslope_soff
	P_RADAROBJ	ra_HPpanel
	P_CLIPPING	ON
	P_INC		slopenum
	P_SETCOLANIM	0
	P_TRIGGER	.kaifu_ani,Always
	P_TRIGGER	.kaifu_on,WhenSteppedOn
	P_END
.invis_arrow
	P_BECOMESHAPE
	P_INVISIBLE	ON
	P_UNBECOME
	P_IGOTO		.no_arrow
.kaifu_on
	P_FINDSHAPE	arrow_0
	P_SHAPEDEAD	.no_arrow
	P_SHAPEDISTLESS	500,.invis_arrow
.no_arrow
	P_INC		childrotx
	P_IFPLAYERFULLHP	.kaifu_full
	P_IFNOTZERO	pbyte1,.nothajimete
	P_SOUNDEFFECT	shieldrecover	;$38
;	P_TRIGGER	.kaifuku_kira,8
	P_INC		pbyte1
.nothajimete
	P_GINC		b,player1_hpadd
	P_SET		childrotz,5
	P_RETURN
.kaifu_full
	P_IFZERO	pbyte1,.mou_tometa
	P_DEC		childrotz
	P_IFNOTZERO	childrotz,.mou_tometa
	P_SOUNDEFFECT	leveltrig_stop	;$cc
;	P_TRIGGER	.kaifuku_kira,OFF
	P_ZERO		pbyte1
.mou_tometa
	P_RETURN

;.kaifuku_kira
;	P_QSPAWN	kirakira,e_sp_kirakira,100,-3
;	P_BECOME
;	P_COPYPLAYERPOS
;	P_ADD		worldy,-10
;	P_UNBECOME
;	P_RETURN

.kaifu_ani
	P_ADDCOLANIM	1,3
	P_IFNOTSAME	childroty,childrotx,.now_on
	P_IFZERO	pbyte1,.now_on
	P_SOUNDEFFECT	leveltrig_stop	;$cc
;	P_TRIGGER	.kaifuku_kira,OFF
	P_ZERO		pbyte1
.now_on
	P_SET		childroty,childrotx
	P_RETURN
;-----------
	START_PATH	e_miss_dai_live_sea
	P_SET		pword1,-1000
	P_IFLARGER	worldy,pword1,.in_sea
;out_sea
	P_GOSUB		sea_init_above
	P_IGOTO		.same_live
.in_sea
	P_GOSUB		sea_init_below
.same_live
;-----------
	START_PATH	e_miss_dai_live

	P_GOSUB		init_hardslope_soff
	P_TRIGGER	.miss_dead,WhenFlagged
	P_END
.miss_dead
	P_FORCE		.col_lock
	P_RETURN
.col_lock
	P_STAMPSTART
;-----------
	START_PATH	e_miss_dai_sea
	P_SET		pword1,-1000
	P_IFLARGER	worldy,pword1,.in_sea
;out_sea
	P_GOSUB		sea_init_above
	P_IGOTO		.same_live
.in_sea
	P_GOSUB		sea_init_below
.same_live
	START_PATH	e_miss_dai

	P_SETCOLANIM	3
	P_GOSUB		init_hardslope_soff
	P_END
;-----------
	START_PATH	e_planet_cannon

	P_SET		roty,hp
	P_SET		rotx,ap
	P_GOSUB		set_hp100_ap4_enemy
	P_ACTIVE	ON
	P_SHADOW	OFF
	P_SET		slopenum,50
	P_SPAWN		0,0,130<<big_l_scale,0,0,0,big_l_f,e_pl_cannon_top,100,4,1
	P_TRIGGER	.life_ck,Always
	P_END
.life_ck
	P_IFLARGER	hp,slopenum,.life_ok
	P_FORCE		.cannon_dead
.life_ok
	P_RETURN
.cannon_dead
	P_TRIGGER	.life_ck,OFF
	P_COLLISIONS	OFF
	P_IMPORT	pbyte1,KEnemyNumber
	P_IFNOTSAME	pbyte1,1,.not_last
	P_SPAWN		0,0,65<<big_l_scale,0,0,0,nullshape,e_cannon_demo_tar,100,0,2
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_GOSUB		demo_move_wait
.not_last
	P_SCREENFLASH
	P_TRIGGER	kani_explode_big,8
	P_FLAGCHILD	1
	P_UNLINKCHILD	1
	P_SET		pbyte1,-2
	P_TRIGGER	cannon_down,Always
	P_WAIT		35
	P_GOSUB		many_exp_group
	P_GDEC		b,KEnemyNumber
	P_SCORE		sc_planet_cannon
	P_CIRCLEWINDOW	1,big			;10
	P_EXPLODE
;-----------
	START_PATH	e_pl_cannon_top

	P_ACTIVE	ON
	P_SHADOW	OFF
	P_TRIGGER	.cannon_top_hit,WhenHit
	P_TRIGGER	.cannon_dead,WhenFlagged
	P_END
.cannon_dead
	P_FORCE		.cannon_dead_on
	P_RETURN
.cannon_dead_on
	P_TRIGGER	.cannon_dead,OFF
	P_COLLISIONS	OFF
	P_SET		pbyte1,2
	P_TRIGGER	cannon_down,Always
	P_TRIGGER	kani_explode_big,8
	P_WAIT		30
	P_GOSUB		many_exp_group
	P_EXPLODE

.cannon_top_hit
	P_ADD		hp,-100
	P_EXPORT	gbyte1,hp
	P_BECOMEMOTHER
	P_IMPORT	pbyte1,gbyte1
	P_ADD		hp,pbyte1
	P_UNBECOME
	P_SET		hp,100
	P_RETURN
;-----------
	START_PATH	e_cannon_demo_tar

	P_INVISIBLE	ON
	P_GOSUB		make_demo_target
	P_EXPORT	gword1,worldy
	P_BECOME
	P_SET		tx,50
	P_IMPORT	pword1,gword1
	P_SET		slopenum,de_for_hydra
	P_UNBECOME
	P_GOSUB		demo_move_wait
	P_QSPAWN	explosion5,e_sp_explosion_stay_apsize,100,32
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_REMOVE

;-----------
	START_PATH	e_hit_down_dai_big
	P_INC		skidy
	START_PATH	e_hit_down_dai

	P_SHADOW	OFF
	P_GOSUB		init_notinvslope
	P_TRIGGER	.shizume,WhenHitByPlayer
	P_END
.shizume
	P_FORCE		.on
	P_RETURN
.on
	P_TRIGGER	.shizume,OFF
	P_INVINCIBLE	ON
	P_CLIPPING	ON
.big
	P_DO		14
	P_ADD		worldy,10
	P_NEXT
	P_DEC		skidy
	P_WAIT		1
	P_IFZERO	skidy,.big
	P_END
;-----------
	START_PATH	e_buil_shadow_off

	P_GOSUB		init_hardslope_soff
	P_END
;-----------
	START_PATH	e_building

	P_GOSUB		init_hardslope
	P_END
;-----------
	START_PATH	e_inert_nocol_soff

	P_BECOMEINERT
	P_IGOTO		pe_nocol_s_off.inert_start
;-----------
	START_PATH	e_cyou_center

	P_INVISIBLE	ON
	P_IGOTO		pe_nocol_s_off.inert_start
;-----------
	START_PATH	e_nocol_s_off_g

	P_GROUNDOBJ	ON

	START_PATH	e_nocol_s_off

.inert_start	LOCAL
	P_SHADOW	OFF
;-----------
	START_PATH	e_nocolobj

.st	LOCAL
	P_SET		hp,100
	P_COLLISIONS	OFF
	P_CLRTYPE	enemy1

	P_SCENERY
;-----------
	START_PATH	e_ike_0

	P_POOL		-1
	P_GOSUB		init_hardslope_soff
	P_SCENERY

;---------------- INIT SLOPE
init_hardslope_soff
	P_SHADOW	OFF
init_hardslope
	P_INVINCIBLE	ON
init_notinvslope
	P_SET		hp,100
	P_SET		ap,4
	P_SLOPE		ON
	P_COLLISIONS	OFF
	P_CLRTYPE	enemy1
	P_RETURN
;ÉÍÍÍÍÍÍÍÍÍÍÍ»
;º MY WEAPON º
;ÈÍÍÍÍÍÍÍÍÍÍÍ¼
	START_PATH	e_eplasma_hou

	P_WEAPON	Eplasma1
	P_FACEPLAYER	IMMEDIATE
	P_FIRE
	P_REMOVE
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SOFTWARE SPRITE SPARK   º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
mk_many_spark
	P_QSPAWN	wallflash,e_sp_spark,10,8
	P_BECOME
	P_ACTIVE	ON
	P_SETRANDOM	pbyte1,127
	P_ADD		pbyte1,-64
	P_ADD		worldx,pbyte1
	P_SETRANDOM	pbyte1,127
	P_ADD		pbyte1,-64
	P_ADD		worldy,pbyte1
	P_SETRANDOM	pbyte1,127
	P_ADD		pbyte1,-64
	P_ADD		worldz,pbyte1
	P_SETRANDOM	hp,7
	P_INC		hp
	P_UNBECOME
	P_RETURN
;-----------
	START_PATH	e_sp_spark

	P_SPRITE	0,8
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_CLRTYPE	enemy1
	P_ADD		tx,ap
	P_SETCOLANIM	0
	P_SOUNDEFTNEARPOS	en_plasma	;$83
	P_WAIT		1
	P_DO		hp
	P_ADDCOLANIM	1,2
	P_INC		pbyte1
	P_IFNOTSAME	pbyte1,4,.nos
	P_SOUNDEFTNEARPOS	en_plasma	;$83
.nos
	P_NEXT
	P_REMOVE

;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SOFTWARE SPRITE SPLASH  º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
	START_PATH	e_sp_stay_splash

	P_SPRITE	0,1
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_CLRTYPE	enemy1
	P_ADD		tx,hp
	P_TRIGGER	.rand_anim,32
	P_IMPORT	pbyte1,KGameMapPtr
	P_IFNOTSAME	pbyte1,5,.re_set
	P_GOSUB		sea_init_above
;	P_TRIGGER	i_sky_pl_in_sea,BelowSea
;	P_TRIGGER	i_sky_pl_out_sea_nocol,AboveSea
.re_set
	P_SET		colframe,ap
	P_END
.rand_anim
	P_RANDOMGOTO	.pass
	P_FORCE		.anim_on
.pass
	P_RETURN
.anim_on
	P_DEC		colframe
	P_WAIT		1
	P_INC		colframe
	P_RANDOMGOTO	.re_set
	P_GOTO		.anim_on

	P_END
;-----------
	START_PATH	e_sp_splash_cont

	P_INC		skidy

	START_PATH	e_sp_splash

;ap de size wo uketoru
;hp de anim no kaisuu

	P_SPRITE	0,8
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_CLRTYPE	enemy1
	P_ADD		tx,ap
;	P_SET		worldy,-50
	P_IFNOTZERO	skidy,.for_cont
	P_SETCOLANIM	0
	P_WAIT		1
	P_DO		hp
	P_ADDCOLANIM	1,8
	P_NEXT
	P_REMOVE
.for_cont
	P_INVISIBLE	ON
	P_IFZERO	ap,.ze
	P_WAIT		5
.ze
	P_INVISIBLE	OFF
	P_COLLISIONS	OFF
	P_SETCOLANIM	7
	P_SET		tx,0
	P_DO		8
	P_ADD		tx,4
	P_NEXT
	P_GOTO		.ze
	P_GOTO		.for_cont
	
;.for_cont_lp
;	P_RANDOMGOTO	.inv
;	P_INVISIBLE	ON
;	P_GOTO		.for_cont_lp
;.inv
;	P_INVISIBLE	OFF
;	P_COLLISIONS	OFF
;	P_GOTO		.for_cont_lp
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SOFTWARE SPRITE KIRAKIRA   º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
	START_PATH	e_kira_maker
;ap=kaisuu hp=size
	P_INVISIBLE	ON
	P_CLRTYPE	enemy1
	P_DO		ap
	P_EXPORT	gbyte1,hp
	P_QSPAWN	kirakira,e_sp_kirakira,100,0
	P_BECOME
	P_ACTIVE	ON
	P_IMPORT	ap,gbyte1
	P_UNBECOME
	P_WAIT		2
	P_NEXT
	P_REMOVE
;-----------
	START_PATH	e_sp_kirakira

	P_SPRITE	0,8
	P_ADD		tx,ap
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_CLRTYPE	enemy1
	P_TRIGGER	.fall,Always

	P_SETRANDOM	pbyte1,63
	P_ADD		pbyte1,-32
	P_ADD		worldx,pbyte1

	P_SETRANDOM	pbyte1,63
	P_ADD		pbyte1,-32
	P_ADD		worldy,pbyte1

	P_SETRANDOM	pbyte1,63
	P_ADD		pbyte1,-32
	P_ADD		worldz,pbyte1

	P_WAIT		13

	P_REMOVE
.fall
	P_INC		pbyte2
	P_ADD		worldy,pbyte2
	P_DEC		tx
	P_RETURN
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SOFTWARE SPRITE BOOST º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
;-----------SOS_0 no boost
sos_0_boost
	P_SET		pbyte2,1
	P_EXPORT	gbyte2,pbyte2
	P_SET		pword1,-200
	P_SET		pbyte1,30
	P_GOSUB		make_boost
	P_RETURN
;-----------
make_boost
	P_DO		pbyte2
	P_EXPORT	gbyte1,pbyte1
	P_EXPORT	gword1,pword1
	P_SPAWN		0,0,0,0,0,0,boost,e_sp_boost,100,0,9
	P_BECOME
	P_IMPORT	pbyte1,gbyte2
	P_SETID		pbyte1
	P_INC		pbyte1
	P_EXPORT	gbyte2,pbyte1
	P_DEC		pbyte1
	P_IMPORT	ap,gbyte1
	P_IMPORT	childz,gword1
	P_UNBECOME
	P_INEXT
	P_RETURN
;-----------
	START_PATH	e_sp_boost_hp
	P_INC		skidy
	START_PATH	e_sp_boost

	P_ACTIVE	ON
	P_SPRITE	0,8
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_CLRTYPE	enemy1
	P_ADD		tx,ap

.again_on
	P_TRIGGER	.inv_on,WhenFlagged
	
	P_SETCOLANIM	0
	P_DO		3
	P_ADDCOLANIM	1,4
	P_NEXT
	P_WAIT		1
	P_IFNOTZERO	skidy,.hp_loop
.loop
	P_SETCOLANIM	0
	P_WAIT		1
	P_SETCOLANIM	1
	P_GOTO		.loop
.inv_on
	P_INVISIBLE	ON
	P_FORCE		.wait_inv_off
	P_RETURN
.wait_inv_off
	P_TRIGGER	.inv_on,OFF
	P_TRIGGER	.inv_off,WhenFlagged
	P_END
.inv_off
	P_INVISIBLE	OFF
	P_COLLISIONS	OFF
	P_FORCE		.to_again_on
	P_RETURN
.to_again_on
	P_TRIGGER	.inv_off,OFF
	P_IGOTO		.again_on
.hp_loop
	P_DO		hp
	P_SETCOLANIM	0
	P_WAIT		1
	P_SETCOLANIM	1
	P_NEXT
	P_REMOVE
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SOFTWARE SPRITE EXPLOSIONS º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
many_exp_group
	P_DO		4
	P_QSPAWN	explosion5,e_sp_bigrandom_explosion,100,90
	P_BECOME
	P_ADD		slopenum,3
	P_ACTIVE	ON
	P_UNBECOME
	P_NEXT
	P_RETURN
;------------
group_explode
	P_DO		4
	P_QSPAWN	explosion5,e_sp_bigrandom_explosion,100,32
	P_BECOME
	P_ADD		slopenum,2
	P_ACTIVE	ON
	P_UNBECOME
	P_NEXT
	P_RETURN
;------------
s_group_explode
	P_DO		2		;4
	P_QSPAWN	explosion5,e_sp_bigrandom_explosion,100,8
	P_BECOME
;	P_ADD		slopenum,1
	P_ACTIVE	ON
	P_UNBECOME
	P_NEXT
	P_RETURN
;-----------
senkan_explode
	P_QSPAWN	explosion5,e_sp_bigrandom_explosion,100,100
	P_BECOME
	P_ACTIVE	ON
	P_ADD		slopenum,6
	P_UNBECOME
	P_RETURN
kani_explode_big
	P_QSPAWN	explosion5,e_sp_bigrandom_explosion,100,64
	P_BECOME
	P_ACTIVE	ON
	P_ADD		slopenum,3
	P_UNBECOME
	P_RETURN
kani_explode
	P_QSPAWN	explosion5,e_sp_bigrandom_explosion,100,31
	P_BECOME
	P_ACTIVE	ON
	P_INC		slopenum
	P_UNBECOME
	P_RETURN
base_explode
	P_ADD		worldy,-150
	P_QSPAWN	explosion5,e_sp_bigrandom_explosion,100,50
	P_BECOME
	P_ACTIVE	ON
	P_ADD		slopenum,3
	P_UNBECOME
	P_ADD		worldy,150
	P_RETURN
;-----------
mk_many_damy_exp_silent
	P_QSPAWN	explosion5,e_sp_randomsize_explosion,1,0
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_RETURN
mk_many_damy_exp
	P_QSPAWN	explosion5,e_sp_randomsize_explosion,100,0
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_RETURN
;------------
	START_PATH	e_sp_random_exp_maker

	P_INVISIBLE	ON
	P_TRIGGER	mk_many_damy_exp,4
	P_END
;------------
	START_PATH	e_sp_explosion_stay_apsize

	P_INC		pbyte2
	P_IGOTO		pe_sp_explosion.start
;-----------
	START_PATH	e_sp_bigrandom_explosion

	P_SETRANDOM	pbyte1,31
	P_ADD		ap,pbyte1
	P_IGOTO		pe_sp_explosion.start
;-----------
	START_PATH	e_sp_explosion_stay

	P_INC		pbyte2
;-----------

	START_PATH	e_sp_randomsize_explosion

	P_SETRANDOM	ap,15

	START_PATH	e_sp_explosion

.start	LOCAL
	P_IFROBOT	.not_vec
	P_IFUFO		.not_vec
	P_TRIGGER	player_vec_neg,ALways
.not_vec
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_CLRTYPE	enemy1
	P_SPRITE	0,8
	P_ADD		tx,ap
	P_SET		pbyte1,17

	P_IFSAME	hp,1,.same

	P_IFLARGER	tx,pbyte1,.big_sound
	P_SOUNDEFTDIST	en_explode_demo	;$8b
	P_IGOTO		.same
.big_sound
	P_SOUNDEFTDIST	en_explode_s	;$70

.same	LOCAL
	P_IFSAME	pbyte2,1,.stay
	P_INC		slopenum

	P_SETRANDOM	pbyte1,127
	P_ADD		pbyte1,-64

	P_DO		slopenum
	P_ADD		worldx,pbyte1
	P_INEXT

	P_SETRANDOM	pbyte1,127
	P_ADD		pbyte1,-64
	P_DO		slopenum
	P_ADD		worldy,pbyte1
	P_INEXT

	P_SETRANDOM	pbyte1,127
	P_ADD		pbyte1,-64

	P_DO		slopenum
	P_ADD		worldz,pbyte1
	P_INEXT
.stay
	START_PATH	e_smoke_simple

	P_COLLISIONS	OFF

	P_SETCOLANIM	0
	P_WAIT		1
	P_DO		7
	P_ADDCOLANIM	1,8
	P_NEXT

	P_REMOVE
player_vec_neg
	P_PUSH		pbyte1
	P_IMPORT	pbyte1,Player1_vx
	P_ADD		pbyte1,pbyte1
	P_NEG		pbyte1
	P_ADD		worldx,pbyte1
	P_IMPORT	pbyte1,Player1_vz
	P_ADD		pbyte1,pbyte1
	P_NEG		pbyte1
	P_ADD		worldz,pbyte1
	P_PULL		pbyte1
	P_RETURN
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º SOFTWARE SPRITE SMOKE º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
dandou_smoke
	P_SOUNDEFTDISTPOS	en_wormappear	;$7f
	P_QSPAWN	smoke,e_sp_smoke,100,60
	P_BECOME
	P_ZERO		worldy
	P_ACTIVE	ON
	P_INC		slopenum
	P_UNBECOME
	P_RETURN
hasami_smoke
	P_SOUNDEFTDISTPOS	en_wormappear	;$7f
hasami_smoke_nosou
	P_QSPAWN	smoke,e_sp_randomsize_smoke,100,0
	P_BECOME
	P_ZERO		worldy
	P_ACTIVE	ON
	P_UNBECOME
	P_RETURN
;------------
	START_PATH	e_sp_randomsize_smoke
	P_SETRANDOM	ap,31
	P_IGOTO		pe_sp_smoke.start

	START_PATH	e_sp_randomsize_smoke_stay
	P_SETRANDOM	ap,15

	START_PATH	e_sp_smoke_stay
	P_INC		pbyte2

	START_PATH	e_sp_smoke
.start	LOCAL
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_CLRTYPE	enemy1
	P_SPRITE	0,8
	P_ADD		tx,ap
	P_IGOTO		pe_sp_explosion.same
;------------
	START_PATH	e_sp_smoke_up

	P_IMPORT	pbyte1,KGameMapPtr
	P_IFNOTSAME	pbyte1,5,.not_sea
	P_IMPORT	pword1,Player1_Worldy
	P_IFNOTBETWEEN	-1000,pword1,0,.not_sea
	P_REMOVE
.not_sea
	P_SPRITE	0,4
	P_ADD		tx,ap
	P_SET		pbyte1,hp
	P_NEG		pbyte1
	P_COLLISIONS	OFF
	P_RANGECHECK	OFF
	P_TRIGGER	.smoke_up,Always
	P_SETCOLANIM	0
	P_WAIT		1
	P_DO		7
	P_ADDCOLANIM	1,8
	P_INC		tx
	P_NEXT
	P_REMOVE
.smoke_up
	P_ADD		worldy,pbyte1
	P_RETURN
;------------ NAGAKU TANABIKU SMOKE MAKER
exp_smoke
	P_QSPAWN	smoke,e_smoke,100,-15
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_RETURN

;------------ NAGAKU TANABIKU SMOKE and EXPLOSION
	START_PATH	e_noroshi_maker

	P_ACTIVE	ON
	P_INVISIBLE	ON
.loop
	P_QSPAWN	smoke,e_noroshi_smoke,100,0
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_WAIT		15
	P_GOTO		.loop
;------------
	START_PATH	e_sos_almost

	P_ACTIVE	ON
	P_IMPORT	childx,Player1_worldx
	P_IMPORT	childy,Player1_worldy
	P_IMPORT	childz,Player1_worldz
	P_DO		hp
	P_CHASE		worldx,childx
	P_CHASE		worldy,childy
	P_CHASE		worldz,childz
	P_INEXT
;---------
	START_PATH	e_noroshi_smoke

	P_QSPAWN	explosion5,e_sp_explosion_stay_apsize,100,10	;32
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME

;------------ NAGAKU TANABIKU SMOKE
	START_PATH	e_smoke

	P_SPRITE	0,16
	P_RANGECHECK	OFF
	P_COLLISIONS	OFF
	P_TRIGGER	.make_big,Always

	P_SETCOLANIM	0

	P_DO		3
	P_DO		4
	P_ADDCOLANIM	1,8
	P_NEXT
	P_DO		4
	P_ADDCOLANIM	-1,8
	P_NEXT
	P_NEXT

	P_WAIT		1
	P_DO		7
	P_ADDCOLANIM	1,8
	P_NEXT
	P_REMOVE
.make_big
	P_ADD		worldy,-20
	P_ADD		worldx,ap
	P_INC		tx
	P_INC		tx
	P_RETURN
;-----------
make_noroshi_smoke
	P_QSPAWN	smoke,e_smoke,100,5
	P_BECOME
	P_ACTIVE	ON
	P_UNBECOME
	P_RETURN
;-----------
make_noroshi_buble
	P_SET		childrotx,-30
	P_DO		2
	P_EXPORT	gbyte1,childrotx
	P_ADD		childrotx,60
	P_QSPAWN	bubble,e_bubble,10,5
	P_BECOME
	P_IMPORT	pbyte2,gbyte1
	P_ADD		worldy,pbyte2
	P_ACTIVE	ON
	P_UNBECOME
	P_INEXT
	P_RETURN
;-----------
	START_PATH	e_bubble

	P_SPRITE	0,2
	P_RANGECHECK	OFF
	P_COLLISIONS	OFF
	P_CLIPPING	ON
	P_SET		pbyte1,hp
	P_TRIGGER	.make_big,Always

	P_SETRANDOM	pbyte2,35
	P_ADD		pbyte2,-16
	P_ADD		worldx,pbyte2
	P_SETRANDOM	pbyte2,35
	P_ADD		pbyte2,-16
	P_ADD		worldz,pbyte2

	P_DO		25
	P_ADDCOLANIM	1,2
	P_NEXT
	P_REMOVE
.make_big
	P_ADD		worldy,-30
	P_ADD		worldx,pbyte2
	P_ADD		tx,pbyte1
	P_NEG		pbyte1
	P_NEG		pbyte2
	P_INC		tx
	P_RETURN
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º DEMO CONTROLL º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
;---------------- KAITEN DAI DANDOU
	START_PATH	e_dandou_demo_maker

	P_INVISIBLE	ON
	P_WAIT		15
	P_FINDSHAPE	dandou_tate
	P_BECOMESHAPE
	P_EXPORT	gword1,worldx
	P_EXPORT	gword2,worldy
	P_EXPORT	gword3,worldz
	P_UNBECOME

	P_IMPORT	worldx,gword1
	P_IMPORT	worldy,gword2
	P_IMPORT	worldz,gword3
	P_ADD		worldy,-800

	P_GOSUB		make_demo_target
	P_BECOME
	P_IMPORT	pword1,gword2
	P_ADD		pword1,-1000
	P_SET		slopenum,de_for_kusha		;map_fuse
	P_SET		tx,40
	P_UNBECOME

	P_GOSUB		demo_move_wait

	P_IMPORT	pbyte2,ebyte5
	P_SETSWITCH	ap,pbyte2
	P_EXPORT	ebyte5,pbyte2

	P_REMOVE
;---------------- MAKE DEMO
make_demo_target
	P_QSPAWN	demo_target,e_r_demo_target,100,0
make_demo_worm
	P_BECOME
	P_INVISIBLE	ON
	P_INVINCIBLE	ON
	P_UNBECOME
make_demo_kani
	P_QSPAWN	nullshape,e_robo_demo,100,0
	P_ACTIVE	ON
	P_RETURN

;------------------ SAVED ROBO DEMO

	START_PATH	e_robo_demo

	P_INVINCIBLE	ON
	P_INVISIBLE	ON
;	P_ZERO		rotz

.find
	P_FINDSHAPE	demo_target
	P_SHAPEDEAD	.find_again
	P_IGOTO		.start
.find_again
	P_GOTO		.find
.start
	P_GOSUB		make_org_view

	P_SET		childy,worldy
	P_IFSAME	slopenum,de_for_fumu,.move_end
	P_COPYPLAYERPOS
	P_SET		childy,worldy

	P_IFSAME	slopenum,de_for_robot,.move_ck_500
	P_IFSAME	slopenum,de_for_ori,.move_ck_500
	P_IFSAME	slopenum,de_for_hitfuse,.move_ck_500
	P_IFSAME	slopenum,de_for_cupfuse,.move_ck_600
	P_IFSAME	slopenum,de_for_kaiten,.move_ck_700
	P_IFSAME	slopenum,de_for_slide,.sli
	P_IFSAME	slopenum,de_for_men,.men
	P_IFSAME	slopenum,de_for_kusha,.move_ck_1000
	P_IFSAME	slopenum,de_for_kani,.move_ck_1400
	P_IFSAME	slopenum,de_for_mikako,.mikako_up
	P_IFSAME	slopenum,de_for_base,.move_ck_1000
	P_IFSAME	slopenum,de_for_kurage,.move_ck_1000
	P_IFSAME	slopenum,de_for_map_fuse,.move_ck_500
	P_IFSAME	slopenum,de_for_tekikan,.move_ck_2000
	P_IFSAME	slopenum,de_for_teki_3,.move_ck_2000
	P_IFSAME	slopenum,de_for_teki_2,.move_ck_2000
	P_IFSAME	slopenum,de_for_hydra,.move_ck_2000
	P_IFSAME	slopenum,de_for_stepsen,.move_ck_2000
	P_IFSAME	slopenum,de_for_stepsen2,.move_ck_2000

	P_SHAPEDISTLESS	300,.move_out_again
.fast
	P_SHAPEDISTLESS	400,.move_in_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	120
	P_IGOTO		.fast
.move_in_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	10
	P_SHAPEDISTMORE	300,.move_in_again
	P_IGOTO		.move_end

.move_out_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	-10
	P_SHAPEDISTLESS	300,.move_out_again
	P_IGOTO		.move_end
;-----------
.move_ck_500
	P_SHAPEDISTLESS	500,.move_out500_again
.fast500
	P_SHAPEDISTLESS	600,.move_in500_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	120
	P_IGOTO		.fast500
.move_in500_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	10
	P_SHAPEDISTMORE	500,.move_in500_again
	P_IGOTO		.move_end

.move_out500_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	-10
	P_SHAPEDISTLESS	500,.move_out500_again
	P_IGOTO		.move_end
;-----------
.move_ck_600
	P_SHAPEDISTLESS	600,.move_out600_again
.fast600
	P_SHAPEDISTLESS	700,.move_in600_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	120
	P_IGOTO		.fast600
.move_in600_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	10
	P_SHAPEDISTMORE	600,.move_in600_again
	P_IGOTO		.move_end

.move_out600_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	-10
	P_SHAPEDISTLESS	600,.move_out600_again
	P_IGOTO		.move_end
;-----------
.move_ck_700
	P_SHAPEDISTLESS	700,.move_out700_again
.fast700
	P_SHAPEDISTLESS	800,.move_in700_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	120
	P_IGOTO		.fast700
.move_in700_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	10
	P_SHAPEDISTMORE	700,.move_in700_again
	P_IGOTO		.move_end

.move_out700_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	-10
	P_SHAPEDISTLESS	700,.move_out700_again
	P_IGOTO		.move_end
;-----------
.move_ck_1000
	P_SHAPEDISTLESS	1000,.move_out1000_again
.move_in1000_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	50
	P_SHAPEDISTMORE	1000,.move_in1000_again
	P_IGOTO		.move_end

.move_out1000_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	-50
	P_SHAPEDISTLESS	1000,.move_out1000_again
	P_IGOTO		.move_end
;-----------
.move_ck_1400
	P_SHAPEDISTLESS	1400,.move_out1400_again
.move_in1400_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	100
	P_SHAPEDISTMORE	1400,.move_in1400_again
	P_IGOTO		.move_end

.move_out1400_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	-100
	P_SHAPEDISTLESS	1400,.move_out1400_again
	P_IGOTO		.move_end
;-----------
.move_ck_2000
	P_SHAPEDISTLESS	2000,.move_out2000_again
.move_in2000_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	100
	P_MOVEINSHAPE	100
	P_SHAPEDISTMORE	2000,.move_in2000_again
	P_IGOTO		.move_end

.move_out2000_again
	P_GOSUB		.keep_hi
	P_MOVEINSHAPE	-100
	P_MOVEINSHAPE	-100
	P_SHAPEDISTLESS	2000,.move_out2000_again
	P_IGOTO		.move_end
;-----------
.mikako_up
	P_ADD		worldx,-800
	P_ADD		worldz,-400
	P_IGOTO		.move_end
;-----------
.sli
	P_ADD		worldx,-500
	P_ADD		worldz,-100
	P_IGOTO		.move_end
;-----------
.men
	P_ADD		worldx,-350
	P_ADD		worldz,-350
;-----------
.move_end
	P_GOSUB		.keep_hi

	P_FACESHAPE	IMMEDIATE

	P_BEGINDEMO

	P_SET		childx,worldx
	P_SET		childy,worldy
	P_SET		childz,worldz

	P_SET		worldx,ox
	P_SET		worldy,oy
	P_SET		worldz,oz

.view_again
	P_WAIT		1
	P_DO		3			;2
	P_CHASE		worldx,childx
	P_CHASE		worldy,childy
	P_CHASE		worldz,childz
	P_SETCAMERA
	P_INEXT
	P_IFNOTSAME	worldx,childx,.view_again
	P_IFNOTSAME	worldy,childy,.view_again
	P_IFNOTSAME	worldz,childz,.view_again

	P_PUSH		pbyte1
	P_PUSH		pbyte2
	P_SET		pbyte2,1
	P_IMPORT	pbyte1,ebyte6
	P_SETSWITCH	pbyte2,pbyte1
	P_EXPORT	ebyte6,pbyte1
	P_PULL		pbyte2
	P_PULL		pbyte1

	P_INC		ty
	P_DO		ty
	P_WAIT		1
	P_NEXT

	P_IFSAME	slopenum,de_for_robot,.robot_up
	P_IFSAME	slopenum,de_for_ori,.robot_ori
	P_IFSAME	slopenum,de_for_tekikan,.tekikan_down
	P_IFSAME	slopenum,de_for_teki_3,.teki_3_down
	P_IFSAME	slopenum,de_for_teki_2,.teki_2_down
	P_IFSAME	slopenum,de_for_stepsen2,.step_sen_down
	P_SET		ty,1
	P_IFLARGER	tx,ty,.ok
	P_SET		tx,ty
.ok
	P_DO		tx
	P_INVISIBLE	ON
	P_NEXT

	P_GOSUB		back_org_view

	P_ENDDEMO

	P_REMOVE
.step_sen_down
	P_FINDSHAPE	senkan_0
	P_IGOTO		.senkan_same
.teki_2_down
	P_FINDSHAPE	teki_2
	P_IGOTO		.senkan_same
.teki_3_down
	P_FINDSHAPE	teki_3
	P_IGOTO		.senkan_same
.tekikan_down
	P_FINDSHAPE	tekikan
.senkan_same
	P_SET		ty,1
	P_IFLARGER	tx,ty,.sen_ok
	P_SET		tx,ty
.sen_ok
	P_DO		tx
	P_FACESHAPE
	P_SETCAMERA
	P_FACESHAPE
	P_SETCAMERA
	P_INVISIBLE	ON
	P_NEXT

	P_GOSUB		back_org_view

	P_ENDDEMO

	P_REMOVE
.robot_ori
	P_FINDSHAPE	d_robo_ori
	P_IGOTO		.same
.robot_up
	P_FINDSHAPE	d_robo
.same
	P_BECOMESHAPE
	P_EXPORT	gword1,worldx
	P_EXPORT	gword3,worldy
	P_EXPORT	gword2,worldz
	P_UNBECOME

	P_FINDSHAPE	demo_target
	P_BECOMESHAPE
	P_IMPORT	childx,gword1
	P_IMPORT	childy,gword3
	P_ADD		childy,-80		;-140		;-160
	P_IMPORT	childz,gword2
	P_UNBECOME

	P_INC		tx

	P_DO		tx
	P_DO		2
	P_SHAPEDISTLESS	300,.pass
	P_MOVEINSHAPE	10
.pass
	P_BECOMESHAPE
	P_CHASE		worldy,childy
	P_CHASE		worldx,childx
	P_CHASE		worldz,childz
	P_UNBECOME
	P_FACESHAPE
	P_SETCAMERA
	P_FACESHAPE
	P_SETCAMERA
	P_NEXT
	P_NEXT

	P_GOSUB		back_org_view

	P_ENDDEMO
	P_REMOVE
.keep_hi
	P_INC		skidy
	P_SET		worldy,childy

	P_IFZERO	pword1,.not_pw1
	P_SET		worldy,pword1
.not_pw1
	P_RETURN
;------------
	START_PATH	e_r_demo_target

	P_WAIT		10

	P_REMOVE
;ÉÍÍÍÍÍ»
;º SUB º
;ÈÍÍÍÍÍ¼
CurrentSw_Skidy_ck
	P_IMPORT	pword1,CurrentSwitch
	P_INC		skidy
	P_IFSWITCH	skidy,pword1,.sw_inv
	P_ZERO		pword1
	P_RETURN
.sw_inv
	P_SET		pword1,100
.sw_ok
	P_RETURN
;------------
dec_EEnemyNumber_skidy
	P_PUSH		pword1
	P_PUSH		pbyte1
	P_IMPORT	pword1,CurrentSwitch
	P_IMPORT	pbyte1,CurrentEEnemyNumber
	P_PRINT		skidy,d,eguchi
	P_SETSWITCH	skidy,pword1
	P_EXPORT	CurrentSwitch,pword1
	P_IFBETWEEN	0,skidy,8,.lower
	P_ADD		pbyte1,-16
	P_IGOTO		.set_eenemy
.lower
	P_ADD		pbyte1,-1
.set_eenemy
	P_EXPORT	CurrentEEnemyNumber,pbyte1
	P_PULL		pbyte1
	P_PULL		pword1
	P_RETURN
;------------
make_sw_num_hofhp
	P_PUSH		pbyte1
	P_SET		pbyte1,5
	P_SET		skidy,hp
	P_DO		4
	P_CLRSWITCH	pbyte1,hp
	P_INC		pbyte1
	P_SHIFTR	skidy
	P_INEXT
	P_PULL		pbyte1
	P_RETURN
;------------
make_sw_num_hofap
	P_PUSH		pbyte1
	P_SET		pbyte1,5
	P_SET		skidy,ap
	P_DO		4
	P_CLRSWITCH	pbyte1,ap
	P_INC		pbyte1
	P_SHIFTR	skidy
	P_INEXT
	P_INC		skidy
	P_PULL		pbyte1
	P_RETURN
;------------
ck_msg_maker
	P_QSPAWN	nullshape,e_ck_msg_maker,100,0
	P_RETURN
make_msg_maker
	P_QSPAWN	nullshape,e_msg_maker,100,0
	P_RETURN
;------------
down_30
	P_ADD		worldy,30
	P_RETURN
down_10
	P_ADD		worldy,10
	P_RETURN
cannon_down
	P_ADD		worldy,25
	P_ADD		rotx,pbyte1
	P_RETURN
;------------
ran_neg_pb1
	P_RANDOMGOTO	.neg_pb12
	P_NEG		pbyte1
.neg_pb12
	P_RETURN
;------------
set_hp100_ap4_enemy
	P_TRIGGER	marker_set,Always
	P_RADAROBJ	ra_enemy
	P_ALWAYSGENVECS	ON
set_hp100_ap4
	P_SET		hp,100
	P_SET		ap,4
	P_RETURN
;------------
;target_exp_flag
;	P_RELTOPLAYER	OFF
;	P_COLLISIONS	OFF
;;	P_ACCEL		0,10
;;	P_SETVEL	0
;	P_RETURN
;------------
final_enemy_demo
;	P_IMPORT	pbyte1,KEnemyNumber
;	P_IFNOTSAME	pbyte1,1,.not_demo
;	P_GOSUB		make_demo_target
;	P_EXPORT	gword1,worldy
;	P_BECOME
;	P_SET		tx,15
;	P_SET		slopenum,de_for_sonota
;	P_IMPORT	pword1,gword1
;	P_UNBECOME
;	P_GOSUB		demo_move_wait
;	P_GOSUB		s_group_explode
;.not_demo
	P_CLRDEMOSHAPE
	P_GDEC		b,KEnemyNumber
	P_GOSUB		s_group_explode
	P_SCREENFLASH
	P_EXPLODE
;------------
final_enemy_demo_space
	P_SPACESHIP	OFF
	P_RELTOPLAYER	OFF
	P_COLLISIONS	OFF
	P_ACCEL		0,10
	P_SETVEL	0
	P_PUSH		pbyte1
	P_IMPORT	pbyte1,KEnemyNumber
	P_IFNOTSAME	pbyte1,1,.not_demo
	P_PULL		pbyte1
	P_PUSH		rotz
	P_ZERO		rotz
	P_GOSUB		make_demo_target
	P_PULL		rotz
	P_EXPORT	gword1,worldy
	P_BECOME
	P_SET		tx,15
	P_SET		slopenum,de_for_kaiten
	P_IMPORT	pword1,gword1
	P_UNBECOME
	P_RETURN
.not_demo
	P_PULL		pbyte1
	P_SCREENFLASH
	P_RETURN
;------------
hajimete_msg_check
	P_IMPORT	pword1,eword3
	P_IFSWITCH	pbyte1,pword1,.not_hajimete
	P_SETSWITCH	pbyte1,pword1
	P_EXPORT	eword3,pword1
	P_EXPORT	eword2,ox
.not_hajimete
	P_RETURN
;------------
senkan_wave
	P_IFNOTZERO	mz,.slow_pass
	P_IFBETWEEN	-5,rotz,4,.not_wait
	P_INC		mz
.not_wait
	P_DEC		my
	P_IFZERO	my,.turn
	P_ADD		rotz,mx
	P_RETURN
.turn
	P_SET		my,21
	P_NEG		mx
	P_SET		mz,8
	P_RETURN
.slow_pass
	P_DEC		mz
	P_RETURN
;------------
shift_hap
	P_SET		pbyte1,hp
	P_SET		pbyte2,ap
	P_DO		4
	P_SHIFTR	pbyte1
	P_SHIFTR	pbyte2
	P_INEXT
	P_RETURN
;------------
clsw_hap
	P_SET		pbyte2,5
	P_DO		4
	P_CLRSWITCH	pbyte2,hp
	P_CLRSWITCH	pbyte2,ap
	P_INC		pbyte2
	P_INEXT
	P_RETURN
;------------

make_init_rot
	P_GOSUB		shift_hap
	P_INDEX		rotx,init_angle_tab,pbyte1
	P_INDEX		rotz,init_angle_tab,pbyte2

	P_GOSUB		clsw_hap
	P_INDEX		roty,init_angle_tab,hp

	P_RETURN

;	P_SET		pbyte1,hp
;	P_DO		4
;	P_SHIFTR	pbyte1
;	P_INEXT
;	P_INDEX		rotx,init_angle_tab,pbyte1
;
;	P_SET		pbyte2,5
;	P_DO		4
;	P_CLRSWITCH	pbyte2,hp
;	P_INC		pbyte2
;	P_INEXT
;	P_INDEX		roty,init_angle_tab,hp
;
;	P_SET		pbyte1,ap
;	P_DO		4
;	P_SHIFTR	pbyte1
;	P_INEXT
;	P_INDEX		rotz,init_angle_tab,pbyte1
;
;	P_SET		pbyte2,5
;	P_DO		4
;	P_CLRSWITCH	pbyte2,ap
;	P_INC		pbyte2
;	P_INEXT
;
;	P_RETURN
init_angle_tab
	db		0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240
;------------
suihei_hikou
	P_IFZERO	oz,.hp_loop
	P_DO		oz
	P_WAIT		1
	P_INEXT
.hp_loop
	P_WAIT		1	;4
	P_IFZERO	rotx,.ck_z
	P_IFBETWEEN	-128,rotx,0,.incx
	P_DEC		rotx
	P_IGOTO		.ck_z
.incx
	P_INC		rotx
.ck_z
	P_IFZERO	rotz,.end_z
	P_IFBETWEEN	-128,rotz,0,.incz
	P_DEC		rotz
	P_IGOTO		.end_z
.incz
	P_INC		rotz
.end_z
	P_IFNOTZERO	rotx,.hp_loop
	P_IFNOTZERO	rotz,.hp_loop
	P_IGOTO		.hp_start
;.not_hp_start
;	P_WAIT		50
.hp_start
	P_RETURN
;------------
reflect_laser
	P_REBOUNDLASER
	P_RETURN
;------------
rem_arrow
	P_FINDSHAPE	arrow_0
	P_SHAPEDEAD	.ret
	P_SHAPEDISTLESS	500,.aru_ar
.ret
	P_RETURN
.aru_ar
	P_FLAGSHAPE
	P_RETURN
;------------
enemy_num_rem
	P_IMPORT	childrotz,KEnemyNumber
	P_IFNOTZERO	childrotz,.cont_ok
	P_FORCE		.rem_on
.cont_ok
	P_RETURN
.rem_on
	P_REMOVE

;------------
immed_fire
	P_PUSH		roty
	P_FACEPLAYER	IMMEDIATE
	P_FIRE
	P_PULL		roty
	P_RETURN
;------------
set_child_xyz
	P_SET		childy,worldy
set_child_xz
	P_SET		childx,worldx
	P_SET		childz,worldz
	P_RETURN
;------------
put_marker
	P_EXPORT	gword1,childx
	P_EXPORT	gword2,childz
put_only_marker
	P_QSPAWN	marker,e_marker,100,0
	P_FINDSHAPE	marker
	P_RETURN
;------------
sea_init_above
	P_PUSH		ox
	P_IMPORT	pword1,Player1_worldy
	P_SET		ox,-1000
	P_IFSMALLER	pword1,ox,.above_same
	P_INVISIBLE	ON
.above_same
	P_TRIGGER	i_sky_pl_in_sea,BelowSea
	P_TRIGGER	i_sky_pl_out_sea_nocol,AboveSea
	P_PULL		ox
	P_RETURN
;------------
sea_init_below
	P_PUSH		ox
	P_IMPORT	pword1,Player1_worldy
	P_SET		ox,-1000
	P_IFLARGER	pword1,ox,.below_same
	P_INVISIBLE	ON
.below_same
	P_TRIGGER	i_sea_pl_in_sea_nocol,BelowSea
	P_TRIGGER	i_sea_pl_out_sea,AboveSea
	P_PULL		ox
	P_RETURN
;------------
sea_init_below_canhit
	P_IMPORT	pword1,Player1_worldy
	P_SET		ox,-1000
	P_IFLARGER	pword1,ox,.below_same
	P_INVISIBLE	ON
.below_same
	P_TRIGGER	i_sea_pl_in_sea,BelowSea
	P_TRIGGER	i_sea_pl_out_sea,AboveSea
	P_RETURN
;------------
sea_init_above_canhit
	P_IMPORT	pword1,Player1_worldy
	P_SET		ox,-1000
	P_IFSMALLER	pword1,ox,.above_same
	P_INVISIBLE	ON
.above_same
	P_TRIGGER	i_sky_pl_in_sea,BelowSea
	P_TRIGGER	i_sky_pl_out_sea,AboveSea
	P_RETURN
;------------
sea_map_ck
	P_PUSH		pbyte1
	P_IMPORT	pbyte1,KGameMapPtr
	P_IFNOTSAME	pbyte1,5,.not_sea
	P_CLIPPING	ON
.not_sea
	P_PULL		pbyte1
	P_RETURN
;-------------
;one_more_same
;	P_EXPORT	gbyte1,skidy
;	P_EXPORT	gword1,childx
;	P_EXPORT	gword2,childy
;	P_EXPORT	gword3,childz
;	P_RETURN
;one_more_same2
;	P_BECOME
;	P_IMPORT	roty,gbyte1
;	P_IMPORT	worldx,gword1
;	P_IMPORT	pword1,gword2
;	P_IMPORT	worldz,gword3
;	P_SET		childx,worldx
;	P_SET		childy,pword1
;	P_SET		childz,worldz
;	P_GOSUB		one_more_go_far
;	P_UNBECOME
;	P_RETURN
;------------
i_sky_pl_in_sea
	P_INVISIBLE	ON
	P_RETURN
i_sky_pl_out_sea_nocol
	P_INVISIBLE	OFF
	P_COLLISIONS	OFF
	P_RETURN
i_sky_pl_out_sea
	P_INVISIBLE	OFF
	P_RETURN
i_sea_pl_in_sea_nocol
	P_INVISIBLE	OFF
	P_COLLISIONS	OFF
	P_RETURN
i_sea_pl_in_sea
	P_INVISIBLE	OFF
	P_RETURN
i_sea_pl_out_sea
	P_INVISIBLE	ON
	P_RETURN
;------------ RETURN ORIGINAL VIEW POS
back_org_view
	P_NEG		childrotx
	P_NEG		childroty
	P_NEG		childrotz
.back_camera
	P_WAIT		1
	P_DO		3			;2
	P_CHASE		worldx,ox
	P_CHASE		worldy,oy
	P_CHASE		worldz,oz
	P_CHASE		rotx,childrotx
	P_CHASE		roty,childroty
	P_CHASE		rotz,childrotz
	P_INEXT
	P_SETCAMERA	IMMEDIATE
	P_IFNOTSAME	worldx,ox,.back_camera
	P_IFNOTSAME	worldy,oy,.back_camera
	P_IFNOTSAME	worldz,oz,.back_camera
	P_IFNOTSAME	rotx,childrotx,.back_camera
	P_IFNOTSAME	roty,childroty,.back_camera
	P_IFNOTSAME	rotz,childrotz,.back_camera
	P_RETURN
;------------ ORIGINAL VIEW POS
make_org_view
	P_PUSH		worldx
	P_PUSH		worldy
	P_PUSH		worldz
	P_PUSH		rotx
	P_PUSH		roty
	P_PUSH		rotz

	P_COPYVIEWROTS
	P_SET		childrotx,rotx
	P_SET		childroty,roty
	P_SET		childrotz,rotz
	P_COPYVIEWPOS
	P_SET		ox,worldx
	P_SET		oy,worldy
	P_SET		oz,worldz

	P_PULL		rotz
	P_PULL		roty
	P_PULL		rotx
	P_PULL		worldz
	P_PULL		worldy
	P_PULL		worldx
	P_RETURN
;------------ DEMO CAMERA STANDBY WAIT
demo_move_wait
	P_PUSH		pbyte2
	P_PUSH		pbyte1
	P_IMPORT	pbyte1,ebyte6
	P_SET		pbyte2,1
	P_CLRSWITCH	pbyte2,pbyte1
	P_EXPORT	ebyte6,pbyte1
	P_PULL		pbyte1
	P_PULL		pbyte2
.demo_wait_loop
	P_PUSH		pbyte2
	P_PUSH		pbyte1
	P_SET		pbyte2,1
	P_IMPORT	pbyte1,ebyte6
	P_IFSWITCH	pbyte2,pbyte1,.end_d_move
	P_PULL		pbyte1
	P_PULL		pbyte2
	P_GOTO		.demo_wait_loop
.end_d_move
	P_PULL		pbyte1
	P_PULL		pbyte2
	P_RETURN
;----------- PUT ONEMORE
sos_more_go_far
.to_far
	P_SET		worldy,pword1
	P_MOVEINPLAYER	-120
	P_DISTMORE	4000,.far
	P_IGOTO		.to_far
.far
	P_RANDOMGOTO	.neg
	P_CIRCLEPLAYER	32
	P_IGOTO		.unb
.neg
	P_CIRCLEPLAYER	-32
.unb
	P_RETURN
;----------- PUT ONEMORE
one_more_go_far
	P_NEG		worldx
	P_GADD		worldx,Player1_worldx
	P_IFNOTZERO	worldx,.ok_x
	P_INC		childx
	P_IGOTO		.ok_xz
.ok_x
	P_NEG		worldz
	P_GADD		worldz,Player1_worldz
	P_IFNOTZERO	worldz,.ok_xz
	P_INC		childz
.ok_xz
	P_SET		worldx,childx
	P_SET		worldz,childz
.to_far
	P_IMPORT	worldy,Player1_worldy
	P_DISTMORE	2800,.far
	P_MOVEINPLAYER	-120
	P_IGOTO		.to_far
.far
	P_SET		worldy,pword1
	P_RANDOMGOTO	.neg
	P_CIRCLEPLAYER	32
	P_IGOTO		.unb
.neg
	P_CIRCLEPLAYER	-32
.unb
	P_RETURN
;----------- SASORI KUMO MOVE IN
move_in_mark
	P_FACESHAPE
	P_MOVEINSHAPE	30
	P_ZERO		rotx
	P_SET		worldy,pbyte1

	P_SHAPEDISTLESS	50,.near
	P_GOTO		move_in_mark
.near
	P_FLAGSHAPE

	P_RETURN
;----------- SASORI KUMO RETURN MARK SET
;saso_kumo_mark
;	P_EXPORT	gword1,childx
;	P_EXPORT	gword2,childz
;	P_QSPAWN	nullshape,e_saso_mark,100,0
;	P_FINDSHAPE	nullshape
;	P_BECOME
;	P_IMPORT	worldx,gword1
;	P_IMPORT	worldz,gword2
;	P_INVISIBLE	ON
;	P_UNBECOME
;
;	P_RETURN
;
;----------- FRIEND SHAPE SET
set_friend_shape

	P_IMPORT	pbyte1,Player_friend
	P_SET		tx,pbyte1
	P_INDEX		coltab,friend_col,pbyte1
	P_DIV2		pbyte1
	P_INDEX		shape,friend_shape,pbyte1
	P_RETURN
friend_shape
	dw	a_wing	;fox,falco
	dw	c_wing	;peppy,slippy
	dw	b_wing	;gal1,gal2
friend_w1
	dw	a_wing_1	;fox
	dw	c_wing_1	;peppy
	dw	b_wing_1	;gal1
friend_w2
	dw	a_wing_0	;fox
	dw	c_wing_0	;peppy
	dw	b_wing_0	;gal1
friend_col
	dw	id_0_c
	dw	id_1_c
	dw	id_0_c
	dw	id_1_c
	dw	id_0_c
	dw	id_1_c
;----------- ONLY ROTY
only_roty
	P_ADD		roty,slopenum
	P_RETURN
;----------- DOOR OPEN CROSE
open_door
	P_SOUNDEFTDIST	ob_opendoor_s	;$ab
	P_SLOPE		OFF
	P_DO		11
	P_ADDANIM	1,12
	P_NEXT
	P_PRINT		animframe,d,eguchi
	P_RETURN
crose_door
	P_SOUNDEFTDIST	ob_closedoor_s	;$ab
	P_SLOPE		ON
	P_DO		11
	P_ADDANIM	-1,12
	P_NEXT
	P_RETURN

;----------- INIT SOS ZACO
init_sos_zaco
	P_SET		hp,100
	P_SET		ap,4
	P_SHADOW	OFF
	P_RANGECHECK	OFF
	P_ALWAYSGENVECS	ON
	P_RADAROBJ	ra_enemy
	P_WEAPON	RelElaser
	P_RETURN
;----------- SOS ZACO no RELTOPLAYER CONTROLL
sos_rel_ck
	P_INPLAYERSCONE	151,231,.rel_off
	P_INPLAYERSCONE	24,104,.rel_off
	P_RELTOPLAYER	ON
	P_RETURN
.rel_off
	P_RELTOPLAYER	OFF
	P_RETURN

;----------- INIT NOT TARGET HOUDAI
not_target_hou
	P_SET		hp,2
	P_SET		ap,4
	P_RANGECHECK	OFF
	P_RADAROBJ	ra_honmei
	P_WEAPON	EPlasma1
	P_TRIGGER	yoi_hou_dead,WhenDead
	P_RETURN
yoi_hou_dead
	P_SCORE		sc_yoi_hou
	P_RETURN
;----------- SOS FIRE SUB
sos_fire_must
	P_PUSH		rotx
	P_PUSH		roty
	P_PUSH		rotz
	P_FACEPLAYER	IMMEDIATE
	P_FIRE
	P_PULL		rotz
	P_PULL		roty
	P_PULL		rotx
	P_RETURN
;----------
sos_fire_sub
	P_DEC		pbyte1
	P_IFNOTZERO	pbyte1,.pass_at
	P_PUSH		rotx
	P_PUSH		roty
	P_PUSH		rotz
	P_FACEPLAYER	IMMEDIATE
	P_FIRE
	P_PULL		rotz
	P_PULL		roty
	P_PULL		rotx
	P_SET		pbyte1,16
.pass_at
	P_RETURN
;------------
egu_fire_sub
	P_DEC		pbyte1
	P_IFNOTZERO	pbyte1,.pass_at
	P_PUSH		rotx
	P_PUSH		roty
	P_PUSH		rotz
	P_FACEPLAYER	IMMEDIATE
	P_SPAWN		0,0,150,0,0,0,laser_0,egu_speed_RelElaser,100,2
	P_PULL		rotz
	P_PULL		roty
	P_PULL		rotx
	P_SET		pbyte1,16
.pass_at
	P_RETURN
;-----------MAKE RANDOM ITEM
make_random_item
	P_IMPORT	pbyte1,KEnemyNumber
	P_IFNOTZERO	pbyte1,.make
	P_RETURN
.make
	P_SETRANDOM	pbyte1,15
;	P_IFSAME	pbyte1,7,make_1up
	P_IFSAME	pbyte1,6,make_flamethrower
	P_IFSAME	pbyte1,5,make_shieldplayer
	P_IFSAME	pbyte1,4,make_smartplasma
	P_IFSAME	pbyte1,3,make_dummyplayer
	P_IFSAME	pbyte1,2,make_twinblaster
make_hp_item
	P_IMPORT	pbyte1,KEnemyNumber
	P_IFNOTZERO	pbyte1,.make
	P_RETURN
.make
	P_QSPAWN	item_ita,e_item_hp,10,0
	P_IGOTO		item_make_end
make_1up
	P_QSPAWN	item_ita,e_item_1up,10,0
	P_IGOTO		item_make_end
make_flamethrower
	P_QSPAWN	item_ita,e_item_flamethrower,10,0
	P_IGOTO		item_make_end
make_shieldplayer
	P_QSPAWN	item_ita,e_item_shieldplayer,10,0
	P_IGOTO		item_make_end
make_smartplasma
	P_QSPAWN	item_ita,e_item_smartplasma,10,0
	P_IGOTO		item_make_end
make_dummyplayer
	P_QSPAWN	item_ita,e_item_dummyplayer,10,0
	P_IGOTO		item_make_end
make_twinblaster
	P_QSPAWN	item_ita,e_item_twinblaster,10,0
item_make_end
	P_BECOME
	P_ACTIVE	ON
	P_ZERO		roty
	P_UNBECOME
	P_RETURN
;----------------- MARKER SET SUB
marker_set
	P_SETMARKER	1
	P_RETURN
;----------------- ADDANIM 1,16
anim_add_16
	P_ADDANIM	1,16
	P_RETURN
;----------------- ADDANIM 1,12
anim_add_12
	P_ADDANIM	1,12
	P_RETURN
;----------------- ADDANIM 1,11
anim_add_11
	P_ADDANIM	1,11
	P_RETURN
;----------------- ADDANIM 1,8
anim_add_8
	P_ADDANIM	1,8
	P_RETURN
;----------------- ADDANIM	SOUND	FOR SASORI
sasori_sound
	P_SOUNDEFTNEARPOS	en_spiderwork_L	;$80
	P_RETURN
;----------------- ADDANIM	1,12&SOUND	FOR SUISUI
anim_add_12_sui
	P_ADDANIM	1,12
	P_IFSAME	animframe,-122,.sound_on
	P_IFSAME	animframe,-128,.sound_on
	P_RETURN
.sound_on
	P_IMPORT		ox,Player1_worldy
	P_IFSMALLER		ox,pword1,.nos
	P_SOUNDEFTDISTPOS	en_suisui	;$6b
.nos
	P_RETURN
;----------------- ADDANIM	1,12&SOUND	FOR TEKUTEKU
anim_add_12_teku
	P_ADDANIM	1,12
	P_IFSAME	animframe,-122,.sound_on
	P_IFSAME	animframe,-128,.sound_on
	P_RETURN
.sound_on
	P_SOUNDEFTDISTPOS	en_tekuteku	;$69
	P_RETURN
;----------------- ADDANIM	1,16&SOUND	FOR KUMO
kumo_anim
	P_ADDANIM	1,16

	P_IFSAME	animframe,128,.sound_on
	P_IFSAME	animframe,136,.sound_on
	P_RETURN
.sound_on
	P_SOUNDEFTNEARPOS	en_spiderwork_L	;$91
	P_RETURN
;---------------- CLIPPED OBJ'S SHADOW CHECK
shadow_ck
	P_SHADOW	OFF
	P_IFBETWEEN	0,worldy,32767,.sh_off
	P_SHADOW	ON
.sh_off
	P_RETURN
;------------ RECOVER ITSELF
self_invincible
	P_SET		hp,100
	P_RETURN

;--------------
PLANET_RANDOM
	db	3,5,6,4,2,7,0,1
	db	6,2,4,3,0,5,7,1
	db	7,6,4,0,3,2,1,5
	db	1,0,3,2,4,5,7,6
	db	6,3,5,1,2,4,7,0
	db	6,7,4,5,1,2,0,3
	db	6,0,4,1,7,3,5,2
	db	2,6,5,3,7,1,4,0
	db	1,0,6,5,3,7,4,2
	db	0,6,3,1,4,7,5,2		;80
	db	1,2,0,4,3,7,5,6
	db	5,2,6,1,4,3,0,7		;96
	db	7,1,4,0,6,5,2,3		;104
	db	7,0,6,3,2,4,1,5		;112
	db	0,4,3,7,1,5,6,2		;120
	db	6,1,7,4,2,3,5,0		;128

;	db	0,6,7,3,5,4,1,2
;	db	0,5,2,1,3,7,6,4
;	db	1,7,6,0,3,5,2,4
;	db	3,0,4,1,7,2,6,5		;160
;	db	4,3,5,6,0,2,7,1
;	db	7,3,6,1,4,0,5,2
;	db	5,0,2,6,7,3,4,1
;	db	3,1,5,4,7,6,2,0

SOS_RANDOM
	db	3,5,6,11,10,0,7,2,4,1,9,8
	db	10,7,3,4,1,9,8,11,6,0,2,5
	db	10,2,3,11,9,0,6,8,5,1,4,7
	db	4,9,8,0,7,2,5,1,10,6,3,11
	db	8,10,7,9,6,1,0,11,2,3,4,5
	db	11,7,8,0,4,10,3,9,2,1,5,6
	db	1,2,6,3,8,11,4,10,7,5,9,0
	db	5,10,6,4,3,2,9,11,1,0,8,7
	db	4,11,1,5,0,2,8,7,6,3,9,10
	db	6,9,11,5,8,10,0,3,7,4,2,1	;120
	db	8,1,0,7,11,2,10,6		;,4,3,5,9

EASY_MISS_RAND
	db	25,27,24,26,27,24,25,26,24,25,27,26,25,24,26,27
;	db	 1, 3, 0, 2, 3, 0, 1, 2, 0, 1, 3, 2, 1, 0, 2, 3
NORM_MISS_RAND
	db	27,25,29,26,28,24,29,26,27,28,24,27,26,28,25,29
;	db	 3, 1, 5, 2, 4, 0, 5, 2, 3, 4, 0, 3, 2, 4, 1, 5
HARD_MISS_RAND
	db	29,31,24,28,30,31,27,28,29,30,25,29,28,30,26,31	
;	db	 5, 7, 0, 4, 6, 7, 3, 4, 5, 6, 1, 5, 4, 6, 2, 7

NORM_STEP_RAND
	db	0,6,1,7,3,5,0,4,1,2,3,0,5,2,1,3
	db	7,0,6,2,4,1,7,2,6,0,3,1,5,2,4,3
HARD_STEP_RAND
	db	3,0,6,4,5,1,7,4,2,6,5,4,3,7,5,6
	db	0,2,4,7,1,5,7,3,6,1,4,7,6,0,5,2


;************************************************************
;*********************** DYLAN'S   **************************
;***********************           **************************
;*********************** PATH DATA **************************
;************************************************************
randomplayer
	P_RANDOMGOTO	.setp2
	P_PLAYER	1
	P_RETURN
.setp2	P_PLAYER	2
	P_RETURN


	ifeq	1


;--------------- Ground turret, aim and fire at a player -----

	START_PATH	houdai1

	P_SPAWN		0,0,0,0,0,0,hou_0_1,houdai_head,10,10,1
	P_SET		hp,12
	P_SET		ap,2
	P_END

	START_PATH	houdai_head
	P_SET		hp,12
	P_SET		ap,2

	P_WEAPON	laser2

.loop
	P_IFNOTSAME	pbyte1,0,.dontcheck
	P_PLAYER	1
	P_GOSUB		.checkfire
	P_PLAYER	2
	P_GOSUB		.checkfire
	P_IGOTO		.dontadd
.dontcheck
	P_ADD		pbyte1,-1
.dontadd
	P_ADD	childroty,deg5

	P_GOTO		.loop
.checkfire
	P_DISTMORE	2000,.dontfire
	P_PLAYERINCONE	deg5,.fire
.dontfire
	P_RETURN
.fire
	P_ADD		worldy,-50
	P_FIRE
	P_ADD		worldy,50
	P_SET		pbyte1,10
	P_RETURN


randomplayer
	P_RANDOMGOTO	.setp2
	P_PLAYER	1
	P_RETURN
.setp2	P_PLAYER	2
	P_RETURN



;--------------- Fake player.. attacks either of the players -----

	START_PATH	fakeplayer

	P_SET		hp,20
	P_SET		ap,1
	P_GOSUB		randomplayer
	P_WEAPON	laser2

.loopuntilnear
	P_WAIT		1
	P_DISTMORE	1000,.loopuntilnear

	P_SETVEL	0
	P_LOCKPLAYER	ON

	P_DO		8
	  P_DO		20
	    P_CHASE		childy,0
	    P_FACEPLAYER

rotaccel	=	$20
rotaccel_limit =	$100

	    P_LEFTOFPLAYER	.dontdo
	    P_ADD		pword1,-rotaccel
.dontdo
	    P_RIGHTOFPLAYER	.dontdo2
	    P_ADD		pword1,rotaccel
.dontdo2

	    P_IFBETWEEN		-rotaccel_limit,pword1,rotaccel_limit,.noclamp

	    P_IFBETWEEN		0,pword1,$1000,.posclamp
.negclamp
	    P_SET		pword1,-rotaccel_limit
	    P_IGOTO		.noclamp
.posclamp
	    P_SET		pword1,rotaccel_limit
.noclamp
	    P_CIRCLE		pword1

	    P_DISTMORE		800,.nomore
	    P_MOVEIN		-30
.nomore

	  P_NEXT
	  P_FIRE
	P_INEXT

	P_LOCKPLAYER	OFF
	P_SETVEL	30

	P_DO		100
	P_ADD		rotz,deg22
	P_NEXT

	P_WAITCHASE	rotz,deg0
	P_GOTO		.loopuntilnear

	P_ALWAYSGENVECS	ON
	P_WEAPON	laser1
	P_TRIGGER	.hit,WHENHIT

.loop
	P_ACCEL		20,10

	P_DO		10
	P_FACEPLAYER
	P_NEXT

	P_ACCEL		70,20
	P_ADD		roty,-5

	P_DO		30
	P_NEXT

	P_DO		20
	P_ADD		roty,1
	P_NEXT

	P_GOTO		.loop

	IFEQ	1

	P_SET		hp,20
	P_SET		ap,2
	P_PLAYER	1
	P_ALWAYSGENVECS	ON
	P_WEAPON	laser1
	P_TRIGGER	.hit,WHENHIT

.loop
	P_TRIGGER	.home,ALWAYS
	P_ACCEL		20,2
	P_DO		50
	P_NEXT

	P_FIRE

	P_TRIGGER	.home,OFF

	P_ACCEL		60,10
	P_DO		30
	P_NEXT


	P_FIRE

	P_GOTO		.loop

	ENDC

.hit
	P_ACCEL		5,10	; if hit, slow almost to a stop
	P_RETURN
.home
	P_FACEPLAYER
	P_RETURN


;-------------------------------------------------------------------
; KAME_0 land octopus boss.

	START_PATH	kame0

	P_SPAWN		(0<<kame0_scale),(0<<kame0_scale),(-40<<kame0_scale),0,0,0,kame_0_3,kame0leg,10,10,1
	  P_BECOME
	  P_SET		pbyte1,-deg90-deg45
	  P_SET		pbyte2,2	; how many pieces
	  P_UNBECOME
	P_SPAWN		(30<<kame0_scale),(0<<kame0_scale),(20<<kame0_scale),0,deg120,0,kame_0_3,kame0leg,10,10,2
	  P_BECOME
	  P_SET		pbyte1,-deg90-deg45
	  P_SET		pbyte2,2	; how many pieces
	  P_UNBECOME
	P_SPAWN		(-30<<kame0_scale),(0<<kame0_scale),(20<<kame0_scale),0,-deg120,0,kame_0_3,kame0leg,10,10,3
	  P_BECOME
	  P_SET		pbyte1,-deg90-deg45
	  P_SET		pbyte2,2	; how many pieces
	  P_UNBECOME
	P_INVINCIBLE	ON
	P_SET		ap,4

;	P_TRIGGER	setview_sub,ALWAYS

	P_SETANIM	0

.loop

	P_CHASE		worldy,-200
	P_ADD		roty,-2
	P_GOTO		.loop

	P_END


;--------------------------------------------------------------
	START_PATH	kame0leg
	P_INVINCIBLE	ON

	P_SETANIM	0
	P_TRIGGER	.leggrow,4

.loop
	P_CHASE		childrotx,pbyte1

	P_SETRANDOM	sbyte2,255
	P_IFSAME	sbyte2,0,.raiseleg
	P_GOTO		.loop
.raiseleg
	P_ADD		childrotx,2
	P_IFBETWEEN	-deg45,childrotx,0,.loop
	P_GOTO		.raiseleg


.leggrow	P_IFSAME	animframe,128+8,.dontgrow
	P_ADDANIM	1,10
	P_IFNOTSAME	animframe,128+8,.dontgrow
	P_DEC		pbyte2
	P_IFSAME	pbyte2,0,.dontgrow
	P_IFSAME	pbyte2,1,.growhead
	P_SPAWN		0,-70,0,0,0,0,kame_0_3,kame0leg,10,10,1
	P_GOSUB		.setcreator
.dontgrow	P_RETURN
.growhead
	P_SPAWN		0,-80,0,0,0,0,kame_0_4,kame0foot,10,10,1
	P_GOSUB		.setcreator
	P_RETURN

.setcreator
	P_START65816
	stx	gword1
	P_END65816
	P_EXPORT	gbyte1,pbyte2
	P_BECOME
	  P_IMPORT	childrotobj,gword1
	  P_SET		pbyte1,-deg5
	  P_IMPORT	pbyte2,gbyte1
	P_UNBECOME
	P_RETURN

;--------------------------------------------------------------

	START_PATH	kame0foot

	P_INVINCIBLE	ON
	P_SETANIM	0
	P_ADD		childrotx,deg90

.animit1
	P_ADDANIM	1,20
	P_IFSAME	animframe,128+5,.nxtbitchk
	P_GOTO		.animit1
.nxtbitchk
	P_SETRANDOM	pbyte1,15
	P_IFNOTSAME	pbyte1,0,.nxtbit
	P_WAIT		1
.openfully
	P_ADDANIM	1,20
	P_IFSAME	animframe,128+16,.nxtbit
	P_GOTO		.openfully
.nxtbit
	P_ADDANIM	-1,20
	P_IFSAME	animframe,128+0,.animit1
	P_GOTO		.nxtbit
	P_END
	

;-------------------------------------------------------------------
; tables:
backforth_tab
	db	0,0,1,1,1,2,2,3,4,6,9,6,4,3,2,2,1,1,1,0
	db	0,0,-1,-1,-1,-2,-2,-4,-5,-7,-10,-7,-5,-4,-2,-2,-1,-1,-1,0



	endc


;---------------------------------------------------------------
setview_sub
	P_START65816
	ldy	#viewblk1
	s_copy_pos	y,x
	s_set_alvar	W,y,al_rotx,#0
	s_set_alvar	W,y,al_roty,#0
	s_set_alvar	W,y,al_rotz,#0
	s_set_alvar	W,y,al_sword1,#700
	s_set_alvar	W,y,al_sword2,#0
	s_set_alvar	B,y,al_sbyte4,#0
	P_END65816
	P_RETURN


;---------------------------------------------------------------------------
; boost on and off subroutines
;---------------------------------------------------------------------------
pbooston

;	P_JSL65816	makeengine_srou_l
;	P_TRIGGER	pboostcode,ALWAYS
	P_RETURN

pboostcode
;	P_JSL65816	updateengine_srou_l
	P_RETURN
pboostoff
	P_RETURN


;---------------------------------------------------------------------------
; pollen subroutines
ppollen
;	P_JSL65816	makepollen_srou_l
	P_RETURN

;---------------------------------------------------------------------------
pslopeon
	P_START65816
	s_clr_alsflag	x,notslope
	P_END65816
	P_RETURN

;---------------------------------------------------------------------------
pslopeoff
	P_START65816
	s_set_alsflag	x,notslope
	P_END65816
	P_RETURN

;---------------------------------------------------------------------------
prandomizeposition
	P_SETRANDOM	pbyte2,31
	P_ADD		worldx,pbyte2
	P_ADD		worldx,-16
	P_SETRANDOM	pbyte2,31
	P_ADD		worldz,pbyte2
	P_ADD		worldz,-16
	P_RETURN
;---------------------------------------------------------------------------
preturn	P_RETURN
