;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³                                                                    ³
;³                 STARFOX II - REVENGE OF PEPPY -                    ³
;³                                                                    ³
;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
;³                                                                    ³
;³ FILE:         PPATHDAT.ASM                                         ³
;³ AUTHOR:       Takumi Kawagoe                                       ³
;³ DESCRIPTION:  Demo & Effect for Player                             ³
;³ DATE CREATED: 20-1-93                                              ³
;³                                                                    ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

	incpub	ppathdat

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	TEST PATH
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
	start_path	mr_debug

	p_collisions	on
	p_invincible	on

	p_radarobj	ra_enemy

;
;	p_end


	p_slope	on

	p_trigger	.16,16

;	p_nextmap

	p_setanim	0

.loop	p_setmarker	1


	p_reboundlaser

	p_goto		.loop



.16	p_addanim	1,8
	p_print		animframe,h,kawagoe
	p_return




	IFEQ	1

;	p_trigger	.hit,Whenhit
	p_trigger	.hit,Whenhitbyplayer
	p_trigger	.always,always

	p_end

.hit	p_hitflash	on
	p_set	HP,127
	p_add	roty,deg90

	p_return


.always	p_setmarker	1
	p_return

	ENDC


	IFEQ	1

	start_path	mr_debug

	p_trigger	.hit,whenHit

	p_collisions	off
	p_rangecheck	off

	p_set	ap,1
	p_set	hp,1

	p_set	roty,deg90

	p_weapon	Eplasma1

	p_export	corex,worldx
	p_export	corez,worldz
	p_export	coreroty,roty

.loop	p_setmarker	1
	;p_andframegoto	15,.fire
	;p_distmore	8000,.nonext
	;p_playerincone	20,.force
	;p_igoto		.next
.force	;p_plrforceway	deg270,30,2000
.next

;	p_nextmap

;%	p_set		pbyte1,0
;%	p_export	Kenemynumber,pbyte1



.nonext	p_clrdemoshape

	p_goto		.loop

.fire	;p_fire


;	p_randomgoto	.circle
;	p_igoto		.circleoff
;.circle	;;;p_circlewindow	1
;.circleoff
;
;	p_randomgoto	.flash
;	p_igoto		.flashoff
;.flash	;;;P_SCREENFLASH
;.flashoff

	p_goto		.loop




	start_path	mr_sen

	p_collisions	off
	p_rangecheck	off

	ENDC

	p_end



;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	YOU WIN!
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;-------------------------------------------------
; Game over text uses NintendoPresents engine

	START_PATH	TOBECONTINUED

	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

	P_SET		pbyte2,tobecontinuedmsg-nintendomsg

	p_igoto		.enter

;-------------------------------------------------
; Game over text uses NintendoPresents engine

.enter	LOCAL

	P_COLLISIONS	OFF
	P_RELTOPLAYER	ON
	P_RANGECHECK	OFF
	P_CLRBOSSFLAGS

	P_SET		worldx,-400
	P_QSPAWN	clipshape,font_clip2,10,10

	P_DO		2

	P_SET		worldx,-400

	P_GOSUB		moji_throwchars

	P_WAIT		10
	P_SET		worldx,-400
	P_ADD		worldy,200

	P_INEXT

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ENDC


	P_END

;	P_WAIT		60
;
;	P_SETBOSSFLAG	burstout,ON
;
;	P_WAIT		100
;
;	P_ADD		worldy,-200
;	P_ADD		worldz,-200
;
;	P_SETBOSSFLAG	burstout,OFF
;
;	P_REMOVE


;-------------------------------------------------
; Game over text uses NintendoPresents engine

chrsizex	equ	120


	START_PATH	YOUWIN

	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

	P_COLLISIONS	OFF
	P_RANGECHECK	OFF

	p_trigger	.always,always

	p_spawn	-chrsizex*3,0,-100,0,0,0,chr_y,youwin_chr,1,0,childno_youwin
	p_gosub	setinside
	p_spawn	-chrsizex*2,0,-100,0,0,0,chr_o,youwin_chr,1,2,childno_youwin
	p_gosub	setinside
	p_spawn	-chrsizex*1,0,-100,0,0,0,chr_u,youwin_chr,1,4,childno_youwin
	p_gosub	setinside

	p_spawn	chrsizex*1,0,-100,0,0,0,chr_w,youwin_chr,1,6,childno_youwin
	p_gosub	setinside
	p_spawn	chrsizex*2,0,-100,0,0,0,chr_o,youwin_chr,1,8,childno_youwin
	p_gosub	setinside
	p_spawn	chrsizex*3,0,-100,0,0,0,chr_n,youwin_chr,1,10,childno_youwin
	p_gosub	setinside

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ENDC


	p_end


;.always	LOCAL
;
;	P_COLLISIONS	OFF
;
;	p_copyviewpos
;
;	p_set	rotz,0
;
;	P_START65816
;	ldy	pathplayer&WM
;	pl_ldy_viewblk	y
;	lda.w	al_rotx+1,y
;	nega
;	sta	al_rotx,x
;	lda.w	al_roty+1,y
;	nega
;	sta	al_roty,x
;	P_END65816
;
;	p_return

;-------------------------------------------------
; Game over text uses NintendoPresents engine

;chrsizex	equ	120

	START_PATH	YOULOST


	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

	P_COLLISIONS	OFF
	P_RANGECHECK	OFF

	p_trigger	Pyouwin.always,always

	p_spawn	-chrsizex*4+60,0,-100,0,0,0,chr_y,youwin_chr,1,0,childno_youwin
	p_gosub	setinside
	p_spawn	-chrsizex*3+60,0,-100,0,0,0,chr_o,youwin_chr,1,2,childno_youwin
	p_gosub	setinside
	p_spawn	-chrsizex*2+60,0,-100,0,0,0,chr_u,youwin_chr,1,4,childno_youwin
	p_gosub	setinside

	p_spawn	chrsizex*0+60,0,-100,0,0,0,chr_l,youwin_chr,1,6,childno_youwin
	p_gosub	setinside
	p_spawn	chrsizex*1+60,0,-100,0,0,0,chr_o,youwin_chr,1,8,childno_youwin
	p_gosub	setinside
	p_spawn	chrsizex*2+60,0,-100,0,0,0,chr_s,youwin_chr,1,10,childno_youwin
	p_gosub	setinside
	p_spawn	chrsizex*3+60,0,-100,0,0,0,chr_t,youwin_chr,1,12,childno_youwin
	p_gosub	setinside

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ENDC

	p_end

;-------------------------------------------------
;setinside
;	p_become
;	P_START65816
;	s_set_alsflag	x,insidecockpit
;	ldy	pathplayer&WM
;	s_jmpnot_alsflag	y,player2,.p1
;.p2	s_clr_alsflag	x,player2
;	s_set_coltab		x,#id_1_c&WM
;	bra		.end
;.p1	s_set_alsflag	x,player2
;.end	P_END65816
;	p_unbecome
;	p_return
;
;-------------------------------------------------
	start_path	youwin_chr

	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	p_collisions	off
	p_shadow	off
	p_set	count,ap
	p_wait	count
	p_do	16
	p_add	childz,800/16
	p_add	childrotx,256/16
	p_add	childrotz,256/16
	p_next
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ENDC




	p_end

;-------------------------------------------------
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	WINGMAN
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

	start_path	wingman

childno_wingman_boost	equ	10

wgmode_away		equ	1
wgmode_find		equ	2
wgmode_chase		equ	3
wgmode_fire		equ	4
wgmode_chaseplayer	equ	5
wgmode_pullup	equ	6
wgmode_pulldown	equ	7

	p_clrtype	ENEMY1
	p_settype	ENEMY2

	p_rangecheck	off

	p_collisions	on
	p_invincible	on

	p_set		hp,100
	p_set		ap,0

	p_set		tx,0

	p_weapon	Flaser
	p_trigger	.wg_trigger,always

	p_alwaysgenvecs	on
	p_set		pbyte1,wgmode_find
	p_setvel	35


.loop	p_ifsame	pbyte1,wgmode_away,.wgmode_away
	p_ifsame	pbyte1,wgmode_chase,.wgmode_chase
	p_ifsame	pbyte1,wgmode_fire,.wgmode_fire
	p_ifsame	pbyte1,wgmode_find,.wgmode_find
	p_ifsame	pbyte1,wgmode_chaseplayer,.wgmode_chaseplayer
	p_ifsame	pbyte1,wgmode_pullup,.wgmode_pullup
	p_ifsame	pbyte1,wgmode_pulldown,.wgmode_pulldown
	p_igoto		.wgmode_find

;-----------------------------------------------------------------------------------
; goto away

.wgmode_away
	p_chase		rotx,0
	p_setrandom	count,31
	p_add		count,60

	p_set		ty,2
	p_andframegoto	1,.wgmode_away0
	p_set		ty,-2
.wgmode_away0
	p_do	count
	p_add	roty,ty
	p_chase	rotx,0
	p_next
	p_set	pbyte1,wgmode_find
	p_igoto	.end

;-----------------------------------------------------------------------------------

.wgmode_chase

	p_shapedead	.wgmode_fire_find
	p_shapedistless	4000,.wgmode_chase_fire
	p_accel		40,3

	p_andframegoto	1,.end
	p_faceshape
	p_igoto		.end

.wgmode_chase_fire
	p_set	pbyte1,wgmode_fire
	p_igoto	.end

;-----------------------------------------------------------------------------------

.wgmode_fire

	p_shapedead	.wgmode_fire_find

	p_shapedistless	500,.wgmode_fire_away
	p_accel		40,3
	p_faceshape
	p_objincone	30,.fire
	p_igoto		.end
.fire	p_andframegoto	7,.dofire
	p_igoto		.end
.dofire	p_fire
	p_igoto		.end


.wgmode_fire_away

	p_set	pbyte1,wgmode_away
	p_igoto	.end

.wgmode_fire_find

	p_set	pbyte1,wgmode_away
	p_igoto	.end

;-----------------------------------------------------------------------------------

.wgmode_chaseplayer

	p_distless	200,.wgmode_chaseplayer_away
	p_accel		50,5
	p_andframegoto	1,.end
	p_faceplayerofs	10,-5,10
	p_igoto		.end

.wgmode_chaseplayer_away

	p_set		pbyte1,wgmode_away
	p_igoto		.end

;-----------------------------------------------------------------------------------
.wgmode_pulldown

	p_print		rotx,h,kawagoe
	p_print		worldy,h,kawagoe

	p_do		8
	p_push		rotx
	p_andframegoto	1,.wgm_pd0
	p_faceplayerofs	10,-5,10
.wgm_pd0	p_pull		rotx
	p_chase		rotx,20
	p_next

	p_set		pbyte1,wgmode_chaseplayer
	p_igoto	.end

;-----------------------------------------------------------------------------------
.wgmode_pullup

	p_print		rotx,h,kawagoe
	p_print		worldy,h,kawagoe
	p_print		vy,h,kawagoe

	p_do	8
	p_push		rotx
	p_andframegoto	1,.wgm_pu0
	p_faceplayerofs	10,-5,10
.wgm_pu0	p_pull		rotx
	p_chase		rotx,-20
	p_next

	p_set		pbyte1,wgmode_chaseplayer
	p_igoto	.end

;-----------------------------------------------------------------------------------

.wgmode_find

	p_set		pbyte2,0

	p_do		32
	p_ifnotsame		pbyte2,7,.wgmode_find_next
	p_set			pbyte2,0
	p_findenemyshape	16000,255,.wgmode_find_next
	p_break			.wgmode_find_chase
.wgmode_find_next
	p_chase	rotx,0
	p_next

	p_set	pbyte1,wgmode_chaseplayer
	p_igoto	.end

.wgmode_find_chase

	p_set	pbyte1,wgmode_chase
	p_igoto	.end

;---------------------------------------------------------------------------------
.end	p_goto		.loop
	p_end


.wg_trigger	p_print	pbyte1,h,kawagoe
	p_inc		pbyte2
	p_setmarker	1

	P_START65816
	lda	al_roty,x
	sec
	sbc	al_tx,x
	asl	a
	asl	a
	asl	a
	asl	a
	sta	z1
	s_achase_alvar	B,x,al_rotz,z1,2
	P_END65816

	p_set		tx,roty


	p_import	pword1,battlearea_maxy
	p_ifsmaller	worldy,pword1,.wg_gotopulldown
	p_import	pword1,battlearea_miny
	p_add		pword1,-50
	p_iflarger	worldy,pword1,.wg_gotopullup

	p_distmore	4000,.wg_gotochaseplayer
	p_return

.wg_gotofind

	p_set		pbyte1,wgmode_find
	p_return

.wg_gotopullup

	p_import	pword1,battlearea_miny
	p_chase		worldy,pword1
	p_set		pbyte1,wgmode_pullup
	p_return

.wg_gotopulldown

	p_import	pword1,battlearea_maxy
	p_chase		worldy,pword1
	p_set		pbyte1,wgmode_pulldown
	p_return

.wg_gotochaseplayer

	p_set	pbyte1,wgmode_chaseplayer
	p_return
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	ENDC



;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	ANDORF CORE
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

;	P_BOSSMODELIST	And_box0
;	P_BOSSMODE	preturn

;andboxdead_cut1	equ	1

childno_andorf	equ	1

	start_path	and_box0

	p_set		hp,50

	p_spawn		0,300,0,0,0,0,and_z_1,e_nocol_s_off,1,1,childno_andorf
	p_spawn		0,-300,0,deg180,0,0,and_zoon,e_nocol_s_off,1,1,childno_andorf

	p_collisions	on

	p_shadow	off
	p_trigger	.death,Whendead
	p_rangecheck	off

	p_export	corex,worldx
	p_export	corez,worldz

.loop	p_add		roty,2

	p_export	coreroty,roty


	p_goto		.loop

.dead	p_nextmap
	p_trigger	Pdestruct_coredirector.exp,always
	p_end


.death	p_set		HP,1
	p_set		shape,nullshape
	p_collisions	off
	p_force		.dead
	p_remove	childno_andorf
	p_return



	IFEQ	1
;-------------------------------------------------------------------------------------------
	start_path	deathofand_box
	p_setdemo	andboxdead_cut1
	p_shadow	off
	P_START65816
	ldy		playpt1
	ct_set_chartptr	y,andboxdead
	P_END65816
	p_demoshape
	p_qspawn	nullshape,deathofand_box_cam_stand,1,1
	p_trigger	.always,always
	p_wait		43
	P_SOUNDEFFECT	bs_BOssexplode
	p_end
.always	p_gosub		.andboxexplode
	p_add		roty,5
	p_return
