OPTION STRICT
DIM M[50,30],MCL[50,30],MC$[50,30],TL[50,30]
DIM LT[50,30],X1[0],X2[0],Y1[0],Y2[0],ACT$[9]
DIM MNSHP[26],MNSEX[26],MNSSP[26],MNSHR[26]
DIM MNSN$[26],MNSTBL[0],MSLP[26],EMN$[26]
DIM RING$[25],POTION$[27],SCROLL$[12]
DIM WAND$[20],ITMG[0],ITMN$[66],ITMS[0]
DIM ITAN$[0],ITMTBL[0],IINS[66],KIN$[0]
DIM ITMNS$[66],KINS$[0]
DIM IRND[66],WHR[8],WAT[8],ADF[8],IPRC[0]
DIM HI[100,20]
' PI FIX: console COLOR takes a 24-bit RGB code, not a 3DS 0-15 text-
' palette index. TPAL maps the old index to the equivalent RGB color.
DIM TPAL[16]
TPAL[0]=RGB(0,0,0):TPAL[1]=RGB(0,0,0):TPAL[2]=RGB(128,0,0):TPAL[3]=RGB(255,0,0)
TPAL[4]=RGB(0,128,0):TPAL[5]=RGB(0,255,0):TPAL[6]=RGB(128,128,0):TPAL[7]=RGB(255,255,0)
TPAL[8]=RGB(0,0,128):TPAL[9]=RGB(0,0,255):TPAL[10]=RGB(128,0,128):TPAL[11]=RGB(255,0,255)
TPAL[12]=RGB(0,128,128):TPAL[13]=RGB(0,255,255):TPAL[14]=RGB(128,128,128):TPAL[15]=RGB(255,255,255)
GAME_INIT
VAR CNT
VAR SCNT
VAR MSSTP
VAR STSTP   'Pause analog stick control
VAR FLR     'Current floor
VAR FOD     'Current belly
VAR MFOD    'Max belly
VAR LV      'Current level
VAR GLD     'Current gold
VAR ST      'Current STR
VAR MST     'Max STR
VAR EX      'Current exp
VAR NEX     'EXP to next level
VAR PEX     'EXP for previous level
VAR DEX     'Current dexterity
VAR PWEP    'Equipped weapon
VAR PHR     'Current accuracy
VAR PAT     'Current ATK
VAR PARM    'Equipped armor
VAR PDF     'Current DEF
VAR RNG1    'Equipped ring #1
VAR RNG2    'Equipped ring #2
VAR HL      'variable for HP restoration
VAR MMK     'Status:Blindness
VAR GKK     'Status:Hallucination
VAR FLZ     'Status:Frozen
VAR DMV     'Status:Trapped
VAR MOF     'Status:Monster senses
VAR MIE     'Status:See invisible
VAR KSK     'Status:Haste
VAR IPF     'Auto-pickup item Flag
VAR FYU     'Status:Levitation
VAR LST     '
VAR UF      '
VAR WZ      '
DIM ITM[0]  'Inventory #
DIM ITMV[0] 'Inventory Status

DIM HP[64]  'Current HP
DIM MHP[64] 'Max HP
DIM AC[64]  'End of turn
DIM SLP[64] 'Status:Sleep
VAR KRN[64] 'Status:Confusion
VAR TKM[64] 'Status:Hold
VAR MZM[64] 'Wake-up Flag
'--------------------------------------------
@MAIN
'メインループ ***
WHILE 1
 TITLE
 PLAYER_INIT
 MAKE_DUNGEON
 REPEAT
  STSTP=0
  MSSTP=0
  PLAYER
  IF !UF THEN CALL SPRITE
  VSYNC
  IF STSTP || MSSTP THEN VSYNC 7
  SCNT=SCNT+1 AND 3
  IF !(SCNT MOD 2) THEN FILL AC,0
  INC CNT
  POP_MONSTER
  IF UF THEN MAKE_DUNGEON
  UF=0
 UNTIL !HP[0] || !FLR

 PRINT_STATUS
 IF !HP[0] THEN
  BEEP 14
  SET_LIGHT 0,#RED
  BLOOD 0
  SPCLR 0
  VSYNC 60
 ENDIF
 FADE #BLACK,30
 VSYNC 30
 GAMEOVER
 GCLS
 CLS
 SPCLR
WEND
'--------------------------------------------
@SUB
'プレイヤー操作 ***
DEF PLAYER
VAR SX,SY,BT1,ERR,COM,A,I,J,X,Y,F,H
VAR DX[8],DY[8]

 PRINT_STATUS
 IF !TCHK(0) THEN RETURN
 IPF=0

 '凍結状態回復処理 ***
 IF FLZ THEN
  DEC FLZ
  IF !FLZ THEN
   SET_LIGHT 0,#LIME
   BGMPLAY 2,155,80
  ENDIF
  IF FLZ THEN
   SPCHR 0,64
   SPCOLOR 0,#CYAN
   VSYNC 8
   RETURN
  ENDIF
 ENDIF

 CANIM 0
 REPEAT
  ERR=0
  REPEAT
   BT1=BUTTON(1)
   STICK OUT SX,SY
   SY=-SY 'PI: STICK Y IS INVERTED VS 3DS
   IF SY>0.2  && SX<-0.2 THEN BT1=BT1 OR 5
   IF SY>0.2  && SX> 0.2 THEN BT1=BT1 OR 9
   IF SY<-0.2 && SX<-0.2 THEN BT1=BT1 OR 6
   IF SY<-0.2 && SX> 0.2 THEN BT1=BT1 OR 10
   VSYNC
  UNTIL BT1

  COM=-1
  IF  BT1 AND  1 THEN COM=0
  IF  BT1 AND  8 THEN COM=2
  IF  BT1 AND  2 THEN COM=4
  IF  BT1 AND  4 THEN COM=6
  IF (BT1 AND  9)== 9 THEN COM=1:STSTP=1
  IF (BT1 AND 10)==10 THEN COM=3:STSTP=1
  IF (BT1 AND  6)== 6 THEN COM=5:STSTP=1
  IF (BT1 AND  5)== 5 THEN COM=7:STSTP=1
  IF  BT1 AND 16 THEN COM=MENU()
  IF  BT1 AND 32 THEN COM=11
  IF COM==-1 THEN ERR=1

  '混乱状態処理 ***
  IF KRN[0] && COM<8 THEN
   DEC KRN[0]
   IF KRN[0] THEN
    COPY DX,@DDX
    COPY DY,@DDY
    A=0
    REPEAT
     CSPOFS 0 OUT X,Y
     COM=RND(8)
     F=!KCHK(X,Y,COM)
     INC A
     H=HCHK(X+DX[COM],Y+DY[COM])
    UNTIL (H && F) || A>15
    IF A>15 THEN COM=11
   ELSE
    SET_LIGHT 0,#LIME
    BGMPLAY 2,155,80
   ENDIF
  ENDIF

  COM=PATTACK(COM)

  IF !DMV THEN
   IF COM==0 THEN ERR=CMOVE(0,0)
   IF COM==1 THEN ERR=CMOVE(0,1)
   IF COM==2 THEN ERR=CMOVE(0,2)
   IF COM==3 THEN ERR=CMOVE(0,3)
   IF COM==4 THEN ERR=CMOVE(0,4)
   IF COM==5 THEN ERR=CMOVE(0,5)
   IF COM==6 THEN ERR=CMOVE(0,6)
   IF COM==7 THEN ERR=CMOVE(0,7)
  ENDIF

  IF COM== 8 THEN ERR=ITMUSE()
  IF COM== 9 THEN IPF=0
  IF COM==10 THEN ERR=STAIR()
  IF COM==11 THEN ERR=0

 UNTIL !ERR

 'アイテムを拾う ***
 H=SPHITSP(0,64,127)
 IF !IPF && H>-1 THEN GET_ITEM H

 'テレポート判定 ***
 IF PER(((RNG1==19)+(RNG2==19))*8) THEN
  TELEPORT
 ENDIF

 '満腹度減少処理 ***
 IF FOD>0 THEN
  IF !AML() THEN
   DEC FOD,1-((RNG1==21)+(RNG2==21))*0.5
  ENDIF
  'HP回復処理 ***
  IF HP[0]<MHP[0] THEN
   A=((RNG1==20)+(RNG2==20)+1)
   INC HL,(MHP[0]/100)*A
  ENDIF
  IF HL>=1 THEN
   INC HP[0],FLOOR(HL)
   SET_DPOP 0,FLOOR(HL)
   DEC HL,FLOOR(HL)
   IF HP[0]>MHP[0] THEN HP[0]=MHP[0]
  ENDIF
 ELSE
  BGMPLAY 5,167,80
  FOR I=0 TO 3:BREPEAT I,16,3:NEXT
  BREPEAT 5,16,3
  DEC HP[0]
  LST=26
  SET_DPOP 0,-1
 ENDIF

 '倍速終了処理
 IF KSK THEN
  DEC KSK
  IF !KSK THEN
   SET_LIGHT 0,#OLIVE
   BGMPLAY 4,159,80
   SPVAR 0,2,SPVAR(0,2)-2
  ENDIF
 ENDIF


 '盲目回復処理 ***
 IF MMK THEN
  DEC MMK
  IF !MMK THEN
   SET_LIGHT 0,#LIME
   BGMPLAY 2,155,80
   FOR J=0 TO 27
    FOR I=0 TO 49
     IF LT[I,J] THEN
      LOCATE I,J
      COLOR TPAL[MCL[I,J]]
      PRINT MC$[I,J];
     ENDIF
    NEXT
   NEXT
  ENDIF
 ENDIF

 '幻覚回復処理 ***
 IF GKK THEN
  DEC GKK
  IF !GKK THEN
   SPANIM 132,6,-16,#WHITE,1
   VSYNC 16
   SET_LIGHT 0,#LIME
   BGMPLAY 2,155,80
   GPAGE 0,SPPAGE()
   GFILL 0,0,215,15,#BLACK
   GFILL 224,0,295,7,0
   GPUTCHR 0,0,"@KEBSHIROZLCQANYFTWPXUMVGJD"
   GPUTCHR 0,8,"äkebshirozlcqanyftwpxumvgjd"
   GPUTCHR 224,0,"*:)]=!?/'"
   GPAGE 0,0
   SPCOLOR 132,0
  ENDIF
 ENDIF

 '浮遊回復処理 ***
 IF FYU THEN
  DEC FYU
  IF !FYU THEN
   SET_LIGHT 0,#OLIVE
   BEEP 95
  ENDIF
 ENDIF

 '画面表示 ***
 PRINT_STATUS
 PRINT_DUNGEON 0
 CANIM 0
 BEEP 9
END

'プレイヤー攻撃判定 ***
DEF PATTACK(V)
VAR H,X,Y,DX[8],DY[8]
 IF V<0 || V>7 THEN RETURN V
 COPY DX,@DDX
 COPY DY,@DDY
 CSPOFS 0 OUT X,Y
 IF KCHK(X,Y,V) THEN RETURN V
 INC X,DX[V]
 INC Y,DY[V]
 H=SPHITRC(1,63,X*8,Y*8,1,1)
 IF H>-1 THEN ATTACK 0,H ELSE RETURN V
 RETURN -1
END

'テレポート処理 ***
DEF TELEPORT
VAR I,X,Y
 IF DMV THEN
  DP "Trapped"
  RETURN
 ENDIF
 SET_LIGHT 0,RGB(255,127,0)
 BGMPLAY 4,147,80
 VSYNC 24
 RNDLOCATE OUT X,Y
 SPOFS 0,X*8,Y*8
 SET_LIGHT 0,RGB(255,127,0)
 FOR I=0 TO 3:BREPEAT I,16,3:NEXT
 BREPEAT 5,16,3
END
'--------------------------------------------
'コマンドメニュー表示 ***
DEF MENU()
VAR R,X,Y
 BGMPLAY 1,140,80
 SPSET 129,257
 CSPOFS 0 OUT X,Y
 DEC X,8 '#####
 DEC Y,4
 IF X<0 THEN INC X,9 '#####
 IF Y<0 THEN INC Y,4
 SPOFS 129,X*8,Y*8,-15
 R=SEL(X+1,Y+1,3,0)
 IF !LEN(ITM) THEN R=-1
 IF R>-1 THEN INC R,8
 SPCLR 129
 RETURN R
END
'--------------------------------------------
'アイテムを使う ***
DEF ITMUSE()
VAR R,X,Y,IN,COM,G,VV,HR,AT,FL
 ITEMLIST OUT X,Y
 IN=SEL(X,Y,LEN(ITM),1)
 IF IN>-1 THEN
  SPLIT ITMV[IN] OUT VV,HR,AT,FL
  CSPOFS 0 OUT X,Y
  DEC X,10 '#####
  DEC Y,5
  IF X<0 THEN INC X,11 '#####
  IF Y<0 THEN INC Y,5
  G=ITMG[ITM[IN]]
  SPANIM 132,6,-8,0
  SPCLR 131
  GPAGE 0,SPPAGE()
  GFILL 104+8,40,159,47,#BLACK '#####
  IF FL AND 4 THEN
   GPUTCHR 104+8,40,"Remove" '#####
  ELSE
   GPUTCHR 104+8,40,ACT$[G] '#####
  ENDIF
  GFILL 104+8,48,159,55,#BLACK '#####
  IF PWEP==6 && ITM[IN]==8 THEN
   GPUTCHR 104+8,48,"Attack" '#####
  ELSE
   GPUTCHR 104+8,48,"Throw" '#####
  ENDIF
  GPAGE 0,0
  SPSET 133,259
  SPOFS 133,X*8,Y*8,-15
  COM=SEL(X+1,Y+1,4,0)
  IF COM>-1 THEN
   IF COM==0 THEN
    IF G!=7 THEN
     CALL "ACT"+STR$(G),IN
    ELSE
     R=ZAP(IN)
    ENDIF
   ENDIF
   IF COM==1 THEN R=THROW(IN)
   IF COM==2 THEN IPUT IN
   IF COM==3 THEN RENM IN:R=1
  ELSE
   R=1
  ENDIF

 ELSE
  R=1
 ENDIF
 SPCLR 131
 SPCLR 133
 SPANIM 132,6,-8,0
 RETURN R
END
'--------------------------------------------
'名前をつける ***
DEF RENM IN
VAR ID=ITM[IN],V=ITMV[IN],IG=ITMG[ID]
VAR RN$[0],RNS$[0],A,B,I,X,Y,R
 IF IG<4 || IG>7 THEN
  BGMPLAY 4,164,80
  RETURN
 ENDIF

 DP "Call it what?"

 IF IG==4 THEN 
  A=18
  B=28
 ELSEIF IG==5 THEN
  A=29
  B=42
 ELSEIF IG==6 THEN
  A=43
  B=54
 ELSEIF IG==7 THEN
  A=55
  B=64
 ENDIF

 SPANIM 132,6,-8,RGB(133,0,0,0)
 CSPOFS 0 OUT X,Y
 DEC X,5
 DEC Y,3
 X=X*8
 Y=Y*8
 IF X<0 THEN X=0
 IF X>240 THEN X=240
 IF Y<0 THEN Y=0
 IF Y+(B-A)*8>224 THEN Y=224-(B-A)*8

 GPAGE 0,SPPAGE()
 GFILL 0,80,399,255,0

 FOR I=A TO B
  GPUTCHR 8,80+(I-A)*8,KIN$[I]
 NEXT
' ITMN$[ID]=RN$[ID] 'ワ
' ITMNS$[ID]=RNS$[ID] 'ワ 
' GPUTCHR 8,88+(B-A)*8,RN$[ID] 'ワ
' GPUTCHR 8,88+(B-A)*8,RNS$[ID] 'ワ

 GPAGE 0,0
 SPSET 131,258
 SPOFS 131,X,Y,-25

 X=X DIV 8
 Y=Y DIV 8

 R=SEL(X,Y,B-A+1,0)
 IF R==-1 THEN RETURN
' IF R==B-A THEN 'ヲ
' ITMN$[ID]=RN$[ID] 'ヲ
' ITMNS$[ID]=RNS$[ID] 'ヲ
' ELSE
 ITMN$[ID]=KIN$[A+R]+"?"
 ITMNS$[ID]=KINS$[A+R]+"?"
 DP "Renamed"
' ENDIF
END
'--------------------------------------------
'アイテムを食べる ***
DEF ACT1 IN
VAR ID=ITM[IN]
 SET_LIGHT 0,#YELLOW
 BGMPLAY 2,136,80
 IF ID==1 THEN
  IF PER(54) THEN
   INC FOD,RND(201)+500
  ELSE
   INC FOD,RND(201)+300
  ENDIF
 ELSEIF ID==2 THEN
  INC FOD,RND(201)+500
 ENDIF
 IF FOD>MFOD THEN FOD=MFOD
 IDEC IN
END
'--------------------------------------------
'武器を装備する ***
DEF ACT2 IN
VAR ID=ITM[IN],V=ITMV[IN],VV,HR,AT,FL,A,B,C,D
VAR I
 SPLIT V OUT VV,HR,AT,FL

 '装備をはずす ***
 IF FL AND 4 THEN
  IF FL AND 2 THEN
   BGMPLAY 4,163,80
   SET_LIGHT 0,#PURPLE
   RETURN
  ENDIF
  BGMPLAY 4,142,80
  ITMV[IN]=MERGE(VV,HR,AT,FL-4)
  PWEP=0
  PHR=0
  PAT=0
  RETURN
 ENDIF

 FOR I=0 TO LEN(ITM)-1
  SPLIT ITMV[I] OUT A,B,C,D
  IF ITMG[ITM[I]]==2 THEN 
   'のろい ***
   IF (D AND 6)==6 THEN
    BGMPLAY 4,163,80
    SET_LIGHT 0,#PURPLE
    RETURN
   ENDIF
   IF D AND 4 THEN ITMV[I]=MERGE(A,B,C,D-4)
  ENDIF
 NEXT

 BGMPLAY 4,138,80
 PWEP=ID
 PHR=WHR[ID-3]+HR
 PAT=WAT[ID-3]+AT
 IF FL AND 2 THEN
  BGMPLAY 4,163,80
  SET_LIGHT 0,#PURPLE
 ENDIF
 ITMV[IN]=MERGE(VV,HR,AT,(FL OR 4) AND 14)
END
'--------------------------------------------
'防具を装備する ***
DEF ACT3 IN
VAR ID=ITM[IN],V=ITMV[IN],VV,HR,AT,FL,A,B,C,D
VAR I
 SPLIT V OUT VV,HR,AT,FL

 '防具をはずす ***
 IF FL AND 4 THEN
  IF FL AND 2 THEN
   SET_LIGHT 0,#PURPLE
   BGMPLAY 4,163,80
   RETURN
  ENDIF
  BGMPLAY 4,142,80
  ITMV[IN]=MERGE(VV,HR,AT,FL-4)
  PARM=0
  PDF=0
  RETURN
 ENDIF

 FOR I=0 TO LEN(ITM)-1
  SPLIT ITMV[I] OUT A,B,C,D
  IF ITMG[ITM[I]]==3 THEN 
   'のろい ***
   IF (D AND 6)==6 THEN
    BGMPLAY 4,163,80
    SET_LIGHT 0,#PURPLE
    RETURN
   ENDIF
   IF D AND 4 THEN ITMV[I]=MERGE(A,B,C,D-4)
  ENDIF
 NEXT

 BGMPLAY 4,138,80
 PARM=ID
 PDF=ADF[ID-11]+HR
 IF FL AND 2 THEN
  BGMPLAY 4,163,80
  SET_LIGHT 0,#PURPLE
 ENDIF
 ITMV[IN]=MERGE(VV,HR,AT,(FL OR 4) AND 14)
