'SAVE THE SPRITE REGISTERS TO A FILE (SPRITE ZERO TO SPRITE (FILE SIZE/4)) BG COPY 0,0,20,16 TO 0,0 A=0.5*PI TYPE=0 TYPE2=0 TOUCHSCREEN N=0 FILE=-1 SCENE=0 DX=COS(A) DY=SIN(A) CALL SHAPED_ROCKET(20,64,DX,DY,3,7) PRINT "N : 0" PRINT "SIZE : 0" PRINT "PAL : 0" PRINT "MOV X: 0" PRINT "MOV Y: 0" PRINT "SCENE: 0" DIM GLOBAL SCENES(255) FILE_SIZE=0 GLOBAL FILE_SIZE DO IF TOUCH THEN IF TAP THEN TYPE=TOUCH.X\16 IF TYPE>=5 THEN IF TYPE=9 THEN S=7-TOUCH.Y\16 TEXT 0,1,"SIZE : " TEXT 7,1,STR$(S) SPRITE N,,,78-S*2 SPRITE N SIZE 1 ELSE IF TYPE=8 THEN P=TOUCH.Y\16 TEXT 0,2,"PAL : " TEXT 7,2,STR$(P) SPRITE N PAL P SIZE 1 ELSE IF TYPE=5 THEN N=TOUCH.Y\2 TEXT 0,0,"N : " TEXT 7,0,STR$(N) 'IF SPRITE.C(N)=0 THEN SPRITE N,,,70 ELSE IF TYPE=7 THEN Y=TOUCH.Y TEXT 0,4,"MOV Y: " TEXT 7,4,STR$(Y) IF Y=0 THEN SPRITE OFF N ELSE X=SPRITE.X(N) IF X=-32 THEN X=20 SPRITE N,X,Y-8, SPRITE N SIZE 1 IF SPRITE.C(N)=0 THEN SPRITE N,,,70 END IF ELSE IF TYPE=6 THEN X=TOUCH.Y TEXT 0,3,"MOV X: " TEXT 7,3,STR$(X) IF X=0 THEN SPRITE OFF N ELSE Y=SPRITE.Y(N) IF Y=-32 THEN Y=64 SPRITE N,X,Y, SPRITE N SIZE 1 IF SPRITE.C(N)=0 THEN SPRITE N,,,70 END IF END IF WAIT VBL ELSE IF TAP THEN TYPE2=TOUCH.Y\8 IF TYPE2>=13 THEN TX=TOUCH.X\8 IF TX=8 OR TX=7 THEN CALL SAVE_SCENE(SCENE) ADD SCENE,(TX-7.5)*2 CALL CLAMP(SCENE,0,255) CALL LOAD_SCENE(SCENE) TINT TX,13 PAL 0 TEXT 0,5,"SCENE: " TEXT 7,5,STR$(SCENE) END IF ELSE IF TYPE2>=14 THEN BG TINT 0,TYPE2 TO 10,TYPE2 PAL 0 IF TYPE2=15 OR FILE=-1 THEN PAL 2 INPUT "FILE: ";FILE LOCATE CURSOR.X, CURSOR.Y-1 KEYBOARD OFF END IF I=0 CALL GET_SIZE(I) SAVE FILE,"SPRITE REGISTERS",$FE00,I*4 END IF END IF WAIT VBL IF NOT TOUCH AND TYPE2>=13 THEN BG TINT 0,TYPE2 TO 10,TYPE2 PAL 1 END IF END IF ELSE WAIT VBL END IF 'DX=COS(A) 'DY=SIN(A) 'CALL SHAPED_ROCKET(X,Y,DX,DY,3,7) LOOP SUB SAVE_SCENE(SCENE) S=0 CALL GET_SIZE(S) DS=S-SCENES(SCENE) SCENES(SCENE)=S A=$A000 FOR I=0 TO SCENE ADD A,SCENES(I) NEXT I COPY A,FILE_SIZE+$A000-A TO A+DS COPY $FE00,S TO A ADD FILE_SIZE,DS FILL $FE00,256 'TO EXPORT: WRITE THIS ARRAY IN A NAME STRING NOPE: 32 BIT: 0 - F, G - V END SUB SUB LOAD_SCENE(SCENE) S=SCENES(SCENE) A=0 'CALL GET_SIZE(S) CALL GET_ADDR(A,SCENE) COPY A,S TO $FE00 END SUB SUB GET_SIZE(I) FOR I=63 TO 0 STEP -1 IF SPRITE.Y(I)=-32 THEN EXIT NEXT I END SUB SUB GET_ADDR(A,SCENE) A=$A000 FOR I=0 TO SCENE ADD A,SCENES(I) NEXT I END SUB SUB ROCKET(X1,Y1,DX1,DY1,R,L) DX=DX1*R DY=DY1*R B=L*0.5 X=X1+DX*B Y=Y1-DY*B SPRITE 0,X,Y,128 ADD X,-DX ADD Y,DY FOR I=0 TO L SPRITE I+1,X-DX*I,Y+DY*I,129 SPRITE I+1 PAL 5 NEXT I IF BUTTON(0,0) THEN SPRITE I+1,X-DX*I,Y+DY*I,130 ELSE SPRITE OFF I+1 END IF SPRITE 0 PAL 5 SPRITE 2 PAL 2 SPRITE 6 PAL 2 SPRITE 8 PAL 1 SPRITE 9 PAL 2 END SUB SUB SHAPED_ROCKET(X1,Y1,DX1,DY1,R,L) DX=DX1*R DY=DY1*R B=L*0.5 X=X1+DX*B Y=Y1-DY*B SPRITE 0,X,Y,74 SPRITE 0 SIZE 1 ADD X,-DX ADD Y,DY FOR I=0 TO L 'S=INT(SIN(I*0.8)*2+4) S=INT(SIN(I*1)*2+4) CALL CLAMP(S,0,7) SPRITE I+1,X-DX*I,Y+DY*I,78-S*2 SPRITE I+1 PAL 5 SIZE 1 NEXT I 'IF BUTTON(0,0) THEN 'SPRITE I+1,X-DX*I,Y+DY*I,78 'ELSE 'SPRITE OFF I+1 'END IF SPRITE 0 PAL 5 SPRITE 2 PAL 2 SPRITE 6 PAL 2 SPRITE 8 PAL 1 SPRITE 9 PAL 2 END SUB SUB CLAMP(V,L,H) V=MIN(H,MAX(L,V)) END SUB 'SUB ROCKET_FROM_FILE #1:MAIN PALETTES 002E1804002A1501003E383400252A25 0B2A1525003F2A15003F2A15003F0006 #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFFFFFFFFFFFF0000040404040000 FFFFFFFFFFFFFFFF0000221408142200 FFFFFFFFFFFFFFFF0000100806081000 FFFFFFFFFFFFFFFF0000000000000000 FFFFFFFFFFFFFFFF00001F100C101F00 FFFFFFFFFFFFFFFF00000E1111110E00 FFFFFFFFFFFFFFFF0000180601061800 FFFFFFFFFFFFFFFF00001115151F0000 FFFFFFFFFFFFFFFF2020202020202020 FFFFFFFFFFFFFFFF0000002070A82020 00000000000000000000000000000000 EFA1A1E141C14141105E5E1EFEFEFEFE CF2141E1E12161E130DEBE1EFEFEFEFE AFA1E121E18161E1505E1EDEFEFEFEFE 8FE1A1E1E1212121701E5E1EFEFEFEFE EFA1E1E1E1A1E121105E1E1EFEFEFEFE 000000001F3F7FFF0000000000000000 00000000FFFFFFFF0000000000000000 FFFFFFFFFFFFFFFF0000001E1E000000 FFFFFFFFFFFFFFFF0000000000000000 FFFFFFFFFFFFFFFF003C404038047800 FFFFFFFFFFFFFFFF003844447C444400 FFFFFFFFFFFFFFFF0044444428281000 FFFFFFFFFFFFFFFF0078404070407800 000000003C3C3C3C0000000003030303 000000003C3C3C3C00000000FCFCFCFC 00000000000000000000000000000000 E40C0404040C04041BF3FBFBFFFFFFFF EE02060E0E02060E11FDF9F1FFFFFFFF EE08060E0E08060E11F7F9F1FFFFFFFF EE0202020E02020211FDFDFDFFFFFFFF EE0A0E020E0A0E0211F5F1FDFFFFFFFF FFFFFFFFFFFFFFFF0000081020100800 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3F7FFFFFFFFFFFFF000E1C3870381C0E FFFFFFFFFFFFFFFF0038444040443800 FFFFFFFFFFFFFFFF00446454544C4400 00000000000000000000000000000000 3C3C3C3C000000000303030300000000 3C3C3C3C00000000FCFCFCFC00000000 00000000000000000000000000000000 EC02040E0C02040E13FDFBF1FFFFFFFF EA0A0E020A0A0E0215F5F1FDFFFFFFFF E80E0A0E080E0A0E17F1F5F1FFFFFFFF EE0A0E0E0E0A0E0E11F5F1F1FFFFFFFF EE0A0A0E0E0A0A0E11F5F5F1FFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 030F3F3F7F7FFFFF030F3F3F7F7FFFFF C0F0FCFCFEFEFFFFC0F0FCFCFEFEFFFF 00030F1F3F3F7F7F00030F1F3F3F7F7F 00C0F0F8FCFCFEFE00C0F0F8FCFCFEFE 0000030F1F1F3F3F0000030F1F1F3F3F 0000C0F0F8F8FCFC0000C0F0F8F8FCFC 00000001070F0F1F00000001070F0F1F 00000080E0F0F0F800000080E0F0F0F8 000000000107070F000000000107070F 0000000080E0E0F00000000080E0E0F0 00000000000103070000000000010307 000000000080C0E0000000000080C0E0 00000000000001030000000000000103 00000000000080C000000000000080C0 00000000000000010000000000000001 00000000000000800000000000000080 FFFF7F7F3F3F0F03FFFF7F7F3F3F0F03 FFFFFEFEFCFCF0C0FFFFFEFEFCFCF0C0 7F7F3F3F1F0F03007F7F3F3F1F0F0300 FEFEFCFCF8F0C000FEFEFCFCF8F0C000 3F3F1F1F0F0300003F3F1F1F0F030000 FCFCF8F8F0C00000FCFCF8F8F0C00000 1F0F0F07010000001F0F0F0701000000 F8F0F0E080000000F8F0F0E080000000 0F070701000000000F07070100000000 F0E0E08000000000F0E0E08000000000 07030100000000000703010000000000 E0C0800000000000E0C0800000000000 03010000000000000301000000000000 C080000000000000C080000000000000 01000000000000000100000000000000 80000000000000008000000000000000 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 0000000000000000187E7EFFFF7E7E18 00000000000000003C7EFFFFFFFF7E3C 301C59BEFD3A6C2C3C66E7C183C7563C 00000000000000003C7EFFFFFFFF7E3C 0000000000000000187E7EFFFF7E7E18 0000000000000000003C7E7E7E7E3C00 000000000000000000183C7E7E3C1800 00000000000000000000183C3C180000 00000000000000000000001818000000 #3:MAIN BG 00001410000000000000000000000000 00000000000000003501110109110901 090109011E001F004000410000000000 00000000000000000000000000000000 3501120109110901091109012E002F00 50005100000000000000000000000000 00000000000000003501130109110F01 09110F011E011F014200430000000000 00000000000000000000000000000000 3501140109110E0109110E012E012F01 52005300000000000000000000000000 00000000000000003501150109110E01 09110E011E021F024400450000000000 00000000000000000000000000000000 2101110107010E0108010E012E022F02 54005500000000000000000000000000 00000000000000002101120106010E01 06010E011E031F034600470000000000 00000000000000000000000000000000 210113010D010E010D010E012E032F03 56005700000000000000000000000000 0000000000000000210114010C010E01 0C010E011E041F044800490000000000 00000000000000000000000000000000 210115010B010E010B010E012E042F04 58005900000000000000000000000000 0000000000000000310111010A010E01 0A010E011E051F054A004B0000000000 00000000000000000000000000000000 3101120109110E0109110E012E052F05 5A005B00000000000000000000000000 00000000000000003101130109110E01 09110E011E061F064C004D0016011701 170117011701170117012A012A091609 3101140109110F1109110F112E062F06 5C005D00190118011A011B011C011D01 19011901190119013101150109110911 091109111E071F074E004F0019011801 1A011B011C011D0119011B011A011901 2201110109110911091109112E072F07 5E005F00