REM ********************************************************************* REM * LOWRESNX COMUNITY GAME PROJECT * REM * REM * STARTED ON 05.JUN.2021 * REM * REM * CODE BY: * REM * DAN, * REM * MUSIC BY: * REM * NINTENDO,PORTED BY G-9 REM * * REM * SOUND BY: * REM * * REM * SPRITES BY: * REM * * REM * LEVELS BY: REM * LEVEL 1:DAN, LEVEL 2:G-9 * REM * * REM * REM ******************************************************************** REM SORT OF CHAT REM SP4CEBAR: I'VE ADDED 6 ITEMS, A SWORD, ARMOR, A SHIELD, A POWER-UP, A JETPACK, AND A PLAYER-CLONE THING REM SP4CEBAR: THE SWORD HAS A SWING ANIMATION CHARACTER (ITEM-USAGE CODE DOESN'T EXIST YET) REM SP4CEBAR: THERE ARE 12 ITEM SPRITES, 10-15 ARE ITEMS IN THE MAP, 16-21 ARE EQUIPPED SPRITES, I HAD TO DO THIS TO KEEP SPRITE HIT FROM DETECTING AN EQUIPPED ITEM AS AN ITEM TO PICK-UP REM SP4CEBAR: THE ITEMS ARE CURRENTLY BEHIND THE PLAYER ALTHOUGH THEY SHOULD BE IN FRONT OF IT, SO THE PLAYER SPRITE NUMBER (WHICH IS 1) SHOULD BE REPLACED WITH A HIGHER SPRITE NUMBER (22 OR MORE) REM SP4CEBAR: DO WE NEED A PROJECTILES ARRAY? (WHICH COULD HAVE: ID,X,Y,DX, AND DY) REM SP4CEBAR: I'VE ADDED LASERS THAT COULD BE PLACED INSIDE THE MAP REM CODE WILL DETECT THEM AND TURN THEM ON OR OFF DEPENDING ON A TIMER OR BUTTON REM THE LASERS CAN BE ANIMATED BY REPEATEDLY FLIPPING THEM VERTICALLY REM I RAN OUT OF TIME TO WRITE THE CODE FOR THE LASERS REM DAN: I SHOULD HAVE ADDED THE JUMPING WHILE THE PLAYER WAS DRIVEN WITH ARRAYS, NOW I HAVE REWRITTEN THE CODE 2 TIMES BEFORE I DECIDED TO USE SOMEONE ELSES CODE FOR THE PLATFORMER, AND IT IS FROM HERE: HTTPS://WWW.INFINITELIMIT.NET/ARTICLE/SIMPLE-PLATFORMER-TIC-80 REM G-9 CHANGED GRAVITY TO MATCH IRL GRAVITY, NOW PLAYER CAN JUMP 3 CELLS UP. ALSO MADE THE JETPACK WORK. MADE LEVEL 2. ADDED SMB MUSIC THEME REM DAN: ITEMS NOW SPAWN WITHIN THE MAP AND NOT ON THE TILES!, GRAVITY (FALLING SPEED IS NOW LIMITED), PLAYER CAN'T GO OFFSCREEN. REM G-9 I DID SOME UPDATES, ADDING TWO LABELS. PLACED ARRAYS INITIALISATION ATOP. ADDED SPIKES.ADDED A LITTLE ANIMATION FOR THE SWORD.ADDED SCORE AND LIVES GAMEPAD 1 MUSIC DIM GLOBAL LVL(20,15) DIM GLOBAL ITEMS(5,0) REM ITEMS(ID,INFORMATION: (EQUIPPED-TO-WHICH-ACTOR NUMBER)) REM DIM GLOBAL EFFECTS(0,0) DIM GLOBAL TABLES(0,5,2) REM TABLES(TABLE NUMBER, TABLE ITEM, VARIABLES) REM TABLE 0: EQUIPPED ITEM OFFSET TABLE, EQUIPPED ITEM, X AND Y OFFSETS RESET: LIVES=3 LEVEL=1 DIED: SCORE=0 ACT_X=9 ACT_Y=0 ACT_DIR=0 ACT_FALL=0 ACT_JUMP=0 ACT_FLIP=0 REM PLAYERS SIZE ACT_SX=7 ACT_SY=7 REM ACTOR DELTA X/Y ACT_DX=0 ACT_DY=0 ACT_DIR=0 ACT_ANIM=0 ACT_TIMER=TIMER ACT_GRAV=0 GRAVMAX=2 GRAVACC=0.1 REM COLLISION FLAG VARIABLE COL1=0 COL2=0 COL3=0 COL4=0 TABLES(0,0,0)=-1 TABLES(0,0,1)=2 TABLES(0,0,2)=1 TABLES(0,1,0)=4 TABLES(0,1,1)=-2 TABLES(0,1,2)=-4 TABLES(0,2,0)=-1 TABLES(0,2,1)=-1 TABLES(0,2,2)=1 TABLES(0,3,0)=-1 TABLES(0,3,1)=0 TABLES(0,3,2)=1 MAINLOOP: MAINGAMEINIT: GOSUB GETLEVEL RANDOMIZE TIMER REM SP4CEBAR: SPAWN ITEMS: FOR I=0 TO 5 ITEMSPAWN: TMPX=1+(RND(17)) TMPY=1+(RND(11)) CALL MAP(TMPX*8,TMPY*8,COL1) IF COL1<>0 THEN GOTO ITEMSPAWN SPRITE 10+I,TMPX*8,TMPY*8,80+I SPRITE 10+I PAL 1 SPRITE 16+I PAL 1 'BUG MEMORIAL: I FORGOT TO REMOVE "ITEMS(I,0)=I" NEXT I MAINGAMELOOP: GOSUB PLAYERMOVEMENT WAIT VBL GOTO MAINGAMELOOP PLAYERMOVEMENT: ACT_DIR=0 KD=RIGHT(0)-LEFT(0) TMP=ACT_TIMER IF TIMER-TMP>=10 THEN ACT_TIMER=TIMER ACT_ANIM=(ACT_ANIM+1) MOD 2 END IF IF KD=-1 THEN REM RIGHT ACT_DX=0.8 ACT_FLIP=0 ACT_DIR=1 ELSE IF KD=1 THEN REM LEFT ACT_DX=-0.8 ACT_FLIP=1 ACT_DIR=1 ELSE ACT_DX=0 END IF REM COLLISION (LEFT/RIGHT SIDE) CHECKS CALL MAP(ACT_X+ACT_DX,ACT_Y+ACT_DY,COL1) CALL MAP(ACT_X+ACT_DX+ACT_SX,ACT_Y+ACT_DY,COL2) CALL MAP(ACT_X+ACT_DX,ACT_Y+ACT_DY+ACT_SY,COL3) CALL MAP(ACT_X+ACT_DX+ACT_SX,ACT_Y+ACT_DY+ACT_SY,COL4) IF COL1>0 OR COL2>0 OR COL3>0 OR COL4>0 THEN ACT_DX=0 REM GRAVITY+COLLISION CALL MAP(ACT_X+ACT_DX,ACT_Y+ACT_DY+ACT_SY+0.1,COL1) CALL MAP(ACT_X+ACT_DX+ACT_SX,ACT_Y+ACT_DY+ACT_SY+0.1,COL2) IF COL1>0 OR COL2>0 THEN ACT_DY = 0 ELSE ACT_DY=ACT_DY+0.1 IF ACT_DY>2 THEN ACT_DY=2 END IF IF COL1=2 OR COL2=2 THEN DEC LIVES IF LIVES=-1 THEN GOTO RESET GOTO DIED END IF REM JUMPING + COLLISION REM G-9 ADDED JETPACK IF BUTTON(0,1) THEN IF ACT_DY=0 THEN ACT_DY=-2.3 ELSE IF ITEMS(3,0)=1 THEN ACT_DY=-1.3 END IF END IF REM SWORD (?) IF BUTTON(0,0) AND ITEMS(1,0)=2 THEN REM CODE FOR ENEMIES, ETC... END IF CALL MAP(ACT_X+ACT_DX,ACT_Y+ACT_DY,COL1) CALL MAP(ACT_X+ACT_DX+ACT_SX,ACT_Y+ACT_DY,COL2) IF ACT_DY<0 AND (COL1>0 OR COL2>0) THEN ACT_DY = 0 END IF ACT_X=ACT_X+ACT_DX ACT_Y=ACT_Y+ACT_DY REM SP4CEBAR: PICK UP ITEMS IF SPRITE HIT(30,10 TO 15) THEN ADD SCORE,100 IF SPRITE.C(HIT)<84 THEN REM EQUIP ITEM ITEMS(HIT-10,0)=1 SPRITE 6+HIT,,,SPRITE.C(HIT) END IF SPRITE OFF HIT END IF REM SP4CEBAR: UPDATE EQUIPPED ITEMS F=SGN(ACT_FLIP) FOR I=0 TO 5 IF ITEMS(I,0)=1 THEN SPRITE 16+I,ACT_X+TABLES(0,I,F*2),ACT_Y+TABLES(0,I,1), IF BUTTON(0,0) AND I=1 THEN SPRITE 16+I FLIP F-1,1 ELSE SPRITE 16+I FLIP F-1,0 END IF END IF NEXT I REM LIMIT PLAYER TO THE SCREEN COORDINATES: IF ACT_Y>120 THEN ACT_Y=120 ACT_DY = 0 END IF IF ACT_Y<0 THEN ACT_Y=0 IF ACT_X<0 THEN ACT_X=0 IF ACT_X>152 THEN ACT_X=152 REM DRAW THE PLAYER CALL MAINSPRITE(ACT_X, ACT_Y, ACT_DIR, ACT_ANIM, ACT_FLIP) REM RESERVED FOR SCORE AND LIVES ?! OR SOMETHING ELSE REM OK TEXT 0,15,"SCORE:"+STR$(SCORE) TEXT 12,15,"LIVES:"+STR$(LIVES) RETURN GETLEVEL: A$="" IF LEVEL=1 THEN A$=A$+"# ################" A$=A$+"# #" A$=A$+"##### ## # #" A$=A$+"# # # #" A$=A$+"# # #" A$=A$+"# # # #" A$=A$+"###### ### ####" A$=A$+"# ### #" A$=A$+"# # #" A$=A$+"#### ###### ## ##" A$=A$+"# # #" A$=A$+"##### # ## ####" A$=A$+"# # #### #" A$=A$+"#XXXXXXX## #" A$=A$+"####################" ELSE IF LEVEL=2 THEN A$=A$+"# ################" A$=A$+"# #" A$=A$+"##### ######## ##" A$=A$+"# # # ### ##" A$=A$+"## # ## ##" A$=A$+"# # # ##" A$=A$+"###### # ##" A$=A$+"# # ########" A$=A$+"## # #" A$=A$+"#### ######## ##" A$=A$+"# # #" A$=A$+"##### # ## ####" A$=A$+"# ## ##### #" A$=A$+"# ## #" A$=A$+"####################" REM COPY AND PASTE THE LEVELMAP FROM THE LEVEL 1, PRESS INSERT KEY FOR EASY EDIT (AT LEAST ON WINDOWS, THE OVERWRITE MODE IS TURNED ON) REM RIP IPHONE USERS :3 ELSE IF LEVEL=3 THEN ELSE IF LEVEL=4 THEN ELSE IF LEVEL=5 THEN END IF FOR Y=0 TO 14 FOR X=0 TO 19 TMP$=MID$(A$,X+1+(Y*20),1) IF TMP$="#" THEN LVL (X,Y)=1 ELSE IF TMP$="X" THEN LVL (X,Y)=2 ELSE LVL (X,Y)=0 END IF CELL X,Y,LVL(X,Y) IF TMP$="X" THEN TINT X,Y PAL 1 END IF NEXT X NEXT Y RETURN SUB MAP(X,Y,COL1) IF INT(X/8)>=0 AND INT(X/8)<=20 AND INT(Y/8)>=0 AND INT(Y/8)<=15 THEN COL1=LVL(INT(X/8),INT(Y/8)) ELSE COL1=0 END IF END SUB SUB MAINSPRITE(X,Y,SET, AN, FL) REM SET = DEFINE SPRITE ANIMATION NUMBERS REM AN = ANIMATION FRAME IN THE SET (IF ANY) REM FL = DOES THE SPRITE NEED TO BE FLIPPED ? 'USING SPRITES 1,2,3,4 'SET DEFAULT PICTURE FRAMES SP3=0 SP4=0 REM: STANDING, 1 FRAME - UP/DOWN IF SET=0 THEN SP1=64 REM RUNNING 2 FRAME IF SET=1 THEN IF AN=0 THEN SP1=65 ELSE SP1=66 END IF END IF REM - FALLING DOWN IF SET=2 THEN SP1=67 REM SPRITE IS COMPOSED BY UP+DOWN IMAGES IF FL=0 THEN SPRITE 30 FLIP 0,0 SPRITE 30,X,Y,SP1 ELSE SPRITE 30 FLIP 1,0 SPRITE 30,X,Y,SP1 END IF END SUB #1:MAIN PALETTES 053F2A00002A1530003C0C00003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 6B7EF81F7E7FB2316B7EF81F7E7FB231 FE8181818181817F017F7F7F7F7F7FFF 001038387C7CFEFE0010382868202000 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 00000040400000000080C08080C08000 1008007F7F0020001088C0BFBFC0A000 000000FFFF000000000000FFFF000000 040107FFFF010904000000FFFF000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3838107C545428280000000000000000 383810F0103844820000000000000000 38381070901828300000000000000000 0000107C545428283838000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 003C3C3C3C1800007E425A525A241800 C0E070381C0800000000000002040A01 0000000000000000387C44007C383838 0000000000000E0400040E0E6E3E0A04 3C7EFFFFFFFF7E3C0408103E7C081020 007E7E7E7E7E7E000000182020180000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 788C0606030303030000000000000000 #3:MAIN BG 00001410000000000000000000000000 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 00000000 #15:MUSIC 0800A0AA110080001800846C003A0000 08006060000000002800303019FE0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 804040400140404002C0404003404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 4B0CE6440C00460C00440C00450C0044 0C00460C00440C004B0C00440C004C0C 00440C004B0C00440C004A0C00440C00 470C00440C00460C00440C00450C0044 0C00460C00440C004B0C00440C004C0C 00440C004B0C00440C004A0C00440C00 460C00430C00450C00430C004A0C0043 0C004B0C00430C004A0C00430C004B0C 00430C004A0C00430C00490C00430C00 460C00430C00450C00430C004A0C0043 0C004B0C00430C004A0C00430C004B0C 00430C004A0C00430C00490C00430C00 4E0C00470C004F0C00470C004E0C0047 0C00490C00470C004E0C00470C004D0C 00470C00480C00470C004D0C00470C00 4A0C00470C004F0C00470C004E0C0047 0C00490C00470C004E0C00470C00490C 00470C00480C00470C004D0C00470C00