#define APL_NAME	"MHP2_Dream"
#define APL_VERSION	"Ver.0.02"

#include "tab.as"
#include "scrollbar.as"
#include "listview.as"
#include "module.as"

#uselib "user32.dll"
#func EnableWindow   "EnableWindow"   int, int
#func MessageBox     "MessageBoxA"    int, sptr, sptr, int
#func SetParent      "SetParent"      int, int
#func SetWindowLong  "SetWindowLongA" int, int, int
#func SetWindowPos   "SetWindowPos"   int, int, int, int, int, int, int
#func ShowWindow     "ShowWindow"     int, int
#cfunc GetWindowLong "GetWindowLongA" int, int
#func GetWindowRect  "GetWindowRect"  int, var

#uselib "shell32.dll"
#func DragAcceptFiles "DragAcceptFiles" int,int
#func DragQueryFile   "DragQueryFileA"  int,int,int,int
#func DragQueryPoint  "DragQueryPoint"  int,int
#func DragFinish      "DragFinish"      int

#define WM_SETREDRAW	$0000000B
#define WM_VSCROLL		$00000115
#define WM_HSCROLL		$00000114
#define WM_COMMAND		$00000111
#define WM_NOTIFY		$0000004E
#define WM_DROPFILES	$00000233
#define NM_RCLICK		$FFFFFFFB
#define NM_DBLCLK		$FFFFFFFD
#define TCN_SELCHANGE	$FFFFFDD9
#define CBN_SELCHANGE	$00000001
#define LVN_ITEMCHANGED	$FFFFFF9B
#define SB_TOP			$00000006


	dim hwnd_sub, 4
	dim rect, 4
	sdim player_name, 32
	sdim savedata_path, 260
	sdim item_text, 32
	sdim equipment_text, 32
	sdim quest_text, 4096

	sdim monster_name, 24, 78
	monster_name = "NO DATA", "ICA", "~{AX", "Pr", "X", "ut@S", "CNbN", "IV", "hXKIX", "AC[", "WWB", "IEX", "AvgmX", "Ql|X", "fBAuX", "tt", "|X", "OrX", "jO}", "SX^", "QX", "KmggX", "oTX", "[", "J^X", "AvPX", "muX", "hX|X", "hXQl|X", "C", "C[IX", "hXC[IX", "RX", "L", "KIX", "MAmX", "~{AX", "ICA", "CNbN", "QX", "CKK", "IEX󏭎", "ICA󏭎", "fBAuX", "muX", "tt", "KmggX", "OrX", "_C~EUU~", "IEX", "IV", "hhuS", "ooRK", "[W", "NV_I", "VFKI", "嗋", "``u[", "}cJ~", "IIiY`", "NV_I", "uS", "RK", "KuX", "iiEeXJg", "eIEeXJg", "IU~", "VEOMU~", "hXt@S", "KEVJ", "||", "~{AX", "}cJ~", "K~U~", "gW[", "eBKbNX", "AJg", "hXMAmX"