.andboxexplode
	p_andframegoto	3,.abe0
	p_return
.abe0	p_andframegoto	4,.circle
	p_qspawn	explosion5,e_explode_circle127,1,1
	p_return
.circle	p_qspawn	explosion5,e_explode_127,1,1
	p_return
;---------------------------------------------------------------------------------------
	start_path	deathofand_box_cam_stand
	p_collisions	off
	p_faceplayer	immediate
	p_spawn		0,0,500,0,0,0,nullshape,deathofand_box_cam,1,1,1
.loop	p_add		roty,2
	p_goto		.loop
	p_end
;---------------------------------------------------------------------------------------
	start_path	deathofand_box_cam
	p_collisions	off
	p_trigger	.view,always
	p_do		20
	p_next
	p_end
.view	p_copypos2view		1
	p_campandemoshape	1,0,immediate
	p_return
;---------------------------------------------------------------------------------------
	START_PATH	e_explode_circle127
	p_gosub		pe_explode_127.pos
	p_igoto		pe_explode_127.enter
	START_PATH	e_explode_127
	p_gosub	.pos
.enter	LOCAL
	P_SETCOLANIM	0
	P_WAIT		1
	P_DO		7
	P_ADDCOLANIM	1,8
	P_NEXT
	P_REMOVE
.pos	LOCAL
	P_COLLISIONS	OFF
	p_sprite	0,32
	p_setrandom	pword1,255
	p_add		worldx,pword1
	p_add		worldx,-127
	p_setrandom	pword1,255
	p_add		worldy,pword1
	p_add		worldy,-127
	p_setrandom	pword1,255
	p_add		worldz,pword1
	p_add		worldz,-127
	p_return
	ENDC

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;-------------------------------------------------------------------------------------------

prou_makebase

childno_base_t	equ	50
childno_base_u	equ	51
childno_base_rb	equ	52
childno_base_rf	equ	53
childno_base_rh	equ	54
childno_base_lf	equ	55
childno_base_lb	equ	56
childno_base_lh	equ	57


	p_shadow	off
	p_rangecheck	off
	p_collisions	off

	p_spawn		0,-90<<base_scale,-25<<base_scale,0,0,0,base1_t,base_parts,10,10,childno_base_t
	p_spawn		0,100<<base_scale,-50<<base_scale,0,0,0,base1_u,base_parts,10,10,childno_base_u
	p_spawn		-95<<base_scale,0,-75<<base_scale,0,0,0,base1_rb,base_parts,10,10,childno_base_rb
	p_spawn		95<<base_scale,0,-75<<base_scale,0,0,0,base1_lb,base_parts,10,10,childno_base_lb

	p_spawn		55<<base_scale,0,45<<base_scale,0,0,0,base1_lh,base_parts,10,10,childno_base_lh
	p_spawn		-55<<base_scale,0,45<<base_scale,0,0,0,base1_rh,base_parts,10,10,childno_base_rh

	p_return


prou_makebase_h

	p_spawn		0,-90<<base_scale,-25<<base_scale,0,0,0,base1_t,base_parts,10,10,childno_base_t
	p_spawn		0,100<<base_scale,-50<<base_scale,0,0,0,base1_u,base_parts,10,10,childno_base_u
	p_spawn		-95<<base_scale,0,-75<<base_scale,0,0,0,base1_rb,base_parts,10,10,childno_base_rb
	p_spawn		95<<base_scale,0,-75<<base_scale,0,0,0,base1_lb,base_parts,10,10,childno_base_lb

.h	LOCAL
	p_spawn		55<<base_scale,0,45<<base_scale,0,0,0,base1_lf,base_parts,10,10,childno_base_lf
	p_spawn		-55<<base_scale,0,45<<base_scale,0,0,0,base1_rf,base_parts,10,10,childno_base_rf
	p_return


	start_path	base_parts
	p_collisions	off
	p_rangecheck	off
	p_end




	start_path	circle_test

	p_trigger	.hit,Whendead

	p_end


.remove	p_remove


.hit	p_force		.remove
;	P_CIRCLEWINDOW	-2
;	P_SCREENFLASH

	p_return




;.circl

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;--------------------------------------------------------------------------------
;
;	test enemy for player1
;
;--------------------------------------------------------------------------------
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³                                  ³
;³     PATH for PLAYER'S EFFECT     ³
;³                                  ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

;--------------------------------------------------------------------------------------
	start_path	overheat

;	[al_vel : set from player]

	p_sprite	0,0

	p_setrandom	pword1,15
	p_add		pword1,-7
	p_add		worldx,pword1
	p_setrandom	pword1,15
	p_add		pword1,-7
	p_add		worldy,pword1
	p_setrandom	pword1,15
	p_add		pword1,-7
	p_add		worldz,pword1

	p_do		8
	p_accel		0,5
	p_addcolanim	1,8
	p_inc		pbyte1
	p_ifsame	pbyte1,7,.remove
	p_add		vy,-1
	p_next

.remove	p_remove
	p_end

;--------------------------------------------------------------------------------------
	start_path	playershield

	P_SOUNDEFFECT	shield_item

	p_collisions	off
	p_shadow	off

	p_copyplayerpos

	p_setanim	0

	p_set		pbyte1,1
	p_set		pbyte2,0

	p_do		9
	p_addanim	1,10
	p_next

	p_trigger	.always,always

.loop	p_ifnotsame	pbyte1,0,.cnt
	p_remove
.cnt	p_goto		.loop



.always	p_add	childrotx,8
	p_add	childrotz,6

	P_START65816
	s_set_objtobealvar	y,x,al_ptr
	toheap	y,y
	lda	exal_shield,y
	and	#exal_shield_mask
	sta	al_pbyte1,x
	bne	.alive
	lda	exal_shield,y
	and	#exal_shield_obj^-1
	sta	exal_shield,y

.alive	lda	al_pbyte1,x
	bit	#~1
	beq	.flash

.noflash	P_END65816
	p_return

.flash	P_END65816
	p_index	animframe,.tab,pbyte2
	p_inc	pbyte2
	p_return


.tab	db	8+128
	db	7+128
	db	6+128
	db	5+128

	db	6+128
	db	7+128
	db	6+128
	db	5+128

	db	4+128
	db	3+128
	db	2+128
	db	1+128

	db	2+128
	db	3+128
	db	2+128
	db	1+128

;--------------------------------------------------------------------------------------
	start_path	missileboost

;	P_IFSAME	hp,32,.size_32
	p_sprite	0,16
;	P_IGOTO		.size_end
;.size_32
;	p_sprite	0,32
;.size_end
	P_ADD		tx,hp
	P_SET		hp,100
	p_trigger	.hit,Whendead

	P_START65816
	s_set_alsflag	x,dontexplode
	P_END65816

	p_rangecheck	off
	p_collisions	off

.loop	p_addcolanim	1,2
	p_goto		.loop



.remove	p_remove
.hit	p_force		.remove
	p_return

;--------------------------------------------------------------------------------------

	start_path	boost

	p_trigger	pdemoboost.ck,always

	start_path	demoboost

	p_sprite	0,0

	p_rangecheck	off
	p_collisions	off

	p_do		4
	p_addcolanim	1,4
	p_add		tx,4
	p_next

.skip	p_sprite	0,0

.loop	p_addcolanim	1,2
	p_goto		.loop



.ck	LOCAL
	p_ifplayerboost	.cnt
	p_force		.remove
.cnt	p_return
.remove	p_remove

;--------------------------------------------------------------------------------------
	start_path	brake

	p_sprite	0,-1

.loop	p_addcolanim	1,2
	p_ifplayerbrake	.cnt
	p_remove
	p_end

.cnt	p_goto		.loop

;--------------------------------------------------------------------------------------

 	start_path	healeffect
 
 	p_collisions	off
 
 	P_SOUNDEFFECT	CatchHeart
 
 	P_CIRCLEWINDOW	-8
 
 	P_START65816
	ldy	al_ptr,x
 	toheap	y,y
	s_or_alvar	B,y,exal_circle_flag,#exal_circle_flag_Pri
 	s_set_alvar	B,y,kx_circlecolR,#16
 	s_set_alvar	B,y,kx_circlecolG,#16
 	s_set_alvar	B,y,kx_circlecolB,#31
 	s_set_alvar	B,y,exal_circle_decr,#3
 	s_set_alvar	B,y,exal_circle_decg,#3
 	s_set_alvar	B,y,exal_circle_decb,#4
 	P_END65816
 
 	p_do		8
 	P_CIRCLEWINDOWPOS
 	p_next
 
 	p_remove
 

;--------------------------------------------------------------------------------------

	start_path	heal

healwait	equ	20
healint	equ	5
healtime0	equ	25
healtime1	equ	100
healtime2	equ	20
healtime3	equ	10
healposx	equ	40

	P_SOUNDEFFECT	heal_parts

	p_trigger	.pos,always

	p_spawn		5,-100,-200,0,0,0,pow_l,heal_l,1,1,childno_healparts
	p_spawn		-5,-100,-200,0,0,0,pow_r,heal_r,1,1,childno_healparts

	p_do		healwait+healint+healtime0
	p_next

	p_do	healtime1+healtime2-7
;	p_andframegoto	7,.win
;	P_CIRCLEWINDOWPOS
;	p_igoto	.next
;.win
;	P_SOUNDEFFECT	CatchHeart
;
;	P_CIRCLEWINDOW	-10
;	P_START65816
;	ldy	al_ptr,x
;	toheap	y,y
;	s_or_alvar	B,y,exal_circle_flag,#exal_circle_flag_Pri
;	s_set_alvar	B,y,kx_circlecolR,#16
;	s_set_alvar	B,y,kx_circlecolG,#16
;	s_set_alvar	B,y,kx_circlecolB,#31
;	s_set_alvar	B,y,exal_circle_decr,#3
;	s_set_alvar	B,y,exal_circle_decg,#3
;	s_set_alvar	B,y,exal_circle_decb,#4
;	P_END65816
.next	p_next


.loop2	p_childdead	childno_healparts,.remove
	p_goto		.loop2


.remove	p_remove

.pos	p_set	rotz,0
	p_set	rotx,0
	p_return






	start_path	heal_l
	p_set		count,3
	p_set		pword1,healposx

	p_igoto		pheal_r.enter

	start_path	heal_r
	p_set		count,8
	p_set		pword1,-healposx

.enter	LOCAL

	p_clrtype	ENEMY1
	p_collisions	off

	p_do		healwait
	p_chase		childz,200
	p_chase		childz,200
	p_chase		childy,0
	p_chase		childy,0
	p_next

	p_do		healtime0
	p_chase		childx,pword1
	p_chase		childz,0
	p_next

	p_do		healtime1
	p_gosub		.heal
	p_next

	p_do		healtime2
	p_set		depthoffset,3
	p_gosub		.heal
	p_andframegoto	1,.d3
	p_set		depthoffset,1
.d3	p_next

	p_set		depthoffset,3



.waitdeth	p_do		count
	p_next


	p_import	pbyte2,planet_mode
	p_ifnotsame	pbyte2,pm_marine,.g
	p_import	pword1,seadepth
	p_ifsmaller	worldy,pword1,.g

.m	; marine

	p_set		pbyte1,childx

	p_relative	off

	p_set		childx,0
	p_set		childy,0
	p_set		childz,0
	p_do		healtime3
	p_chase		rotz,pbyte1
	p_add		worldy,-4
	p_next
	p_igoto		.kill


.g	; ground & space

	p_setrandom	pbyte1,31
	p_add		pbyte1,-16

	p_do		healtime3
	p_add		childrotx,-8
	p_add		childy,10
	p_add		childz,-10
	p_add		childrotz,pbyte1
	p_add		childroty,pbyte1
	p_hitslope	.kill
	p_next

.kill	p_set		HP,0
	p_end





.heal	p_inc		pbyte1
	p_set		pbyte2,healint
	p_ifsmaller	pbyte1,pbyte2,.h0
	p_set		pbyte1,0
	p_set		pbyte2,1
	p_ifplayer	2,.p2
.p1	p_export	player1_hpadd,pbyte2
	p_return
.p2	p_export	player2_hpadd,pbyte2
.h0	p_return







;--------------------------------------------------------------------------------------

 	start_path	bomeffect
 
 	p_collisions	off
 
	p_spawn	40,0,40,0,0,0,boost,bomeffect_child,1,1,1
	p_spawn	-40,0,40,0,0,0,boost,bomeffect_child,1,1,2

 	p_do	15
	p_add	childrotz,32
	p_next

	p_remove	1
	p_remove	2
	p_remove



	start_path	bomeffect_child

	p_collisions	off
	p_sprite	0,-4

.loop	p_chase		childx,0
	p_addcolanim	1,2
	p_goto		.loop

;--------------------------------------------------------------------------------------
	start_path	damagespark

	p_sprite	0,-4
	p_setrandom	childx,15
	p_add		childx,-7
	p_setrandom	childy,15
	p_add		childy,-7
	p_setrandom	childz,15
	p_add		childz,-7
.loop	p_addcolanim	1,3
	p_inc		pbyte1
	p_ifnotsame	pbyte1,3,.cnt
	p_remove
	p_end
.cnt	p_goto		.loop

;--------------------------------------------------------------------------------------

	start_path	wingspark
	p_sprite	0,0
	p_do		3
	p_addcolanim	1,2
	p_next
	p_remove

;--------------------------------------------------------------------------------------
	start_path	armerjet

	p_sprite	0,-1

.loop	p_addcolanim	1,2
	p_dec		count
	p_ifsame	count,0,.remove
	p_goto		.loop

.remove	p_remove

;--------------------------------------------------------------------------------------
	start_path	burnning

	p_sprite	0,-6

	p_set		pbyte1,0

.loop	p_addcolanim	1,2
	p_inc		pbyte1


	p_ifnotsame	pbyte1,2,.cnt

	p_ifplayerboost	.nomake

	p_spawn		0,0,0,0,0,0,flame,burnning_child,1,1,1

	p_goto		.unlink
.unlink

	p_addcolanim	1,2
	p_unlinkchild	1

.nomake	p_remove
	p_end

.cnt	p_goto		.loop
	p_end




	start_path	burnning_child

	p_clrtype	ENEMY1
	p_collisions	off

	p_sprite	0,-7
	p_set		pbyte1,0
	p_reltoplayer	on

.loop	p_addcolanim	1,2
	p_inc		pbyte1
	p_ifnotsame	pbyte1,2,.cnt
	p_remove
	p_end

.cnt	p_goto		.loop
	p_end

;--------------------------------------------------------------------------------------

	start_path	armerarm

.loop	p_addcolanim	1,2

	p_ifufo	.ufo
	p_igoto	.remove



