;mode800,value500

*define


;========== ݒ ==========

;fBNgpX
stralias sys_dir,"sys\"
stralias bg_dir,"bg\"
stralias st_dir,"st\"

stralias bgm_dir,"bgm\"
stralias se_dir,"se\"
stralias voice_dir,"voice\"

;eLXgXs[h
;ONSƃeLXg\ɃAj[V~܂̂0
numalias _text_speed,80

;NSp_~[
;ONSforPSPœƂ͈ȉ2RgAEg
defsub cpu
defsub getcpu

;========== ܂ ==========


spi "nscrpng.spi|png"
nsa
globalon
windowback
humanz 20
windoweffect 10,100
shadedistance 2,2
transmode alpha

rmenu "摜\",windowerase ,"Z[u",save,"[h",load,"I܂Ői",skip,"z",lookback,"I",reset

numalias name_sp,5
numalias cursor_sp,10
numalias eye1_sp,50
numalias eye2_sp,51
numalias mouth_sp,52
numalias st_sp,80
numalias fg_sp,100
numalias bg_sp,101


numalias se_ch,1


numalias p1,300
numalias p2,301
numalias bg_x,302
numalias bg_y,303
numalias st_flag,304
numalias st_x,305
numalias st_y,306
numalias panel_type,307
numalias psp_cpu,308
numalias eye1_x,309
numalias eye1_y,310
numalias eye1_f,311
numalias eye2_x,312
numalias eye2_y,313
numalias eye2_f,314
numalias mouth_x,315
numalias mouth_y,316
numalias text_speed,317

numalias fg_name,300
numalias bg_name,301
numalias st_name,302
numalias p_mf,303
numalias cursor_name,304


windowchip name_sp
windowchip cursor_sp


defsub get_fname

defsub panel

defsub tran
defsub tran1
defsub p
defsub fgbg
defsub hscroll
defsub vscroll
defsub scroll
defsub st
defsub set_eye
defsub set_mouth
defsub get_ani

defsub playBGM
defsub voice
defsub playSE
defsub playSE2

defsub init
pretextgosub *pretext_lb
textgosub *text_lb

game

*pretext_lb
	gettag $0,$1
	textclear;ONSłtexec2ĂȂ
	csp name_sp
	if $0=="" jumpf
	voice $0
~
	mov $3,""
	if $1=="" jumpf
	len %0,$1
	mid $2,$1,0,1
	if $2=="@" mid $3,$1,1,%0-1:mov $1,"HHH"
	if $2=="#" mid $3,$1,1,%0-1:jumpf
	if $2!="@" mov $3,$1
	lsp name_sp,":s#FFFFFFy"+$1+"z",25,465
	locate 0,1
	indent 1
~
	if $3=="" jumpf
	if $3=="D@q" set_mouth "Dq"
	if $3=="݂₱" set_mouth "݂₱"
~
	print 1
	saveon
return

*text_lb
	indent 0
	isskip %0
	if %0==1 goto *text_next
	getcursorpos %0,%1
	if %panel_type == 1 lsp cursor_sp,":a/12,100,0;"+$cursor_name,%0,%1:print 1
	if %panel_type == 2 lsp cursor_sp,":a/9,100,0;"+$cursor_name,%0,%1:print 1
	if %panel_type == 3 lsp cursor_sp,":a/12,100,0;"+$cursor_name,%0,%1:print 1
*text_voice_wait_loop
	btntime2 1
	isskip %0
	if %0==1 goto *text_next
	btnwait %0
	if %0==-1 systemcall rmenu:goto *text_voice_wait_loop
	if %0==-2 csp mouth_sp:print 1:goto *text_wait_loop
	goto *text_next
*text_wait_loop
	isskip %0
	if %0==1 goto *text_next
	btndef clear
	btnwait %0
;	click
	if %0==-1 systemcall rmenu:goto *text_wait_loop
*text_next
	csp cursor_sp
	csp mouth_sp
	print 1
;	texec2;ONSł͖
return


*get_fname
	getparam s%100
	fileexist %101,$%100+".jpg"
	if %101==1 mov $%100,$%100+".jpg":return
	fileexist %101,sys_dir+$%100+".jpg"
	if %101==1 mov $%100,sys_dir+$%100+".jpg":return
	fileexist %101,bg_dir+$%100+".jpg"
	if %101==1 mov $%100,bg_dir+$%100+".jpg":return
	fileexist %101,st_dir+$%100+".jpg"
	if %101==1 mov $%100,st_dir+$%100+".jpg":return
	fileexist %101,$%100+".png"
	if %101==1 mov $%100,$%100+".png":return
	fileexist %101,sys_dir+$%100+".png"
	if %101==1 mov $%100,sys_dir+$%100+".png":return
	fileexist %101,bg_dir+$%100+".png"
	if %101==1 mov $%100,bg_dir+$%100+".png":return
	fileexist %101,st_dir+$%100+".png"
	if %101==1 mov $%100,st_dir+$%100+".png":return
return


*panel
	getparam %0
	mov %panel_type,%0
	if %0!=0 jumpf
	csp name_sp
	textoff
~
	if %0!=1 jumpf
	mov $0,"msgPanel"
	get_fname $0
	setwindow 25,465,30,4,25,25,0,5,%text_speed,0,1,$0,0,417
	mov $0,"pauseAnime"
	get_fname $0
	mov $cursor_name,$0
	texton
~
	if %0!=2 jumpf
	mov $0,"fullPanel"
	get_fname $0
	setwindow 50,275,30,2,23,23,0,5,%text_speed,0,1,$0,0,0
	mov $0,"pauseAnimeNextPage"
	get_fname $0
	mov $cursor_name,$0
	texton
~
	if %0!=3 jumpf
	mov $0,"vista_window"
	get_fname $0
	setwindow 25,540,32,2,23,23,0,5,%text_speed,0,1,$0,0,0
	mov $0,"pauseAnime"
	get_fname $0
	mov $cursor_name,$0
	texton
~
return


*tran
	getparam %0,%1
	mov %p1,%0
	mov %p2,%1
return

*tran1
	getparam %0,%1,$0
	mov %p1,%0
	mov %p2,%1
	get_fname $0
	mov $p_mf,":c;"+$0
return

*p
	if %st_flag!=0 jumpf
	csp st_sp
	mov $st_name,""
	if %eye1_f==1 mov %eye1_f,-1:csp eye1_sp
	if %eye2_f==1 mov %eye2_f,-1:csp eye2_sp
~
	mov %st_flag,0
	if %p1==18 print %p1,%p2,$p_mf:return
	print %p1,%p2
return

*fgbg
	getparam $0,$1,%0,%1
	mov %0,0-%0
	mov %1,0-%1
	if $0=="" csp fg_sp:jumpf
	mov $2,$0
	get_fname $0
	if $fg_name == $2 jumpf
	mov $fg_name,$2
	lsp fg_sp,$0,0,0
~
	if $1=="" csp bg_sp:jumpf
	mov $2,$1
	get_fname $1
	mov %2,0
	if $bg_name == $2 inc %2
	if %bg_x == %0 inc %2
	if %bg_y == %1 inc %2
	if %2 >=3 jumpf
	if $bg_name == $2 amsp bg_sp,%0,%1:jumpf
	mov $bg_name,$2
	mov %bg_x,%0
	mov %bg_y,%1
	lsp bg_sp,":c;"+$1,%0,%1
	if %eye1_f==0 mov %eye1_f,-1:csp eye1_sp
	if %eye2_f==0 mov %eye2_f,-1:csp eye2_sp
	set_eye $2,0
~
return

*hscroll
	getparam %0,%1
	saveoff
	cpu 333
	mov %0,0-%0
	mov %2,%0-%bg_x
	mov %1,0-%1
	mov %1,%2*100/%1
	isskip %6
	if %6==1 jumpf
	resettimer
	for %3=0 to 1 step 0
		trap *hscroll_break
		gettimer %4
		if %1<=%4 break
		mov %5,%2*%4/%1
		add %5,%bg_x
		amsp bg_sp,%5,%bg_y:print 1
		waittimer 10
	next
	trap off
	jumpf
*hscroll_break
	break:next
~
	mov %bg_x,%0
	amsp bg_sp,%bg_x,%bg_y
	print 1
	cpu %psp_cpu
	saveon
return

*vscroll
	getparam %0,%1
	saveoff
	cpu 333
	mov %0,0-%0
	mov %2,%0-%bg_y
	mov %1,0-%1
	mov %1,%2*100/%1
	isskip %6
	if %6==1 jumpf
	resettimer
	for %3=0 to 1 step 0
		trap *vscroll_break
		gettimer %4
		if %1<=%4 break
		mov %5,%2*%4/%1
		add %5,%bg_y
		amsp bg_sp,%bg_x,%5:print 1
		waittimer 10
	next
	trap off
	jumpf
*vscroll_break
	break:next
~
	mov %bg_y,%0
	amsp bg_sp,%bg_x,%bg_y
	print 1
	cpu %psp_cpu
	saveon
return

*scroll
	getparam %0,%1,%2
	saveoff
	cpu 333
	mov %0,0-%0
	mov %1,0-%1
	isskip %10
	if %10==1 jumpf
	mov %3,%0-%bg_x
	mov %4,%1-%bg_y
	mov %2,0-%2
	mov %9,%3*100/%2
	mov %2,%4*100/%2
	if %9>%2 mov %2,%9
	resettimer
	for %5=0 to 1 step 0
		trap *scroll_break
		gettimer %6
		if %2<=%6 break
		mov %7,%3*%6/%2
		mov %8,%4*%6/%2
		add %7,%bg_x
		add %8,%bg_y
		amsp bg_sp,%7,%8:print 1
		waittimer 10
	next
	trap off
	jumpf
*scroll_break
	break:next
~
	mov %bg_x,%0
	mov %bg_y,%1
	amsp bg_sp,%bg_x,%bg_y
	print 1
	cpu %psp_cpu
	saveon
return

*st
	getparam $0,%0
	mov $1,$0
	get_fname $0
	lsph st_sp,$0,0,0
	getspsize st_sp,%1,%2
	mov %1,%1/2
	mov %1,%0-%1
	mov %2,600-%2
	amsp st_sp,%1,%2
	mov %st_flag,1
	vsp st_sp,1
	mov $st_name,$1
	mov %st_x,%1
	mov %st_y,%2
	if %eye1_f==1 mov %eye1_f,-1:csp eye1_sp
	if %eye2_f==1 mov %eye2_f,-1:csp eye2_sp
	set_eye $1,1
return

*set_eye
	getparam $40,%42
	mov $41,$40+"-h"
	get_ani $41,%40,%41
	if %40!=-1 gosub *load_eye
	mov $41,$40+"-Dq"
	get_ani $41,%40,%41
	if %40!=-1 gosub *load_eye
	mov $41,$40+"-݂₱"
	get_ani $41,%40,%41
	if %40!=-1 gosub *load_eye
return

*load_eye
	get_fname $41
	rnd2 %43,6000,10000
	itoa $42,%43
	if %eye1_f!=-1 jumpf
	mov %eye1_f,%42
	mov %eye1_x,%40
	mov %eye1_y,%41
	if %42==0 add %40,%bg_x:add %41,%bg_y
	if %42!=0 add %40,%st_x:add %41,%st_y
	lsp eye1_sp,":a/3,<"+$42+",100,100>,2;"+$41,%40,%41
return
~
	mov %eye2_f,%42
	mov %eye2_x,%40
	mov %eye2_y,%41
	if %42==0 add %40,%bg_x:add %41,%bg_y
	if %42!=0 add %40,%st_x:add %41,%st_y
	lsp eye2_sp,":a/3,<"+$42+",100,100>,2;"+$41,%40,%41
return

*set_mouth
	getparam $40
	mov %42,-1
	mov $41,$bg_name+"-"+$40+""
	get_ani $41,%40,%41
	if %40!=-1 mov %42,0:jumpf
	if $st_name=="" return
	mov $41,$st_name+"-"+$40+""
	get_ani $41,%40,%41
	if %40!=-1 mov %42,1:jumpf
return
~
	get_fname $41
	mov %mouth_x,%40
	mov %mouth_y,%41
	if %42==0 add %40,%bg_x:add %41,%bg_y
	if %42!=0 add %40,%st_x:add %41,%st_y
	lsp mouth_sp,":a/3,100,2;"+$41,%40,%41
return


*playBGM
	getparam $0
	if $0=="" stop:return
	bgm bgm_dir+$0
return

*voice
	getparam $0
	dwave 0,voice_dir+$0+".ogg"
return

*playSE
	getparam $0,%0
	if $0!="" jumpf
	dwavestop se_ch+0
	return
~
	if %0==0 dwave se_ch+0,se_dir+$0+".ogg"
	if %0!=0 dwaveloop se_ch+0,se_dir+$0+".ogg"
return

*playSE2
	getparam $0,%0
	if $0!="" jumpf
	dwavestop se_ch+1
	return
~
	if %0==0 dwave se_ch+1,se_dir+$0+".ogg"
	if %0!=0 dwaveloop se_ch+1,se_dir+$0+".ogg"
return


*cpu;PSPp̃_~[
	getparam %100
return

*getcpu
	getparam i%100
	mov %%100,222
return


*init
	erasetextwindow 0
	mov %text_speed,_text_speed
	panel 0
	bg black,1
	getcpu %psp_cpu
	mov %eye1_f,-1
	mov %eye2_f,-1
return


*start

init

mov $0,"topmenu":get_fname $0
lsp bg_sp,":c;"+$0,0,0
print 10,800

mov $0,"topmenuOver_New":get_fname $0
lsph 0,":c;"+$0,680,40
mov $0,"topmenuOver_Load":get_fname $0
lsph 1,":c;"+$0,680,70
mov $0,"topmenuOver_System":get_fname $0
lsph 2,":c;"+$0,680,100
mov $0,"topmenuOver_End":get_fname $0
lsph 3,":c;"+$0,680,160
*topmenu_loop
btndef clear
exbtn_d "C0C1C2C3"
exbtn 0,1,"P0C1C2C3"
exbtn 1,2,"C0P1C2C3"
exbtn 2,3,"C0C1P2C3"
exbtn 3,4,"C0C1C2P3"
btnwait %0
if %0!=1 jumpf
csp -1:print 10,800
goto *main
~
if %0!=2 jumpf
systemcall load

~
if %0!=3 jumpf

~
if %0!=4 jumpf
end
~
goto *topmenu_loop

*main
goto *file_100_01