/////////////////////////////////////////////////////////////////////////
// CUI̍쐬

	screen 0, 640, 480, 2 : title APL_NAME
	hwnd_main = hwnd
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2
	DragAcceptFiles hwnd, 1								; hbOAhhbvL

	onkey gosub *msg_key : onkey 0
	oncmd gosub *msg_drop, WM_DROPFILES
	oncmd gosub *msg_notify, WM_NOTIFY

	pos 0, 5 : tabcontrol 640, 445, $108 | $10000000
	htab_main = stat
	tabadd 0, "PLAYER 1"
	tabadd 1, "PLAYER 2"
	tabadd 2, "PLAYER 3"
	tabgetpos rect

	objsize 80, 20
	pos   5, 455 : button gosub "Open", *open_savedata
	pos  90, 455 : button gosub "Reload", *reload_savedata
	pos 175, 455 : button gosub "Save", *save_savedata
	pos 470, 455 : button gosub "About", *about
	pos 555, 455 : button goto "Exit", *exit

	pos 0, rect(1) : tabcontrol 640, 445 - rect(1), $10000000, htab_main
	htab_sub = stat
	tabadd 0, "vC["
	tabadd 1, "MhJ[h"
	tabadd 2, "ACe{bNX"
	tabadd 3, "i{bNX"
	tabadd 4, "AC[Lb`"
	tabadd 5, "CxNG1"
	tabadd 6, "CxNG2"
	tabadd 7, "CxNG3"
	tabgetpos rect


	// vC[
	bgscr 2, , , 2 : tabchild
	hwnd_sub(0) = hwnd
	syscolor 15 : boxf : color
	font "lr SVbN", 12 : objmode 2

	oncmd gosub *msg_notify, WM_NOTIFY
	oncmd gosub *msg_scroll, WM_HSCROLL

	boxf 375, 88, 415, 128
	pos 435, 145 : mes "[ ^^b ]"

	objsize 90, 20
	prm = 1 | $200 | $5000
	pos   5,   5 : static_text "PLAYER NAME", prm
	pos   5,  30 : static_text "INNER TYPE", prm
	pos 155,  30 : static_text "FACE TYPE", prm
	pos 305,  30 : static_text "HAIR TYPE", prm
	pos 455,  30 : static_text "VOICE TYPE", prm
	pos   5,  55 : static_text "HAIR COLOR", prm

	objsize 60, 16
	pos 310,  80 : static_text "R : 000", prm
	pos 310, 100 : static_text "G : 000", prm
	pos 310, 120 : static_text "B : 000", prm

	objsize 90, 20
	pos 5, 141 : static_text "", prm
	pos 5, 166 : static_text "߲", prm
	pos 5, 191 : static_text "߲߯", prm
	pos 205, 141 : static_text "vC", prm

	pos 100, 5 : input player_name, 200, 20, 8
	pos 305, 5 : combox player_sex, 100, "MALE\nFEMALE"

	objsize 50, 0
	pos 100, 30 : combox player_inner, 150, "01\n02\n03\n04"
	pos 250, 30 : combox player_face, 150, "01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32"
	pos 400, 30 : combox player_hair, 150, "01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25"
	pos 550, 30 : combox player_voice, 150, "01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17"

	scrollbar 5,  80, 300, 16 : hscroll(0) = stat : scrollrange 0, 255 : EnableWindow hscroll(0), 0
	scrollbar 5, 100, 300, 16 : hscroll(1) = stat : scrollrange 0, 255 : EnableWindow hscroll(1), 0
	scrollbar 5, 120, 300, 16 : hscroll(2) = stat : scrollrange 0, 255 : EnableWindow hscroll(2), 0

	pos 100, 141 : input money, 100, 20, 8   : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 100, 166 : input g_point, 100, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 100, 191 : input p_point, 100, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	pos 300, 141 : input time(0), 40, 20, 4 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 345, 141 : input time(1), 40, 20, 2 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 390, 141 : input time(2), 40, 20, 2 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	repeat 12, 13 : EnableWindow objinfo(cnt, 2), 0 : loop			; gps

	// ACe
	pos 5, 216 : listview ginfo_winx - 10, ginfo_winy - 221, 1 | 4 | 8 | $10000 | $200000
	hlist_item = stat
	listaddcl 0, "ڽ", 50
	listaddcl 1, "莝ACe", 300
	listaddcl 2, "", 40, 1
	listaddcl 3, "єԍ", 80, 1
	EnableWindow hlist_item, 0


	// MhJ[h
	bgscr 3, , , 2 : tabchild
	hwnd_sub(1) = hwnd
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2

	oncmd gosub *msg_notify, WM_NOTIFY

	objsize 150, 20
	prm = 1 | $200 | $5000
	pos   5,   5 : static_text "NGXg", prm
	pos 160,   5 : static_text "gW[|Cg", prm
	pos   5, 155 : static_text "M", prm
	pos 315,   5 : static_text "L^", prm

	objsize 80, 20
	pos   5,  30 : static_text "NGXg", prm
	pos   5,  55 : static_text "W", prm
	pos   5,  80 : static_text "W", prm
	pos   5, 105 : static_text "gW[", prm
	pos   5, 130 : static_text "P", prm
	pos 160,  30 : static_text "R", prm
	pos 160,  55 : static_text "", prm
	pos 160,  80 : static_text "", prm
	pos 160, 105 : static_text "n", prm
	pos 160, 130 : static_text "Xu", prm
	pos 160, 155 : static_text "ΎR", prm

	pos 90,  30 : input quest_num(0), 65, 20, 3 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 90,  55 : input quest_num(1), 65, 20, 3 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 90,  80 : input quest_num(2), 65, 20, 3 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 90, 105 : input quest_num(3), 65, 20, 3 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 90, 130 : input quest_num(4), 65, 20, 3 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	pos 245,  30 : input treasure_point(0), 65, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 245,  55 : input treasure_point(1), 65, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 245,  80 : input treasure_point(2), 65, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 245, 105 : input treasure_point(3), 65, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 245, 130 : input treasure_point(4), 65, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 245, 155 : input treasure_point(5), 65, 20, 8 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	repeat 11, 15 : EnableWindow objinfo(cnt, 2), 0 : loop			; gps

	// ̍
	pos 5, 180 : listview 305, ginfo_winy - 185, 1 | 4 | 8 | $40000 | $200000
	hlist_design = stat
	listaddcl 0, "M͖", 200
	EnableWindow hlist_design, 0
	sdim design_name, 64
	tmp = "̂ĂԂ\n̂ڂ\n̂܂\ñR[g\nĂ݂̎\nubhIjLX\nLONE\n~j`ANE\nԓ̃_\ñ_\ñ_\nNIrobW\n^cWobW\nfZcobW\n񍐏\nԌ񍐏\nV\nIIcmAQn\nt\nhXrXJX\nӂ̎莆\n҂̘r\nEl̃gJ`\nl̂"
	index = 0
	repeat 24
		getstr design_name, tmp, index
		index += strsize
		listadd cnt, design_name
	loop
	sdim design_name, 1

	// X^[L^
	pos 315, 30 : listview ginfo_winx - 320, ginfo_winy - 35, 1 | 4 | 8 | $10000 | $200000
	hlist_monster = stat
	listaddcl 0, "X^[", 120
	listaddcl 1, "", 40, 1
	listaddcl 2, "ߊl", 40, 1
	listaddcl 3, "ŏ", 40, 1
	listaddcl 4, "ő", 40, 1
	EnableWindow hlist_monster, 0


	// ACe{bNX
	pos rect(0) + 5, rect(1) + 5 : listview rect(2) - rect(0) - 10, rect(3) - rect(1) - 10, 1 | 4 | 8 | $10000 | $200000, htab_sub
	hwnd_sub(2) = stat
	listaddcl 0, "ڽ", 50
	listaddcl 1, "ACe", 300
	listaddcl 2, "", 40, 1
	listaddcl 3, "єԍ", 80, 1
	ShowWindow hwnd_sub(2), 0
	EnableWindow hwnd_sub(2), 0

	// i{bNX
	pos rect(0) + 5, rect(1) + 5 : listview rect(2) - rect(0) - 10, rect(3) - rect(1) - 10, 1 | 4 | 8 | $10000 | $200000, htab_sub
	hwnd_sub(3) = stat
	listaddcl 0, "ڽ", 50
	listaddcl 1, "", 40, 2
	listaddcl 2, "i", 300
	listaddcl 3, "LV", 40, 1
	listaddcl 4, "iԍ", 80, 1
	ShowWindow hwnd_sub(3), 0
	EnableWindow hwnd_sub(3), 0


	// AC[Lb`
	pos rect(0) + 5, rect(1) + 5 : listview rect(2) - rect(0) - 10, rect(3) - rect(1) - 10, 1 | 4 | 8 | $10000 | $200000, htab_sub
	hwnd_sub(4) = stat
	listaddcl 0, "ڽ", 50
	listaddcl 1, "Vtg", 50
	listaddcl 2, "O", 80
	listaddcl 3, "ѕ", 80
	listaddcl 4, "x", 50, 1
	listaddcl 5, "ol", 50, 1
	listaddcl 6, "HށE񃌃x", 120
	listaddcl 7, "lR̃XL", 300
	ShowWindow hwnd_sub(4), 0
	EnableWindow hwnd_sub(4), 0


	// CxNG1()
	bgscr 5 , , , 2 : tabchild
	hwnd_sub(5) = hwnd
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2

	oncmd gosub *msg_notify, WM_NOTIFY

	objsize 150, 20
	prm = 1 | $200 | $5000
	pos   5,   5 : static_text "NGXgԍ", prm
	pos   5,  55 : static_text "NGXg", prm
	pos   5, 105 : static_text "", prm
	pos   5, 155 : static_text "NGXgx", prm
	pos   5, 205 : static_text "NGXg", prm
	pos 200, 105 : static_text "˗", prm
	pos 200, 155 : static_text "˗e", prm
	pos 200, 285 : static_text "ȃX^[", prm
	pos 200, 335 : static_text "Ώ", prm

	objsize 75, 20
	prm = 1 | $200 | $5000
	pos   5, 255 : static_text "V", prm
	pos   5, 280 : static_text "", prm
	pos   5, 305 : static_text "_", prm
	pos   5, 330 : static_text "Mh|Cg", prm
	pos   5, 355 : static_text "()", prm
	pos 390,   5 : static_text "xi", prm
	pos 390, 200 : static_text "Vi", prm
	pos 200,   5 : static_text "wn", prm
	pos 200,  30 : static_text "Jnʒu", prm
	pos 200,  55 : static_text "{X", prm
	pos 200,  80 : static_text "", prm

	pos   5, 30 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5, 80 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,130 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,180 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,230 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,255 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,280 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,305 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,330 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,355 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275,  5 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 30 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 55 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 80 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,130 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,180 : input treasure_point(4), 150,100,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,310 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,360 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	
	// xi
	pos 390, 30 : listview ginfo_winx - 400, ginfo_winy - 235, 1 | 4 | 8 | $0 | $0
	hlist_item = stat
	listaddcl 6, "ڽ", 50
	listaddcl 7, "ACe", 115
	listaddcl 8, "", 45, 1
	EnableWindow hlist_item, 2
	
	// V
	pos 390, 225 : listview ginfo_winx - 400, ginfo_winy - 235, 1 | 4 | 8 | $0 | $0
	hlist_item = stat
	listaddcl 3, "ڽ", 50
	listaddcl 4, "ACe", 115
	listaddcl 5, "", 45, 1
	EnableWindow hlist_item, 1
	

	// CxNG2()
	bgscr 6 , , , 2 : tabchild
	hwnd_sub(6) = hwnd
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2

	oncmd gosub *msg_notify, WM_NOTIFY

	objsize 150, 20
	prm = 1 | $200 | $5000
	pos   5,   5 : static_text "NGXgԍ", prm
	pos   5,  55 : static_text "NGXg", prm
	pos   5, 105 : static_text "", prm
	pos   5, 155 : static_text "NGXgx", prm
	pos   5, 205 : static_text "NGXg", prm
	pos 200, 105 : static_text "˗", prm
	pos 200, 155 : static_text "˗e", prm
	pos 200, 285 : static_text "ȃX^[", prm
	pos 200, 335 : static_text "Ώ", prm

	objsize 75, 20
	prm = 1 | $200 | $5000
	pos   5, 255 : static_text "V", prm
	pos   5, 280 : static_text "", prm
	pos   5, 305 : static_text "_", prm
	pos   5, 330 : static_text "Mh|Cg", prm
	pos   5, 355 : static_text "()", prm
	pos 390,   5 : static_text "xi", prm
	pos 390, 200 : static_text "Vi", prm
	pos 200,   5 : static_text "wn", prm
	pos 200,  30 : static_text "Jnʒu", prm
	pos 200,  55 : static_text "{X", prm
	pos 200,  80 : static_text "", prm

	pos   5, 30 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5, 80 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,130 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,180 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,230 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,255 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,280 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,305 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,330 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,355 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275,  5 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 30 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 55 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 80 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,130 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,180 : input treasure_point(4), 150,100,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,310 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,360 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	
	// xi
	pos 390, 30 : listview ginfo_winx - 400, ginfo_winy - 235, 1 | 4 | 8 | $0 | $0
	hlist_item = stat
	listaddcl 9, "ڽ", 50
	listaddcl 10, "ACe", 115
	listaddcl 11, "", 45, 1
	EnableWindow hlist_item, 2
	
	// V
	pos 390, 225 : listview ginfo_winx - 400, ginfo_winy - 235, 1 | 4 | 8 | $0 | $0
	hlist_item = stat
	listaddcl 12, "ڽ", 50
	listaddcl 13, "ACe", 115
	listaddcl 14, "", 45, 1
	EnableWindow hlist_item, 1


	// CxNG3()
	bgscr 7 , , , 2 : tabchild
	hwnd_sub(7) = hwnd
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2

	oncmd gosub *msg_notify, WM_NOTIFY

	objsize 150, 20
	prm = 1 | $200 | $5000
	pos   5,   5 : static_text "NGXgԍ", prm
	pos   5,  55 : static_text "NGXg", prm
	pos   5, 105 : static_text "", prm
	pos   5, 155 : static_text "NGXgx", prm
	pos   5, 205 : static_text "NGXg", prm
	pos 200, 105 : static_text "˗", prm
	pos 200, 155 : static_text "˗e", prm
	pos 200, 285 : static_text "ȃX^[", prm
	pos 200, 335 : static_text "Ώ", prm

	objsize 75, 20
	prm = 1 | $200 | $5000
	pos   5, 255 : static_text "V", prm
	pos   5, 280 : static_text "", prm
	pos   5, 305 : static_text "_", prm
	pos   5, 330 : static_text "Mh|Cg", prm
	pos   5, 355 : static_text "()", prm
	pos 390,   5 : static_text "xi", prm
	pos 390, 200 : static_text "Vi", prm
	pos 200,   5 : static_text "wn", prm
	pos 200,  30 : static_text "Jnʒu", prm
	pos 200,  55 : static_text "{X", prm
	pos 200,  80 : static_text "", prm

	pos   5, 30 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5, 80 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,130 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,180 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos   5,230 : input treasure_point(4), 150, 20, 200:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,255 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,280 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,305 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,330 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos  80,355 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275,  5 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 30 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 55 : input treasure_point(4),  75, 20,   8:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 275, 80 : input treasure_point(4),  75, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,130 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,180 : input treasure_point(4), 150,100,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,310 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 200,360 : input treasure_point(4), 150, 20,   4:SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	
	// xi
	pos 390, 30 : listview ginfo_winx - 400, ginfo_winy - 235, 1 | 4 | 8 | $0 | $0
	hlist_item = stat
	listaddcl 15, "ڽ", 50
	listaddcl 16, "ACe", 115
	listaddcl 17, "", 45, 1
	EnableWindow hlist_item, 2
	
	// V
	pos 390, 225 : listview ginfo_winx - 400, ginfo_winy - 235, 1 | 4 | 8 | $0 | $0
	hlist_item = stat
	listaddcl 18, "ڽ", 50
	listaddcl 19, "ACe", 115
	listaddcl 20, "", 45, 1
	EnableWindow hlist_item, 1
	
	