;	P_START65816
;	ldy	pathplayer&WM
;	sp_jmp_playertype	y,UFO,.nokill
;	s_set_alvar		B,x,al_pbyte1,#0ffH
;.nokill	pl_copy_alsflag		x,y,hitflash
;	s_copy_alvar2alvar	W,x,al_depthoffset,y,al_depthoffset
;	P_END65816

.ufo	p_ifnotsame	pbyte1,0ffH,.cnt

.remove	p_remove
	p_end

.cnt	p_goto		.loop

;--------------------------------------------------------------------------------------
;	start_path	pushobj
;
;	p_set		hp,100
;	p_set		ap,1
;
;	p_invincible	on
;
;	p_collisions	on
;	p_settype	object
;	p_end
;
;
;--------------------------------------------------------------------------------------
	start_path	p_explode_s_rnd31
	p_collisions	off

	p_set		pbyte1,0
	p_do		count
	p_ifnotsame	pbyte1,0,.nospawn
	p_spawn		0,0,0,0,0,0,explosion,p_explode_s_rnd,1,1,1
	p_set		pbyte1,5
.nospawn	p_dec		pbyte1
	p_next
	p_remove


	start_path	p_explode_s_rnd
	p_setrandom	childx,31
	p_add		childx,-16
	p_setrandom	childy,31
	p_add		childy,-16
	p_setrandom	childz,31
	p_add		childz,-16


	start_path	p_explode_s
	p_soundeffect	pl_explode_s
	p_collisions	off
	p_sprite	0,-2
	P_SETCOLANIM	0
	P_WAIT		1
	P_DO		3
	P_ADDCOLANIM	1,4
	P_NEXT
	p_remove


	start_path	p_explode_l
	p_collisions	off
	p_sprite	0,10

	P_SETCOLANIM	0
	P_WAIT		1
	P_DO		7
	P_ADDCOLANIM	1,8
	P_NEXT
	p_remove

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	PATH DATA for WEAPON
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;----------------------------------------------------------------------------------

	start_path	Pmissile

	P_SOUNDEFTDISTPOS	bomshoot

	p_settype	friend
	p_clrtype	enemy1

	p_set	shape,miss_4

	p_setvel	0

	p_do	10
	p_copyplayerpos
	p_chase	childy,50
	p_add	worldy,childy
	p_next


	p_spawn	0,0,-50,0,0,0,boost,missileboost,1,1,100
	p_alwaysgenvecs	on

	p_do		100
	p_accel		80,5
	p_add		worldx,childx
	p_add		worldz,childz
	p_andframegoto	1,.next
	p_chase		childx,0
	p_chase		childz,0
.next	p_next


	p_set	hp,0
	p_end


;----------------------------------------------------------------------------------

	start_path	arwingdummy

;	al_pword1 : life counter

	P_SOUNDEFTDISTPOS	bomshoot

	p_settype	laser
	p_settype	friend
	p_clrtype	enemy1

	p_alwaysgenvecs	on
	p_add	vel,30
	p_add	worldy,-2

	p_do		13
	p_setanim	0
	p_accel		dummyVEL,2
	p_chase		rotx,0
	p_next

	p_do		7
	p_addanim	1,8
	p_chase		rotx,0
	p_next


.hitck	P_START65816
	jsl	chk_spweappnt_srou_l
	jsl	setenemymark_srou_l
	stx	dummyptr
	P_END65816

	p_ifnotsame	pword1,300,.cnt
.kill	p_set		HP,0
.cnt	p_inc		pword1
	p_goto		.hitck
	p_end

;----------------------------------------------------------------------------------
	start_path	robotdummy

;	pbyte1 : special weapon pointer
;	pword1 : special weapon pointer
;	childx : life counter

	P_SOUNDEFTDISTPOS	bomshoot

	p_settype	laser
	p_settype	friend
	p_clrtype	enemy1

	P_START65816
	s_clr_alcollflag	x,WEAPON
	P_END65816

	p_slope	on

	p_alwaysgenvecs	on
	p_set	vel,30
	p_add	worldy,-2
	p_set	rotx,-3cH

	p_do		13
	p_setanim	0
	p_accel		8,2
	p_chase		rotx,0
	p_next

	p_do		7
	p_addanim	1,8
	p_chase		rotx,0
	p_next

	p_alwaysgenvecs	off

	p_set		vx,0
	p_set		vy,2
	p_set		vz,0


.hitck	P_START65816

	stx	dummyptr

	jsl	chk_spweappnt_srou_l
	jsl	setenemymark_srou_l

	lda	al_childx,x
	bit	#7
	bne	.nockhigh
	jsl	getheight_l

	s_set_alvar	W,x,al_pword1,y1
.nockhigh
	a16
	lda	al_worldy,x
	sec
	sbc	al_pword1,x
	bmi	.noton	
	lda	al_pword1,x
	sta	al_worldy,x
	a8
	lda	#0
	bra	.cxx
.noton	a8
	lda	al_childx,x
	and	#8
	bne	.cx1
.cx0	lda	#10
	bra	.cxx
.cx1	lda	#-10
.cxx	sta	al_childrotx,x
.nocx
.end65	P_END65816




	p_chase		rotx,childrotx
	p_chase		rotz,childrotx

	p_ifnotsame	childx,255,.cnt

	p_set		HP,0
.cnt

	p_inc		childx
	p_goto		.hitck
	p_end


;--------------------------------------------------------------------------------------
spreadr	equ	60
spp_insea	equ	1<<0

	start_path	spreadplasma


; childrotx	:	planet_mode
; pbyte1	:	find wo wait suru timer
; pbyte2	:	no hit timer


	p_collisions	on
	p_alwaysgenvecs	on
	p_rangecheck	off
;	p_settype	laser
	p_settype	friend
;	p_invincible	on
	p_set		hp,100


	p_import	pbyte1,planet_mode
	p_ifsame	pbyte1,pm_space,.space
.ground	p_trigger	.always_g,always
	p_igoto		.gp
.space	p_trigger	.always,always
.gp
	p_trigger	.whenhit,whenhit

	p_set		shape,nullshape
	p_clrtype	ENEMY1
	p_clrtype	ENEMY2

; set shape

	p_set		shape,bomb
;	p_spawn		0,0,0,0,0,0,line,e_nocol_s_off,1,1,1


	p_sprite	0,7

	p_set		pbyte1,0
	p_set		pbyte2,0	; nohit timer
	p_setvel	127	; init vel

	p_set		ptr,0

;first
	P_DO		spreadLIF


	P_SHAPEDISTLESS	3500,.facestart
	p_set		ptr,0

.facestart	p_shapedead	.find

	p_objincone	deg90,.face4
	p_igoto		.face2
.face4	p_faceshape
	p_faceshape
.face2	p_faceshape
	p_faceshape


	P_START65816
	s_set_objtobealvar	y,x,al_ptr
	s_jmp_alsflag		y,colldisable,.findagain
	s_jmpnot_alsflag	y,nohitaffect,.cntc
.findagain	s_set_alvar		W,x,al_ptr,#0
.cntc	P_END65816
	p_igoto			.nofind



;------------
.find	p_ifnotsame		pbyte1,0,.faceplayer	;.nofind
	p_set			pbyte1,8

	P_START65816
	sm_jmp_if1screen	.findenemy
	ldy	al_pword1,x
	s_jmp_alsflag	y,player2,.p1
.p2	ldy	playpt2
	bra	.pp
.p1	ldy	playpt1
.pp
	;s_jmp_distless	x,y,3500,.setpp
	;ldy	#0

.setpp	sty	al_ptr,x
	P_END65816

	p_igoto			.nofind


.findenemy	P_END65816
	p_findenemyshape	6000,90,.findenemy2
	p_igoto			.nofind

.findenemy2	p_findenemyshape	10000,255,.faceplayer
	p_igoto			.nofind
.faceplayer
	p_faceplayerofs		0,0,80
.nofind


	p_dec		pbyte2
	p_ifnotsame	pbyte2,0,.coloff
	p_collisions	on
.coloff



	p_ifsame	pbyte1,0,.nopbyte1
	p_dec		pbyte1
.nopbyte1

	p_accel		spreadVEL,2

	p_pweaphit	.circle,.circle,.circle
	p_igoto		.next
.circle	P_CIRCLEWINDOW	1
	p_set		pbyte2,10	; nohit timer
;	p_collisions	off
.next	P_NEXT




.remove	P_CIRCLEWINDOW	1
	P_SOUNDEFTDISTPOS	bomexplode
	p_remove

;------------------------------------------------------------------------------------

.always_g	; hit ground?

	p_nothitground	30,.always
	p_set		worldy,30
	p_set		rotx,0


.always	P_START65816
	ldy	al_pword1,x
	toheap	y,y
	lda	exal_spweap_TYPE,y
	cmp	#spweap_smartplasma
	bne	.nolmt
	lda	exal_SPweaponstatus,y
	and	#exal_SPweaponstatus_counter^-1
	ora	#2
	sta	exal_SPweaponstatus,y

	lda	KEnemyNumber
	beq	.stgclr

.nolmt	P_END65816
	p_return

.stgclr	P_END65816
	p_force		.remove
	p_return




.whenhit	P_CIRCLEWINDOW	1
	p_set		hp,100
	p_set		pbyte2,10	; nohit timer
	p_collisions	off
	p_return

;----------------------------------------------------------
;	start_path	spreadbeam_child
;
;	p_collisions	off
;
;	p_set		hp,1
;	p_set		ap,8
;
;	p_immune
;
;	P_START65816
;	s_set_alsflag		x,notslope
;	pl_set_area		x,-1
;	s_clr_colltype		x,ENEMY1
;	P_END65816
;	p_sprite		0,-4
;
;
;	P_DO	4
;	P_START65816
;	a16
;	lda	al_childx,x
;	jsl	perc62A_l
;	sta	al_childx,x
;	lda	al_childy,x
;	jsl	perc62A_l
;	sta	al_childy,x
;	a8
;	P_END65816
;	P_NEXT
;
;	p_remove
;

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	Tame tame
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
	start_path	tametame

	p_collisions	off
	p_rangecheck	off

	p_sprite	0,0


	p_do		16
	p_add		tx,1
	p_next

	p_end

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	player's powerd laser
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
	start_path	Ppowerdlaser

	P_QUADVECS	ON

	p_shadow	off

	p_ifplayer	2,.mp2
.mp1	p_import	ptr,p1_markptr
	p_soundeffect	longlaser1
	p_igoto		.mpp
.mp2	p_import	ptr,p2_markptr
	p_soundeffect	longlaser2
.mpp

	p_setanim	4

	p_set		HP,PpowerdlaserHP
	p_set		AP,PpowerdlaserAP

	p_settype	laser
	p_settype	friend
	p_clrtype	enemy1

	p_wait		1

	p_import	pbyte2,planet_mode
	p_ifsame	pbyte2,pm_space,.sp
.gd	p_setvel	60	;PpowerdlaserVEL
	p_set		count,PpowerdlaserLIF
	p_igoto		.skip0
.sp	p_setvel	120	;PpowerdlaserVEL_space
	p_set		count,PpowerdlaserLIF_space
.skip0

	p_set	childrotx,rotx
	p_set	childroty,roty
	p_set	childrotz,rotz

	p_trigger	.hit,WhenHit
	p_trigger	.rnd,always

.untilanim

	p_pweaphit	.remove,.dmgremove,.rbdremove


	p_do		4
	p_addanim	-1,8
	p_pweaphit	.remove,.dmgremove,.rbdremove
	p_add		rotz,childrotz
	p_next


	p_add		count,-10
	p_set		shape,tamel


	p_do		count

	p_ifsame	animframe,128+7,.noanim
	p_addanim	1,8
.noanim



	p_set	rotx,childrotx
	p_set	roty,childroty
	p_set	rotz,childrotz


;	p_ifplayer	2,.mp2
;.mp1	p_import	ptr,p1_markptr
;	p_igoto		.mpp
;.mp2	p_import	ptr,p2_markptr
;.mpp


	p_shapedead	.nochase
	p_faceshape

	p_moveinshape	100
	p_moveinshape	100
	p_moveinshape	100

	p_setvel	120	;PpowerdlaserVEL_space

	p_igoto	.skip

.nochase

	p_setvel	120	;PpowerdlaserVEL_space

	p_add	vx,vx
	p_add	vy,vy
	p_add	vz,vz

.skip	p_set	childrotx,rotx
	p_set	childroty,roty
	p_set	childrotz,rotz

;	p_setrandom	rotx,255
;	p_setrandom	roty,255
;	p_setrandom	rotz,255

	p_pweaphit	.remove,.dmgremove,.rbdremove

	p_next




.remove	LOCAL
	p_remove


.dmgremove	p_soundeftdistpos	en_dmg_s
	p_qspawn		nullshape,laserpart,10,10
	p_igoto			.remove
.rbdremove	p_soundeftdistpos	ob_reboundlaser_s
	p_igoto			.remove


.rnd	p_setrandom	rotx,255
	p_setrandom	roty,255
	p_setrandom	rotz,255
	p_return



.hit	LOCAL
	p_force		.remove
	p_return


;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	player's normal weapon
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; laser
;--------------------------------------------------------------------------------------------

	start_path	Plaser

	p_shadow	off
	p_gosub		Plaserinit
	p_trigger	.hit,WhenHit
	P_RADAROBJ	ra_sonota

	P_RANGECHECK	OFF

	P_ZERO		skidy			;skidy=0/beam_0
	P_IFSAME	shape,beam_0,.eskid
	P_ADD		skidy,4			;skidy=2/beam_1
	P_IFSAME	shape,beam_1,.eskid
	P_ADD		skidy,4			;skidy=4/beam_2
.eskid
	P_INDEX		shape,.big_shap_tab,skidy
	P_INC		skidy
	p_setanim	0
	p_pweaphit	.remove,.dmgremove,.rbdremove
	p_ifareaout	.rbdremove
	P_WAIT		1

	p_add	count,-18

	P_INDEX		shape,.big_shap_tab,skidy
	P_INC		skidy
	p_setanim	1

.untilanim
	p_pweaphit	.remove,.dmgremove,.rbdremove
	p_ifareaout	.rbdremove

	p_add		vx,vx
	p_add		vy,vy
	p_add		vz,vz

	P_ADD		worldx,vx
	P_ADD		worldy,vy
	P_ADD		worldz,vz
	P_IFSAME	shape,beam_2,.twin
	P_DO		2
	P_ADD		worldx,vx
	P_ADD		worldy,vy
	P_ADD		worldz,vz
	P_INEXT
.twin
	P_WAIT		1