END
'--------------------------------------------
'指輪を装備する ***
DEF ACT4 IN
VAR ID=ITM[IN],V=ITMV[IN],VV,HR,AT,FL,A,B,C,D
VAR I
 SPLIT V OUT VV,HR,AT,FL

 '指輪をはずす ***
 IF FL AND 4 THEN
  IF FL AND 2 THEN
   BGMPLAY 4,163,80
   SET_LIGHT 0,#PURPLE
   RETURN
  ENDIF
  BGMPLAY 4,142,80
  ITMV[IN]=MERGE(VV,HR,AT,FL-4)
  IF ID==RNG1 THEN RNG1=0 ELSE RNG2=0
  IF ID==22 THEN DEC ST,HR:DEC MST,HR
  IF ID==24 THEN DEC DEX,HR
  RETURN
 ENDIF

 IF RNG1 && RNG2 THEN
  BGMPLAY 4,164,80
  RETURN
 ENDIF

 BGMPLAY 4,138,80
 IF !RNG1 THEN RNG1=ID ELSE RNG2=ID
 IF FL AND 2 THEN
  BGMPLAY 4,163,80
  SET_LIGHT 0,#PURPLE
 ENDIF
 ITMV[IN]=MERGE(VV,HR,AT,FL OR 4)
 IF ID==22 THEN INC ST,HR:INC MST,HR
 IF ID==24 THEN INC DEX,HR
END
'--------------------------------------------
'薬を飲む ***
DEF ACT5 IN
VAR ID=ITM[IN],A,P,I,X,Y
 IDEC IN
 BGMPLAY 5,136,80
 SPCLR 133
 IINS[ID]=1
 ITMN$[ID]=KIN$[ID]
 ITMNS$[ID]=KINS$[ID]
 DP ITMN$[ID]


 IF ID==29 THEN
  SET_LIGHT 0,RGB(255,127,127)
  BGMPLAY 4,156,80
  IF ST==MST THEN
   INC ST
   INC MST
  ELSE
   INC ST
  ENDIF

 ELSEIF ID==30 THEN
  SET_LIGHT 0,#LIME
  BGMPLAY 4,155,80
  ST=MST

 ELSEIF ID==31 THEN
  IF MMK THEN MMK=1
  P=25
  SET_DPOP 0,P
  IF HP[0]==MHP[0] THEN INC MHP[0]
  INC HP[0],P
  IF HP[0]>MHP[0] THEN HP[0]=MHP[0]
  SET_LIGHT 0,#LIME
  BGMPLAY 4,157,80

 ELSEIF ID==32 THEN
  IF MMK THEN MMK=1
  IF GKK THEN GKK=1
  IF KRN[0] THEN
   KRN[0]=0
   A=HP[0]/MHP[0]*255
   SPCOLOR 0,RGB(255,A,A)
  ENDIF
  P=99
  SET_DPOP 0,P
  IF HP[0]==MHP[0] THEN INC MHP[0],2
  INC HP[0],P
  IF HP[0]>MHP[0] THEN HP[0]=MHP[0]
  SET_LIGHT 0,#LIME
  BGMPLAY 4,157,80

 ELSEIF ID==33 THEN
  IF GKK THEN GKK=1
  DEC ST,RND(3)+1
  IF ST<1 THEN ST=1
  DEC HP[0],5
  IF HP[0]<0 THEN HP[0]=0
  SET_LIGHT 0,#MAGENTA
  BGMPLAY 4,150,80
  SET_DPOP 0,-5

 ELSEIF ID==34 THEN
  SET_LIGHT 0,#YELLOW
  IF LV<21 THEN
   A=RND(8)+3
   EX=NEX
   BGMPLAY 7,254,80
   INC LV
   DP "Welcome to Lv"+STR$(LV)
   INC HP[0],A
   INC MHP[0],A
   RESTORE @LEVEL
   FOR I=0 TO LV
    PEX=NEX
    READ NEX
   NEXT
  ENDIF

 ELSEIF ID==35 THEN
  SET_LIGHT 0,#MAGENTA
  BGMPLAY 4,150,80
  MMK=RND(301)+500

 ELSEIF ID==36 THEN
  SET_LIGHT 0,#MAGENTA
  SPANIM 132,6,-16,#MAGENTA,1
  BGMPLAY 4,150,80
  GKK=RND(301)+500
  GPAGE 0,SPPAGE()
  GFILL 0,0,215,15,#BLACK
  GFILL 224,0,295,7,#BLACK
  GPUTCHR 0,0,"@%%%%%%%%%%%%%%%%%%%%%%%%%%"
  GPUTCHR 0,8,"ä%%%%%%%%%%%%%%%%%%%%%%%%%%"
  GPUTCHR 224,0,"%%%%%%%%%"
  GPAGE 0,0

 ELSEIF ID==37 THEN
  SET_LIGHT 0,#CYAN
  BGMPLAY 4,158,80
  MOF=1

 ELSEIF ID==38 THEN
  IF !MMK && !GKK THEN
   SET_LIGHT 0,#CYAN
   BGMPLAY 4,158,80
   FOR I=64 TO 127
    IF SPUSED(I) THEN SPCOLOR I,#CYAN
   NEXT
  ENDIF

 ELSEIF ID==39 THEN
  KRN[0]=RND(11)+12
  SET_LIGHT 0,#PURPLE
  BGMPLAY 2,144,80
  SPANIM 132,6,-16,#PURPLE,1

 ELSEIF ID==40 THEN
  VSYNC 8
  BGMPLAY 4,170,80
  IF DMV THEN
   DMV=0
   SET_LIGHT 0,#CYAN
  ENDIF
  CSPOFS 0 OUT X,Y
  SPSET 135,262
  SPOFS 135,X*8,Y*8,-20
  SPANIM 135,0,-60,X*8,Y*8-16,1
  SPANIM 135,6,-60,0,1
  SPFUNC 135,"SPCLEAR"
  FYU=RND(16)+15

 ELSEIF ID==41 THEN
  SPANIM 132,6,-16,#BLUE,1
  SPVAR 0,2,SPVAR(0,2) OR 2
  KSK=(RND(11)+11)*2
  SET_LIGHT 0,#BLUE
  BGMPLAY 4,158,80

 ELSEIF ID==42 THEN
  SPANIM 132,6,-16,#YELLOW,1
  BGMPLAY 4,171,80
  MIE=1

 ENDIF

 PRINT_DUNGEON 0
 PRINT_STATUS
 VSYNC 16
END
'--------------------------------------------
'薬をモンスターに当てた場合 ***
DEF HITPOTION ID,TG
VAR A

 IF ID==29 THEN
  SET_LIGHT TG,RGB(255,127,127)
  BGMPLAY 4,156,80
  A=(MHP[TG] DIV 5)-1
  SET_DPOP TG,A
  INC HP[TG],A

 ELSEIF ID==30 THEN
  SET_LIGHT TG,#LIME
  BGMPLAY 4,155,80

 ELSEIF ID==31 THEN
  SET_LIGHT TG,#LIME
  BGMPLAY 4,157,80
  A=MHP[TG] DIV 2
  SET_DPOP TG,A
  INC HP[TG],A

 ELSEIF ID==32 THEN
  SET_LIGHT TG,#LIME
  BGMPLAY 4,157,80
  A=MHP[TG]
  SET_DPOP TG,A
  INC HP[TG],A

 ELSEIF ID==33 THEN
  SET_LIGHT TG,#MAGENTA
  BGMPLAY 4,150,80
  A=(MHP[TG] DIV 4)+1
  SET_DPOP TG,-A
  DEC HP[TG],A

 ELSEIF ID==34 THEN
  SET_LIGHT TG,RGB(255,127,127)
  BGMPLAY 4,156,80
  A=(MHP[TG] DIV 5)-1
  SET_DPOP TG,A
  INC HP[TG],A

 ELSEIF ID==35 THEN
  SET_LIGHT TG,#GREEN
  BGMPLAY 3,144,80
  SLP[TG]=2

 ELSEIF ID==36 THEN
  SET_DPOP TG,-1
  DEC HP[TG],1

 ELSEIF ID==37 THEN
  SET_DPOP TG,-1
  DEC HP[TG],1

 ELSEIF ID==38 THEN
  SET_DPOP TG,-1
  DEC HP[TG],1

 ELSEIF ID==39 THEN
  KRN[TG]=RND(11)+12
  SET_LIGHT TG,#PURPLE
  BGMPLAY 2,144,80

 ELSEIF ID==40 THEN
  SET_DPOP TG,-1
  DEC HP[TG],1

 ELSEIF ID==41 THEN
  SET_LIGHT TG,#BLUE
  BGMPLAY 4,158,80
  IF SPP(TG,0) THEN
   SPVAR TG,2,SPVAR(TG,2)-1
  ELSE
   SPVAR TG,2,SPVAR(TG,2) OR 2
  ENDIF

 ELSEIF ID==42 THEN
  SET_DPOP TG,-1
  DEC HP[TG],1

 ENDIF

 IF HP[TG]>MHP[TG] THEN HP[TG]=MHP[TG]

END
'--------------------------------------------
'巻物を読む ***
DEF ACT6 IN
VAR I,ID=ITM[IN],VV,HR,AT,FL,F,G,MX,MY,X,Y
VAR DX[8],DY[8],A,V,SH,R

 SPCLR 133
 IDEC IN
 SET_MCIRCLE 0
 BGMPLAY 6,169,80
 VSYNC 48

 IF ID==43 THEN
  FOR I=0 TO LEN(ITM)-1
   SPLIT ITMV[I] OUT VV,HR,AT,FL
   G=ITMG[ITM[I]]==3
   IF G && FL AND 4 && !(FL AND 8) THEN
    IF FL AND 2 THEN FL=FL AND 13
    ITMV[I]=MERGE(VV,HR,AT,FL OR 8)
    F=1
   ENDIF
  NEXT
  IF F THEN
   SET_LIGHT 0,#YELLOW
   BGMPLAY 4,154,80
  ENDIF

 ELSEIF ID==44 THEN
  FOR I=1 TO 63
   IF SPUSED(I) && SPHITSP(I,128) THEN
    SET_LIGHT I,#GREEN
    BGMPLAY 3,144,80
    SLP[I]=2
    VSYNC 8
   ENDIF
  NEXT

 ELSEIF ID==45 THEN
  FOR I=0 TO LEN(ITM)-1
   SPLIT ITMV[I] OUT VV,HR,AT,FL
   IF (FL AND 4) && ITMG[ITM[I]]==2 THEN
    SET_LIGHT 0,#BLUE
    BGMPLAY 4,154,80
    IF RND(2) THEN
     ITMV[I]=MERGE(VV,HR+1,AT,FL AND 13)
     INC PHR
    ELSE
     ITMV[I]=MERGE(VV,HR,AT+1,FL AND 13)
     INC PAT
    ENDIF
   ENDIF
  NEXT

 ELSEIF ID==46 THEN
  FOR I=0 TO LEN(ITM)-1
   SPLIT ITMV[I] OUT VV,HR,AT,FL
   IF (FL AND 4) && ITMG[ITM[I]]==3 THEN
    SET_LIGHT 0,#BLUE
    BGMPLAY 4,154,80
    ITMV[I]=MERGE(VV,HR+1,AT,FL AND 13)
    INC PDF
   ENDIF
  NEXT

 ELSEIF ID==47 THEN
  BGMPLAY 4,172,80
  IINS[47]=1
  ITMN$[47]=KIN$[47]
  ITMNS$[47]=KINS$[47]
  IF LEN(ITM) THEN
   DP "Identify which?"
   VSYNC 32
   ITEMLIST OUT X,Y
   R=SEL(X,Y,LEN(ITM),1)
   IF R==-1 THEN RETURN
   IINS[ITM[R]]=1
   ITMN$[ITM[R]]=KIN$[ITM[R]]
   ITMNS$[ITM[R]]=KINS$[ITM[R]]
   SPLIT ITMV[R] OUT VV,HR,AT,FL
   ITMV[R]=MERGE(VV,HR,AT,FL AND 14)
   DP INAME$(ITM[R],ITMV[R])
   BGMPLAY 4,173,80
  ENDIF

 ELSEIF ID==48 THEN
  TELEPORT

 ELSEIF ID==49 THEN
  SET_LIGHT 0,#CYAN
  BGMPLAY 3,152,80
  IF RNG1==26 || RNG2==26 THEN RETURN
  FLZ=RND(5)+4

 ELSEIF ID==51 THEN
  FOR I=0 TO LEN(ITM)-1
   SPLIT ITMV[I] OUT VV,HR,AT,FL
   IF (FL AND 6)==6 THEN
    ITMV[I]=MERGE(VV,HR,AT,FL AND 13)
    F=1
   ENDIF
  NEXT
  IF F THEN
   SET_LIGHT 0,#BLUE
   BGMPLAY 4,153,80
  ENDIF
 ELSEIF ID==52 THEN
  COPY DX,@DDX
  COPY DY,@DDY
  CSPOFS 0 OUT X,Y
  REPEAT
   V=RND(8)
   MX=X+DX[V]
   MY=Y+DY[V]
   SH=SPHITRC(64,127,MX*8+4,MY*8+4,1,1)
   IF HCHK(MX,MY) && SH==-1 THEN
    SET_CHR MX,MY,MNSTBL[RND(LEN(MNSTBL))]
    SET_LIGHT 0,#RED
    BGMPLAY 4,151,80
    F=1
   ENDIF
   INC A
  UNTIL F || A==63

 ELSEIF ID==53 THEN
  FOR I=1 TO 63
   IF SPUSED(I) && SLP[I] THEN
    SPCOLOR I OUT F
    IF F THEN
     SET_LIGHT I,#GRAY
     SLP[I]=0
     AC[I]=1
    ENDIF
   ENDIF
  NEXT
  BGMPLAY 4,145,80
 ELSEIF ID==54 THEN
  SPCOLOR 132,#WHITE
  SET_LIGHT 0,#YELLOW
  BGMPLAY 4,148,80
  PRINT_DUNGEON 1
 ENDIF
END
'--------------------------------------------
'杖をふる ***
DEF ZAP(IN)
VAR ID=ITM[IN],V=ITMV[IN],TR,VV,HR,AT,FL
VAR DX[8],DY[8],X,Y,H

 IPF=1
 COPY DX,@DDX
 COPY DY,@DDY

 SPLIT V OUT VV,HR,AT,FL

 SPCLR 133
 TR=INPUT_R()
 IF TR==-1 THEN RETURN 1

 IF HR THEN
  BGMPLAY 5,175,80
  CSPOFS 0 OUT X,Y
  SPSET 137,127
  REPEAT
   INC X,DX[TR]
   INC Y,DY[TR]
   SPOFS 137,X*8,Y*8
   SET_EF 137,RGB(63,15,15)
   H=SPHITRC(1,63,X*8,Y*8,1,1)
   VSYNC
  UNTIL M[X+DX[TR],Y+DY[TR]]==255 || H>-1
  SPCLR 137
  IF H>-1 THEN
   MAGIC ID,H
  ENDIF
 ELSE
  BGMPLAY 5,135,80
 ENDIF

 IF HR THEN DEC HR
 ITMV[IN]=MERGE(VV,HR,AT,FL)
 RETURN 0
END
'--------------------------------------------
'杖 ***
DEF MAGIC ID,TG
VAR X,Y
 WZ=1
 IF ID==55 THEN
  SET_LIGHT TG,RGB(255,127,0)
  BGMPLAY 4,147,80
  RNDLOCATE OUT X,Y
  SPOFS TG,X*8,Y*8

 ELSEIF ID==56 THEN
  SET_LIGHT TG,#MAGENTA
  BGMPLAY 4,159,80
  SPVAR TG,2,SPVAR(TG,2) OR 1

 ELSEIF ID==57 THEN
  KRN[TG]=RND(11)+12
  SET_LIGHT TG,#PURPLE
  BGMPLAY 2,144,80

 ELSEIF ID==58 THEN
  SET_LIGHT TG,RGB(255,127,0)
  BGMPLAY 2,176,80
  SPCOLOR TG,0
  SPVAR TG,2,SPVAR(TG,2) OR 2048

 ELSEIF ID==59 THEN
  CSPOFS TG OUT X,Y
  SET_LIGHT TG,#SILVER
  BGMPLAY 4,161,80
  SPCLR TG
  SET_CHR X,Y,RND(26)+1

 ELSEIF ID==60 THEN
  SET_LIGHT TG,#BLUE
  BGMPLAY 2,158,80
  SPVAR TG,2,SPVAR(TG,2) OR 2

 ELSEIF ID==61 THEN
  SET_LIGHT TG,#GREEN
  BGMPLAY 3,144,80
  SLP[TG]=2

 ELSEIF ID==62 THEN
  SET_LIGHT TG,#RED
  ATTACK 0,TG
  BEEP 120

 ELSEIF ID==63 THEN
  SET_LIGHT TG,#CYAN
  BGMPLAY 3,144,80
  SPVAR TG,2,0
 ENDIF
 WZ=0
END
'--------------------------------------------
'イェンダーの魔除け ***
DEF ACT8 IN
 BGMPLAY 4,174,80
 SET_LIGHT 0,#YELLOW
 DP "Got AmuletлNendor!"
END
'--------------------------------------------
'アイテムを投げる ***
DEF THROW(IN)
VAR ID=ITM[IN],V=ITMV[IN],TR,VV,HR,AT,FL
VAR DX[8],DY[8],X,Y,H

 IPF=1
 COPY DX,@DDX
 COPY DY,@DDY

 SPLIT V OUT VV,HR,AT,FL

 IF (FL AND 6)==6 THEN
  SET_LIGHT 0,#PURPLE
  BGMPLAY 4,163,80
  RETURN 1
 ENDIF

 SPCLR 133
 TR=INPUT_R()
 IF TR==-1 THEN RETURN 1
 BGMPLAY 5,139,80

 CSPOFS 0 OUT X,Y

 SPSET 137,127
 REPEAT
  INC X,DX[TR]
  INC Y,DY[TR]
  SPOFS 137,X*8,Y*8
  SET_EF 137,RGB(15,15,63)
  H=SPHITRC(1,63,X*8,Y*8,1,1)
  VSYNC
 UNTIL M[X+DX[TR],Y+DY[TR]]==255 || H>-1
 SPCLR 137

 IF !(H>-1 && TATTACK(IN,H)) THEN DROP X,Y,IN

 IDEC IN
 VSYNC 8
 RETURN 0
