GLOBAL TRUE,FALSE TRUE=-1 'POSITION: X,Y 'VELOCITY: X,Y 'COLLISION: X1,Y1 X2,Y2 'GRAVITY,JUMP HEIGHT 'JUMP SPEED,ANIM FRAME DIM GLOBAL PLAYER(5,1) 'WALK CYCLE: 17,18,17,19 DIM GLOBAL P_WALK(3) CALL P_INIT 'WIDTH, HEIGHT 'CAM POSITION: X,Y 'CAM TARGET : X,Y DIM GLOBAL SCREEN(2,1) CALL D_INIT 'SWING,FRAME,DIR,TIME DIM GLOBAL SWORD(3) DIM GLOBAL S_SWING(5) CALL S_INIT 'SPEED OF ANIMATIONS GLOBAL A_SPEED A_SPEED=0.1 BG COPY 0,0,32,32 TO 0,0 GAMEPAD 1 DO CALL C_MOVE CALL P_INPUT CALL P_MOVE CALL S_ATTACK PX=PLAYER(0,0) PY=PLAYER(0,1) 'MOVE CAMERA TARGET BACK TO PLAYER IF NOT MOVING IF PLAYER(1,0)=0 AND PLAYER(1,1)=0 THEN CALL C_SET_TARGET(PX,PY) CALL G2CAM(PX,PY) BGX=SCREEN(1,0) BGY=SCREEN(1,1) PFRM=PLAYER(5,1) SFRM=SWORD(1) SPRITE 0,PX,PY,PFRM SPRITE 1,PX,PY-8,1 SPRITE 2,,,SFRM SCROLL 0,BGX,BGY WAIT VBL LOOP SUB P_INPUT PLAYER(1,0)=LEFT(0)-RIGHT(0) IF UP TAP(0) THEN SWORD(2)=0 ELSE IF DOWN TAP(0) THEN SWORD(2)=1 ELSE IF LEFT TAP(0) THEN SWORD(2)=2 ELSE IF RIGHT TAP(0) THEN SWORD(2)=3 END IF FLIPX= SWORD(2)=2 FLIPY= SWORD(2)=0 IF NOT SWORD(0) THEN IF PLAYER(1,0) THEN FLIPX= PLAYER(1,0)<0 FLIPY=FALSE END IF SPRITE 2 FLIP FLIPX,FLIPY END SUB SUB P_MOVE PX=PLAYER(0,0) PY=PLAYER(0,1) CX1=PX+PLAYER(2,0) CY1=PY+PLAYER(2,1) CX2=PX+PLAYER(3,0) CY2=PY+PLAYER(3,1) '===HORIZONTAL_MOVEMENT===: CANMOVE=TRUE VX=PLAYER(1,0) PLAYER(5,1)=P_WALK(0) IF VX<>0 THEN IF VX<0 THEN CALL COLLIDE(CX1-2,CY1,CANMOVE) IF NOT CANMOVE THEN CALL COLLIDE(CX1-2,CY2,CANMOVE) ELSE CALL COLLIDE(CX2+2,CY1,CANMOVE) IF NOT CANMOVE THEN CALL COLLIDE(CX2+2,CY2,CANMOVE) END IF CANMOVE=NOT CANMOVE IF CANMOVE THEN IF VX<0 THEN CALL C_SET_TARGET(PX-8,PY) ELSE CALL C_SET_TARGET(PX+8,PY) END IF ADD PLAYER(0,0),PLAYER(1,0) END IF PLAYER(5,1)=P_WALK(TIMER*A_SPEED MOD 4) SPRITE 0 FLIP VX<0,0 SPRITE 1 FLIP VX<0,0 END IF '===VERTICAL_MOVEMENT===: ONGRND=TRUE HITHEAD=TRUE VY=PLAYER(1,1) JHEIGHT=PLAYER(4,1) CALL COLLIDE(CX1,CY2+2,ONGRND) IF NOT ONGRND THEN CALL COLLIDE(CX2,CY2+2,ONGRND) IF ONGRND THEN PLAYER(1,1)=0 IF UP(0) THEN PLAYER(1,1)=JHEIGHT ELSE GRAVITY=PLAYER(4,0) ADD PLAYER(1,1),GRAVITY CALL COLLIDE(CX1,CY1-2,HITHEAD) IF NOT HITHEAD THEN CALL COLLIDE(CX2,CY1-2,HITHEAD) IF HITHEAD THEN PLAYER(1,1)=GRAVITY IF VY<0 AND NOT UP(0) THEN PLAYER(1,1)=0 PLAYER(5,1)=P_WALK(0)-1 END IF JSPEED=PLAYER(5,0) VSPEED=SGN(VY) IF VY<0 THEN VSPEED=VSPEED*JSPEED IF VY<>0 THEN IF VY<0 THEN CALL C_SET_TARGET(PX,PY-8) ELSE CALL C_SET_TARGET(PX,PY+8) END IF ADD PLAYER(0,1),VSPEED END IF END SUB SUB S_ATTACK IF BUTTON TAP(0,1) AND NOT SWORD(0) THEN SWORD(0)=TRUE SWING=SWORD(0) FRAME=SWORD(1) DIR=SWORD(2) 'S_SWING() 'DIR: '. 0: 3-5, Y-16 '. 1: 3-5, Y+ 8 '. 2: 0-2, X- 8 '. 3: 0-2, X+ 8 XPOS=PLAYER(0,0) YPOS=PLAYER(0,1) CALL G2CAM(XPOS,YPOS) IF SWING THEN IF DIR=0 THEN ADD YPOS,-16 ELSE IF DIR=1 THEN ADD YPOS,8 ELSE IF DIR=2 THEN ADD XPOS,-8 ELSE ADD XPOS,8 END IF ADD SWORD(3),A_SPEED*2 FRM=INT(SWORD(3)) IF FRM>=3 THEN SWORD(0)=FALSE FRM=0 SWORD(3)=0 END IF IF DIR=0 OR DIR=1 THEN ADD FRM,3 SWORD(1)=S_SWING(FRM) ELSE SWORD(1)=S_SWING(0)-1 END IF SPRITE 2,XPOS,YPOS, END SUB SUB C_SET_TARGET(TX,TY) W=SCREEN(0,0) H=SCREEN(0,1) X=INT(TX-W/2) Y=INT(TY-H/2) X=MIN(MAX(0,X),95) Y=MIN(MAX(0,Y),128) SCREEN(2,0)=X SCREEN(2,1)=Y END SUB SUB C_MOVE CX=SCREEN(1,0) CY=SCREEN(1,1) TX=SCREEN(2,0) TY=SCREEN(2,1) DIFFX=TX-CX DIFFY=TY-CY DIRX=SGN(DIFFX) DIRY=SGN(DIFFY) ADD CX,DIRX ADD CY,DIRY SCREEN(1,0)=CX SCREEN(1,1)=CY END SUB SUB COLLIDE(X,Y,OUT) OUT=CELL.C(X\8,Y\8) \ 64 = 1 END SUB SUB G2CAM(X,Y) X=X-SCREEN(1,0) Y=Y-SCREEN(1,1) END SUB SUB D_INIT SCREEN(0,0)=160 SCREEN(0,1)=128 CALL C_SET_TARGET(PLAYER(0,0),PLAYER(0,1)) SCREEN(1,0)=SCREEN(2,0) SCREEN(1,1)=SCREEN(2,1) END SUB SUB P_INIT PLAYER(0,0)=80 PLAYER(0,1)=16 PLAYER(2,0)=1 PLAYER(2,1)=-6 PLAYER(3,0)=6 PLAYER(3,1)=7 PLAYER(4,0)=3 PLAYER(4,1)=-80 PLAYER(5,0)=2.5 P_WALK(0)=17 P_WALK(1)=18 P_WALK(2)=17 P_WALK(3)=19 END SUB SUB S_INIT SWORD(2)=3 S_SWING(0)=3 S_SWING(1)=4 S_SWING(2)=5 S_SWING(3)=6 S_SWING(4)=7 S_SWING(5)=8 END SUB #1:MAIN PALETTES 013F160000152A3F003C0C00003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00001422223E3E1E000000001C001220 00020000000080000001020000000000 00C06010000000000000000000000000 00E07038180810000000000000000000 00003018183870E00000000000000000 02060408000000000000000000000000 02060E5C380000000000000000000000 80C0E47C380000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3C22468A95FE24203C3A76EEDDFE2420 3C2242464A5224243C3A7A766E5A2424 3C2242464A5234183C3A7A766E5A3418 3C2242464A522C443C3A7A766E5A2C44 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 42FF8103FFC381FFDBFF8103FFC381FF 24FA0582FE8702FEACFA0583FE8702FF FFC183FF81C3FFFFFFC183FF81C3FFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FE070EFE82FEC782FF070EFF83FEC783 80402010080402010102040818244281 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000004444EEAA5EE000004444EEEEE55 0000004040E0A0EC0000004040E0E854 #3:MAIN BG 00002020500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050004210 40104010401040104010401040104010 42185000421040104010401040104010 40104010401040104010401042184210 40104010401040104218500050005100 81198011801180118011801180118111 51085000510000000000000000000000 00000000000000000000000051085100 00000000000000005108500050005100 00000000000000000000000000000000 51085000510000000000000000000000 00000000000000000000000051085100 00000000000000005108500050005100 00000000000000000000000000000000 51085000510000000000000000000000 00000000000000000000000041184110 00000000000000004118401040104110 00000000000000000000000000000000 51085000510000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 51085000510000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000008200000000000000 51085000510000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 51085000420040004000400040004000 40004000400040004000400040004100 00000000000000004108400040004100 00000000000000000000000000000000 51085000500050005000500050005000 50005000500050005000500050005100 00000000000000005108500050005100 00000000000000000000000000000000 51085000500050005000500050005000 50005000500050005000500050005100 00000000000000005108500050004200 40004000400040004000400040004000 42085000500050005000500050004210 40104010401040104010401040104110 00000000000000004118401040104010 40104010401040104010401042185000 50005000500050005000500050005100 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000051085000 50005000500050005000500050005100 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000051085000 50005000500050005000500050005100 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000051085000 50005000500050005000500050004200 41000000000041084000400040004000 40004000400040004000410052005200 52005200520052005200520051085000 50005000500050005000500050005000 51000000000051085000500050005000 50005000500050005000510000000000 00000000000000000000000051085000 50005000421040104010401040104010 41100000000041184010401040104010 40104010421850005000510000000000 00000000000000000000000051085000 50005000510000000000000000000000 00000000000000000000000000000000 00000000510850005000510000000000 00000000000000000000000051085000 50005000510000000000000000000000 00000000000000000000000000000000 00000000510850005000510000000000 00000000000000000000000051085000 50005000510000000000000000000000 00000000000000000000000000000000 00000000510850005000510000000000 00000000000000000000000051085000 50005000420040004000400040004000 40004000400040004000400040004000 40004000420850005000510000000000 00000000000000000000000051085000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000510081098001 80018001800180018001810151085000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000420040004000 40004000400040004000400042085000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000500050005000500050005000 50005000