.exitanim
	p_ifsame	pbyte2,pm_space,.space_laser

	P_SET		count,25
	P_IMPORT	slopenum,playerctlmode
	P_IFSAME	slopenum,map_room,.in_room_speed

	P_ADD		count,-15

	P_ADD		vx,vx
	P_ADD		vy,vy
	P_ADD		vz,vz

	P_SET		pword1,vx
	P_DIV2		pword1
	P_ADD		vx,pword1
	P_SET		pword1,vy
	P_DIV2		pword1
	P_ADD		vy,pword1
	P_SET		pword1,vz
	P_DIV2		pword1
	P_ADD		vz,pword1
	P_IGOTO		.lfly
.in_room_speed
	P_TRIGGER	.room_laser_hi,Always
.lfly
	p_do		count
	p_pweaphit	.remove,.dmgremove,.rbdremove
	p_ifareaout	.rbdremove
	p_add		rotz,childrotz
	p_next
	p_igoto		.remove

.room_laser_hi
	P_IFBETWEEN	-300,worldy,0,.hi_ok
	P_FORCE		.hirem
.hi_ok
	P_RETURN
.hirem
	P_TRIGGER	.room_laser_hi,OFF
	P_IGOTO		.remove
;---------------------------------------------------------------
; pbyte2 = planet mode(See Plaserinit)
.space_laser
	P_TRIGGER	.sp_collision_big,Always
	P_DO		4
	p_add		vx,vx
	p_add		vy,vy
	p_add		vz,vz
	P_INEXT
.fly_start
;---------------------------------------------------------------
	p_do		7		;count
	p_pweaphit	.remove,.dmgremove,.rbdremove
	p_add		rotz,childrotz
	p_ifareaout	.rbdremove
	p_next
;---------------------------------------------------------------
; pbyte2 = planet mode(See Plaserinit)
;	p_ifsame	pbyte2,pm_space,.sp
;---------------------------------------------------------------
;.gd
;	p_do		4
;	p_pweaphit	.remove,.dmgremove,.rbdremove
;	p_add		rotz,childrotz
;	p_ifareaout	.rbdremove
;;;;;
;	P_QSPAWN	beam_0s,e_test_2,100,0
;	P_BECOME
;	P_SETANIM	1
;	P_UNBECOME
;;;;;
;	p_next
;	p_igoto		.remove
;---------------------------------------------------------------
; space de syatei wo nagakusuru.
;.sp
;	p_add		vx,vx
;	p_add		vy,vy
;	p_add		vz,vz
;	p_add		vx,vx
;	p_add		vy,vy
;	p_add		vz,vz
;;;;;
;	P_TRIGGER	.sp_collision_big,OFF
;;;;;
;	p_do		4		;18
;	p_pweaphit	.remove,.dmgremove,.rbdremove
;	p_add		rotz,childrotz
;	p_next
;---------------------------------------------------------------


.remove	LOCAL
	p_pweapdeclmt
	p_remove
;---------------------------------------------------------------
.sp_collision_big
	P_INC		pword1
	P_IFSAME	pword1,1,.change
	P_IFSAME	pword1,5,.change
	P_RETURN
.change
	P_INDEX		shape,.big_shap_tab,skidy
	P_INC		skidy
	P_RETURN
.big_shap_tab
	dw	beam_0s,beam_0,beam_0m,beam_0b
	dw	beam_1s,beam_1,beam_1m,beam_0b
	dw	beam_2s,beam_2,beam_2m,beam_2b
;---------------------------------------------------------------
.dmgremove	p_soundeftdistpos	en_dmg_s
	p_qspawn		nullshape,laserpart,10,10
	p_igoto			.remove
.rbdremove	p_soundeftdistpos	ob_reboundlaser_s
	p_igoto			.remove




.hit	LOCAL
	p_force		.remove
	p_return


;----------------------------------------------------------------------------------
plaserinit
	p_pweapinclmt

	p_ifsame	shape,beam_2,.APtwintwin

	p_ifplayer	2,.p2

.p1	p_soundeffect	arwinglaser1
	p_igoto		.pp
.p2	p_soundeffect	arwinglaser2
.pp

	p_ifsame	shape,beam_1,.APtwin
.AP	p_set		AP,Plaser1AP
	p_igoto		.cnt
.APtwin	p_set		AP,Plaser1twinAP
	p_igoto		.cnt
.APtwintwin	p_set		AP,Plaser1twinAP

	p_ifplayer	2,.ttp2
.ttp1	p_soundeffect	twinbmball1
	p_igoto		.ttpp
.ttp2	p_soundeffect	twinbmball2
.ttpp


.cnt	p_set		HP,Plaser1HP
	p_settype	laser
	p_settype	friend
	p_clrtype	enemy1
;ok?	p_invincible	on

	P_IMPORT	pbyte2,eandorf_mode
	P_IFSAME	pbyte2,pm_ground,.gd

	p_import	pbyte2,planet_mode
	p_ifsame	pbyte2,pm_space,.sp
.gd	p_setvel	Plaser1VEL
	p_set		count,Plaser1LIF
	p_return
.sp	p_setvel	Plaser1VEL_space
	p_set		count,Plaser1LIF_space
	p_return

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; twin plasma(MISIION)
	start_path	Pplasma0

	P_HITFLASH	OFF
	P_RADAROBJ	ra_sonota
	p_ifsame	shape,plasma1,.normal
	p_ifplayer	2,.twinP2

.twinP1	P_SOUNDEFFECT	twinbmball1
	p_igoto			.endSE
.twinP2	P_SOUNDEFFECT	twinbmball2
	p_igoto			.endSE
.normal	P_SOUNDEFFECT	arwingbmball1

.endSE

; no chase
	p_gosub		Pplasmainit
	p_gosub		Pplasmainit_LIF
	p_trigger	.hit,WhenHit

;.main	LOCAL
	P_IFNOTSAME	shape,plasma1,.endskid
	P_TRIGGER	.pla0_tx_big,Always
	P_ADD		skidy,4
.endskid
	P_INDEX		shape,plasma_tab,skidy
	P_INC		skidy
	P_IFNOTSAME	shape,plasma1s,.stw
	p_pweaphit	.rm,.dmgremove,.rbdremove
	p_ifareaout	.rbdremove
	P_IGOTO		.first_fl
.stw
	P_ADD		worldx,vx
	P_ADD		worldy,vy
	P_ADD		worldz,vz
.first_fl
	P_WAIT		1

	P_INDEX		shape,plasma_tab,skidy
	P_INC		skidy

	p_add		vx,vx
	p_add		vy,vy
	p_add		vz,vz

	p_ifsame	pbyte2,pm_space,.sp_shape
	P_IMPORT	slopenum,playerctlmode
	P_IFSAME	slopenum,map_room,.in_room_speed

	P_ADD		count,-15
	p_add		vx,vx
	p_add		vy,vy
	p_add		vz,vz

	P_SET		pword1,vx
	P_DIV2		pword1
	P_ADD		vx,pword1
	P_SET		pword1,vy
	P_DIV2		pword1
	P_ADD		vy,pword1
	P_SET		pword1,vz
	P_DIV2		pword1
	P_ADD		vz,pword1
	p_ifareaout	.rbdremove
	p_pweaphit	.rm,.dmgremove,.rbdremove
	P_GOTO		.pl_fly

.in_room_speed
	P_TRIGGER	.room_ten,Always
	p_pweaphit	.rm,.dmgremove,.rbdremove
	p_ifareaout	.rbdremove
	P_GOTO		.pl_fly

.room_ten
	P_IFBETWEEN	-300,worldy,0,.ok_hi
	P_FORCE		.tenrm
.ok_hi
	P_RETURN
.tenrm
	P_TRIGGER	.room_ten,OFF
	P_IGOTO		.rm

.pla0_tx_big
	P_ADD		tx,2
	P_RETURN
;;;--------------------------------------------
.sp_shape
	P_DO		4
	p_add		vx,vx
	p_add		vy,vy
	p_add		vz,vz
	P_INEXT
	P_TRIGGER	.shap_chang,Always
.pl_fly
	p_do		count
	p_pweaphit	.remove,.dmgremove,.rbdremove
	p_ifareaout	.dorbdremove
	p_next
	p_igoto		.rm

.remove	p_break
.rm	p_pweapdeclmt
	p_remove

.dmgremove	p_soundeftdistpos	en_dmg_s
	p_qspawn		nullshape,laserpart,10,10
	p_igoto			.rm

.dorbdremove	P_BREAK			.rbdremove
.rbdremove	p_soundeftdistpos	ob_reboundlaser_s
	p_igoto			.rm

.shap_chang
	P_INC		pword1
	P_IFSAME	pword1,1,.cha
	P_IFSAME	pword1,5,.cha
	P_RETURN
.cha
	P_INDEX		shape,plasma_tab,skidy
	P_INC		skidy
	P_RETURN



.hit	LOCAL

	p_force		.to_rm

	p_return
.to_rm
	P_TRIGGER	.hit,OFF
	P_IGOTO		.rm

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

pplasmainit
	p_pweapinclmt
	p_set		HP,100		;Pplasma1HP
	p_setvel	0
	p_settype	laser
	p_clrtype	enemy1
;ok?	p_invincible	on
	p_return

pplasmainit_LIF
	P_IMPORT	pbyte2,eandorf_mode
	P_IFSAME	pbyte2,pm_ground,.gd

	p_import	pbyte2,planet_mode
	p_ifsame	pbyte2,pm_space,.sp
.gd	p_set		count,25			;Pplasma1LIF
	p_setvel	Pplasma1vel
	P_DIV2		vy
	p_return
.sp	p_set		count,14		;Pplasma1LIF_space
	p_setvel	Pplasma1vel_space
	P_DIV2		vy
	p_return

plasma_tab
	dw	beam_2s,beam_2,beam_2m,beam_2b
	dw	plasma1s,plasma1,plasma1m,plasma1b
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	rebound
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

	start_path	Prebound

	p_shadow	off
	p_set		hp,REBOUNDHP
	p_set		ap,REBOUNDAP
	p_set		count,REBOUNDLIF

	p_settype	laser
	p_settype	friend
	p_clrtype	enemy1

	p_setvel	60
	p_gosub		prou_rel2player1

	p_trigger	HITREMOVE,WhenHit

.main	LOCAL

	p_do		count

	p_hitground	0,.remove

	p_next
.remove	p_remove

;------------------------------------------------------------------------------------

	start_path	Preboundbat

	p_settype	laser
	p_settype	friend
	p_clrtype	enemy1

	p_setvel	60
	p_gosub		prou_rel2playerX

	p_trigger	HITREMOVE,WhenHit

.main	LOCAL
	p_do		count
	p_hitground	0,.remove

	P_START65816
	s_set_objtobealvar	y,x,al_ptr
	toheap			y,y
	lda			exal_SPweaponstatus,y
	and			#exal_SPweaponstatus_rebound
	beq			.sfoff
.sfon	s_jmp_alsflag		x,sflag1,.alive
	bra			.kill
.sfoff	s_jmpnot_alsflag	x,sflag1,.alive
.kill	s_set_alvar		B,x,al_pbyte1,#255
.alive	P_END65816

	p_ifsame		pbyte1,255,.remove

	p_next
.remove
	p_collisions	off
	p_remove

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	Friend's weapon
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

	start_path	Flaser

	p_shadow	off
	p_set		count,Pplasma1LIF

	p_settype	laser
	p_settype	friend

	p_clrtype	enemy1

	p_invincible	on

	p_set		shape,beam_0

	p_set		ap,FlaserAP
	p_set		hp,FlaserHP
	p_setvel	FlaserVEL
	p_set		count,FlaserLIF

	p_add		roty,deg180

	p_trigger	HITREMOVE,WhenHit
	p_import	pbyte1,planet_mode

	P_DO		count

	p_ifsame	animframe,128,.exitanim
	p_addanim	-1,3
.exitanim

	P_HITSLOPE	.remove
	P_IFSAME	pbyte1,pm_space,.cnt
	P_HITGROUND	0,.remove
.cnt	P_NEXT
.remove	P_REMOVE

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	enemy weapon
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

	START_PATH	ERing
	START_PATH	RelERing

	p_import	ap,kdifficulty
	p_ifsame	ap,dif_easy,.easy
	P_SET		ap,ERingAP
	p_igoto		.hp
.easy	P_SET		ap,ERingAP>>1
.hp	P_SET		hp,ERingHP


	P_SET		shape,ringlaser

	p_settype	LASER
	P_SPRITE	0,Eweap_size
	P_RANGECHECK	OFF

	p_QSPAWN	boost,gunblaze,1,1
	P_SOUNDEFTDISTPOS	en_ERing_shot	;$75
	P_SOUND		p2_ERing	;03

	P_IFARWING	.ok_rotx
	P_ADD		rotx,-3
.ok_rotx
	P_QUADVECS	ON
	P_SETVEL	ERingroomVel
	P_COLLISIONS	OFF
	P_WAIT		3
	P_COLLISIONS	ON
	P_TRIGGER	HITREMOVE,WhenHit
	P_TRIGGER	.ring_hit_ck,Always
	P_WAIT		ERingroomLIF
	P_REMOVE
.ring_hit_ck
;************
	p_ifareaout	.rem
;************
	P_HITGROUND	0,.rem
	P_HITSLOPE	.rem
	P_RETURN
.rem
	P_FORCE		.remon
	P_RETURN
.remon
	P_REMOVE
;;;
;;;KAWAGOE'S RING
;;;

	IFEQ		1

	start_path	Ering
	p_set		hp,RelEplasma1HP
	p_set		ap,RelEplasma1AP
	p_set		count,RelEplasma1LIF
	p_igoto		pRelEring.enter

	start_path	RelEring
	p_set		hp,RelEplasma1HP
	p_set		ap,RelEplasma1AP
	p_set		count,RelEplasma1LIF
	p_setvel	RelEplasma1VEL
	p_gosub		prou_rel2player1

.enter	LOCAL

	p_set		shape,ringlaser
	p_sprite	0,Eweap_size


	P_SOUNDEFTDISTPOS	en_ringlaser_s

	p_trigger	.hit,whenhit

	P_DO	count
	P_HITSLOPE	.hit
	P_NEXT
	P_REMOVE

.hit1	p_force		.hit
	p_return


	SHORTA
	LONGI


.hit	P_START65816

	ldy	al_hitlist,x
	a16
	lda.w	hl_alptr,y
	tay
	a8
	cpy	playpt1
	bne	.remove


	pl_jmp_ifitemshield		y,.remove
	pl_jmpnot_ifrollingshield	y,.remove

	sp_jmp_playerctl	y,OF_ARWING,.robot
	sp_jmp_playerctl	y,CS_ARWING,.ufo