/////////////////////////////////////////////////////////////////////////
// TuEBhE쐬

	// L^ҏW
	screen 20, 200, 155, 2 | 4 : title "L^ҏW"
	SetWindowLong hwnd, -8, hwnd_main
	SetWindowLong hwnd, -16, $6C00000		; HSP2.X̃TuEBhEX^Ci\j
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2

	objsize 190, 20
	prm = 1 | $200 | $5000
	pos 5, 5 : static_text "", prm

	objsize 80, 20
	pos 5,  30 : static_text "", prm
	pos 5,  55 : static_text "ߊl", prm
	pos 5,  80 : static_text "ŏTCY", prm
	pos 5, 105 : static_text "őTCY", prm

	pos 90,  30 : input monster_num1, 105, 20, 4 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 90,  55 : input monster_num2, 105, 20, 4 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 90,  80 : input monster_minsize, 105, 20, 3 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002
	pos 90, 105 : input monster_maxsize, 105, 20, 3 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	pos 30, 130 : button gosub "Kp", *ok_monster
	pos 115, 130 : button gosub "LZ", *cancel_monster


	// ACeҏW
	screen 21, 300, 300, 2 | 4 : title "ACeҏW"
	hwnd_item = hwnd
	SetWindowLong hwnd, -8, hwnd_main
	SetWindowLong hwnd, -16, $6C00000		; HSP2.X̃TuEBhEX^Ci\j
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2

	objsize 60, 20
	pos 5, 5
	input item_text, 225, 20
	pos 235, 5 : button gosub "", *serch_item

	objsize 290, 195
	notesel tmp
	noteload "ITEM.TXT"
	pos 5, 30 : listbox item_index, 0, tmp : hlistbox_item = objinfo(stat, 2)
	GetWindowRect hlistbox_item, rect
	pos 100, rect(3) - rect(1) + 35 : input item_num, 195, 20, 2 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	objsize 90, 20
	pos 5, rect(3) - rect(1) + 35 : static_text "", 1 | $200 | $5000

	objsize 80, 20
	pos 130, 60 + rect(3) - rect(1) : button gosub "Kp", *ok_item
	pos 215, 60 + rect(3) - rect(1) : button gosub "LZ", *cancel_item
	width , rect(3) - rect(1) + 85


	// iҏW
	screen 22, 300, 300, 2 | 4 : title "iҏW"
	hwnd_equipment = hwnd
	SetWindowLong hwnd, -8, hwnd_main
	SetWindowLong hwnd, -16, $6C00000		; HSP2.X̃TuEBhEX^Ci\j
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2, 0

	oncmd gosub *msg_command, WM_COMMAND

	objsize 60, 20
	pos 5, 5
	input equipment_text, 225, 20
	pos 235, 5 : button gosub "", *serch_equipment

	objsize 90, 20
	pos 5, 30 : static_text "", 1 | $200 | $5000

	objsize 195, 0
	pos 100, 30 : combox equipment_kind, 150, "00 REG\n01 HEAD\n02 BODY\n03 ARM\n04 WST\n05 SWORD\n06 GUN"
	hcombox_equipment = objinfo(stat, 2)
	objsize 290, 195
	database_path = "00_REG.TXT", "01_HEAD.TXT", "02_BODY.TXT", "03_ARM.TXT", "04_WST.TXT", "05_SWORD.TXT", "06_GUN.TXT"
	repeat 7
		noteload database_path(cnt)
		pos 5, 55 : listbox equipment_index(cnt), 0, tmp : hlistbox(cnt) = objinfo(stat, 2)
		ShowWindow hlistbox(cnt), 0
	loop
	noteunsel : sdim tmp, 1
	GetWindowRect objinfo(4, 2), rect

	pos 100, 60 + rect(3) - rect(1) : input equipment_lv, 195, 20, 2 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	objsize 90, 20
	pos 5, 60 + rect(3) - rect(1) : static_text "x", 1 | $200 | $5000

	objsize 80, 20
	pos 130, 85 + rect(3) - rect(1) : button gosub "Kp", *ok_equipment
	pos 215, 85 + rect(3) - rect(1) : button gosub "LZ", *cancel_equipment
	width , rect(3) - rect(1) + 110


	// AC[Lb`ҏW
	screen 23, 665, 300, 2 | 4 : title "AC[Lb`ҏW"
	hwnd_equipment = hwnd
	SetWindowLong hwnd, -8, hwnd_main
	SetWindowLong hwnd, -16, $6C00000		; HSP2.X̃TuEBhEX^Ci\j
	syscolor 15 : boxf : color
	font "MS SVbN", 12 : objmode 2, 0

	oncmd gosub *msg_command, WM_COMMAND

	prm = 1 | $200 | $5000
	objsize 100, 20
	pos 215, 5 : static_text "ol", prm

	objsize 100, 20
	pos   5, 30 : static_text "O", prm
	pos 110, 30 : static_text "ѕ", prm

	objsize 140, 20
	pos 215, 30 : static_text "EHރx", prm

	objsize 300, 20
	pos 360, 30 : static_text "lR̃XL", prm

	objsize 100, 0
	pos   5, 5 : combox airu_shift, 150, "ٗp\nxe\nHW"
	pos 110, 5 : combox airu_lv, 150, "LV1\nLV2\nLV3\nLV4\nLV5\nLV6\nLV7\nLV8\nLV9"
	hcombox_airulv = objinfo_hwnd(stat)

	pos 320, 5 : input airu_exp, 100, 20, 5 : SetWindowLong objinfo(stat, 2), -16, $50010080 | $2002

	objsize 100, 195
	pos   5, 55 : listbox airu_name, 0, "A[T[\nA[mh\nA[h\nAV[\nAbv\nAj[\nA\nG}jG\nJ[[\nJ[\nLbh\nMo[g\nOn\nNX^\nPC\nPC\nRRA\nRi\nV@\nW\nVE\nVE\nVbg\nVrA\nXR[sI\nXRbg\nZi\n_CAi\n^}\n^\n`r\n`[Y\nfrbg\neW\ne[\ngE}\ng[}X\nhih\ngj[\ng\nh\ni^[\npC\npgVA\nnN\ns[g\nsA\nr[\nt@[\nuCN\nwK\n{[C\n|`\n}bN\n}R\n~C\n~[V\n~\nTV\nVcl\ntBG\nC\nI\n[\nIXJ[\nIo[\nP\nSG\nRW[\nTC\nTXP\nVYJ\nWXp[\nWX~\nWbN\nWExG\nWW[\nVo\nXpCN\nZoX`\n\tB[\n`[[\ngG\nn][\nxPC\nz[\n}M[\n}Tl\n~XeB\n~j[\n[\n}\nE\n[\n[V[\nbL["
	pos 110, 55 : listbox airu_fur, 0, "AC[\nAC[\n\nO[v\n}XJbg\n[\n\n\n[fB\nB\nAV[\ng\ng\nDg\ng\ntg\nԌ\n\n\n[\n\n\n\nuE\nnbJ\nS[h\n\nԂ\nԂ\nԂԂ\np[v\n[C\nIW\n"

	objsize 140, 195
	pos 215, 55 : listbox airu_ability, 0, "1 3\n1 3\n1 3\n1 2\n0 2@ 2\n2 ʎ2 2\n1 2\n1 2\n1 ʎ2\n2 1\n0 1@ 1\n0 1 1\n0 1@ 1\n3 1\n2 1@ ʎ1\n2 1 1\n2 1 1\n0 2 ʎ2\n0 2 2\n0 2@ 2\n3 1\n0 3 2\n0 3 ʎ2\n0 3 2\n2 1 2\n2 1@ 2\n2 2 1\n2 2@ 1\n3 ʎ3\n3 3\n3 3\n0 ʎ3 3"

	objsize 300, 195
	pos 360, 55 : listbox airu_skill, 0, "K^@@@@@ hpyz@ p\n͂@ Npyz tp\nΎ́@@@ p@@ c^o̒l\nÏp@@@@ pyz@ p\nZp@@@@ ̏pyz@@ c^o̒l\np@@@@ Hp@@@@ Cp\npyz@ \ꌂ@@@ ݊퉣\nUp@@ ̏pyz@@ JX}\nhpyz@ Ζp@@@@ _\n̏pyz@ ͂@ p\nNpyz ^̒l@@ p\nK^@@@@@ p@@@@ Rrp\nÏp@@@@ Ζp@@@@ ̂̓Sl\n̏pyz@ Hp@@@@ ^̒l\nア̗I@ hpyz@ c^o̓Sl\n̏pyz@ pyz@ Npyz\nNpyz ̏pyz@@ p\n^@@@@@ \ꌂ@@@ p\n̎p@@@@ Zp@@@@ Cp\n^̒l@@ ˌp@@@@ pyz\n鋫Tp@@ Npyz c^o̒l\nˌp@@@@ \ꌂ@@@ Ύ\n鋫Tp@@ Up@@ p\n̏pyz@ ̎p@@@@ JX}\n͂@ ̏pyz@ ̂̓Sl\n̏pyz@@ Ïp@@@@ ア̗I\npyz@ ˌp@@@@ ݊퉣\nア̗I@ p@@@@ p\n̎p@@@@ ^̒l@@ ^̓Sl\n^@@@@@ K^@@@@@ tp\nhpyz@ hpyz@ ̏pyz\n̏pyz@ Ζp@@@@ p\nUp@@ Zp@@@@ _\nCp@@ Rrp@@@@ JX}"

	objsize 80, 20
	pos 495, 60 + rect(3) - rect(1) : button gosub "Kp", *ok_airu
	pos 580, 60 + rect(3) - rect(1) : button gosub "LZ", *cancel_airu
	width , rect(3) - rect(1) + 85

	gsel 2, 1
	gsel 0, 1


