10000 !========================================== 10010 ! "ABAS"(エイバス) Version 2.22 10020 ! Layout Editor & File Manager 10030 ! Programed by OHARI [2001/05/12] 10040 ! Last Revised : 2001/06/23 10050 ! E-mail > nobuyuki_owari@mvh.biglobe.ne.jp 10060 ! URL > http://www.geocities.co.jp/Playtown-King/5348/ 10070 ! Reference : "T-Filer" by たこのすけ-SAN 10080 !========================================== 10090 LABEL ABAS 10100 RESTORE *ABAS 10110 KEYBOARD=0 ! キーボードあり:1, なし:0 10120 OX=50 ! PRIMITIVEs, OBJECTs MAXIMUM NUMBER 10130 SSTX=180*60 ! SCREEN SAVER WAIT 10140 OPTION BASE 1 10150 DIM PD(8,20) 10160 FOR I=1 TO 10 10170 FOR J=1 TO 20 10180 PD(7,J)=PD(7,J)+PAD(1,J) 10190 PD(8,J)=PD(8,J)+PAD(2,J) 10200 NEXT J 10210 NEXT I 10220 FOR J=1 TO 20 10230 PD(1,J),PD(2,J),PD(5,J),PD(6,J)=0 10240 PD(3,J),PD(7,J)=PD(7,J)*.1 10250 PD(4,J),PD(8,J)=PD(8,J)*.1 10260 NEXT J 10270 INIT 10280 TEXTMODE 2 10290 FKEY "FILES ",1 10300 FKEY "LOAD "+CHR$(34)+"A"+CHR$(34),2 10310 !FKEY "SAVE "+CHR$(34),3 10320 FKEY "LIST ",4 10330 FKEY "VIEW ",5 10340 FKEY "RENUMBER AT 10000",6 10350 FKEY "CONTINUE",7 10360 FKEY "RUN",8 10370 FKEY "KILL "+CHR$(34),9 10380 FKEY "DELETE ",10 10390 FKEY "INIT ",11 10400 FKEY "TEXTMODE 2",12 10410 !========================================== 10420 OX=50 10430 DIM SW$(3) 10440 DIM BG(3),BGN(3),BGX(3),BGC(3) 10450 DIM LNSW(OX),LN(OX,9),LNN(9),LNX(9),LNC(9) 10460 DIM TLSW(OX),TL(OX,9),TLN(9),TLX(9),TLC(9) 10470 DIM TRSW(OX),TR(OX,19),TRN(19),TRX(19),TRC(19) 10480 DIM TX(16,4),TXN(4),TXX(4),TXC(4) 10490 DIM MDSW(OX+1),MD(OX+1,13),MDN(13),MDX(13),MDC(13) 10500 DIM CM(OX+1,8),CMN(8),CMX(8),CMC(8) 10510 DIM FG(5),FGN(5),FGX(5),FGC(5) 10520 DIM LG(3,6),LGN(6),LGX(6),LGC(6) 10530 DIM AM(3),AMN(3),AMX(3),AMC(3) 10540 DIM EF(8),EFN(8),EFX(8),EFC(8) 10550 DIM SD(8),SDN(8),SDX(8),SDC(8) 10560 DIM VB(3),VBN(3),VBX(3),VBC(3) 10570 DIM SSX(2,3),SSY(2,3),SSVX(2,3),SSVY(2,3) 10580 DIM SSR(2,3),SSG(2,3),SSB(2,3) 10590 DIM SSVR(2,3),SSVG(2,3),SSVB(2,3) 10600 I=41+16*OX 10610 DIM VRN_BUF(I) 10620 READ SW$(1),SW$(2),SW$(3) 10630 READ PNO,SLOT,DIR$ 10640 READ LNNO,TLNO,TRNO,TXNO,MDNO,LGNO 10650 READ PDWAIT,AUTOREP,BTMGN,STMGN 10660 CALL READ1(BG,BGN,BGX,1,3) 10670 CALL READ2(LN,LNN,LNX,1,9,OX) 10680 CALL READ2(TL,TLN,TLX,1,9,OX) 10690 CALL READ2(TR,TRN,TRX,1,19,OX) 10700 CALL READ2(TX,TXN,TXX,1,4,16) 10710 CALL READ2(MD,MDN,MDX,1,13,OX) 10720 CALL READ2(CM,CMN,CMX,1,8,OX+1) 10730 CALL READ1(FG,FGN,FGX,1,5) 10740 CALL READ1(AM,AMN,AMX,1,3) 10750 CALL READ3(LG,LGN,LGX,1,6,3) 10760 CALL READ1(EF,EFN,EFX,1,8) 10770 CALL READ1(SD,SDN,SDX,1,8) 10780 CALL READ1(VB,VBN,VBX,1,3) 10790 !----- PARAMETERS ------------------------- 10800 DATA " OFF "," ON "," AUTO" 10810 DATA 1,1,"" 10820 DATA 1,1,1,1,1,1 10830 DATA 20,2,16,64 10840 !----- BG COLOR PARAMETERS ---------------- 10850 DATA 0, 0, 0 10860 DATA 0, 0, 0 10870 DATA 255,255,255 10880 !----- LINE PARAMETERS -------------------- 10890 DATA 255,255,255, 96, 0, 112, 640, 112, 0 10900 DATA 0, 0, 0, 0,-1728,-1936,-1728,-1936, 0 10910 DATA 255,255,255,128, 2367, 2159, 2367, 2159,16777200 10920 !----- TILE PARAMETERS -------------------- 10930 DATA 0,255,255, 96, 220, 62, 420, 162, 0 10940 DATA 0, 0, 0, 0,-1728,-1936,-1728,-1936, 0 10950 DATA 255,255,255,128, 2367, 2159, 2367, 2159,16777200 10960 !----- TRIANGLE PARAMETERS ---------------- 10970 DATA 255, 0, 0, 96, 0,255, 0, 96, 0, 0,255, 96, 224, 137, 408, 137, 320, 62, 0 10980 DATA 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1728,-1936,-1728,-1936,-1728,-1936, 0 10990 DATA 255,255,255,128,255,255,255,128,255,255,255,128, 2367, 2159, 2367, 2159, 2367, 2159,16777200 11000 !----- TEXTURE PARAMETERS ----------------- 11010 DATA 1, 0,1, 0 11020 DATA 1, 0,0, 0 11030 DATA 32,15,2,16777200 11040 !----- MODEL PARAMETERS ------------------- 11050 DATA 1, 1, 0, 0, 0, 0, 0, 0, 100,1,1,1,0 11060 DATA 1, 1,-180,-180,-180,-999999,-999999,-999999, 1,0,0,0,0 11070 DATA 8,10, 180, 180, 180, 999999, 999999, 999999,100000,1,1,2,999 11080 !----- CAMERA PARAMETERS ------------ 11090 DATA 20, 0, 0, 100, 0, 0, 0, 512 11100 DATA -180,-180,-180, 1,-999999,-999999,-999999, 100 11110 DATA 180, 180, 180,999999, 999999, 999999, 999999,10000 11120 !----- FOG PARAMETERS ------------ 11130 DATA 0, 0, 0, 1000,999999 11140 DATA 0, 0, 0, 0, 0 11150 DATA 255,255,255,999999,999999 11160 !----- AMBIENT PARAMETERS ----------------- 11170 DATA 64, 64, 64 11180 DATA 0, 0, 0 11190 DATA 255,255,255 11200 !----- LIGHT PARAMETERS ------------------- 11210 DATA 1,178,178,178, 45, 45 11220 DATA 1,127,127,127, 0, 90 11230 DATA 1, 64, 64, 64, -45,-135 11240 DATA 0, 0, 0, 0,-180,-180 11250 DATA 1,255,255,255, 180, 180 11260 !----- SCREEN EFFECT PARAMETERS ----------- 11270 DATA 0, 0, 0, 0, 640, 224, 0,1 11280 DATA 0, 0,-1728,-1936,-1728,-1936, 0,1 11290 DATA 128,127, 2367, 2159, 2367, 2159,16777200,2 11300 !----- SOUND PLAY PARAMETERS -------------- 11310 DATA 0, 1,255,255, 0,0,1,255 11320 DATA 0, 1, 0, 0, 0,0,1, 0 11330 DATA 1,128,255,255,999,1,4,255 11340 !----- VIBRATE PARAMETERS ----------------- 11350 DATA 255,1, 1000 11360 DATA 0,0, 0 11370 DATA 255,1,10000 11380 !------------------------------------------ 11390 CALL PADX 11400 ZSORT 1,1 11410 !========================================== 11420 DO 11430 IF PAGE=0 THEN CALL FILEMANAGER 11440 IF PAGE=1 THEN CALL BGCHANGE 11450 IF PAGE=2 THEN CALL LINECHECK 11460 IF PAGE=3 THEN CALL TILECHECK 11470 IF PAGE=4 THEN CALL TRICHECK 11480 IF PAGE=5 THEN CALL TXVIEW 11490 IF PAGE=6 THEN CALL MDVIEW 11500 IF PAGE=7 THEN CALL CAMCTRL 11510 IF PAGE=8 THEN CALL LIGCTRL 11520 IF PAGE=9 THEN CALL EFFCTRL 11530 IF PAGE=10 THEN CALL SDPLAY 11540 IF PAGE=11 THEN CALL PADCHECK 11550 PAGE=MOD(PAGE-(PD(PNO,9)=1)+(PD(PNO,10)=1),12) 11560 IF PD(PNO,8)>0 AND PAGE=0 THEN 11570 IF PD(PNO,9)=1 THEN PAGE=11 ELSE PAGE=1 11580 END IF 11590 LOOP 11600 !========================================== 11610 SUB READ1(P(),N(),X(),T1,T2) 11620 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11630 READ P(I) 11640 NEXT I 11650 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11660 READ N(I) 11670 NEXT I 11680 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11690 READ X(I) 11700 NEXT I 11710 END SUB 11720 !========================================== 11730 SUB READ2(P(,),N(),X(),T1,T2,T3) 11740 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11750 READ P(1,I) 11760 NEXT I 11770 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11780 READ N(I) 11790 NEXT I 11800 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11810 READ X(I) 11820 NEXT I 11830 FOR J=2 TO T3 11840 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11850 P(J,I)=P(1,I) 11860 NEXT I 11870 NEXT J 11880 END SUB 11890 !========================================== 11900 SUB READ3(P(,),N(),X(),T1,T2,T3) 11910 FOR J=1 TO T3 11920 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11930 READ P(J,I) 11940 NEXT I 11950 NEXT J 11960 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 11970 READ N(I) 11980 NEXT I 11990 FOR I=T1 TO T2 STEP SGN(T2-T1)+(T1=T2) 12000 READ X(I) 12010 NEXT I 12020 END SUB 12030 !========================================== 12040 SUB C2S_TILEPOS(NO,CX1,CY1,CX2,CY2,Z,M) 12050 TILEPOS NO,CX1*12+16-M-M,CY1*9+7-M,CX2*12+28+M+M,CY2*9+16+M,Z 12060 END SUB 12070 !========================================== 12080 SUB BUFINIT 12090 TILECOL 998,BG(1),BG(2),BG(3),96 12100 IF PAGE>=7 AND PAGE<=9 THEN 12110 CALL C2S_TILEPOS(998,1,22,26,22,16777200,2) 12120 TILEDISP 998 12130 CALL CLPRINT(2,1,22,"SAVE 3D-PARAMETERS") 12140 CALL YNSELECT(R,2,20,22,"") 12150 CALL CLPRINT(7,1,22,REPEAT$(" ",26)) 12160 IF R<>0 THEN CALL SAVE_3DPRM 12170 TILEOFF 998 12180 ELSE 12190 CALL C2S_TILEPOS(998,1,22,25,22,16777200,2) 12200 TILEDISP 998 12210 CALL CLPRINT(2,1,22,"BUFFER INITIALIZE") 12220 CALL YNSELECT(R,2,19,22,"") 12230 CALL CLPRINT(7,1,22,REPEAT$(" ",25)) 12240 TILEOFF 998 12250 IF R<>0 THEN 12260 INIT ALL 12270 TEXTMODE 2 12280 WRITE=0 12290 VOLUME SD(8) 12300 IF SD(6)=1 THEN BGMPLAY SD(7) 12310 END IF 12320 END IF 12330 END SUB 12340 !========================================== 12350 SUB LOAD_3DPRM 12360 FOR I=1 TO 7 12370 EF(I)=VRN_BUF(I) 12380 NEXT I 12390 FOR I=1 TO 3 12400 AM(I)=VRN_BUF(I+7) 12410 NEXT I 12420 FOR I=1 TO 3 12430 FOR J=1 TO 6 12440 LG(I,J)=VRN_BUF(I*6+J+4) 12450 NEXT J 12460 NEXT I 12470 FOR I=1 TO 8 12480 CM(OX+1,I)=VRN_BUF(I+28) 12490 NEXT I 12500 FOR I=1 TO 5 12510 FG(I)=VRN_BUF(I+36) 12520 NEXT I 12530 FOR I=1 TO OX 12540 T1=VRN_BUF(I*15+27) 12550 IF T1=0 THEN EXIT FOR 12560 MDSW(T1)=VRN_BUF(I*15+28) 12570 FOR J=1 TO 13 12580 MD(T1,J)=VRN_BUF(I*15+J+28) 12590 NEXT J 12600 NEXT I 12610 END SUB 12620 !========================================== 12630 SUB SAVE_3DPRM 12640 CALL C2S_TILEPOS(998,0,20,50,22,16777200,2) 12650 WRITE=0 12660 CALL CLPRINT(7,0,20," DIRECTORY/FILE NAME (8文字までの英数字と"+CHR$(34)+"_"+CHR$(34)+")") 12670 IF KEYBOARD=0 THEN 12680 N=LEN(VRN_NAME$) 12690 IF T1=0 THEN 12700 NMC=1 12710 NMC$="A" 12720 ELSE 12730 NMC$=VRN_NAME$(NMC:NMC) 12740 END IF 12750 DO 12760 VRN_NAME$(NMC:NMC)=NMC$ 12770 CALL CLPRINT(7,1,21,">"+VRN_NAME$+" ") 12780 FSYNC 1 12790 CALL PADX 12800 IF PD(PNO,6)=1 THEN 12810 NMC=MIN(17,NMC+1) 12820 VRN_NAME$(NMC:NMC)=NMC$ 12830 ELSEIF PD(PNO,7)=1 THEN 12840 NMC=MAX(1,NMC-1) 12850 VRN_NAME$(NMC+1:NMC+1)="" 12860 NMC$=VRN_NAME$(NMC:NMC) 12870 ELSEIF PD(PNO,1)=1 OR PD(PNO,4)=1 THEN 12880 T1=ORD(NMC$) 12890 IF T1=90 THEN 12900 T1=48 12910 ELSEIF T1=57 THEN 12920 T1=47 12930 ELSEIF T1=47 THEN 12940 T1=65 12950 ELSE 12960 T1=T1+1 12970 END IF 12980 NMC$=CHR$(T1) 12990 ELSEIF PD(PNO,2)=1 OR PD(PNO,3)=1 THEN 13000 T1=ORD(NMC$) 13010 IF T1=65 THEN 13020 T1=47 13030 ELSEIF T1=47 THEN 13040 T1=57 13050 ELSEIF T1=48 THEN 13060 T1=90 13070 ELSE 13080 T1=T1-1 13090 END IF 13100 NMC$=CHR$(T1) 13110 END IF 13120 LOOP UNTIL PD(1,20)=1 13130 ELSE 13140 INPUT VRN_NAME$ 13150 END IF 13160 VRN_NAME$=RTRIM$(VRN_NAME$) 13170 T1,T2=0 13180 FOR I=1 TO LEN(VRN_NAME$) 13190 IF VRN_NAME$(I:I)="/" THEN T1=T1+1 13200 IF T1=0 THEN T2=T2+1 13210 NEXT I 13220 IF T1=0 AND(T2>8 OR T2<1) THEN EXIT SUB 13230 IF T1=1 AND(T2>8 OR LEN(VRN_NAME$)-1-T2>8) THEN EXIT SUB 13240 IF T1>1 THEN EXIT SUB 13250 CALL CLPRINT(7,1,22,"Saving") 13260 FOR I=1 TO 7 13270 VRN_BUF(I)=EF(I) 13280 NEXT I 13290 FOR I=1 TO 3 13300 VRN_BUF(I+7)=AM(I) 13310 NEXT I 13320 FOR I=1 TO 3 13330 FOR J=1 TO 6 13340 VRN_BUF(I*6+J+4)=LG(I,J) 13350 NEXT J 13360 NEXT I 13370 FOR I=1 TO 8 13380 VRN_BUF(I+28)=CM(OX+1,I) 13390 NEXT I 13400 FOR I=1 TO 5 13410 VRN_BUF(I+36)=FG(I) 13420 NEXT I 13430 FOR I=1 TO OX 13440 VRN_BUF(I*15+27)=I 13450 VRN_BUF(I*15+28)=MDSW(I) 13460 FOR J=1 TO 13 13470 VRN_BUF(I*15+J+28)=MD(I,J) 13480 NEXT J 13490 NEXT I 13500 VARSAVE VRN_NAME$,VRN_BUF 13510 END SUB 13520 !========================================== 13530 SUB PADX 13540 FOR I=2 TO 1 STEP -1 13550 FOR J=1 TO 20 13560 T1=PD(I+2,J) 13570 IF I=1 THEN CALL KEY2PAD(T2,J) ELSE T2=0 13580 IF T2=0 THEN T2=PAD(I,J) 13590 SELECT CASE J 13600 CASE 1 TO 12 13610 T3=PD(I+6,J)+BTMGN 13620 T4=PD(I+6,J)-BTMGN 13630 CASE 13 TO 16 13640 T3=PD(I+6,J)+STMGN 13650 T4=PD(I+6,J)-STMGN 13660 CASE ELSE 13670 T3=PD(I+6,J) 13680 T4=PD(I+6,J) 13690 END SELECT 13700 PD(I,J)=0 13710 IF T1>T3 AND T2>T3 THEN PD(I,J)=2 13720 IF T1<=T3 AND T2>T3 THEN PD(I,J)=1 13730 IF T1=T4 AND T20 THEN 13760 SST=0 13770 PNO=I 13780 IF PD(I+4,J)=PDWAIT THEN 13790 PD(I,J)=SGN(PD(I,J)) 13800 PD(I+4,J)=PDWAIT-AUTOREP 13810 END IF 13820 PD(I+4,J)=MIN(PDWAIT+1,PD(I+4,J)+1) 13830 ELSE 13840 PD(I+4,J)=0 13850 END IF 13860 PD(I+2,J)=T2 13870 NEXT J 13880 NEXT I 13890 FSYNC 1 13900 !IF PADLOCK=0 AND PD(PNO,19)=1 THEN 13910 ! INIT 13920 ! TEXTMODE 2 13930 ! DEVICE MEMC1 13940 ! END 13950 !END IF 13960 IF KEYCODE1>0 OR KEYCODE2>0 THEN SST=0 13970 SST=MIN(SST+1,SSTX) 13980 IF SSSW=0 AND SST=SSTX THEN CALL SCR_SAVER 13990 END SUB 14000 !========================================== 14010 SUB KEY2PAD(R,P) 14020 R=0 14030 SELECT CASE P 14040 CASE 1 ! → 14050 IF KEYCODE1=79 THEN R=255 14060 CASE 2 ! ← 14070 IF KEYCODE1=80 THEN R=255 14080 CASE 3 ! ↑ 14090 IF KEYCODE1=82 AND KEYCODE2=0 THEN R=255 14100 CASE 4 ! ↓ 14110 IF KEYCODE1=81 AND KEYCODE2=0 THEN R=255 14120 CASE 5 ! △ 14130 IF KEYCODE1=7 THEN R=255 14140 CASE 6 ! ○ 14150 IF KEYCODE1=6 OR KEYCODE1=40 OR KEYCODE1=88 THEN R=255 14160 IF KEYCODE1=82 AND(KEYCODE2=2 OR KEYCODE2=32) THEN R=255 14170 CASE 7 ! × 14180 IF KEYCODE1=27 OR KEYCODE1=44 THEN R=255 14190 IF KEYCODE1=81 AND(KEYCODE2=2 OR KEYCODE2=32) THEN R=255 14200 CASE 8 ! □ 14210 IF KEYCODE2=2 OR KEYCODE2=32 THEN R=255 14220 CASE 9 ! L1 14230 IF KEYCODE1=75 AND KEYCODE2=0 THEN R=255 14240 CASE 10 ! R1 14250 IF KEYCODE1=78 AND KEYCODE2=0 THEN R=255 14260 CASE 11 ! L2 14270 IF KEYCODE1=75 AND(KEYCODE2=2 OR KEYCODE2=32) THEN R=255 14280 CASE 12 ! R2 14290 IF KEYCODE1=78 AND(KEYCODE2=2 OR KEYCODE2=32) THEN R=255 14300 CASE 19 ! SELECT 14310 IF KEYCODE1=43 THEN R=255 14320 CASE 20 ! START 14330 IF KEYCODE1=41 THEN R=255 14340 END SELECT 14350 END SUB 14360 !========================================== 14370 SUB CLPRINT(C,X,Y,T1$) 14380 CALL TEXTCOLC(C) 14390 IF X>=0 AND X<=50 AND Y>=0 AND Y<=22 THEN LOCATE X,Y 14400 PRINT T1$; 14410 END SUB 14420 !========================================== 14430 SUB TEXTCOLC(I) 14440 IF I=0 THEN TEXTCOL BLACK 14450 IF I=1 THEN TEXTCOL BLUE 14460 IF I=2 THEN TEXTCOL RED 14470 IF I=3 THEN TEXTCOL PURPLE 14480 IF I=4 THEN TEXTCOL GREEN 14490 IF I=5 THEN TEXTCOL CYAN 14500 IF I=6 THEN TEXTCOL YELLOW 14510 IF I=7 THEN TEXTCOL WHITE 14520 END SUB 14530 !========================================== 14540 SUB SCRSTR(R$,X1,X2,Y) 14550 R$="" 14560 FOR X=X1 TO X2 STEP SGN(X2-X1)+(X1=X2) 14570 R$=R$+SCRCHR$(X,Y) 14580 NEXT X 14590 END SUB 14600 !========================================== 14610 SUB DTDISP 14620 ALTEST EF(1) 14630 EFFECT EF(2),EF(3),EF(4),EF(5),EF(6),EF(7) 14640 ORDER EF(8) 14650 DO WHILE PADLOCK=0 AND PD(PNO,5)>0 14660 CLEAR 14670 TILEOFF 999 14680 TILEOFF 1000 14690 WRITE=0 14700 CALL PADX 14710 IF PAGE>=6 AND PAGE<=9 THEN 14720 CALL CAMERA_MOVE(CM,(PAGE=6)*MDNO+(PAGE>6)*(OX+1)) 14730 CALL MDDISP 14740 FSYNC 1 14750 END IF 14760 LOOP 14770 TEXTCOL WHITE 14780 LOCATE 27,0 14790 T1$=DATE$ 14800 PRINT T1$(1:4)+"/"+T1$(5:6)+"/"+T1$(7:8)+" "+TIME$; 14810 END SUB 14820 !========================================== 14830 SUB PAGEDISP(I) 14840 TILEPOS 999,0,0,640,18,16777200 14850 TILECOL 999,BG(1),BG(2),BG(3),96 14860 TILECOL 1000,BG(1),BG(2),BG(3),96 14870 TILEDISP 999 14880 TILEDISP 1000 14890 CLEAR 14900 BGCOL BG(1),BG(2),BG(3) 14910 CALL PRIMDISP 14920 CALL MDDISP 14930 CALL DTDISP 14940 IF I=0 THEN CALL CLPRINT(7,0,0," 1.FILE MANAGEMENT") 14950 IF I=1 THEN CALL CLPRINT(7,0,0," 2.BG COLOR CHANGE") 14960 IF I=2 THEN CALL CLPRINT(7,0,0," 3.LINE-PRIM. CHECK") 14970 IF I=3 THEN CALL CLPRINT(7,0,0," 4.TILE-PRIM. CHECK") 14980 IF I=4 THEN CALL CLPRINT(7,0,0," 5.TRIANGLE-PRIM. CHECK") 14990 IF I=5 THEN CALL CLPRINT(7,0,0," 6.TEXTURE VIEW") 15000 IF I=6 THEN CALL CLPRINT(7,0,0," 7.MODEL VIEW") 15010 IF I=7 THEN CALL CLPRINT(7,0,0," 8.CAMERA & FOG CONTROL") 15020 IF I=8 THEN CALL CLPRINT(7,0,0," 9.LIGHT CONTROL") 15030 IF I=9 THEN CALL CLPRINT(7,0,0," 10.SCREEN EFFECT CONTROL") 15040 IF I=10 THEN CALL CLPRINT(7,0,0," 11.SOUND PLAY") 15050 IF I=11 THEN CALL CLPRINT(7,0,0," 12.ANALOG PAD CHECK") 15060 WRITE=1 15070 END SUB 15080 !========================================== 15090 SUB FILEMANAGER 15100 WRITE=0 15110 DIR$="" 15120 DO 15130 IF PD(PNO,7)=1 THEN 15140 DIR$="" 15150 WRITE=0 15160 END IF 15170 IF WRITE<=0 THEN CALL FILELIST 15180 CALL DTDISP 15190 IF PD(PNO,20)=1 THEN CALL BUFINIT 15200 CALL PADX 15210 IF PD(PNO,6)=1 THEN CALL SETFILE 15220 IF PD(PNO,1)=1 OR PD(PNO,2)=1 THEN CALL CHDEV 15230 CALL SCRSTR(R$,0,36,CSR+4) 15240 CALL CLPRINT(0,0,CSR+4,R$) 15250 CSR=MOD(CSR-(PD(PNO,3)=1)+(PD(PNO,4)=1),LISTNUM) 15260 CALL SCRSTR(R$,0,36,CSR+4) 15270 CALL CLPRINT(7,0,CSR+4,R$) 15280 NAME$=LTRIM$(R$(1:14)) 15290 R$=NAME$+CHR$(34)+REPEAT$(" ",14) 15300 IF DIR$<>"" THEN R$=DIR$+"/"+R$ 15310 CALL CLPRINT(7,16,2,CHR$(34)+R$(1:31)) 15320 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 15330 END SUB 15340 !========================================== 15350 SUB FILELIST 15360 CSR=0 15370 CALL PAGEDISP(PAGE) 15380 TILEPOS 1000,0,18,640,224,16777200 15390 CALL CLPRINT(7,1,2,"SLOT:1/2 NAME:") 15400 IF SLOT=1 THEN 15410 DEVICE MEMC1 15420 CALL CLPRINT(0,7,2,"/2") 15430 ELSE 15440 DEVICE MEMC2 15450 CALL CLPRINT(0,6,2,"1/") 15460 END IF 15470 TEXTCOL BLACK 15480 LOCATE 0,4 15490 IF DIR$="" THEN 15500 FILES 15510 ELSE 15520 PRINT " .. ____/__/__" 15530 FILES DIR$ 15540 END IF 15550 FOR LISTNUM=0 TO 21 15560 IF SCRCHR$(14,LISTNUM+4)="" THEN EXIT FOR 15570 IF SCRCHR$(14,LISTNUM+4)="s" THEN EXIT FOR 15580 NEXT LISTNUM 15590 END SUB 15600 !========================================== 15610 SUB CHDEV 15620 WRITE=SLOT 15630 SLOT=1+(PD(PNO,1)=1) 15640 IF SLOT<>WRITE THEN DIR$="" 15650 WRITE=(WRITE=SLOT) 15660 END SUB 15670 !========================================== 15680 SUB SETFILE 15690 IF RTRIM$(NAME$)=".." THEN 15700 WRITE=0 15710 DIR$="" 15720 ELSE 15730 IF DIR$="" THEN 15740 WRITE=0 15750 DIR$=RTRIM$(NAME$) 15760 ELSE 15770 CALL FLOAD(DIR$,NAME$) 15780 END IF 15790 END IF 15800 END SUB 15810 !========================================== 15820 SUB FLOAD(D$,N$) 15830 NB$=N$(1:LEN(N$)-4) 15840 NE$=N$(LEN(N$)-2:LEN(N$)) 15850 SELECT CASE NE$ 15860 CASE "BAS" 15870 CALL YNSELECT(R,7,38,CSR+4," ") 15880 IF R>0 THEN 15890 INIT 15900 TEXTMODE 2 15910 PRINT "NOW LOADING ";CHR$(34);D$;"/";N$;CHR$(34);"..." 15920 PRINT "DEVICE MEMC1" 15930 FKEY "SAVE "+CHR$(34)+D$+"/"+NB$+CHR$(34),3 15940 LOAD D$+"/"+NB$ 15950 END 15960 END IF 15970 CASE "PAL" 15980 CALL YNSELECT(R,7,38,CSR+4,"Loading") 15990 IF R>0 THEN 16000 PALLOAD D$+"/"+NB$ 16010 END IF 16020 CASE "TEX" 16030 CALL YNSELECT(R,7,38,CSR+4,"Loading") 16040 IF R>0 THEN 16050 TEXLOAD D$+"/"+NB$ 16060 CALL PRIMDISP 16070 END IF 16080 CASE "SED" 16090 CALL YNSELECT(R,7,38,CSR+4,"Loading") 16100 IF R>0 THEN 16110 SELOAD D$+"/"+NB$ 16120 END IF 16130 CASE "BGM" 16140 CALL NUMSELECT(R,7,38,CSR+4,4,"Loading") 16150 IF R>0 THEN 16160 BGMLOAD D$+"/"+NB$,R 16170 IF SD(6)=1 THEN BGMPLAY SD(7) 16180 END IF 16190 CASE "MOD" 16200 CALL NUMSELECT(R,7,38,CSR+4,8,"Loading") 16210 IF R>0 THEN 16220 MODLOAD D$+"/"+NB$,R 16230 FOR K=1 TO OX 16240 CALL POLY_CHECK(K) 16250 NEXT K 16260 CALL MDDISP 16270 END IF 16280 CASE "VRN" 16290 CALL YNSELECT(R,7,38,CSR+4,"Loading") 16300 IF R>0 THEN 16310 VARLOAD D$+"/"+NB$,VRN_BUF 16320 CALL LOAD_3DPRM 16330 FOR K=1 TO OX 16340 CALL POLY_CHECK(K) 16350 NEXT K 16360 CALL MDDISP 16370 END IF 16380 END SELECT 16390 CALL CLPRINT(7,38,CSR+4," ") 16400 CALL PADX 16410 END SUB 16420 !========================================== 16430 SUB YNSELECT(R,C,X,Y,S$) 16440 R=0 16450 PADLOCK,SSSW=1 16460 DO 16470 CALL DTDISP 16480 IF PD(PNO,1)=1 THEN R=0 16490 IF PD(PNO,2)=1 THEN R=1 16500 CALL PADX 16510 CALL CLPRINT(C,X,Y,"Ok? Y/N") 16520 IF R=1 THEN CALL CLPRINT(0,X+5,Y,"/N") ELSE CALL CLPRINT(0,X+4,Y,"Y/") 16530 LOOP UNTIL PD(PNO,6)=1 OR PD(PNO,7)=1 16540 IF PD(PNO,7)=1 THEN R=0 16550 IF R=0 THEN CALL CLPRINT(C,X,Y," ") ELSE CALL CLPRINT(C,X,Y,S$) 16560 PADLOCK,SSSW=0 16570 END SUB 16580 !========================================== 16590 SUB NUMSELECT(R,C,X,Y,L,S$) 16600 R=0 16610 PADLOCK,SSSW=1 16620 DO 16630 CALL DTDISP 16640 CALL PADX 16650 IF PD(PNO,1)=1 THEN R=MOD(R+1,L+1) 16660 IF PD(PNO,2)=1 THEN R=MOD(R-1,L+1) 16670 CALL CLPRINT(C,X,Y,"BufNo:") 16680 IF R=0 THEN CALL CLPRINT(C,X+6,Y,"_ ") ELSE CALL CLPRINT(C,X+6,Y,STR$(R)) 16690 LOOP UNTIL PD(PNO,6)=1 OR PD(PNO,7)=1 16700 IF PD(PNO,7)=1 THEN R=0 16710 IF R=0 THEN CALL CLPRINT(C,X,Y," ") ELSE CALL CLPRINT(C,X,Y,S$) 16720 PADLOCK,SSSW=0 16730 END SUB 16740 !========================================== 16750 SUB VALCHANGE1(V(),VN(),VX(),VC(),L) 16760 VC(L)=MOD(VC(L)-(PD(PNO,1)=1)+(PD(PNO,2)=1),INT(LOG10(VX(L))+1)) 16770 IF PD(PNO,6)=1 THEN V(L)=MIN(VX(L),V(L)+10^VC(L)) 16780 IF PD(PNO,7)=1 THEN V(L)=MAX(VN(L),V(L)-10^VC(L)) 16790 END SUB 16800 !========================================== 16810 SUB VALCHANGE2(V(,),VN(),VX(),VC(),N,L) 16820 VC(L)=MOD(VC(L)-(PD(PNO,1)=1)+(PD(PNO,2)=1),INT(LOG10(VX(L))+1)) 16830 IF PD(PNO,6)=1 THEN V(N,L)=MIN(VX(L),V(N,L)+10^VC(L)) 16840 IF PD(PNO,7)=1 THEN V(N,L)=MAX(VN(L),V(N,L)-10^VC(L)) 16850 END SUB 16860 !========================================== 16870 SUB VALCHANGE3(V(,),VN(),VX(),N,L) 16880 V(N,L)=V(N,L)+(PD(PNO,6)=1)-(PD(PNO,7)=1) 16890 IF V(N,L)>VX(L) THEN V(N,L)=VN(L) 16900 IF V(N,L)VX(L) THEN V(N,L)=V(N,L)+VN(L)-VX(L) 16980 END SUB 16990 !========================================== 17000 SUB VALCHANGE5(V(),VN(),VX(),L) 17010 V(L)=V(L)+(PD(PNO,6)=1)-(PD(PNO,7)=1) 17020 IF V(L)>VX(L) THEN V(L)=VN(L) 17030 IF V(L)T2 THEN NO=T1 17110 WRITE=0 17120 END IF 17130 END SUB 17140 !========================================== 17150 SUB VAL2STR(R$,R,I,J) 17160 R=INT(LOG10(ABS(J))+1) 17170 IF ABS(I)>999999 THEN 17180 R$="0"+STR$(MOD(ABS(I),100)) 17190 R$=R$(LEN(R$)-1:LEN(R$)) 17200 R$=REPEAT$("0",R)+STR$(INT(ABS(I)*.01))+R$ 17210 ELSE 17220 R$=REPEAT$("0",R)+STR$(ABS(I)) 17230 END IF 17240 R$=R$(LEN(R$)-R+1:LEN(R$)) 17250 IF I<0 THEN R$="-"+R$ ELSE R$=" "+R$ 17260 END SUB 17270 !========================================== 17280 SUB PRMPRINT(C,S$,I,J) 17290 CALL CLPRINT(7*(C>0),-1,-1,S$(1:I-J)) 17300 CALL CLPRINT(C,-1,-1,S$(I-J+1:I-J+1)) 17310 CALL CLPRINT(7*(C>0),-1,-1,S$(I-J+2:LEN(S$))) 17320 END SUB 17330 !========================================== 17340 SUB BGCHANGE 17350 WRITE=0 17360 DO 17370 IF WRITE=0 THEN CALL BGPAGE 17380 CALL DTDISP 17390 BGCOL BG(1),BG(2),BG(3) 17400 TILECOL 998,BG(1),BG(2),BG(3),96 17410 TILECOL 999,BG(1),BG(2),BG(3),96 17420 TILECOL 1000,BG(1),BG(2),BG(3),96 17430 CALL PADX 17440 CALL SCRSTR(R$,1,16,BGL+2) 17450 CALL CLPRINT(0,1,BGL+2,R$) 17460 BGL=MOD(BGL-(PD(PNO,3)=1)+(PD(PNO,4)=1),3) 17470 CALL VALCHANGE1(BG,BGN,BGX,BGC,BGL+1) 17480 CALL SCRSTR(R$,1,6,BGL+2) 17490 CALL CLPRINT(7,1,BGL+2,R$) 17500 CALL VAL2STR(R$,R,BG(BGL+1),BGX(BGL+1)) 17510 CALL PRMPRINT(2,R$,R,BGC(BGL+1)) 17520 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 17530 END SUB 17540 !========================================== 17550 SUB PRIMDISP 17560 FOR I=1 TO OX 17570 LINEPOS I,LN(I,5),LN(I,6),LN(I,7),LN(I,8),LN(I,9) 17580 LINECOL I,LN(I,1),LN(I,2),LN(I,3),LN(I,4) 17590 IF LNSW(I)<>0 THEN LINEDISP I ELSE LINEOFF I 17600 TILEPOS I,TL(I,5),TL(I,6),TL(I,7),TL(I,8),TL(I,9) 17610 TILECOL I,TL(I,1),TL(I,2),TL(I,3),TL(I,4) 17620 IF TLSW(I)<>0 THEN TILEDISP I ELSE TILEOFF I 17630 TRIPOS I,TR(I,13),TR(I,14),TR(I,15),TR(I,16),TR(I,17),TR(I,18),TR(I,19) 17640 TRICOL3 I,TR(I,1),TR(I,2),TR(I,3),TR(I,4),TR(I,5),TR(I,6),TR(I,7),TR(I,8),TR(I,9),TR(I,10),TR(I,11),TR(I,12) 17650 IF TRSW(I)<>0 THEN TRIDISP I ELSE TRIOFF I 17660 NEXT I 17670 IF TEXPAGE(TXNO)=0 THEN 17680 SPRTEX 1,TXNO,0,0,512,256 17690 SPRPOS 1,64,92,TX(TXNO,4) 17700 SPRPAL 1,TX(TXNO,1),TX(TXNO,2),TX(TXNO,3) 17710 IF TXSW<>0 THEN SPRDISP 1 ELSE SPROFF 1 17720 SPROFF 2 17730 ELSE 17740 SPRTEX 1,TXNO,0,0,256,256 17750 SPRPOS 1,64,92,TX(TXNO,4) 17760 SPRPAL 1,TX(TXNO,1),0,TX(TXNO,3) 17770 IF TXSW<>0 THEN SPRDISP 1 ELSE SPROFF 1 17780 IF TEXPAGE(MOD(TXNO,16)+1)=1 THEN 17790 SPRTEX 2,MOD(TXNO,16)+1,0,0,256,256 17800 SPRPOS 2,320,92,TX(TXNO,4) 17810 SPRPAL 2,TX(TXNO,1),0,TX(TXNO,3) 17820 SPROFF 2 17830 IF TXSW<>0 THEN SPRDISP 2 ELSE SPROFF 2 17840 ELSE 17850 SPROFF 2 17860 END IF 17870 END IF 17880 END SUB 17890 !========================================== 17900 SUB BGPAGE 17910 LABEL BGPAGE 17920 DATA "BG R ","BG G ","BG B " 17930 CALL PAGEDISP(PAGE) 17940 CALL C2S_TILEPOS(1000,1,2,10,4,16777200,2) 17950 RESTORE *BGPAGE 17960 FOR I=1 TO 3 17970 READ T1$ 17980 CALL CLPRINT(0,1,I+1,T1$+":") 17990 CALL VAL2STR(R$,R,BG(I),BGX(I)) 18000 CALL CLPRINT(0,-1,-1,R$) 18010 NEXT I 18020 END SUB 18030 !========================================== 18040 SUB LINECHECK 18050 WRITE=0 18060 DO 18070 IF WRITE=0 THEN CALL LINEPAGE 18080 CALL DTDISP 18090 CALL PRIMDISP 18100 CALL PADX 18110 CALL SCRSTR(R$,1,19,LNL+2) 18120 CALL CLPRINT(0,1,LNL+2,R$) 18130 LNL=MOD(LNL-(PD(PNO,3)=1)+(PD(PNO,4)=1),11) 18140 CALL SCRSTR(R$,1,9,LNL+2) 18150 CALL CLPRINT(7,1,LNL+2,R$) 18160 SELECT CASE LNL 18170 CASE 0 18180 IF PD(PNO,6)=1 OR PD(PNO,7)=1 THEN 18190 LNNO=MOD(LNNO-1+PD(PNO,6)-PD(PNO,7),OX)+1 18200 WRITE=0 18210 END IF 18220 CALL CLPRINT(7,-1,-1," "+STR$(LNNO)) 18230 CASE 1 18240 LNSW(LNNO)=MOD(LNSW(LNNO)+PD(PNO,6)-PD(PNO,7),2) 18250 CALL CLPRINT(7,-1,-1,SW$(LNSW(LNNO)+1)) 18260 CASE 6 TO 9 18270 CALL VALCHANGE2(LN,LNN,LNX,LNC,LNNO,LNL-1) 18280 CASE ELSE 18290 CALL VALCHANGE2(LN,LNN,LNX,LNC,LNNO,LNL-1) 18300 !IF LN(1,9)>0 THEN STOP 18310 CALL VAL2STR(R$,R,LN(LNNO,LNL-1),LNX(LNL-1)) 18320 !IF LN(1,9)>0 THEN STOP 18330 CALL PRMPRINT(2,R$,R,LNC(LNL-1)) 18340 END SELECT 18350 IF PD(PNO,13)<>0 THEN 18360 LN(LNNO,6)=LN(LNNO,6)+IP((PD(PNO+2,13)-PD(PNO+6,13))*.025) 18370 IF PD(PNO,8)>0 THEN LN(LNNO,8)=LN(LNNO,8)+IP((PD(PNO+2,13)-PD(PNO+6,13))*.025) 18380 END IF 18390 IF PD(PNO,14)<>0 THEN 18400 LN(LNNO,5)=LN(LNNO,5)+IP((PD(PNO+2,14)-PD(PNO+6,14))*.05) 18410 IF PD(PNO,8)>0 THEN LN(LNNO,7)=LN(LNNO,7)+IP((PD(PNO+2,14)-PD(PNO+6,14))*.05) 18420 END IF 18430 IF PD(PNO,15)<>0 THEN 18440 LN(LNNO,8)=LN(LNNO,8)+IP((PD(PNO+2,15)-PD(PNO+6,15))*.025) 18450 IF PD(PNO,8)>0 THEN LN(LNNO,6)=LN(LNNO,6)+IP((PD(PNO+2,15)-PD(PNO+6,15))*.025) 18460 END IF 18470 IF PD(PNO,16)<>0 THEN 18480 LN(LNNO,7)=LN(LNNO,7)+IP((PD(PNO+2,16)-PD(PNO+6,16))*.05) 18490 IF PD(PNO,8)>0 THEN LN(LNNO,5)=LN(LNNO,5)+IP((PD(PNO+2,16)-PD(PNO+6,16))*.05) 18500 END IF 18510 FOR K=5 TO 8 18520 LN(LNNO,K)=MIN(LNX(K),MAX(LNN(K),LN(LNNO,K))) 18530 CALL VAL2STR(R$,R,LN(LNNO,K),LNX(K)) 18540 LOCATE 10,K+3 18550 CALL PRMPRINT((K=LNL-1)*2,R$,R,LNC(K)) 18560 NEXT K 18570 CALL NO_CHANGE(LNNO,1,OX) 18580 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 18590 END SUB 18600 !========================================== 18610 SUB LINEPAGE 18620 LABEL LINEPAGE 18630 DATA "R ","G ","B ","A ","X1","Y1","X2","Y2","Z " 18640 CALL PAGEDISP(PAGE) 18650 CALL C2S_TILEPOS(1000,1,2,18,12,16777200,2) 18660 RESTORE *LINEPAGE 18670 CALL CLPRINT(0,1,2,"LINE No.: "+STR$(LNNO)) 18680 CALL CLPRINT(0,1,3,"LINE :"+SW$(LNSW(LNNO)+1)) 18690 FOR I=1 TO 9 18700 READ T1$ 18710 CALL CLPRINT(0,1,I+3,"LINE "+T1$+":") 18720 CALL VAL2STR(R$,R,LN(LNNO,I),LNX(I)) 18730 CALL CLPRINT(0,-1,-1,R$) 18740 NEXT I 18750 END SUB 18760 !========================================== 18770 SUB TILECHECK 18780 WRITE=0 18790 DO 18800 IF WRITE=0 THEN CALL TILEPAGE 18810 CALL DTDISP 18820 CALL PRIMDISP 18830 CALL PADX 18840 CALL SCRSTR(R$,1,19,TLL+2) 18850 CALL CLPRINT(0,1,TLL+2,R$) 18860 TLL=MOD(TLL-(PD(PNO,3)=1)+(PD(PNO,4)=1),11) 18870 CALL SCRSTR(R$,1,9,TLL+2) 18880 CALL CLPRINT(7,1,TLL+2,R$) 18890 SELECT CASE TLL 18900 CASE 0 18910 IF PD(PNO,6)=1 OR PD(PNO,7)=1 THEN 18920 TLNO=MOD(TLNO-1+PD(PNO,6)-PD(PNO,7),OX)+1 18930 WRITE=0 18940 END IF 18950 CALL CLPRINT(7,-1,-1," "+STR$(TLNO)) 18960 CASE 1 18970 TLSW(TLNO)=MOD(TLSW(TLNO)+PD(PNO,6)-PD(PNO,7),2) 18980 CALL CLPRINT(7,-1,-1,SW$(TLSW(TLNO)+1)) 18990 CASE 6 TO 9 19000 CALL VALCHANGE2(TL,TLN,TLX,TLC,TLNO,TLL-1) 19010 CASE ELSE 19020 CALL VALCHANGE2(TL,TLN,TLX,TLC,TLNO,TLL-1) 19030 CALL VAL2STR(R$,R,TL(TLNO,TLL-1),TLX(TLL-1)) 19040 CALL PRMPRINT(2,R$,R,TLC(TLL-1)) 19050 END SELECT 19060 IF PD(PNO,13)<>0 THEN 19070 TL(TLNO,6)=TL(TLNO,6)+IP((PD(PNO+2,13)-PD(PNO+6,13))*.025) 19080 IF PD(PNO,8)>0 THEN TL(TLNO,8)=TL(TLNO,8)+IP((PD(PNO+2,13)-PD(PNO+6,13))*.025) 19090 END IF 19100 IF PD(PNO,14)<>0 THEN 19110 TL(TLNO,5)=TL(TLNO,5)+IP((PD(PNO+2,14)-PD(PNO+6,14))*.05) 19120 IF PD(PNO,8)>0 THEN TL(TLNO,7)=TL(TLNO,7)+IP((PD(PNO+2,14)-PD(PNO+6,14))*.05) 19130 END IF 19140 IF PD(PNO,15)<>0 THEN 19150 TL(TLNO,8)=TL(TLNO,8)+IP((PD(PNO+2,15)-PD(PNO+6,15))*.025) 19160 IF PD(PNO,8)>0 THEN TL(TLNO,6)=TL(TLNO,6)+IP((PD(PNO+2,15)-PD(PNO+6,15))*.025) 19170 END IF 19180 IF PD(PNO,16)<>0 THEN 19190 TL(TLNO,7)=TL(TLNO,7)+IP((PD(PNO+2,16)-PD(PNO+6,16))*.05) 19200 IF PD(PNO,8)>0 THEN TL(TLNO,5)=TL(TLNO,5)+IP((PD(PNO+2,16)-PD(PNO+6,16))*.05) 19210 END IF 19220 FOR K=5 TO 8 19230 TL(TLNO,K)=MIN(TLX(K),MAX(TLN(K),TL(TLNO,K))) 19240 CALL VAL2STR(R$,R,TL(TLNO,K),TLX(K)) 19250 LOCATE 10,K+3 19260 CALL PRMPRINT((K=TLL-1)*2,R$,R,TLC(K)) 19270 NEXT K 19280 CALL NO_CHANGE(TLNO,1,OX) 19290 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 19300 END SUB 19310 !========================================== 19320 SUB TILEPAGE 19330 LABEL TILEPAGE 19340 DATA "R ","G ","B ","A " 19350 DATA "X1","Y1","X2","Y2","Z " 19360 CALL PAGEDISP(PAGE) 19370 CALL C2S_TILEPOS(1000,1,2,18,12,16777200,2) 19380 RESTORE *TILEPAGE 19390 CALL CLPRINT(0,1,2,"TILE No.: "+STR$(TLNO)) 19400 CALL CLPRINT(0,1,3,"TILE :"+SW$(TLSW(TLNO)+1)) 19410 FOR I=1 TO 9 19420 READ T1$ 19430 CALL CLPRINT(0,1,I+3,"TILE "+T1$+":") 19440 CALL VAL2STR(R$,R,TL(TLNO,I),TLX(I)) 19450 CALL CLPRINT(0,-1,-1,R$) 19460 NEXT I 19470 END SUB 19480 !========================================== 19490 SUB TRICHECK 19500 WRITE=0 19510 DO 19520 IF WRITE=0 THEN CALL TRIPAGE 19530 CALL DTDISP 19540 CALL PRIMDISP 19550 CALL PADX 19560 CALL SCRSTR(R$,1,19,TRL+2) 19570 CALL CLPRINT(0,1,TRL+2,R$) 19580 TRL=MOD(TRL-(PD(PNO,3)=1)+(PD(PNO,4)=1),21) 19590 CALL SCRSTR(R$,1,9,TRL+2) 19600 CALL CLPRINT(7,1,TRL+2,R$) 19610 SELECT CASE TRL 19620 CASE 0 19630 IF PD(PNO,6)=1 OR PD(PNO,7)=1 THEN 19640 TRNO=MOD(TRNO-1+PD(PNO,6)-PD(PNO,7),OX)+1 19650 WRITE=0 19660 END IF 19670 CALL CLPRINT(7,-1,-1," "+STR$(TRNO)) 19680 CASE 1 19690 TRSW(TRNO)=MOD(TRSW(TRNO)+PD(PNO,6)-PD(PNO,7),2) 19700 CALL CLPRINT(7,-1,-1,SW$(TRSW(TRNO)+1)) 19710 CASE 14 TO 19 19720 CALL VALCHANGE2(TR,TRN,TRX,TRC,TRNO,TRL-1) 19730 CASE ELSE 19740 CALL VALCHANGE2(TR,TRN,TRX,TRC,TRNO,TRL-1) 19750 CALL VAL2STR(R$,R,TR(TRNO,TRL-1),TRX(TRL-1)) 19760 CALL PRMPRINT(2,R$,R,TRC(TRL-1)) 19770 END SELECT 19780 IF PD(PNO,13)<>0 THEN 19790 IF PD(PNO,8)=0 THEN 19800 TR(TRNO,14)=TR(TRNO,14)+IP((PD(PNO+2,13)-PD(PNO+6,13))*.025) 19810 ELSE 19820 TR(TRNO,18)=TR(TRNO,18)+IP((PD(PNO+2,13)-PD(PNO+6,13))*.025) 19830 END IF 19840 END IF 19850 IF PD(PNO,14)<>0 THEN 19860 IF PD(PNO,8)=0 THEN 19870 TR(TRNO,13)=TR(TRNO,13)+IP((PD(PNO+2,14)-PD(PNO+6,14))*.05) 19880 ELSE 19890 TR(TRNO,17)=TR(TRNO,17)+IP((PD(PNO+2,14)-PD(PNO+6,14))*.05) 19900 END IF 19910 END IF 19920 IF PD(PNO,15)<>0 THEN TR(TRNO,16)=TR(TRNO,16)+IP((PD(PNO+2,15)-PD(PNO+6,15))*.025) 19930 IF PD(PNO,16)<>0 THEN TR(TRNO,15)=TR(TRNO,15)+IP((PD(PNO+2,16)-PD(PNO+6,16))*.05) 19940 FOR K=13 TO 18 19950 TR(TRNO,K)=MIN(TRX(K),MAX(TRN(K),TR(TRNO,K))) 19960 CALL VAL2STR(R$,R,TR(TRNO,K),TRX(K)) 19970 LOCATE 10,K+3 19980 CALL PRMPRINT((K=TRL-1)*2,R$,R,TRC(K)) 19990 NEXT K 20000 CALL NO_CHANGE(TRNO,1,OX) 20010 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 20020 END SUB 20030 !========================================== 20040 SUB TRIPAGE 20050 LABEL TRIPAGE 20060 DATA "R1","G1","B1","A1" 20070 DATA "R2","G2","B2","A2" 20080 DATA "R3","G3","B3","A3" 20090 DATA "X1","Y1","X2","Y2","X3","Y3","Z " 20100 CALL PAGEDISP(PAGE) 20110 CALL C2S_TILEPOS(1000,1,2,18,22,16777200,2) 20120 RESTORE *TRIPAGE 20130 CALL CLPRINT(0,1,2,"TRI. No.: "+STR$(TRNO)) 20140 CALL CLPRINT(0,1,3,"TRI. :"+SW$(TRSW(TRNO)+1)) 20150 FOR I=1 TO 19 20160 READ T1$ 20170 CALL CLPRINT(0,1,I+3,"TRI. "+T1$+":") 20180 CALL VAL2STR(R$,R,TR(TRNO,I),TRX(I)) 20190 CALL CLPRINT(0,-1,-1,R$) 20200 NEXT I 20210 END SUB 20220 !========================================== 20230 SUB TXVIEW 20240 WRITE=0 20250 DO 20260 IF WRITE=0 THEN CALL TXPAGE 20270 CALL DTDISP 20280 CALL PRIMDISP 20290 IF PD(PNO,20)=1 THEN CALL BUFINIT 20300 CALL PADX 20310 CALL SCRSTR(R$,1,19,TXL+3) 20320 CALL CLPRINT(0,1,TXL+3,R$) 20330 TXL=MOD(TXL-(PD(PNO,3)=1)+(PD(PNO,4)=1),6) 20340 CALL SCRSTR(R$,1,14-(TXL=5)*4,TXL+3) 20350 CALL CLPRINT(7,1,TXL+3,R$) 20360 SELECT CASE TXL 20370 CASE 0 20380 TXSW=MOD(TXSW+PD(PNO,6)-PD(PNO,7),2) 20390 CALL CLPRINT(7,-1,-1,SW$(TXSW+1)) 20400 CASE 1 20410 IF PD(PNO,6)=1 OR PD(PNO,7)=1 THEN 20420 TXNO=MOD(TXNO-1+PD(PNO,6)-PD(PNO,7),16)+1 20430 WRITE=0 20440 END IF 20450 CALL CLPRINT(7,-1,-1," "+STR$(TXNO)) 20460 CASE 3 20470 IF TXBIT=4 THEN CALL VALCHANGE3(TX,TXN,TXX,TXNO,TXL-1) 20480 CALL CLPRINT(7*(TXBIT=4),-1,-1," "+STR$(TX(TXNO,TXL-1))+" ") 20490 CASE 5 20500 CALL VALCHANGE2(TX,TXN,TXX,TXC,TXNO,TXL-1) 20510 CALL VAL2STR(R$,R,TX(TXNO,TXL-1),TXX(TXL-1)) 20520 CALL PRMPRINT(2,R$,R,TXC(TXL-1)) 20530 CASE ELSE 20540 CALL VALCHANGE3(TX,TXN,TXX,TXNO,TXL-1) 20550 CALL CLPRINT(7,-1,-1," "+STR$(TX(TXNO,TXL-1))+" ") 20560 END SELECT 20570 CALL NO_CHANGE(TXNO,1,16) 20580 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 20590 END SUB 20600 !========================================== 20610 SUB TXPAGE 20620 CALL PAGEDISP(PAGE) 20630 CALL C2S_TILEPOS(1000,1,2,19,8,16777200,2) 20640 TXBIT=4+12*TEXPAGE(TXNO) 20650 CALL CLPRINT(6,1,2,"TEXTURE BIT : "+STR$(TXBIT)) 20660 CALL CLPRINT(0,1,3,"TEXTURE DISP :"+SW$(TXSW+1)) 20670 CALL CLPRINT(0,1,4,"TEXTURE PAGE : "+STR$(TXNO)) 20680 CALL CLPRINT(0,1,5,"PALLET NUMBER: "+STR$(TX(TXNO,1))) 20690 IF TXBIT<>4 THEN TX(TXNO,2)=0 20700 CALL CLPRINT(0,1,6,"PALLET OFFSET: "+STR$(TX(TXNO,2))) 20710 CALL CLPRINT(0,1,7,"PALLET ALPHA : "+STR$(TX(TXNO,3))) 20720 CALL CLPRINT(0,1,8,"TEXTURE Z:") 20730 CALL VAL2STR(R$,R,TX(TXNO,4),TXX(4)) 20740 CALL CLPRINT(0,-1,-1,R$) 20750 END SUB 20760 !========================================== 20770 SUB MDDISP 20780 IF PAGE=6 THEN 20790 CALL ROT2XYZ(X,Y,Z,CM(MDNO,1),CM(MDNO,2),CM(MDNO,4)) 20800 IF MD(MDNO,13)>0 THEN 20810 GETWPOS T1,T2,T3,MD(MDNO,13),MD(MDNO,6),MD(MDNO,7),MD(MDNO,8) 20820 CAMPOS 1,X+T1+CM(MDNO,5),Y+T2+CM(MDNO,6),Z+T3+CM(MDNO,7) 20830 ELSE 20840 CAMPOS 1,X+MD(MDNO,6)+CM(MDNO,5),Y+MD(MDNO,7)+CM(MDNO,6),Z+MD(MDNO,8)+CM(MDNO,7) 20850 END IF 20860 CAMROT 1,RAD(CM(MDNO,1)),RAD(CM(MDNO,2)),RAD(CM(MDNO,3)) 20870 CAMLENS 1,CM(MDNO,8) 20880 ELSE 20890 CALL ROT2XYZ(X,Y,Z,CM(OX+1,1),CM(OX+1,2),CM(OX+1,4)) 20900 CAMPOS 1,X+CM(OX+1,5),Y+CM(OX+1,6),Z+CM(OX+1,7) 20910 CAMROT 1,RAD(CM(OX+1,1)),RAD(CM(OX+1,2)),RAD(CM(OX+1,3)) 20920 CAMLENS 1,CM(OX+1,8) 20930 END IF 20940 FOR I=1 TO OX 20950 IF MDSW(I)>0 THEN 20960 MODJOIN I,MD(I,13) 20970 MODSET I,MD(I,1),MD(I,2) 20980 MODOPT I,MD(I,9)*.01,MD(I,10),MD(I,11),MD(I,12) 20990 END IF 21000 MODPOS I,MD(I,6),MD(I,7),MD(I,8) 21010 MODROT I,RAD(MD(I,3)),RAD(MD(I,4)),RAD(MD(I,5)) 21020 IF MDSW(I)>0 THEN 21030 IF PAGE=6 AND I=MDNO AND PD(PNO,8)>0 THEN 21040 IF BLINK<5 THEN MODDISP I ELSE MODOFF I 21050 BLINK=MOD(BLINK+1,10) 21060 ELSE 21070 MODDISP I 21080 END IF 21090 ELSE 21100 MODOFF I 21110 END IF 21120 NEXT I 21130 FOGCOL FG(1),FG(2),FG(3) 21140 FOGSET FG(4),FG(5) 21150 AMBCOL AM(1),AM(2),AM(3) 21160 FOR I=1 TO 3 21170 LIGCOL I,LG(I,2),LG(I,3),LG(I,4) 21180 IF LG(I,1)=0 THEN 21190 LIGVEC I,0,0,0 21200 TRIOFF I+990 21210 TRIOFF I+993 21220 ELSE 21230 CALL ROT2XYZ(X,Y,Z,LG(I,5),-LG(I,6),CM(OX+1,4)/2) 21240 LIGVEC I,-X,-Y,-Z 21250 IF PAGE=8 THEN 21260 J=(I=LGNO)*96 21270 TRICOL3 I+990,LG(I,2),LG(I,3),LG(I,4),128,LG(I,2),LG(I,3),LG(I,4),J,LG(I,2),LG(I,3),LG(I,4),J 21280 TRICOL3 I+993,LG(I,2),LG(I,3),LG(I,4),128,LG(I,2),LG(I,3),LG(I,4),J,LG(I,2),LG(I,3),LG(I,4),J 21290 GETSPOS X0,Y0,Z0,1,CM(OX+1,5),CM(OX+1,6),CM(OX+1,7) 21300 CALL ROT2XYZ(X,Y,Z,LG(I,5)-10,-LG(I,6),CM(OX+1,4)/2) 21310 GETSPOS X1,Y1,Z1,1,CM(OX+1,5)+X,CM(OX+1,6)+Y,CM(OX+1,7)+Z 21320 CALL ROT2XYZ(X,Y,Z,LG(I,5)+10,-LG(I,6),CM(OX+1,4)/2) 21330 GETSPOS X2,Y2,Z2,1,CM(OX+1,5)+X,CM(OX+1,6)+Y,CM(OX+1,7)+Z 21340 CALL ROT2XYZ(X,Y,Z,LG(I,5),-10-LG(I,6),CM(OX+1,4)/2) 21350 GETSPOS X3,Y3,Z3,1,CM(OX+1,5)+X,CM(OX+1,6)+Y,CM(OX+1,7)+Z 21360 CALL ROT2XYZ(X,Y,Z,LG(I,5),10-LG(I,6),CM(OX+1,4)/2) 21370 GETSPOS X4,Y4,Z4,1,CM(OX+1,5)+X,CM(OX+1,6)+Y,CM(OX+1,7)+Z 21380 IF X1<-1728 OR X1>2367 OR X2<-1728 OR X2>2367 OR Y1<-1936 OR Y1>2159 OR Y2<-1936 OR Y2>2159 THEN 21390 TRIOFF I+990 21400 ELSE 21410 TRIPOS I+990,X0,Y0,X1,Y1,X2,Y2,MIN(16777199,MAX(0,MAX(Z0,MAX(Z1,Z2)))) 21420 IF I=LGNO AND BLINK>4 THEN TRIOFF I+990 ELSE TRIDISP I+990 21430 END IF 21440 IF X3<-1728 OR X3>2367 OR X4<-1728 OR X4>2367 OR Y3<-1936 OR Y3>2159 OR Y4<-1936 OR Y4>2159 THEN 21450 TRIOFF I+993 21460 ELSE 21470 TRIPOS I+993,X0,Y0,X3,Y3,X4,Y4,MIN(16777199,MAX(0,MAX(Z0,MAX(Z3,Z4)))) 21480 IF I=LGNO AND BLINK>4 THEN TRIOFF I+993 ELSE TRIDISP I+993 21490 END IF 21500 IF I=LGNO THEN BLINK=MOD(BLINK+1,10) 21510 ELSE 21520 TRIOFF I+990 21530 TRIOFF I+993 21540 END IF 21550 END IF 21560 NEXT I 21570 END SUB 21580 !========================================== 21590 SUB CAMERA_MOVE(C(,),N) 21600 MODROT 1000,RAD(C(N,1)),RAD(C(N,2)),-RAD(C(N,3)) 21610 IF PD(PNO,8)>0 THEN 21620 IF N=OX+1 THEN 21630 IF PD(PNO,13)<>0 THEN 21640 GETWPOS X,Y,Z,1000,0,.05,0 21650 C(N,5)=C(N,5)+IP((PD(PNO+2,13)-PD(PNO+6,13))*X) 21660 C(N,6)=C(N,6)+IP((PD(PNO+2,13)-PD(PNO+6,13))*Y) 21670 C(N,7)=C(N,7)-IP((PD(PNO+2,13)-PD(PNO+6,13))*Z) 21680 END IF 21690 IF PD(PNO,14)<>0 THEN 21700 GETWPOS X,Y,Z,1000,.05,0,0 21710 C(N,5)=C(N,5)+IP((PD(PNO+2,14)-PD(PNO+6,14))*X) 21720 C(N,6)=C(N,6)+IP((PD(PNO+2,14)-PD(PNO+6,14))*Y) 21730 C(N,7)=C(N,7)-IP((PD(PNO+2,14)-PD(PNO+6,14))*Z) 21740 END IF 21750 IF PD(PNO,15)<>0 THEN C(N,4)=C(N,4)+IP((PD(PNO+2,15)-PD(PNO+6,15))*.05) 21760 ELSE 21770 IF PD(PNO,13)<>0 THEN 21780 GETWPOS X,Y,Z,1000,0,.05,0 21790 C(N,5)=C(N,5)+(PD(PNO+2,13)-PD(PNO+6,13))*X 21800 C(N,6)=C(N,6)+(PD(PNO+2,13)-PD(PNO+6,13))*Y 21810 C(N,7)=C(N,7)-(PD(PNO+2,13)-PD(PNO+6,13))*Z 21820 END IF 21830 IF PD(PNO,14)<>0 THEN 21840 GETWPOS X,Y,Z,1000,.05,0,0 21850 C(N,5)=C(N,5)+(PD(PNO+2,14)-PD(PNO+6,14))*X 21860 C(N,6)=C(N,6)+(PD(PNO+2,14)-PD(PNO+6,14))*Y 21870 C(N,7)=C(N,7)-(PD(PNO+2,14)-PD(PNO+6,14))*Z 21880 END IF 21890 IF PD(PNO,15)<>0 THEN 21900 GETWPOS X,Y,Z,1000,0,0,.05 21910 C(N,5)=C(N,5)+(PD(PNO+2,15)-PD(PNO+6,15))*X 21920 C(N,6)=C(N,6)+(PD(PNO+2,15)-PD(PNO+6,15))*Y 21930 C(N,7)=C(N,7)-(PD(PNO+2,15)-PD(PNO+6,15))*Z 21940 END IF 21950 END IF 21960 ELSE 21970 IF N=OX+1 THEN 21980 IF PD(PNO,13)<>0 THEN C(N,1)=C(N,1)-IP((PD(PNO+2,13)-PD(PNO+6,13))*.05) 21990 IF PD(PNO,14)<>0 THEN C(N,2)=C(N,2)+IP((PD(PNO+2,14)-PD(PNO+6,14))*.05) 22000 IF PD(PNO,16)<>0 THEN C(N,3)=C(N,3)-IP((PD(PNO+2,16)-PD(PNO+6,16))*.05) 22010 IF PD(PNO,15)<>0 THEN 22020 GETWPOS X,Y,Z,1000,0,0,.05 22030 C(N,5)=C(N,5)+IP((PD(PNO+2,15)-PD(PNO+6,15))*X) 22040 C(N,6)=C(N,6)+IP((PD(PNO+2,15)-PD(PNO+6,15))*Y) 22050 C(N,7)=C(N,7)-IP((PD(PNO+2,15)-PD(PNO+6,15))*Z) 22060 END IF 22070 ELSE 22080 IF PD(PNO,13)<>0 THEN C(N,1)=C(N,1)-(PD(PNO+2,13)-PD(PNO+6,13))*.05 22090 IF PD(PNO,14)<>0 THEN C(N,2)=C(N,2)+(PD(PNO+2,14)-PD(PNO+6,14))*.05 22100 IF PD(PNO,15)<>0 THEN C(N,4)=C(N,4)+(PD(PNO+2,15)-PD(PNO+6,15))*.0005*MD(N,9) 22110 !IF PD(PNO,16)<>0 THEN C(N,3)=C(N,3)-(PD(PNO+2,16)-PD(PNO+6,16))*.05 22120 END IF 22130 END IF 22140 IF C(N,1)CMX(1) THEN C(N,1)=C(N,1)+CMN(1)-CMX(1) 22160 IF C(N,2)CMX(2) THEN C(N,2)=C(N,2)+CMN(2)-CMX(2) 22180 IF C(N,3)CMX(3) THEN C(N,3)=C(N,3)+CMN(3)-CMX(3) 22200 C(N,4)=MIN(CMX(4),MAX(CMN(4),C(N,4))) 22210 C(N,5)=MIN(CMX(5),MAX(CMN(5),C(N,5))) 22220 C(N,6)=MIN(CMX(6),MAX(CMN(6),C(N,6))) 22230 C(N,7)=MIN(CMX(7),MAX(CMN(7),C(N,7))) 22240 IF N=OX+1 THEN 22250 IF PD(PNO,17)=1 THEN 22260 C(N,1),C(N,2),C(N,3)=0 22270 C(N,4)=100 22280 END IF 22290 IF PD(PNO,18)=1 THEN C(N,3)=0 22300 ELSE 22310 IF PD(PNO,17)=1 THEN 22320 C(N,1)=20 22330 C(N,2),C(N,3)=0 22340 C(N,4)=MD(N,9)+(MD(N,9)=1) 22350 END IF 22360 IF PD(PNO,18)=1 THEN C(N,5),C(N,6),C(N,7)=0 22370 END IF 22380 END SUB 22390 !========================================== 22400 SUB ROT2XYZ(X,Y,Z,RX,RY,R) 22410 X= R*COS(RAD(RX))*SIN(RAD(RY)) 22420 Y=-R*SIN(RAD(RX)) 22430 Z=-R*COS(RAD(RX))*COS(RAD(RY)) 22440 END SUB 22450 !========================================== 22460 SUB XYZ2ROT(RX,RY,R,X,Y,Z) 22470 R=SQR(X*X+Z*Z) 22480 IF Y=0 AND R=0 THEN 22490 RX,RY=0 22500 ELSE 22510 RX=INT(DEG(ANGLE(R,-Y))+.5) 22520 IF R=0 THEN RY=0 ELSE RY=INT(DEG(ANGLE(Z,X))+.5) 22530 END IF 22540 END SUB 22550 !========================================== 22560 SUB POLY_CHECK(K) 22570 FOR I=1 TO 8 22580 FOR J=1 TO 10 22590 IF OBJPOLY(MD(K,1),MD(K,2))>0 THEN EXIT FOR 22600 MD(K,2)=MOD(MD(K,2),10)+1 22610 NEXT J 22620 IF OBJPOLY(MD(K,1),MD(K,2))>0 THEN EXIT FOR 22630 MD(K,1)=MOD(MD(K,1),8)+1 22640 NEXT I 22650 END SUB 22660 !========================================== 22670 SUB MDVIEW 22680 WRITE=0 22690 DO 22700 IF WRITE=0 THEN CALL MDPAGE 22710 CALL DTDISP 22720 CALL MDDISP 22730 CALL PADX 22740 CALL SCRSTR(R$,1,18,MDL+2) 22750 CALL CLPRINT(0,1,MDL+2,R$) 22760 MDL=MOD(MDL-(PD(PNO,3)=1)+(PD(PNO,4)=1),17) 22770 CALL SCRSTR(R$,1,11,MDL+2) 22780 CALL CLPRINT(7,1,MDL+2,R$) 22790 SELECT CASE MDL 22800 CASE 0 22810 IF PD(PNO,6)=1 OR PD(PNO,7)=1 THEN 22820 MDNO=MOD(MDNO-1+PD(PNO,6)-PD(PNO,7),OX)+1 22830 WRITE=0 22840 END IF 22850 CALL CLPRINT(7,-1,-1," "+STR$(MDNO)) 22860 CASE 1 22870 MDSW(MDNO)=MOD(MDSW(MDNO)+PD(PNO,6)-PD(PNO,7),2) 22880 CALL CLPRINT(7,-1,-1,SW$(MDSW(MDNO)+1)) 22890 CASE 2,3 22900 CALL VALCHANGE3(MD,MDN,MDX,MDNO,MDL-1) 22910 CALL POLY_CHECK(MDNO) 22920 CALL CLPRINT((MDL=2)*7,13,4,STR$(MD(MDNO,1))+" ") 22930 CALL CLPRINT((MDL=3)*7,13,5,STR$(MD(MDNO,2))+" ") 22940 CASE 4 TO 6 22950 CALL VALCHANGE4(MD,MDN,MDX,MDC,MDNO,MDL-1) 22960 CALL VAL2STR(R$,R,MD(MDNO,MDL-1),MDX(MDL-1)) 22970 CALL PRMPRINT(2,R$,R,MDC(MDL-1)) 22980 CASE 7 TO 10 22990 CALL VALCHANGE2(MD,MDN,MDX,MDC,MDNO,MDL-1) 23000 CALL VAL2STR(R$,R,MD(MDNO,MDL-1),MDX(MDL-1)) 23010 CALL PRMPRINT(2,R$,R,MDC(MDL-1)) 23020 CASE 11 TO 13 23030 MD(MDNO,MDL-1)=MD(MDNO,MDL-1)+(PD(PNO,6)=1)-(PD(PNO,7)=1) 23040 IF MD(MDNO,MDL-1)>MDX(MDL-1) THEN MD(MDNO,MDL-1)=MDN(MDL-1) 23050 IF MD(MDNO,MDL-1)0)*7,-1,-1," "+STR$(MDCOPYNO)+" ") 23120 IF PD(PNO,6)=1 THEN 23130 MDCOPYNO=MDNO 23140 MDSW(OX+1)=MDSW(MDNO) 23150 FOR I=1 TO 13 23160 MD(OX+1,I)=MD(MDNO,I) 23170 NEXT I 23180 END IF 23190 CASE ELSE 23200 CALL CLPRINT(SGN((MDCOPYNO>0)*(MDNO>MD(OX+1,13)))*7,-1,-1," ○") 23210 IF PD(PNO,6)=1 AND MDCOPYNO>0 AND MDNO>MD(OX+1,13) THEN 23220 MDSW(MDNO)=MDSW(OX+1) 23230 FOR I=1 TO 13 23240 MD(MDNO,I)=MD(OX+1,I) 23250 NEXT I 23260 WRITE=0 23270 END IF 23280 END SELECT 23290 CALL CAMERA_MOVE(CM,MDNO) 23300 CALL NO_CHANGE(MDNO,1,OX) 23310 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 23320 END SUB 23330 !========================================== 23340 SUB MDPAGE 23350 LABEL MDPAGE 23360 FOR K=1 TO OX 23370 CALL POLY_CHECK(K) 23380 NEXT K 23390 DATA "ROT X(deg)","ROT Y(deg)","ROT Z(deg)" 23400 DATA "POS X (cm)","POS Y (cm)","POS Z (cm)" 23410 DATA "SCALE (%)" 23420 CALL PAGEDISP(PAGE) 23430 CALL C2S_TILEPOS(1000,1,2,18,18,16777200,2) 23440 CALL CLPRINT(0,1,2,"MODEL No.: "+STR$(MDNO)) 23450 CALL CLPRINT(0,1,3,"MODEL DISP:"+SW$(MDSW(MDNO)+1)) 23460 CALL CLPRINT(0,1,4,"BUFFER No.: "+STR$(MD(MDNO,1))) 23470 CALL CLPRINT(0,1,5,"OBJECT No.: "+STR$(MD(MDNO,2))) 23480 RESTORE *MDPAGE 23490 FOR I=3 TO 9 23500 READ T1$ 23510 CALL CLPRINT(0,1,I+3,T1$+":") 23520 CALL VAL2STR(R$,R,MD(MDNO,I),MDX(I)) 23530 CALL CLPRINT(0,-1,-1,R$) 23540 NEXT I 23550 CALL CLPRINT(0,1,13,"LIGHT EFF.: "+STR$(MD(MDNO,10))) 23560 CALL CLPRINT(0,1,14,"FOG EFFECT: "+STR$(MD(MDNO,11))) 23570 CALL CLPRINT(0,1,15,"ALPHA MODE: "+STR$(MD(MDNO,12))) 23580 CALL CLPRINT(0,1,16,"JOINT No.: "+STR$(MD(MDNO,13))) 23590 CALL CLPRINT(0,1,17," COPY : "+STR$(MDCOPYNO)) 23600 CALL CLPRINT(0,1,18," PASTE : ○") 23610 END SUB 23620 !========================================== 23630 SUB CAMCTRL 23640 WRITE=0 23650 DO 23660 IF WRITE=0 THEN CALL CAMPAGE 23670 CALL DTDISP 23680 CALL MDDISP 23690 IF PD(PNO,20)=1 THEN CALL BUFINIT 23700 CALL PADX 23710 CALL SCRSTR(R$,1,18,CML+2) 23720 CALL CLPRINT(0,1,CML+2,R$) 23730 CML=MOD(CML-(PD(PNO,3)=1)+(PD(PNO,4)=1),13) 23740 CALL SCRSTR(R$,1,11,CML+2) 23750 CALL CLPRINT(7,1,CML+2,R$) 23760 SELECT CASE CML 23770 CASE 0 TO 3 23780 CALL VALCHANGE4(CM,CMN,CMX,CMC,OX+1,CML+1) 23790 CASE 4 TO 6 23800 CALL VALCHANGE2(CM,CMN,CMX,CMC,OX+1,CML+1) 23810 CASE 7 23820 CALL VALCHANGE2(CM,CMN,CMX,CMC,OX+1,CML+1) 23830 CALL VAL2STR(R$,R,CM(OX+1,CML+1),CMX(CML+1)) 23840 CALL PRMPRINT(2,R$,R,CMC(CML+1)) 23850 CASE ELSE 23860 CALL VALCHANGE1(FG,FGN,FGX,FGC,CML-7) 23870 IF CML=11 THEN FG(4)=MIN(FG(5)-1,FG(4)) 23880 IF CML=12 THEN FG(5)=MAX(FG(4)+1,FG(5)) 23890 CALL VAL2STR(R$,R,FG(CML-7),FGX(CML-7)) 23900 CALL PRMPRINT(2,R$,R,FGC(CML-7)) 23910 END SELECT 23920 CALL CAMERA_MOVE(CM,OX+1) 23930 FOR K=1 TO 7 23940 CALL VAL2STR(R$,R,CM(OX+1,K),CMX(K)) 23950 LOCATE 12,K+1 23960 CALL PRMPRINT(2*(K=CML+1),R$,R,CMC(K)) 23970 NEXT K 23980 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 23990 END SUB 24000 !========================================== 24010 SUB CAMPAGE 24020 LABEL CAMPAGE 24030 DATA "ROT X(deg)","ROT Y(deg)","ROT Z(deg)" 24040 DATA "DIST. (cm)" 24050 DATA "TGT X (cm)","TGT Y (cm)","TGT Z (cm)" 24060 DATA "LENS(ZOOM)" 24070 DATA "FOG COL R ","FOG COL G ","FOG COL B " 24080 DATA "FOG SET N ","FOG SET F " 24090 CALL PAGEDISP(PAGE) 24100 CALL C2S_TILEPOS(1000,1,2,18,14,16777200,2) 24110 RESTORE *CAMPAGE 24120 FOR I=1 TO 8 24130 READ T1$ 24140 CALL CLPRINT(0,1,I+1,T1$+":") 24150 CALL VAL2STR(R$,R,CM(OX+1,I),CMX(I)) 24160 CALL CLPRINT(0,-1,-1,R$) 24170 NEXT I 24180 FOR I=1 TO 5 24190 READ T1$ 24200 CALL CLPRINT(0,1,I+9,T1$+":") 24210 CALL VAL2STR(R$,R,FG(I),FGX(I)) 24220 CALL CLPRINT(0,-1,-1,R$) 24230 NEXT I 24240 END SUB 24250 !========================================== 24260 SUB LIGCTRL 24270 WRITE=0 24280 DO 24290 IF WRITE=0 THEN CALL LIGPAGE 24300 CALL DTDISP 24310 CALL MDDISP 24320 IF PD(PNO,20)=1 THEN CALL BUFINIT 24330 CALL PADX 24340 CALL SCRSTR(R$,1,18,LGL+2) 24350 CALL CLPRINT(0,1,LGL+2,R$) 24360 LGL=MOD(LGL-(PD(PNO,3)=1)+(PD(PNO,4)=1),10) 24370 CALL SCRSTR(R$,1,11,LGL+2) 24380 CALL CLPRINT(7,1,LGL+2,R$) 24390 SELECT CASE LGL 24400 CASE 0 TO 2 24410 CALL VALCHANGE1(AM,AMN,AMX,AMC,LGL+1) 24420 CALL VAL2STR(R$,R,AM(LGL+1),AMX(LGL+1)) 24430 CALL PRMPRINT(2,R$,R,AMC(LGL+1)) 24440 CASE 3 24450 IF PD(PNO,6)=1 OR PD(PNO,7)=1 THEN 24460 LGNO=MOD(LGNO-1+PD(PNO,6)-PD(PNO,7),3)+1 24470 WRITE=0 24480 END IF 24490 CALL CLPRINT(7,-1,-1," "+STR$(LGNO)) 24500 CASE 4 24510 CALL VALCHANGE3(LG,LGN,LGX,LGNO,LGL-3) 24520 CALL CLPRINT(7,-1,-1,SW$(LG(LGNO,LGL-3)+1)) 24530 CASE 5 TO 7 24540 CALL VALCHANGE2(LG,LGN,LGX,LGC,LGNO,LGL-3) 24550 CALL VAL2STR(R$,R,LG(LGNO,LGL-3),LGX(LGL-3)) 24560 CALL PRMPRINT(2,R$,R,LGC(LGL-3)) 24570 CASE ELSE 24580 CALL VALCHANGE4(LG,LGN,LGX,LGC,LGNO,LGL-3) 24590 CALL VAL2STR(R$,R,LG(LGNO,LGL-3),LGX(LGL-3)) 24600 CALL PRMPRINT(2,R$,R,LGC(LGL-3)) 24610 END SELECT 24620 CALL CAMERA_MOVE(CM,OX+1) 24630 CALL NO_CHANGE(LGNO,1,3) 24640 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 24650 END SUB 24660 !========================================== 24670 SUB LIGPAGE 24680 LABEL LIGPAGE 24690 DATA "AMBIENT R ","AMBIENT G ","AMBIENT B " 24700 DATA "LIGHT No.","LIGHT " 24710 DATA "LIG.COL R ","LIG.COL G ","LIG.COL B " 24720 DATA "ROT X(deg)","ROT Y(deg)" 24730 CALL PAGEDISP(PAGE) 24740 CALL C2S_TILEPOS(1000,1,2,15,11,16777200,2) 24750 RESTORE *LIGPAGE 24760 FOR I=1 TO 3 24770 READ T1$ 24780 CALL CLPRINT(0,1,I+1,T1$+":") 24790 CALL VAL2STR(R$,R,AM(I),AMX(I)) 24800 CALL CLPRINT(0,-1,-1,R$) 24810 NEXT I 24820 READ T1$ 24830 CALL CLPRINT((LGL=3)*7,1,5,T1$+": "+STR$(LGNO)) 24840 READ T1$ 24850 CALL CLPRINT((LGL=4)*7,1,6,T1$+":"+SW$(LG(LGNO,1)+1)) 24860 FOR I=2 TO 6 24870 READ T1$ 24880 CALL CLPRINT(0,1,I+5,T1$+":") 24890 CALL VAL2STR(R$,R,LG(LGNO,I),LGX(I)) 24900 CALL CLPRINT(0,-1,-1,R$) 24910 NEXT I 24920 END SUB 24930 !========================================== 24940 SUB EFFCTRL 24950 WRITE=0 24960 DO 24970 IF WRITE=0 THEN CALL EFFPAGE 24980 CALL DTDISP 24990 CALL MDDISP 25000 IF PD(PNO,20)=1 THEN CALL BUFINIT 25010 CALL PADX 25020 CALL SCRSTR(R$,1,19,EFL+2) 25030 CALL CLPRINT(0,1,EFL+2,R$) 25040 EFL=MOD(EFL-(PD(PNO,3)=1)+(PD(PNO,4)=1),8) 25050 CALL SCRSTR(R$,1,10,EFL+2) 25060 CALL CLPRINT(7,1,EFL+2,R$) 25070 SELECT CASE EFL 25080 CASE 7 25090 CALL VALCHANGE5(EF,EFN,EFX,EFL+1) 25100 CALL CLPRINT(7,-1,-1," "+STR$(EF(EFL+1))) 25110 CASE ELSE 25120 CALL VALCHANGE1(EF,EFN,EFX,EFC,EFL+1) 25130 CALL VAL2STR(R$,R,EF(EFL+1),EFX(EFL+1)) 25140 CALL PRMPRINT(2,R$,R,EFC(EFL+1)) 25150 END SELECT 25160 CALL CAMERA_MOVE(CM,OX+1) 25170 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 25180 END SUB 25190 !========================================== 25200 SUB EFFPAGE 25210 LABEL EFFPAGE 25220 DATA "ALTEST ","EFFECT A " 25230 DATA "EFFECT X1","EFFECT Y1" 25240 DATA "EFFECT X2","EFFECT Y2" 25250 DATA "EFFECT Z "," ORDER " 25260 CALL PAGEDISP(PAGE) 25270 CALL C2S_TILEPOS(1000,1,2,19,9,16777200,2) 25280 RESTORE *EFFPAGE 25290 FOR I=1 TO 8 25300 READ T1$ 25310 CALL CLPRINT(0,1,I+1,T1$+":") 25320 CALL VAL2STR(R$,R,EF(I),EFX(I)) 25330 CALL CLPRINT(0,-1,-1,R$) 25340 NEXT I 25350 END SUB 25360 !========================================== 25370 SUB SDPLAY 25380 WRITE,SD(1)=0 25390 DO 25400 IF WRITE=0 THEN CALL SDPAGE 25410 CALL DTDISP 25420 IF PD(PNO,20)=1 THEN CALL BUFINIT 25430 CALL PADX 25440 CALL SCRSTR(R$,1,16,SDL+2) 25450 CALL CLPRINT(0,1,SDL+2,R$) 25460 SDL=MOD(SDL-(PD(PNO,3)=1)+(PD(PNO,4)=1),8) 25470 CALL SCRSTR(R$,1,10,SDL+2) 25480 CALL CLPRINT(7,1,SDL+2,R$) 25490 IF SD(5)=0 THEN SD(1)=0 25500 IF SD(1)=1 THEN 25510 SETERM=MOD(SETERM+1,SD(5)) 25520 IF SETERM=0 THEN SEPLAY SD(2),SD(3),SD(4) 25530 END IF 25540 SELECT CASE SDL 25550 CASE 0 25560 CALL CLPRINT(7-(SD(1)=1),-1,-1," ○") 25570 IF PD(PNO,6)=1 THEN 25580 SD(1)=1 25590 SEPLAY SD(2),SD(3),SD(4) 25600 END IF 25610 IF PD(PNO,7)=1 THEN SD(1)=0 25620 CASE 5 25630 IF SD(6)=1 THEN CALL CLPRINT(6,-1,-1," PLAY") ELSE CALL CLPRINT(7,-1,-1," STOP") 25640 IF PD(PNO,6)=1 THEN 25650 SD(6)=1 25660 BGMPLAY SD(7) 25670 END IF 25680 IF PD(PNO,7)=1 THEN 25690 SD(6)=0 25700 BGMSTOP 25710 END IF 25720 CASE 6 25730 CALL VALCHANGE5(SD,SDN,SDX,SDL+1) 25740 CALL CLPRINT(7,-1,-1," "+STR$(SD(SDL+1))) 25750 CASE ELSE 25760 CALL VALCHANGE1(SD,SDN,SDX,SDC,SDL+1) 25770 CALL VAL2STR(R$,R,SD(SDL+1),SDX(SDL+1)) 25780 CALL PRMPRINT(2,R$,R,SDC(SDL+1)) 25790 VOLUME SD(8) 25800 END SELECT 25810 LOOP UNTIL PD(PNO,9)=1 OR PD(PNO,10)=1 25820 END SUB 25830 !========================================== 25840 SUB SDPAGE 25850 LABEL SDPAGE 25860 DATA "SE PLAY ","SE No." 25870 DATA "SE L VOL.","SE R VOL." 25880 DATA "SE REP.T " 25890 DATA "BGM PLAY ","BGM No.","BGM VOL." 25900 CALL PAGEDISP(PAGE) 25910 CALL C2S_TILEPOS(1000,1,2,15,9,16777200,2) 25920 RESTORE *SDPAGE 25930 READ T1$ 25940 CALL CLPRINT(0,1,2,T1$+": ○") 25950 FOR I=2 TO 5 25960 READ T1$ 25970 CALL CLPRINT(0,1,I+1,T1$+":") 25980 CALL VAL2STR(R$,R,SD(I),SDX(I)) 25990 CALL CLPRINT(0,-1,-1,R$) 26000 NEXT I 26010 READ T1$ 26020 CALL CLPRINT(0,1,7,T1$+":") 26030 IF SD(6)=1 THEN CALL CLPRINT(0,-1,-1," PLAY") ELSE CALL CLPRINT(0,-1,-1," STOP") 26040 READ T1$ 26050 CALL CLPRINT(0,1,8,T1$+": "+STR$(SD(7))) 26060 READ T1$ 26070 CALL CLPRINT(0,1,9,T1$+":") 26080 CALL VAL2STR(R$,R,SD(8),SDX(8)) 26090 CALL CLPRINT(0,-1,-1,R$) 26100 END SUB 26110 !========================================== 26120 SUB PADCHECK 26130 VBSW,WRITE=0 26140 DO 26150 IF WRITE=0 THEN CALL PADPAGE 26160 CALL DTDISP 26170 CHG1=MOD(CHG1+(CHG2=1),2) 26180 CHG2=MOD(CHG2+1,2) 26190 FOR I=CHG2+1 TO 20 STEP 2 26200 LOCATE 39+CHG1*6,I+2 26210 T1=PAD(CHG1+1,I) 26220 PRINT REPEAT$(" ",(T1<10)+(T1<100));STR$(T1); 26230 NEXT I 26240 IF PADLOCK=0 AND PD(PNO,20)=1 THEN CALL BUFINIT 26250 CALL PADX 26260 IF VBSW=0 THEN VIBRATE PNO,VB(1),VB(2),0 26270 IF VBSW=2 THEN VIBRATE PNO,VB(1),VB(2),.1 26280 IF VBSW=1 THEN VBCT=MAX(0,VBCT-1) 26290 IF VBCT=0 THEN VBSW=0 26300 CALL SCRSTR(R$,1,18,VBL+3) 26310 IF PADLOCK=0 AND PD(PNO,6)>0 AND PD(PNO,17)>0 THEN PADLOCK=1 26320 SELECT CASE PADLOCK 26330 CASE 0 26340 CALL CLPRINT(0,1,VBL+3,R$) 26350 VBL=MOD(VBL-(PD(PNO,3)=1)+(PD(PNO,4)=1),4) 26360 CALL SCRSTR(R$,1,9,VBL+3) 26370 CALL CLPRINT(7,1,VBL+3,R$) 26380 SELECT CASE VBL 26390 CASE 0 26400 IF PD(PNO,6)=1 THEN 26410 VBSW=MIN(2,MOD(VBSW+1,3)) 26420 VBCT=VB(3)*.06 26430 VIBRATE PNO,VB(1),VB(2),VB(3)*.001 26440 END IF 26450 IF PD(PNO,7)=1 THEN VBSW=0 26460 CASE 1,3 26470 CALL VALCHANGE1(VB,VBN,VBX,VBC,VBL) 26480 CALL VAL2STR(R$,R,VB(VBL),VBX(VBL)) 26490 CALL PRMPRINT(2,R$,R,VBC(VBL)) 26500 CASE ELSE 26510 CALL VALCHANGE5(VB,VBN,VBX,VBL) 26520 CALL CLPRINT(7,-1,-1," "+STR$(VB(VBL))+" ") 26530 END SELECT 26540 CALL CLPRINT(6,11,2,STR$(PNO)) 26550 CALL CLPRINT((VBL=0)*7,10,3,SW$(VBSW+1)) 26560 CASE 1 26570 CALL CLPRINT(6,1,8,"FUNCTION UNLOCK: L3+×") 26580 IF PD(PNO,7)>0 AND PD(PNO,17)>0 OR KEYCODE1=41 THEN PADLOCK=2 26590 CASE ELSE 26600 CALL CLPRINT(0,1,8,"FUNCTION LOCK : L3+○") 26610 IF PD(PNO,7)=0 AND PD(PNO,17)=0 AND KEYCODE1<>41 THEN 26620 PADLOCK=0 26630 CALL CLPRINT(2,1,8,"FUNCTION LOCK : L3+○") 26640 END IF 26650 END SELECT 26660 LOOP UNTIL PADLOCK=0 AND(PD(PNO,9)=1 OR PD(PNO,10)=1) 26670 END SUB 26680 !========================================== 26690 SUB PADPAGE 26700 LABEL PADPAGE 26710 DATA " →"," ←"," ↑"," ↓" 26720 DATA " △"," ○"," ×"," □" 26730 DATA " L1"," R1"," L2"," R2" 26740 DATA "左ST縦","左ST横","右ST縦","右ST横" 26750 DATA " L3"," R3","SELECT"," START" 26760 CALL PAGEDISP(PAGE) 26770 TILEPOS 1000,0,18,640,224,16777200 26780 CALL CLPRINT(7,38, 2,"PAD1 PAD2") 26790 RESTORE *PADPAGE 26800 FOR I=1 TO 20 26810 READ T1$ 26820 CALL CLPRINT(7,27,I+2,REPEAT$(" ",(I<10))+STR$(I)+" "+T1$+" : ") 26830 NEXT I 26840 CALL CLPRINT(6,1,2," PAD No.:") 26850 CALL CLPRINT(0,1,3," VIBRATE:") 26860 CALL CLPRINT(0,1,4," LEFT:") 26870 CALL VAL2STR(R$,R,VB(1),VBX(1)) 26880 CALL CLPRINT(0,-1,-1,R$) 26890 CALL CLPRINT(0,1,5," RIGHT: "+STR$(VB(2))) 26900 CALL CLPRINT(0,1,6,"TIME(ms):") 26910 CALL VAL2STR(R$,R,VB(3),VBX(3)) 26920 CALL CLPRINT(0,-1,-1,R$) 26930 CALL CLPRINT(2,1,8,"FUNCTION LOCK : L3+○") 26940 END SUB 26950 !========================================== 26960 SUB SCR_SAVER 26970 CLEAR 26980 FOR I=1 TO 1000 26990 LINEOFF I 27000 TILEOFF I 27010 TRIOFF I 27020 SPROFF I 27030 MODOFF I 27040 NEXT I 27050 BGCOL 0,0,0 27060 RANDOMIZE 27070 WRITE=0 27080 SSSW=1 27090 ALTEST 0 27100 EFFECT 127,0,0,640,224,0 27110 DO 27120 CALL PADX 27130 FOR I1=1 TO 2 27140 FOR I2=1 TO 3 27150 IF SSVX(I1,I2)=0 THEN SSVX(I1,I2)=1 27160 IF SSVY(I1,I2)=0 THEN SSVY(I1,I2)=1 27170 IF MOD(SSX(I1,I2),640)=0 THEN SSVX(I1,I2)=-SGN(SSVX(I1,I2))*(RND+.1)*2 27180 IF MOD(SSY(I1,I2),224)=0 THEN SSVY(I1,I2)=-SGN(SSVY(I1,I2))*(RND+.1) 27190 SSX(I1,I2)=MIN(640,MAX(0,SSX(I1,I2)+SSVX(I1,I2))) 27200 SSY(I1,I2)=MIN(224,MAX(0,SSY(I1,I2)+SSVY(I1,I2))) 27210 IF SSCNT=0 THEN 27220 SSVR(I1,I2)=INT(RND*3-1) 27230 SSVG(I1,I2)=INT(RND*3-1) 27240 SSVB(I1,I2)=INT(RND*3-1) 27250 END IF 27260 SSR(I1,I2)=MIN(255,MAX(0,SSR(I1,I2)+SSVR(I1,I2))) 27270 SSG(I1,I2)=MIN(255,MAX(0,SSG(I1,I2)+SSVG(I1,I2))) 27280 SSB(I1,I2)=MIN(255,MAX(0,SSB(I1,I2)+SSVB(I1,I2))) 27290 NEXT I2 27300 TRICOL3 I1+995,SSR(I1,1),SSG(I1,1),SSB(I1,1),64,SSR(I1,2),SSG(I1,2),SSB(I1,2),64,SSR(I1,3),SSG(I1,3),SSB(I1,3),64 27310 TRIPOS I1+995,SSX(I1,1),SSY(I1,1),SSX(I1,2),SSY(I1,2),SSX(I1,3),SSY(I1,3),I1 27320 TRIDISP I1+995 27330 NEXT I1 27340 SSCNT=MOD(SSCNT+1,256) 27350 LOOP WHILE SST=SSTX AND KEYCODE1=0 AND KEYCODE2=0 27360 TRIOFF 996 27370 TRIOFF 997 27380 FOR I1=1 TO 20 27390 PD(1,I1),PD(2,I1)=0 27400 NEXT I1 27410 SSSW,SST=0 27420 FSYNC 30 27430 END SUB