.remove	P_END65816
	p_remove

.robot	P_END65816
	p_forcetransform	ROBOT
	p_igoto			.lock

.ufo	P_END65816
	p_forcetransform	UFO

.lock
;	P_START65816
;	ldy		pathplayer&WM
;	toheap		y,y
;	s_set_alvar	B,y,exal_translocktimer,#Eringlocktime
;	P_END65816

	p_remove

	ENDC
;;;
;;;KAWAGOE'S RING END
;;;

;-----------------------------------------------------------------------------
	start_path	Eplasma1

	p_set		hp,Eplasma1HP
	p_set		ap,Eplasma1AP
	P_SOUND		p2_EPlasma	;0C
	P_SOUNDEFTDISTPOS	en_ringlaser_s
	P_SHADOW	OFF
	P_SETTYPE	LASER
	P_SET		shape,enemybomb
	P_SPRITE	0,eweap_size
	P_ALWAYSGENVECS	ON
	P_RANGECHECK	OFF

	P_ALWAYSGENVECS	ON
	P_QUADVECS	ON

	P_TRIGGER	HITREMOVE,WhenHit

	P_SETRANDOM	pbyte2,7	;shinpuku_index

	P_IMPORT	pbyte1,Planet_mode
	P_IFNOTSAME	pbyte1,pm_space,.ground_plasma
;;space_plasma
	P_INDEX		childrotx,.haba_tab,pbyte2
	P_SETRANDOM	childroty,7
	P_ADD		childroty,4

	P_DISTLESS	5000,.slow
	P_DISTLESS	7500,.mid
	P_DISTLESS	10000,.fast
	P_DISTLESS	13000,.mostfar
	P_REMOVE
.mostfar
	P_SETVEL	EPlasma1spmostfarVEL
	P_IGOTO		.end_speed_set
.fast
	P_SETVEL	EPlasma1spfarVEL
	P_IGOTO		.end_speed_set
.mid
	P_SETVEL	EPlasma1spmidVEL
	P_IGOTO		.end_speed_set
.slow
	P_SETVEL	EPlasma1spnearVEL
.end_speed_set
	P_SETRANDOM	slopenum,3	;angle_type
	P_SETRANDOM	pbyte2

	P_TRIGGER	.life_ck_sp,Always
	P_TRIGGER	.wave_dat,Always
	P_TRIGGER	.syusoku,16
.llp
	P_DISTLESS	4000,.sst
	P_GOTO		.llp
.sst
	P_TRIGGER	.syusoku,OFF
	P_IFBETWEEN	0,vel,Eplasma1spmidVEL,.ok_speed
	P_ACCEL		EPlasma1spmidVEL,2
.ok_speed
	P_TRIGGER	.syusoku,8
.lp
	P_DISTLESS	1000,.st
	P_GOTO		.lp
.st	
	P_ACCEL		EPlasma1splastVEL,2
	P_TRIGGER	.wave_dat,OFF
	P_SET		slopenum,6
	P_IFSMALLER	childrotx,slopenum,.hazure
	P_FACEPLAYER	IMMEDIATE
.hazure
	P_END
.rem
	P_TRIGGER	.life_ck_sp,OFF
	P_TRIGGER	.wave_dat,OFF
	P_TRIGGER	.syusoku,OFF
	P_TRIGGER	HITREMOVE,OFF
	P_CLEARSTACK
	P_REMOVE
;-----------
.ground_plasma
	P_TRIGGER	.life_ck_gr,Always
	P_IFARWING	.ok_rotx
	P_ADD		rotx,-3
.ok_rotx
	P_QUADVECS	ON
	P_SETVEL	Eplasma1grVEL
	P_COLLISIONS	OFF
	P_WAIT		3
	P_COLLISIONS	ON
	P_WAIT		ERingroomLIF
	P_REMOVE
;***********
;***********
;***********
	IFEQ	1
	P_INDEX		childrotx,.haba_tab_gr,pbyte2
	P_SETRANDOM	childroty,7
	P_ADD		childroty,8
	P_TRIGGER	.life_ck_gr,Always
	P_TRIGGER	.wave_dat,Always
	P_TRIGGER	.syusoku,8
	P_SETVEL	Eplasma1grVEL
	P_SETVEL	15
.glp
	P_DISTLESS	400,.gnear
	P_GOTO		.glp
.gnear
	P_TRIGGER	.wave_dat,OFF
	P_TRIGGER	.syusoku,OFF
	P_WAIT		40
	P_REMOVE
	P_END
	ENDC
;***********
;***********
;***********
.syusoku
;	P_RANDOMGOTO	.ok
	P_IFSAME	childrotx,8,.ok
	P_INC		childrotx
.ok
	P_RETURN
.wave_dat
	P_FACEPLAYER	IMMEDIATE
	P_INDEX		pbyte1,costab,pbyte2
	P_DO		childrotx		;2
	P_DIV2		pbyte1
	P_INEXT

	P_ADD		pbyte2,childroty

	P_IFZERO	slopenum,.zz
	P_IFSAME	slopenum,1,.only_x
	P_IFSAME	slopenum,2,.only_y
.nzz
	P_ADD		rotx,pbyte1
	P_NEG		pbyte1
	P_ADD		roty,pbyte1
	P_RETURN
.zz
	P_ADD		rotx,pbyte1
.only_y
	P_ADD		roty,pbyte1
	P_RETURN
.nonly_x
	P_NEG		pbyte1
.only_x
	P_ADD		rotx,pbyte1
	P_RETURN
.nonly_y
	P_NEG		pbyte1
	P_ADD		roty,pbyte1
	P_RETURN
.life_ck_sp
;************
	p_ifareaout	.f_rem
;************
	P_INC		pword1
	P_IFNOTSAME	pword1,Eplasma1LIF,.forc
	P_FORCE		.rem
.forc
	P_RETURN
.life_ck_gr
;************
	p_ifareaout	.f_rem
;************
	P_INC		pword1
	P_HITSLOPE	.f_rem
	P_HITGROUND	0,.f_rem
	P_IFNOTSAME	pword1,Eplasma1LIF,.gforc
.f_rem
	P_FORCE		.rem
.gforc
	P_RETURN
.haba_tab
	db	1,1,1,1
.haba_tab_gr
	db	2,2,3,3
	db	3,3,3,3

;;;;;
;;;;;KAWAGOE'S Eplasma1
;;;;;
	IFEQ	1

	start_path	Eplasma1
	p_set		hp,Eplasma1HP
	p_set		ap,Eplasma1AP
;TEST	p_set		count,Eplasma1LIF
;TEST	p_igoto		pRelEplasma1.enter

;;;	p_trigger	.slopeck,always
	p_trigger	HITREMOVE,WhenHit

	p_igoto		pe_pla_test

;.slopeck	p_hitslope	HITREMOVE
;	p_return

	ENDC
;;;;;
;;;;;KAWAGOE'S Eplasma1
;;;;;

;-----------------------------------------------------------------------------
	start_path	RelEplasma1
	p_set		hp,RelEplasma1HP
	p_set		ap,RelEplasma1AP
	p_set		count,RelEplasma1LIF
	p_setvel	RelEplasma1VEL
	p_gosub		prou_rel2player1

.enter	LOCAL

	p_set			shape,enemybomb
	p_sprite		0,Eweap_size

	P_SOUND			p2_Eplasma
	P_SOUNDEFTDISTPOS	en_ringlaser_s
	p_igoto			Eweap.enter

;-----------------------------------------------------------------------------

	start_path	RelElaser_hsp
	p_setvel	RelElaserhspVEL
	p_add		vx,vx
	p_add		vy,vy
	p_add		vz,vz
	p_igoto		pRelElaser.enter


;-----------------------------------------------------------------------------
	start_path	RelElaser
	p_setvel	RelElaserVEL

.enter	LOCAL
	p_set		hp,RelElaserHP
	p_set		ap,RelElaserAP
	p_set		count,RelElaserLIF
	p_gosub		prou_rel2player1
	p_igoto		pElaser.enter

;-----------------------------------------------------------------------------
	start_path	Elaser

	p_set		hp,ElaserHP
	p_set		ap,ElaserAP
	p_set		count,ElaserLIF
	P_DISTLESS	12000,.enter
	P_REMOVE

.enter	LOCAL
	P_SOUNDEFTDISTPOS	en_laser_sL
	p_shadow	off
	P_RANGECHECK	OFF
	P_ALWAYSGENVECS	ON
	p_settype	LASER
	p_trigger	HITREMOVE,WhenHit

	P_QUADVECS	ON
	P_SETVEL	ELaserVEL

	p_set		shape,laser_0
	p_QSPAWN	boost,gunblaze,1,1
	p_import	pbyte1,planet_mode
	P_IFNOTSAME	pbyte1,pm_space,Eweap.enter		;if planet then jump

	P_TRIGGER	.life_ck_sp,Always
	P_SETVEL	63
.come
	P_DISTLESS	3000,.near
	P_MOVEINPLAYER	127	;Elaserspmovein		;100
	P_MOVEINPLAYER	127	;Elaserspmovein		;100
	P_FACEPLAYER	IMMEDIATE
	P_GOTO		.come
.near
	P_FACEPLAYER	IMMEDIATE
;	P_SETVEL	ElasersplastVEL		;30
	P_SETVEL	63
	P_IGOTO		.jyairo_laser
	P_IFSAME	skidy,1,.jyairo_laser

	P_WAIT		ElaserspLIF
.rem
	P_REMOVE
.jyairo_laser
	P_TRIGGER	.face_cha,2
	P_TRIGGER	.throu_ck,WhenThrough
	P_DO		40
	P_NEXT
;	P_WAIT		80		;ElaserspLIF
	P_REMOVE
.throu_ck
	P_FORCE		.throued
	P_RETURN
.throued
	P_TRIGGER	.face_cha,OFF
	P_TRIGGER	.throu_ck,OFF
	P_WAIT		15
	P_REMOVE
.face_cha
	P_PLAYERINCONE	32,.fac
;	P_BEHINDPLAYER	.pass
	P_RETURN
.fac
	P_FACEPLAYER
;.pass
	P_RETURN

.life_ck_sp
;************
	p_ifareaout	.frem
;************
	P_INC		pword1
	P_IFNOTSAME	pword1,ELaserspLIF,.forc
.frem
	P_FORCE		.rem
.forc
	P_RETURN

;;;;
;;;;KAWAGOE'S ELASER
;;;;
	IFEQ		1
	start_path	Elaser
	p_set		hp,ElaserHP
	p_set		ap,ElaserAP
	p_set		count,ElaserLIF

.enter	LOCAL

	p_set		shape,laser_0
	p_spawn		0,0,0,0,0,0,boost,gunblaze,1,1


	p_wait	1

	p_igoto		Eweap.enter

	ENDC
;;;;
;;;;KAWAGOE'S ELASER END
;;;;
;-----------------------------------------------------------------------------

	start_path	Erebound

	p_set		hp,REBOUNDHP
	p_set		ap,REBOUNDAP
	p_set		count,REBOUNDLIF
	p_setvel	50

;-----------------------------------------------------------------------------
;init

Eweap

.enter	LOCAL
	p_shadow	off
	p_settype	LASER
	p_trigger	HITREMOVE,WhenHit
	p_import	pbyte1,planet_mode
	p_ifsame	pbyte1,pm_space,.space
	p_trigger	.alwaysG,always
	p_igoto		.main
.space	p_trigger	.alwaysS,always
.main	P_wait		count
.remove	p_remove



.alwaysG	P_HITGROUND	0,.hitted
.alwaysS	P_HITSLOPE	.hitted
	p_return
.hitted	p_force	.remove
	p_return

;-----------------------------------------------------------------------------
; GUNBLAZE

	start_path	Pgunblaze
	p_sprite	0,0
	p_igoto		Pgunblaze.enter


	start_path	gunblaze
	p_sprite	0,16
;	P_SOUNDEFTDISTPOS	en_laser_sL
.enter	LOCAL
	p_rangecheck	off
	p_collisions	off

	p_do		3
	p_addcolanim	1,2
	p_next
	p_remove

;-----------------------------------------------------------------------------

	start_path	HomEmissile

	P_SET		hp,HomEmissileHP
	P_SET		ap,HomEMissileAP
	P_DISTLESS	10000,.ok_dist
	P_REMOVE
.ok_dist
	P_SOUND		p2_EMissile	;02
	P_CLRTYPE	LASER
	P_SOUNDEFFECT	en_missileshoot_s
	p_trigger	.hit,WhenHit

	P_QUADVECS	ON
	P_SETVEL	2
;	p_setvel	HomEmissilevel
	p_alwaysgenvecs	on

	p_import	pbyte1,planet_mode


	P_IFSAME	skidy,1,.mini_miss
	P_IFSAME	skidy,2,.big_miss

	P_SET		shape,missile
	P_IGOTO		.go
.big_miss
	P_SET		shape,missile_l
	P_IGOTO		.go
.mini_miss
	P_SET		shape,missile_s
.go
	P_IFNOTSAME	skidy,1,.not_kanimiss
	p_do	10
	P_ADD		worldy,10
	p_add	rotz,5
	p_next
.not_kanimiss
	P_IFNOTSAME	skidy,2,.not_strong3
	P_QUADVECS	ON
	P_SETVEL	30
	P_IGOTO		.aa
.not_strong3
	P_ACCEL		20,2
.aa
	P_IFSAME	skidy,1,.mini_miss1
	P_IFSAME	skidy,2,.big_miss1
	p_spawn	0,0,-120,0,0,0,boost,missileboost,1,1,1
	P_IGOTO		.go1
.big_miss1
	p_spawn	0,0,-240,0,0,0,boost,missileboost,32,1,1
	P_IGOTO		.go1
.mini_miss1
	p_spawn	0,0,-60,0,0,0,boost,missileboost,1,1,1
.go1

	P_TRIGGER	.miss_fly,Always

;	P_WAIT		HomEmissileLIF
	P_DO		HomEmissileLIF
	P_NEXT
.remove
	P_TRIGGER	.miss_fly,OFF
.remove_b
	p_distless	1000,.exp
	p_remove
.exp	p_set	hp,0
	p_end
.miss_fly
	P_COLLISIONS	ON
	P_INPLAYERSCONE	-50,50,.able
	P_COLLISIONS	OFF
.able
	P_IFSAME	skidy,2,.near_made
	P_DISTLESS	500,.near
.face
	P_FACEPLAYER	IMMEDIATE
	P_HITSLOPE	.to_remove
	P_IFSAME	pbyte1,pm_space,.cnt
	P_HITGROUND	0,.to_remove