/////////////////////////////////////////////////////////////////////////
// R}hCAZ[uf[^[h

	// R}hC
	if dir_cmdline != "" {

		// t@C擾
		sdim tmp, strlen(dir_cmdline)
		tmp = dir_cmdline
		if peek(tmp, 0) == '"' {
			getstr savedata_path, tmp, 1, '"'
		} else {
			getstr savedata_path, tmp, 0, ' '
		}

		// t@CTCY`FbN
		exist savedata_path
		if (strsize == -1) | (strsize != 462848) {
			MessageBox hwnd, "t@C̓ǂݍ݂Ɏs܂B", "G[", $30
			savedata_path = ""
		} else {
			sdim savedata, strsize
			bload savedata_path, savedata
			gosub *load_savedata
;			gosub *load_questdata
		}
	} else {

		// Z[uf[^[h
		exist dir_exe + "\\ULJM05156.bin"
		if (strsize != -1) & (strsize == 462848) {
			savedata_path = dir_exe + "\\ULJM05156.bin"
			sdim savedata, strsize
			bload savedata_path, savedata
			gosub *load_savedata
;			gosub *load_questdata
		}
	}
	stop


;------------------------------------------
; WM_DROPFILES
;------------------------------------------
*msg_drop
	hdrop = wparam			; hbvt@C̃nh
	sdim tmp, 260
	DragQueryFile hdrop, 0, varptr(tmp), 260
	DragFinish hdrop

	// t@CTCY`FbN
	exist tmp
	if (strsize == -1) | (strsize != 462848) {
		MessageBox hwnd, "t@C̓ǂݍ݂Ɏs܂B", "G[", $30
	} else {
		savedata_path = tmp
		sdim savedata, strsize
		bload savedata_path, savedata
		gosub *load_savedata
;		gosub *load_questdata
	}
	return


;------------------------------------------
; WM_COMMAND
;------------------------------------------
*msg_command
	switch (wparam >> 16) & 0xFFFF
		case CBN_SELCHANGE : gosub *change_combox : swbreak
	swend
	return


;------------------------------------------
; WM_NOTIFY
;------------------------------------------
*msg_notify
	dupptr nmhdr, lparam, 12
	switch nmhdr(2)
		case NM_DBLCLK       : gosub *double_click : swbreak
		case TCN_SELCHANGE   : gosub *tab_change   : swbreak
	swend
	return


