※このプログラムでは、同プロジェクト内の以下のデータファイルを読み込みます。データファイル作成プログラムはコチラ。※ This program loads data from followiing external files. The data file generator program is here.
- DAT:PAL
- DAT:FONT
- DAT:GFX
- DAT:GFF
- DAT:MAP
- DAT:SFX
'
'
'
'
'
'
'
'
'
' Original PICO-8 version is by
' Matt Thorson & Noel Berry
'
' Ported to SMILEBASIC by OBONO
'
'
' How to Play (あそびかた)
'
' :Move (いどう)
' :Jump (ジャンプ)
' :Dash (ダッシュ)
' :Pause (ポーズ)
' +:Back to Title screen
' (タイトルがめんにもどる)
' VARIABLES
OPTION STRICT
' GLOBAL
DIM TM_F ' FRAMES OF PLAYING TIME
DIM TM_S ' SECONDS OF PLAYING TIME
DIM TM_M ' MINUTES OF PLAYING TIME
DIM DEATHS ' DEATHS COUNTER
DIM MAX_JP ' MAX DASH-JUMP COUNT
DIM ST_GM ' IS STARTING GAME
DIM ST_GFL ' FLASHING COUNTER FOR GAME START
DIM ROOM_X ' ROOM X
DIM ROOM_Y ' ROOM Y
DIM NW_BG ' IS NEW BACKGROUND
DIM FREEZE ' FREEZE TIMER
DIM SHAKE ' SCREEN SHAKING TIMER
DIM SHX ' SHAKE X
DIM SHY ' SHAKE Y
DIM RST_RM ' WILL RESTART ROOM
DIM RST_DL ' DELAY OF RESTART ROOM
DIM GT_ICG[30]' GOT FRUIT ARRAY
DIM HS_DSH ' HAS DASHED
DIM SFX_TM ' SFX TIMER
DIM HS_KEY ' HAS KEY
DIM PZ_PLY ' PAUSE PLAYER
DIM KL_PLY ' KILLING PLAYER
DIM FL_BG ' IS FLASHING BACKGROUND
DIM BGM_TM ' MUSIC TIMER
' BUTTONS
DIM K_LF=0 ' LEFT
DIM K_RT=1 ' RIGHT
DIM K_UP=2 ' UP
DIM K_DN=3 ' DOWN
DIM K_JP=4 ' JUMP
DIM K_DS=5 ' DASH
' PLAYER
DIM PLY_MD ' MODE
DIM PLY_X ' X
DIM PLY_Y ' Y
DIM PLY_S ' SPRITE
DIM PLY_FX ' FLIP X
DIM PLY_TX ' TARGET X
DIM PLY_TY ' TARGET Y
DIM PLY_SX ' SPEED X
DIM PLY_SY ' SPEED Y
DIM PLY_RX ' FRACTION X
DIM PLY_RY ' FRACTION Y
DIM PLY_ST ' STATE
DIM PLY_DL ' DELAY
DIM PLY_PJ ' PREVIOUS JUMP BUTTON STATE
DIM PLY_PD ' PREVIOUS DASH BUTTON STATE
DIM PLY_GR ' GRACE
DIM PLY_JB ' JUMP BUFFER
DIM PLY_JP ' AVAILABLE DASH-JUMP COUNT
DIM PLY_DT ' DASH TIME
DIM PLY_DE ' DASH EFFECT TIME
DIM PLY_DX ' DASH TARGET X
DIM PLY_DY ' DASH TARGET Y
DIM PLY_AX ' DASH ACCEL X
DIM PLY_AY ' DASH ACCEL Y
DIM PLY_SA ' SPRITE ANIMATION OFFSET
DIM PLY_WG ' WAS ON GROUND
DIM HAR_X[5] ' HAIR X ARRAY
DIM HAR_Y[5] ' HAIR Y ARRAY
' SPRINGS
DIM SRG_CT ' COUNT
DIM SRG_X[16] ' X
DIM SRG_Y[16] ' Y
DIM SRG_S[16] ' SPRITE
DIM SRG_HI[16]' DISAPPEARING COUNTER
DIM SRG_HF[16]' HIDING COUNTER
DIM SRG_DL[16]' DELAY
' BALLOONS
DIM BLN_CT ' COUNT
DIM BLN_X[8] ' X
DIM BLN_Y[8] ' Y
DIM BLN_S[8] ' SPRITE
DIM BLN_OF[8] ' Y OFFSET
DIM BLN_IY[8] ' INITIAL Y
DIM BLN_TM[8] ' TIMER
' FALL FLOORS
DIM FLR_CT ' COUNT
DIM FLR_X[16] ' X
DIM FLR_Y[16] ' Y
DIM FLR_ST[16]' STATE
DIM FLR_DL[16]' DELAY
' SMOKES
DIM SMK_I ' RING BUFFER INDEX
DIM SMK_X[16] ' X
DIM SMK_Y[16] ' Y
DIM SMK_S[16] ' SPRITE
DIM SMK_SX[16]' SPEED X
DIM SMK_SY[16]' SPEED Y
DIM SMK_FX[16]' FLIP X
DIM SMK_FY[16]' FLIP Y
' FRUIT
DIM ICG_MD ' MODE
DIM ICG_X ' X
DIM ICG_Y ' Y
DIM ICG_SY ' SPEED Y
DIM ICG_IY ' INITIAL Y
DIM ICG_F ' IS FLYING
DIM ICG_ST ' STEP
DIM ICG_XD ' SFX DELAY
' FAKE WALL
DIM WAL_E ' EXIST
DIM WAL_X ' X
DIM WAL_Y ' Y
' KEY
DIM KEY_E ' EXIST
DIM KEY_X ' X
DIM KEY_Y ' Y
DIM KEY_S ' SPRITE
DIM KEY_FX ' FLIP X
' CHEST
DIM CST_E ' EXIST
DIM CST_X ' X
DIM CST_Y ' Y
DIM CST_IX ' INITIAL X
DIM CST_TM ' TIMER
' PLATFORMS
DIM PFM_CT ' COUNT
DIM PFM_X[16] ' X
DIM PFM_Y[16] ' Y
DIM PFM_D[16] ' DIRECTION
' MESSAGE
DIM MSG_E ' EXIST
DIM MSG_X ' X
DIM MSG_Y ' Y
DIM MSG_I ' INDEX
' BIG CHEST
DIM TRB_E ' EXIST
DIM TRB_X ' X
DIM TRB_Y ' Y
DIM TRB_ST ' STATE
DIM TRB_TM ' TIMER
' ORB
DIM ORB_E ' EXIST
DIM ORB_X ' X
DIM ORB_Y ' Y
DIM ORB_SY ' SPEED Y
' FLAG
DIM FLG_E ' EXIST
DIM FLG_X ' X
DIM FLG_Y ' Y
DIM FLG_SC ' SCORE
DIM FLG_V ' RESULT IS SHOWN
' ROOM TITLE
DIM ROOM_TITLE_DL ' DELAY
' CLOUDS
DIM CLD_X[16] ' X
DIM CLD_Y[16] ' Y
DIM CLD_SX[16]' SPEED
DIM CLD_W[16] ' WIDTH
' PARTICLES
DIM PTC_X[24] ' X
DIM PTC_Y[24] ' Y
DIM PTC_S[24] ' SIZE
DIM PTC_SX[24]' SPEED
DIM PTC_D[24] ' WAVE PHASE
DIM PTC_C[24] ' COLOR
' ZATSUYOS
DIM ZTS_X[8] ' X
DIM ZTS_Y[8] ' Y
DIM ZTS_SX[8] ' SPEED X
DIM ZTS_SY[8] ' SPEED Y
' SPRITE ID OFFSET
DIM S_ICG=0 ' 0~ 2
DIM S_WAL=3
DIM S_KEY=4
DIM S_CST=5
DIM S_TRB=6
DIM S_ORB=7
DIM S_PLY=14 ' 8~ 14
DIM S_FLG=15
DIM S_SRG=16 ' 16~ 31
DIM S_BLN=32 ' 32~ 47
DIM S_FLR=48 ' 48~ 63
DIM S_SMK=64 ' 64~ 79
DIM S_PFM=80 ' 80~ 95
DIM S_CLD=96 ' 96~112
DIM S_PTC=112'112~135
DIM S_ZTS=136'136~143
DIM S_BAK=144
' PICO-8 MEMORY
DIM BTN[6] ' BUTTON STATE ARRAY
DIM PAL%[16] ' COLOR PALETTE
DIM GFF%[32] ' SPRITE FLAG (128 / 4)
DIM MAP%[2048] ' MAP (128x32 / 4)
' MAIN LOOP
ACLS
FADE #BLACK
SETUP
INIT_CLOUDS
INIT_PARTICLES
TITLE_SCREEN
WHILE 1
POLL_BTN
UPDATE
DRAW
EXTRA_BTN
VSYNC 2
WEND
END
' INITIALIZE FUNCTIONS
DEF TITLE_SCREEN
DIM I
FOR I=0 TO 29
GT_ICG[I]=FALSE
NEXT
TM_F=0
DEATHS=0
MAX_JP=1
ST_GM=FALSE
ST_GFL=0
NW_BG=FALSE
FREEZE=0
SHAKE=0
RST_RM=FALSE
RST_DL=0
SFX_TM=0
PZ_PLY=FALSE
KL_PLY=0
FL_BG=FALSE
BGM_TM=0
GCLS
MUSIC 40,0,7
LOAD_ROOM 7,3
END
DEF BEGIN_GAME
TM_F=0
TM_S=0
TM_M=0
BGM_TM=0
ST_GM=FALSE
MUSIC 0,0,7
LOAD_ROOM 0,0
END
' GAME STATE FUNCTIONS
DEF LEVEL_INDEX()
RETURN ROOM_X+ROOM_Y*8
END
DEF IS_TITLE()
RETURN LEVEL_INDEX()==31
END
' PLAYER FUNCTIONS
DEF CLEAR_PLAYER
PLY_MD=0
CLEAR_EXTRA_SPRITES S_PLY-6,S_PLY
END
DEF INIT_PLAYER X,Y,MODE
PLY_MD=MODE
PLY_X=X
PLY_Y=Y
IF MODE==1 THEN
SFX 4
PLY_S=3
PLY_TX=PLY_X
PLY_TY=PLY_Y
PLY_Y=128
PLY_SX=0
PLY_SY=-4
PLY_ST=0
PLY_DL=0
CREATE_HAIR
ELSEIF MODE==2 THEN
PLY_PJ=FALSE
PLY_PD=FALSE
PLY_GR=0
PLY_JB=0
PLY_JP=MAX_JP
PLY_DT=0
PLY_DE=0
PLY_DX=0
PLY_DY=0
PLY_AX=0
PLY_AY=0
PLY_SA=0
PLY_WG=FALSE
ENDIF
END
DEF UPDATE_PLAYER
IF PZ_PLY || !PLY_MD THEN RETURN
'-- SPAWN
IF PLY_MD==1 THEN
'-- MOVE
INC PLY_X,PLY_SX
INC PLY_Y,PLY_SY
'-- JUMPING UP
IF PLY_ST==0 THEN
IF PLY_Y < PLY_TY+16 THEN
PLY_ST=1
PLY_DL=3
ENDIF
'-- FALLING
ELSEIF PLY_ST==1 THEN
INC PLY_SY,0.5
IF PLY_SY>0 AND PLY_DL>0 THEN
PLY_SY=0
DEC PLY_DL
ENDIF
IF PLY_SY>0 AND PLY_Y > PLY_TY THEN
PLY_Y=PLY_TY
PLY_SX=0
PLY_SY=0
PLY_ST=2
PLY_DL=5
SHAKE=5
INIT_SMOKE PLY_X,PLY_Y+4
SFX 5
ENDIF
'-- LANDING
ELSEIF PLY_ST==2 THEN
DEC PLY_DL
PLY_S=6
IF PLY_DL<0 THEN
INIT_PLAYER PLY_X,PLY_Y,2
ENDIF
ENDIF
RETURN
ENDIF
MOVE_PLAYER PLY_SX,PLY_SY
'-- PLAYER CONTROL
DIM H_INP=BTN[K_RT]-BTN[K_LF]
'-- SPIKES COLLIDE
IF SPIKES_AT(PLY_X+1,PLY_Y+3,6,5,PLY_SX,PLY_SY) THEN KILL_PLAYER
'-- BOTTOM DEATH
IF PLY_Y>128 THEN KILL_PLAYER
DIM ON_GRD=IS_SOLID(0,1)
DIM ON_ICE=IS_ICE(0,1)
'-- SMOKE PARTICLES
IF ON_GRD && !PLY_WG THEN
INIT_SMOKE PLY_X,PLY_Y+4
ENDIF
DIM JUMP=BTN[K_JP] && !PLY_PJ
PLY_PJ=BTN[K_JP]
IF JUMP THEN
PLY_JB=4
ELSEIF PLY_JB>0 THEN
DEC PLY_JB
ENDIF
DIM DASH=BTN[K_DS] && !PLY_PD
PLY_PD=BTN[K_DS]
IF ON_GRD THEN
PLY_GR=6
IF PLY_JP<MAX_JP THEN
PSFX 54
PLY_JP=MAX_JP
ENDIF
ELSEIF PLY_GR>0 THEN
DEC PLY_GR
ENDIF
DEC PLY_DE
IF PLY_DT>0 THEN
INIT_SMOKE PLY_X,PLY_Y
DEC PLY_DT
PLY_SX=APPR(PLY_SX,PLY_DX,PLY_AX)
PLY_SY=APPR(PLY_SY,PLY_DY,PLY_AY)
ELSE
'-- MOVE
DIM MAXRUN=1,AC=0.6,DC=0.15
IF !ON_GRD THEN
AC=0.4
ELSEIF ON_ICE THEN
AC=0.05
IF H_INP==1-PLY_FX*2 THEN
AC=0.05
ENDIF
ENDIF
IF ABS(PLY_SX)>MAXRUN THEN
PLY_SX=APPR(PLY_SX,SGN(PLY_SX)*MAXRUN,DC)
ELSE
PLY_SX=APPR(PLY_SX,H_INP*MAXRUN,AC)
ENDIF
'-- FACING
IF PLY_SX!=0 THEN PLY_FX=(PLY_SX<0)
'-- GRAVITY
DIM MAXF=2,GRV=0.21
IF ABS(PLY_SY)<=0.15 THEN GRV=GRV*0.5
'-- WALL SLIDE
IF H_INP!=0 && IS_SOLID(H_INP,0) && !IS_ICE(H_INP,0) THEN
MAXF=0.4
IF RND(10)<2 THEN
INIT_SMOKE PLY_X+H_INP*6,PLY_Y
ENDIF
ENDIF
IF !ON_GRD THEN
PLY_SY=APPR(PLY_SY,MAXF,GRV)
ENDIF
'-- JUMP
IF PLY_JB>0 THEN
IF PLY_GR>0 THEN
'-- NORMAL JUMP
PSFX 1
PLY_JB=0
PLY_GR=0
PLY_SY=-2
INIT_SMOKE PLY_X,PLY_Y+4
ELSE
'-- WALL JUMP
DIM WALL_DIR=IS_SOLID(3,0)-IS_SOLID(-3,0)
IF WALL_DIR!=0 THEN
PSFX 2
PLY_JB=0
PLY_SY=-2
PLY_SX=-WALL_DIR*(MAXRUN+1)
IF !IS_ICE(WALL_DIR*3,0) THEN
INIT_SMOKE PLY_X+WALL_DIR*6,PLY_Y
ENDIF
ENDIF
ENDIF
ENDIF
'-- DASH
DIM D_FULL=5
DIM D_HALF=D_FULL*0.70710678118
IF PLY_JP>0 && DASH THEN
INIT_SMOKE PLY_X,PLY_Y
DEC PLY_JP
PLY_DT=4
HS_DSH=TRUE
PLY_DE=10
DIM V_INP=BTN[K_DN]-BTN[K_UP]
IF H_INP!=0 THEN
IF V_INP!=0 THEN
PLY_SX=H_INP*D_HALF
PLY_SY=V_INP*D_HALF
ELSE
PLY_SX=H_INP*D_FULL
PLY_SY=0
ENDIF
ELSEIF V_INP!=0 THEN
PLY_SX=0
PLY_SY=V_INP*D_FULL
ELSE
PLY_SX=1-PLY_FX*2
PLY_SY=0
ENDIF
PSFX 3
FREEZE=2
SHAKE=6
PLY_DX=2*SGN(PLY_SX)
PLY_DY=2*SGN(PLY_SY)
PLY_AX=1.5
PLY_AY=1.5
IF PLY_SY<0 THEN PLY_DY=PLY_DY*.75
IF PLY_SY!=0 THEN
PLY_AX=PLY_AX*0.70710678118
ENDIF
IF PLY_SX!=0 THEN
PLY_AY=PLY_AY*0.70710678118
ENDIF
ELSEIF DASH && PLY_JP<=0 THEN
PSFX 9
INIT_SMOKE PLY_X,PLY_Y
ENDIF
ENDIF
'-- ANIMATION
INC PLY_SA,0.25
IF !ON_GRD THEN
IF IS_SOLID(H_INP,0) THEN
PLY_S=5
ELSE
PLY_S=3
ENDIF
ELSEIF BTN[K_DN] THEN
PLY_S=6
ELSEIF BTN[K_UP] THEN
PLY_S=7
ELSEIF PLY_SX==0 || H_INP==0 THEN
PLY_S=1
ELSE
PLY_S=1+PLY_SA MOD 4
ENDIF
'-- NEXT LEVEL
IF PLY_Y<-4 && PLY_MD==2 THEN
IF LEVEL_INDEX()<30 THEN NEXT_ROOM
ENDIF
'-- WAS ON THE GROUND
PLY_WG=ON_GRD
END
' CHECK COLLISION
DEF COL_PLAYER(X,Y,HX,HY,HW,HH,OX,OY)
DIM R 'HITBOX={X=1,Y=3,W=6,H=5}
R= PLY_MD==2
R=R && PLY_X+7 > X+HX+OX
R=R && PLY_Y+8 > Y+HY+OY
R=R && PLY_X+1 < X+HX+HW+OX
R=R && PLY_Y+3 < Y+HY+HH+OY
RETURN R
END
DEF IS_SOLID(OX,OY)
DIM X=PLY_X
DIM Y=PLY_Y 'HITBOX={X=1,Y=3,W=6,H=5}
DIM R
R= OY>0
R=R && COL_PLATFORMS(X,Y,1,3,6,5,OX,0)<0
R=R && COL_PLATFORMS(X,Y,1,3,6,5,OX,OY)>=0
R=R || SOLID_AT(X+1+OX,Y+3+OY,6,5)
R=R || COL_FALL_FLOORS(X,Y,1,3,6,5,OX,OY)>=0
R=R || COL_FAKE_WALL(X,Y,1,3,6,5,OX,OY)
RETURN R
END
DEF IS_ICE(OX,OY)
RETURN ICE_AT(PLY_X+1+OX,PLY_Y+3+OY,6,5)
END
DEF SOLID_AT(X,Y,W,H)
RETURN TILE_FLAG_AT(X,Y,W,H,0)
END
DEF ICE_AT(X,Y,W,H)
RETURN TILE_FLAG_AT(X,Y,W,H,4)
END
DEF TILE_FLAG_AT(X,Y,W,H,FLAG)
DIM I,IE=MIN(15,(X+W-1)/8)
DIM J,JE=MIN(15,(Y+H-1)/8)
FOR I=MAX(0,FLOOR(X/8)) TO IE
FOR J=MAX(0,FLOOR(Y/8)) TO JE
IF FGET(TILE_AT(I,J),FLAG) THEN
RETURN TRUE
ENDIF
NEXT
NEXT
RETURN FALSE
END
DEF TILE_AT(X,Y)
RETURN MGET(ROOM_X*16+X,ROOM_Y*16+Y)
END
DEF SPIKES_AT(X,Y,W,H,SX,SY)
DIM I,IE=MIN(15,(X+W-1)/8)
DIM J,JE=MIN(15,(Y+H-1)/8),T
FOR I=MAX(0,FLOOR(X/8)) TO IE
FOR J=MAX(0,FLOOR(Y/8)) TO JE
T=TILE_AT(I,J)
IF T==17 && ((Y+H-1) MOD 8>=6 || Y+H==J*8+8) && SY>=0 THEN
RETURN TRUE
ELSEIF T==27 && Y MOD 8<=2 && SY<=0 THEN
RETURN TRUE
ELSEIF T==43 && X MOD 8<=2 && SX<=0 THEN
RETURN TRUE
ELSEIF T==59 && ((X+W-1) MOD 8>=6 || X+W==I*8+8) && SX>=0 THEN
RETURN TRUE
ENDIF
NEXT
NEXT
RETURN FALSE
END
' MOVE PLAYER
DEF MOVE_PLAYER OX,OY
DIM AMOUNT
'-- [X] GET MOVE AMOUNT
INC PLY_RX,OX
AMOUNT=FLOOR(PLY_RX+0.5)
DEC PLY_RX,AMOUNT
MOVE_PLAYER_X AMOUNT,0
'-- [Y] GET MOVE AMOUNT
INC PLY_RY,OY
AMOUNT=FLOOR(PLY_RY+0.5)
DEC PLY_RY,AMOUNT
MOVE_PLAYER_Y AMOUNT,0
END
DEF MOVE_PLAYER_X AMOUNT,START
DIM I
DIM STEP=SGN(AMOUNT)
FOR I=START TO ABS(AMOUNT)
IF !IS_SOLID(STEP,0) THEN
INC PLY_X,STEP
ELSE
PLY_SX=0
PLY_RX=0
BREAK
ENDIF
NEXT
END
DEF MOVE_PLAYER_Y AMOUNT,START
DIM I
DIM STEP=SGN(AMOUNT)
FOR I=START TO ABS(AMOUNT)
IF !IS_SOLID(0,STEP) THEN
INC PLY_Y,STEP
ELSE
PLY_SY=0
PLY_RY=0
BREAK
ENDIF
NEXT
END
' KILL PLAYER
DEF KILL_PLAYER
SFX_TM=12
SFX 0
INC DEATHS
SHAKE=10
DIM I,ANGLE
FOR I=0 TO 7
ANGLE=I/8
ZTS_X[I]=PLY_X+4
ZTS_Y[I]=PLY_Y+4
ZTS_SX[I]=P8SIN(ANGLE)*3
ZTS_SY[I]=P8COS(ANGLE)*3
NEXT
CLEAR_PLAYER
KL_PLY=10
RESTART_ROOM
END
' DRAW PLAYER
DEF DRAW_PLAYER
IF !PLY_MD THEN RETURN
IF PLY_MD==1 THEN
SET_HAIR_COLOR(MAX_JP)
ELSEIF PLY_MD==2 THEN
'-- CLAMP IN SCREEN
IF PLY_X<-1 || PLY_X>121 THEN
PLY_X=CLAMP(PLY_X,-1,121)
PLY_SX=0
ENDIF
SET_HAIR_COLOR(PLY_JP)
ENDIF
DRAW_HAIR 1-PLY_FX*2
SPR S_PLY,PLY_S,PLY_X,PLY_Y,PLY_FX,FALSE
UNSET_HAIR_COLOR
END
DEF PSFX NUM
IF SFX_TM<=0 THEN SFX NUM
END
DEF CREATE_HAIR
DIM I
FOR I=0 TO 4
HAR_X[I]=PLY_X
HAR_Y[I]=PLY_Y
NEXT
END
DEF SET_HAIR_COLOR DJUMP
DIM I,C=8
IF DJUMP==2 THEN C=7+FLOOR(TM_F/3) MOD 2*4
IF DJUMP==0 THEN C=12
FOR I=0 TO 5
SPCOLOR S_PLY-1-I,PAL%[C]
NEXT
END
DEF DRAW_HAIR FACING
SPR S_PLY-1,72+PLY_S,PLY_X,PLY_Y,PLY_FX,FALSE
DIM LX=PLY_X+4-FACING*2
DIM LY=PLY_Y+3+BTN[K_DN]
DIM I
FOR I=0 TO 4
INC HAR_X[I],(LX-HAR_X[I])/1.5
INC HAR_Y[I],(LY+0.5-HAR_Y[I])/1.5
SPR S_PLY-2-I,91-(I>1),HAR_X[I],HAR_Y[I],FALSE,FALSE
LX=HAR_X[I]
LY=HAR_Y[I]
NEXT
END
DEF UNSET_HAIR_COLOR
END
' SPRINGS FUNCTIONS
DEF INIT_SPRING X,Y
DIM I=SRG_CT
SRG_X[I]=X
SRG_Y[I]=Y
SRG_S[I]=18
SRG_HI[I]=0
SRG_HF[I]=0
INC SRG_CT
END
DEF UPDATE_SPRINGS
DIM I,HIT
FOR I=0 TO SRG_CT-1
IF SRG_HF[I]>0 THEN
DEC SRG_HF[I]
IF SRG_HF[I]<=0 THEN
SRG_S[I]=18
SRG_DL[I]=0
ENDIF
ELSEIF SRG_S[I]==18 THEN
DIM X=SRG_X[I]
DIM Y=SRG_Y[I]
HIT=COL_PLAYER(X,Y,0,0,8,8,0,0)
IF HIT && PLY_SY>=0 THEN
SRG_S[I]=19
PLY_Y=Y-4
PLY_SX=PLY_SX*0.2
PLY_SY=-3
PLY_JP=MAX_JP
SRG_DL[I]=10
INIT_SMOKE X,Y
'-- BREAKABLE BELOW US
HIT=COL_FALL_FLOORS(X,Y,0,0,8,8,0,1)
IF HIT>=0 THEN
BREAK_FALL_FLOOR(HIT)
ENDIF
PSFX 8
ENDIF
ELSEIF SRG_DL[I]>0 THEN
DEC SRG_DL[I]
IF SRG_DL[I]<=0 THEN
SRG_S[I]=18
ENDIF
ENDIF
'-- BEGIN HIDING
IF SRG_HI[I]>0 THEN
DEC SRG_HI[I]
IF SRG_HI[I]<=0 THEN
SRG_HF[I]=60
SRG_S[I]=0
ENDIF
ENDIF
NEXT
END
DEF BREAK_SPRING I
SRG_HI[I]=15
END
DEF COL_SPRINGS(X,Y,HX,HY,HW,HH,OX,OY)
DIM I,R 'HITBOX={X=0,Y=0,W=8,H=8}
FOR I=0 TO SRG_CT-1
R=SRG_S[I]>0
R=R && SRG_X[I]+8 > X+HX+OX
R=R && SRG_Y[I]+8 > Y+HY+OY
R=R && SRG_X[I] < X+HX+HW+OX
R=R && SRG_Y[I] < Y+HY+HH+OY
IF R THEN RETURN I
NEXT
RETURN -1
END
DEF DRAW_SPRINGS
DIM I
FOR I=0 TO SRG_CT-1
SPR S_SRG+I,SRG_S[I],SRG_X[I],SRG_Y[I],FALSE,FALSE
NEXT
END
' BALLOONS FUNCTIONS
DEF INIT_BALLOON X,Y
DIM I=BLN_CT
BLN_X[I]=X
BLN_Y[I]=Y
BLN_S[I]=22
BLN_OF[I]=RNDF()
BLN_IY[I]=Y
BLN_TM[I]=0
INC BLN_CT
END
DEF UPDATE_BALLOONS
DIM I
FOR I=0 TO BLN_CT-1
DIM X=BLN_X[I]
DIM Y=BLN_Y[I]
IF BLN_S[I]==22 THEN
INC BLN_OF[I],0.01
BLN_Y[I]=BLN_IY[I]+P8SIN(BLN_OF[I])*2
DIM HIT=COL_PLAYER(X,Y,-1,-1,10,10,0,0)
IF HIT && PLY_JP<MAX_JP THEN
PSFX 6
INIT_SMOKE X,Y
PLY_JP=MAX_JP
BLN_S[I]=0
BLN_TM[I]=60
ENDIF
ELSEIF BLN_TM[I]>0 THEN
DEC BLN_TM[I]
ELSE
PSFX 7
INIT_SMOKE X,Y
BLN_S[I]=22
ENDIF
NEXT
END
DEF DRAW_BALLOONS
DIM I,S,U,X,Y
FOR I=0 TO BLN_CT-1
S=BLN_S[I]
U=13+BLN_OF[I]*8 MOD 3
X=BLN_X[I]
Y=BLN_Y[I]
SPR S_BLN+I*2+1,S,X,Y,FALSE,FALSE
SPR S_BLN+I*2,U*(S==22),X,Y+6,FALSE,FALSE
NEXT
END
' FALL FLOORS FUNCTIONS
DEF INIT_FALL_FLOOR X,Y
DIM I=FLR_CT
FLR_X[I]=X
FLR_Y[I]=Y
FLR_ST[I]=0
INC FLR_CT
END
DEF UPDATE_FALL_FLOORS
DIM I,R,X,Y
FOR I=0 TO FLR_CT-1
X=FLR_X[I]
Y=FLR_Y[I]
'-- IDLING
IF FLR_ST[I]==0 THEN
R= COL_PLAYER(X,Y,0,0,8,8,0,-1)
R=R || COL_PLAYER(X,Y,0,0,8,8,-1,0)
R=R || COL_PLAYER(X,Y,0,0,8,8,1,0)
IF R THEN BREAK_FALL_FLOOR I
'-- SHAKING
ELSEIF FLR_ST[I]==1 THEN
DEC FLR_DL[I]
IF FLR_DL[I]<=0 THEN
FLR_ST[I]=2
FLR_DL[I]=60
ENDIF
'-- INVISIBLE, WAITING TO RESET
ELSEIF FLR_ST[I]==2 THEN
DEC FLR_DL[I]
R= FLR_DL[I]<=0
R=R && !COL_PLAYER(X,Y,0,0,8,8,0,0)
IF R THEN
PSFX 7
FLR_ST[I]=0
INIT_SMOKE X,Y
ENDIF
ENDIF
NEXT
END
DEF BREAK_FALL_FLOOR I
IF FLR_ST[I]==0 THEN
PSFX 15
FLR_ST[I]=1
FLR_DL[I]=15
DIM X=FLR_X[I]
DIM Y=FLR_Y[I]
INIT_SMOKE X,Y
DIM HIT=COL_SPRINGS(X,Y,0,0,8,8,0,-1)
IF HIT>=0 THEN BREAK_SPRING(HIT)
ENDIF
END
DEF COL_FALL_FLOORS(X,Y,HX,HY,HW,HH,OX,OY)
DIM I,R 'HITBOX={X=0,Y=0,W=8,H=8}
FOR I=0 TO FLR_CT-1
R=FLR_ST[I]!=2
R=R && FLR_X[I]+8 > X+HX+OX
R=R && FLR_Y[I]+8 > Y+HY+OY
R=R && FLR_X[I] < X+HX+HW+OX
R=R && FLR_Y[I] < Y+HY+HH+OY
IF R THEN RETURN I
NEXT
RETURN -1
END
DEF DRAW_FALL_FLOORS
DIM I,S
FOR I=0 TO FLR_CT-1
IF FLR_ST[I]==0 THEN
S=23
ELSEIF FLR_ST[I]==1 THEN
S=23+(15-FLR_DL[I])/5
ELSEIF FLR_ST[I]==2 THEN
S=0
ENDIF
SPR S_FLR+I,S,FLR_X[I],FLR_Y[I],FALSE,FALSE
NEXT
END
' SMOKES FUNCTIONS
DEF CLEAR_SMOKES
DIM I
FOR I=0 TO 15
SMK_S[I]=32
NEXT
SMK_I=0
END
DEF INIT_SMOKE X,Y
DIM I=SMK_I
SMK_S[I]=29
SMK_SY[I]=-0.1
SMK_SX[I]=0.3+RNDF()*0.2
SMK_X[I]=X-1+RNDF()*2
SMK_Y[I]=Y-1+RNDF()*2
SMK_FX[I]=MAYBE()
SMK_FY[I]=MAYBE()
SMK_I=(I+1) MOD 16
END
DEF UPDATE_SMOKES
DIM I
FOR I=0 TO 15
IF SMK_S[I]>=32 THEN CONTINUE
INC SMK_X[I],SMK_SX[I]
INC SMK_Y[I],SMK_SY[I]
INC SMK_S[I],0.2
NEXT
END
DEF DRAW_SMOKES
DIM I,S
FOR I=0 TO 15
S=SMK_S[I]
SPR S_SMK+I,S*(S<32),SMK_X[I],SMK_Y[I],SMK_FX[I],SMK_FY[I]
NEXT
END
' FRUIT FUNCTIONS
DEF INIT_FRUIT X,Y,MODE
IF GT_ICG[LEVEL_INDEX()] THEN RETURN
ICG_MD=MODE
ICG_X=X
ICG_Y=Y
ICG_SY=0
ICG_IY=Y
IF MODE==1 THEN
ICG_ST=0
ELSEIF MODE==2 THEN
ICG_F=FALSE
ICG_ST=0.5
ICG_XD=8
ENDIF
END
DEF UPDATE_FRUIT
IF !ICG_MD THEN RETURN
INC ICG_Y,ICG_SY
IF ICG_MD==1 THEN
INC ICG_ST
ICG_Y=ICG_IY+P8SIN(ICG_ST/40)*2.5
ELSEIF ICG_MD==2 THEN
'--FLY AWAY
IF ICG_F THEN
IF ICG_XD>0 THEN
DEC ICG_XD
IF ICG_XD<=0 THEN
SFX_TM=20
SFX 14
ENDIF
ENDIF
ICG_SY=APPR(ICG_SY,-3.5,0.25)
IF ICG_Y<-16 THEN
ICG_MD=0
ENDIF
'-- WAIT
ELSE
IF HS_DSH THEN
ICG_F=TRUE
ENDIF
INC ICG_ST,0.05
ICG_SY=P8SIN(ICG_ST)*0.5
ENDIF
ENDIF
'-- COLLECT
IF ICG_MD==3 THEN
DEC ICG_ST
IF ICG_ST<=0 THEN
ICG_MD=0
ENDIF
ELSEIF COL_PLAYER(ICG_X,ICG_Y,-1,-1,10,10,0,0) THEN
PLY_JP=MAX_JP
SFX_TM=20
SFX 13
GT_ICG[LEVEL_INDEX()]=TRUE
ICG_MD=3
ICG_SY=-0.25
ICG_ST=30
ENDIF
END
DEF DRAW_FRUIT
DIM FRUIT,WING
IF ICG_MD==0 THEN
FRUIT=0
WING=0
ELSEIF ICG_MD==1 THEN
FRUIT=26
WING=0
ELSEIF ICG_MD==2 THEN
DIM OFFS=0
IF !ICG_F THEN
IF ICG_SY<0 THEN
OFFS=1+MAX(0,(ICG_Y-ICG_IY)/2)
ENDIF
ELSE
OFFS=TM_F/2 MOD 3
ENDIF
FRUIT=28
WING=45+OFFS
ELSEIF ICG_MD==3 THEN
FRUIT=26*(ICG_ST MOD 2)
ENDIF
SPR S_ICG,WING,ICG_X-6,ICG_Y-2,TRUE,FALSE
SPR S_ICG+1,FRUIT,ICG_X,ICG_Y,FALSE,FALSE
SPR S_ICG+2,WING,ICG_X+6,ICG_Y-2,FALSE,FALSE
END
' FAKE WALL FUNCTIONS
DEF INIT_FAKE_WALL X,Y
IF GT_ICG[LEVEL_INDEX()] THEN RETURN
WAL_E=TRUE
WAL_X=X
WAL_Y=Y
END
DEF UPDATE_FAKE_WALL
IF !WAL_E THEN RETURN
IF PLY_DE>0 && COL_PLAYER(WAL_X,WAL_Y,-1,-1,18,18,0,0) THEN
PLY_SX=-SGN(PLY_SX)*1.5
PLY_SY=-1.5
PLY_DT=-1
SFX_TM=20
SFX 16
INIT_SMOKE WAL_X, WAL_Y
INIT_SMOKE WAL_X+8,WAL_Y
INIT_SMOKE WAL_X, WAL_Y+8
INIT_SMOKE WAL_X+8,WAL_Y+8
INIT_FRUIT WAL_X+4,WAL_Y+4,1
WAL_E=FALSE
ENDIF
END
DEF COL_FAKE_WALL(X,Y,HX,HY,HW,HH,OX,OY)
DIM R 'HITBOX={X=0,Y=0,W=16,H=16}
R=WAL_E
R=R && WAL_X+16 > X+HX+OX
R=R && WAL_Y+16 > Y+HY+OY
R=R && WAL_X < X+HX+HW+OX
R=R && WAL_Y < Y+HY+HH+OY
RETURN R
END
DEF DRAW_FAKE_WALL
SPR S_WAL,WAL_E*64,WAL_X,WAL_Y,FALSE,FALSE
END
' KEY FUNCTIONS
DEF INIT_KEY X,Y
IF GT_ICG[LEVEL_INDEX()] THEN RETURN
KEY_E=TRUE
KEY_X=X
KEY_Y=Y
KEY_S=8
END
DEF UPDATE_KEY
IF !KEY_E THEN RETURN
DIM WAS=FLOOR(KEY_S)
KEY_S=9+(P8SIN(TM_F/30)+0.5)*1
DIM IS=FLOOR(KEY_S)
IF IS==10 && IS!=WAS THEN
KEY_FX=!KEY_FX
ENDIF
IF COL_PLAYER(KEY_X,KEY_Y,0,0,8,8,0,0) THEN
SFX 23
SFX_TM=10
HS_KEY=TRUE
KEY_E=FALSE
ENDIF
END
DEF DRAW_KEY
SPR S_KEY,KEY_E*KEY_S,KEY_X,KEY_Y,KEY_FX,FALSE
END
' CHEST FUNCTIONS
DEF INIT_CHEST X,Y
IF GT_ICG[LEVEL_INDEX()] THEN RETURN
CST_E=TRUE
CST_X=X-4
CST_Y=Y
CST_IX=CST_X
CST_TM=20
END
DEF UPDATE_CHEST
IF !CST_E THEN RETURN
IF HS_KEY THEN
DEC CST_TM
CST_X=CST_IX-1+RND(3)
IF CST_TM<=0 THEN
SFX_TM=20
SFX 16
INIT_FRUIT CST_X,CST_Y-4,1
CST_E=FALSE
ENDIF
ENDIF
END
DEF DRAW_CHEST
SPR S_CST,CST_E*20,CST_X,CST_Y,FALSE,FALSE
END
' PLATFORMS FUNCTIONS
DEF INIT_PLATFORM X,Y,DIR
DIM I=PFM_CT
PFM_X[I]=X-4
PFM_Y[I]=Y
PFM_D[I]=DIR
SPOFS S_PFM+I,,,1
INC PFM_CT
END
DEF UPDATE_PLATFORMS
DIM I
FOR I=0 TO PFM_CT-1
DIM X=PFM_X[I]
DIM Y=PFM_Y[I]
X=X+PFM_D[I]*0.65
IF X<-16 THEN X=128
IF X>128 THEN X=-16
IF !COL_PLAYER(X,Y,0,0,16,8,0,0) THEN
DIM HIT=COL_PLAYER(X,Y,0,0,16,8,0,-1)
IF HIT THEN
MOVE_PLAYER_X FLOOR(X)-FLOOR(PFM_X[I]),1
ENDIF
ENDIF
PFM_X[I]=X
NEXT
END
DEF COL_PLATFORMS(X,Y,HX,HY,HW,HH,OX,OY)
DIM I,R 'HITBOX={X=0,Y=0,W=16,H=8}
FOR I=0 TO PFM_CT-1
R= PFM_X[I]+16 > X+HX+OX
R=R && PFM_Y[I]+8 > Y+HY+OY
R=R && PFM_X[I] < X+HX+HW+OX
R=R && PFM_Y[I] < Y+HY+HH+OY
IF R THEN RETURN I
NEXT
RETURN -1
END
DEF DRAW_PLATFORMS
DIM I
FOR I=0 TO PFM_CT-1
SPR S_PFM+I,11,PFM_X[I],PFM_Y[I]-1,FALSE,FALSE
NEXT
END
' MESSAGE FUNCTIONS
DEF INIT_MESSAGE X,Y
MSG_E=TRUE
MSG_X=X
MSG_Y=Y
END
DEF DRAW_MESSAGE
IF !MSG_E THEN RETURN
IF COL_PLAYER(MSG_X,MSG_Y,0,0,8,8,4,0) THEN
DIM MSG$="-- CELESTE MOUNTAIN --#THIS MEMORIAL TO THOSE#PERISHED ON THE CLIMB."
IF MSG_I<LEN(MSG$)-1 THEN
INC MSG_I,0.5
IF MSG_I==FLOOR(MSG_I) THEN
SFX 35
DIM M$=MID$(MSG$,MSG_I,1)
IF M$!="#" THEN
DIM MX=8+(MSG_I MOD 23)*5
DIM MY=96+(MSG_I DIV 23)*7
RECTFILL MX-2,MY-2,MX+7,MY+6,7
P8PRINT M$,MX,MY,0
ENDIF
ENDIF
ENDIF
ELSE
IF MSG_I>=0 THEN
GCLS
ENDIF
MSG_I=-0.5
ENDIF
END
' BIG CHEST FUNCTIONS
DEF INIT_BIG_CHEST X,Y
TRB_E=TRUE
TRB_X=X
TRB_Y=Y
TRB_ST=0
END
DEF UPDATE_BIG_CHEST
IF !TRB_E THEN RETURN
IF TRB_ST==0 THEN
DIM HIT=COL_PLAYER(TRB_X,TRB_Y,0,0,16,8,0,8)
IF HIT AND IS_SOLID(0,1) THEN
MUSIC -1,500,7
SFX 37
PZ_PLY=TRUE
PLY_SX=0
PLY_SY=0
TRB_ST=1
INIT_SMOKE TRB_X,TRB_Y
INIT_SMOKE TRB_X+8,TRB_Y
TRB_TM=60
ENDIF
ELSEIF TRB_ST==1 THEN
DEC TRB_TM
SHAKE=5
FL_BG=TRUE
DIM I
IF TRB_TM<=45 THEN
I=(TRB_TM+1) MOD 8
ZTS_X[I]=TRB_X+1+RND(14)
ZTS_Y[I]=TRB_Y+8
ZTS_SY[I]=8+RND(8)
SPCOLOR S_ZTS+I,PAL%[7]
SPSCALE S_ZTS+I,1,ZTS_SY[I]
ENDIF
IF TRB_TM<0 THEN
TRB_ST=2
FL_BG=FALSE
NW_BG=TRUE
INIT_ORB TRB_X+4,TRB_Y+4
PZ_PLY=FALSE
ENDIF
ENDIF
END
DEF DRAW_BIG_CHEST
DIM S
IF !TRB_E THEN
S=0
ELSEIF TRB_ST==0 THEN
S=96
ELSE
S=112
ENDIF
SPR S_TRB,S,TRB_X,TRB_Y+(S==112)*8,FALSE,FALSE
END
' ORB FUNCTIONS
DEF INIT_ORB X,Y
ORB_E=TRUE
ORB_X=X
ORB_Y=Y
ORB_SY=-4
DIM I
FOR I=0 TO 7
SPCOLOR S_ZTS+I,PAL%[7]
SPSCALE S_ZTS+I,1,1
NEXT
END
DEF UPDATE_ORB
IF !ORB_E THEN RETURN
INC ORB_Y,ORB_SY
ORB_SY=APPR(ORB_SY,0,0.5)
DIM HIT=COL_PLAYER(ORB_X,ORB_Y,0,0,8,8,0,0)
IF ORB_SY==0 && HIT THEN
BGM_TM=45
SFX 51
FREEZE=10
SHAKE=10
ORB_E=FALSE
CLEAR_ZATSUYOS
MAX_JP=2
PLY_JP=2
ENDIF
END
DEF DRAW_ORB
SPR S_ORB,ORB_E*102,ORB_X,ORB_Y,FALSE,FALSE
END
' FLAG FUNCTIONS
DEF INIT_FLAG X,Y
FLG_E=TRUE
FLG_X=X+5
FLG_Y=Y
FLG_SC=0
FLG_V=FALSE
DIM I
FOR I=0 TO 29
INC FLG_SC,GT_ICG[I]
NEXT
END
DEF UPDATE_FLAG
IF !FLG_E THEN RETURN
DIM HIT=COL_PLAYER(FLG_X,FLG_Y,0,0,8,8,0,0)
IF !FLG_V && HIT THEN
RECTFILL 32,6,96,35,0
'SPR S_ICG,26,55,10
GCOPY 4,160,16,175,31,182,12,FALSE
P8PRINT "X"+STR$(FLG_SC),64,13,7
DRAW_TIME 49,20
P8PRINT "DEATHS:"+STR$(DEATHS),48,28,7
SFX 55
SFX_TM=30
FLG_V=TRUE
ENDIF
END
DEF DRAW_FLAG
DIM S=0
IF FLG_E THEN S=118+(TM_F/5) MOD 3
SPR S_FLG,S,FLG_X,FLG_Y,FALSE,FALSE
END
' ROOM TITLE FUNCTIONS
DEF INIT_ROOM_TITLE
GCLS
ROOM_TITLE_DL=5
END
DEF DRAW_ROOM_TITLE
IF IS_TITLE() THEN RETURN
IF ROOM_TITLE_DL<-30 THEN RETURN
IF ROOM_TITLE_DL==0 THEN
GPRIO -128
RECTFILL 24,58,104,70,0
DIM ROOM$=STR$((1+LEVEL_INDEX())*100)+" M"
IF ROOM_X==3 && ROOM_Y==1 THEN
P8PRINT "OLD SITE",48,62,7
ELSEIF LEVEL_INDEX()==30 THEN
P8PRINT "SUMMIT",53,62,7
ELSE
DIM LV=(1+LEVEL_INDEX())*100
P8PRINT STR$(LV)+" M",52+(LV<1000)*2,62,7
ENDIF
DRAW_TIME 4,8
ELSEIF ROOM_TITLE_DL==-30 THEN
GCLS
ENDIF
DEC ROOM_TITLE_DL
END
' CLOUDS FUNCTIONS
DEF INIT_CLOUDS
DIM I,Z
FOR I=0 TO 15
CLD_X[I]=RND(128)
CLD_Y[I]=RND(128)
CLD_SX[I]=1+RNDF()*4
CLD_W[I]=32+RND(32)
Z=4+FLOOR((1-CLD_W[I]/64)*12)
SPSCALE S_CLD+I,CLD_W[I],Z
SPOFS S_CLD+I,,,1216-CLD_SX[I]*192
NEXT
END
DEF UPDATE_CLOUDS
DIM I
FOR I=0 TO 15
INC CLD_X[I],CLD_SX[I]
IF CLD_X[I]>128 THEN
CLD_X[I]=-CLD_W[I]
CLD_Y[I]=RND(128)
ENDIF
NEXT
END
DEF DRAW_CLOUDS
DIM I,C=0
IF !IS_TITLE() THEN C=PAL%[1+NW_BG*13]
FOR I=0 TO 15
SPCOLOR S_CLD+I,C
SPR S_CLD+I,105,CLD_X[I],CLD_Y[I],FALSE,FALSE
NEXT
END
' PARTICLES FUNCTIONS
DEF INIT_PARTICLES
DIM I
FOR I=0 TO 23
PTC_X[I]=RND(128)
PTC_Y[I]=RND(128)
PTC_S[I]=105+!RND(5)
PTC_SX[I]=0.25+RNDF()*5
PTC_D[I]=RNDF()
PTC_C[I]=6+RND(2)
SPCOLOR S_PTC+I,PAL%[PTC_C[I]]
SPOFS S_PTC+I,,,-PTC_SX[I]*48
NEXT
END
DEF UPDATE_PARTICLES
DIM I
FOR I=0 TO 23
INC PTC_X[I],PTC_SX[I]
INC PTC_Y[I],P8SIN(PTC_D[I])
INC PTC_D[I],MIN(0.05,PTC_SX[I]/32)
IF PTC_X[I]>128+4 THEN
PTC_X[I]=-4
PTC_Y[I]=RND(128)
ENDIF
NEXT
END
DEF DRAW_PARTICLES
DIM I
FOR I=0 TO 23
SPR S_PTC+I,PTC_S[I],PTC_X[I],PTC_Y[I],FALSE,FALSE
NEXT
END
' ZATSUYOS FUNCTIONS
DEF CLEAR_ZATSUYOS
CLEAR_EXTRA_SPRITES S_ZTS,S_ZTS+7
END
DEF DRAW_ZATSUYOS
DIM I
IF KL_PLY>0 THEN
'-- DEAD
DEC KL_PLY
IF KL_PLY<=0 THEN
CLEAR_ZATSUYOS
ELSE
DIM T=FLOOR(KL_PLY*2/5)
FOR I=0 TO 7
INC ZTS_X[I],ZTS_SX[I]
INC ZTS_Y[I],ZTS_SY[I]
SPCOLOR S_ZTS+I,PAL%[14+KL_PLY MOD 2]
SPR S_ZTS+I,105+T,ZTS_X[I]-T/2,ZTS_Y[I]-T/2,FALSE,FALSE
NEXT
ENDIF
ELSEIF ORB_E THEN
'-- ORB
DIM OFFS=TM_F/30
FOR I=0 TO 7
SPR S_ZTS+I,90,ORB_X+4+P8COS(OFFS+I/8)*8,ORB_Y+4+P8SIN(OFFS+I/8)*8,FALSE,FALSE
NEXT
ELSEIF TRB_E && TRB_ST==1 THEN
'-- BIG CHEST
FOR I=0 TO 7
DEC ZTS_Y[I],ZTS_SY[I]
SPR S_ZTS+I,105,ZTS_X[I],ZTS_Y[I],FALSE,FALSE
NEXT
ENDIF
END
' HELPER FUNCTIONS
DEF CLAMP(VAL,A,B)
RETURN MAX(A, MIN(B, VAL))
END
DEF APPR(VAL,TARGET,AMOUNT)
IF VAL>TARGET THEN
RETURN MAX(VAL-AMOUNT,TARGET)
ELSE
RETURN MIN(VAL+AMOUNT,TARGET)
ENDIF
END
DEF MAYBE()
RETURN RND(2)
END
' ROOM FUNCTIONS
DEF RESTART_ROOM
RST_RM=TRUE
RST_DL=15
END
DEF NEXT_ROOM
IF ROOM_X==2 && ROOM_Y==1 THEN
MUSIC 30,500,7
ELSEIF ROOM_X==3 && ROOM_Y==1 THEN
MUSIC 20,500,7
ELSEIF ROOM_X==4 && ROOM_Y==2 THEN
MUSIC 30,500,7
ELSEIF ROOM_X==5 && ROOM_Y==3 THEN
MUSIC 30,500,7
ENDIF
IF ROOM_X==7 THEN
LOAD_ROOM 0,ROOM_Y+1
ELSE
LOAD_ROOM ROOM_X+1,ROOM_Y
ENDIF
END
DEF LOAD_ROOM X,Y
HS_DSH=FALSE
HS_KEY=FALSE
'-- REMOVE EXISTING OBJECTS
CLEAR_PLAYER
SRG_CT=0
BLN_CT=0
FLR_CT=0
CLEAR_SMOKES
ICG_MD=0
WAL_E=FALSE
KEY_E=FALSE
CST_E=FALSE
PFM_CT=0
MSG_E=FALSE
TRB_E=FALSE
ORB_E=FALSE
FLG_E=FALSE
CLEAR_ZATSUYOS
'-- CURRENT ROOM
ROOM_X=X
ROOM_Y=Y
'-- ENTITIES
DIM TX,TY,EX,EY,T
FOR TX=0 TO 15
FOR TY=0 TO 15
T=TILE_AT(TX,TY)
EX=TX*8:EY=TY*8
IF T==1 THEN INIT_PLAYER EX,EY,1
IF T==8 THEN INIT_KEY EX,EY
IF T==11 THEN INIT_PLATFORM EX,EY,-1
IF T==12 THEN INIT_PLATFORM EX,EY,1
IF T==18 THEN INIT_SPRING EX,EY
IF T==20 THEN INIT_CHEST EX,EY
IF T==22 THEN INIT_BALLOON EX,EY
IF T==23 THEN INIT_FALL_FLOOR EX,EY
IF T==26 THEN INIT_FRUIT EX,EY,1
IF T==28 THEN INIT_FRUIT EX,EY,2
IF T==64 THEN INIT_FAKE_WALL EX,EY
IF T==86 THEN INIT_MESSAGE EX,EY
IF T==96 THEN INIT_BIG_CHEST EX,EY
IF T==118 THEN INIT_FLAG EX,EY
BGPUT 0,TX,TY,T*FGET(T,1)
DIM BT=T
IF T>=32&&T<64&&T MOD 16<8 THEN BT=40
BGPUT 1,TX,TY,BT*FGET(BT,2)
NEXT
NEXT
CLEAR_EXTRA_SPRITES S_SRG+SRG_CT,S_SRG+15
CLEAR_EXTRA_SPRITES S_BLN+BLN_CT*2,S_BLN+15
CLEAR_EXTRA_SPRITES S_FLR+FLR_CT,S_FLR+15
CLEAR_EXTRA_SPRITES S_PFM+PFM_CT,S_PFM+15
IF IS_TITLE() THEN
'-- CREDITS
GPRIO 0
P8PRINT "MATT THORSON",42,84,5
P8PRINT "NOEL BERRY",46,90,5
P8PRINT "PORTED BY OBONO",36,102,5
P8PRINT "PRESS A OR B TO START",24,114,6
ELSE
'-- ROOM TITLE
INIT_ROOM_TITLE
ENDIF
END
DEF CLEAR_EXTRA_SPRITES SPR_F,SPR_T
DIM I
FOR I=SPR_F TO SPR_T
SPCHR I,0
NEXT
END
' UPDATE FUNCTION
DEF UPDATE
TM_F=(TM_F+1) MOD 30
IF !TM_F && LEVEL_INDEX()<30 THEN
TM_S=(TM_S+1) MOD 60
INC TM_M,!TM_S
ENDIF
IF BGM_TM>0 THEN
DEC BGM_TM
IF BGM_TM<=0 THEN MUSIC 10,0,7
ENDIF
IF SFX_TM>0 THEN DEC SFX_TM
'-- CANCEL IF FREEZE
IF FREEZE>0 THEN DEC FREEZE:RETURN
'-- RESTART (SOON)
IF RST_RM AND RST_DL>0 THEN
DEC RST_DL
IF RST_DL<=0 THEN
RST_RM=FALSE
LOAD_ROOM ROOM_X,ROOM_Y
ENDIF
ENDIF
'-- UPDATE EACH OBJECT
UPDATE_CLOUDS
UPDATE_PARTICLES
UPDATE_PLAYER
UPDATE_SPRINGS
UPDATE_BALLOONS
UPDATE_FALL_FLOORS
UPDATE_SMOKES
UPDATE_FRUIT
UPDATE_FAKE_WALL
UPDATE_KEY
UPDATE_CHEST
UPDATE_PLATFORMS
UPDATE_BIG_CHEST
UPDATE_ORB
UPDATE_FLAG
'-- START GAME
IF IS_TITLE() THEN
IF !ST_GM && (BTN[K_JP]+BTN[K_DS]) THEN
MUSIC -1,0,0
ST_GFL=50
ST_GM=TRUE
SFX 38
ENDIF
IF ST_GM THEN
DEC ST_GFL
IF ST_GFL<=-30 THEN BEGIN_GAME
ENDIF
ENDIF
END
' DRAWING FUNCTIONS
DEF DRAW
DIM I
'-- SCREENSHAKE
IF SHAKE>0 THEN
DEC SHAKE
SHX=-2+RND(5)
SHY=-2+RND(5)
ELSE
SHX=0
SHY=0
ENDIF
'-- DRAW TERRAIN
DIM DIFF=0
DIM CLIP_L=72+SHX*2
DIM CLIP_R=327+SHX*2
IF LEVEL_INDEX()==30 THEN
DIFF=MAX(0,MIN(24,40-ABS(PLY_X+4-64)))*2
ENDIF
FOR I=0 TO 1
BGCLIP I,CLIP_L+DIFF,0,CLIP_R-DIFF,239
BGOFS I,-CLIP_L+IS_TITLE()*8,8-SHY*2,I*256
NEXT
SPCLIP CLIP_L+DIFF,0,CLIP_R-DIFF,239
'-- START GAME FLASH
IF ST_GM THEN
DIM FADE_A,FADE_C
IF ST_GFL>=10 THEN
FADE_A=(ST_GFL MOD 10<5)*127
FADE_C=255
ELSE
FADE_A=((10-ST_GFL) DIV 5)*64
FADE_C=0
ENDIF
FADE RGB(FADE_A,FADE_C,FADE_C,FADE_C)
ELSE
FADE 0
ENDIF
'-- BACK COLOR
DIM BG_COL=0
IF FL_BG THEN
BG_COL=TM_F/5
ELSEIF NW_BG THEN
BG_COL=2
ENDIF
SPCOLOR S_BAK,PAL%[BG_COL]
'-- DRAW OBJECTS
DRAW_PLAYER
DRAW_SPRINGS
DRAW_BALLOONS
DRAW_FALL_FLOORS
DRAW_SMOKES
DRAW_FRUIT
DRAW_FAKE_WALL
DRAW_KEY
DRAW_CHEST
DRAW_PLATFORMS
DRAW_BIG_CHEST
DRAW_MESSAGE
DRAW_ORB
DRAW_FLAG
DRAW_CLOUDS
DRAW_PARTICLES
DRAW_ZATSUYOS
DRAW_ROOM_TITLE
END
DEF DRAW_TIME X,Y
DIM S=TM_S
DIM M=TM_M MOD 60
DIM H=FLOOR(TM_M/60)
DIM T$=FORMAT$("%02D:%02D:%02D",H,M,S)
RECTFILL X,Y,X+32,Y+6,0
P8PRINT T$,X+1,Y+1,7
END
' EXTRA BUTTON FUNCTIONS
DEF EXTRA_BTN
DIM I,BTN=BUTTON()
IF IS_TITLE() THEN RETURN
IF BTN==#L+#R THEN
'-- RESET GAME
FOR I=0 TO 8
VSYNC 1
FADE RGB(I*32,0,0,0)
NEXT
TITLE_SCREEN
ELSEIF BTN AND #Y THEN
'-- PAUSE
BGMVOL 0,16
RECTFILL 103,113,123,119,0
P8PRINT "PAUSE",104,114,10
FADE RGB(128,0,0,0)
FOR I=0 TO 2
VSYNC 1
I=I-((BUTTON() AND #Y)!=#Y*(I MOD 2))
NEXT
RECTFILL 103,113,123,119,-1
BGMVOL 0,64
ENDIF
END
' PICO-8 WRAPPER FUNCTIONS
DEF POLL_BTN
DIM B,SX,SY,X,Y
B=BUTTON()
STICK OUT SX,SY
X=((B AND #RIGHT)>0)-((B AND #LEFT)>0)+SX
Y=((B AND #DOWN )>0)-((B AND #UP )>0)-SY
BTN[K_LF]=X <=-0.25
BTN[K_RT]=X >= 0.25
BTN[K_UP]=Y <=-0.25
BTN[K_DN]=Y >= 0.25
BTN[K_JP]=(B AND #A)>0
BTN[K_DS]=(B AND #B)>0
END
DEF SPR I,S,X,Y,FX,FY
SPCHR I,S OR 128*FX OR 256*FY
IF S!=0 THEN
X=FLOOR(X+SHX)*2+72
Y=FLOOR(Y+SHY)*2-8
SPOFS I,X,Y
ENDIF
END
DEF RECTFILL X1,Y1,X2,Y2,C
X1=FLOOR(X1)*2+72
Y1=FLOOR(Y1)*2-8
X2=FLOOR(X2)*2+73
Y2=FLOOR(Y2)*2-7
DIM COL
IF C>=0 THEN COL=PAL%[C]
GFILL X1,Y1,X2,Y2,COL
END
DEF P8PRINT S$,X,Y,C
X=FLOOR(X)*2+72
Y=FLOOR(Y)*2-8
DIM I,L=LEN(S$)-1,S
FOR I=0 TO L
S=ASC(MID$(S$,I,1))-32
GCOPY 1,S*8,C*12,S*8+7,11+C*12,X,Y,FALSE
X=X+8
NEXT
END
DEF P8COS(V)
RETURN COS(V*2*PI())
END
DEF P8SIN(V)
RETURN -SIN(V*2*PI())
END
DEF MGET(X,Y)
RETURN MAP%[Y*32+X/4]>>(3-X MOD 4)*8 AND 255
END
DEF FGET(I,FLAG)
DIM F=GFF%[I/4]>>(3-I MOD 4)*8
RETURN (F AND 1<<FLAG)>0
END
DEF MUSIC NUM,DELAY,MASK
IF NUM<0 THEN BGMSTOP ELSE BGMPLAY 0,NUM+200
END
DEF SFX NUM
BGMPLAY 1,NUM+128
END
' SETUP FUNCTIONS
DEF SETUP
LOAD "DAT:PAL",PAL%,FALSE
LOAD "DAT:GFF",GFF%,FALSE
LOAD "DAT:MAP",MAP%,FALSE
SETUP_IMAGES
SETUP_FONT
GPAGE 0,0
DIM LIB$[64]
SETUP_TONE
SETUP_SFX LIB$
SETUP_MUSIC LIB$
END
' CHARACTER IMAGES
DEF SETUP_IMAGES
DIM GFX%[1024]
DIM I,X,Y,V,PTN
LOAD "DAT:GFX",GFX%,FALSE
'-- DRAW
GPAGE 0,4
GFILL 0,0,255,127,0
FOR Y=0 TO 63
FOR X=0 TO 127
IF X MOD 8==0 THEN PTN=GFX%[Y*16+X/8]
V=PTN >> (7-X MOD 8)*4 AND 15
IF V>0 THEN
GFILL X*2,Y*2,X*2+1,Y*2+1,PAL%[V]
ENDIF
NEXT
NEXT
'-- BG OPTIMIZE
GPAGE 0,5
FOR I=0 TO 3
GCOPY 4,0,I*32,255,I*32+15,0,I*16,TRUE
GCOPY 4,0,I*32+16,255,I*32+31,256,I*16,TRUE
NEXT
FOR I=0 TO 1
BGSCREEN I,16,16
NEXT
'-- EXRRACT HAIR PARTS
GPAGE 0,4
GFILL 144,64,255,127,0
GCOLOR #WHITE
FOR Y=0 TO 15:FOR X=16 TO 127
IF GSPOIT(X,Y)==PAL%[8] THEN
GPSET X,Y,0:GPSET X+128,Y+64
ENDIF
NEXT:NEXT
'-- PARTICLE
GFILL 144,80,145,81
FOR I=0 TO 1
GFILL 160+I*16,82,165+I*20,83+I*4
GFILL 162+I*16,80,163+I*20,85+I*4
NEXT
FOR I=0 TO 6
GFILL 144+I*16,96,145+I*18,97+I*2
NEXT
GFILL 240,112,255,127
'-- SPDEF
DIM A,W,H,M
FOR A=0 TO 3
FOR I=0 TO 127
X=(I MOD 16)*16
Y=(I DIV 16)*16
W=16:H=16:M=0
IF I==11||I==64||I==96||I==112 THEN W=32
IF I==64||I==96 THEN H=32
IF I>=89 && I<=91 THEN M=(I-89)*2
SPDEF I+A*128,X,Y,W,H,M,M,#SPREVH*A+1
NEXT
NEXT
'-- SPSET
FOR I=0 TO S_BAK-1
SPSET I,0
NEXT
'-- BACKGROUND
SPSET S_BAK,127
SPOFS S_BAK,64,0,1024
SPSCALE S_BAK,17,15
END
' FONT IMAGES
DEF SETUP_FONT
DIM FONT%[20]
DIM I,CODE,X,Y,DX,DY,V,PTN,C
LOAD "DAT:FONT",FONT%,FALSE
GPAGE 0,1
FOR I=0 TO 39
PTN=FONT%[I/2] >> (1-I MOD 2)*16
FOR X=0 TO 2
DX=CODE*8+X*2
FOR Y=0 TO 4
IF PTN >> 14-Y-X*5 AND 1 THEN
FOR C=0 TO 15
DY=C*12+Y*2
GFILL DX,DY,DX+1,DY+1,PAL%[C]
NEXT
ENDIF
NEXT
NEXT
IF I==0 THEN
CODE=13
ELSEIF I==2 THEN
CODE=16
ELSEIF I==13 THEN
CODE=33
ELSE
INC CODE
ENDIF
NEXT
END
' SOUND TONE
DEF SETUP_TONE
DIM I,W$,WAV%[512],NZ%[65536]
FOR I=0 TO 7
IF I!=6 THEN
READ W$:GEN_WAVE WAV%,W$
WAVSETA 224+I,127,127,127,127,WAV%,33
ELSE
GEN_NOISE NZ%
WAVSETA 224+I,127,127,127,127,NZ%,33
ENDIF
NEXT
END
DATA "128FF,25600,12880"
DATA "219FF,07400,21980"
DATA "256DA,00126,25580"
DATA "001C6,255C6,0013A,2553A"
DATA "001DA,170DA,00153,34053"
DATA "075E6,12837,128AB,12837,05380"
DATA "085DA,086DA,17026,08626,08580"
DEF GEN_WAVE D%[],PTN$
DIM I,J,L,P,C,T,W
T=128:L=LEN(D%)-1
FOR I=0 TO L
IF J==C THEN
J=0:W=T
C=VAL(MID$(PTN$,P*6,3))
T=VAL("&H"+MID$(PTN$,P*6+3,2))
P=P+1
ENDIF
J=J+1
D%[I]=W+(T-W)*J/C
NEXT
END
DEF GEN_NOISE D%[]
DIM I,L,W
L=LEN(D%)-1
FOR I=0 TO L
IF I MOD 16==0 THEN W=RND(192)
D%[I]=W+RND(64)
NEXT
END
' SOUND EFFECT
DEF SETUP_SFX LIB$[]
DIM SFX%[0]
LOAD "DAT:SFX",SFX%,0
DIM I,J,SPD,CNT,IDX
DIM FREQ,L_FREQ,INST,L_INST
DIM VOL ,L_VOL ,EFC ,L_EFC
DIM MML$,SPD$,FIN$,FOUT$,HEAD$,NOTE$
FOR I=0 TO 63
SPD=GET8(SFX%,I*84+1)
CNT=GET8(SFX%,I*84+3)
IF SPD==1 THEN
SPD$="T225L128"
ELSEIF SPD<=3 THEN
SPD$="T"+STR$(FLOOR(450/SPD))+"L64"
ELSEIF SPD<=6 THEN
SPD$="T"+STR$(FLOOR(900/SPD))+"L32"
ELSEIF SPD<=12 THEN
SPD$="T"+STR$(FLOOR(1800/SPD))+"L16"
ELSE
SPD$="T"+STR$(FLOOR(3600/SPD))+"L8"
ENDIF
IF CNT==0 THEN CNT=32
L_FREQ=-1
L_INST=-1
L_VOL =-1
L_EFC =0
FIN$="@E"+STR$(127-SPD)+",127,127,127"
FOUT$="@E127,"+STR$(127-SPD)+",0,127"
MML$="@MP32,2,16,0@MOF"
FOR J=0 TO CNT-1
'-- GET PARAMS
IDX=I*168+8+J*5
FREQ=GET4(SFX%,IDX)*16+GET4(SFX%,IDX+1)
INST=GET4(SFX%,IDX+2)
VOL =GET4(SFX%,IDX+3)
EFC =GET4(SFX%,IDX+4)
IF VOL==0 THEN
L_VOL=0
MML$=MML$+"R"
CONTINUE
ENDIF
'-- ATTRIBUTE
HEAD$=""
IF EFC==2 && L_EFC!=2 THEN HEAD$="@MON"
IF EFC!=2 && L_EFC==2 THEN HEAD$="@MOF"
IF INST!=L_INST THEN
HEAD$=HEAD$+"@"+STR$(INST+224)
ENDIF
IF VOL!=L_VOL THEN
HEAD$=HEAD$+"V"+STR$(VOL*18)
ENDIF
IF EFC==4 || EFC==1 && L_VOL==0 THEN
HEAD$=HEAD$+FIN$
ELSEIF EFC==5 THEN
HEAD$=HEAD$+FOUT$
ELSE
HEAD$=HEAD$+"@ER"
ENDIF
'-- NOTE
NOTE$=NOTE_MML$(FREQ)
IF EFC==1 && L_FREQ>=0 THEN
NOTE$=NOTE_MML$(L_FREQ)+"_"+NOTE$
ELSEIF EFC==6 THEN
NOTE$="L32[GA+]2L8" '--TRICK!
ENDIF
IF L_VOL>0 && FREQ==L_FREQ && L_EFC<5 THEN
HEAD$="&"+HEAD$
ENDIF
'-- APPEND MML
MML$=MML$+HEAD$+NOTE$
L_FREQ=FREQ
L_INST=INST
L_VOL =VOL
L_EFC =EFC
NEXT
LIB$[I]=MML$
BGMSET I+128,SPD$+MML$
NEXT
END
DEF GET8(D%,I)
RETURN D%[I/4]>>(3-I MOD 4)*8 AND 255
END
DEF GET4(D%,I)
RETURN D%[I/8]>>(7-I MOD 8)*4 AND 15
END
DEF NOTE_MML$(F)
DIM O$="O"+STR$(F DIV 12+2)
DIM C=F MOD 12
C=(C+(C>4)+4) MOD 14
RETURN O$+CHR$(65+C/2)+"#"*(C MOD 2)
END
' MUSIC
DEF SETUP_MUSIC LIB$[]
DIM I,MML$
FOR I=0 TO 4
READ MML$
BGMSET 200+I*10,GEN_MUSIC_MML$(MML$,LIB$)
NEXT
END
DEF GEN_MUSIC_MML$(BASE$,LIB$[])
DIM I,P,P$,H$,DEF$
REPEAT
I=INSTR(I,BASE$,"{")
IF I>=0 THEN
P$=MID$(BASE$,I,4)
IF INSTR(H$,P$)==-1 THEN
H$=H$+P$
P=VAL(MID$(P$,2,2))
DEF$=DEF$+P$+"="+LIB$[P]+"}"
ENDIF
I=I+5
ENDIF
UNTIL I==-1
RETURN DEF$+BASE$
END
DATA "T112:1[L16[{M10}]6L32[{M20}]4L16[{M10}]3]:2[L8{M21}L16[{M22}]2L8{M11}{M19}L16[{M22}]2{M17}]:3[L8{M63}L16[{M12}]4[{M18}]2[{M12}]2{M18}]"
DATA "T75:1[L16[{M24}]2L32[{M27}]4[{M31}]2{M30}{M32}]:2[L16[{M25}]2{M28}{M29}L32[{M33}]2{M34}{M36}]:3[L32{M26}]"
DATA ":1[L32[{M41}]8[[{M41}]2[{M44}]2]2L8{M48}L32[{M49}]4[{M50}]4]:2[L8[{M42}]2L16[{M43}]4[{M45}]2L8{M52}{M53}]:3[L16[{M39}]8[{M47}]8[{M46}]4[{M39}]8]"
DATA "T112:1[L16{M61}]:2[L16[{M63}]3L4{M62}]"
DATA "T112:1[L16{M56}{M57}]:2[L16{M58}{M59}]:3[L16{M60}]"
' EOF
'
' DATA FILE GENERATOR FOR 'CELESTE'
'
READ_SAVE "PAL",4
READ_SAVE "FONT",5
READ_SAVE "GFX",256
READ_SAVE "GFF",8
READ_SAVE "MAP",512
READ_SAVE "SFX",336
END
DEF READ_SAVE F$,L
DIM D%[L*4]
FOR I=0 TO L-1
READ D$
FOR J=0 TO 3
D%[I*4+J]=VAL("&H"+MID$(D$,J*8,8))
NEXT
NEXT
SAVE "DAT:"+F$,D%
END
' PAL
DATA "FF000000FF182850FF782020FF008050"
DATA "FFA85030FF585048FFC0C0C0FFF8F0E8"
DATA "FFF80048FFF8A000FFF8F820FF00E050"
DATA "FF28A8F8FF807098FFF870A8FFF8C8A8"
' FONT
DATA "0000108400207E3F47E15EBD46BF709F"
DATA "76B77CA7421F7EBF76BF01407E9F7EBB"
DATA "3A317E2F7EB17E903E337C9F47F147F0"
DATA "7C9B7C217F1F7E0F3E3E7E9C3A6D7E9B"
DATA "36B643F0783F787E7C7F6C9B74BF4EB9"
' GFX
DATA "00000000000000000000000008888880"
DATA "00000000000000000000000000000000"
DATA "00AAAAA0000AAA000000A00000077077"
DATA "70077700000060000000600000060000"
DATA "00000000088888800888888088888888"
DATA "08888880088888000000000008888880"
DATA "00A000A0000A0A000000A00007777776"
DATA "77777770000060000000600000060000"
DATA "000000008888888888888888888FFFF8"
DATA "88888888888888800888888088F1FF18"
DATA "00A909A0000A0A000000A00077666666"
DATA "67767777000600000000600000060000"
DATA "00000000888FFFF8888FFFF888F1FF18"
DATA "888FFFF88FFFF8808888888888FFFFF8"
DATA "009AAA900009A9000000A00076777666"
DATA "76666677000600000000600000060000"
DATA "0000000088F1FF1888F1FF1808FFFFF0"
DATA "88F1FF1881FF1F80888FFFF888FFFFF8"
DATA "0000A0000000A0000000A00000000000"
DATA "00000000000600000006000000006000"
DATA "0000000008FFFFF008FFFFF000333300"
DATA "08FFFFF00FFFFF8088FFFFF808333380"
DATA "0099A0000009A0000000A00000000000"
DATA "00000000000600000006000000006000"
DATA "00000000003333000033330007000070"
DATA "073333000033337008F1FF1000333300"
DATA "0009A0000000A0000000A00000000000"
DATA "00000000000060000006000000006000"
DATA "00000000007007000070007000000000"
DATA "00000700000070000773337000700700"
DATA "00AAA0000009A0000000A00000000000"
DATA "00000000000060000006000000006000"
DATA "55555555000000000000000000000000"
DATA "00000000000000000088880049999994"
DATA "49999994499909940300B0B066656665"
DATA "0300B0B0000000000000000070000000"
DATA "55555555000000000000000000000000"
DATA "00000000000000000888888091111119"
DATA "9111411991140919003B330067656765"
DATA "003B3300007700000770070007000007"
DATA "55000055000000000000000000000000"
DATA "0AAAAAA0000000000878888091111119"
DATA "91119119494004190288882067706770"
DATA "02888820007770700777000000000000"
DATA "55000055007000700499994000000000"
DATA "A998888A111111110888888091111119"
DATA "94940419000000440898888007000700"
DATA "78988887077777700770000000000000"
DATA "55000055007000700050050000000000"
DATA "A988888A100000010888888091111119"
DATA "91140949940000000888898007000700"
DATA "78888987077777700000700000000000"
DATA "55000055067706770005500000000000"
DATA "AAAAAAAA111111110888888091111119"
DATA "91119119914004990889888000000000"
DATA "08898880077777700000077000000000"
DATA "55555555567656760050050000000000"
DATA "A980088A144444410088880091111119"
DATA "91141119914041190288882000000000"
DATA "02888820070777000007077007000070"
DATA "55555555566656660005500004999940"
DATA "A988888A144444410000000049999994"
DATA "49999994440049940028820000000000"
DATA "00288200000000007000000000000000"
DATA "57777775577777777777777777777775"
DATA "77CCCCCCCCCCCCCCCCCCCC7757777775"
DATA "55555555555555555555555555000000"
DATA "07777770000000000000000000000000"
DATA "77777777777777777777777777777777"
DATA "777CCCCCCCCCCCCCCCCCC77777777777"
DATA "55555555555555500555555566700000"
DATA "77777777000777770000000000000000"
DATA "777C77777777CCCCC777777CCCCC7777"
DATA "777CCCCCCCCCCCCCCCCCC77777777777"
DATA "55555555555555000055555567777000"
DATA "77777777007766700000000000000000"
DATA "77CCCC77777CCCCCCCC77CCCCCCCC777"
DATA "7777CCCCCCCCCCCCCCCC7777777CC777"
DATA "55555555555550000005555566600000"
DATA "77773377076777000000000000000000"
DATA "77CCCC7777CCCCCCCCCCCCCCCCCCCC77"
DATA "7777CCCCCCCCCCCCCCCC777777CCCC77"
DATA "55555555555500000000555555000000"
DATA "77773377077660000777770000000000"
DATA "777CC77777CC77CCCCCCCCCCCCC7CC77"
DATA "777CCCCCCCCCCCCCCCCCC77777CCCC77"
DATA "55555555555000000000055566700000"
DATA "73773337077770000777767007700000"
DATA "7777777777CC77CCCCCCCCCCCCCCCC77"
DATA "777CCCCCCCCCCCCCCCCCC77777C7CC77"
DATA "55555555550000000000005567777000"
DATA "7333BB37000000000000007700777770"
DATA "5777777577CCCCCCCCCCCCCCCCCCCC77"
DATA "77CCCCCCCCCCCCCCCCCCCC7777CCCC77"
DATA "55555555500000000000000566600000"
DATA "0333BB30000000000000000000077777"
DATA "77CCCC7777CCCCCCCCCCCCCCCCCCCC77"
DATA "577777777777777777777775777CCC77"
DATA "55555555500000000000000500000666"
DATA "03333330000000000000000000000000"
DATA "777CCC7777CCCCCCCCCCCCCCCCCCCC77"
DATA "777777777777777777777777777CC777"
DATA "50555555550000000000005500077776"
DATA "03B333300000000000EE0EE000000000"
DATA "777CCC7777CC7CCCCCCCCCCCC77CCC77"
DATA "7777CCC7777777777CCC7777777CC777"
DATA "55550055555000000000055500000766"
DATA "033333300000000000EEEEE000000030"
DATA "77CCC77777CCCCCCCCCCCCCCC77CCC77"
DATA "777CCCCC7C7777CCCCCCC77777CCC777"
DATA "55550055555500000000555500000055"
DATA "0333B33000000000000E8E00000000B0"
DATA "77CCC777777CCCCCCCC77CCCCCCCC777"
DATA "777CCCCCCC7777C7CCCCC77777CCCC77"
DATA "55555555555550000005555500000666"
DATA "003333000000B00000EEEEE000000B30"
DATA "777CC7777777CCCCC777777CCCCC7777"
DATA "7777CCC7777777777CCC777777CCCC77"
DATA "55055555555555000055555500077776"
DATA "00044000000B000000EE3EE003000B00"
DATA "777CC777777777777777777777777777"
DATA "777777777777777777777777777CC777"
DATA "55555555555555500555555500000766"
DATA "00044000030B00300000B00000B0B300"
DATA "77CCCC77577777777777777777777775"
DATA "57777777777777777777777557777775"
DATA "55555555555555555555555500000055"
DATA "00999900030330300000B00000303300"
DATA "57777557775777750777777777777777"
DATA "77777770077777700000000000000000"
DATA "CCCCCCCC000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "77777777777777777000077700007770"
DATA "00007777700077770000000000000000"
DATA "C77CCCCC000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "7777CC7777CC777770CC777CCCC777CC"
DATA "CCC7770770C777070000000000000000"
DATA "C77CC7CC000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "777CCCCCCCCCC77770C777CCCC777CCC"
DATA "CC777C0770777C070000000000000000"
DATA "CCCCCCCC000000000000000000000000"
DATA "00006000000000000000000000000000"
DATA "77CCCCCCCCCCCC777077700007770000"
DATA "07770007777700070002EEEEEEEE2000"
DATA "CCCCCCCC000000000000000000000000"
DATA "00060600000000000000000000000000"
DATA "57CC77CCCCC7CC757777000077700000"
DATA "7770000777700007002EEEEEEEEEE200"
DATA "CC7CCCCC000000000000000000000000"
DATA "00D00060000000000000000000000000"
DATA "577C77CCCCCCC7757000000000000000"
DATA "000C000770000C0700EEEEEEEEEEEE00"
DATA "CCCCC7CC000000000000000000000000"
DATA "0D00000C000000000000000000000000"
DATA "777CCCCCCCCCC7777000000000000000"
DATA "000000077000000700E22222E2E22E00"
DATA "CCCCCCCC000000000000000000000000"
DATA "D000000C000000000000000000000000"
DATA "777CCCCCCCCCC7777000000000000000"
DATA "000000077000000700EEEEEEEEEEEE00"
DATA "0000000000000000000000000000000C"
DATA "0000000C000600000000000000000000"
DATA "577CCCCCCCCCC7777000000C00000000"
DATA "0000000770CC000700E22E2222E22E00"
DATA "000000000000000000000000000000D0"
DATA "00000000C060D0000000000000000000"
DATA "57CC7CCCC77CCC7570000000000CC000"
DATA "0000000770CC000700EEEEEEEEEEEE00"
DATA "00000000000000000000000000000C00"
DATA "000000000D000D000000000000000000"
DATA "77CCCCCCC77CCC7770C00000000CC000"
DATA "00000C0770000C0700EEE222E22EEE00"
DATA "00000000000000000000000000000C00"
DATA "00000000000000000000000000000000"
DATA "777CCCCCCCCCC7777000000000000000"
DATA "000000077000000700EEEEEEEEEEEE00"
DATA "5555555506666600666666006600C000"
DATA "66666600066666006666660066666600"
DATA "7777CC7777CC77777000000000000000"
DATA "0000000770C0000700EEEEEEEEEEEE00"
DATA "555555556666666066666660660C0000"
DATA "66666660666666606666666066666660"
DATA "777777777777777770000000C0000000"
DATA "000000077000000700EE77EEE7777E00"
DATA "55555555660006606600000066000000"
DATA "66000000660000000066000066000000"
DATA "57777577775577757000000000000000"
DATA "000000077000C0070777777777777770"
DATA "55555555DD000000DDDD0000DD000000"
DATA "DDDD0000DDDDDDD000DD0000DDDD0000"
DATA "00000000000000007000000000000000"
DATA "00000007700000070077770050000000"
DATA "00000005DD000DD0DD000000DD0000D0"
DATA "DD000000000000D000DD0000DD000000"
DATA "00AAAAAAAAAAAA007000000000000000"
DATA "00000007700C00070700007055000000"
DATA "00000055DDDDDDD0DDDDDD00DDDDDDD0"
DATA "DDDDDD00DDDDDDD000DD0000DDDDDD00"
DATA "0A999999999999A0700000000000C000"
DATA "00000007700000077077000755500000"
DATA "000005550DDDDD00DDDDDDD0DDDDDDD0"
DATA "DDDDDDD00DDDDD0000DD0000DDDDDDD0"
DATA "A99AAAAAAAAAA99A7000000CC0000000"
DATA "000000077000CC077077BB0755550000"
DATA "00005555000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "A9AAAAAAAAAAAA9A7000000CC0000000"
DATA "000C00077000CC07700BBB0755555555"
DATA "555555550000000000000C0000000000"
DATA "00000000000000000000C00000000000"
DATA "A99999999999999A70C0000000000000"
DATA "0000000770C00007700BBB0755555555"
DATA "55555555000000000000C00000000000"
DATA "000000000000000000000C0000000000"
DATA "A99999999999999A7000000000000000"
DATA "00000007700000070700007055555555"
DATA "555555550000000000CC000000000000"
DATA "0000000000000000000000C000000000"
DATA "A99999999999999A0777777777777777"
DATA "77777770077777700077770055555555"
DATA "55555555000000000C00000000000000"
DATA "0000000000000000000000C000000000"
DATA "AAAAAAAAAAAAAAAA0777777777777777"
DATA "7777777007777770004BBB00004B0000"
DATA "00400BBB00000000C000000000000000"
DATA "0000000000000000000000C000000000"
DATA "A49494A11A49494A7000777000007770"
DATA "0000777770007777004BBBBB004BB000"
DATA "004BBBBB000000010000000000000000"
DATA "0000000000000000000000C00C000000"
DATA "A494A4A11A4A494A70C777CCCCC777CC"
DATA "CCC7770770C7770704200BBB042BBBBB"
DATA "042BBB00000000C00000000000000000"
DATA "00000000000000000000001010C00000"
DATA "A49444AAAA44494A70777CCCCC777CCC"
DATA "CC777C0770777C07040000000400BBB0"
DATA "04000000000001000000000000000000"
DATA "000000000000000000000001000C0000"
DATA "A49999AAAA99994A7777000007770000"
DATA "07770007777700070400000004000000"
DATA "04000000000001000000000000000000"
DATA "00000000000000000000000000010000"
DATA "A49444999944494A7770000077700000"
DATA "7770000777700C074200000042000000"
DATA "42000000000001000000000000000000"
DATA "00000000000000000000000000001000"
DATA "A494A444444A494A7000000000000000"
DATA "00000007700000074000000040000000"
DATA "40000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "A49499999999494A0777777777777777"
DATA "77777770077777704000000040000000"
DATA "40000000000100000000000000000000"
DATA "00000000000000000000000000000010"
' GFF
DATA "00000000000000000000000000000000"
DATA "04020000000000000000000200000000"
DATA "03030303030303030404040202000000"
DATA "03030303030303030404040202020202"
DATA "00001313131302020302020202020002"
DATA "00001313131302020402020202020202"
DATA "00001313131300040402020202020202"
DATA "00001313131300000002020202020202"
' MAP
DATA "23312525482525323232323233000024"
DATA "25262425252631323232252628282824"
DATA "25252525252532332838282831252525"
DATA "32323232330000003132323232323232"
DATA "32330000002432323233313232322525"
DATA "25252548252525252525252628282425"
DATA "25482525252628282828242548252525"
DATA "26282828283132323225482525252525"
DATA "25233132323233290000282900000024"
DATA "2526313232332828002824262A102824"
DATA "254825252526002A2828292810244825"
DATA "28282829000000002828290000000000"
DATA "2810000000372829000000002A283148"
DATA "25252525254825253232323328282425"
DATA "25254825323338282A28313225254825"
DATA "2628382828282A2A2831323232322525"
DATA "252523201028380000002A0000003D24"
DATA "252523201028292900282426003A3824"
DATA "25252548253300002900002A00312525"
DATA "28382900003A67683828000000000000"
DATA "3828393E003A28000000000000280024"
DATA "25253232323232332122222328282425"
DATA "252532332828282900002A2831322525"
DATA "26282828282900002A28282838282448"
DATA "3232332828282900000000003F202024"
DATA "4825262828290000002A243300002A24"
DATA "25322525260000000000000000003125"
DATA "29000000002122232828000000000000"
DATA "2A282834353629000000000000283924"
DATA "25262122232021233132323328282425"
DATA "48262B000000000000001C00003B2425"
DATA "26282828000000000028282828282425"
DATA "2340283828293A283900000034352225"
DATA "25482629000000000000300000000024"
DATA "33003125333D3F000000000000000031"
DATA "00001C3A3A3125262028390000000000"
DATA "0010282828290000000011113A282831"
DATA "32332425261031332028282828382425"
DATA "25262B000000000000000000003B2425"
DATA "262A2828670016002A28283828282425"
DATA "263A2828281028290000000000003125"
DATA "25323300000000110000370000003E24"
DATA "00000037212223000000000000000000"
DATA "39586828282824262829000000000000"
DATA "2A282829000000000000212328382829"
DATA "2828313233282829002A002A28282425"
DATA "25332B0C00000011110000000C3B3148"
DATA "26112810000000006828282828282425"
DATA "252235353628280000000000003A2824"
DATA "26003D003A3900270000000000002125"
DATA "001A000024252611111111000000002C"
DATA "28382828283831332800000017170000"
DATA "002A0000000011110000242610282900"
DATA "28281B1B1B282800000000002A212548"
DATA "2628390000003B34362B000000002824"
DATA "252328283A67003A28282829002A3132"
DATA "25333828282900000000000000283824"
DATA "25232020102900303900000000582448"
DATA "0000003A31323235353536675800003C"
DATA "28282828102821232900000000000000"
DATA "0000000000003436003A242628280000"
DATA "3828390000002A290000000000313232"
DATA "26101000000000282839000000002A24"
DATA "25332828283800282828390000001700"
DATA "2600002A28000000003A283A28282824"
DATA "25252223283900372858390068283132"
DATA "00000028282828282020282828392122"
DATA "2829002A282824260000000000000000"
DATA "00000000000020382828312523000000"
DATA "282828290000000000163A6768282800"
DATA "3338280B00000010382800000B000031"
DATA "33282828282868282828280000001700"
DATA "33000000286758000028102828342225"
DATA "25254826282867202828283828282122"
DATA "00003A283828102900002A2838282425"
DATA "2A000000283824260000001717000000"
DATA "0000000000002728282A283133390000"
DATA "282900000000000000002A2828282900"
DATA "2A2839000000002A2829000000000000"
DATA "28282838282828282828290000000000"
DATA "0000003A2828383E3A28282838282425"
DATA "48252526002A282729002A2828343225"
DATA "0000002A282828000000002810282425"
DATA "000000002A2824260000000000000000"
DATA "00000000000037280000002A28283900"
DATA "28000000392839000000000028280000"
DATA "0028290000002A282800000000000000"
DATA "2A282828281028282828675800000000"
DATA "0000002838282821232800002A282425"
DATA "32322526003A2830000000002A282824"
DATA "00000000002A28111111112828282448"
DATA "0000003A282831330000000000001717"
DATA "00013F00000020290000000038280000"
DATA "28013A28281028580000003A28290000"
DATA "002A280C0000003A380C00000000000C"
DATA "00002A2828282828292828290000003A"
DATA "00013A2123282A313329001111112425"
DATA "002831263A3829300000000000002A31"
DATA "0000000000002834222236292A002425"
DATA "3E013A3828292A000000000000000000"
DATA "35353536000020000000003D2A286714"
DATA "22222328282828283900582838283D00"
DATA "003A2900000000282800000000000000"
DATA "00002A28282A29000058100012002A28"
DATA "22222225262900212311112122222525"
DATA "002A3837282900301111110000003A28"
DATA "00013F0000002A282426290000002425"
DATA "22222223290000000000000017170000"
DATA "2A282039003A2000003A003435353535"
DATA "25252522222223282828281028282122"
DATA "0B10000000000B28100000000B000000"
DATA "2C00002838000000002A283917000028"
DATA "25482525261111242522222525254825"
DATA "00012A2828673F242222230000003828"
DATA "222223000012002A2426000000122425"
DATA "25252526000000001717000000000000"
DATA "00382028392827080028676820282828"
DATA "254825252525262A2828212222222525"
DATA "3A28013D000000682839000000000000"
DATA "3C0168282800171717003A2800003A28"
DATA "25252525252222252525252525252525"
DATA "22222222222222252548266758682828"
DATA "25482600002700002426000000212525"
DATA "25254826171700000000000000000000"
DATA "002A2028102830003A28282820282828"
DATA "2525252548252600002A242525254825"
DATA "28212223000000282828000000000000"
DATA "22222223286700000000282839002838"
DATA "25323300000024323232323232322525"
DATA "25252628282828242532323232254825"
DATA "25323232323232322526282828244825"
DATA "25252533000000000000000000000052"
DATA "25253232323233313232323233282900"
DATA "26282928670000000000282831323232"
DATA "25252532332828003125254825252548"
DATA "25254826283828313232323232322548"
DATA "26282800000030402A28282828282425"
DATA "25482628382828313338282900313225"
DATA "26280000163A28283133282838242525"
DATA "48252600000000000000000000000052"
DATA "2526000016000000002A102828383900"
DATA "26281A3820393D000000002A38282828"
DATA "25252628282829003B24253232323232"
DATA "32323233282828282828102828203125"
DATA "3328390000003700002A3828002A2425"
DATA "252526282828282028292A0000002A31"
DATA "3328111111282828000028002A312525"
DATA "25252600000000000000000000000052"
DATA "2526000000001111000000292A282900"
DATA "26283A28201020111111212223282810"
DATA "25252628382800003B24262B002A2A38"
DATA "282828282829002A2800282838282831"
DATA "28281029000000000000282839002448"
DATA "25252628290028206700000000000000"
DATA "3810212223283829003A1029002A2425"
DATA "32323367000000000000000000004200"
DATA "25263900000021230000000000212222"
DATA "25222223212223212223244826282828"
DATA "32323328282800003B31332B00000028"
DATA "102829000000000029002A2828282900"
DATA "2828280016000000162A282828002425"
DATA "2525262700002A202900000000000000"
DATA "2834252533292A0000002A0011112425"
DATA "2223282800002C46472C000000425353"
DATA "25262800003A24260000160000242525"
DATA "25254826313233313233242526202838"
DATA "22222328292867000028290000000000"
DATA "283800111100001200000028292A1600"
DATA "283828000000000000003A2829002425"
DATA "4825263700000029000000000000003A"
DATA "293B2426283900000000003B21222525"
DATA "2526382867003C56573C424343536363"
DATA "32332839002824261111111111242525"
DATA "25482526201B1B1B1B1B242526282828"
DATA "25252600002A28143A29000000000000"
DATA "28293B21230000170000112867000000"
DATA "28282867580000005868283800003132"
DATA "32323320000000000000000000272828"
DATA "003B2426290000000000003B31254825"
DATA "25332828283921222223525353640000"
DATA "29002A28382831323535353522254825"
DATA "25252525230000000000313233281028"
DATA "48252611111134353611111111000000"
DATA "00003B3133111111111127282900003B"
DATA "2828282810290000002A282867000028"
DATA "35353536111100000000000011302838"
DATA "003B3133000000000000002A28313225"
DATA "262A2828102824252526626364000000"
DATA "00160028282829000000000031322525"
DATA "252525252667580000002000002A2828"
DATA "25253235353522222222223536390000"
DATA "00003B34353535353536303800000017"
DATA "282900002A0000000000382A29003A28"
DATA "28282834362000000000000020302828"
DATA "00002A29000011110000000028282831"
DATA "260029002A2824482525230000000000"
DATA "39003A28290000000000000000283132"
DATA "25254825263829000000170000586828"
DATA "32331028293B24482525262828280000"
DATA "00003B201B1B1B1B1B1B302800000017"
DATA "283A0000000000000000280000002828"
DATA "283810292A000000000000002A371028"
DATA "1111111111112136000000002A28380B"
DATA "2600000000212525252526001C000000"
DATA "2828281000000000001100002A382829"
DATA "252525252628000000001700002A2122"
DATA "28282908003B24252548262828291200"
DATA "0000001B00000000000030290000003B"
DATA "3829000000000000003A102900002838"
DATA "282828000000000000000000002A2828"
DATA "22353535353533000000000000282839"
DATA "33000000003132252525330000000000"
DATA "28382829000000003B202B0068282800"
DATA "32323232332900000000000000003125"
DATA "28280000003B31323225263828001700"
DATA "00000000000000110000370000000000"
DATA "290000000000000000002A0000002829"
DATA "28292A0000000000000000000000282A"
DATA "33283828282900000000000000102828"
DATA "00000000424344242526283900000000"
DATA "28002A0000110000001B002A2010292C"
DATA "1B1B1B1B000000000000000000001031"
DATA "2829160000001B1B1B31332810670000"
DATA "0000001100003A2700001B0000000000"
DATA "00000100000011111100000000002A3A"
DATA "2A0000000000000000000000002A2800"
DATA "282829002A0000000000000000282828"
DATA "00000000525354244826282800000000"
DATA "290000003B202B39000000002900003C"
DATA "00000000000000000000000000002828"
DATA "2800000000000000001B1B2A28290000"
DATA "01000027390038300000000000000000"
DATA "1111201111112122230000001212002A"
DATA "00010000000000000000000000002900"
DATA "290000000000000000002A6768282900"
DATA "003F01005253542425262810673A3900"
DATA "013F0000002A38290011000000000021"
DATA "01000000000000003A67000000002A38"
DATA "28675868000001000000006828000000"
DATA "21230037282928300000000000000000"
DATA "22222222222324482611111120201111"
DATA "00273900001717000000171700000000"
DATA "0001000000001717000000282838393A"
DATA "00212223525354242533282828382900"
DATA "22232B00000828393B27000000001424"
DATA "23000000120000002829000000000028"
DATA "28281028670017171717172828390000"
DATA "31333927101228370000000000000000"
DATA "25482525252624252621222222222222"
DATA "3A303800000000000000000000000000"
DATA "001717000000000000003A2828282828"
DATA "00242526525354242628282828282839"
DATA "25262B00003A28103B30000000212225"
DATA "260000002700003A2800000000000028"
DATA "28382828283900000058682838280000"
DATA "22233830281728270000000000000000"
DATA "00000000000000002824252525254825"
DATA "33290000313232322532323232322532"
DATA "00000000000000003B20000031323225"
DATA "2526002A283824252532323232323232"
DATA "000000000000002A1028290031323225"
DATA "63636364525353535455000000555253"
DATA "25482525262B00000000000024252525"
DATA "26282828242548252525482525252525"
DATA "00000000000058682824482525252525"
DATA "1B0016001B1B1B1B301B1B1B1B1B301B"
DATA "000000000000001111200000002A2824"
DATA "25330000002A31323300002900003829"
DATA "0000000000001100002A0000002A2831"
DATA "00000000626363636455000000555253"
DATA "25252548262B3A000000000024254825"
DATA "26283828313232323232323225254825"
DATA "0000000000002A102831322525482525"
DATA "00000000000000003700000000003700"
DATA "0000000000003B343536001400001031"
DATA "262B0000000000000000000000002A00"
DATA "00000000003B202B0012000000002A28"
DATA "00000000000000000065000000556263"
DATA "25252532332B28290011112024252525"
DATA "261029002829000000002A2831252525"
DATA "00000000000000002A28282425252548"
DATA "00000000000000001B00000000001B00"
DATA "00000000000000003B3435363900001B"
DATA "26727373737373737373737411000016"
DATA "0000001100001B003B202B0000001628"
DATA "00000000000000000000000000650000"
DATA "25253328282828103A21222225252525"
DATA "262800002A0011111100002838242525"
DATA "00000000000000393A28282425252525"
DATA "00001600001100000000001100000000"
DATA "11000000000000000000002010280011"
DATA "252222222222222222222222232B0000"
DATA "00003B202B000000001B00000000002A"
DATA "00000000000000003900000000000000"
DATA "48262828283828282831323225482525"
DATA "26290000001142434400002A28242548"
DATA "000000000000002A2838282448252525"
DATA "000000003B202B3916003B202B001600"
DATA "27393A00000000000000001B2A283921"
DATA "254825252525253232323232262B0000"
DATA "0000001B000000110000000000000000"
DATA "00000000390000682800003A00000000"
DATA "25262828102A002A2828290031323232"
DATA "26111111114253535400003B21252525"
DATA "00000000000000002828283132323232"
DATA "2800003A001B3A283900001B00000000"
DATA "3728383911000000000000113A282831"
DATA "323232322548262829002A10372B0016"
DATA "0000000000003B202B00001600000000"
DATA "00003A58282868282828282839000000"
DATA "2526382829000000002A000000000000"
DATA "25222222236263636400003B24252525"
DATA "000000111111113A2828101B1B1B1B1B"
DATA "28392828390028280000000000000000"
DATA "1B002A282711000000003B272828381B"
DATA "22222223313233160000682900000000"
DATA "000100000000001B0000000000000000"
DATA "683928282828102900002A10283A6768"
DATA "25262828390000000000000000000000"
DATA "25254825252328382900003B24482525"
DATA "00006821222223283828283900000000"
DATA "28282828283828290000000000001600"
DATA "11003A283727000000003B372A282911"
DATA "2525482638282A0000002A0000000000"
DATA "00201111111111111111111111110016"
DATA "2828282A382828000000000028282828"
DATA "25262829000000000000000000000000"
DATA "252525252526102A0000003B24252525"
DATA "00001031322525223535353600000000"
DATA "2838002A282828103939000011000000"
DATA "272828291B3039000000001B002A2821"
DATA "25322526290000000000003A00000000"
DATA "00343535353535353535353535362B00"
DATA "28282900282829006061003A2838282A"
DATA "48260000000000000000000000000000"
DATA "25482525252629000011111124252525"
DATA "00002A28283132261B1B1B1B00000000"
DATA "29000000002A28282828393B272B0000"
DATA "372810001130283A0000001100282831"
DATA "26013133160000000000002839000000"
DATA "00202838282828202828282828272B00"
DATA "382800002A283D0070713F2828290000"
DATA "25260000000000003900000000000000"
DATA "25252525482600003B21222331254825"
DATA "0000002838293B300000000000120000"
DATA "00000000000000282828283B302B0000"
DATA "1B2A283827302810390000273A28291B"
DATA "26170000000000003900003828000000"
DATA "001B2A282810281B2A28382A28372B00"
DATA "2828390000282122232122232800003A"
DATA "32330000000000002829000000000000"
DATA "32323232323300003B24252523312525"
DATA "0000002A28003B37000000003A270000"
DATA "00010000001111111128383B372B003A"
DATA "00002828373029002838003728380011"
DATA "26390000000000002800002828290000"
DATA "00000029162A28000028160028280000"
DATA "10290000002031323324482628424343"
DATA "00000000000000002800005868000000"
DATA "38282829000000003B24254825233132"
DATA "00000100280000280000002A28300000"
DATA "22222311112135353610282829000038"
DATA "000029001B3000002A28000028280021"
DATA "262829000000003A2829002828000000"
DATA "005868000028283A2828390028291600"
DATA "28000100002122222225252523525353"
DATA "0000003F0100003A2800002A10000000"
DATA "28290000000039003B24252525252222"
DATA "40002122232B00383912006838303900"
DATA "2548252222260C002A28282800003A28"
DATA "010000003A3708000028390028290031"
DATA "262800000000002838003A2810000000"
DATA "002A282828292A282838282828000000"
DATA "43434343442425482525252526525353"
DATA "00000021360000382839000028001C00"
DATA "28013D3E003A28003B24252525482525"
DATA "21232425262B68282827282810302800"
DATA "25252525482600000028282900002828"
DATA "2300000038283900002A28102800001B"
DATA "26383900000000282800282828390000"
DATA "00000038280000002A28102800000000"
DATA "53535353542425252525254826525353"
DATA "00000030424400282828000028390000"
DATA "22222223102838393B24252525252525"
DATA "2525252525262B1B1B1B313232252600"
DATA "48253232323232322525323232332828"
DATA "25252525252525252525482532332B28"
DATA "32323232322526282800003B24252525"
DATA "25482525252525484825252526382824"
DATA "25482525323328282924253232322525"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "2525254825262B0000001B1B1B242600"
DATA "323328670000002824332B2A28102838"
DATA "2525254825253232323225261B1B0038"
DATA "2901003A282426382900003B24323232"
DATA "32323232323232323232322526102831"
DATA "252532331B1B10281431333828282448"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "2525252525262B00000000002A242667"
DATA "282838290000112A372B003A28272900"
DATA "2525252525331B1B1B1B313300000028"
DATA "35353536282426281400003B30282A2A"
DATA "1A2829002A2838282810282426002A38"
DATA "25261B1B00003821232B000008102425"
DATA "0000000000003A000000000000000000"
DATA "00000000000000000000000000000000"
DATA "2548253232332B000000110028242629"
DATA "28102A00003B27002900000038300000"
DATA "32322525262B000000003B2700003A28"
DATA "2828382828242522232B003B37290800"
DATA "0010001100292A2829112A3133003A28"
DATA "25262B0000002A31332B000068282425"
DATA "00000000000010000039000000000000"
DATA "00000000000000000000000000000000"
DATA "2525262122232B003A67272B2A242638"
DATA "28290000003B30000000003A28300000"
DATA "22233132332B000000003B302839002A"
DATA "3828291029244825262B000000000000"
DATA "002A3B202B3A16283B202B0011000028"
DATA "25262B000000001B1B00002A382A2425"
DATA "000000003A0028000038000000000000"
DATA "0000000000494A4B4C4D4E4F00000000"
DATA "2525262448262B002A38302B12242629"
DATA "38000000003B3000000000002A303E14"
DATA "25252222232B000000003B3029000000"
DATA "2829000000242525262B000000000000"
DATA "0000001B002A2828001B003B202B112A"
DATA "25262B000000000000000000293B2448"
DATA "00000000286728000010003900000000"
DATA "0000000000595A5B5C5D5E5F00000000"
DATA "3232333132262B120028302B17313300"
DATA "28395868393B30111111111111242222"
DATA "25254825262B000011003B302B000000"
DATA "2811111111242548262B000000000000"
DATA "0000000000001110675811001B3B2016"
DATA "482611111111000000160000003B3125"
DATA "00000000283828760028672800000000"
DATA "0000000000696A6B6C6D6E6F00000000"
DATA "280000002A301127002A302B00101039"
DATA "28283828343532353535353535252548"
DATA "25252525262B003B27003B302B000000"
DATA "2834353535323225262B000011000000"
DATA "00000000003B20282838272B16001B00"
DATA "2525232122232B000000000000001B24"
DATA "000000002A2828212328382900000000"
DATA "0000000000797A7B7C7D7E7F00000000"
DATA "29001100003135262B00313535353535"
DATA "29002A0000102828282829003B242525"
DATA "32323232262B163B30003B3000000000"
DATA "291B1B1B1B1B3B24262B003B272B0000"
DATA "0011000000001B2A2828372B00000000"
DATA "3232333132332B000011110000003B24"
DATA "0000006838282125252328393A000000"
DATA "00000000000000000000000000000000"
DATA "003B272B002A38302B0000002A28393B"
DATA "0000000000002A283828286721252525"
DATA "1B1B1B1B372B003B30393B3016000000"
DATA "0000000000003B24262B173B302B0000"
DATA "3B202B110000001100291B000000003A"
DATA "1B1B1B1B1B1B00111121231100003B24"
DATA "0000002A282125482525232838680000"
DATA "00000000000000000000000000000000"
DATA "083B302B00002830111111110028383B"
DATA "11111111110000282900292824254825"
DATA "0000003A2800003B30283B3700000000"
DATA "0000000000003B2426111111302B0000"
DATA "001B3B202B003B272B00000000000028"
DATA "2B01000000003B21222532362B003B31"
DATA "58586828292425252525261028286800"
DATA "00000000000000000000000000000000"
DATA "003B372B00002A31353535360028293B"
DATA "22222222231111202B00002A31322525"
DATA "000000103829003B3028282800000000"
DATA "111111113900112425222222332B0000"
DATA "0100001B00003B302B00000000586828"
DATA "2B17000000003B2425331B1B0000001B"
DATA "281028380031322525482629002A2800"
DATA "00000000000000000000000000000000"
DATA "39001B000000001B1B1B1B1B002A003B"
DATA "323232323235361B000000001B1B3125"
DATA "000000002800003B3028382900000000"
DATA "2222222328383432323232332B000000"
DATA "2339000000003B372B000000002A1028"
DATA "1111111100003B31331B003A00160000"
DATA "002A28393F2123242532332000002800"
DATA "00000000000000000000000000000000"
DATA "2829000001001400000000000000003B"
DATA "39013D00002A28000000000000002824"
DATA "000000682867003B30002A2867000000"
DATA "25252526002828003A10282A0016003A"
DATA "262800000000001B000000393A283828"
DATA "222222232B00001B1B00003800000068"
DATA "00002122222526313321222328392867"
DATA "00000000000000000000000000000000"
DATA "1067583A21222311111111110012003B"
DATA "222223390010283900000000083A1031"
DATA "01003A382829003B3700003829000000"
DATA "25482526002A28282838290000000028"
DATA "263839120000000000003A2828282810"
DATA "254825262B160000390000283A003A28"
DATA "01003125254825222225252523103828"
DATA "00000000000000000000000000000000"
DATA "2838282824252522222222230017003B"
DATA "252526283A2838280000000000382828"
DATA "23001028280000003800002810000000"
DATA "25252526171728382800000000003A28"
DATA "2628102739000000002A282838282828"
DATA "252548262B00003A38003A2810283828"
DATA "21222324252525252525482525222223"
DATA "00000000000000000000000000000000"
' SFX
DATA "0002000036370234702F3701D4702A37"
DATA "017470273701347023370114701E3700"
DATA "E4701A3600C460163500844012330054"
DATA "20196001960019600196003F6003F600"
DATA "3F6003F6003F6003F6003F6003F6003F"
DATA "6003F6000002000011070130701A0702"
DATA "40700000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "0000000000000000000300000D070100"
DATA "70160702207000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000020000"
DATA "0642008420094200B420224402A4503C"
DATA "6503B6503B6503965036650326502D65"
DATA "02865024640216401D6401A640166301"
DATA "16300E6300B620076200561003610106"
DATA "00106000060000600006000060000600"
DATA "000400000F0701E07012070220701707"
DATA "0260701B0602C0602105031050270403"
DATA "60402B0303A030300203E02035010000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000300000977009770097600"
DATA "97500874007730067200571535700347"
DATA "00347003470034700347003470035700"
DATA "35700357003570035700347003470034"
DATA "70033700337003370033700007000070"
DATA "000700007000070000030000241700E1"
DATA "702D1701617034170201603B16028150"
DATA "3F1402F120281101D110101100311000"
DATA "10000100001000010000100001000010"
DATA "00010000100001000010000100001000"
DATA "01000010000100001000010000020000"
DATA "101101211014110161101A1202012026"
DATA "13032140321403410000100001000010"
DATA "00010000100001000010000100001000"
DATA "01000010000100001000010000100001"
DATA "00001000010000100001000010000100"
DATA "00030000070700A0700E070100701607"
DATA "0220702F0702F0602C0602C0502F0502"
DATA "F0402C0402C0302F0202F0102C000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "000000000003000005110071303F6403"
DATA "F6403F6303F6203F6103F6153F6003F6"
DATA "003F6000060000600006000060000600"
DATA "00600006000060000600006000060000"
DATA "60000600006000060000600006000060"
DATA "00060000600006000110002001775006"
DATA "05017750170523655017750160500605"
DATA "01775006050170507605236550060501"
DATA "77500605017750170501775006052365"
DATA "50177501605006050177500605256050"
DATA "16052365525605017752365500200000"
DATA "1D0401D0401D0301D020180401804018"
DATA "030180201B0301B02022040220461F03"
DATA "51F03016040160401D0401D0401D0021"
DATA "30611803018030180021F06124050220"
DATA "2016040130201D0401B0221804018040"
DATA "00100000070700706007050110000707"
DATA "007060030510F0700A0700A0600A0500"
DATA "A0000A0700A060050500504003070030"
DATA "6003000030500C0700C0601105016070"
DATA "160600F071050500A07005050030510A"
DATA "0700A060000400000C5501C560105702"
DATA "3570195702C5702157037570285703B5"
DATA "702C5703E560315503E540315303E530"
DATA "315203F520315203F520315103F51031"
DATA "5103F510315103F510315103F5000050"
DATA "0005000050000500000400002F7402B7"
DATA "60267701D7701577015770197701C750"
DATA "17730017001570000700007000070000"
DATA "70000700007000070000700007000070"
DATA "00070000700007000070000700007000"
DATA "07000070000700007000070000030000"
DATA "096450E655066550A6550D6550565511"
DATA "655076550C6550465509655116450863"
DATA "50D61500605006050060500605006050"
DATA "06050060500605006050060500605006"
DATA "05006050060500605006050060500605"
DATA "011000001F3751837527375273002730"
DATA "0243001D300263002A3001C300193000"
DATA "03000030000300003000030000300003"
DATA "00003000030000300003000030000300"
DATA "00300003000030000300003000030000"
DATA "30000300011000002953429554295741"
DATA "D5402257022560185701857018560185"
DATA "00185701856000500165701657216562"
DATA "275142753427554275741F5701F5601F"
DATA "500135201B5513553030560245402957"
DATA "0295602257022560011000200A0700A0"
DATA "500F0710F0500A0600A0401107011050"
DATA "07000070001107011050070600704000"
DATA "000000000A0700A0500F0700F0500A06"
DATA "00A04013071130500000000000130701"
DATA "30500F0700F050000000000000200000"
DATA "2204022030220201B011240402403027"
DATA "0501F0202B0402202027050220202904"
DATA "029030290201601022040220302B0401"
DATA "B030240422403227040180301D0401D0"
DATA "301F0521F0421F0301D0211D0401D030"
DATA "0108002001770017753F6253B6003C60"
DATA "03B6003F6253160023650236553C6000"
DATA "00003F62500000017750170001770017"
DATA "753F6003F6003F625000003F62500000"
DATA "236502365500000000003F6250000000"
DATA "00000000002000200A1400A1300A1201"
DATA "113011120111101B1401B13018152181"
DATA "42181321314013140131301312013110"
DATA "0F1400F1300F12011130111201111016"
DATA "14216132131501314013130131201311"
DATA "0131101311013100001000202E750377"
DATA "502E730377302E720377202E71037710"
DATA "227502B750227302B7301D750247501D"
DATA "730247301F750277501F730277301F72"
DATA "02772029750307502973030730297203"
DATA "07202971030710297103071000060000"
DATA "18770357703577035760357503574035"
DATA "73035720357103570000700007000070"
DATA "00070000700007000070000700007000"
DATA "07000070000700007000070000700007"
DATA "00007000070000700007000070000700"
DATA "00180020294503571029440357102943"
DATA "03771029420377102245035710224402"
DATA "74503C710274403C710274202E450357"
DATA "102E440357102E430377102E42037710"
DATA "2E410244402B45035710294503C71029"
DATA "4403C710001800200557005570055700"
DATA "5570055700000005570075700A5700A5"
DATA "700A570000000A570000000A57003570"
DATA "05570055700557000000055700557005"
DATA "570000000A570075700C5700C5700F57"
DATA "0000000A57007570010C00103B6352E6"
DATA "003B625000003B615000000000033600"
DATA "33640336303362033610336103F6003F"
DATA "61500000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "000000000000000000000000000C0020"
DATA "24450307102B4503071024440307002B"
DATA "44037700244203A7102B4203A7102441"
DATA "0357102B410357101D45033710244503"
DATA "C7101D4403771024440337001D420357"
DATA "00244202E7101D4102E7102441037700"
DATA "011800200C5700C5600C550000001157"
DATA "011560115500C5000C5700C5600F5710"
DATA "F56013570135600A5700A5600C5700C5"
DATA "600C550000000F5700F5600F55000000"
DATA "0A5700A5600A5500F50011570115600A"
DATA "5700A560001800200C5700C5600C5500"
DATA "0000115701156011550000000C5700C5"
DATA "600F5710F56013570135600F5700F560"
DATA "0C5700C5700C5600C5600C5500C5300C"
DATA "5000C5000C5000A5000A5000A5001150"
DATA "0115000A5000A500000C002024771247"
DATA "7024762247523A0103A010187523A010"
DATA "35010350101875235010187503700037"
DATA "00037000227712277222762227001F77"
DATA "11F7721F762247002277122772227620"
DATA "070027771277722776200700000C0020"
DATA "247712477024762247523A0103A01018"
DATA "7503A010350103501018750350101875"
DATA "01870018700007001F7711F7701F7621"
DATA "F7521870000700187511B70022771227"
DATA "70227622275237012370123701237002"
DATA "000C0000247712477024772247722476"
DATA "22475224742247322472224712007000"
DATA "0700007000070000700007002E0002E0"
DATA "002E0102E01035010350103301133010"
DATA "2B0102B0102B0102B000300103001230"
DATA "01230012000C00200C3320C3320C3220"
DATA "C3220C3120C3120C3120C3020C3320C3"
DATA "320C3220C3220C3120C3120C3120C302"
DATA "07332073320732207322073120731207"
DATA "312073020A3320A3320A3220A3220A31"
DATA "20A3120A3120A302000C00000C3300C3"
DATA "300C3200C3200C3100C3100C3103A000"
DATA "0C3300C3300C3200C3200C3100C3100C"
DATA "3103F0000A3300A32013330133200733"
DATA "00732007310113000A3300A3200A3103"
DATA "C0000F3300F3200F3103A00000040000"
DATA "336251A6050000500005000050000500"
DATA "00500005000050000500005000050000"
DATA "50000500005000050000500005000050"
DATA "00050000500005000050000500005000"
DATA "05000050000500005000050000500005"
DATA "000C00000C3300C3300C3300C3200C32"
DATA "00C3200C3100C3100C3100C310000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "0A3000A3000A3000A3000A3310A33003"
DATA "32103320001000000C3500C3400C3300"
DATA "C3200F3500F3400F3300F32018350183"
DATA "4013350133401835013350163401D360"
DATA "22370223702236022350223402232013"
DATA "30013300183001830013300133001630"
DATA "0163001D3001D300000C0000242752B2"
DATA "7530275242652B26530265242552B255"
DATA "30255242452B24530245242352B23530"
DATA "235242252B22530225242152B2153021"
DATA "5242052B20530205242052B205302053"
DATA "A2052E20500205002050020500100010"
DATA "2F65501075010753F615010753F6152F"
DATA "65501075010753F615010753F6152F65"
DATA "53F615010753F6150000500005000050"
DATA "00050000500005000050000500005000"
DATA "05000050000500005000050000500005"
DATA "0010000016270162701F2711F2701F27"
DATA "01F270182711827013271132701D2711"
DATA "D270162711627016270162701B2711B2"
DATA "701B2701B270000001B200000001B200"
DATA "00000000000000000000000000000000"
DATA "00000000000800202457530575245453"
DATA "05451B565275651F5752B5751F5452B5"
DATA "451F5352B5351F5252B5251F5152B515"
DATA "1B575275751B545275451B535275351D"
DATA "575295751D545295451D535295351F57"
DATA "52B5751F5452B545002000200C2650C2"
DATA "650C2550C2550C2450C2450C2350A231"
DATA "0F2650F2650F2550F2550F2450F2450F"
DATA "23516231132651326513255132551324"
DATA "51324513235132351322507240162701"
DATA "326113250132420F2600F25000100000"
DATA "072750726507255072450F2650F2550C"
DATA "2750C2650C2550C2450C2350C2250727"
DATA "50726507255072450727507265072550"
DATA "72450C2650C255112751126511255112"
DATA "45132651325516275162651625516245"
DATA "000800201F5702B5701F5402B5401855"
DATA "0245501B570275701B54027540185702"
DATA "4570185402454018530245301B570275"
DATA "701B540275401D530295301D52029520"
DATA "1F5702B5701F5402B5401F5302B5301B"
DATA "55027550001000201127511265112551"
DATA "12451326513255182751826518255182"
DATA "451D2651D2550F265182451327516255"
DATA "0F2750F2650F2550F245112651125516"
DATA "2751626516255162451B2651B2552227"
DATA "51F245182651323500100010010752F6"
DATA "55010753F6152F6553F615010753F615"
DATA "010753F6152F655010752F6553F61501"
DATA "0753F615000050000500005000050000"
DATA "50000500005000050000500005000050"
DATA "00050000500005000050000500100010"
DATA "0107501075010753F6152F6553F6153F"
DATA "61501075010753F615010753F6152F65"
DATA "53F6152F6553F6150000500005000050"
DATA "00050000500005000050000500005000"
DATA "05000050000500005000050000500005"
DATA "002000002904029040290302B0312902"
DATA "42B021290142B01133044300412E0442"
DATA "E03030044300302B0412B0302E0442E0"
DATA "402E030300312E024300212E02430021"
DATA "2B0442E0412B0342E0212B0442B04029"
DATA "03129022000800202451524515245252"
DATA "45252453524535245452454524555245"
DATA "55245652456524575005052457500505"
DATA "24565005052456500505245550050524"
DATA "55500505245450050524535005052452"
DATA "5005052451500505000800201F5151F5"
DATA "151F5251F5251F5351F5351F5451F545"
DATA "1F5551F5551F5651F5651F575000051F"
DATA "575000051F565000051F565000051F55"
DATA "5000051F555000051F545000051F5350"
DATA "00051F525000051F5150000500050000"
DATA "0373005731077410C741137511B76124"
DATA "37030371275702E57124370303712757"
DATA "02E5712436030361275602E561243503"
DATA "0351275502E5512434030341275402E5"
DATA "412433030331275202E5212431030311"
DATA "002000200C2750C2650C2550C2450C23"
DATA "50A2650A2550A2450F2750F2650F2550"
DATA "F2450F2350C2650C2550C2450C2750C2"
DATA "650C2550C2450C2350A2650A2550A245"
DATA "0F2750F2650F2550F2450F2351126511"
DATA "25511245002000001327513265132551"
DATA "32451323511265112551124516275162"
DATA "65162551624516235132651325513245"
DATA "13275132651325513245132350F2650F"
DATA "2550F2450C25011231162650F2451627"
DATA "2162520C2700C255000300001F3302B3"
DATA "3022530295301F3202B3202252029520"
DATA "1F3102B31022510295101F3002B30022"
DATA "50029500000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "000000000000000000000000000B0000"
DATA "29355003002934530370303603035513"
DATA "30524300243050030013305243002430"
DATA "50030000300243002430500300003000"
DATA "03000030000300003000030000300003"
DATA "00003000030000300003000030000300"
DATA "001000003C5753C5453C5353C5253C51"
DATA "53C51537555375453A5753A5553A5453"
DATA "A5353A5253A5253A5153A51535575355"
DATA "55355453554535535355353552535525"
DATA "35515355153357533555335453353533"
DATA "52533515001000003557535555355453"
DATA "55353552535525355153551537555375"
DATA "35335753355533545335353352533525"
DATA "3A5753A5453A5353A5253A5153A51533"
DATA "57533555335453354533535335353352"
DATA "5335253351533515001000200C0600C0"
DATA "300C0500C0300C0500C0300C0100C000"
DATA "0C0600C0300C0500C0300C0500C0300C"
DATA "0100F000110601103011050110301101"
DATA "0110000A0600A0300A0500A0300A0500"
DATA "A0300A0500A0300A0100000000100000"
DATA "05060050300505005030050100500007"
DATA "06007030070500703007010000000F06"
DATA "00F0300F010000000C0600C0300C0500"
DATA "C0300C0500C0300C0500C0300C0500C0"
DATA "300C010000000C0600C0300C0100C000"
DATA "00100000036252461500605036152462"
DATA "51B61522625036150060503615116253"
DATA "361522625006051D6250A61537625186"
DATA "152E6251D61500605376153762518615"
DATA "2E6251D6151162503615006050361524"
DATA "6251D615001000203261032610326103"
DATA "26103161031610306102E6102A610256"
DATA "101B610136100F6100D6100C6100C610"
DATA "0C6100C6100C6100F610146101D61024"
DATA "6102A6102E6103061031610336103361"
DATA "03461034610346100040000030245302"
DATA "0530235332252B235302053022530205"
DATA "30205302253020530205302153020530"
DATA "205302152B2452B2052B235272252923"
DATA "52B2052B2252B2052B2052B2252B2052"
DATA "B2052B2152B2052B2052B21500100000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
DATA "00000000000000000000000000000000"
' EOF