We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Rogue Alliance (Sharp X68000)
Jump to navigation
Jump to search
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Star Craft
Games > Games by platform > Sharp X68000 games
Games > Games by publisher > Games published by Star Craft
Games > Games by release date > Games released in 1989
| Rogue Alliance |
|---|
|
Developer:
Star Craft
|
Uncompiled Code
Present on disks 1 and 3 (Ki and Program).
Disk 1
cc /Y MESH.C cc DEF.BAS
#include <class.h>
struct XLINEPTR{
UWORD vram_page;
WORD x;
WORD y;
WORD x1;
UWORD line_style;
};
struct YLINEPTR{
UWORD vram_page;
WORD x;
WORD y;
WORD y1;
UWORD line_style;
};
struct TXFILLPTR{
UWORD vram_page;
WORD x;
WORD y;
WORD x2;
WORD y2;
UWORD fill_patn;
};
main(argc)
int argc;
{
struct XLINEPTR xbuf;
struct YLINEPTR ybuf;
struct TXFILLPTR xybuf;
int xx,yy;
xbuf.vram_page = 2;
ybuf.vram_page = 2;
xybuf.vram_page = 2;
xybuf.x = 0;
xybuf.y = 0;
xybuf.x2 = 768;
xybuf.y2 = 512;
xybuf.fill_patn = 0;
TXFILL(&xybuf);
if(argc >1){TPALET(4,0xde6c);
return(0);}
TPALET(4,0x6b54);
ybuf.y = 0;
ybuf.y1 = 512-16;
for(xx=8;xx<768;xx +=8)
{
if(xx % (5*8)) ybuf.line_style = 0x8888;
else if(xx % (10*8)) ybuf.line_style = 0xf0f0;
else ybuf.line_style = 0xffff;
ybuf.x=xx-1;
TXYLINE(&ybuf);
}
xbuf.x = 7;
xbuf.x1 = 768-8-7;
for(yy=0;yy<=512-16;yy +=16)
{
if(yy % (5*16)) xbuf.line_style = 0x8888;
else if(yy % (10*16)) xbuf.line_style = 0xf0f0;
else xbuf.line_style = 0xffff;
xbuf.y=yy;
TXXLINE(&xbuf);
}
}
10 /******************************/
20 /* sprite pattern editor
30 /* Copyright (C) 1987 SHARP
100 /******initialize********
105 wait=2000:/*basic=200
110 str help_file="\etc\def.hlp"
120 dim int pal(15,15) /*palet data*/
130 dim char w(255) /*pattern work*/
140 int l=1 /*lut no*/
150 int p=0 /*palet code*/
160 int c /*color code*/
170 int b /*blue*/
180 int r /*red*/
190 int g /*green*/
200 int i /*i*/
210 int pf=0 /*palet flag*/
220 int px,py /*mouse cusor position*/
230 int f=15+1 /*number of functions*/
240 int x,y /*mouse dx,dy*/
250 int bl,br /*left and right sw.*/
310 int X1=64,X2=192 /*position data*/
320 int Y11=64,Y12=320
330 int Y13=400,Y14=448+8
340 int XX1=4,YY11=4
350 int X3=240,X4=272
360 int Y31=64,Y32=96
370 int Y33=400,Y34=440
380 int Y35=120-8,Y36 : Y36=Y35+16*f-1
390 int Y37,Y38 : Y37=Y36+1:Y38=Y37+12
400 int X5=320,X6=448
410 int Y51=64,Y52=192
420 int Y53=200,Y54=448
430 int XX5=40,YY51=8,YY53=25,YY54=57
440 int X7=456,X8=464
450 int Y71=64,Y72=192
460 int XX7=57,YY71=8
500 /*
510 width 64
520 color 5
530 locate 0,14
540 color 6
550 print " 説明は必要ですか?[Y/N]";
560 color 3
570 if (tolower(asc(inkey$)) = 'y') then {
580 print "Y"
590 type_doc()
600 }
650 cls
900 init()
1000 /*********main***********
1010 while(1)
1020 mspos(px,py)
1030 sp_move(0,px,py)
1040 msstat(x,y,bl,br)
1050 if (bl) then {
1060 if (px >= X1 and px < X2) then {
1070 if (py >= Y13 and py < Y14) then {
1080 mk_pal((px-X1)/4,(py-Y13)/8)
1090 }
1100 } else if (px >= X3 and px < X4) then {
1110 if (py >= Y33 and py < Y34) then {
1120 set_pal()
1130 } else if (py >= Y35 and py < Y36) then {
1140 sel_func((py-Y35)/4)
1150 } else if (py >= Y37 and py < Y38) then {
1160 if (term()) then end
1170 }
1180 } else if (px >= X5 and px < X6) then {
1190 if (py >= Y51 and py < Y52) then {
1200 mk_pat((px-X5)/8,(py-Y51)/8)
1210 } else if (py >= Y53+16 and py < Y54) then {
1220 sel_lut((px-X5)/8,(py-Y53)/8)
1230 }
1240 } else if (px >= X7 and px < X8) then {
1250 if (py >= Y71 and py < Y72) then {
1260 sel_pal((py-Y71)/8)
1270 }
1280 }
1290 } else if (br) then {
1300 if (px >= X5 and px < X6) then {
1310 if (py >= Y51 and py < Y52) then {
1320 mk_pat0((px-X5)/8,(py-Y51)/8)
1330 }
1340 }
1350 }
1360 endwhile
1370 end
10000 /************************
10010 func sel_lut(x,y)
10020 int i
10030 if (y mod 2) then return()
10040 sp_set(0,,,253)
10050 dot(XX7+2,YY71+p,0)
10060 p=x
10070 dot(XX7+2,YY71+p,65535)
10080 i=y/2
10090 if (i = l) then {
10100 c=pal(l,p)
10110 pal_disp(c)
10120 } else {
10130 c=pal(i,p)
10140 pattern(i)
10150 }
10160 sp_set(0,,,254)
10170 endfunc
11000 /************************
11010 func sel_pal(y)
11030 sp_set(0,,,253)
11040 dot(XX7+2,YY71+p,0)
11050 p=y
11060 dot(XX7+2,YY71+p,65535)
11070 c=pal(l,p)
11080 pal_disp(c)
11090 sp_set(0,,,254)
11100 endfunc
12000 /************************
12010 func mk_pal(x,y)
12020 int wc
12030 if (y mod 2) then return()
12040 switch (y / 2)
12050 case 0: b=x
12060 pal_vol(0,b)
12070 break
12080 case 1: r=x
12090 pal_vol(1,r)
12100 break
12110 case 2: g=x
12120 pal_vol(2,g)
12130 break
12140 case 3: if (x > 1) then return()
12150 i=x
12160 pal_vol(3,i)
12170 break
12180 endswitch
12190 pf=0
12200 wc=rgb(r,g,b)+i
12210 fill(X3,Y33,X4-1,Y34-1,wc)
12220 mspos(px,py)
12230 sp_move(0,px,py)
12240 fill(X1+58,Y14,X1+81,Y14+11,0)
12250 symbol(X1+58,Y14,right$("000"+hex$(wc),4),1,1,0,65535,0)
12260 endfunc
13000 /************************
13010 func mk_pat(x,y)
13030 if not(pf) then {
13040 sp_set(0,,,253)
13050 pal_disp(c)
13060 sp_set(0,,,254)
13070 }
13080 fill(X5+x*8,Y51+y*8,X5+x*8+7,Y51+y*8+7,c)
13090 fill(X3+x*2,Y31+y*2,X3+x*2+1,Y31+y*2+1,c)
13100 w(x+y*16)=p
13110 endfunc
13500 /************************
13510 func mk_pat0(x,y)
13530 if not(pf or p) then {
13540 sp_set(0,,,253)
13550 pal_disp(c)
13560 sp_set(0,,,254)
13570 }
13580 fill(X5+x*8,Y51+y*8,X5+x*8+7,Y51+y*8+7,pal(l,0))
13590 fill(X3+x*2,Y31+y*2,X3+x*2+1,Y31+y*2+1,pal(l,0))
13600 w(x+y*16)=0
13610 endfunc
14000 /************************
14010 func set_pal()
14020 int count=0,x,y,bl,br,c_old
14040 box(X3-1,Y33-1,X4,Y34,65472,65535)
14050 cls
14060 color 2
14070 print " パレットの設定"
14075 msbtn(0,0,0)
14080 while (count < wait)
14090 mspos(px,py)
14100 sp_move(0,px,py)
14110 msstat(x,y,bl,br)
14120 if (bl) then break else count=count+1
14130 endwhile
14140 if (count < wait and px >= X3 and px < X4 and py >= Y33 and py < Y34 ) then {
14150 sp_set(0,,,253)
14160 c_old=c
14170 c=rgb(r,g,b)+i
14180 pal(l,p)=c
14190 pattern(l)
14200 dot(XX5+p,YY53+l*2,c)
14210 dot(XX7,YY71+p,c)
14220 sp_color(p,c,l)
14230 sp_set(0,,,254)
14240 if (not sure()) then {
14250 sp_set(0,,,253)
14260 c=c_old
14270 pal(l,p)=c
14280 pattern(l)
14290 dot(XX5+p,YY53+l*2,c)
14300 dot(XX7,YY71+p,c)
14310 sp_color(p,c,l)
14320 sp_set(0,,,254)
14330 }
14340 }
14350 box(X3-1,Y33-1,X4,Y34,65535,65535)
14360 cls
14370 color 3
14380 endfunc
15000 /************************
15010 func sel_func(n)
15020 int i=0,x,y,bl,br
15030 if (n mod 4 = 3) then return() else n=n/4
15040 if n > f then return()
15060 fill(X3,Y35+n*16,X4-1,Y35+n*16+11,62)
15070 set_func(n)
15080 set_msg(n)
15085 msbtn(0,0,0)
15090 while(i<wait)
15100 mspos(px,py)
15110 sp_move(0,px,py)
15120 msstat(x,y,bl,br)
15130 if (bl) then break else i=i+1
15140 endwhile
15150 if (i < wait and px >= X3 and px < X4 and py >= Y35+n*16 and py < Y35+n*16+11) then {
15160 fill(X3,Y35+n*16,X4-1,Y35+n*16+11,1984)
15170 set_func(n)
15180 if n < 8 then {
15190 rotate(n)
15200 } else {
15210 switch (n)
15220 case 8: get_pat()
15230 break;
15240 case 9: set_pat()
15250 break;
15260 case 10: fill_pat()
15270 break;
15280 case 11: program()
15290 break;
15300 case 12: sp_palet()
15310 break;
15320 case 13: init_pal()
15330 break;
15340 case 14: clr()
15350 break;
15360 case 15: help()
15370 break;
15380 endswitch
15390 }
15400 }
15410 cls
15420 color 3
15430 fill(X3,Y35+n*16,X4-1,Y35+n*16+11,0)
15440 set_func(n)
15450 endfunc
20000 /*+++++++++++++++++++++++
20010 func rotate(n)
20020 int i,j,d(255)
20030 sp_set(0,,,253)
20040 switch (n)
20050 case 0: for i=0 to 15
20060 d(i)=w(i*16+15)
20070 next
20080 for i=0 to 254
20090 w(255-i)=w(254-i)
20100 mspos(px,py):sp_move(0,px,py)
20110 next
20120 for i=0 to 15
20130 w(i*16)=d(i)
20140 next
20150 break
20160 case 1: for i=0 to 15
20170 d(i)=w(i*16)
20180 next
20190 for i=0 to 254
20200 w(i)=w(i+1)
20210 mspos(px,py):sp_move(0,px,py)
20220 next
20230 for i=0 to 15
20240 w(i*16+15)=d(i)
20250 next
20260 break
20270 case 2: for i=0 to 15
20280 d(i)=w(i)
20290 next
20300 for i=0 to 239
20310 w(i)=w(i+16)
20320 mspos(px,py):sp_move(0,px,py)
20330 next
20340 for i=0 to 15
20350 w(i+240)=d(i)
20360 next
20370 break
20380 case 3: for i=0 to 15
20390 d(i)=w(i+240)
20400 next
20410 for i=0 to 239
20420 w(255-i)=w(239-i)
20430 mspos(px,py):sp_move(0,px,py)
20440 next
20450 for i=0 to 15
20460 w(i)=d(i)
20470 next
20480 break
20490 case 4: for i=0 to 15
20500 for j=0 to 15
20510 d(240-i*16+j)=w(j*16+i)
20520 next
20530 mspos(px,py):sp_move(0,px,py)
20540 next
20550 for i=0 to 255
20560 w(i)=d(i)
20570 mspos(px,py):sp_move(0,px,py)
20580 next
20590 break
20600 case 5: for i=0 to 255
20610 d(i)=w(i)
20620 mspos(px,py):sp_move(0,px,py)
20630 next
20640 for i=0 to 255
20650 w(i)=d(255-i)
20660 mspos(px,py):sp_move(0,px,py)
20670 next
20680 break
20690 case 6: for i=0 to 15
20700 for j=0 to 15
20710 d(j)=w(i+j*16)
20720 next
20730 mspos(px,py):sp_move(0,px,py)
20740 for j=0 to 15
20750 w(i+j*16)=d(15-j)
20760 next
20770 next
20780 break
20790 case 7: for i=0 to 15
20800 for j=0 to 15
20810 d(j)=w(i*16+j)
20820 next
20830 mspos(px,py):sp_move(0,px,py)
20840 for j=0 to 15
20850 w(i*16+j)=d(15-j)
20860 next
20870 next
20880 break
20890 endswitch
20900 pattern(l)
20910 sp_set(0,,,254)
20920 endfunc
21000 /*+++++++++++++++++++++++
21010 func set_pat()
21020 int n,att
21030 dim char temp(255)
21040 n=get_no()
21050 sp_set(0,,,254)
21060 if (n >= 0) then {
21070 x0=n mod 8+4
21080 y0=n/8+4
21090 sp_pat(n,temp)
21100 att=bg_get(1,x0,y0)
21110 sp_def(n,w)
21120 bg_put(1,x0,y0,n+256*l)
21130 if (not sure()) then {
21140 sp_def(n,temp)
21150 bg_put(1,x0,y0,att)
21160 }
21170 restore(n)
21180 }
21190 sp_off(1)
21200 endfunc
22000 /*+++++++++++++++++++++++
22010 func get_pat()
22020 int n
22030 n=get_no()
22040 if (n >= 0) then {
22050 sp_set(0,,,253)
22060 sp_pat(n,w)
22070 i=bg_get(1,n mod 8+4,n/8+4)/256
22080 pattern(i)
22090 restore(n)
22100 }
22110 sp_set(0,,,254)
22120 sp_off(1)
22130 endfunc
23000 /*+++++++++++++++++++++++
23010 func fill_pat()
23020 int i,j,wp,x,y,bl=0,br=0
23030 cls
23040 print " パレットの指定"
23050 msbtn(0,0,0)
23060 while not(bl)
23070 mspos(px,py)
23080 sp_move(0,px,py)
23090 msstat(x,y,bl,br)
23100 endwhile
23110 if (px >= X5 and px < X6 and py >= Y53 and py < Y54 and not(py/8 mod 2)) then {
23120 sp_set(0,,,253)
23130 wp=(px-X5)/8
23140 for i=0 to 255
23150 w(i)=wp
23160 next
23170 i=(py-Y53)/16
23180 if (i <> l) then pal_blk(i)
23190 } else if (px >= X7 and px < X8 and py >= Y71 and py < Y72) then {
23200 sp_set(0,,,253)
23210 wp=(py-Y71)/8
23220 for i=0 to 255
23230 w(i)=wp
23240 next
23250 }
23260 mspos(px,py)
23270 sp_move(0,px,py)
23280 fill(X5,Y51,X6-1,Y52-1,pal(l,wp))
23290 fill(X3,Y31,X4-1,Y32-1,pal(l,wp))
23300 sp_set(0,,,254)
23310 endfunc
24000 /*+++++++++++++++++++++++
24010 func program()
24020 int i=0
24030 mspos(px,py)
24040 sp_off(0)
24050 mouse(0)
24060 mouse(1)
24070 setmspos(px,py)
24080 mouse(2)
24090 console 22,2,1
24100 locate 0,22,1
24110 print " 1.パターン 2.パレット"
24120 print " [1or2]?";
24130 i=instr(1,"12",inkey$)
24140 if (i = 1) then {
24150 wr_pattern()
24160 } else if (i = 2) then {
24170 wr_palet()
24180 }
24190 console 22,2,0
24200 locate 0,22,0
24210 mspos(px,py)
24220 sp_move(0,px,py)
24230 mouse(4)
24240 mouse(1)
24250 setmspos(px,py)
24260 mouse(2)
24270 sp_on(0)
24280 endfunc
25000 /*+++++++++++++++++++++++
25010 func sp_palet()
25020 int i,n,x,y,bl=0,br
25030 n=get_no()
25040 if (n >= 0) then {
25050 sp_set(0,,,254)
25060 cls
25070 print " パレットブロックの指定"
25080 msbtn(0,0,0)
25090 while (not bl)
25100 mspos(px,py)
25110 sp_move(0,px,py)
25120 msstat(x,y,bl,br)
25130 endwhile
25140 if (px >= X5 and px < X6 and py >= Y53+16 and py < Y54) then {
25150 i=(py-Y53)
25160 if (i mod 16 < 11) then {
25170 bg_put(1,n mod 8+X1/16,n/8+Y11/16,i/16*256+n)
25180 msbtn(0,0,0)
25190 }
25200 }
25210 restore(n)
25220 sp_set(0,,,254)
25230 sp_off(1)
25240 }
25250 endfunc
26000 /*+++++++++++++++++++++++
26010 func init_pal()
26020 int i,j
26030 if (not sure()) then return()
26040 sp_set(0,,,253)
26050 for i=1 to 15
26060 pal(i,0)=0
26070 pal(i,1)=&H5294
26080 pal(i,2)=&H20
26090 pal(i,3)=&H3E
26100 pal(i,4)=&H400
26110 pal(i,5)=&H7C0
26120 pal(i,6)=&H420
26130 pal(i,7)=&H7FE
26140 pal(i,8)=&H8000
26150 pal(i,9)=&HF800
26160 pal(i,10)=&H8020
26170 pal(i,11)=&HF83E
26180 pal(i,12)=&H8400
26190 pal(i,13)=&HFFC0
26200 pal(i,14)=&HAD6A
26210 pal(i,15)=&HFFFE
26220 for j=0 to 15
26230 sp_color(j,pal(i,j),i)
26240 dot(XX5+j,YY53+i*2,pal(i,j))
26250 next
26260 next
26270 for i=0 to 15
26280 dot(XX7,YY71+i,pal(l,i))
26290 next
26300 pattern(l)
26310 sp_set(0,,,254)
26320 endfunc
27000 /*++++++++++++++++++++++
27010 func clr()
27030 if (sure()) then sp_clr(0,127)
27040 endfunc
28000 /*++++++++++++++++++++++
28010 func int term()
28020 int i=0
28030 fill(X3,Y37,X4-1,Y38-1,62)
28040 set_func(16)
28050 set_msg(16)
28055 msbtn(0,0,0)
28060 while(i < wait)
28070 mspos(px,py)
28080 sp_move(0,px,py)
28090 msstat(x,y,bl,br)
28100 if (bl) then break else i=i+1
28110 endwhile
28120 if (i < wait and px >= X3 and px < X4 and py >= Y37 and py < Y38) then {
28130 fill(X3,Y37,X4-1,Y38-1,1984)
28140 set_func(16)
28150 console 0,31,1
28160 width 64
28170 mouse(0)
28180 return(-1)
28190 } else {
28200 fill(X3,Y37,X4-1,Y38-1,0)
28210 set_func(16)
28220 cls
28230 return(0)
28240 }
28250 endfunc
30000 /*----------------------
30010 func pattern(ll)
30020 int i,j,brg,x5,x3,y51,y52,y31,y32
30030 if (ll <> l) then {
30040 fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,0)
30050 l=ll:fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,65535)
30060 for i=0 to 15
30070 dot(XX7,YY71+i,pal(l,i))
30080 next
30090 }
30100 for i=0 to 15:y51=Y51+i*8:y52=y51+7:y31=Y31+i*2:y32=y31+1
30110 for j=0 to 15:brg=pal(l,w(i*16+j)):x5=X5+j*8:x3=X3+j*2:fill(x5,y51,x5+7,y52,brg):fill(x3,y31,x3+1,y32,brg):mspos(px,py):sp_move(0,px,py):next:next
30120 c=pal(l,p)
30130 pal_disp(c)
30140 endfunc
31000 /*----------------------
31010 func dot(x,y,c)
31020 fill(x*8,y*8,x*8+7,y*8+7,c)
31030 mspos(px,py)
31040 sp_move(0,px,py)
31050 endfunc
32000 /*----------------------
32010 func pal_blk(ll)
32020 int i
32030 fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,0)
32040 l=ll
32050 fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,65535)
32060 for i=0 to 15
32070 dot(XX7,YY71+i,pal(l,i))
32080 next
32090 c=pal(l,p)
32100 pal_disp(c)
32110 endfunc
33000 /*----------------------
33010 func pal_disp(c)
33030 fill(X3,Y33,X4-1,Y34-1,c)
33040 b=(c and &H3E) shr 1
33050 pal_vol(0,b)
33060 r=(c and &H7C0) shr 6
33070 pal_vol(1,r)
33080 g=(c and &HF800) shr 11
33090 pal_vol(2,g)
33100 i=c and 1
33110 pal_vol(3,i)
33120 pf=-1
33130 fill(X1+58,Y14,X1+81,Y14+11,0)
33140 symbol(X1+58,Y14,right$("000"+hex$(c),4),1,1,0,65535,0)
33150 endfunc
34000 /*----------------------
34010 func pal_vol(c,v)
34020 int i,s,y,bc,c16
34030 if (c < 3) then {
34040 s=c*5+1
34050 bc=31 shl s
34060 } else {
34070 s=1
34080 bc =65535
34090 }
34100 c16=c*16
34110 fill(X1-13,Y13+c16-2,X1-2,Y13+c16+9,0)
34120 symbol(X1-13,Y13+c*16-2,right$(" "+str$(v),2),1,1,0,65535,0)
34130 symbol(X1-7,Y13+c*16-2,right$(str$(v),1),1,1,0,65535,0)
34140 y=Y13+c16
34150 for i=0 to v
34160 fill(X1+i*4,y,X1+i*4+3,y+7,i shl s)
34170 mspos(px,py)
34180 sp_move(0,px,py)
34190 next
34200 fill(X1+v*4,y,X1+v*4+3,y+7,bc)
34210 if (c = 3) then {
34220 if (v = 0) then fill(X1+4,y,X1+7,y+7,0)
34230 } else if (v < 31) then {
34240 fill(X1+i*4,y,X2-1,y+7,0)
34250 }
34260 endfunc
35000 /*-----------------------
35010 func get_no()
35020 int i,n,n16,x,y,bl=0,br,m,m8,flg=0
35030 int x0,x1,x2,x3,x4 : x0=X1-10:x1=X1-3:x2=X1-34+16:x4=X1-10
35040 str m$
35050 dim int c(2)={63520,65472,34784}
35060 dim int y1(1) : y1(0)=Y11-18:y1(1)=Y12+2
35070 dim str num(7)={"0","1","2","3","4","5","6","7" }
35080 cls
35090 print " パターンの指定"
35100 msbtn(0,0,0)
35110 while not(bl)
35120 mspos(px,py)
35130 if (px >= X1 and px < X2 and py >= Y11 and py < Y12) then {
35140 tx=(px-X1)/16
35150 ty=(py-Y11)/16
35160 px=tx*16+X1
35170 py=ty*16+Y11
35180 if (flg) then {
35190 sp_move(0,px,py)
35200 i=(tx+ty*8)
35210 if (n/8 = i/8) then {
35220 if (n <> i) then {
35230 fill(x0,y0,x1,y0+15,0)
35240 symbol(x3,y1(m8),m$,1,1,1,c(m8),0)
35250 x3=px+4
35260 n=i
35270 m=n mod 16
35280 m8=m/8
35290 m$=hex$(m)
35300 symbol(x4,y0,m$,1,1,1,c(2),0)
35310 symbol(x3,y1(m8),m$,1,1,1,c(2),0)
35320 }
35330 } else {
35340 fill(x0,y0,x1,y0+15,0)
35350 symbol(x2,y0,num(n16)+"x",1,1,1,c(m/8),0)
35360 symbol(x3,y1(m8),m$,1,1,1,c(m8),0)
35370 x3=px+4
35380 y0=py
35390 n=i
35400 n16=n/16
35410 m=n mod 16
35420 m8=m/8
35430 m$=hex$(m)
35440 fill(x0,y0,x1,y0+15,0)
35450 symbol(x2,y0,num(n16)+m$,1,1,1,c(2),0)
35460 symbol(x3,y1(m8),m$,1,1,1,c(2),0)
35470 }
35480 } else {
35490 sp_set(0,px+16,py+16,252)
35500 x3=px+4
35510 y0=py
35520 n=(tx+ty*8)
35530 n16=n/16
35540 m=n mod 16
35550 m8=m/8
35560 m$=hex$(m)
35570 fill(x0,y0,x1,y0+15,0)
35580 symbol(x2,y0,num(n16)+m$,1,1,1,c(2),0)
35590 symbol(x3,y1(m8),m$,1,1,1,c(2),0)
35600 flg=-1
35610 }
35620 } else if (flg) then {
35630 sp_set(0,px+16,py+16,254)
35640 fill(x0,y0,x1,y0+15,0)
35650 symbol(x2,y0,num(n16)+"x",1,1,1,c(m8),0)
35660 symbol(x3,y1(m8),m$,1,1,1,c(m8),0)
35670 flg=0
35680 } else {
35690 sp_move(0,px,py)
35700 }
35710 msstat(x,y,bl,br)
35720 endwhile
35730 if (flg) then {
35740 sp_set(1,px+16,py+16,252,3)
35750 return( n )
35760 }
35770 return( -1 )
35780 endfunc
36000 /*-----------------------
36010 func restore(n)
36020 int x0,y0,m8
36030 str m$
36040 dim int c(1)={63520,65472}
36050 dim int y1(1) : y1(0)=Y11-18:y1(1)=Y12+2
36060 x0=sp_stat(1,0)-12
36070 y0=sp_stat(1,1)-16
36080 m$=hex$(n mod 16)
36090 m8=(n mod 16)/8
36100 fill(X1-10,y0,X1-3,y0+15,0)
36110 symbol(X1-18,y0,itoa(n/16)+"x",1,1,1,c(m8),0)
36120 symbol(x0,y1(m8),m$,1,1,1,c(m8),0)
36130 sp_set(0,,,254)
36140 sp_off(1)
36150 endfunc
37000 /*-----------------------
37010 func wr_pattern()
37020 int i,j,k,lno,n,no,no0,no1
37030 str file,a[80]
37040 dim char d(255)
37050 error off
37060 cls
37070 print " ファイル名"
37080 input " ";file
37090 if (file = "") then return()
37100 cls
37110 input " 先頭パターン番号 =";no0
37120 input " 最終パターン番号 =";no1
37130 if (no1 = 0) then no1=no0
37140 print file
37150 print "no.";itoa(no0);
37160 if (no0 <> no1) then print "";itoa(no1);
37170 locate 10,23,1
37180 print " OK?[YorN]";
37190 if (tolower(asc(inkey$)) <> 'y') then return()
37200 print "Y";
37210 locate 0,22,0
37220 no=no1-no0
37230 if (no0 < 0 or no0 > no1 or no1 > 127) then {
37240 ferr(2)
37250 return()
37260 }
37270 fp=fopen(file,"c")
37280 if (fp = -1) then {
37290 ferr(0)
37300 return()
37310 }
37320 a=" 10 sprite_pattern():end"+chr$(13)+chr$(10)
37330 if (fwrites(a,fp) = -1) then {
37340 ferr(1)
37350 return()
37360 }
37370 a="60000 func sprite_pattern()"+chr$(13)+chr$(10)
37380 if (fwrites(a,fp) = -1) then {
37390 ferr(1)
37400 return()
37410 }
37420 a="60010 dim char c(255)"+chr$(13)+chr$(10)
37430 if (fwrites(a,fp) = -1) then {
37440 ferr(1)
37450 return()
37460 }
37470 for i=0 to no
37480 sp_pat(no0+i,d)
37490 lno=60020+i*20
37500 a=itoa(lno)+" c={"+chr$(13)+chr$(10)
37510 if (fwrites(a,fp) = -1) then {
37520 ferr(1)
37530 return()
37540 }
37550 for j=0 to 15
37560 lno=lno+1
37570 a=itoa(lno)+" "
37580 for k=0 to 15
37590 n=d(j*16+k)
37600 a=a+right$(itoa(n),2)+","
37610 next
37620 if (j <> 15) then {
37630 a=a+chr$(13)+chr$(10)
37640 if (fwrites(a,fp) = -1) then {
37650 ferr(1)
37660 return()
37670 }
37680 } else {
37690 a=left$(a,strlen(a)-1)+chr$(13)+chr$(10)
37700 if (fwrites(a,fp) = -1) then {
37710 ferr(1)
37720 return()
37730 }
37740 }
37750 next
37760 a=itoa(lno+1)+" }"+chr$(13)+chr$(10)
37770 if (fwrites(a,fp) = -1) then {
37780 ferr(1)
37790 return()
37800 }
37810 a=itoa(lno+2)+" sp_def("+itoa(no0+i)+",c)"+chr$(13)+chr$(10)
37820 if (fwrites(a,fp) = -1) then {
37830 ferr(1)
37840 return()
37850 }
37860 next
37870 a=itoa(lno+4)+" endfunc"+chr$(13)+chr$(10)+chr$(26)
37880 if (fwrites(a,fp) = -1) then {
37890 ferr(1)
37900 return()
37910 }
37920 fclose(fp)
37930 cls
37940 error on
37950 endfunc
38000 /*-----------------------
38010 func wr_palet()
38020 int i,j,lno
38030 str file,a[80],i$
38040 error off
38050 cls
38060 print " ファイル名"
38070 input " ";file
38080 if (file = "") then return()
38090 print file
38100 print " OK?[YorN]";
38110 if (tolower <> 'y') then return()
38120 print "Y";
38130 fp=fopen(file,"c")
38140 if (fp = -1) then {
38150 ferr(0)
38160 return()
38170 }
38180 a=" 10 sprite_pallet():end"+chr$(13)+chr$(10)
38190 if (fwrites(a,fp) = -1) then {
38200 ferr(1)
38210 return()
38220 }
38230 a="60000 func sprite_pallet()"+chr$(13)+chr$(10)
38240 if (fwrites(a,fp) = -1) then {
38250 ferr(1)
38260 return()
38270 }
38280 lno=60010
38290 for i=1 to 15
38300 i$=itoa(i)
38310 for j=0 to 15
38320 a=itoa(lno)+" sp_color("+itoa(j)+","+itoa(pal(i,j))+","+i$+")"+chr$(13)+chr$(10)
38330 if (fwrites(a,fp) = -1) then {
38340 ferr(1)
38350 return()
38360 }
38370 lno=lno+10
38380 next
38390 next
38400 a=itoa(lno)+" endfunc"+chr$(13)+chr$(10)+chr$(26)
38410 if (fwrites(a,fp) = -1) then {
38420 ferr(1)
38430 return()
38440 }
38450 fclose(fp)
38460 cls
38470 sp_on(0)
38480 error on
38490 endfunc
39000 /*----------------------
39010 func ferr(mode)
39020 int i=0,x,y,bl,br
39030 dim str msg(2)[34]
39040 msg(0)="ファイルのオープンに"+chr$(13)+chr$(10)+"失敗しました",
39050 msg(1)="ファイルの書き込みに"+chr$(13)+chr$(10)+"失敗しました",
39070 msg(2)="パターン番号が無効です"
39080 /*
39090 cls
39100 locate 0,22,0
39110 color 9
39120 print msg(mode);
39130 color 3
39140 msbtn(1,0,2000)
39150 endfunc
40000 /*----------------------
40010 func set_msg(n)
40020 int i
40030 cls
40040 color 2
40050 switch (n)
40060 case 0: print " 1ドット右へシフト"
40070 break
40080 case 1: print " 1ドット左へシフト"
40090 break
40100 case 2: print " 1ドット上へシフト"
40110 break
40120 case 3: print " 1ドット下へシフト"
40130 break
40140 case 4: print " 90度回転"
40150 break
40160 case 5: print " 180度回転"
40170 break
40180 case 6: print " 上下反転"
40190 break
40200 case 7: print " 左右反転"
40210 break
40220 case 8: print " パターン取り込み"
40230 break
40240 case 9: print " パターン定義"
40250 break
40260 case 10: print " ぬりつぶし"
40270 break
40280 case 11: print "パターン又はパレットのセーブ"
40290 break
40300 case 12: print " パレットブロックの変更"
40310 break
40320 case 13: print " パレットの初期化"
40330 break
40340 case 14: print " 全パターンのクリア"
40350 break
40360 case 15: print " ヘルプファイルの表示"
40370 break
40380 case 16: print " プログラムの終了"
40390 break
40400 endswitch
40410 color 3
40420 endfunc
41000 /*----------------------
41010 func sure()
41020 int i,x,y,bl=0,br,XS,XE,YS,YE : XS=X1:XE=X1+30:YS=22*16:YE=23*16
41030 msbtn(0,0,0)
41040 cls
41050 box(XS-1,YS-1,XE,YE,65535,65535)
41060 symbol(XS+7,YS,"OK",1,1,1,65535,0)
41070 while (not bl)
41080 mspos(px,py)
41090 sp_move(0,px,py)
41100 msstat(x,y,bl,br)
41110 endwhile
41120 fill(XS-1,YS-1,XE,YE,0)
41130 if (px >= XS and px < XE and py >= YS and py < YE) then return(-1)
41140 return(0)
41150 endfunc
42000 /*----------------------
42010 func help()
42030 mspos(px,py)
42040 sp_off(0)
42050 bg_set(0,,0)
42060 vpage(0)
42070 console 0,31,0
42080 cls
42090 type_doc()
42100 cls
42110 vpage(1)
42120 console 22,2,0
42130 vpage(1)
42140 mouse(1)
42150 setmspos(px,py)
42160 mouse(2)
42170 sp_on(0)
42180 bg_set(0,,1)
42190 endfunc
50000 /***********************
50010 func init()
50020 int i
50030 screen 1,3,1,1
50040 console 22,2,0
50050 locate 0,22,0
50060 symbol(130,4,"Sprite pattern editor",1,1,2,65472,0)
50070 sp_off()
50080 bg_fill(1,255)
50090 sp_clr(255)
50100 bg_set(0,1,1)
50110 bg_scroll(0,0,0)
50120 sp_disp(1)
50130 set_mscursor()
50140 pat_disp()
50150 lut_disp()
50160 c=pal(l,p)
50170 box(X5-1,Y51-1,X6,Y52,65535,65535)
50180 fill(X5,Y51,X6-1,Y52-1,c)
50190 box(X3-1,Y31-1,X4,Y32,65535,65535)
50200 fill(X3,Y31,X4-1,Y32-1,c)
50210 box(X1-1,Y13-1,X2,Y13+8,&H3E,65535)
50220 box(X1-1,Y13+15,X2,Y13+24,&H7C0,65535)
50230 box(X1-1,Y13+31,X2,Y13+40,&HF800,65535)
50240 box(X1-1,Y13+47,X1+8,Y14,&HFFFF,65535)
50250 box(X3-1,Y33-1,X4,Y34,65535,65535)
50260 pal_disp(c)
50270 symbol(X1+46,Y14,"&h",1,1,0,65535,0)
50280 for i=0 to f
50290 set_func(i)
50300 next
50310 mouse(4)
50320 msarea(0,0,511,511)
50330 mouse(1)
50340 setmspos(X5,Y51)
50350 mouse(2)
50360 sp_set(0,X5+16,Y51+16,254,3)
50370 endfunc
51000 /*-----------------------
51010 func pat_disp()
51020 int i
51030 dim int c(1)={63520,65472}
51040 box(X1-1,Y11-1,X2,Y12,65535,65535)
51050 for i=0 to 7
51060 symbol(X1+i*16+4,Y11-18,hex$(i),1,1,1,c(0),0)
51070 next
51080 for i=0 to 7
51090 symbol(X1+i*16+4,Y12+2,hex$(i+8),1,1,1,c(1),0)
51100 next
51110 for i=0 to 7
51120 symbol(X1-18,Y11+i*32,hex$(i)+"x",1,1,1,c(0),0)
51130 symbol(X1-18,Y11+i*32+16,hex$(i)+"x",1,1,1,c(1),0)
51140 next
51150 for i=0 to 15
51160 for j=0 to 7
51170 bg_put(1,XX1+j,YY11+i,256+i*8+j)
51180 next
51190 next
51200 endfunc
52000 /*----------------------
52010 func lut_disp()
52020 int i,j
52030 for i=1 to 15
52040 box(X5-1,Y53+i*16-1,X6,Y53+i*16+8,65535,65535)
52050 for j=0 to 15
52060 pal(i,j)=sp_color(j,,i)
52070 fill(X5+j*8,Y53+i*16,X5+j*8+7,Y53+i*16+7,pal(i,j))
52080 next
52090 next
52100 box(X7-1,Y71-1,X8,Y72,65535,65535)
52110 for i=0 to 15
52120 dot(XX7,YY71+i,pal(l,i))
52130 next
52140 dot(XX5-2,YY53+l*2,65535)
52150 dot(XX7+2,YY71+p,65535)
52160 endfunc
53000 /*-----------------------
53010 func set_func(n)
53020 int x : x=(X4+X3)/2
53030 box(X3-1,Y35+n*16-1,X4,Y35+n*16+12,65535,65535)
53040 switch (n)
53050 case 0: symbol(x-3,Y35+n*16,chr$(28),1,1,0,65472,0)
53060 break;
53070 case 1: symbol(x-3,Y35+n*16,chr$(29),1,1,0,65472,0)
53080 break;
53090 case 2: symbol(x-3,Y35+n*16,chr$(30),1,1,0,65472,0)
53100 break;
53110 case 3: symbol(x-3,Y35+n*16,chr$(31),1,1,0,65472,0)
53120 break;
53130 case 4: symbol(x-6,Y35+n*16,"90",1,1,0,65472,0)
53140 break;
53150 case 5: symbol(x-9,Y35+n*16,"180",1,1,0,65472,0)
53160 break;
53170 case 6: symbol(x-6,Y35+n*16,chr$(31)+chr$(30),1,1,0,65472,0)
53180 break;
53190 case 7: symbol(x-6,Y35+n*16,chr$(29)+chr$(28),1,1,0,65472,0)
53200 break;
53210 case 8: symbol(x-9,Y35+n*16,"get",1,1,0,65472,0)
53220 break;
53230 case 9: symbol(x-9,Y35+n*16,"put",1,1,0,65472,0)
53240 break;
53250 case 10: symbol(x-12,Y35+n*16,"fill",1,1,0,65472,0)
53260 break;
53270 case 11: symbol(x-12,Y35+n*16,"save",1,1,0,65472,0)
53280 break;
53290 case 12: symbol(x-15,Y35+n*16,"palet",1,1,0,65472,0)
53300 break;
53310 case 13: symbol(x-12,Y35+n*16,"init",1,1,0,65472,0)
53320 break;
53330 case 14: symbol(x-9,Y35+n*16,"clr",1,1,0,65472,0)
53340 break;
53350 case 15: symbol(x-12,Y35+n*16,"help",1,1,0,65472,0)
53360 break;
53370 case 16: symbol(x-9,Y35+n*16,"end",1,1,0,65472,0)
53380 break;
53390 endswitch
53400 endfunc
54000 /***********************
54010 func type_doc()
54020 int fp,i,j,c
54030 str s[80]
54040 error off
54050 fp=fopen(help_file,"r")
54060 if (fp < 0) then {
54070 locate 0,22,0
54080 print " ";chr$(34);help_file;chr$(34)
54090 color 2
54100 print " がオープンできませんでした。"
54110 print " 何かキーを押して下さい。"
54120 color 3
54130 error on
54140 s=inkey$
54150 return()
54160 }
54170 repeat
54180 cls
54190 for i=0 to 29
54200 freads(s,fp)
54210 print s
54220 next
54230 c=asc(inkey$)
54240 if (c <> ' ') then break
54250 until feof(fp)
54260 fclose(fp)
54270 error on
54280 endfunc
60000 /***********************
60010 func set_mscursor()
60020 dim char c(255)
60030 c={
60031 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
60032 4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,
60033 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60034 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60035 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60036 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60037 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60038 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60039 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60040 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60041 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60042 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60043 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60044 4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60045 4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,
60046 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
60047 }
60048 sp_def(252,c)
60050 c={
60051 0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,0,
60052 0,0,0,4,8,8,8,8,4,0,0,0,0,0,0,0,
60053 0,0,0,4,8,8,8,8,4,0,0,0,0,0,0,0,
60054 0,0,4,8,4,4,4,4,8,4,0,0,0,0,0,0,
60055 0,4,8,4,4,8,4,4,4,8,4,0,0,0,0,0,
60056 0,4,8,4,4,8,4,4,4,8,4,0,0,0,0,0,
60057 4,8,4,4,4,8,4,4,4,4,8,4,0,0,0,0,
60058 4,8,4,4,4,8,4,4,4,4,8,4,0,0,0,0,
60059 4,8,4,4,4,8,4,4,4,4,8,4,0,0,0,0,
60060 4,8,4,4,4,8,8,8,8,4,8,4,0,0,0,0,
60061 4,8,4,4,4,4,4,4,4,4,8,4,0,0,0,0,
60062 0,4,8,4,4,4,4,4,4,8,4,0,0,0,0,0,
60063 0,4,8,4,4,4,4,4,4,8,4,0,0,0,0,0,
60064 0,0,4,8,4,4,4,4,8,4,0,0,0,0,0,0,
60065 0,0,0,4,8,8,8,8,4,0,0,0,0,0,0,0,
60066 0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,0
60067 }
60068 sp_def(253,c)
60070 c={
60071 4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
60072 4,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
60073 4,8,8,4,0,0,0,0,0,0,0,0,0,0,0,0,
60074 4,8,8,8,4,0,0,0,0,0,0,0,0,0,0,0,
60075 4,8,8,8,8,4,0,0,0,0,0,0,0,0,0,0,
60076 4,8,8,8,8,8,4,0,0,0,0,0,0,0,0,0,
60077 4,8,8,8,8,8,8,4,0,0,0,0,0,0,0,0,
60078 4,8,8,8,8,8,8,8,4,0,0,0,0,0,0,0,
60079 4,8,8,8,8,4,4,4,4,4,0,0,0,0,0,0,
60080 4,8,8,4,8,8,4,0,0,0,0,0,0,0,0,0,
60081 4,8,4,0,8,8,4,0,0,0,0,0,0,0,0,0,
60082 4,4,0,0,4,8,8,4,0,0,0,0,0,0,0,0,
60083 4,0,0,0,4,8,8,4,0,0,0,0,0,0,0,0,
60084 0,0,0,0,0,4,8,8,4,0,0,0,0,0,0,0,
60085 0,0,0,0,0,4,8,8,4,0,0,0,0,0,0,0,
60086 0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0
60087 }
60088 sp_def(254,c)
60090 endfunc
Disk 3
bg_put(1,x0,y0,att)
21160 }
21170 restore(n)
21180 }
21190 sp_off(1)
21200 endfunc
22000 /*+++++++++++++++++++++++
22010 func get_pat()
22020 int n
22030 n=get_no()
22040 if (n >= 0) then {
22050 sp_set(0,,,253)
22060 sp_pat(n,w)
22070 i=bg_get(1,n mod 8+4,n/8+4)/256
22080 pattern(i)
22090 restore(n)
22100 }
22110 sp_set(0,,,254)
22120 sp_off(1)
22130 endfunc
23000 /*+++++++++++++++++++++++
23010 func fill_pat()
23020 int i,j,wp,x,y,bl=0,br=0
23030 cls
23040 print " パレットの指定"
23050 msbtn(0,0,0)
23060 while not(bl)
23070 mspos(px,py)
23080 sp_move(0,px,py)
23090 msstat(x,y,bl,br)
23100 endwhile
23110 if (px >= X5 and px < X6 and py >= Y53 and py < Y54 and not(py/8 mod 2)) then {
23120 sp_set(0,,,253)
23130 wp=(px-X5)/8
23140 for i=0 to 255
23150 w(i)=wp
23160 next
23170 i=(py-Y53)/16
23180 if (i <> l) then pal_blk(i)
23190 } else if (px >= X7 and px < X8 and py >= Y71 and py < Y72) then {
23200 sp_set(0,,,253)
23210 wp=(py-Y71)/8
23220 for i=0 to 255
23230 w(i)=wp
23240 next
23250 }
23260 mspos(px,py)
23270 sp_move(0,px,py)
23280 fill(X5,Y51,X6-1,Y52-1,pal(l,wp))
23290 fill(X3,Y31,X4-1,Y32-1,pal(l,wp))
23300 sp_set(0,,,254)
23310 endfunc
24000 /*+++++++++++++++++++++++
24010 func program()
24020 int i=0
24030 mspos(px,py)
24040 sp_off(0)
24050 mouse(0)
24060 mouse(1)
24070 setmspos(px,py)
24080 mouse(2)
24090 console 22,2,1
24100 locate 0,22,1
24110 print " 1.パターン 2.パレット"
24120 print " [1or2]?";
24130 i=instr(1,"12",inkey$)
24140 if (i = 1) then {
24150 wr_pattern()
24160 } else if (i = 2) then {
24170 wr_palet()
24180 }
24190 console 22,2,0
24200 locate 0,22,0
24210 mspos(px,py)
24220 sp_move(0,px,py)
24230 mouse(4)
24240 mouse(1)
24250 setmspos(px,py)
24260 mouse(2)
24270 sp_on(0)
24280 endfunc
25000 /*+++++++++++++++++++++++
25010 func sp_palet()
25020 int i,n,x,y,bl=0,br
25030 n=get_no()
25040 if (n >= 0) then {
25050 sp_set(0,,,254)
25060 cls
25070 print " パレットブロックの指定"
25080 msbtn(0,0,0)
25090 while (not bl)
25100 mspos(px,py)
25110 sp_move(0,px,py)
25120 msstat(x,y,bl,br)
25130 endwhile
25140 if (px >= X5 and px < X6 and py >= Y53+16 and py < Y54) then {
25150 i=(py-Y53)
25160 if (i mod 16 < 11) then {
25170 bg_put(1,n mod 8+X1/16,n/8+Y11/16,i/16*256+n)
25180 msbtn(0,0,0)
25190 }
25200 }
25210 restore(n)
25220 sp_set(0,,,254)
25230 sp_off(1)
25240 }
25250 endfunc
26000 /*+++++++++++++++++++++++
26010 func init_pal()
26020 int i,j
26030 if (not sure()) then return()
26040 sp_set(0,,,253)
26050 for i=1 to 15
26060 pal(i,0)=0
26070 pal(i,1)=&H5294
26080 pal(i,2)=&H20
26090 pal(i,3)=&H3E
26100 pal(i,4)=&H400
26110 pal(i,5)=&H7C0
26120 pal(i,6)=&H420
26130 pal(i,7)=&H7FE
26140 pal(i,8)=&H8000
26150 pal(i,9)=&HF800
26160 pal(i,10)=&H8020
26170 pal(i,11)=&HF83E
26180 pal(i,12)=&H8400
26190 pal(i,13)=&HFFC0
26200 pal(i,14)=&HAD6A
26210 pal(i,15)=&HFFFE
26220 for j=0 to 15
26230 sp_color(j,pal(i,j),i)
26240 dot(XX5+j,YY53+i*2,pal(i,j))
26250 next
26260 next
26270 for i=0 to 15
26280 dot(XX7,YY71+i,pal(l,i))
26290 next
26300 pattern(l)
26310 sp_set(0,,,254)
26320 endfunc
27000 /*++++++++++++++++++++++
27010 func clr()
27030 if (sure()) then sp_clr(0,127)
27040 endfunc
28000 /*++++++++++++++++++++++
28010 func int term()
28020 int i=0
28030 fill(X3,Y37,X4-1,Y38-1,62)
28040 set_func(16)
28050 set_msg(16)
28055 msbtn(0,0,0)
28060 while(i < wait)
28070 mspos(px,py)
28080 sp_move(0,px,py)
28090 msstat(x,y,bl,br)
28100 if (bl) then break else i=i+1
28110 endwhile
28120 if (i < wait and px >= X3 and px < X4 and py >= Y37 and py < Y38) then {
28130 fill(X3,Y37,X4-1,Y38-1,1984)
28140 set_func(16)
28150 console 0,31,1
28160 width 64
28170 mouse(0)
28180 return(-1)
28190 } else {
28200 fill(X3,Y37,X4-1,Y38-1,0)
28210 set_func(16)
28220 cls
28230 return(0)
28240 }
28250 endfunc
30000 /*----------------------
30010 func pattern(ll)
30020 int i,j,brg,x5,x3,y51,y52,y31,y32
30030 if (ll <> l) then {
30040 fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,0)
30050 l=ll:fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,65535)
30060 for i=0 to 15
30070 dot(XX7,YY71+i,pal(l,i))
30080 next
30090 }
30100 for i=0 to 15:y51=Y51+i*8:y52=y51+7:y31=Y31+i*2:y32=y31+1
30110 for j=0 to 15:brg=pal(l,w(i*16+j)):x5=X5+j*8:x3=X3+j*2:fill(x5,y51,x5+7,y52,brg):fill(x3,y31,x3+1,y32,brg):mspos(px,py):sp_move(0,px,py):next:next
30120 c=pal(l,p)
30130 pal_disp(c)
30140 endfunc
31000 /*----------------------
31010 func dot(x,y,c)
31020 fill(x*8,y*8,x*8+7,y*8+7,c)
31030 mspos(px,py)
31040 sp_move(0,px,py)
31050 endfunc
32000 /*----------------------
32010 func pal_blk(ll)
32020 int i
32030 fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,0)
32040 l=ll
32050 fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,65535)
32060 for i=0 to 15
32070 dot(XX7,YY71+i,pal(l,i))
32080 next
32090 c=pal(l,p)
32100 pal_disp(c)
32110 endfunc
33000 /*----------------------
33010 func pal_disp(c)
33030 fill(X3,Y33,X4-1,Y34-1,c)
33040 b=(c and &H3E) shr 1
33050 pal_vol(0,b)
33060 r=(c and &H7C0) shr 6
33070 pal_vol(1,r)
33080 g=(c and &HF800) shr 11
33090 pal_vol(2,g)
33100 i=c and 1
33110 pal_vol(3,i)
33120 pf=-1
33130 fill(X1+58,Y14,X1+81,Y14+11,0)
33140 symbol(X1+58,Y14,right$("000"+hex$(c),4),1,1,0,65535,0)
33150 endfunc
34000 /*----------------------
34010 func pal_vol(c,v)
34020 int i,s,y,bc,c16
34030 if (c < 3) then {
34040 s=c*5+1
34050 bc=31 shl s
34060 } else {
34070 s=1
34080 bc =65535
34090 }
34100 c16=c*16
34110 fill(X1-13,Y13+c16-2,X1-2,Y13+c16+9,0)
34120 symbol(X1-13,Y13+c*16-2,right$(" "+str$(v),2),1,1,0,65535,0)
34130 symbol(X1-7,Y13+c*16-2,right$(str$(v),1),1,1,0,65535,0)
34140 y=Y13+c16
34150 for i=0 to v
34160 fill(X1+i*4,y,X1+i*4+3,y+7,i shl s)
34170 mspos(px,py)
34180 sp_move(0,px,py)
34190 next
34200 fill(X1+v*4,y,X1+v*4+3,y+7,bc)
34210 if (c = 3) then {
34220 if (v = 0) then fill(X1+4,y,X1+7,y+7,0)
34230 } else if (v < 31) tt
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Star Craft
Games > Games by platform > Sharp X68000 games
Games > Games by publisher > Games published by Star Craft
Games > Games by release date > Games released in 1989