.cnt
	P_ADD		rotz,5
	P_RETURN
.near_made
	P_DISTLESS	100,.near
	P_IGOTO		.face
.to_remove
	P_HITFLASHTRIG
	P_FORCE		.remove
	P_RETURN
.near
	P_FORCE		.near_break
	P_RETURN
.near_break
	P_TRIGGER	.miss_fly,OFF
	P_WAIT		30
	P_IGOTO		.remove_b

.hit	p_force		.remove
	p_return

;;;;
;;;;KAWAGOE'S HomEMissile
;;;;
	IFEQ		1
	start_path	HomEmissile

	p_set		hp,HomEmissileHP
	p_set		ap,HomEmissileAP
	p_set		count,HomEmissileLIF

	p_set		shape,missile

	p_clrtype	LASER

	P_SOUNDEFFECT	en_missileshoot_s

	p_trigger	.hit,Whendead

	p_setvel	HomEmissilevel
	p_alwaysgenvecs	on

	p_import	pbyte1,planet_mode

	p_do	10
	p_add	rotz,5
	p_next

	p_spawn	0,0,-120,0,0,0,boost,missileboost,1,1,1

	p_add	count,-10
	p_do	count

	p_distless	500,.noface
	p_andframegoto	3,.face
	p_igoto		.noface
.face	p_faceplayer
.noface	P_HITSLOPE	.remove

	P_IFSAME	pbyte1,pm_space,.cnt
	P_HITGROUND	0,.remove
.cnt
	p_add	rotz,5
	p_next

.remove
	p_distless	1000,.exp
	p_remove
.exp	p_set	hp,0
	p_end

.hit	p_force		.remove
	P_CIRCLEWINDOW	-2
;	P_SCREENFLASH
	p_return

	ENDC
;;;;
;;;;KAWAGOE'S HomEMissile END
;;;;
;-----------------------------------------------------------------------------

HITREMOVE	p_force		.remove
	p_return
.remove	p_remove

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	test path
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

	SHORTA
	LONGI

	start_path	spinner

	p_rangecheck	off

	p_set		hp,100
	p_set		ap,4

	p_setvel	48

	p_collisions	off

	p_setmarker	1

	p_spawn	0,-10<<spin_scale,0,0,0,0,spin_1,spinnertop,10,10,1
	p_spawn	0,10<<spin_scale,0,deg180,0,0,spin_1,spinnerbase,10,10,1

	p_spawn	0,0,-60<<spin_scale,0,000,0,spin_0,spinnerarm,10,10,1
	p_spawn	51<<spin_scale,0,30<<spin_scale,0,085,0,spin_0,spinnerarm,10,10,1
	p_spawn	-51<<spin_scale,0,30<<spin_scale,0,170,0,spin_0,spinnerarm,10,10,1

	p_alwaysgenvecs	on

.loop0	p_add		roty,5
	p_goto		.loop0

	p_end


	start_path	spinnertop

	p_rangecheck	off
	p_collisions	off

	p_spawn	0,-20<<spin_scale,-25<<spin_scale,0,000,0,spin_3,spinnernipple,10,10,1
	p_spawn	17<<spin_scale,-20<<spin_scale,10<<spin_scale,0,85,0,spin_3,spinnernipple,10,10,1
	p_spawn	-17<<spin_scale,-20<<spin_scale,10<<spin_scale,0,170,0,spin_3,spinnernipple,10,10,1

.loop0	p_add	childroty,5
	p_goto	.loop0
	p_end



	start_path	spinnerbase

	p_rangecheck	off
	p_collisions	off

	p_spawn	0,-20<<spin_scale,-25<<spin_scale,0,000,0,spin_3,spinnernipple,10,10,1
	p_spawn	17<<spin_scale,-20<<spin_scale,10<<spin_scale,0,170,0,spin_3,spinnernipple,10,10,1
	p_spawn	-17<<spin_scale,-20<<spin_scale,10<<spin_scale,0,85,0,spin_3,spinnernipple,10,10,1

.loop0	p_add	childroty,-5
	p_goto	.loop0
	p_end


	start_path	spinnernipple
	p_collisions	off
	p_rangecheck	off

	p_weapon	Eplasma1
.loop0
	p_goto		.loop0

	P_START65816
	lda	gameframe
	and	#31
	bne	.loopend
	P_END65816


	p_fire
	p_igoto		.fireend

.loopend	P_END65816

.fireend

	p_goto		.loop0

	p_end


	start_path	spinnerarm
	p_collisions	off
	p_rangecheck	off
	p_end

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ENDC

;----------------------------------------------------------------------------------
	SHORTA
	LONGI


;mode list
	P_BOSSMODELIST	superdragon
	P_BOSSMODE	sd_gotofront,sdm_gotofront
	P_BOSSMODE	sd_guruguru,sdm_guruguru
	P_BOSSMODE	sd_toguro,sdm_toguro
	P_BOSSMODE	sd_toguro2,sdm_toguro2
	P_BOSSMODE	preturn

	P_BOSSFLAGLIST
	P_BOSSFLAG	sdf_toguro
	P_BOSSFLAG	sdf_front
	P_BOSSFLAG	sdf_bottom
	P_BOSSFLAG	sdf_attack
	P_BOSSFLAG	sdf_top


	start_path	superdragon

	p_radarobj	ra_enemy	; display radar

	p_clrbossflags
	p_set		pword1,0
	p_export	bossflags,pword1

	p_settype	ENEMY2
	p_rangecheck	off
	p_collisions	on

	p_set		hp,70
	p_set		ap,1

	p_set		pbyte1,0

	p_spawn		0,0,0,0,0,0,dragon_1,superdragon_body1,1,1,1

	P_START65816
	s_set_objtobevar	y,becomelastobj&WM
	stx			al_immuneptr,y
	P_END65816

	p_alwaysgenvecs	on

; make friend

	p_spawn		40,0,80,0,45,0,c_wing,superdragon_friend,1,1,1

	p_setbossflag	sdf_toguro,on
	p_setbossflag	sdf_front,on


	p_setbossmode	sdm_toguro
;;;	p_setbossmode	sdm_gotofront
;;;	p_setbossmode	sdm_guruguru


.loop0	p_gosub		sd_setbossmode
	p_setmarker	1

	p_andframegoto	7,.fire
	p_igoto		.nofire
.fire

	p_export	gbyte1,pbyte1
	p_import	pbyte1,gameframe
;	p_print		pbyte1,d,kawagoe
	p_import	pbyte1,gbyte1




.nofire

.copy	p_goto		.loop0

	p_end


sd_setbossmode

	p_jumpbossmode

;----------------------------------------------------------------------------------------------------
sd_gotofront	; mode

.start	p_player	1
	p_distless	1800,.normal
	p_setvel	127
	p_igoto		.spd1
.normal	p_setvel	120
	p_playerincone	deg90,.spd1
	p_setvel	70
.spd1	p_shapedead	.chaseplayer
	p_faceshape	immediate
	p_igoto		.exit


.chaseplayer

	p_ifbossflag	sdf_front,on,.pos0
	p_ifbossflag	sdf_front,on,.pos0
	p_ifbossflag	sdf_front,on,.pos0


.pos3	p_faceplayerofs	0,-40,70
	p_igoto		.exit
.pos2	p_faceplayerofs	0,-40,70
	p_igoto		.exit
.pos1	p_faceplayerofs	0,40,70
	p_igoto		.exit
.pos0	p_faceplayerofs	0,0,70


.exit	p_return



	IFEQ	1

.start	p_player	1
	p_distless	1800,.normal
	p_setvel	127
	p_igoto		.spd1
.normal	p_setvel	120
	p_playerincone	deg90,.spd1
	p_setvel	70
.spd1	p_shapedead	.chaseplayer
	p_faceshape	immediate
	p_igoto		.exit
.chaseplayer	p_faceplayerofs	0,0,70
.exit	p_return

	ENDC
;----------------------------------------------------------------------------------------------------
sd_guruguru	; mode

	p_distmore	1800,.chase

	p_setvel	0
	p_add		roty,10
	p_add		rotx,10

	p_inc		pbyte1
	p_ifnotsame	pbyte1,0,.exit
.chase	p_setbossmode	sdm_gotofront

.exit	p_return

;----------------------------------------------------------------------------------------------------
sd_toguro	; mode

	p_distmore	1800,.chase

	p_setanim	1
	p_setvel	0
	p_add		roty,10
	p_chase		rotx,-32

	p_inc		pbyte1
	p_ifnotsame	pbyte1,40,.exit

.chase	p_set		pbyte1,0
	p_setbossmode	sdm_toguro2

.exit
	p_gosub		sd_toguro2.find
	p_return

sd_toguro2	; mode

	p_distmore	1800,.chase

	p_setanim	0
	p_setvel	0
	p_add		roty,10
	p_chase		rotx,32

	p_inc		pbyte1
	p_ifnotsame	pbyte1,40,.exit

.chase	p_set		pbyte1,0
	p_setbossmode	sdm_toguro

.exit
	p_gosub		.find

	p_return




.find	LOCAL
	p_andframegoto	3,.found
	p_igoto		.rts

.found	p_findshape	bomb
	p_shapedead	.rts
	p_set		pbyte1,0
	p_setbossmode	sdm_gotofront
	p_unlinkchild	1
	p_setbossflag	sdf_toguro,off
.rts	p_return

;----------------------------------------------------------------------------------------------------
sd_hitted	; mode

	p_distmore	1800,.chase
	p_setvel	0
	p_chase		rotx,-60
	p_add		roty,10
	p_add		rotx,10
	p_inc		pbyte1
	p_ifnotsame	pbyte1,0,.exit

.chase	p_setbossmode	sdm_gotofront

.exit	p_return

;----------------------------------------------------------------------------------------------------

; pbyte2: offset Z pos

;***************
	start_path	superdragon_body1

	p_groundobj	on

	p_gosub	superdragon_makebody
.loop0
	P_SWAPVAR	ptr,immuneptr
	p_chainpos	-(45>>2)
	P_SWAPVAR	ptr,immuneptr
	p_gosub		Psuperdragon_body.top
	p_gosub		Psuperdragon_body.bottom


	p_goto		.loop0
	p_end


;***************
	start_path	superdragon_body

	p_groundobj	on

	p_gosub	superdragon_makebody
.loop0
	P_SWAPVAR	ptr,immuneptr
	p_chainpos	-(100>>2)

	P_SWAPVAR	ptr,immuneptr
	p_gosub		.bottom
	p_gosub		.top
	p_goto		.loop0
	p_end


.bottom	LOCAL

	p_ifbossflag	sdf_bottom,OFF,.nobottom

	p_chase		pbyte1,-60

	P_START65816
	s_achase_alvar2alvar	B,x,al_rotx,x,al_pbyte1,1
	P_END65816

.nobottom	p_return




.top	LOCAL
	p_ifbossflag	sdf_top,OFF,.notop

	p_chase		pbyte1,60

	P_START65816
	s_achase_alvar2alvar	B,x,al_rotx,x,al_pbyte1,1
	P_END65816

.notop	p_return



;***************

	start_path	superdragon_tail

	p_groundobj	on

	p_clrtype	ENEMY1
	p_settype	ENEMY2
	p_rangecheck	off
	p_collisions	on
	p_set		hp,100
	p_set		ap,1

.loop0
	P_SWAPVAR	ptr,immuneptr
	p_chainpos	-(92>>2)
	P_SWAPVAR	ptr,immuneptr

	p_goto		.loop0
	p_end


superdragon_makebody

;	p_radarobj	ra_enemy

	p_relative	off

	p_clrtype	ENEMY1
	p_settype	ENEMY2
	p_rangecheck	off
	p_collisions	on
	p_set		hp,100
	p_set		ap,1

	p_becomemother
	p_inc		pbyte1
	p_export	x1,pbyte1
	p_unbecome
	p_import	pbyte1,x1	

	p_ifsame	pbyte1,9,.tail

.body	p_spawn		0,0,-120,0,0,0,dragon_1,superdragon_body,1,1,1
	p_igoto		.mkend
.tail	p_spawn		0,0,-120,0,0,0,dragon_2,superdragon_tail,1,1,1
.mkend

	P_START65816
	s_set_objtobevar	y,becomelastobj&WM
	stx			al_immuneptr,y
	P_END65816

	p_return




;***************

	start_path	superdragon_friend

	IFEQ	1

;	p_clrtype	ENEMY1
;	p_settype	ENEMY2
	p_rangecheck	off
	p_collisions	off
	p_set		hp,100
	p_set		ap,1

	p_weapon	Flaser

.loop0	p_ifbossflag	sdf_toguro,on,.exit

	p_alwaysgenvecs	on

	p_shapedead	.find
	p_igoto		.found

.find
	p_findenemyshape	10000,255,.found

.found

	p_shapedistless	800,.spd2
.spd1	p_accel		50,3
	p_igoto		.spd
.spd2	p_accel		40,3
.spd

	p_faceshape

	p_andframegoto	15,.incone
	p_igoto		.exit
.incone	p_objincone	30,.fire
	p_igoto		.exit
.fire	p_fire

.exit
	p_setmarker	1

	p_goto		.loop0

	ENDC

	p_end

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	TITLE DEMO
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
TITLEDEMO
	start_path	titledirector

title_nintendo_time	equ	060h

title_cut1	equ	1
title_cut2	equ	2
title_cut3	equ	3
title_cut4	equ	4
title_cut5	equ	5
title_cut6	equ	6
title_cut7	equ	7
title_cut8	equ	8
title_cut9	equ	9

childno_title	equ	1
childno_title_bwing	equ	2
childno_title_warp0	equ	3
childno_title_watch2	equ	4
childno_title_watch3	equ	5
childno_title_dragon_bwing	equ	6


title_cam_cut3_x	equ	-1000
title_cam_cut3_y	equ	-1000
title_cam_cut3_z	equ	2200

title_cam_cut4_x	equ	0
title_cam_cut4_y	equ	0
title_cam_cut4_z	equ	0

title_cam_cut5_x	equ	0
title_cam_cut5_y	equ	0
title_cam_cut5_z	equ	2000

title_cam_cut6_x	equ	0
title_cam_cut6_y	equ	0
title_cam_cut6_z	equ	0

	p_trigger	.always,always

	p_set		pword1,SCR4_Hofs
	p_export	player1_horizon_offset,pword1
	p_set		pword1,80h+30h
	p_export	player1hscroll_offset,pword1