END
'--------------------------------------------
'投げて攻撃 ***
DEF TATTACK(IN,H)
VAR ID=ITM[IN],V=ITMV[IN],G=ITMG[ID]
VAR I,VV,HR,AT,FL,R,DM,HT,F,WF

 BGMPLAY 1,131,80

 '攻撃先起こし処理 ***
 IF SLP[H] THEN SLP[H]=0
 IF SPP(H,5) THEN SPVAR H,2,SPVAR(H,2)-32
 IF SPP(H,15) THEN
  SPVAR H,2,SPVAR(H,2)-32768
  SPCHR H,20
 ENDIF

 IF G==2 THEN
  HR=WHR[ID-3]+HR
  AT=WAT[ID-3]+AT
  DM=DICE(HR,AT)+STRAT()
  INC DM,LV/2+DEX/2-(!!RNG1+!!RNG2)/2
  HT=60+HR*3+LV+DEX*2-!!RNG1-!!RNG2
  IF ID==8 && PWEP==6 THEN
   INC DM,DICE(PHR,PAT)+STRAT()
   INC DM,LV/2+DEX/2-(!!RNG1+!!RNG2)/2
   DM=DM/3*2
   HT=HT/3*4
  ENDIF
  WF=(ID==7 || ID==9 || ID==10)
  IF FL AND 4 && WF THEN
   DM=DM/2*3
   HT=HT/3*4
  ENDIF
 ELSEIF G==5 || G==7 THEN
  DM=0
  HT=63+LV+DEX*2-!!RNG1-!!RNG2
 ELSE
  DM=STRAT()-1
  INC DM,LV/2+DEX/2-(!!RNG1+!!RNG2)/2
  HT=63+LV+DEX*2-!!RNG1-!!RNG2
 ENDIF
 DM=CEIL(DM)

 '命中判定 ***
 IF PER(HT) THEN
  IF G==5 THEN HITPOTION ID,H
  IF G==7 THEN MAGIC ID,H
  SET_DPOP H,-DM
  DEC HP[H],DM
  IF HP[H]<=0 THEN
   HP[H]=0
   SET_LIGHT H,#RED
   ADDEXP SPVAR(H,3)
   BLOOD H
   F=1
   BEEP 13
   'つかみ回復処理 ***
   IF TKM[H] THEN
    DMV=0
    SET_LIGHT 0,#LIME
    BGMPLAY 2,155,80
   ENDIF
  ENDIF
  R=1
 ELSE
  BGMPLAY 1,135,80
 ENDIF
 AC[0]=1
 FOR I=0 TO 3:BREPEAT I,16,3:NEXT
 BREPEAT 5,16,3
 COLOR TPAL[4]
 LP 41,26,""*8
 LP 41,27," "*8
 COLOR TPAL[7]
 LP 41,26,EMN$[SPVAR(H,3)]
 MTR$ 41,27,HP[H],MHP[H],#YELLOW,#RED
 IF F THEN SPCLR H
 RETURN R
END
'--------------------------------------------
'アイテムを落とす ***
DEF DROP X,Y,IN
VAR ID=ITM[IN],V=ITMV[IN],VV,HR,AT,FL
VAR I,DX[8],DY[8],DS[8],H,F,DRX,DRY
 SPLIT V OUT VV,HR,AT,FL

 COPY DX,@DDX
 COPY DY,@DDY
 COPY DS,@DSORT
 SORT DS,DX,DY

 H=SPHITRC(64,127,X*8,Y*8,8,8)
 IF H>-1 THEN
  REPEAT
   DRX=X+DX[I]
   DRY=Y+DY[I]
   H=SPHITRC(64,127,DRX*8,DRY*8,8,8)
   F=(M[DRX,DRY]!=255)
   IF H==-1 && F THEN BREAK
   INC I
  UNTIL (H==-1 && F) || I==8
  IF I==8 THEN RETURN
  X=X+DX[I]
  Y=Y+DY[I]
 ENDIF

 SET_ITEM X,Y,ID,MERGE(1,HR,AT,FL AND 11)
END
'--------------------------------------------
'方向を入力する ***
DEF INPUT_R()
VAR R,X,Y,DX[8],DY[8],CX,CY,BT,SX,SY,SW

 CSPOFS 0 OUT X,Y
 SPSET 136,263
 SPOFS 136,X*8,Y*8,-15
 SPCOLOR 136,#YELLOW
 SPANIM 136,6,-24,#RED,-24,#YELLOW,0

 COPY DX,@DDX
 COPY DY,@DDY

 WHILE 1
  STICK OUT SX,SY
  SY=-SY 'PI: STICK Y IS INVERTED VS 3DS
  BT=BUTTON(1)
  SW=0
  IF SX> 0.3 THEN BT=BT OR 8:SW=7
  IF SX<-0.3 THEN BT=BT OR 4:SW=7
  IF SY> 0.3 THEN BT=BT OR 1:SW=7
  IF SY<-0.3 THEN BT=BT OR 2:SW=7

  IF BT AND 8 && CX< 1 THEN INC CX
  IF BT AND 4 && CX>-1 THEN DEC CX
  IF BT AND 1 && CY>-1 THEN DEC CY
  IF BT AND 2 && CY< 1 THEN INC CY
  IF BT AND 15 THEN BEEP 9
  SPOFS 136,X*8+CX*8,Y*8+CY*8
  VSYNC 1+SW
  IF BT AND 16 THEN BREAK
  IF BT AND 32 THEN
   CX=0
   CY=0
   BREAK
  ENDIF
 WEND
 FOR R=0 TO 7
  IF CX==DX[R] && CY==DY[R] THEN
   BGMPLAY 1,140,80
   BREAK
  ENDIF
 NEXT
 IF CX==0 && CY==0 THEN R=-1
 SPCLR 136
 RETURN R
END
'--------------------------------------------
'アイテムを置く ***
DEF IPUT IN
VAR I,X,Y,H,ID=ITM[IN],V=ITMV[IN],VV,HR,AT,FL
VAR IG=ITMG[ID],R
 IPF=1
 SPLIT V OUT VV,HR,AT,FL
 CSPOFS 0 OUT X,Y
 H=SPHITRC(64,127,X*8,Y*8,8,8)
 IF H>-1 THEN
  BGMPLAY 4,164,80
  RETURN
 ENDIF

 IF (FL AND 6)==6 THEN
  SET_LIGHT 0,#PURPLE
  BGMPLAY 4,163,80
  RETURN
 ENDIF

 IF FL AND 4 THEN
  IF IG==2 THEN
   PWEP=0
   PHR=0
   PAT=0
  ELSEIF IG==3 THEN
   PARM=0
   PDF=0
  ELSEIF IG==4 THEN
   IF ID==RNG1 THEN RNG1=0 ELSE RNG2=0
  ENDIF
 ENDIF

 IF ID!=50 THEN
  FOR I=IN TO LEN(ITM)-2
   ITM[I]=ITM[I+1]
   ITMV[I]=ITMV[I+1]
  NEXT
  I=POP(ITM)
  I=POP(ITMV)
  SET_ITEM X,Y,ID,MERGE(VV,HR,AT,FL AND 11)
 ELSE
  SET_MCIRCLE 0
  BEEP 101
  IDEC IN
  SPSET 64,127,34 OUT R
  IF R==-1 THEN RETURN
  SPOFS R,X*8,Y*8,0
  SPVAR R,0,50
  SPVAR R,1,1
  SPCOL R,4,4,1,1
  SPFUNC R,"ITEM"
  SPCOLOR R,#CYAN
 ENDIF

 BEEP 95

END
'--------------------------------------------
'アイテムを減らす ***
DEF IDEC IN
VAR I,A,ID=ITM[IN],V=ITMV[IN],VV,HR,AT,FL
 SPLIT V OUT VV,HR,AT,FL
 IF VV>1 THEN
  ITMV[IN]=MERGE(VV-1,HR,AT,FL)
 ELSE
  IF FL AND 4 THEN
   IF ITMG[ID]==2 THEN
    PWEP=0
    PHR=0
    PAT=0
   ELSEIF ITMG[ID]==3 THEN
    PARM=0
    PDF=0
   ENDIF
  ENDIF
  FOR I=IN TO LEN(ITM)-2
   ITM[I]=ITM[I+1]
   ITMV[I]=ITMV[I+1]
  NEXT
  A=POP(ITM)
  A=POP(ITMV)
 ENDIF
END
'--------------------------------------------
'アイテムリストを表示 ***
DEF ITEMLIST OUT X,Y
VAR I,ID,V,VV,HR,AT,FL,N$,CL,LN[0],LL '#####

 FOR I=0 TO LEN(ITM)-1 '#####
  PUSH LN,LEN(INAME$(ITM[I],ITMV[I])) '#####
 NEXT '#####

 LL=MAX(LN) '#####

 BGMPLAY 1,140,80
 SPANIM 132,6,-8,RGB(133,0,0,0)
 CSPOFS 0 OUT X,Y
 DEC X,5
 DEC Y,3
 X=X*8
 Y=Y*8
 IF X<0 THEN X=0
 IF X>240 THEN X=240
 IF Y<0 THEN Y=0
 IF Y+LEN(ITM)*8>224 THEN Y=224-LEN(ITM)*8
 IF X+LL*8>392 THEN X=392-LL*8 '#####

 GPAGE 0,SPPAGE()
 GFILL 0,80,399,255,0 '#####

 FOR I=0 TO LEN(ITM)-1
  CL=#WHITE
  ID=ITM[I]
  V=ITMV[I]
  SPLIT V OUT VV,HR,AT,FL
  N$=INAME$(ID,V)
  IF !IINS[ID] THEN CL=#YELLOW
  IF FL AND 1 THEN CL=#YELLOW
  IF FL AND 4 THEN CL=#LIME
  IF (FL AND 6)==6 THEN CL=#MAGENTA
  IF ID==8 && PWEP==6 THEN CL=#CYAN
  GPUTCHR 8,80+I*8,N$,CL
 NEXT

 GPAGE 0,0
 SPSET 131,258
 SPOFS 131,X,Y,-25
 X=X DIV 8
 Y=Y DIV 8
END
'--------------------------------------------
'カーソルで選択 ***
DEF SEL(X,Y,A,B)
VAR R,BT1,BT2

 SPSET 130,91
 SPOFS 130,X*8,Y*8,-20

 WHILE 1
  BT1=BUTTON(1)
  BT2=BUTTON(2)
  IF BT1 AND 1 THEN DEC R:BEEP 9
  IF BT1 AND 2 THEN INC R:BEEP 9
  IF R>=A THEN R=0
  IF R<0  THEN R=A-1
  VSYNC
  SPOFS 130,X*8,(Y+R)*8,-20
  IF B && (BT2 AND 128) THEN ISORT
  IF BT2 AND 16 THEN
   BGMPLAY 1,140,80
   BREAK
  ENDIF
  IF BT2 AND 32 THEN R=-1:BREAK
 WEND

 SPCOLOR 130,0
 RETURN R
END
'--------------------------------------------
DEF ISORT
VAR I,X,Y,USD[0],ID,V,A,VV,HR,AT,FL

 FOR I=0 TO LEN(ITM)-1
  ID=ITM[I]
  V=ITMV[I]
  SPLIT V OUT VV,HR,AT,FL
  A=ITMG[ID]*100+(IRND[ID]*!IINS[ID])
  IF FL AND 4 THEN A=ITMG[ID]
  IF ID==8 && PWEP==6 THEN A=-10
  PUSH USD,A
 NEXT

 SORT USD,ITM,ITMV
 ITEMLIST OUT X,Y
 BEEP 117
END
'--------------------------------------------
'アイテムを拾う ***
DEF GET_ITEM H
VAR ID=SPVAR(H,0),V=SPVAR(H,1),IG=ITMG[ID]
VAR I,VV,HR,AT,FL,IVV,IHR,IAT,IFL,F,CK

 IF FYU && !IPF THEN
  DP "Floating.Can't pickup"
  IPF=1
  RETURN
 ENDIF

 FOR I=0 TO 3:BREPEAT I,16,3:NEXT
 BREPEAT 5,16,3
 SPLIT V OUT VV,HR,AT,FL
 IF IG==0 THEN
  DP STR$(V)+" Gold"
  INC GLD,V
  BGMPLAY 2,128,80
  SPCLR H
 ELSEIF IG>=1 && IG<=8 THEN
  IF ITMS[ID] THEN
   FOR I=0 TO LEN(ITM)-1
    SPLIT ITMV[I] OUT IVV,IHR,IAT,IFL
    F=(HR==IHR) && (AT==IAT)
    IF ID==ITM[I] && F THEN
     DP INAME$(ID,V)
     ITMV[I]=MERGE(VV+IVV,IHR,IAT,IFL)
     BGMPLAY 2,128,80
     SPCLR H
     CK=1
     BREAK
    ENDIF
   NEXT
  ENDIF
  IF !CK && LEN(ITM)<20 THEN 
   DP INAME$(ID,V)
   PUSH ITM,ID
   PUSH ITMV,V
   BGMPLAY 2,128,80
   SPCLR H
  ENDIF
 ENDIF
END
'--------------------------------------------
'階段を使う ***
DEF STAIR()
VAR X,Y
 IF FYU THEN
  DP "Floating.Can't enter"
  BGMPLAY 4,164,80
  RETURN 1
 ENDIF
 CSPOFS 0 OUT X,Y
 IF MC$[X,Y]!="%" THEN RETURN 1
 BGMPLAY 3,129,80
 UF=1
 RETURN 0
END
'--------------------------------------------
'モンスター行動処理 ***
DEF MONSTER
VAR ID=CALLIDX,X,Y,A,B,V,FF,PX,PY,D,H

 '起こし判定 ***
 IF SLP[ID]==1 THEN
  IF !MZM[ID] THEN
   CSPOFS 0 OUT PX,PY
   H=SPHITRC(ID,PX*8-8,PY*8-8,24,24)
   IF H THEN AWAKE ID
  ELSE
   IF SPHITSP(ID,128) THEN MZM[ID]=0:AWAKE ID
  ENDIF
 ENDIF

 IF !TCHK(ID) THEN
  CANIM ID
  RETURN
 ENDIF

 '混乱回復処理 ***
 IF KRN[ID] THEN DEC KRN[ID]

 H=SPHITSP(ID,128)

 IF !KRN[ID] THEN
  'にらみ処理 ***
  IF H && SPP(ID,12) && PER(75) THEN
   SET_LIGHT ID,#WHITE
   BGMPLAY 3,137,80
   VSYNC 8
   IF PER(40) THEN
    KRN[0]=RND(11)+12
    SET_LIGHT 0,#PURPLE
    BGMPLAY 2,144,80
   ENDIF
   SPVAR ID,2,SPVAR(ID,2)-4096
   RETURN
  ENDIF

  '炎攻撃処理 ***
  IF H && SPP(ID,14) && PER(50) THEN
   CSPOFS ID OUT X,Y
   CSPOFS 0 OUT PX,PY
   D=DEG(ATAN(PY-Y,PX-X))
   IF !(D MOD 45) THEN
    SET_LIGHT ID,RGB(255,63,0)
    BGMPLAY 3,162,80
    VSYNC 8
    SET_LIGHT 0,RGB(255,63,0)
    ATTACK ID,0
    RETURN
   ENDIF
  ENDIF
 ENDIF

 FF=SPP(ID,2) && PER(67)
 IF !FF && !KRN[ID] && MATTACK(ID) THEN
  IF SPUSED(ID) THEN CANIM ID
  RETURN
 ENDIF
 MMOVE ID,FF
 CANIM ID
END

'モンスター移動処理 ***
DEF MMOVE ID,FF
VAR I,A,B,V,X,Y,MX,MY,DX[8],DY[8],TV[0],DS[0]
VAR PX,PY,H,RM
 COPY DX,@DDX
 COPY DY,@DDY
 CSPOFS ID OUT X,Y

 IF FF || KRN[ID] THEN
  'ふらふら処理 ***
  REPEAT
   INC A
  UNTIL !CMOVE(ID,RND(8)) || A>7
  RETURN
 ENDIF

 IF SPP(ID,5) && GLIKE(ID) THEN RETURN

 IF !SPVAR(ID,1) THEN
  IF TL[X,Y] THEN
   'ルート巡回処理 ***
   V=((SPVAR(ID,0) DIV 2)*2-2) AND 7
   MX=X+DX[V]
   MY=Y+DY[V]
   REPEAT
    WHILE !HCHK(MX,MY) || !TL[MX,MY]
     V=V+2 AND 7
     MX=X+DX[V]
     MY=Y+DY[V]
     INC A
     IF A>7 THEN BREAK
    WEND
    INC B
    IF B>7 || A>7 THEN BREAK
   UNTIL !CMOVE(ID,V)
  ELSE
   '巡回ルート外 ***
   REPEAT
    INC A
   UNTIL !CMOVE(ID,RND(8)) || A>7
  ENDIF
 ELSE
  '追跡処理 ***
  CSPOFS 0 OUT PX,PY
  V=SPVAR(ID,0)
  FOR I=0 TO 7
   V=V+1 AND 7
   MX=X+DX[V]
   MY=Y+DY[V]
   IF HCHK(MX,MY) THEN
    A=PX*8-MX*8
    B=PY*8-MY*8
    PUSH TV,V
    PUSH DS,SQR(POW(A,2)+POW(B,2))
   ENDIF
  NEXT
  IF LEN(TV) THEN
   A=-1
   SORT DS,TV
   REPEAT
    INC A
   UNTIL A>LEN(TV)-1 || !CMOVE(ID,TV[A])
   IF DS[0]>50 THEN SPVAR ID,1,0
  ENDIF
 ENDIF
END

'モンスター攻撃判定 ***
DEF MATTACK(ID)
VAR I,X,Y,DX[8],DY[8],PX,PY,F,MX,MY,SH
 IF !SPUSED(0) THEN RETURN 1
 COPY DX,@DDX
 COPY DY,@DDY
 CSPOFS ID OUT X,Y
 CSPOFS 0 OUT PX,PY
 FOR I=0 TO 7
  MX=X+DX[I]
  MY=Y+DY[I]
  F=!KCHK(X,Y,I)
  IF MX==PX && MY==PY && F THEN BREAK
 NEXT
 IF I==8 THEN RETURN 0
 SH=SPHITRC(64,127,MX*8+4,MY*8+4,1,1)
 IF SH>-1 THEN RETURN 0
 ATTACK ID,0
 RETURN 1
END

'モンスター発生処理 ***
DEF POP_MONSTER
VAR X,Y,A,PX,PY
 IF !(CNT MOD 64) THEN
  REPEAT
   RNDLOCATE OUT X,Y
   CSPOFS 0 OUT PX,PY
   INC A
  UNTIL M[X,Y]!=M[PX,PY] || A>255
  SET_CHR X,Y,MNSTBL[RND(LEN(MNSTBL))]
 ENDIF
END

'モンスターのプレイヤー感知処理 ***
DEF AWAKE ID
VAR V=45,B,I
 B=(RNG1==18)+(RNG2==18)
 IF B==1 THEN V=11 ELSEIF B==2 THEN V=4
 IF !PER(V) THEN RETURN
 FOR I=0 TO 3:BREPEAT I,16,3:NEXT
 BREPEAT 5,16,3
 SET_LIGHT ID,RGB(127,63,0)
 BGMPLAY 3,137,80
 SLP[ID]=0
 AC[ID]=1