;------------------------------------------
; NM_DBLCLK
;------------------------------------------
*double_click
	switch nmhdr(0)

		// X^[
		case hlist_monster
			sel_listview hlist_monster
			listget index, -1, 0, 2
			if index != -1 {
				sdim tmp, 64
				listget tmp, index, 5, 64, 1 : monster_num1 = int(tmp)		; 
				listget tmp, index, 5, 64, 2 : monster_num2 = int(tmp)		; ߊl
				listget tmp, index, 5, 64, 3 : monster_minsize = int(tmp)	; ŏTCY
				listget tmp, index, 5, 64, 4 : monster_maxsize = int(tmp)	; őTCY

				EnableWindow hwnd_main, 0
				rect = ginfo_wx1, ginfo_wy1, ginfo_wx2, ginfo_wy2
				gsel 20
				width , , limit((rect(0) + rect(2) - ginfo_sizex) / 2, 0, ginfo_dispx - ginfo_sizex), limit((rect(1) + rect(3) - ginfo_sizey) / 2, 0, ginfo_dispy - ginfo_sizey)
				sendmsg objinfo(0, 2), $C, 0, monster_name(index)
				objprm 5, monster_num1		; \
				objprm 6, monster_num2		; ߊl\
				objprm 7, monster_minsize	; ŏTCY\
				objprm 8, monster_maxsize	; őTCY\
				objsel 4
				gsel 20, 1
			}
		swbreak

		// 莝ACeXg
		case hlist_item
			sel_listview hlist_item
			listget index, -1, 0, 2
			if index != -1 {
				sdim tmp, 64
				listget tmp, index, 5, 64, 3 : item_index = int("$" + tmp)			; ACeԍ
				listget tmp, index, 5, 64, 2 : item_num = limit(int(tmp), 1, 99)	; ACe̐

				EnableWindow hwnd_main, 0
				rect = ginfo_wx1, ginfo_wy1, ginfo_wx2, ginfo_wy2
				gsel 21
				width , , limit((rect(0) + rect(2) - ginfo_sizex) / 2, 0, ginfo_dispx - ginfo_sizex), limit((rect(1) + rect(3) - ginfo_sizey) / 2, 0, ginfo_dispy - ginfo_sizey)
				objprm 2, item_index							; IꂽACe\
				sendmsg hlistbox_item, $197, item_index, 0		; IꂽACeXg̃gbvɂ
				objprm 3, int(tmp)								; \
				objsel 0
				gsel 21, 1
				onkey 1
			}
		swbreak

		// ACe{bNXí̎莝ACe̎Ɠj
		case hwnd_sub(2)
			sel_listview hwnd_sub(2)
			listget index, -1, 0, 2
			if index != -1 {
				sdim tmp, 64
				listget tmp, index, 5, 64, 3 : item_index = int("$" + tmp)			; ACeԍ
				listget tmp, index, 5, 64, 2 : item_num = limit(int(tmp), 1, 99)	; ACe̐

				EnableWindow hwnd_main, 0
				rect = ginfo_wx1, ginfo_wy1, ginfo_wx2, ginfo_wy2
				gsel 21
				width , , limit((rect(0) + rect(2) - ginfo_sizex) / 2, 0, ginfo_dispx - ginfo_sizex), limit((rect(1) + rect(3) - ginfo_sizey) / 2, 0, ginfo_dispy - ginfo_sizey)
				objprm 2, item_index							; IꂽACe\
				sendmsg hlistbox_item, $197, item_index, 0		; IꂽACeXg̃gbvɂ
				objprm 3, item_num								; \
				objsel 0
				gsel 21, 1
				onkey 1
			}
		swbreak

		// i{bNX
		case hwnd_sub(3)
			sel_listview hwnd_sub(3)
			listget index, -1, 0, 2
			if index != -1 {
				sdim tmp, 64
				listget tmp, index, 5, 64, 1 : equipment_kind = int(tmp)						; i̎
				listget tmp, index, 5, 64, 3 : equipment_lv = limit(int(tmp), 1, 99)			; ix
				listget tmp, index, 5, 64, 4 : equipment_index(equipment_kind) = int("$" + tmp)	; iԍ

				EnableWindow hwnd_main, 0
				rect = ginfo_wx1, ginfo_wy1, ginfo_wx2, ginfo_wy2
				gsel 22
				width , , limit((rect(0) + rect(2) - ginfo_sizex) / 2, 0, ginfo_dispx - ginfo_sizex), limit((rect(1) + rect(3) - ginfo_sizey) / 2, 0, ginfo_dispy - ginfo_sizey)
				ShowWindow hlistbox(equipment_kind), 1
				objprm 3, equipment_kind
				objprm equipment_kind + 4, equipment_index(equipment_kind)
				sendmsg hlistbox(equipment_kind), $197, equipment_index(equipment_kind), 0							; IꂽiXg̃gbvɂ
				objprm 11, equipment_lv
				if equipment_kind <= 4 : EnableWindow objinfo(11, 2), 1 : else : EnableWindow objinfo(11, 2), 0		; xL
				objsel 0
				gsel 22, 1
				onkey 1
			}
		swbreak

		// AC[Lb`
		case hwnd_sub(4)
			sel_listview hwnd_sub(4)
			listget index, -1, 0, 2
			if index != -1 {
				if peek(savedata, $4694 + $15000 * itab_main + 18 * index) {
					airu_shift = peek(savedata, $4694 + $15000 * itab_main + 18 * index) - 1
					airu_name = peek(savedata, $4695 + $15000 * itab_main + 18 * index)
					airu_fur = peek(savedata, $4696 + $15000 * itab_main + 18 * index)
					airu_lv = peek(savedata, $4697 + $15000 * itab_main + 18 * index) - 1
					airu_exp = wpeek(savedata, $4698 + $15000 * itab_main + 18 * index)
					airu_ability = peek(savedata, $469A + $15000 * itab_main + 18 * index)
					airu_skill = peek(savedata, $469B + $15000 * itab_main + 18 * index)
				} else {
					airu_shift = 0 : airu_name = 0 : airu_fur = 0 : airu_lv = 0 : airu_ability = 0 : airu_skill = 0
				}

				EnableWindow hwnd_main, 0
				rect = ginfo_wx1, ginfo_wy1, ginfo_wx2, ginfo_wy2
				gsel 23
				title "AC[Lb`ҏW - " + (index + 1) + "C"
				width , , limit((rect(0) + rect(2) - ginfo_sizex) / 2, 0, ginfo_dispx - ginfo_sizex), limit((rect(1) + rect(3) - ginfo_sizey) / 2, 0, ginfo_dispy - ginfo_sizey)
				objprm 5, airu_shift
				objprm 6, airu_lv
				objprm 7, airu_exp
				objprm 8, airu_name    : sendmsg objinfo(8, 2), $197, airu_name, 0
				objprm 9, airu_fur     : sendmsg objinfo(9, 2), $197, airu_fur, 0
				objprm 10, airu_ability : sendmsg objinfo(10, 2), $197, airu_ability, 0
				objprm 11, airu_skill   : sendmsg objinfo(11, 2), $197, airu_skill, 0
				objsel 5
				gsel 23, 1
			}
		swbreak
	swend
	return