;	p_set		pword1,0h
;	p_export	player1_horizon_offset,pword1
	p_set		pword1,0h
	p_export	player1hscroll_offset,pword1

	p_setvel	10
	p_export	player1_vz,vz

	p_shadow	off
	p_collisions	off

	p_setdemo	title_cut1

	p_set	rotx,0
	p_set	roty,0
	p_set	rotz,0

	p_set	worldx,0
	p_set	worldy,0
	p_set	worldz,0

	p_copypos2player
	p_copyrot2player

	p_spawn		0,0,300,0,0,0,nullshape,title_watch,1,1,childno_title

;	p_Qspawn	nullshape,youwin,1,1
	p_Qspawn	nullshape,nintendopresents,1,1
	p_Qspawn	nullshape,title_cam,1,1
;beam

	p_spawn	0,-800,700+300,50,deg180,0,nullshape,title_warps,1,1,childno_title_warp0

	p_wait	title_nintendo_time

	P_SOUNDEFFECT	bs_dragon_laser

	p_spawn		-300,-400,-1500,0,0,0,ship_0,title_ship_explode_0,1,1,childno_title
	p_Qspawn	ship_0,title_ship_1,1,1
;;;;	p_Qspawn	ship_0,title_ship_0,1,1

	p_Qspawn	ryousan,title_bwing,18,0
	p_Qspawn	ryousan,title_bwing,15,1
	p_Qspawn	ryousan,title_bwing,20,2


.cut1	p_ifsamedemo	title_cut2,.cut2
	p_goto		.cut1
.cut2

	p_wait	1

	p_remove	childno_title_warp0

	p_Qspawn	dragon_0,superdragon_demo,1,1


.cut3	p_ifsamedemo	title_cut4,.cut4
	p_goto		.cut3

.cut4	p_Qspawn	nullshape,title_watch2,1,1
.cut4_0	p_ifsamedemo	title_cut5,.cut5
	p_goto		.cut4_0

.cut5

;.cut5_0	p_ifsamedemo	title_cut6,.cut6
;	p_goto		.cut5_0
;
;.cut6
;.cut6_0	p_ifsamedemo	title_cut7,.cut7
;	p_goto		.cut6_0
;
;.cut7
;.cut7_0	p_ifsamedemo	title_cut8,.cut8
;	p_goto		.cut7_0
;
;
;.cut8
	p_end


.always

	p_return

;----------------------------------------------------------------------------------
	start_path	title_watch

	p_collisions	off
	p_shadow	off

	p_demoshape

	p_wait	title_nintendo_time+4

	P_SWAPVAR	pword1,ptr
	p_findshape	ship_0
	p_faceshape	immediate
	p_set		childrotx,rotx
	p_set		childroty,roty
	P_SWAPVAR	pword1,ptr

	p_setvel	50
	p_add		vx,-5

	p_wait		20
	p_setvel	0

.cut1_0	p_ifnotdemo	title_cut1,.cut2
	p_goto		.cut1_0


.cut2
	p_set	childx,-500
	p_set	childy,0
	p_set	childz,300

	p_wait	5

	P_SWAPVAR	pword1,ptr
	p_findshape	dragon_0
	p_faceshape	immediate
	p_set		childrotx,rotx
	p_set		childroty,roty
	P_SWAPVAR	pword1,ptr
	p_setvel	50

	p_do	30
	p_next

.cut2_0	p_ifnotdemo	title_cut2,.cut3
	p_goto		.cut2_0

.cut3	p_remove

	p_end

;----------------------------------------------------------------------------------
	start_path	title_watch2

;	p_set	shape,dragon_0

	p_collisions	off
	p_shadow	off

	p_demoshape

	p_set	worldx,title_cam_cut4_x-50-500
	p_set	worldy,title_cam_cut4_y-20-200
	p_set	worldz,title_cam_cut4_z-50+200


	p_set	roty,deg180
	p_set	rotx,20


	p_spawn	-500,0,-123<<warpl_scale,0,0,0,warpl,title_dragon_beam2,1,1,childno_title
;	p_spawn	0,0,-123<<warp_scale,0,0,0,warp,title_dragon_beam2,1,1,childno_title
;	p_spawn	0,0,-(100+123)<<warp_scale,0,0,0,warp,title_dragon_beam2,1,1,childno_title

	p_setvel	127


	p_add	vx,vx
	p_add	vy,vy
	p_add	vz,vz


	p_wait	15+2

;	p_do	15
;	p_print	worldx,h,kawagoe
;	p_print	worldy,h,kawagoe
;	p_print	worldz,h,kawagoe
;	p_next

	p_setvel	0

	p_wait	30

	p_remove

;----------------------------------------------------------------------------------
	start_path	title_watch3

	p_shadow	off
	p_collisions	off
	p_demoshape
	p_wait		17

;	p_set	shape,c_wing

	p_set		rotx,20
	p_set		roty,-30
	p_setvel	60
	p_accel		0,5

	p_wait	25+2

	p_set		rotx,0
	p_set		roty,-20
	p_setvel	30

	p_wait		40

	p_setvel	0

	p_end

;----------------------------------------------------------------------------------
	start_path	title_cam

	p_collisions	off
	p_shadow	off

	p_wait		1

	p_trigger	.always,always


.cut1	p_ifsamedemo	title_cut2,.cut2
	p_import	vz,player1_vz
	p_goto		.cut1



.cut2	;p_wait		1

	p_add		worldz,-30	;-200-30
	p_add		worldx,-30	;-50
	p_add		worldy,0



.cut2_0	p_ifsamedemo	title_cut3,.cut3
	p_goto		.cut2_0


.cut3	p_set		worldx,title_cam_cut3_x
	p_set		worldy,title_cam_cut3_y
	p_set		worldz,title_cam_cut3_z
	p_set		vz,0
.cut3_0	p_ifsamedemo	title_cut4,.cut4
	p_goto		.cut3_0


.cut4	p_set		worldx,title_cam_cut4_x+400
	p_set		worldy,title_cam_cut4_y
	p_set		worldz,title_cam_cut4_z

.cut4_0	p_ifsamedemo	title_cut5,.cut5
	p_goto		.cut4_0


.cut5	p_set		worldx,title_cam_cut5_x
	p_set		worldy,title_cam_cut5_y
	p_set		worldz,title_cam_cut5_z


	p_do		18
	p_set		vz,5
	p_next

	p_wait		5

	p_do	20
	p_chase		worldx,title_cam_cut5_x+150
	p_chase		worldy,title_cam_cut5_y+100
	p_set		vz,8
	p_next


.cut5_0	p_ifsamedemo	title_cut6,.cut6
	p_goto		.cut5_0


.cut6
	p_set	vz,0

	p_set		worldx,title_cam_cut6_x
	p_set		worldy,title_cam_cut6_y
	p_set		worldz,title_cam_cut6_z

.cut6_0
	p_ifsamedemo	title_cut6,.cut7
	p_goto		.cut6_0


.cut7
	p_end







.always
	p_copypos2view		1,immediate
	p_campandemoshape	1,1,immediate
	p_return

;----------------------------------------------------------------------------------
	start_path	title_bwing

	p_shadow	off
	p_gosub		.pos

.enter	LOCAL


;	p_weapon	Flaser

;	p_spawn	0,0,-20,0,0,0,boost,demoboost,1,1,childno_title

	p_alwaysgenvecs	on

	p_set		pword1,0
	p_trigger	.always,always

	p_rangecheck	off
	p_collisions	off
	p_shadow	off

	p_set	vel,hp

	p_set	rotz,-10

;>>>>>>>>>>>total 45h
	p_wait	10h
	p_ifnotsame	ap,0,.noSE
	P_SOUND		p2_demo_arwing	;GAKKI
.noSE	p_wait	35h
;<<<<<<<<<<<
	p_gosub	.child

	p_do	15
	p_gosub	.addchild
	p_next

.cut1	p_ifsamedemo	title_cut2,.cut2
	p_goto		.cut1


.cut2	p_wait		1

	p_setvel	11
	p_add		ap,3
	p_gosub		.pos
	p_gosub		.child


	p_do		count
	p_gosub		.addchild
	p_next


	p_findshape	dragon_0


	p_do	16
	p_chase	rotz,40
	p_add	worldx,-5
	p_next

	P_SOUNDEFTPOS	ob_throughObst_L

	p_do		count
	p_faceshape
	p_setvel	50
	p_next


	p_do		10
	p_add		rotx,-1
	p_next


.cut2_0	p_ifsamedemo	title_cut3,.cut3
	p_goto		.cut2_0


.cut3	p_invisible	on

	P_SOUND		port2_stop

.cut3_0	p_ifsamedemo	title_cut4,.cut4
	p_goto		.cut3_0



.cut4	p_add		ap,3

	p_ifnotsame	ap,6,.noSE4
	P_SOUND		p2_demo_arwing	;GAKKI
.noSE4

	p_invisible	off
	p_gosub		.pos

	p_setvel	30

	p_set		rotz,0

	p_wait		4


	p_ifnotsame	count,0,.cut4_2
	p_circlewindow	0
	p_set	hp,0

.cut4_2	p_gosub		.child

	p_do		20
	p_gosub		.addchild2

	p_next


.cut4_0	p_ifsamedemo	title_cut5,.cut5
.cut4_1	p_goto		.cut4_0


.cut5
	p_add		ap,3
	p_gosub		.pos
	p_setvel	40


	p_wait	count
	p_remove




.always	p_inc		pword1
	p_collisions	off
	p_return



.pos	p_index	worldx,.x,ap
	p_index	worldy,.y,ap
	p_index	worldz,.z,ap
	p_index	count,.count,ap
	p_index	rotx,.rotx,ap
	p_index	roty,.roty,ap
	p_return

.child	p_index	childx,.childx,ap
	p_index	childy,.childy,ap
	p_index	childz,.childz,ap
	p_index	rotz,.crotz,ap
	p_return


.addchild2
.addchild	p_chase	rotz,0
	p_add	worldx,childx
	p_add	worldy,childy
	p_add	worldz,childz
	p_chase	childx,0
	p_chase	childy,0
	p_chase	childz,0
	p_return

;***********************************
.x	dw	150
	dw	300
	dw	-300
;------------
	dw	-130	;a
	dw	50	;-20	;120	;b
	dw	-150	;c
;------------
	dw	-32+70+200+100-80+40
	dw	-32+70+100+50
	dw	-32+100+200+50-50
;------------
	dw	-139		;0ff75h
	dw	-139-200	;0ff75h
	dw	title_cam_cut4_x+100
;***********************************
;------------
.y	dw	300
	dw	100
	dw	200
;------------
	dw	50
	dw	-10	;-50
	dw	50
;------------
	dw	148h-50
	dw	148h-100+100
	dw	148h+50-300+30-50	;+100
;------------
	dw	-67+200
	dw	-67+50
	dw	title_cam_cut4_y+100	; dead
;***********************************
;------------
.z	dw	-200
	dw	-800
	dw	-700
;------------
	dw	5d9h-100	;a
	dw	5d9h-300	;b
	dw	5d9h-300	;c
;------------
	dw	-710+70+200-180-50
	dw	-710+50-100
	dw	-710+100+400-50
;------------
	dw	881h-(30*21)
	dw	881h-(30*10)
	dw	title_cam_cut4_z-100
;***********************************
;------------
.rotx	db	-10
	db	-15
	db	-10
;------------
	db	2
	db	0
	db	0
;------------
	db	-20
	db	-20
	db	-20
;------------
	db	-10
	db	0
	db	0
;***********************************
;------------
.roty	db	8
	db	8
	db	8
;------------
	db	0
	db	0
	db	-8
;------------
	db	0
	db	0
	db	0
;------------
	db	0
	db	0
	db	0
;***********************************
;------------
.count	db	20
	db	15
	db	15
;------------
	db	60-40
	db	65-40
	db	72-40
;------------
	db	100
	db	100
	db	0
;------------
	db	25-7
	db	26-7
	db	26-7
;***********************************
;------------
.childx	dw	5
	dw	10
	dw	10
;------------
	dw	5
	dw	0
	dw	0
;------------
	dw	15
	dw	0
	dw	0
;***********************************
;------------
.childy	dw	5
	dw	-10
	dw	20
;------------
	dw	-8
	dw	0
	dw	0
;------------
	dw	15
	dw	-30
	dw	0
;***********************************
;------------
.childz	dw	10+20
	dw	10
	dw	10
;------------
	dw	15
	dw	0
	dw	0
;------------
	dw	0
	dw	0
	dw	0
;***********************************
;------------
.crotz	db	50
	db	-50
	db	-20
;------------
	db	30
	db	0
	db	0
;------------
	db	40
	db	-40
	db	40
;------------
;***********************************
;----------------------------------------------------------------------------------

	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	start_path	title_ship_0
	p_setvel	5
	p_set	worldx,-1700
	p_set	worldy,200
	p_set	worldz,-2300
	p_rangecheck	off
	p_collisions	off
	p_shadow	off
.cut3	p_ifsamedemo	title_cut4,.cut4
	p_goto		.cut3
.cut4	p_set	worldx,title_cam_cut4_x-1500
	p_set	worldy,title_cam_cut4_y+500
	p_set	worldz,title_cam_cut4_z-2000
.cut4_0	p_ifsamedemo	title_cut6,.cut6
	p_goto		.cut4_0
.cut6	p_set	shape,ship_0s
	p_set	worldx,title_cam_cut6_x-100
	p_set	worldy,title_cam_cut6_y-100
	p_set	worldz,title_cam_cut6_z+500
	p_set	roty,50
	p_set	rotx,-20
	p_set	rotz,30
	p_do	100
	p_add	roty,1
	p_next
	p_end
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

	ENDC


	start_path	title_ship_1

	p_setvel	8
	p_rangecheck	off
	p_collisions	off
	p_shadow	off

	p_set	worldx,-1700
	p_set	worldy,200
	p_set	worldz,-2300

;	p_set	worldx,-200
;	p_set	worldy,500
;	p_set	worldz,-3000

.cut3	p_ifsamedemo	title_cut4,.cut4
	p_goto		.cut3


.cut4
	p_set	worldx,title_cam_cut4_x+200	;-50
	p_set	worldy,title_cam_cut4_y+800
	p_set	worldz,title_cam_cut4_z-2000+100

;	p_demoshape

	p_wait	14
	p_circlewindow	0,big
	P_SOUNDEFTDISTPOS	en_explode_demo
	p_wait	1

	p_set		hp,0

	p_end



;----------------------------------------------------------------------------------
; explosion

	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
title_mkexp	p_andframegoto	7,.make
	p_igoto		.make