END
'--------------------------------------------
DEF GLIKE(ID)
VAR I,J,X,Y,RM,H,GL[0],PX,PY,V,MX,MY,A,B
VAR DX[8],DY[8],DS[0],TV[0]


 CSPOFS ID OUT X,Y
 RM=M[X,Y]
 IF RM==9 THEN RETURN 0

 H=SPHITRC(64,127,X*8,Y*8,1,1)
 IF H>-1 && !SPVAR(H,0) THEN RETURN 1

 FOR J=Y1[RM] TO Y2[RM]
  FOR I=X1[RM] TO X2[RM]
   H=SPHITRC(64,127,I*8,J*8,1,1)
   IF H>-1 && !SPVAR(H,0) THEN
    IF SPHITRC(1,63,I*8,J*8,1,1)==-1 THEN
     PUSH GL,H
    ENDIF
   ENDIF
  NEXT
 NEXT

 IF !LEN(GL) THEN RETURN 0

 COPY DX,@DDX
 COPY DY,@DDY

 CSPOFS GL[0] OUT PX,PY
 V=SPVAR(ID,0)
 FOR I=0 TO 7
  V=V+1 AND 7
  MX=X+DX[V]
  MY=Y+DY[V]
  IF HCHK(MX,MY) THEN
   A=PX*8-MX*8
   B=PY*8-MY*8
   PUSH TV,V
   PUSH DS,SQR(POW(A,2)+POW(B,2))
  ENDIF
 NEXT
 IF LEN(TV) THEN
  A=-1
  SORT DS,TV
  REPEAT
   INC A
  UNTIL A>LEN(TV)-1 || !CMOVE(ID,TV[A])
  IF DS[0]>50 THEN SPVAR ID,1,0
 ENDIF

 RETURN 1
END
'--------------------------------------------
'攻撃処理 ***
DEF ATTACK ID,TG
VAR I,DM,D1,D2,D3,D4,HT,MNB,F

 BGMPLAY 1,131-!!ID,80

 '攻撃先起こし処理 ***
 IF SLP[TG] THEN SLP[TG]=0
 IF SPP(TG,5) THEN SPVAR TG,2,SPVAR(TG,2)-32
 IF SPP(TG,15) THEN
  SPVAR TG,2,SPVAR(TG,2)-32768
  SPCHR TG,20
 ENDIF

 IF !ID THEN
  '与ダメージ算出 ***
  DM=DICE(PHR,PAT)+STRAT()
  INC DM,LV/2+DEX/2-(!!RNG1+!!RNG2)/2
  DM=CEIL(DM)
  HT=60+PHR*3+LV+DEX*2-!!RNG1-!!RNG2
  IF WZ THEN HT=999
 ELSE
  '被ダメージ算出 ***
  MNB=SPVAR(ID,3)
  RESTORE "@MAT"+STR$(MNB)
  READ D1,D2,D3,D4
  DM=DICE(D1,D2)+DICE(D3,D4)
  DM=CEIL(DM/100*(100-PDF*3))
  IF TKM[ID] THEN DM=TKM[ID]
  HT=MNSHR[MNB]-LV*2-DEX*2+!!RNG1+!!RNG2
 ENDIF

 '命中判定 ***
 IF PER(HT) && HP[TG] THEN
  SET_DPOP TG,-DM
  DEC HP[TG],DM
  IF SPP(ID, 3) THEN ICE
  IF SPP(ID, 4) THEN POISON
  IF SPP(ID, 7) THEN ACID
  IF SPP(ID, 9) THEN TSUKAMI ID
  IF SPP(ID,10) THEN LVDOWN
  IF SPP(ID,13) THEN DRAIN
  IF SPP(ID, 6) && GSTEAL(ID) THEN RETURN
  IF SPP(ID, 8) && THEFT(ID) THEN RETURN
  IF ID THEN LST=SPVAR(ID,3)
  IF HP[TG]<=0 THEN
   HP[TG]=0
   IF !ID THEN
    SET_LIGHT TG,#RED
    ADDEXP SPVAR(TG,3)
    BLOOD TG
    F=1
    BEEP 13
    'つかみ回復処理 ***
    IF TKM[TG] THEN
     DMV=0
     SET_LIGHT 0,#LIME
     BGMPLAY 2,155,80
    ENDIF
   ENDIF
  ENDIF
 ELSE
  BGMPLAY 1,135-!!ID,80
 ENDIF
 AC[ID]=1
 FOR I=0 TO 3:BREPEAT I,16,3:NEXT
 BREPEAT 5,16,3
 IF !ID THEN
  COLOR TPAL[4]
  LP 41,26,""*8
  LP 41,27," "*8
  COLOR TPAL[7]
  LP 41,26,EMN$[SPVAR(TG,3)]
  MTR$ 41,27,HP[TG],MHP[TG],#YELLOW,#RED
 ENDIF
 IF F THEN SPCLR TG
 VSYNC 8
END

'経験値増加処理 ***
DEF ADDEXP ID
VAR I,A=RND(8)+3
 IF EX>99999999 THEN EX=99999999
 IF LV>20 THEN RETURN
 INC EX,MNSEX[ID]
 WHILE EX>=NEX
  'レベルアップ処理 ***
  BGMPLAY 7,254,80
  INC LV
  DP "Welcome to Lv"+STR$(LV)
  INC HP[0],A
  INC MHP[0],A
  RESTORE @LEVEL
  FOR I=0 TO LV
   PEX=NEX
   READ NEX
  NEXT
 WEND
END

'凍結攻撃 ***
DEF ICE
VAR A
 SET_LIGHT 0,#CYAN
 IF RNG1==26 || RNG2==26 THEN RETURN
 IF PER(12) THEN RETURN
 A=99-(ST*1.5)-(LV+DEX)*4-PDF*5-(MHP[0]/3)
 IF FLOOR(A)<10 THEN RETURN
 IF !PER(FLOOR(A)) THEN RETURN
 BGMPLAY 3,152,80
 IF !FLZ THEN
  DP "Frozen"
  FLZ=RND(5)+4
 ENDIF
 IF !PER(FLOOR(A)) THEN RETURN
 HP[0]=0
END

'毒攻撃 ***
DEF POISON
VAR A
 IF ST<4 THEN RETURN
 SET_LIGHT 0,#MAGENTA
 IF RNG1==23 || RNG2==23 THEN RETURN
 IF PARM==13 THEN RETURN
 A=71-(PDF*6)
 IF LV+DEX>8 THEN DEC A,(LV+DEX-8)*6
 IF !PER(A) THEN RETURN
 BGMPLAY 3,150,80
 DP "Poisoned"
 DEC ST
END

'金貨盗み ***
DEF GSTEAL(ID)
VAR I,A
 IF !GLD || !PER(90) THEN RETURN 0
 A=FLR*(RND(21)+10)
 IF GLD<A THEN A=GLD
 DEC GLD,A
 DP STR$(A)+" Gold stolen"
 VSYNC 8
 FOR I=0 TO 3:BREPEAT I,16,3:NEXT
 SET_LIGHT ID,#YELLOW
 BGMPLAY 3,154,80
 SPCLR ID
 RETURN 1
END

'つかみ ***
DEF TSUKAMI ID
 IF FYU THEN RETURN
 INC TKM[ID]
 IF DMV THEN RETURN
 DMV=1
 SET_LIGHT 0,#OLIVE
 BGMPLAY 3,144,80
 DP "Trapped"
END

'レベルさげ ***
DEF LVDOWN
VAR I,A=RND(8)+3
 IF !PER(20) || LV<6 THEN RETURN
 SET_LIGHT 0,#PURPLE
 BGMPLAY 7,253,80
 DP "Level lowered"
 DEC LV
 DEC MHP[0],A
 IF HP[0]>MHP[0] THEN HP[0]=MHP[0]
 RESTORE @LEVEL
 FOR I=0 TO LV
  PEX=NEX
  READ NEX
 NEXT
 EX=NEX-1
END

'ドレイン ***
DEF DRAIN
VAR A=RND(3)
 IF !PER(40) THEN RETURN
 SET_LIGHT 0,#PURPLE
 BGMPLAY 3,151,80
 DP "Stat(s) drained"
 IF A==0 || A==2 THEN
  DEC ST
  IF RND(2) THEN DEC MST
 ENDIF
 IF A==1 || A==2 THEN
  DEC HP[0]
  DEC MHP[0]
 ENDIF
END

'サビ ***
DEF ACID
VAR I,VV,HR,AT,FL
 SET_LIGHT 0,#GRAY
 IF RNG1==27 || RNG2==27 THEN RETURN 'ヲ
 IF !PARM || PDF<2 THEN RETURN
 IF PARM==11 THEN RETURN
 FOR I=0 TO LEN(ITM)-1
  SPLIT ITMV[I] OUT VV,HR,AT,FL
  IF ITMG[ITM[I]]==3 && FL AND 4 THEN
   IF FL AND 8 THEN RETURN
   ITMV[I]=MERGE(VV,HR-1,AT,FL)
  ENDIF
 NEXT
 BEEP 101
 DP "Armor rusted"
 DEC PDF
END

'アイテム盗み ***
DEF THEFT(ID)
VAR I,LST[0],VV,HR,AT,FL,T
 IF RNG1==25 || RNG2==25 THEN RETURN 0
 IF !PER(85) || !LEN(ITM) THEN RETURN 0
 FOR I=0 TO LEN(ITM)-1
  SPLIT ITMV[I] OUT VV,HR,AT,FL
  IF !(FL AND 4) THEN PUSH LST,I
 NEXT
 IF !LEN(LST) THEN RETURN 0
 T=LST[RND(LEN(LST))]
 DP INAME$(ITM[T],ITMV[T])+" stolen"
 FOR I=T TO LEN(ITM)-2
  ITM[I]=ITM[I+1]
  ITMV[I]=ITMV[I+1]
 NEXT
 I=POP(ITM)
 I=POP(ITMV)
 SET_LIGHT ID,#YELLOW
 BGMPLAY 4,166,80
 SPCLR ID
 RETURN 1
END
'--------------------------------------------
'プレイヤーステータス初期化 ***
DEF PLAYER_INIT
VAR I

 GPAGE 0,SPPAGE()
 GFILL 0,0,215,15,#BLACK
 GFILL 224,0,295,7,0
 GPUTCHR 0,0,"@KEBSHIROZLCQANYFTWPXUMVGJD"
 GPUTCHR 0,8,"äkebshirozlcqanyftwpxumvgjd"
 GPUTCHR 224,0,"*:)]=!?/'"
 GPAGE 0,0

 FLR   =0
 FOD   =1250
 MFOD  =1250
 LV    =1
 ST    =16
 MST   =16
 EX    =0
 NEX   =10
 PEX   =0
 HP[0] =12
 MHP[0]=12
 KRN[0]=0
 MMK   =0
 FLZ   =0
 DMV   =0
 DEX   =0
 GLD   =0
 MIE   =0
 MOF   =0
 FYU   =0
 KSK   =0
 PWEP  =3
 PARM  =12
 PHR   =3
 PAT   =4
 PDF   =4
 RNG1  =0
 RNG2  =0
 MMK   =0
 GKK   =0
 LST   =-1
 KRN[0]=0

 COPY ITMN$,KIN$
 COPY ITMNS$,KINS$
 FILL IINS,0
 FOR I=0 TO 17
  IINS[I]=1
 NEXT

 FOR I=0 TO 255
  SWAP RING$[RND(25)],RING$[RND(25)]
 NEXT

 FOR I=0 TO 255
  SWAP POTION$[RND(27)],POTION$[RND(27)]
 NEXT

 FOR I=0 TO 255
  SWAP SCROLL$[RND(12)],SCROLL$[RND(12)]
 NEXT

 FOR I=0 TO 255
  SWAP WAND$[RND(20)],WAND$[RND(20)]
 NEXT
