【MSX】FinalFantasyII電源投入時のアレっぽいやつ

FinalFantasyII電源投入時のアレっぽいやつ



MSX NASIC用のプログラムリストになります。
MSXターボRモード用です。
Z80モードでも動きますが遅すぎますね。

BlueMSXであれば、ツール→マシン構成編集→その他→Z80周波数を21.477MHzにして実行すればそれなりの速度で動きます。

1/60秒タイマーで同期をとるようにしてるのでマシンが速すぎて困ることはないと思います。


1 COLOR 15,4,0
10 KEYOFF:CLEAR 255:DEFINTA-Z:Z$=CHR$(254):ZA=8*254:T=1:WT=60*4:WI=0:WS=WI
20 AD=&H800':SCREEN0:WIDTH40
30 AD=&H1000':SCREEN0:WIDTH80
40 AD=&H0:SCREEN1:WIDTH32
50 READA$:IF A$="" THEN 70
60 A=ASC(A$):READA$:FOR I=0TO7:VPOKE AD+(A+C)*8+I,VAL("&h"+MID$(A$,I*2+1,2)):NEXT:GOTO50
70 RESTORE3000:ON INTERVAL=T GOSUB300:INTERVAL ON
80 FORI=0TO7:VPOKE ZA+I,0:NEXT:ZI=8
90 READ Y:IF Y<0 THEN 900
100 READ A$:X=(32-LEN(A$))/2:Y=Y*2-1:Z=X:L=LEN(A$):LOCATE0,Y:PRINT SPACE$(X);
110 FOR I=1 TO L:C$=MID$(A$,I,1):C=ASC(C$):CA=C*8
120 LOCATE X,Y:PRINT STRING$(32-X,Z$);
130 ZI=0:FORJ=0TO7:ZS=ZI:FORK=0TO6:VPOKE ZA+7-K,VPEEK(ZA+6-K)*-(K>0):NEXT:VPOKE ZA,VPEEK(CA+7-J):FORWJ=0TO1:WJ=-(ZS<ZI):NEXT:NEXT
140 LOCATE X,Y:PRINTC$;:X=X+1:NEXT:CA=32*8
150 ZI=0:FORJ=0TO7:ZS=ZI:FORK=0TO6:VPOKE ZA+7-K,VPEEK(ZA+6-K):NEXT:VPOKE ZA,VPEEK(CA+7-J):FORWJ=0TO1:WJ=-(ZS<ZI):NEXT:NEXT
160 LOCATE X,Y:PRINT SPACE$(32-X);
170 GOTO 90
300 ZI=ZI-(ZI<&H7FFF):RETURN
900 ZI=0:FORW=0TO1:W=-(ZI>WT):NEXT
910 FOR I=0TO6:COLOR VAL(MID$("1511101407050401",I*2+1,2))
920 ZI=0:FORW=0TO1:W=-(ZI>2):NEXT
930 NEXT:CLS:COLOR 15
940 ZI=0:FORW=0TO1:W=-(ZI>60):NEXT
950 READ A$:IF A$<>"END" THEN 90
960 GOTO70
999 END
1000 DATA"A","0E1A1A323E62F200","B","7C32323C32327C00"
1010 DATA"C","3C62606062623C00","D","7C32323232327C00"
1020 DATA"E","7F31343C34317F00","F","7F31343C34307800"
1030 DATA"G","3C62606F62623C00","H","F762627E6262F700"
1040 DATA"I","3C18181818183C00","J","1E0C0C0C4C4C3800"
1050 DATA"K","F3666C786C66F300","L","7830303031317F00"
1060 DATA"M","E3766A626262F700","N","E7727A6E6662F200"
1070 DATA"O","3C62626262623C00","P","7E31313E30307800"
1080 DATA"Q","3E61616165663B00","R","FC62627C6462F700"
1090 DATA"S","3E61603E03433E00","T","7F5D1C1C1C1C3E00"
1100 DATA"U","F762626262623C00","V","F3613232361C1C00"
1110 DATA"W","DB4949495D772200","X","F76234182C46EF00"
1120 DATA"Y","F762341818183C00","Z","7F43161C34617F00"
1130 DATA":","1818000018180000",".","0000001818180000"
1140 DATA"(","0102040404020100","c","0018242024180000"
1150 DATA")","8040202020408000","1","0C04040404040E00"
1160 DATA"9","3C42423E02423C00","8","3C42423C42423C00"
1170 DATA"[","0F0C080808080C0F","]","7818080808081878"
1171 DATA"/","0102040810204080"
1174 DATA"0","3E63636363633E00","1","1838181818183C00"
1175 DATA"2","3E63630618307F00","3","3E63630E63633E00"
1176 DATA"4","0E1E3626667F0600","5","7F607E0303633E00"
1177 DATA"6","3E63607E63633E00","7","7F6363060C181800"
1178 DATA"8","3E63633E63633E00","9","3E63633F03633E00"
1207 DATA"-","0000003E00000000","~","0000333300000000"
1208 DATA"!","0808080808080008","?","1C22220408080008"
1234 DATA"「","1E10101010100000","」","0008080808087800"
2998 '
2999 DATA ""
3000 DATA 1," "
3010 DATA 2,"FINAL FANTASY II"
3020 DATA 3," "
3030 DATA 4," "
3040 DATA 5," "
3050 DATA 6," "
3060 DATA 7,"(c)1988 SQUARE"
3070 DATA 8," "
3080 DATA 9,"PROGRAMED BY NASIR"
3090 DATA 10,"CHARACTER BY YOSHITAKA AMANO"
3100 DATA 11,"SCENARIO BY KENJI TERADA"
3999 DATA -1,""
4000 DATA -1,"END"

(使い方)
最後にEOF(コントロールコード27:16進数で1A)を入力して保存すれば、MSXBASICでプログラムとして読み込めます。