;------------------------------------------
; TCN_SELCHANGE
;------------------------------------------
*tab_change
	switch nmhdr(0)

		// C^u
		case htab_main
			if itab_main != 3 {
				if savedata_path != "" : gosub *write_savedata			; f[^obt@ɏ
			} else {
				ShowWindow htab_quest, 0
				ShowWindow htab_sub, 1
			}
			sel_tabcontrol htab_main
			tabgetsel : itab_main = stat
			if itab_main != 3 {
				if savedata_path != "" : gosub *load_savedata			; f[^obt@ǂݍ
			} else {
				ShowWindow htab_quest, 1
				ShowWindow htab_sub, 0
			}
		swbreak

		// vC[^u
		case htab_sub
			sel_tabcontrol htab_sub
			tabgetsel : index = stat
			ShowWindow hwnd_sub(index), 1
			ShowWindow hwnd_sub(itab_sub), 0
			itab_sub = index
		swbreak

;		// NGXg^u
;		case htab_quest
;			sel_tabcontrol htab_quest
;			tabgetsel : itab_quest = stat
;			gosub *load_questdata
;		swbreak
	swend
	return


;------------------------------------------
; CBN_SELCHANGE
;------------------------------------------
*change_combox
	switch lparam

		// i̎ޕύX
		case hcombox_equipment
			ShowWindow objinfo(equipment_kind + 4, 2), 1
			repeat 7
				if cnt != equipment_kind : ShowWindow objinfo(cnt + 4, 2), 0
			loop
			if equipment_kind <= 4 : EnableWindow objinfo(11, 2), 1 : else : EnableWindow objinfo(11, 2), 0
		swbreak

		case hcombox_airulv
			prm = 0, 50, 150, 250, 400, 600, 850, 1100, 1400
			airu_exp = prm(airu_lv)
			objprm 7, airu_exp
		swbreak
	swend
	return


;------------------------------------------
; XN[o[̃XN[
;------------------------------------------
*msg_scroll
	repeat 3
		if hscroll(cnt) = lparam : num = cnt : break
	loop
	sel_scrollbar hscroll(num)
	gsel 2
	switch wparam & $FFFF
		case 5 : col(num) = (wparam >> 16) & $FFFF : swbreak
		case 0 : col(num) -= 4 : swbreak
		case 1 : col(num) += 4 : swbreak
		case 2 : col(num) -= 16 : swbreak
		case 3 : col(num) += 16 : swbreak
	swend
	if col(num) < 0   : col(num) = 0
	if col(num) > 255 : col(num) = 255
	scrollpos col(num)
	tmp = "R : ", "G : ", "B : "
	sendmsg objinfo(6 + num, 2), $C, 0, tmp(num) + strf("%03d", col(num))
	color col(0), col(1), col(2)
	boxf 376, 89, 414, 127 : color
	gsel 0
	return


;------------------------------------------
; L[{[h
;------------------------------------------
*msg_key
	switch hwnd

		// ACeҏW
		case hwnd_item
			if iparam == 13 {			; Enterꂽ
				objsel -1
				switch stat
					case 0 : gosub *serch_item  : swbreak
					case 1 : gosub *serch_item  : swbreak
					case 2 : gosub *ok_item     : swbreak
					case 3 : gosub *ok_item     : swbreak
					case 5 : gosub *ok_item     : swbreak
					case 6 : gosub *cancel_item : swbreak
				swend
			}
		swbreak

		// iҏW
		case hwnd_equipment
			if iparam == 9 {			; Tabꂽ
				objsel -1
				switch stat
					case 1                  : objsel stat + 2           : swbreak
					case 3                  : objsel equipment_kind + 4 : swbreak
					case equipment_kind + 4 : objsel 11                 : swbreak
					case 12                 : objsel 0                  : swbreak
					default                 : objsel stat + 1           : swbreak
				swend
			}
			if iparam == 13 {			; Enterꂽ
				objsel -1
				switch stat
					case 0 : gosub *serch_equipment   : swbreak
					case 1 : gosub *serch_equipment   : swbreak
					case 11 : gosub *ok_equipment     : swbreak
					case 12 : gosub *cancel_equipment : swbreak
					case equipment_kind + 4 : gosub *ok_equipment : swbreak
				swend
			}
		swbreak
	swend
	return


;------------------------------------------
; t@CJ
;------------------------------------------
*open_savedata
	dialog "bin", 16, "MHP2nd SAVEDATA"
	if stat {
		exist refstr
		if (strsize == -1) | (strsize != 462848) {
			MessageBox hwnd, "t@C̓ǂݍ݂Ɏs܂B", "G[", $30
		} else {
			savedata_path = refstr
			sdim savedata, strsize
			bload savedata_path, savedata
			gosub *load_savedata
;			gosub *load_questdata
		}
	}
	return


;------------------------------------------
; t@Cēǂݍ
;------------------------------------------
*reload_savedata
	if savedata_path == "" : return
	exist savedata_path
	if (strsize == -1) | (strsize != 462848) {
		MessageBox hwnd, "t@C̓ǂݍ݂Ɏs܂B", "G[", $30
	} else {
		sdim savedata, strsize
		bload savedata_path, savedata
		gosub *load_savedata
;		gosub *load_questdata
	}
	return


;------------------------------------------
; t@Cǂݍ
;------------------------------------------
*load_savedata

	// 
	gsel 2
	if peek(savedata, $1000 + $15000 * itab_main) == 0 {					; Z[uf[^݃`FbN
		sel_listview hlist_item    : listdel -1
		sel_listview hlist_monster : listdel -1
		sel_listview hwnd_sub(2)   : listdel -1
		sel_listview hwnd_sub(3)   : listdel -1
		sel_listview hwnd_sub(4)   : listdel -1

		player_name = "" : objprm 13, player_name
		plaer_sex = 0    : objprm 14, plaer_sex
		player_inner = 0 : objprm 15, player_inner
		player_face = 0  : objprm 16, plaer_face
		player_hair = 0  : objprm 17, plaer_hair
		player_voice = 0 : objprm 18, player_voice
		money = 0        : objprm 19, money
		g_point = 0      : objprm 20, g_point
		p_point = 0      : objprm 21, p_point
		sendmsg objinfo(6, 2), $C, 0, "R : 000"
		sendmsg objinfo(7, 2), $C, 0, "G : 000"
		sendmsg objinfo(8, 2), $C, 0, "B : 000"
		boxf 376, 89, 414, 127
		time = 0, 0, 0
		repeat 3 : objprm 22 + cnt, time(cnt) : loop
		dim lvi, 9 : lvi = 8, 0, 0, 1 << 12, $F000
		repeat 24 : sendmsg hlist_design, $102B, cnt, varptr(lvi) : loop	; ̍

		// gps
		repeat 12, 13 : EnableWindow objinfo(cnt, 2), 0 : loop
		EnableWindow hscroll(0), 0
		EnableWindow hscroll(1), 0
		EnableWindow hscroll(2), 0
		EnableWindow hlist_item, 0
		EnableWindow hlist_design, 0
		EnableWindow hlist_monster, 0
		EnableWindow hwnd_sub(2), 0
		EnableWindow hwnd_sub(3), 0
		EnableWindow hwnd_sub(4), 0
		gsel 3
		repeat 11, 15 : objprm cnt, 0 : EnableWindow objinfo(cnt, 2), 0 : loop		; gps
		gsel 0
		return
	} else {

		// Xgr[ĕ`OFF
		sendmsg hlist_item, WM_SETREDRAW, 0, 0
		sendmsg hlist_design, WM_SETREDRAW, 0, 0
		sendmsg hlist_monster, WM_SETREDRAW, 0, 0
		sendmsg hwnd_sub(2), WM_SETREDRAW, 0, 0
		sendmsg hwnd_sub(3), WM_SETREDRAW, 0, 0
		sendmsg hwnd_sub(4), WM_SETREDRAW, 0, 0

		sel_listview hlist_item    : listdel -1
		sel_listview hlist_monster : listdel -1
		sel_listview hwnd_sub(2)   : listdel -1
		sel_listview hwnd_sub(3)   : listdel -1
		sel_listview hwnd_sub(4)   : listdel -1

		// gp\
		repeat 12, 13 : EnableWindow objinfo(cnt, 2), 1 : loop
		EnableWindow hscroll(0), 1
		EnableWindow hscroll(1), 1
		EnableWindow hscroll(2), 1
		EnableWindow hlist_item, 1
		EnableWindow hlist_design, 1
		EnableWindow hlist_monster, 1
		EnableWindow hwnd_sub(2), 1
		EnableWindow hwnd_sub(3), 1
		EnableWindow hwnd_sub(4), 1
		gsel 3
		repeat 11, 15 : EnableWindow objinfo(cnt, 2), 1 : loop
	}
	gsel 2

	// vC[
	sdim tmp, 16
	memcpy tmp, savedata, 16, 0, $1054 + $15000 * itab_main
	player_name = cnvwtos(tmp)
	objprm 13, player_name

	player_sex = peek(savedata, $1001 + $15000 * itab_main)   : objprm 14, player_sex		; 
	player_inner = peek(savedata, $1003 + $15000 * itab_main) : objprm 15, player_inner		; Ci[
	player_face = peek(savedata, $1004 + $15000 * itab_main)  : objprm 16, player_face		; 
	player_hair = peek(savedata, $1005 + $15000 * itab_main)  : objprm 17, player_hair		; 
	player_voice = peek(savedata, $1002 + $15000 * itab_main) : objprm 18, player_voice		; 
	money = lpeek(savedata, $106C + $15000 * itab_main)       : objprm 19, money				; 
	g_point = lpeek(savedata, $1068 + $15000 * itab_main)     : objprm 20, g_point			; Mh|Cg
	p_point = lpeek(savedata, $14744 + $15000 * itab_main)    : objprm 21, p_point			; |bP|Cg

	// ̐F
	sel_scrollbar hscroll(0)
	col(0) = peek(savedata, $1008 + $15000 * itab_main)
	scrollpos col(0) : sendmsg objinfo(6, 2), $C, 0, "R : " + strf("%03d", col(0))
	sel_scrollbar hscroll(1)
	col(1) = peek(savedata, $1009 + $15000 * itab_main)
	scrollpos col(1) : sendmsg objinfo(7, 2), $C, 0, "G : " + strf("%03d", col(1))
	sel_scrollbar hscroll(2)
	col(2) = peek(savedata, $100A + $15000 * itab_main)
	scrollpos col(2) : sendmsg objinfo(8, 2), $C, 0, "B : " + strf("%03d", col(2))
	color col(0), col(1), col(2) : boxf 376, 89, 414, 127 : color

	// vC
	time(0) = lpeek(savedata, $4334 + $15000 * itab_main) / 3600    : objprm 22, time(0)	; 
	time(1) = lpeek(savedata, $4334 + $15000 * itab_main) / 60 \ 60 : objprm 23, time(1)	; 
	time(2) = lpeek(savedata, $4334 + $15000 * itab_main) \ 60      : objprm 24, time(2)	; b

	// 莝ACe擾
	sel_listview hlist_item
	sdim tmp, 64
	repeat 24
		listadd cnt, "" + strf("%04x", $42B0 + $15000 * itab_main + 4 * cnt), 0
		num = wpeek(savedata, $42B0 + $15000 * itab_main + 4 * cnt)
		if num {
			sendmsg hlistbox_item, $189, num, varptr(tmp)						; ACe擾
			listadd cnt, tmp, 1
			listadd cnt, "" + peek(savedata, $42B2 + $15000 * itab_main + 4 * cnt), 2
			listadd cnt, strf("%04x", num), 3
		} else {
			listadd cnt, "||||||", 1
		}
	loop

	// NGXg
	gsel 3
	repeat 5
		quest_num(cnt) = wpeek(savedata, $14224 + $15000 * itab_main + 2 * cnt)
		objprm 15 + cnt, quest_num(cnt)
	loop

	// gW[|Cg
	repeat 6
		treasure_point(cnt) = lpeek(savedata, $142A0 + $15000 * itab_main + 4 * cnt)
		objprm 20 + cnt, treasure_point(cnt)
	loop

	// ̍
	dim lvi, 9
	lvi = 8, 0, 0, 0, $F000
	num = lpeek(savedata, $142B8 + $15000 * itab_main)
	repeat 24
		if num & (1 << cnt) : lvi(3) = 2 << 12 : else : lvi(3) = 1 << 12
		sendmsg hlist_design, $102B, cnt, varptr(lvi)
	loop

	// L^
	sel_listview hlist_monster
	repeat 78
		listadd cnt, monster_name(cnt), 0
		listadd cnt, "" + wpeek(savedata, $4532 + $15000 * itab_main + 2 * cnt), 1
		listadd cnt, "" + wpeek(savedata, $45CE + $15000 * itab_main + 2 * cnt), 2
		listadd cnt, "" + wpeek(savedata, $43FA + $15000 * itab_main + 2 * cnt), 3
		listadd cnt, "" + wpeek(savedata, $4496 + $15000 * itab_main + 2 * cnt), 4
	loop

	// ACe{bNX擾
	sel_listview hwnd_sub(2)
	repeat 600
		listadd cnt, "" + strf("%04x", $3630 + $15000 * itab_main + 4 * cnt), 0
		num = wpeek(savedata, $3630 + $15000 * itab_main + 4 * cnt)
		if num {
			sendmsg hlistbox_item, $189, num, varptr(tmp)						; ACe擾
			listadd cnt, tmp, 1
			listadd cnt, "" + peek(savedata, $3632 + $15000 * itab_main + 4 * cnt), 2
			listadd cnt, strf("%04x", num), 3
		} else {
			listadd cnt, "||||||", 1
		}
	loop

	// i{bNX擾
	sel_listview hwnd_sub(3)
	repeat 600
		listadd cnt, "" + strf("%04x", $10B0 + $15000 * itab_main + 12 * cnt), 0
		if peek(savedata, $10B0 + $15000 * itab_main + 12 * cnt) {
			index = peek(savedata, $10B1 + $15000 * itab_main + 12 * cnt)		; i
			num = wpeek(savedata, $10B2 + $15000 * itab_main + 12 * cnt)		; iԍ
			sendmsg hlistbox(index), $189, num, varptr(tmp)
			listadd cnt, strf("%02d", index), 1
			listadd cnt, tmp, 2
			if index <= 4 : listadd cnt, "" + (peek(savedata, $10B4 + $15000 * itab_main + 12 * cnt) + 1), 3
			listadd cnt, strf("%04x", num), 4
		} else {
			listadd cnt, "", 2
		}
	loop

	// AC[Lb`
	sel_listview hwnd_sub(4)
	gsel 23
	repeat 5
		listadd cnt, "" + strf("%04x", $4694 + $15000 * itab_main + 18 * cnt), 0
		if peek(savedata, $4694 + $15000 * itab_main + 18 * cnt) {
			sendmsg objinfo_hwnd(5), $148, peek(savedata, $4694 + $15000 * itab_main + 18 * cnt) - 1, varptr(tmp)
			listadd cnt, tmp, 1
			sendmsg objinfo_hwnd(8), $189, peek(savedata, $4695 + $15000 * itab_main + 18 * cnt), varptr(tmp)
			listadd cnt, tmp, 2
			sendmsg objinfo_hwnd(9), $189, peek(savedata, $4696 + $15000 * itab_main + 18 * cnt), varptr(tmp)
			listadd cnt, tmp, 3
			listadd cnt, "" + peek(savedata, $4697 + $15000 * itab_main + 18 * cnt), 4
			listadd cnt, "" + wpeek(savedata, $4698 + $15000 * itab_main + 18 * cnt), 5
			sendmsg objinfo_hwnd(10), $189, peek(savedata, $469A + $15000 * itab_main + 18 * cnt), varptr(tmp)
			listadd cnt, tmp, 6
			sendmsg objinfo_hwnd(11), $189, peek(savedata, $469B + $15000 * itab_main + 18 * cnt), varptr(tmp)
			listadd cnt, tmp, 7
		} else {
			listadd cnt, "ٗp", 1
		}
	loop

	// Xgr[ĕ`ON
	sendmsg hlist_item, WM_SETREDRAW, 1, 0
	sendmsg hlist_design, WM_SETREDRAW, 1, 0
	sendmsg hlist_monster, WM_SETREDRAW, 1, 0
	sendmsg hwnd_sub(2), WM_SETREDRAW, 1, 0
	sendmsg hwnd_sub(3), WM_SETREDRAW, 1, 0
	sendmsg hwnd_sub(4), WM_SETREDRAW, 1, 0
	gsel 0
	return


;----------------------------------------
; ύXobt@ɏ
;----------------------------------------
*write_savedata
;	if itab_main == 3 : return
	if peek(savedata, $1000 + $15000 * itab_main) {					; Z[uf[^݃`FbN

		// vC[
		sdim tmp, 16
		cnvstow tmp, player_name
		memcpy savedata, tmp, 16, $1054 + $15000 * itab_main, 0
		memcpy savedata, tmp, 16, $14204 + $15000 * itab_main, 0	; MhJ[hp

		poke savedata, $1001 + $15000 * itab_main, player_sex		; 
		poke savedata, $1003 + $15000 * itab_main, player_inner		; Ci[
		poke savedata, $1004 + $15000 * itab_main, player_face		; 
		poke savedata, $1005 + $15000 * itab_main, player_hair		; 
		poke savedata, $1002 + $15000 * itab_main, player_voice		; 
		lpoke savedata, $106C + $15000 * itab_main, money			; 
		lpoke savedata, $1068 + $15000 * itab_main, g_point			; Mh|Cg
		lpoke savedata, $14744 + $15000 * itab_main, p_point		; |bP|Cg

		// ̐F
		poke savedata, $1008 + $15000 * itab_main, col(0)			; RED
		poke savedata, $1009 + $15000 * itab_main, col(1)			; GREEN
		poke savedata, $100A + $15000 * itab_main, col(2)			; BLUE

		// vC
		lpoke savedata, $4334 + $15000 * itab_main, time(0) * 3600 + time(1) * 60 + time(2)

		// NGXg
		repeat 5
			wpoke savedata, $14224 + $15000 * itab_main + 2 * cnt, quest_num(cnt)
		loop

		// gW[|Cg
		repeat 6
			lpoke savedata, $142A0 + $15000 * itab_main + 4 * cnt, treasure_point(cnt)
		loop

		// ̍
		num = 0
		repeat 24
			sendmsg hlist_design, $102C, cnt, $F000
			if (stat >> 12) - 1 : num = num | (1 << cnt)
		loop
		lpoke savedata, $142B8 + $15000 * itab_main, num
	}
	return


;----------------------------------------
; ㏑ۑ
;----------------------------------------
*save_savedata
	if savedata_path != "" {
		gosub *write_savedata		; f[^obt@ɏ
		bsave savedata_path, savedata
	}
	return


;------------------------------------------
; L^ύX
;------------------------------------------
*ok_monster
	wpoke savedata, $4532 + $15000 * itab_main + 2 * index, monster_num1
	wpoke savedata, $45CE + $15000 * itab_main + 2 * index, monster_num2
	wpoke savedata, $43FA + $15000 * itab_main + 2 * index, monster_minsize
	wpoke savedata, $4496 + $15000 * itab_main + 2 * index, monster_maxsize
	listadd index, "" + monster_num1, 1
	listadd index, "" + monster_num2, 2
	listadd index, "" + monster_minsize, 3
	listadd index, "" + monster_maxsize, 4

*cancel_monster
	EnableWindow hwnd_main, 1
	gsel 20, -1 : gsel 0
	return


;------------------------------------------
; ACe
;------------------------------------------
*serch_item
	sendmsg hlistbox_item, $18C, item_index, varptr(item_text)
	if stat == -1 : MessageBox hwnd, "vACe܂B", "ACe", $30 : return
	item_index = stat
	return


;------------------------------------------
; ACeύX
;------------------------------------------
*ok_item
	sendmsg hlistbox_item, $189, item_index, varptr(tmp)
	gsel 0
	if tmp == "||||||" {
		listadd index, tmp, 1
		listadd index, "", 2
		listadd index, "", 3
		listget tmp, index, 5, 64						; ݐAhX擾
		lpoke savedata, int("$" + tmp), 0
	} else {
		listadd index, tmp, 1
		listadd index, "" + limit(item_num, 1, 99), 2
		listadd index, strf("%04x", item_index), 3
		listget tmp, index, 5, 64						; ݐAhX擾
		wpoke savedata, int("$" + tmp), item_index
		poke savedata, int("$" + tmp) + 2, limit(item_num, 1, 99)
	}

*cancel_item
	gsel 0, 1											; EBhEʂɈړ̂h~
	EnableWindow hwnd_main, 1
	gsel 21, -1 : gsel 0
	onkey 0
	return


;------------------------------------------
; i
;------------------------------------------
*serch_equipment
	sendmsg hlistbox(equipment_kind), $18C, equipment_index(equipment_kind), varptr(equipment_text)
	if stat == -1 : MessageBox hwnd, "v鑕i܂B", "i", $30 : return
	equipment_index(equipment_kind) = stat
	return


;----------------------------------------
; iύX
;----------------------------------------
*ok_equipment
	sendmsg hlistbox(equipment_kind), $189, equipment_index(equipment_kind), varptr(tmp)
	gsel 0
	if tmp == "" {
		memset savedata, 0, 6, $10B0 + $15000 * itab_main + 12 * index
		listadd index, "", 1
		listadd index, tmp, 2
		listadd index, "", 3
		listadd index, "", 4
	} else {
		poke savedata, $10B0 + $15000 * itab_main + 12 * index, 1
		poke savedata, $10B1 + $15000 * itab_main + 12 * index, equipment_kind
		wpoke savedata, $10B2 + $15000 * itab_main + 12 * index, equipment_index(equipment_kind)
		if equipment_kind <= 4 : poke savedata, $10B4 + $15000 * itab_main + 12 * index, limit(equipment_lv, 1, 99) - 1 : else : poke savedata, $10B4 + $15000 * itab_main + 12 * index, 0
		listadd index, strf("%02d", equipment_kind), 1
		listadd index, tmp, 2
		if equipment_kind <= 4 : listadd index, "" + limit(equipment_lv, 1, 99), 3 : else : listadd index, "", 3
		listadd index, strf("%04x", equipment_index(equipment_kind)), 4
	}

*cancel_equipment
	gsel 0, 1									; EBhEʂɈړ̂h~
	EnableWindow hwnd_main, 1
	gsel 22, -1
	repeat 7
		equipment_index(cnt) = 0				; NA
		objprm 4 + cnt, equipment_index(cnt)	; @V
	loop
	ShowWindow hlistbox(equipment_kind), 0
	gsel 0
	onkey 0
	return


;------------------------------------------
; AC[Lb`ύX
;------------------------------------------
*ok_airu
	if airu_shift {
		poke savedata, $4694 + $15000 * itab_main + 18 * index, airu_shift + 1
		poke savedata, $4695 + $15000 * itab_main + 18 * index, airu_name
		poke savedata, $4696 + $15000 * itab_main + 18 * index, airu_fur
		poke savedata, $4697 + $15000 * itab_main + 18 * index, airu_lv + 1
		wpoke savedata, $4698 + $15000 * itab_main + 18 * index, limit(airu_exp, 0, $FFFF)
		poke savedata, $469A + $15000 * itab_main + 18 * index, airu_ability
		poke savedata, $469B + $15000 * itab_main + 18 * index, airu_skill

		sendmsg objinfo_hwnd(5), $148, airu_shift, varptr(tmp)
		listadd index, tmp, 1
		sendmsg objinfo_hwnd(8), $189, airu_name, varptr(tmp)
		listadd index, tmp, 2
		sendmsg objinfo_hwnd(9), $189, airu_fur, varptr(tmp)
		listadd index, tmp, 3
		listadd index, "" + (airu_lv + 1), 4
		listadd index, "" + limit(airu_exp, 0, $FFFF), 5
		sendmsg objinfo_hwnd(10), $189, airu_ability, varptr(tmp)
		listadd index, tmp, 6
		sendmsg objinfo_hwnd(11), $189, airu_skill, varptr(tmp)
		listadd index, tmp, 7
	} else {
		memset savedata, 0, 18, $4694 + $15000 * itab_main + 18 * index
		listadd index, "ٗp", 1
		listadd index, "", 2
		listadd index, "", 3
		listadd index, "", 4
		listadd index, "", 5
		listadd index, "", 6
		listadd index, "", 7
	}

*cancel_airu
	gsel 0, 1											; EBhEʂɈړ̂h~
	EnableWindow hwnd_main, 1
	gsel 23, -1 : gsel 0
	return


;------------------------------------------
; 
;------------------------------------------
*about
	MessageBox hwnd, {"
	"} + APL_NAME + {"

		----------------------------------------
	"} + APL_VERSION, "o[W", $40
	return


;----------------------------------------
; I
;----------------------------------------
*exit
	end
	end