'''''''''ヲ
 FOR I=18 TO 64:IRND[I]=RND(10)+1:NEXT
 FOR I=18 TO 28
  ITMN$[I]=RING$[I-18]
  ITMNS$[I]=RING$[I-18]+"s" 
 NEXT
 FOR I=29 TO 42
  ITMN$[I]=POTION$[I-29]
  ITMNS$[I]=POTION$[I-29]+"s"
 NEXT
 FOR I=43 TO 54
  ITMN$[I]=SCROLL$[I-43]
  ITMNS$[I]=SCROLL$[I-43]+"s"
 NEXT
 FOR I=55 TO 64
  ITMN$[I]=WAND$[I-55]
  ITMNS$[I]=WAND$[I-55]+"s"
 NEXT

 ITM=DIMCLR()
 ITMV=DIMCLR()

 PUSH ITM,1
 PUSH ITMV,MERGE(1,0,0,0)

 PUSH ITM,12
 PUSH ITMV,MERGE(1,1,0,4)

 PUSH ITM,3
 PUSH ITMV,MERGE(1,1,1,4)

 PUSH ITM,6
 PUSH ITMV,MERGE(1,1,0,0)

 PUSH ITM,8
 PUSH ITMV,MERGE(RND(11)+20,0,0,0)
'ヲ
' PUSH ITM,64
' PUSH ITMV,MERGE(RND(11)+2,0,0,1)

' PUSH ITM,49
' PUSH ITMV,MERGE(RND(11)+25,0,0,0)

' FOR I=0 TO 9
' PUSH ITM,I+38
' PUSH ITMV,MERGE(2,0,0,1)
' NEXT
END
'--------------------------------------------
'キャラクタ設置 ***
DEF SET_CHR X,Y,ID
VAR R
 IF !ID THEN
  R=0
  SPSET R,0
 ELSE
  SPSET 1,63,ID OUT R
  IF R==-1 THEN RETURN
  SPFUNC R,"MONSTER"
  DEC ID
  SPVAR R,2,MNSSP[ID] '特殊行動フラグ
  SPVAR R,3,ID        'モンスター番号
  HP[R]=MNSHP[ID]     'モンスター残りHP
  MHP[R]=HP[R]        'モンスター最大HP
  KRN[R]=0            '混乱状態
  TKM[R]=0            'つかみ状態
  MZM[R]=0            '感知フラグ
  SLP[R]=MSCK(ID)     '睡眠状態
 ENDIF
 SPOFS R,X*8,Y*8,-5
 SPCOL R,0,0,1,1
 CANIM R
END

'アイテム設置 ***
DEF SET_ITEM X,Y,A,B
VAR R
 SPSET 64,127,ITMG[A]+28 OUT R
 IF R==-1 THEN RETURN
 SPOFS R,X*8,Y*8,0
 SPVAR R,0,A
 SPVAR R,1,B
 SPCOL R,0,0,1,1
 SPFUNC R,"ITEM"
 SPCOLOR R,0
 IF SPHITSP(R,128) || LT[X,Y] THEN
  IF GKK THEN
   SPCOLOR R,#YELLOW
  ELSE
   SPCOLOR R,#CYAN
  ENDIF
 ENDIF
END

'アイテム表示変更処理 ***
DEF ITEM
VAR ID=CALLIDX,F
 IF MMK THEN SPCOLOR ID,0
 IF SPHITSP(ID,128) THEN
  SPCOLOR ID,#CYAN
  IF GKK THEN SPCOLOR ID,#YELLOW
 ENDIF
END

'キャラクタアニメ変更 ***
DEF CANIM ID
VAR CH,A,F,G,SCL=RGB(255,127,0),H,C
 SPCHR ID OUT CH
 SPCOLOR ID OUT C
 CH=CH MOD 64
 IF SLP[ID] THEN
  SPCHR ID,CH
 ELSE
  IF !(SPCHK(ID) AND 8) THEN
   SPANIM ID,3,16,CH,16,CH+64,0
  ENDIF
 ENDIF
 '視界判定 ***
 F=MIE || !SPP(ID,11)
 G=(RNG1==26) || (RNG2==26)
 H=SPHITSP(ID,128)
 IF MOF || H && (F || G) THEN
  A=HP[ID]/MHP[ID]*255
  IF KRN[ID] THEN
   SPCOLOR ID,#MAGENTA
  ELSEIF SLP[ID]==1 THEN
   IF !(SPCHK(ID) AND 64) THEN
    SPCOLOR ID,RGB(255,A,A)
    SPANIM ID,6,-32,SCL,-32,#WHITE,0
   ENDIF
  ELSEIF SLP[ID]==2 THEN
   SPCOLOR ID,SCL
  ELSE
   SPCOLOR ID,RGB(255,A,A)
  ENDIF
  IF ID && GKK THEN SPCOLOR ID,#YELLOW
  IF H THEN SPVAR ID,1,1
  IF SPP(ID,15) THEN
   SPCHR ID,28+(FLR MOD 8)
   SPCOLOR ID,#CYAN
  ENDIF
 ELSE
  IF SPP(ID,15) && C==#CYAN THEN RETURN
  MZM[ID]=1
  SPCOLOR ID,0
 ENDIF
END

'キャラクタ移動 ***
DEF CMOVE(ID,V)
VAR X,Y,MX,MY,DX[8],DY[8],SH,F=1
 COPY DX,@DDX
 COPY DY,@DDY
 CSPOFS ID OUT X,Y
 MX=X+DX[V]
 MY=Y+DY[V]
 SH=SPHITRC(64,127,MX*8,MY*8,8,8)
 IF SH>-1 && SPVAR(SH,0)==50 THEN F=0
 IF !ID THEN F=1
 IF HCHK(MX,MY) && !KCHK(X,Y,V) && F THEN
  SPOFS ID,MX*8,MY*8
  SPVAR ID,0,V
  RETURN 0
 ELSE
  RETURN 1
 ENDIF
END

'移動先衝突判定 ***
DEF HCHK(X,Y)
VAR H,F,SH
 H=SPHITRC(0,63,X*8,Y*8,1,1)==-1
 F=M[X,Y]!=255
 RETURN (H && F)
END

'壁ひっかかり判定 ***
DEF KCHK(X,Y,V)
VAR R,A,B,C,D
 A=M[X,Y-1]==255
 B=M[X+1,Y]==255
 C=M[X,Y+1]==255
 D=M[X-1,Y]==255
 IF V==1 && (A || B) THEN R=1
 IF V==3 && (B || C) THEN R=1
 IF V==5 && (C || D) THEN R=1
 IF V==7 && (D || A) THEN R=1
 RETURN R
END

'行動速度チェック ***
DEF TCHK(ID)
 IF SLP[ID] THEN RETURN 0
 IF AC[ID] && ID>0 THEN RETURN 0
 IF SPP(ID,0) && SCNT!=0 THEN RETURN 0
 IF !SPP(ID,1) && (SCNT MOD 2) THEN RETURN 0
 RETURN 1
END

'SPチェック ***
DEF SPP(ID,N)
VAR SP=SPVAR(ID,2)
 RETURN !!(SP AND POW(2,N))
END

'モンスターの睡眠状態をせってい ***
DEF MSCK(ID)
VAR R
 REPEAT
  R=RND(3)
 UNTIL MSLP[ID] AND POW(2,R)
 RETURN R
END
'--------------------------------------------
'HPの変動値を表示 ***
DEF SET_DPOP ID,V
VAR R,X,Y,CL
 IF V==0 THEN RETURN
 IF V> 99 THEN V= 99
 IF V<-99 THEN V=-99
 IF SGN(V)==-1 THEN CL=#RED ELSE CL=#CYAN
 SPOFS ID OUT X,Y
 INC X,RND(7)-3
 SPSET 256,511,128+ABS(V) OUT R
 IF R==-1 THEN RETURN
 SPOFS R,X,Y,-10
 SPANIM R,0,JPOP(X,Y),1
 SPANIM R,6,8,#YELLOW,8,CL,-32,0,1
 SPFUNC R,"SPCLEAR"
END

'アニメーションが終わったSPを開放 ***
DEF SPCLEAR
VAR ID=CALLIDX
 IF !(SPCHK(ID) AND 64) THEN SPCLR ID
END

'ジャンプアニメ処理 ***
DEF JPOP(X,Y)
VAR I,R[0],PY=-4-RND(4),LY=Y
 REPEAT
  PUSH R,1
  PUSH R,X
  PUSH R,Y+PY
  INC PY,0.5
 UNTIL Y+PY>LY
 RETURN R
END

'エフェクト処理 ***
DEF SET_LIGHT ID,C
VAR R,X,Y
 IF !SPUSED(ID) THEN RETURN
 CSPOFS ID OUT X,Y
 SPSET 256,511,256 OUT R
 IF R==-1 THEN RETURN
 SPOFS R,X*8+4,Y*8+4,-5
 SPANIM R,4,-15,360,0
 SPANIM R,5,1,0.5,0.5,-16,1,1,-32,2,2,1
 SPANIM R,6,1,C,-64,0,1
 SPFUNC R,"SPCLEAR"
END

'エフェクト処理2 ***
DEF SET_EF ID,C
VAR R,X,Y
 CSPOFS ID OUT X,Y
 SPSET 256,511,263 OUT R
 IF R==-1 THEN RETURN
 SPOFS R,X*8,Y*8,-5
 SPANIM R,6,1,C,-64,0,1
 SPFUNC R,"SPCLEAR"
END

'まほうじん表示 ***
DEF SET_MCIRCLE ID
VAR I,R,X,Y,C=RGB(0,0,255,0)
 CSPOFS ID OUT X,Y
 SPSET 256,511,261 OUT R
 IF R==-1 THEN RETURN
 SPOFS R,X*8+4,Y*8+4,-5
 SPCOLOR R,#YELLOW
 SPANIM R,6,-16,#RED,-16,#BLUE,-32,C,1
 SPFUNC R,"SPCLEAR"
END
'--------------------------------------------
'マップ初期化 ***
DEF MAKE_DUNGEON
VAR RX1=1,RY1=1,RX2=39,RY2=29
VAR I,J,A,B,C,D,E,F,G,H,X,Y,S,SM,MX,CH$,SD$,K
DIM SZ[0],CX[0],CY[0],QX[0],QY[0],CL
DIM DX[4],DY[4],ITM[67],ITMCHK[8]

 FADE #BLACK,30
 VSYNC 30
 VISIBLE 0,0,0
 COPY DX,@DX:COPY DY,@DY
 CLS
 GCLS
 SPCLR
 IF AML() THEN DEC FLR ELSE INC FLR
 IF FLR>99 THEN FLR=99
 FILL M  ,255:FILL TL ,0:FILL LT ,0
 FILL MCL,15 :FILL MC$," "
 X1=DIMCLR():X2=DIMCLR():Y1=DIMCLR()
 Y2=DIMCLR():CX=DIMCLR():CY=DIMCLR()
 QX=DIMCLR():QY=DIMCLR():MNSTBL=DIMCLR()

 DMV =0 '####
 MOF =0
 MIE =0
 CNT =0
 SCNT=0

 IF !FLR THEN
  VISIBLE 1,1,1
  RETURN
 ENDIF

 PUSH X1,RX1:PUSH X2,RX2:PUSH Y1,RY1
 PUSH Y2,RY2:PUSH SZ,0

 REPEAT
  SORT SZ,X1,X2,Y1,Y2
  RX1=POP(X1):RX2=POP(X2):RY1=POP(Y1)
  RY2=POP(Y2):S  =POP(SZ)

  F=RND(2)
  IF F  && RX2-RX1<20 THEN F=!F
  IF !F && RY2-RY1<20 THEN F=!F

  IF F THEN
   X=((RX2-RX1) DIV 2)+RX1
   FOR I=RY1 TO RY2:M[X,I]=8:NEXT
   PUSH X1,RX1
   PUSH X2,X
   PUSH Y1,RY1
   PUSH Y2,RY2
   PUSH SZ,(X-RX1)*(RY2-RY1)
   PUSH X1,X+1
   PUSH X2,RX2
   PUSH Y1,RY1
   PUSH Y2,RY2
   PUSH SZ,(RX2-X)*(RY2-RY1)
  ELSE
   Y=((RY2-RY1) DIV 2)+RY1
   FOR I=RX1 TO RX2:M[I,Y]=8:NEXT
   PUSH X1,RX1
   PUSH X2,RX2
   PUSH Y1,RY1
   PUSH Y2,Y
   PUSH SZ,(RX2-RX1)*(Y-RY1)
   PUSH X1,RX1
   PUSH X2,RX2
   PUSH Y1,Y+1
   PUSH Y2,RY2
   PUSH SZ,(RX2-RX1)*(RY2-Y)
  ENDIF
 UNTIL SZ[LEN(SZ)-1]<150 || !RND(8)

 FOR I=0 TO LEN(X1)-1
  REPEAT
   RX1=X1[I]
   RX2=X2[I]
   RY1=Y1[I]
   RY2=Y2[I]
   INC RX1,1+RND((RX2-RX1) DIV 2)
   INC RY1,1+RND((RY2-RY1) DIV 2)
   DEC RX2,2+RND((RX2-RX1) DIV 2)
   DEC RY2,2+RND((RY2-RY1) DIV 2)
   A=RX2-RX1
   B=RY2-RY1
   SM=MIN(A,B)
   MX=MAX(A,B)
  UNTIL SM>2

  IF RND(2) THEN 
   RX2=RX1+SM+(RND((MX-SM)) DIV 3)*(B==SM)
   RY2=RY1+SM+(RND((MX-SM)) DIV 3)*(A==SM)
  ENDIF

  X1[I]=RX1
  X2[I]=RX2
  Y1[I]=RY1
  Y2[I]=RY2

  FOR Y=RY1 TO RY2
   FOR X=RX1 TO RX2
    M[X,Y]=I
   NEXT
  NEXT

  X=RND(RX2-RX1-1)+RX1+1
  Y=RND(RY2-RY1-1)+RY1+1
  IF I THEN
   A=0
   REPEAT
    F=0
    X=RND(RX2-RX1-1)+RX1+1
    Y=RND(RY2-RY1-1)+RY1+1
    FOR J=0 TO LEN(CX)-1
     IF X==CX[J] || Y==CY[J] THEN F=1
    NEXT
    INC A
   UNTIL !F || A==255
  ENDIF
  PUSH CX,X
  PUSH CY,Y
  TL[CX[I],CY[I]]=1
 NEXT

 FOR Y=1 TO 28
  FOR X=1 TO 48
   F=0
   FOR I=0 TO 3
    IF M[X+DX[I],Y+DY[I]]==8 THEN
     F=F OR POW(2,I)
    ENDIF
   NEXT
   IF F==15 THEN
    PUSH QX,X
    PUSH QY,Y
    FOR I=0 TO 3
     PUSH QX,X+DX[I]
     PUSH QY,Y+DY[I]
    NEXT
   ENDIF
  NEXT
 NEXT

 FOR I=0 TO LEN(QX)-1
  M[QX[I],QY[I]]=255
 NEXT

 QX=DIMCLR()
 QY=DIMCLR()

 FOR I=0 TO LEN(CX)-1
  FOR J=0 TO 3
   A=0
   B=0
   F=0
   X=CX[I]
   Y=CY[I]
   REPEAT
    INC X,DX[J]
    INC Y,DY[J]
    A=X<2 || Y<2 || X>47 || Y>27
    B=M[X+DX[J],Y+DY[J]]==8
   UNTIL A || B

   IF B THEN 
    M[X+DX[J],Y+DY[J]]=9
    TL[X+DX[J],Y+DY[J]]=1
    X=CX[I]
    Y=CY[I]
    REPEAT
     INC X,DX[J]
     INC Y,DY[J]
     IF M[X,Y]==255 THEN M[X,Y]=9
     TL[X,Y]=1
    UNTIL M[X+DX[J],Y+DY[J]]==9
    PUSH QX,X+DX[J]
    PUSH QY,Y+DY[J]
   ENDIF
  NEXT
 NEXT

 FOR I=0 TO LEN(QX)-1
  FOR J=0 TO 3
   A=0
   B=0
   F=0
   X=QX[I]
   Y=QY[I]
   REPEAT
    INC X,DX[J]
    INC Y,DY[J]
    F=M[X,Y]!=8
    A=X<2 || Y<2 || X>47 || Y>27
    B=M[X+DX[J],Y+DY[J]]==9
   UNTIL A || B || F

   IF B THEN 
    X=QX[I]
    Y=QY[I]
    REPEAT
     INC X,DX[J]
     INC Y,DY[J]
     M[X,Y]=10
    UNTIL M[X+DX[J],Y+DY[J]]==9
   ENDIF

  NEXT
 NEXT

 FOR Y=0 TO 29
  FOR X=0 TO 49
   IF M[X,Y]== 8 THEN M[X,Y]=255
   IF M[X,Y]==10 THEN M[X,Y]=9:TL[X,Y]=1
  NEXT
 NEXT

 FOR Y=0 TO 29
  FOR X=0 TO 49
   IF M[X,Y]==255 THEN
    MC$[X,Y]=" "
    MCL[X,Y]=0
   ENDIF
  NEXT
 NEXT

 FOR I=0 TO LEN(X1)-1
  FOR J=Y1[I] TO Y2[I]
   MC$[X1[I]-1,J]="｜"
   MC$[X2[I]+1,J]="｜"
   MCL[X1[I]-1,J]=7
   MCL[X2[I]+1,J]=7
  NEXT

  A=X2[I]-X1[I]+1
  FOR J=X1[I]-1 TO X2[I]+1
   MC$[J,Y1[I]-1]="-"
   MC$[J,Y2[I]+1]="-"
   MCL[J,Y1[I]-1]=7
   MCL[J,Y2[I]+1]=7
  NEXT
 NEXT

 FOR I=0 TO LEN(X1)-1
  FOR Y=Y1[I] TO Y2[I]
   FOR X=X1[I] TO X2[I]
    MC$[X,Y]="À"
    MCL[X,Y]=4
   NEXT
  NEXT
 NEXT

 FOR Y=0 TO 29
  FOR X=0 TO 49
   IF M[X,Y]==9 THEN
    SD$=MC$[X,Y]
    IF SD$!=" " THEN
     FOR I=0 TO 3
      A=M[X+DX[I],Y+DY[I]]
     NEXT
     CH$="+"
     CL=7
     'IF !RND(12) THEN CH$=SD$
    ELSE
     CH$="Á"
     CL=4
    ENDIF
    MCL[X,Y]=CL
    MC$[X,Y]=CH$
   ENDIF
  NEXT
 NEXT

 RESTORE @MTBL
 FOR I=0 TO 25
  READ A,B
  IF A<=FLR && B>=FLR THEN PUSH MNSTBL,I+1
 NEXT

 RNDLOCATE OUT X,Y
 MC$[X,Y]="%"
 MCL[X,Y]=7

 COLOR TPAL[4]
 FOR I=0 TO 29:LP 40,I,""*10:NEXT
 COLOR TPAL[7]
 LP 41, 1," nROGUE "
 LP 41, 3,"στυ  B  "
 LP 41, 5,"ËÌ"
 LP 41, 6," "*8
 LP 41, 8,"ÏÐ"
 LP 41, 9," "*8
 LP 41,11,"Ó  "
 LP 47,13,"ÉÊ"
 LP 41,12," "*8
 LP 41,14,"ÿþ"
 LP 41,15," "*8
 LP 41,17,"ÑÒ"
 LP 41,18," "*8
 LP 41,20,"Čûüý    "
 LP 41,21,"ŠŽĀ     "
 LP 41,22,"ĂĄĆĊ    "

 VSYNC
 RNDLOCATE OUT X,Y
 SET_CHR X,Y,0
 PRINT_STATUS
 PRINT_DUNGEON 0

 'アイテム設置処理 ***
 IF !AML() THEN
  IF FLR>25 THEN
   RNDLOCATE OUT X,Y
   SET_ITEM X,Y,65,1
  ENDIF

  IF !(FLR MOD 3) THEN
   RNDLOCATE OUT X,Y
   SET_ITEM X,Y,1,1
  ENDIF

  C=RND(8)+1
  FOR I=0 TO C
   RNDLOCATE OUT X,Y
   IRND OUT A,B
   SET_ITEM X,Y,A,B
  NEXT

  C=RND(3)+3
  FOR I=0 TO C
   RNDLOCATE OUT X,Y
   SET_ITEM X,Y,0,RND(FLR*10)+FLR*10
  NEXT
 ENDIF

 'モンスター設置処理 ***
 C=RND(8)+1
 FOR I=0 TO C
  RNDLOCATE OUT X,Y
  SET_CHR X,Y,MNSTBL[RND(LEN(MNSTBL))]
 NEXT

 SPSET 132,27
 SPSCALE 132,50,30
 SPOFS 132,0,0,-19
 SPCOLOR 132,0

 VISIBLE 1,1,1
 FADE #BLACK
 FADE 0,30
END
'--------------------------------------------
'魔除けのしょじ状態をしらべる ***
DEF AML()
VAR I
 FOR I=0 TO LEN(ITM)-1
  IF ITM[I]==65 THEN RETURN 1
 NEXT
 RETURN 0
END
'--------------------------------------------
'部屋内のランダム座標を返す ***
DEF RNDLOCATE OUT X,Y
VAR R,H
 REPEAT
  R=RND(LEN(X1))
  X=X1[R]+RND(X2[R]-X1[R]+1)
  Y=Y1[R]+RND(Y2[R]-Y1[R]+1)
  H=SPHITRC(0,127,X*8,Y*8,1,1)
 UNTIL H==-1 && MC$[X,Y]!="%"
END
'--------------------------------------------
'キャラクタ座標 ***
DEF CSPOFS ID OUT X,Y
 IF !SPUSED(ID) THEN RETURN
 SPOFS ID OUT X,Y
 X=X DIV 8
 Y=Y DIV 8
END
'--------------------------------------------
'ダイスで乱数を返す ***
DEF DICE(A,B)
VAR R,I,SN
 SN=SGN(B)
 FOR I=0 TO A-1
  INC R,RND(ABS(B))*SN+1
 NEXT
 RETURN R
END
'--------------------------------------------
'百分率の成否を返す ***
DEF PER(A)
 IF A>RND(100) THEN RETURN 1 ELSE RETURN 0
END
'--------------------------------------------
'アイテムの性能値を分割 ***
DEF SPLIT V OUT A,B,C,D
 A=V AND 255
 B=(V >>  8) AND 255
 B=B-(B>127)*256
 C=(V >> 16) AND 255
 C=C-(C>127)*256
 D=(V >> 24) AND 255
END
'--------------------------------------------
'アイテムの性能値を併合する ***
DEF MERGE(A,B,C,D)
 IF A>99 THEN A=99
 B=(B+(B<0)*256) << 8
 C=(C+(C<0)*256) << 16
 D=D << 24
 RETURN A+B+C+D
END
'--------------------------------------------
'ダンジョン表示 ***
DEF PRINT_DUNGEON A
VAR X,Y,R,I
 CSPOFS 0 OUT X,Y
 R=M[X,Y]

 IF MMK THEN
  FOR I=0 TO 29
   LOCATE 0,I
   PRINT " "*40;
  NEXT
 ENDIF

 IF A THEN
  PRINT_ROOM 0,0,39,29
 ELSE
  IF R==9 || MMK THEN
   PRINT_ROOM X-1,Y-1,X+1,Y+1
  ELSE
   PRINT_ROOM X1[R]-1,Y1[R]-1,X2[R]+1,Y2[R]+1
  ENDIF
 ENDIF
END

'範囲表示 ***
DEF PRINT_ROOM X1,Y1,X2,Y2
VAR I,J
 FOR J=Y1 TO Y2
  FOR I=X1 TO X2
   LOCATE I,J
   COLOR TPAL[MCL[I,J]]
   PRINT MC$[I,J];
   LT[I,J]=1
  NEXT
 NEXT
 SPSET 128,27
 SPOFS 128,X1*8,Y1*8,-10
 SPCOL 128,0,0,8,8,1
 SPCOLOR 128,RGB(31,0,255,255)
 SPSCALE 128,X2-X1+1,Y2-Y1+1
END
'--------------------------------------------
'プレイヤーステータス表示 ***
DEF PRINT_STATUS

 MTR$ 41, 6,HP[0],MHP[0],#YELLOW,#RED
 MTR$ 41, 9,ST,MST,#LIME,#MAGENTA
 MTR$ 41,12,EX-PEX,NEX-PEX,#CYAN,#BLUE
 MTR$ 41,15,FOD,MFOD,RGB(255,127,0),#MAROON
 MTR$ 41,20,PHR,20,#GREEN,#BLACK
 MTR$ 41,21,PAT,20,#RED,#BLACK
 MTR$ 41,22,PDF,20,#BLUE,#BLACK

 COLOR TPAL[1],TPAL[0]
 LP 42, 6,FORMAT$("%3DÖ%3D",HP[0],MHP[0])
 LP 42, 9,FORMAT$("%3DÖ%3D",ST,MST)
 LP 41,12,FORMAT$("%8D",EX)
 LP 41,15,FORMAT$("%8.0F",CEIL(FOD/MFOD*100))
 COLOR TPAL[7]
 LP 47,3,FORMAT$("%-2D",FLR)
 LP 42,11,STR$(LV,2)
 LP 41,18,FORMAT$("%8.0F",GLD)
 COLOR TPAL[7]
 LP 45,20,FORMAT$("%+4D",PHR)
 LP 45,21,FORMAT$("%+4D",PAT)
 LP 45,22,FORMAT$("%+4D",PDF)
 COLOR TPAL[15],TPAL[0]
END
'--------------------------------------------
'メーター表示 ***
DEF MTR$ X,Y,A,B,C1,C2
VAR R$,C
 IF A>B THEN A=B
 IF A<0 THEN A=0
 X=X*8
 Y=Y*8
 C=CEIL(A/B*63)
 GPAGE 0,0
 GFILL X,Y,X+63,Y+7,C2
 IF C THEN GFILL X+63-C,Y,X+63,Y+7,C1
END
'--------------------------------------------
'配列初期化 ***
DEF DIMCLR()
VAR A[0]
 RETURN A
END
'--------------------------------------------
'キー入力待機 ***
DEF KEYWAIT
 REPEAT
  COLOR TPAL[((MAINCNT DIV 8) MOD 2)*15]
  LOCATE 49,29
  PRINT "";
  VSYNC
 UNTIL BUTTON(2) AND 16
 LOCATE 49,29
 PRINT " ";
 VSYNC
 BGMPLAY 1,140,80
END
'--------------------------------------------
'ゲーム初期化 ***
DEF GAME_INIT
VAR I,J,K,X,Y,A,B,C,A$,B$,C$,E$,FA$,FDD[64]
VAR DX[8],DY[8]

 COPY DX,@DDX
 COPY DY,@DDY

 IF CHKFILE("DAT:SAVE") THEN
  LOAD "DAT:SAVE",HI
 ENDIF

 A$="080C1018202830384048505860687078"
 B$="7C797870686058504840383028201810"
 WAVSET 224,122,0,0,125,A$+B$,33

 ACLS
 VSYNC 30
 BGMSTOP
 VSYNC
 XSCREEN 400,240

 FOR I=0 TO 3:BREPEAT I,16,3:NEXT
 FOR I=4 TO 7:BREPEAT I, 0,0:NEXT
 BREPEAT 5,16,3

 FOR I=0 TO 48
  BGMSETD 128+I,"@SE"+STR$(I)
 NEXT

 FOR I=0 TO 4
  BGMSETD 255-I,"@M"+STR$(I)
 NEXT

 RESTORE @CHRDATA
 WHILE A!=-1
  B$=""
  READ A,A$
  IF A==-1 THEN BREAK
  FA$=""
  FOR I=0 TO 3
   INC FA$,HEX$(ASC(A$[I]),4)
  NEXT
  A$=FA$
  FOR I=0 TO 15
   C$=MID$(A$,I,1)
   FOR J=0 TO 3
    B=I*4+3-J
    FDD[B]=VAL("&H"+C$) >>J AND 1
   NEXT
  NEXT
  FOR I=0 TO 63
   E$="0F"[FDD[I]]*8
   INC B$,E$
  NEXT
  FONTDEF A,B$
 WEND

 GPAGE 0,SPPAGE()
  GCLS
  GFILL 0,0,215,15,#BLACK
  GFILL 29,37,82+8,66,#BLACK '#####
  GFILL 93,37,162,74,#BLACK '#####

  GPUTCHR 0,0,"@KEBSHIROZLCQANYFTWPXUMVGJD"
  GPUTCHR 0,8,"äkebshirozlcqanyftwpxumvgjd"
  GPUTCHR 224,0,"*:)]=!?/'"

  GPUTCHR 0,32,"",#SILVER
  GPUTCHR 0,40,"",#SILVER
  GPUTCHR 0,48,"",#SILVER
  GPUTCHR 0,56,"ικλ"
  GPUTCHR 0,64,"μνξ"
  GPUTCHR 0,72,"οπρ"

  GPUTCHR 216,0,""
  GPUTCHR 216,8,"",#RED
  GPUTCHR 24,32,""
  GPUTCHR 24,40," Item         "
  GPUTCHR 24,48," Pickup Throw "
  GPUTCHR 24,56," Stairs Drop  "
  GPUTCHR 24,64," Rename"
  GPUTCHR 24,72,"         "

  FOR I=0 TO 99
   A$=FORMAT$("%2D",I)
   X=(I MOD 64)*8
   Y=(I DIV 64)*8+16
   B$="ÛÜÝŸÞßàáâã"[VAL(A$[0])]
   C$="ÛÜÝŸÞßàáâã"[VAL(A$[1])]
   IF I<10 THEN B$=""
   GPUTCHR X,Y,B$
   GPUTCHR X+4,Y,C$
  NEXT

  FOR J=17 TO 31
   FOR I=0 TO 511
    IF !GSPOIT(I,J) THEN
     FOR K=0 TO 7
      IF GSPOIT(I+DX[K],J+DY[K])==#WHITE THEN
       GPSET I,J,#BLACK
       BREAK
      ENDIF
     NEXT
    ENDIF
   NEXT
  NEXT

 GPAGE 0,0

 FOR I=0 TO 255
  X=(I MOD 64)*8
  Y=(I DIV 64)*8
  SPDEF I,X,Y,8,8,0,0,&B1
 NEXT
 SPDEF 256,  0,32, 24, 24,12,12,&B100001
 SPDEF 257, 24,32, 72, 40, 0, 0,&B1 '#####
 SPDEF 258,  0,80,400,256, 0, 0,&B1 '#####
 SPDEF 259, 96,32, 72, 48, 0, 0,&B1 '#####
 SPDEF 261,  0,56, 24, 24,12,12,&B100001
 SPDEF 262,  0, 0,  8,  8, 0, 0,&B100001
 SPDEF 263,216, 0,  8,  8, 0, 0,&B100001

 COPY MNSHP,@MHP
 COPY MNSEX,@MEX
 COPY MNSSP,@MSP
 COPY MNSHR,@MHR
 COPY MSLP,@MSLP
 COPY MNSN$,@MNAME
 COPY EMN$,@EMNAME

 I=0
 WHILE CHKLABEL("@ITM"+STR$(I),1)
  RESTORE "@ITM"+STR$(I)
  READ A,A$,B,B$,C
  PUSH ITMG,A
  PUSH KIN$,A$
  PUSH ITMS,B
  PUSH ITAN$,B$
  PUSH KINS$,B$
  PUSH IPRC,C
  INC I
 WEND

 'アイテム出現テーブル ***
 FOR I=1 TO  5:PUSH ITMTBL,1:NEXT
 FOR I=1 TO 10:PUSH ITMTBL,2:NEXT
 FOR I=1 TO  9:PUSH ITMTBL,3:NEXT
 FOR I=1 TO  3:PUSH ITMTBL,4:NEXT
 FOR I=1 TO 30:PUSH ITMTBL,5:NEXT
 FOR I=1 TO 30:PUSH ITMTBL,6:NEXT
 FOR I=1 TO  4:PUSH ITMTBL,7:NEXT

 RESTORE @WST
 FOR I=0 TO 7:READ WHR[I],WAT[I]:NEXT
 COPY ADF,@AST
 COPY ACT$,@ACT

 COPY RING$,@RING
 COPY POTION$,@POTION
 COPY SCROLL$,@SCROLL
 COPY WAND$,@WAND

END
'--------------------------------------------
'設置アイテムのデータを返す ***
DEF IRND OUT ID,V
VAR I,J,R,P[0],A
 A=ITMTBL[RND(LEN(ITMTBL))]
 IF A==1 THEN
  ID=RND(2)+1
  V=1
 ELSEIF A==2 THEN
  ID=RND(8)+3
  V=WEAPON(ID)
 ELSEIF A==3 THEN
  ID=RND(7)+11
  V=ARMOUR()
 ELSEIF A==4 THEN
  ID=RND(11)+18
  V=RING(ID)
 ELSEIF A==5 THEN
  RESTORE @DPOTION
  FOR I=0 TO 13
   READ R
   FOR J=1 TO R
    PUSH P,I+29
   NEXT
  NEXT
  ID=P[RND(LEN(P))]
  V=1
 ELSEIF A==6 THEN
  RESTORE @DSCROLL
  FOR I=0 TO 11
   READ R
   FOR J=1 TO R
    PUSH P,I+43
   NEXT
  NEXT
  ID=P[RND(LEN(P))]
  V=1
 ELSEIF A==7 THEN
  ID=RND(10)+55
  V=WAND(ID)
 ENDIF
END
'--------------------------------------------
'武器の性能を決定 ***
DEF WEAPON(ID)
VAR R,I,V,H,A,F,DC,B
 DC=RND(6)
 V=1
 F=1
 IF ID>6 THEN V=RND(13)+3
 IF DC==0 THEN
  B=RND(3)
  FOR I=0 TO B
   IF RND(2) THEN DEC H ELSE DEC A
  NEXT
  F=3
 ELSEIF DC==1 THEN
  B=RND(3)
  FOR I=0 TO B
   IF RND(2) THEN INC H ELSE INC A
  NEXT
  F=1
 ENDIF
 R=MERGE(V,H,A,F)
 RETURN R
END
'--------------------------------------------
'鎧の性能を決定 ***
DEF ARMOUR()
VAR R,A,B,FL
 A=RND(100)
 FL=1
 IF A<16 THEN
  B=-RND(3)-1
  FL=3
 ELSEIF A>15 && A<33 THEN
  B=RND(3)+1
  FL=1
 ENDIF
 R=MERGE(1,B,0,FL)
 RETURN R
END
'--------------------------------------------
'指輪の性能を決定 ***
DEF RING(ID)
VAR R,VV,HR,AT,FL,A
 FL=1
 IF ID==19 THEN
  FL=FL OR 2
 ELSEIF ID==22 || ID==24 THEN
  HR=RND(2)+1
  IF RND(2) THEN
   HR=HR*-1
   FL=FL OR 2
  ENDIF
 ELSEIF ID==25 THEN
  IF RND(2) THEN FL=FL OR 2
 ENDIF
 R=MERGE(1,HR,0,FL)
 RETURN R
END
'--------------------------------------------
'杖の性能を決定 ***
DEF WAND(ID)
VAR VV,HR,FL
 IF ID==62 THEN
  HR=RND(7)+6
 ELSEIF ID==63 THEN
  HR=RND(5)+5
 ELSE
  HR=RND(4)+3
 ENDIF
 IF ID==64 THEN HR=0
 RETURN MERGE(1,HR,0,1)
END
'--------------------------------------------
'STR修正値 ***
DEF STRAT()
VAR R
 IF ST<6 THEN
  R=ST-5
 ELSEIF  5<ST && ST<15 THEN
  R=1
 ELSEIF 14<ST && ST<18 THEN
  R=3
 ELSEIF 17<ST && ST<19 THEN
  R=4
 ELSEIF 18<ST && ST<21 THEN
  R=5
 ELSEIF 20<ST && ST<22 THEN
  R=6
 ELSEIF 21<ST && ST<31 THEN
  R=7
 ELSE
  R=8
 ENDIF
 RETURN R
END
'--------------------------------------------
DEF BLOOD ID
VAR I,J,X,Y,CL=RGB(95,0,0)
 CSPOFS ID OUT X,Y
 X=X*8-12
 Y=Y*8-12
 IF RND(2) THEN
  GPUTCHR X,Y   ,"ΞΟΠΡ",CL
  GPUTCHR X,Y+ 8,"ΣΤΥΦ",CL
  GPUTCHR X,Y+16,"ΧΨΩΆ",CL
  GPUTCHR X,Y+24,"ΈΉΊΌ",CL
 ELSE
  GPUTCHR X,Y   ,"ΎΏΪΫ",CL
  GPUTCHR X,Y+ 8,"ΐΰς;",CL
  GPUTCHR X,Y+16,"αβγδ",CL
  GPUTCHR X,Y+24,"εζηθ",CL
 ENDIF
END
'--------------------------------------------
'メッセージを表示 ***
DEF DP A$
VAR L=LEN(A$),X,Y,PX,PY
 CSPOFS 0 OUT X,Y
 GPAGE 0,SPPAGE()
  GFILL 168,32,511,39,0 '#####
  GFILL 168,32,168+L*8-1,39,#BLACK '#####
  GPUTCHR 168,32,A$ '#####
 GPAGE 0,0
 PX=X*8-(L DIV 2)*8
 PY=Y*8-16
 IF PX<0 THEN PX=0
 IF PY<0 THEN PY=Y*8+16
 SPDEF 260,168,32,LEN(A$)*8,  8, 0, 0,&B1 '#####
 SPSET 134,260
 SPOFS 134,PX,PY,-9
' SPANIM 134,6,-32,#WHITE,-24,0,1
 SPANIM 134,6,-32,#WHITE,-90,0,1
END
'--------------------------------------------
'テキスト表示 ***
DEF LP X,Y,A$
LOCATE X,Y
PRINT A$;
END
'--------------------------------------------
'テキストつめ表示 *** 'ヲ
DEF LPP X,Y,A$',R,G,B
VAR I,S=0,AA$
 FOR I=0 TO LEN(A$)-1
 AA$=MID$(A$,I,1)
 GPUTCHR X*8+S,Y*8,AA$',RGB(R,G,B)
 IF AA$==" " THEN S=S+4 ELSE S=S+8
 NEXT
END
'--------------------------------------------
'アイテムの表示名を返す ***
DEF INAME$(ID,V)
VAR N$,VV,HR,AT,FL,MC,IG=ITMG[ID]
 SPLIT V OUT VV,HR,AT,FL
 MC=(FL >> 1) AND (3-(FL AND 1))
 IF VV>1 THEN
  N$=STR$(VV)+" "+ITMNS$[ID]
 ELSE
  N$=ITMN$[ID]
 ENDIF

 IF FL AND 8 THEN N$=""+N$
 IF FL AND 1 THEN
  IF IG==2 || IG==3 THEN
   N$=N$+"(?)"
  ENDIF
 ELSE
  IF IG==2 THEN
   N$=N$+FORMAT$("(%+2D,%+2D)",HR,AT)
  ELSEIF IG==3 THEN
   N$=N$+FORMAT$("%+2D",HR)*!!HR
  ELSEIF IG==4 THEN
   N$=N$+FORMAT$("%+2D",HR)*!!HR
  ELSEIF IG==7 THEN
   N$=N$+FORMAT$("(%D)",HR)
  ENDIF
 ENDIF
 IF MC THEN N$=N$+" œÙù"[MC]
 RETURN N$
END
'--------------------------------------------
DEF TITLE
VAR R
 REPEAT
  FADE #BLACK
  CLS
  GCLS
  SPCLR
  SPSET 130,91
  SPOFS 130,152,176,-5

  COLOR TPAL[15]
  LP 20, 3,"nROGUE"
  LP 20, 4,"ver 1.13e"

LP 9, 7,"                             "
LP 9, 8,"                             "
LP 9, 9,"                           "
LP 9,10,"                        "
LP 9,11,"                      "
LP 9,12,"                       "
LP 9,13,"                     "
LP 9,14,"                  "
LP 9,15,"                 "
LP 9,16,"           "
LP 9,17,"           "
LP 9,18,"         "
LP 9,19,"          "

  LP 20,22,"START GAME"
  LP 20,23,"TOP SCORES"
  LP 20,24,"STORY & CONTROLS"
  LP 15,27,"2016 neko800,LohadL."
  'COLOR #TGRAY
  'LP 20,28," Eng LohadL."
  FADE 0,30
  VSYNC 30
  R=SEL(19,22,2+1,0) 'ヲ
  SPCOLOR 130,#RED
  FADE #BLACK,30
  VSYNC 30
  SPCOLOR 130,0
  IF R==1 THEN PRINT_HISCORE 0
  IF R==2 THEN STORY
 UNTIL !R
 CLS
END
'--------------------------------------------
DEF OPENING
VAR I,A$
 FADE #BLACK
 CLS
 RESTORE @G0
 COLOR TPAL[15]
 FOR I=0 TO 20
  READ A$
  LP 8,5+I,A$
 NEXT
 FADE 0,30
 VSYNC 30

 SPSET 0,0
 SPANIM 0,3,16,0,16,64,0
 SPOFS 0,176,256
 SPANIM 0,0,-120,176,136,1
 VSYNC 120
 SPCLR
END
'--------------------------------------------
DEF STORY
VAR I,A$
 FADE #BLACK
 CLS
 RESTORE @STORY
 COLOR TPAL[15]
 FOR I=0 TO 15+3 'ヲ
  READ A$
  GPUTCHR 0,2+I*12,A$ 'ヲ
 NEXT
 FADE 0,30
 VSYNC 30
 KEYWAIT
 FADE #BLACK,30
 VSYNC 30
END
'--------------------------------------------
DEF ENDING
VAR I,A$
 FADE #BLACK
 CLS
 GCLS
 SPCLR
 RESTORE @G0
 COLOR TPAL[15]
 FOR I=0 TO 20
  READ A$
  LP 8,5+I,A$
 NEXT
 FADE 0,30
 VSYNC 30

 SPSET 0,0
 SPANIM 0,3,16,0,16,64,0
 SPOFS 0,176,136
 SPANIM 0,0,-120,176,256,1
 VSYNC 120
 FADE #BLACK,30
 VSYNC 30
END
'--------------------------------------------
DEF GAMEOVER
VAR S$,ID,V,I,Y,VV,HR,AT,FL,P,TP,K$,F=AML()
VAR LY,LNK
 IF HP[0] THEN ENDING
 FADE #BLACK
 CLS
 GCLS
 SPCLR
 IF F && HP[0]>0 THEN
  S$="Got AmuletлNendor and returned"
 ELSEIF LST>-1 && LST<26 THEN
  IF LST==5 THEN
   S$="Iced by "+MNSN$[LST]
  ELSE
   S$="Killed by "+MNSN$[LST]
  ENDIF
  S$=S$+" at B"+STR$(FLR)+"F"
 ELSEIF LST==26 THEN
  S$="Starved to death at B"+STR$(FLR)+"F"
 ENDIF
 IF F && HP[0]<1 THEN S$="Got AлN but "+S$

 LPP 0,0,DATE$+" "+S$
 LP  1,3,STR$(GLD)+" Gold"
 'LP 18,3,""
 'LP 20,3,STR$(GLD)+"枚の金貨"
 LP 39,3,"= "+STR$(GLD*10,8)
 TP=GLD*10

 FOR I=0 TO LEN(ITM)-1
  ID=ITM[I]
  V=ITMV[I]
  SPLIT V OUT VV,HR,AT,FL
  Y=4+I
  COLOR TPAL[15]
  IF (FL AND 1) || !IINS[ID] THEN COLOR TPAL[7]
  IF (FL AND 4) THEN COLOR TPAL[5]
  IF (FL AND 6)==6 THEN COLOR TPAL[11]
  'LP  1,Y,INAME$(ID,V)
  COLOR TPAL[15]
  'LP 18,Y,""
  IINS[ID]=1
  ITMN$[ID]=KIN$[ID]
  ITMNS$[ID]=KINS$[ID]
  V=MERGE(VV,HR,AT,FL AND 14)
  LP 1,Y,INAME$(ID,V) '#####
  P=PRICE(I)
  LP 39,Y,"= "+STR$(PRICE(I),8)
  IF F && HP[0] THEN
   INC TP,P
  ELSE
   LY=Y*8+4
   GLINE 49*8-LEN(STR$(P))*8-4,LY,49*8+2,LY
  ENDIF
 NEXT
 LP  1,5+I,"Ç"*48
 K$=FORMAT$("TOTAL SCORE  %D",TP)
 LP 49-LEN(K$),7+I,K$

 FADE 0,30
 VSYNC 30

 KEYWAIT

 LNK=ADDSCORE(TP,S$)
 IF LNK>-1 THEN
  PRINT_HISCORE LNK
  SAVE "DAT:SAVE",HI
 ENDIF

 FADE #BLACK,30
 VSYNC 30
END
'--------------------------------------------
DEF ADDSCORE(NSC,A$)
VAR I,J,CR[0],SC[0],RLV[0],LSTM$[0],R=-1

 INC A$," "*99

 FOR I=0 TO 9
  PUSH CR,I
  PUSH SC,HI[0,I]
  PUSH RLV,HI[1,I]
  PUSH LSTM$,""
  FOR J=2 TO 99
   INC LSTM$[I],CHR$(HI[J,I])
  NEXT
 NEXT

 PUSH CR,10
 PUSH SC,NSC
 PUSH RLV,LV
 PUSH LSTM$,A$

 RSORT SC,RLV,LSTM$,CR

 FOR I=0 TO 9
  IF CR[I]==10 THEN R=I
  HI[0,I]=SC[I]
  HI[1,I]=RLV[I]
  FOR J=2 TO 99
   HI[J,I]=ASC(LSTM$[I][J-2])
  NEXT
 NEXT

 RETURN R
END
'--------------------------------------------
DEF PRINT_HISCORE A
VAR I,J,Y,CT
VAR SC[0],NAME$[0],MSG$[0],RLV[0],LSTM$[0]
 FADE #BLACK
 CLS
 GCLS
 SPCLR

 FOR I=0 TO 9
  PUSH SC,HI[0,I]
  PUSH RLV,HI[1,I]
  PUSH LSTM$,""
  FOR J=2 TO 99
   INC LSTM$[I],CHR$(HI[J,I])
  NEXT
 NEXT

 COLOR TPAL[11]
 LP 1,1,"TOP 10 SCORES"
 FOR I=0 TO 9
  IF RLV[I]>0 THEN
   Y=5+I*2
   COLOR TPAL[6+(I==A)]
   LP  0,Y,FORMAT$("%2D:%8D",I+1,SC[I])
   LPP 12,Y,LSTM$[I] 'ヲ
   INC CT
  ENDIF
 NEXT

 IF !CT THEN RETURN
 FADE RGB(0,0,0,0),30
 VSYNC 30
 KEYWAIT
 FADE #BLACK,30
 VSYNC 30
END
'--------------------------------------------
DEF PRICE(IN)
VAR R,ID=ITM[IN],V=ITMV[IN],VV,HR,AT,FL
VAR G=ITMG[ID]
 SPLIT V OUT VV,HR,AT,FL
 R=IPRC[ID]
 IF G==2 THEN R=R+HR*85+AT*85
 IF G==3 THEN R=R+HR*85+!!(FL AND 8)*200
 IF G==4 THEN R=R*(HR+1)
 IF G==7 THEN R=R*(HR+1)
 IF R<10 THEN R=10
 R=R*VV
 RETURN R
END
'--------------------------------------------
@DX  DATA  0, 1,0,-1
@DY  DATA -1, 0,1, 0
@DDX DATA  0, 1,1, 1,0,-1,-1,-1
@DDY DATA -1,-1,0, 1,1, 1, 0,-1
'---
@DPOTION
DATA 10,10,10,10,10,5,10,10,10,10,10,5,4,4
@DSCROLL
DATA 6,6,5,5,15,8,7,5,9,9,6,5
'---
@LEVEL
DATA        0,       10,       20,       40
DATA       80,      160,      320,      640
DATA     1300,     2600,     5200,    10000
DATA    20000,    40000,    80000,   160000
DATA   320000,  1000000,  3333333,  6666666
DATA 10000000
'---
@WST
DATA 2,3,3,4,4,5,1,1,1,1,1,2,1,3,1,4
'---
@AST
DATA 2,3,4,5,6,6,7
'---
@DSORT
DATA 0,4,1,5,2,6,3,7
'---
@MAT0  DATA 1, 4,0,0:@MAT1  DATA 1, 3,0,0
@MAT2  DATA 1, 3,0,0:@MAT3  DATA 1, 3,0,0
@MAT4  DATA 1, 3,1,2:@MAT5  DATA 0, 0,0,0
@MAT6  DATA 2, 5,0,0:@MAT7  DATA 1, 5,0,0
@MAT8  DATA 1, 7,0,0:@MAT9  DATA 0, 0,0,0
@MAT10 DATA 3, 3,2,5:@MAT11 DATA 3, 5,0,0
@MAT12 DATA 0, 0,0,0:@MAT13 DATA 0, 0,0,0
@MAT14 DATA 3, 6,0,0:@MAT15 DATA 0, 0,0,0
@MAT16 DATA 4, 6,1,4:@MAT17 DATA 2, 8,0,0
@MAT18 DATA 5, 4,0,0:@MAT19 DATA 4, 6,0,0
@MAT20 DATA 4,10,0,0:@MAT21 DATA 4, 4,3,7
@MAT22 DATA 1,14,1,4:@MAT23 DATA 5, 5,5,5
@MAT24 DATA 3,10,4,5:@MAT25 DATA 4, 6,4,9
'---
@MHP
DATA  10, 11,10, 8,15,15,19,25,21,25,32, 30
DATA  25, 25,35,73,75,45,76,42,90,97,55,115
DATA 132,145
'DATA  1, 1,1,1,1,1,1,2,2,2,3, 3
'DATA  2, 2,3,7,7,4,7,4,9,9,5,11
'DATA 13,14 'ロ
'---
@MEX
DATA   2,  2,  2,  2,  3,   5,  10,   5, 8
DATA  21, 15, 20, 20, 39,  50,  91, 125,55
DATA 120,110,200,250,350,2000,3000,5000
'---
@MHR
DATA 60,65,60,50,67,68,70,70,69,75,85, 78,100
DATA 75,80,80,75,75,80,75,85,85,85,85,100,100
'---
@MSP
DATA &H0002,&H0000,&H0004,&H0000,&H0000
DATA &H0008,&H0010,&H0020,&H0000,&H0040
DATA &H0000,&H0000,&H0080,&H0100,&H0000
DATA &H0200,&H0000,&H0400,&H0804,&H8000
DATA &H0000,&H1000,&H2000,&H0002,&H0000
DATA &H4000
'---
@MSLP
DATA &B011,&B010,&B101,&B011,&B011,&B100
DATA &B011,&B011,&B011,&B100,&B101,&B011
DATA &B011,&B100,&B101,&B001,&B011,&B101
DATA &B101,&B100,&B011,&B011,&B011,&B011
DATA &B101,&B010
'---
@MTBL
DATA  1, 6, 1, 7, 1, 8, 1, 9, 1,10, 2,11, 3
DATA 12, 4,13, 5,14, 6,16, 7,16, 8,17, 9,18
DATA 10,19,11,20,12,99,13,22,14,23,15,24,16
DATA 25,17,26,18,99,19,99,20,99,21,99,21,99
'---
@MNAME
DATA "Kestral","Emu","Bat","Slime"
DATA "Hobgoblin","IceMonster","Rattlesnake","Orc"
DATA "Zombie","Leprechaun","Centaur","Quagga"
DATA "Aquator","Nymph"   ,"Yeti"  ,"Flytrap"
DATA "Troll","Wraith"   ,"Phantom" ,"Xeroc"
DATA "Unicorn","Medusa" ,"Vampire","Griffin"
DATA "Jabberwock","Dragon"
'---
@EMNAME
DATA "āăąć"   ,"ĹĻ"    ,"ĞĠ"    ,"śşť"
DATA "ŚŞŤŪŮ"  ,"ŰŲŹŻƒ" ,"ńņňőŕř","īį"
DATA "ΛΜΝ"    ,"ċčďēĕ" ,"ĢĦĪĮ"  ,"ļľł"
DATA "ĔĖĘĮ"   ,"ġģħ"   ,"ΙΚ"    ,"ĽŁŃŅ"
DATA "ūůű"    ,"ΓΔΕ"   ,"ıĳķĺ"  ,"ΖΗΘ"
DATA "ųźżǆ"   ,"ėęğ"   ,"ǳțΑΒ"  ,"ŇŐŔŘ"
DATA "ǅǲȚšž"  ,"İĲĶ"
'---
@ITM0  DATA 0,"Gold"     ,0,"Gold",   0
@ITM1  DATA 1,"Food"     ,1,"Food rations",10
@ITM2  DATA 1,"Cowberry" ,1,"Cowberries",10
@ITM3  DATA 2,"Mace"     ,0,"Maces", 360
@ITM4  DATA 2,"Longsword",0,"Longswords",470
@ITM5  DATA 2,"Greatsword",0,"Greatswords",580
@ITM6  DATA 2,"Bow"       ,0,"Bows", 150
@ITM7  DATA 2,"Dart"      ,1,"Darts",   8
@ITM8  DATA 2,"Arrow"     ,1,"Arrows",  15
@ITM9  DATA 2,"Dagger"    ,1,"Daggers",  27
@ITM10 DATA 2,"Ninjastar" ,1,"Ninjastars",35
@ITM11 DATA 3,"Leather Armor",0,"Leather Armors",300
@ITM12 DATA 3,"Armor",0,"Armors", 300
@ITM13 DATA 3,"Scale Mail",0,"Scale Mails",400
@ITM14 DATA 3,"Chain Mail",0,"Chain Mails",500
@ITM15 DATA 3,"Banded Mail",0,"Banded Mails",600
@ITM16 DATA 3,"Splint Mail",0,"Splint Mails",600
@ITM17 DATA 3,"Plate Mail",0,"Plate Mails",700
@ITM18 DATA 4,"RingлStealth"                             ,0,"RingsлStealth",250
@ITM19 DATA 4,"RingлTeleportation"                       ,0,"RingsлTeleportation",100
@ITM20 DATA 4,"RingлRegeneration"                        ,0,"RingsлRegeneration",255
@ITM21 DATA 4,"RingлDigest Slowly"                       ,0,"RingsлDigest Slowly",295
@ITM22 DATA 4,"RingлStrength"                            ,0,"RingsлStrength",200
@ITM23 DATA 4,"RingлAntipoison"                          ,0,"RingsлAntipoison",250
@ITM24 DATA 4,"RingлDexterity"                           ,0,"RingsлDexterity",250
@ITM25 DATA 4,"RingлDeter Theft"                         ,0,"RingsлDeter Theft",25
@ITM26 DATA 4,"RingлAntifreeze"                          ,0,"RingsлAntifreeze", 300
@ITM27 DATA 4,"RingлAntirust"                            ,0,"RingsлAntirust", 290
@ITM28 DATA 4,"RingлAdornment"                           ,0,"RingsлAdornment", 500
@ITM29 DATA 5,"PдежлStrength"                            ,1,"PдежsлStrength", 100
@ITM30 DATA 5,"PдежлAntidote"                            ,1,"PдежsлAntidote", 250
@ITM31 DATA 5,"PдежлHealing"                             ,1,"PдежsлHealing", 100
@ITM32 DATA 5,"PдежлExtra Healing"                       ,1,"PдежsлExtra Healing", 200
@ITM33 DATA 5,"PдежлPoison"                              ,1,"PдежsлPoison",  10
@ITM34 DATA 5,"PдежлLevel Up"                            ,1,"PдежsлLevel Up", 300
@ITM35 DATA 5,"PдежлBlindness"                           ,1,"PдежsлBlindness",  10
@ITM36 DATA 5,"PдежлHallucination"                       ,1,"PдежsлHallucination",  25
@ITM37 DATA 5,"PдежлDetect Mon"                          ,1,"PдежsлDetect Mon", 100
@ITM38 DATA 5,"PдежлDetect Items"                        ,1,"PдежsлDetect Items", 100
@ITM39 DATA 5,"PдежлConfusion"                           ,1,"PдежsлConfusion",  10
@ITM40 DATA 5,"PдежлLevitation"                          ,1,"PдежsлLevitation",  80
@ITM41 DATA 5,"PдежлHaste Self"                          ,1,"PдежsлHaste Self", 150
@ITM42 DATA 5,"PдежлSee Invisible"                       ,1,"PдежsлSee Invisible", 145
@ITM43 DATA 6,"SбвглAntirust"                            ,1,"SбвгsлAntirust", 505
@ITM44 DATA 6,"SбвглSleep"                               ,1,"SбвгsлSleep", 200
@ITM45 DATA 6,"SбвглBless Weapon"                        ,1,"SбвгsлBless Weapon", 235
@ITM46 DATA 6,"SбвглBless Armor"                         ,1,"SбвгsлBless Armor", 235
@ITM47 DATA 6,"SбвглIdentify"                            ,1,"SбвгsлIdentify", 175
@ITM48 DATA 6,"SбвглTeleport Self"                       ,1,"SбвгsлTeleport Self", 190
@ITM49 DATA 6,"SбвглFreezing"                            ,1,"SбвгsлFreezing",  25
@ITM50 DATA 6,"SбвглScare Mon"                           ,1,"SбвгsлScare Mon", 610
@ITM51 DATA 6,"SбвглUncurse"                             ,1,"SбвгsлUncurse", 210
@ITM52 DATA 6,"SбвглCreate Mon"                          ,1,"SбвгsлCreate Mon", 100
@ITM53 DATA 6,"SбвглAggravate Mon"                       ,1,"SбвгsлAggravate Mon",  25
@ITM54 DATA 6,"SбвглMagic Mapping"                       ,1,"SбвгsлMagic Mapping", 180
@ITM55 DATA 7,"WandлTeleport Mon"                        ,0,"WandsлTeleport Mon",  25
@ITM56 DATA 7,"WandлSlow Mon"                            ,0,"WandsлSlow Mon",  50
@ITM57 DATA 7,"WandлConfuse Mon"                         ,0,"WandsлConfuse Mon",  45
@ITM58 DATA 7,"WandлInvisiblity"                         ,0,"WandsлInvisiblity",   8
@ITM59 DATA 7,"WandлPolymorph"                           ,0,"WandsлPolymorph",  55
@ITM60 DATA 7,"WandлHaste Mon"                           ,0,"WandsлHaste Mon",   2
@ITM61 DATA 7,"WandлHypnotize Mon"                       ,0,"WandsлHypnotize Mon",  25
@ITM62 DATA 7,"WandлFire"                                ,0,"WandsлFire",  20
@ITM63 DATA 7,"WandлCancellation"                        ,0,"WandsлCancellation",  20
@ITM64 DATA 7,"WandлVanity"                              ,0,"WandsлVanity",   0
@ITM65 DATA 8,"AmuletлNendor"                            ,0,"AmuletsлNendor",5000
'---
@RING
DATA "Agate Ring","Brass Ring","Amethyst Ring","Carnelian Ring"
DATA "Diamond Ring","Emerald Ring","Germanium Ring","Granite Ring"
DATA "Garnet Ring","Jade Ring","Quartz Ring","Lazuli Ring"
DATA "Moonstone Ring","Obsidian Ring","Onyx Ring","Opal Ring"
DATA "Pearl Ring","Peridot Ring","Ruby Ring","Sapphire Ring"
DATA "Tigereye Ring","Topaz Ring","Platinum Ring","Taaffeite Ring"
DATA "Zircon Ring"
@POTION
DATA "Amber Pдеж","Aqua Pдеж","Black Pдеж","Blue Pдеж
DATA "Brown Pдеж","Clear Pдеж","Crimson Pдеж","Cyan Pдеж
DATA "Ecru Pдеж","Indigo Pдеж","Green Pдеж","Gray Pдеж
DATA "Magenta Pдеж","Orange Pдеж","Pink Pдеж","Plaid Pдеж
DATA "Purple Pдеж","Red Pдеж","Beige Pдеж","Tan Pдеж
DATA "Teal Pдеж","Maroon Pдеж","Khaki Pдеж
DATA "Fuchsia Pдеж","Violet Pдеж","White Pдеж","Yellow Pдеж"
@SCROLL
DATA "Arek Sбвг","Behil Sбвг","Coph Sбвг","Druhl Sбвг"
DATA "Foobar Sбвг","Gritoo Sбвг","Kini Sбвг","Mihln Sбвг"
DATA "Poxi Sбвг","Swerr Sбвг","Timst Sбвг","Zihr Sбвг"
@WAND
DATA "Redwood Wand","Balsa Wand","Bamboo Wand","Birch Wand"
DATA "Cedar Wand","Cypress Wand","Dogwood Wand","Elm Wand"
DATA "Hemlock Wand","Holly Wand","Kukui Wand","Mahogany Wand"
DATA "Maple Wand","Oaken Wand","Pine Wand","Spruce Wand"
DATA "Walnut Wand","Teak Wand","Poplar Wand","Pecan Wand"

'---
@ACT  DATA "Huh?","Eat","Equip","Equip","Equip","Quaff"
      DATA "Read","Zap","Gaze"
'---
@SE0  DATA "@147@E127,124,0,127 L64O1G<GA<DF"
      DATA "G>>GA<<<G",0
@SE1  DATA "@147@E127,124,0,127 L24O3[CGB]3V"
      DATA "80CGBV60CGBV40CGB",0
@SE2  DATA "@147@E127,124,0,127 L96O4 C>G+<F"
      DATA "+>G+<G+>G+<B",0
@SE3  DATA "@147@E127,124,0,127 L96O4 G<C>G<"
      DATA "D>G<G",0
@SE4  DATA "@147@E127,124,0,127 L24O4 CG",0
@SE5  DATA "@147@E127,124,0,127 L24O5 GE-FRB"
      DATA "-",0
@SE6  DATA "@147@E127,124,0,127 L24O5F>F>F",0
@SE7  DATA "@147@E127,124,0,127 L24O6G>G>G",0
@SE8  DATA "@147@E127,112,0,127 L24O3 C_>G<R"
      DATA "C_<C_>C",0
@SE9  DATA "@147@E127,124,0,127L48O6 A>A<A",0
@SE10 DATA "@147@E127,123,50,120 L24O4 AAA_<"
      DATA "<A",0
@SE11 DATA "@147@E127,110,30,127 O4 B48<B4_>"
      DATA ">B",0
@SE12 DATA "@224@E127,0,127,127O7V127A32",0
@SE13 DATA "@147@E127,120,0,127 L48O3 G<FG",0
@SE14 DATA "@147@E127,120,0,127 L48O3CDE-F",0
@SE15 DATA "@147@E127,109,0,127O3E32<E4_<E",0
@SE16 DATA "@147@E127,109,0,127 O2L64 V80DV9"
      DATA "0FV99D<DCV95DCV90C>B<V85C>BV80BA"
      DATA "V75BAV70AGV65AGV60GFV50GV40F",0
@SE17 DATA "@147@E127,109,0,127 O4L64 [FB]8V"
      DATA "95FBV90FBV85FBV80FBV70FBV60FBV50"
      DATA "FBV40FBV30FBV20FBV10FB",0
@SE18 DATA "@147@E127,109,0,127 O4L32 ECFG>R"
      DATA "BRR<C",0
@SE19 DATA "@147@E127,109,0,127 O4L48 ECF+G+"
      DATA "GFA+B<DF+A+",0
@SE20 DATA "@147@E127,119,0,127 O4L24 GDG<DC"
      DATA ">BA8",0
@SE21 DATA "@147@E127,121,0,127 O4L24 CE-B->"
      DATA "B-<E-A",0
@SE22 DATA "@147@E127,120,0,127 L64O2 C<C>CD"
      DATA "+D>G+GB",0
@SE23 DATA "@147@E127,120,0,127 O3L32 D+CC+C"
      DATA "EC+DC+",0
@SE24 DATA "@147@E127,126,0,127 O6L24 GCDFGD"
      DATA "E-B-",0
@SE25 DATA "@147@E127,122,0,127 O4L24 CDEGB<"
      DATA "C",0
@SE26 DATA "@147@E127,109,0,127 O3L24 C16_<C"
      DATA "&C_<<<C8",0
@SE27 DATA "@147@E127,125,0,127 O5L24AFDFC",0
@SE28 DATA "@147@E127,110,0,127 O3L8 C_<C>G_"
      DATA "<GC_<C>G_<G",0
@SE29 DATA "@147@E127,110,0,127 O4L8 B-_<B-D"
      DATA "_<D",0
@SE30 DATA "@147@E127,119,0,127 O4L24 GGG<DR"
      DATA ">GA",0
@SE31 DATA "@147@E127,107,0,127 O4L7 G_>G<D_"
      DATA ">DB_>B<G_>G",0
@SE32 DATA "@147@E127,107,0,127 O3L32 G<G>F<"
      DATA "G>E-<G>D<G",0
@SE33 DATA "@147@E127,107,0,127 O4L64 CC+DD+"
      DATA "C+DD+E",0
@SE34 DATA "@147@E127,107,0,127 O3L64 CDC+D+"
      DATA "DEC+D+CD>B<C+>A+<C>ABV90ABV80ABV"
      DATA "70ABV60ABV50ABV40ABV30ABV20ABV10"
      DATA "AB",0
@SE35 DATA "@147@E127,107,0,127 O3L32 FCFCA-"
      DATA "DA-D",0
@SE36 DATA "@147@E127,107,0,127O4L32Q3AAA",0
@SE37 DATA "@151@E127,100,0,127O4L64GRGRG2",0
@SE38 DATA "@147@E127,100,0,127 O4L64 FDFD>B"
      DATA "-GB-G<A-E-A-E-",0
@SE39 DATA "@147@E127,100,0,127 O4@MON@MP19,"
      DATA "19,19,0D4_>D",0
@SE40 DATA "@147@E127,109,0,122 O4L32 G_>G<R"
      DATA "V60G_>G<RV40G_>G",0
@SE41 DATA "@147@E127,122,0,127 O4L64 @MON@M"
      DATA "P29,19,9,0C+<C+>D+<D+>E<E>F+<F+>"
      DATA "G+<G+>A<AC<C>C+<C+>V80C+<C+>V70C"
      DATA "+<C+>V60C+<C+>V50C+<C+>V40C+<C+>"
      DATA "V30C+<C+>V20C+<C+>",0
@SE42 DATA "@147@E127,125,0,127 O5L16 CEFGA<"
      DATA "CEF",0
@SE43 DATA "@147@E127,120,50,99O3D8_<<<<D",0
@SE44 DATA "@147@E127,123,0,127O4L32GCDEG<DC"
      DATA 0
@SE45 DATA "@147@E127,123,0,127 O5L32 GC>GDG"
      DATA "<G",0
@SE46 DATA "@147@E127,123,0,127 O5L16 F+G+AB"
      DATA "AG+F+V80F+V60F+V40F+V20F+",0
@SE47 DATA "@149@E117,110,0,127 O4L64 @MON@M"
      DATA "P19,19,19,0GFGA4_<<<A",0
@SE48 DATA "@147@E127,110,0,127 O4L64 C+C>BA"
      DATA "+B<CC+",0
'---
@M0   DATA "T150@147@E127,120,40,127L8 R4 O4"
      DATA "FD>A<FC+E>AGA+<DGA+<C+>A+AG+ A16"
      DATA "G+16<C+8D2.",0
@M1   DATA ":0 T120@147@E127,120,40,127L16 O"
      DATA "5RFAFD+RFRGRA2&A8:1 @147@E127,12"
      DATA "0,40,127L16 O5RC>BA+ARA+R<D+RF2&"
      DATA "F8R4",0
@M2   DATA ":0 T120@147@E127,120,40,127L16 O"
      DATA "5RFFFD+RDRC+RC2&C8:1 @147@E127,1"
      DATA "20,40,127L16 O5RC>BA+G+RF+RARG+2"
      DATA "&G+8R4",0
@M3   DATA "@147@E127,120,40,127L16O5 CDEG<C"
      DATA "R>CRC48E48G48<C4...R4",0
@M4   DATA ":0@147@E127,120,40,127L8 O3 CC+D"
      DATA "D+RD+CGF+2.:1@147@E127,120,40,12"
      DATA "7L8 O4RFRGRA+G<DC+2.",0
'---
@G0
DATA "                              "
DATA "                              "
DATA "                            "
DATA "                         "
DATA "                       "
DATA "                        "
DATA "                      "
DATA "                   "
DATA "                  "
DATA "            "
DATA "            "
DATA "         "
DATA "          "
DATA "           "
DATA "             "
DATA "                  "
DATA "                     "
DATA "                  "
DATA "                   "
DATA "                    "
DATA "                           "
'---
@STORY
DATA "STORY"
DATA "You have just graduated from the Fighter's Guild."
DATA "As a final test you are sent to the Dungeon where"
DATA "you must return with the Amulet of Nendor. You"
DATA "are given an enchanted mace, an armor crafted"
DATA "by elves, and enough food to reach the entrance."
DATA "Thus begins the trecherous sojourn in the bowels"
DATA "of the deep, monster-infested Dungeon..."
DATA ""
DATA "CONTROLS & SYMBOLS"
DATA ":Move             :Move diagonally"
DATA ":Action menu          :Rest        :Sort items"
DATA "@:You       +:Door     #:Passage     %:Staircase"
DATA "*:Gold      ::Food     ):Weapon      ]:Armor"
DATA "!:Potion    =:Ring     ?:Scroll      /:Wand"
DATA "':AmuletлNendor(B26F+)    A-Z:26 monster species"
DATA "Weapon(+2,+1):Čûüý+2,ŠŽĀ+1   Armor+1:ĂĄĆĊ+1"
DATA "Wand(4):Can zap 4 times   Ù:Equipped   œ:Cursed"
DATA "ù:Unremovable without lifting curse"
 
'---
@CHRDATA
DATA &H021,"㠸㠰　　",&H022,"汬⑈  ",&H023,"泾汬泾氀"
DATA &H024,"ၼ큼ᙼက",&H025,"⹊踀",&H026,"烘瘀"
DATA &H027,"㠸ࠐ  ",&H028,"ᠰ恠怰᠀",&H029,"〘ఌఘ　"
DATA &H02A,"ᡚ㰘㱚᠀",&H02C,"  【 ",&H02D," |  "
DATA &H02E,"  0　",&H02F,"Ȅࠐ⁀耀",&H030,"|컎컎簀"
DATA &H031,"㡸㠸㠸︀",&H032,"糎๼︀",&H033,"糎฼໎簀"
DATA &H034,"᰼糜ᰀ",&H035,"ﻀﰎ໎簀",&H036,"糀ﳎ컎簀"
DATA &H037,"︎᰸㠸㠀",&H038,"糎칼컎簀",&H039,"糎컎縎簀"
DATA &H03A,"᠀᠘ ",&H03B,"᠀᠈က",&H03C,"ఘだ〘ఀ"
DATA &H03D," 簀簀 ",&H03E,"怰᠌ᠰ怀",&H03F,"糎฼㠀㠀"
DATA &H05B,"㰰〰〰㰀",&H05D,"㰌ఌఌ㰀",&H05C,"昼ᠼᠼ᠀"
DATA &H05E,"㡬였  ",&H05F,"   ︀",&H060,"〘   "
DATA &H07B,"᰸㣰㠸ᰀ",&H07D,"瀼灰",&H07C,"〰　〰　"
DATA &H07E,"犺鰀  ",&H07F,"聀‐ࠄȀ",&H040,"㡄銪驊␀"
DATA &H041,"糎컎ﻎ츀",&H042,"ﳎ컼컎ﰀ",&H043,"糦簀"
DATA &H044,"ﳎ컎컎ﰀ",&H046,"ﻠ",&H045,"ﻠ︀"
DATA &H047,"绠縀",&H048,"컎컾컎츀",&H049,"︸㠸㠸︀"
DATA &H04A,"Ḏฎ໎簀",&H04B,"",&H04C,"︀"
DATA &H04D,"웮﻾훆였",&H04E,"컮﻾츀",&H04F,"糎컎컎簀"
DATA &H050,"ﳦﳠ",&H051,"糦稀",&H052,"ﳦﳬ"
DATA &H053,"绠ฎﰀ",&H054,"︸㠸㠸㠀",&H055,"컎컎컎簀"
DATA &H056,"컎컎永က",&H057,"웆훾ﻮ였",&H058,"蛎簸磬였"
DATA &H059,"컎칼㠸㠀",&H05A,"︎᰸烠︀",&H061," ﰎ绎縀"
DATA &H062,"ﳦﰀ",&H063," 绠縀",&H064,"ฎ绎컎縀"
DATA &H065," 糦ﻠ簀",&H066,"Ḹ㣾㠸㠀",&H067," 绎칾๼"
DATA &H068,"ﳦ",&H069,"㠀砸㠸︀",&H06A,"฀Ḏฎ칼"
DATA &H06B,"",&H06C,"砸㠸㠸︀",&H06D," ﳚ"
DATA &H06E," ﳦ",&H06F," 糎컎簀",&H070," ﳦﳠ"
DATA &H071," 绎컎縎",&H072," ",&H073," 绠簎ﰀ"
DATA &H074," 㣾㠸Ḁ",&H075," 컎컎縀",&H076," 簸က"
DATA &H077," 웖ﻮ䐀",&H078," 칾㣼",&H079," 컎칾๼"
DATA &H07A," ︜㡰︀",&H030,"|컎컎簀",&H031,"㡸㠸㠸︀"
DATA &H032,"糎๼︀",&H033,"糎฼໎簀",&H034,"᰼糜ᰀ"
DATA &H035,"ﻀﰎ໎簀",&H036,"糀ﳎ컎簀",&H037,"︎᰸㠸㠀"
DATA &H038,"糎칼컎簀",&H039,"糎컎縎簀",&H0C0,"   က"
DATA &H0C1,"(簨簨 ",&H0C2,"᠀᠀",&H0C3," တတ"
DATA &H0C4," ðတတ",&H0C5,"တဟ  ",&H0C6,"တჰ  "
DATA &H0C7," ÿ  ",&H0C8,"တတတတ",&H0C9," 쒊"
DATA &H0CA," 삠삀蠀",&H0CB," ꂩ꤀",&H0CC," 뀈눀"
DATA &H0CD," ఊఊఀ",&H0CE," 삀耀",&H0CF," 撎䐤였"
DATA &H0D0,"  悀蠀",&H0D1," 悀꺪渀",&H0D2," 쉂䙊"
DATA &H0D3," 肀钔",&H0D4," 郤ꘀ",&H0D5," Ү䒤ꘀ"
DATA &H0D6," ࠐ ",&H0D8," တࠀ",&H152," ࠈက"
DATA &H0D9," ",&H0DA," ⁀退",&H0DB,"  "
DATA &H0DC," 䃀䁀",&H0DD," ",&H178," "
DATA &H0DE," ꂠ ",&H0DF," ",&H0E0," "
DATA &H0E1," † ",&H0E2," ",&H0E3," "
DATA &H0E4,"잻浕斵",&H0E5," 8糎컎",&H0E6,"㠸㠸㣾︀"
DATA &H0E7,"㡸砸㠸",&H0E8,"磠︀",&H0E9,"8糎츎฼"
DATA &H0EA,"㰎໎칼㠀",&H0EB,"8糎츎฼",&H0EC,"︜ᰀ"
DATA &H0ED,"᰼㱼糜",&H0EE,"ฎ໎칼㠀",&H0EF,"þﻀ샸ﰎ"
DATA &H0F0,"컎컎칼㠀",&H0F1,"<糀샸ﳎ",&H0F2,"㠸㠸㠸㠀"
DATA &H0F3,"þ︎ผ᰸",&H0F4,"糎컎칼㠀",&H0F5,"8糎컎칼"
DATA &H0F6,"칾㸎๼砀",&H0F8,"8糎컎컎",&H153,"肠 "
DATA &H0F9," ",&H0FA," 䂤ꘀ",&H0FB," @ꪊ渀"
DATA &H0FC,"  沔鸀",&H0FD," @ꪊ搘",&H0FF," 캊踀"
DATA &H0FE," Ȃ",&H160," 䒮ꘀ",&H17D," 䃠䱔縀"
DATA &H100," ࡈꪌ樀",&H102," 삤꺨였",&H104," ⁄䘀"
DATA &H106," 첢가",&H10A," @怀",&H10C," 䂤ꘀ"
DATA &H10E," 삤삤ꐀ",&H112,"  욮ꈄ",&H114," 䂠ꘂ"
DATA &H116,"  ꚪ",&H118," 䃠乊渀",&H11E," 삠욪케"
DATA &H120," 䃠䁀怀",&H122," 䂤躈昀",&H126," Ў쒤ꘀ"
DATA &H12A,"  檪︀",&H12E,"  悀耀",&H130," 삠ꚨ저"
DATA &H132,"  暮",&H136,"  ",&H139," 캊"
DATA &H13B,"  ꂠ",&H13D," 쒄踁",&H141," Ў꒤䚀"
DATA &H143,"  沔鸀",&H145,"  삠삀",&H147," 悀ꚨ"
DATA &H150," Ʉไ䐀",&H154," ⁄䐀",&H158,"  삠ꀀ"
DATA &H15A," ꂠ글",&H15E," 肀욮숄",&H164," ࠈ"
DATA &H16A," 쁄䁄",&H16E,"  삠ꀀ",&H170," 䩈"
DATA &H172," ๎樀",&H179,"  ",&H17B," Ѯ쐤였"
DATA &H192," @栀",&H1C5," 怠ⰴ",&H1F2," 袈첪찀"
DATA &H21A," @栀",&H161,"  껪",&H17E," ࡈꪌ樀"
DATA &H101," ꂤ캨ꘀ",&H103," Ѯ쐤였",&H105,"  沔鸀"
DATA &H107," 쁀䁀",&H10B," 肄躈",&H10D,"  욨좀"
DATA &H10F," D昀",&H113," 肀욪꼀",&H115,"  겪"
DATA &H117," 꺨ꘀ",&H119," †檪渀",&H11F," `옪케"
DATA &H121," 삠ꪪꐈ",&H123," à갈",&H127," 肀삠ꀀ"
DATA &H12B," ꚨ",&H12F," @ꂀ怀",&H131," 좨첊言"
DATA &H133,"  沪切",&H137," 䃠乊渀",&H13A," àꀀ"
DATA &H13C," ꫪ",&H13E,"  暮",&H142,"  曪⽀"
DATA &H144," 삠욪꼀",&H146," 䓮䑄昀",&H148," 쁄么"
DATA &H151," `찪쨀",&H155," ࠈ檬切",&H159," @怀"
DATA &H15B," 沄䐤츀",&H15F," N๊䨀",&H165," @怀"
DATA &H16B," 䙈䠀",&H16F," ఄ",&H171," 쁀䁀"
DATA &H173," ꂠ겪",&H17A," Dੈ䘀",&H17C,"  "
DATA &H1C6,"  삠ꀀ",&H1F3," ꂠ걔帀",&H21B," à갈"
DATA &H391," @و䠀",&H392," @怀",&H393," ꂠꛨꠀ"
DATA &H394," 悤",&H395," 䣨䱊樀",&H396," ꂤ亨ꘀ"
DATA &H397,"  溊踀",&H398," @ꂀ怀",&H399," ꂤ么䘀"
DATA &H39A," 䃤䁄搀",&H39B," 亊",&H39C," ࣨ가"
DATA &H39D," D่䘀",&H39E," ࠈ ȑ",&H39F,"༿㽿翿"
DATA &H3A0,"胰￿￿",&H3A1,"༟輎耀",&H3A3,"ጁ ȁ̇"
DATA &H3A4,"￿缿뿿￿",&H3A5,"￿￿￿￿",&H3A6,"À"
DATA &H3A7,"܏܇̃ă",&H3A8,"￿￿￿Ｋ",&H3A9,"쒁耈蒀"
DATA &H386,"쀀  ",&H388,"<繾繾㰀",&H389,"̃   "
DATA &H38A,"芈àĀ",&H38C," 삐郀",&H38E,"܏Ἷ㿿"
DATA &H38F,"신￿",&H3AA," ᠼ糾￿",&H3AB,"   胂"
DATA &H390,"缿㼿㼿Ἇ",&H3B0,"￿￿￿￿",&H3C2,"￿￿￿￿"
DATA &H37E,"﫸ﳼ﷼",&H3B1,"܀   ",&H3B2,"￿ｿ罿缿"
DATA &H3B3,"￿￿￿￿",&H3B4,"ﳾ﻾ﻼ",&H3B5," 쀀  "
DATA &H3B6,"羟Ἇ܇̀",&H3B7,"￿￿￾ﰜ",&H3B8,"샀䀀"
DATA &H3BA,"㳛ᠤ⓿䊁",&H3B9,"؈ဿえ",&H3BB,"怐ࣼఒ"
DATA &H3BC,"䡅薂芅䕈",&H3BD,"脀  ",&H3BE,"ኢꅁ䆡ꈒ"
DATA &H3BF,"䠰㼐ࠆĀ",&H3C0,"腂Ｄ␘",&H3C1,"ሌﰈၠ耀"
DATA &H3C3," 쒄踀",&H3C4,"  ",&H3C5,"  悀耀"
DATA &H3C6,"炲﻾먈 ",&H3C7,"᰾㱼᠀",&H3C8,"D糾먐 "
DATA &H3C9,"  㡼︀",&H3AC,"⢸룼縮⠀",&H3AD,"᠘縼ᠸ砀"
DATA &H3AE,"ఈ袨倀",&H3AF,"⠸㹾︸⠀",&H3CC,"တረ氀"
DATA &H3CD,"႖縸᠔ ",&H3CE,"₠繘᠀",&H3CA,"偐瀠穜吀"
DATA &H3CB,"㡔⡼ꨀ",&H410,"ဘ㠼㸘က",&H411,"း㡼ﹼ"
DATA &H412,"䳖搰먀",&H413,"㡔﻾머⠀",&H414,"း呬㠸吀"
DATA &H415,"㡔籄籼吀",&H401,"|籔T簀",&H416,"聠›ﺬ␀"
DATA &H417,"䐸호吸㸀",&H418,"႒簐㠤怀",&H419,"烾ﳼ繾嘀"
DATA &H41A,"瀐砘ᠾⰀ",&H41B,"ѮṾ됀",&H0CC," 뀈뀀"
DATA &H0CB," ꂩ꤀",&H431," 篃쏃笀",&H432," 澙ᤙༀ"
DATA &H433,"㘶㚶뚶㘀",&H434,"珟焀",&H435,"　㎶㘶대"
DATA &H436," 黛鬀",&H43B,"Ю呔␀",   -1,""