.make	p_Qspawn	explosion5,title_ship_exp,1,1
.exit	p_return
	start_path	title_ship_exp
	p_rangecheck	off
	p_collisions	off
	p_setrandom	pword1,255
	p_add		pword1,-128
	p_add		worldx,pword1
	p_setrandom	pword1,255
	p_add		pword1,-128
	p_add		worldy,pword1
	p_setrandom	pword1,255
	p_add		pword1,-128
	p_add		worldz,pword1
	p_sprite	0,0
	p_set		tx,40
	p_do	8
	p_next
	p_remove

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ENDC


;----------------------------------------------------------------------------------

	start_path	title_ship_explode_0

	p_setvel	5

	p_rangecheck	off
	p_collisions	off
	p_shadow	off

	p_spawn	0,0,0,0,0,0,nullshape,title_ship_explode_l,1,1,1

	p_wait	40
	p_spawn		50,5,0,0,3,deg90+10,clipshape,title_ship_clip,1,1,childno_title
	p_set		clip,plane_BOSS2

	p_do		28
	p_next


	p_circlewindow	1,big
	p_set		hp,0

	p_end



	start_path	title_ship_explode_l

	p_set	depthoffset,3
	p_collisions	off


	p_set	shape,ship_0
	p_wait	40

	p_set		clip,plane_BOSS

	p_do		20
;	p_andframegoto	1,.rotx0

	p_chase		childrotx,-7

	p_add		childy,-2
	p_add		childz,-4

;	p_igoto		.rotx
;.rotx0	p_add		childrotx,-1
.rotx	p_next

	p_add		childx,-200
	p_add		worldx,-200

	p_circlewindow	0
	p_set		hp,0

	p_end

;--------------------------------------------------------------------------------------------------

	start_path	title_ship_clip
	p_collisions	off
	p_groundobj	on
	p_wait	65
	p_remove


	start_path	title_dragon_clip
	p_collisions	off
	p_groundobj	on
	p_end

;--------------------------------------------------------------------------------------------------
	start_path	title_warps
	p_shadow	off

	p_collisions	off
	p_rangecheck	off

	p_wait		title_nintendo_time

	p_trigger	.always,always

	p_spawn	0,0,-500,0,0,0,nullshape,title_warp_top,1,1,childno_title_warp0
	p_spawn	0,0,-(173*2)<<warps_scale-500,0,0,0,nullshape,title_warp_other,1,1,childno_title_warp0

	p_do	15
	p_add	childz,-300/15
	p_next

	p_do	8
	p_chase	childx,-400
	p_next

.cut1_0	p_ifnotdemo	title_cut1,.remove
	p_goto		.cut1_0

.remove	p_wait	1
	p_remove



.always	p_ifsame	childrotx,10,.ret
	p_add		childrotx,-1
.ret	p_return

;----------------------------------------------------------------------------------
	start_path	title_warp_top
	start_path	title_warp_other

	p_collisions	off
	p_rangecheck	off
	p_shadow	off

	p_wait	1

	p_set	shape,warp

	p_do	80
	p_add	childz,100
	p_next

	p_remove

;----------------------------------------------------------------------------------
	start_path	superdragon_demo

	p_groundobj	on

	p_rangecheck	off
	p_collisions	off
	p_shadow	off

	p_add	worldx,-2000+500
	p_add	worldy,-1500
	p_add	worldz,2000-500

	p_set	pbyte1,0

;	p_spawn		30,30,20,15,30,40,b_wing,e_nocol_s_off,1,1,childno_title
;	p_become
;	p_rangecheck	off
;	p_unbecome

	p_spawn		0,0,0,0,0,0,dragon_1,superdragon_body1,1,1,childno_title

	P_START65816
	s_set_objtobevar	y,becomelastobj&WM
	stx			al_immuneptr,y
	P_END65816

;	p_set	childrotx,-50
;	p_set	rotx,50	;-50

	p_gosub	.always



.cut2	p_do	8
	p_ifsamedemo	title_cut3,.cut2_0
	p_add	rotx,1
	p_add	roty,2
	p_next

	p_do	8
	p_ifsamedemo	title_cut3,.cut2_0
	p_add	rotx,-1
	p_add	roty,-2
	p_next
	p_goto	.cut2
.cut2_0	p_break	.cut3



.cut3
	p_set		rotx,14h	;8+8+4
	p_set		roty,deg180

	p_demoshape

	p_alwaysgenvecs	on
	p_setvel	30

;	p_spawn		0,0,-123<<warp_scale,0,0,0,warp,title_dragon_beam,1,1,childno_title
	p_spawn		0,0,50-20,deg270,0,0,clipshape,title_dragon_clip,1,1,childno_title


.cut3_0
	p_setanim	15

	p_do	8
	p_addanim	1,16
	p_add	rotx,1
	p_next

	P_SOUNDEFTDISTPOS	bs_cry_1

	p_do	8
	p_addanim	1,16
	p_add	rotx,-1
	p_next

	p_do	8
	p_addanim	1,16
	p_add	rotx,-1
	p_next

	P_SOUNDEFTDISTPOS	bs_cry_1

	p_do	4
	p_addanim	1,16
	p_add	rotx,-1
	p_next





.cut3_3
	p_setanim	0
	p_do	8
	p_addanim	1,15
	p_chase	roty,deg180+50+20+5
	p_next


	P_SOUNDEFFECT	bs_dragon_laser
	P_SOUNDEFFECT	bs_cry_2
	p_spawn		0,30,-123<<warp_scale,0,0,0,warp,title_dragon_beam,1,1,childno_title

.cut3_4	p_ifsamedemo	title_cut4,.cut4
	p_add	roty,1
	p_goto	.cut3_4


.cut4	; cut5 no position de taiki.

	p_setvel	0

	p_set	worldx,title_cam_cut5_x-300+50
	p_set	worldy,title_cam_cut5_y-150
	p_set	worldz,title_cam_cut5_z+50+50

	p_set	roty,deg180
	p_set	rotx,0

.cut4_0	p_ifsamedemo	title_cut5,.cut5
	p_goto		.cut4_0



.cut5	p_setbossflag	sdf_bottom,ON

	p_Qspawn	nullshape,title_watch3,1,1

	p_do	8
	p_chase	rotz,-30
	p_chase	rotx,10
	p_next

	p_do	10
	p_chase	roty,deg180+100
	p_chase	roty,deg180+100
	p_chase	rotx,30
	p_chase	rotz,20
	p_next

	p_setvel	70

	p_accel	0,7

	p_wait	2

	p_spawn		0,20,50,0,30h,-20,ryousan,title_dragon_bwing,1,1,childno_title_dragon_bwing

	p_wait	2
	P_SOUNDEFFECT	en_dragon_kamu
	p_wait	1

	p_setanim	4
	p_do	5
	p_next


	p_Qspawn	ryousan,title_dragon_bwing2,1,1

	p_do	15
	p_chase	rotx,10
	p_chase	rotz,20
	p_chase	roty,140
	p_next



	p_do	4
	p_addanim	1,16
	p_chase	rotz,0
	p_chase	roty,20
	p_next


;	P_SOUNDEFTDISTPOS	bs_cry_1
	P_SOUNDEFFECT	bs_dragon_through

	p_do	6
	p_setanim	8
	p_chase	rotz,0
;	p_chase	roty,20

	p_chase	roty,10
	p_chase	roty,10

	p_next


	p_do	18
	p_chase	roty,0
	p_next

;	p_do	10
;	p_add	roty,5
;	p_next
;
;	p_do	8
;	p_chase	roty,00h
;	p_chase	roty,00h
;	p_chase	roty,00h
;	p_next


	p_set	worldx,title_cam_cut6_x-200
	p_set	worldy,title_cam_cut6_y-100
	p_set	worldz,title_cam_cut6_z

	p_set	rotx,30+8
	p_set	roty,-20
	p_set	rotz,-10

.cut5_0	p_ifsamedemo	title_cut6,.cut6
	p_goto		.cut5_0


.cut6
	p_demoshape

	p_setanim	0

	p_do	8
	p_addanim	1,16
	p_chase		rotx,-20
	p_chase		rotz,20
	p_next


	P_SOUNDEFFECT	bs_dragon_cry

	p_set	pbyte1,0

	p_do	10
	p_index	childroty,.dat0,pbyte1
	p_add	roty,childroty
;	p_dec	rotx
	p_inc	pbyte1

	p_next

	p_setvel	40
	p_accel		0,2

	p_do	9
	p_chase	roty,deg180
	p_chase	rotx,40
	p_next

	p_set	worldz,title_cam_cut6_z
	p_set	roty,deg270

	p_accel		0,0
	p_setvel	0

	p_end


.dat0
	db	4
	db	-4
	db	3
	db	-3
	db	2
	db	-2
	db	1
	db	-1
	db	1
	db	-1





.always	p_push	ptr
	p_set	ptr,viewblk1
	p_faceshape	immediate
	p_pull	ptr
	p_set	rotx,18h
	p_return




;.loop
;	p_setanim	4
;	p_setbossflag	sdf_bottom,ON
;	p_setbossflag	sdf_top,OFF
;	p_do	30
;;	p_add	roty,8
;	p_chase	rotx,30
;	p_next
;
;
;	p_setbossflag	sdf_top,ON
;	p_setbossflag	sdf_bottom,OFF
;
;
;	p_do	30
;;	p_add	roty,8
;	p_chase	rotx,-30
;	p_next
;
;
;
;	p_goto	.loop
	p_end

;----------------------------------------------------------------------------------
;	start_path	title_dragon_warp
;
;	p_rangecheck	off
;	p_collisions	off
;;	p_groundobj	on
;	p_do	20
;;	p_add	childz,100
;;	p_next
;	p_end
;
;----------------------------------------------------------------------------------
	start_path	title_dragon_bwing

	p_shadow	off
	p_collisions	off

	p_wait		27

	p_set		vx,5
	p_set		vz,40

	p_unlinkchild	childno_title_dragon_bwing

	p_do		18
	p_add		roty,16
	p_add		rotx,1
	p_add		rotz,10
	p_next

	p_circlewindow	0

	p_setvel	0
	p_set	hp,0
	p_end



;----------------------------------------------------------------------------------
	start_path	title_dragon_bwing2

	P_SOUND		p2_demo_arwing	;GAKKI

	p_shadow	off
	p_collisions	off

	p_add	worldx,-270
	p_add	worldz,600
	p_add	worldy,20

	p_set	rotz,-40
	p_set	roty,-30
	p_set	rotx,0

	p_alwaysgenvecs	on

	p_setvel	12


	p_invisible	on

	p_do		11
	p_add		roty,-1
	p_next

	p_invisible	off

	p_do		26
	p_add		roty,-1
	p_next


	p_set	roty,-100



	p_set	rotx,6

	p_setvel	20

	p_do	18
	p_add	rotz,8
	p_next

	p_set	hp,0

	p_circlewindow	1,big

	p_end


;----------------------------------------------------------------------------------
	start_path	title_dragon_beam
	p_shadow	off

	p_groundobj	on
	p_set		clip,plane_BOSS2
	p_collisions	off

	p_do		20
;	p_set	childz,0
	p_add	childz,100
	p_next
	p_remove

;----------------------------------------------------------------------------------
	start_path	title_dragon_beam2
	p_collisions	off
	p_rangecheck	off
	p_shadow	off

	p_wait	15

	p_setvel	127

	p_add	vx,vx
	p_add	vy,vy
	p_add	vz,vz


.cut4	p_ifsamedemo	title_cut5,.remove
	p_goto		.cut4

.remove	p_remove



	IFEQ	1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	START_PATH	e_pla_test
	P_SOUNDEFTDISTPOS	en_ringlaser_s
	P_SHADOW	OFF
	P_SETTYPE	LASER
	P_SET		shape,enemybomb
	P_SPRITE	0,24		;eweap_size
	P_ALWAYSGENVECS	ON
	P_RANGECHECK	OFF
	P_SOUND		p2_EPlasma	;0C
	P_FACEPLAYER	IMMEDIATE
	P_ALWAYSGENVECS	ON
	P_QUADVECS	ON
	P_DISTLESS	5000,.slow
	P_DISTLESS	7500,.mid
	P_DISTLESS	10000,.fast
	P_SETVEL	10
.fast	P_ADD		vel,5
.mid	P_ADD		vel,5
.slow	P_ADD		vel,25
	P_SETRANDOM	slopenum,3
	P_SETRANDOM	pbyte2,7
	P_INDEX		childrotx,.haba_tab,pbyte2
;	P_SETRANDOM	childroty,3
	P_SETRANDOM	childroty,7
	P_ADD		childroty,4
	P_SETRANDOM	pbyte2
	P_TRIGGER	.life_ck,Always
	P_TRIGGER	.wave_dat,Always
	P_TRIGGER	.syusoku,16
.llp	P_DISTLESS	4000,.sst
	P_GOTO		.llp
.sst	P_TRIGGER	.syusoku,OFF
	P_TRIGGER	.syusoku,8
.lp	P_DISTLESS	1000,.st
	P_GOTO		.lp
.st	P_ACCEL		25,2
	P_TRIGGER	.wave_dat,OFF
	P_SET		slopenum,6
	P_IFSMALLER	childrotx,slopenum,.hazure
	P_SCORE		1
	P_FACEPLAYER	IMMEDIATE
.hazure	P_WAIT		40
.rem	P_REMOVE
	P_END
.syusoku	P_IFSAME	childrotx,8,.ok
	P_INC		childrotx
.ok	P_RETURN
.wave_dat	P_FACEPLAYER	IMMEDIATE
	P_INDEX		pbyte1,costab,pbyte2
	P_DO		childrotx		;2
	P_DIV2		pbyte1
	P_INEXT
	P_ADD		pbyte2,childroty
	P_IFZERO	slopenum,.zz
	P_IFSAME	slopenum,1,.only_x
	P_IFSAME	slopenum,2,.only_y
.nzz	P_ADD		rotx,pbyte1
	P_NEG		pbyte1
	P_ADD		roty,pbyte1
	P_RETURN
.zz	P_ADD		rotx,pbyte1
.only_y	P_ADD		roty,pbyte1
	P_RETURN
.nonly_x	P_NEG		pbyte1
.only_x	P_ADD		rotx,pbyte1
	P_RETURN
.nonly_y	P_NEG		pbyte1
	P_ADD		roty,pbyte1
	P_RETURN
.life_ck	P_INC		pword1
	P_IFNOTSAME	pword1,110,.forc
	P_FORCE		.rem
.forc	P_PRINT		pword1,d,eguchi
	P_RETURN
.haba_tab	db	1,2,3,1
	db	1,2,3,1
	P_END
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ENDC

;----------------------------------------------------------------------------------
	printf	"Title demo length = ",*-TITLEDEMO,"%n"
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;	END of FILE
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

	end





