スーパー野球拳(漢字ROM対応版)

スーパー野球拳(漢字ROM対応版)



使用方法

  1. ソースとなるメッセージテキストデータ(YAKYU.TXT)をMESCOMP.BASと同じ場所に置きます。
  2. MESCOMP.BASを実行して、上のメッセージテキストデータから、メッセージバイナリデータ(YAKYU.MES)を作成します。
  3. YAKYU.BASを実行すると、YAKYU.MESを読み込んでゲームが開始します。

YAKYU_TXT.zip



メッセージコンパイラ

MESCOMP.BAS

  • データの変換があまりに遅く、毎度初回時に変換するのは効率が悪いので、メッセージデータの変換部を分離させました。
  • 実行すると、ソースとなるメッセージテキストデータのファイル名の入力を求められます。規定値は"YAKYU.TXT"です。
  • そのまま[RETURN]キーを押すと、YAKYU.TXTを読み込んで変換が開始されます。
  • しばらくすると、変換したバイナリデータのファイル名の入力を求められます。規定値は"YAKYU.MES"です。
  • そのまま[RETURN]キーを押すと、YAKYU.MESという名前でメッセージバイナリデータがディスクにセーブされます。
  • 構文のエラーチェック等は一切していません(`・ω・´)

  • BASICリスト(MSX BASIC1.0以降)
10 SCREEN 0,,0:CLS:WIDTH 38:KEY OFF:COLOR 15,0,0:CLEAR 200,&HBFFF:BA=&HC000
20 F$="YAKYU":FI$=F$+".TXT":PRINT"Load File Name (";FI$;")=";:INPUT FI$
30 CLS:GOSUB 2010:PRINT:PRINT:PRINT
40 FO$=F$+".MES":PRINT"Save File Name (";FO$;")=";:INPUT FO$
50 BSAVE FO$, BA, AD
60 END
2000 '
2010 OPEN FI$ FOR INPUT AS #1:PRINT "Please Wait..":LOCATE 0,2
2020 INPUT #1,A$:IF A$="." THEN PRINT ".";
2030 IF A$="[END]" THEN CLOSE #1 ELSE 2020
2040 '
2050 TA=BA:FOR I=0 TO 511:POKE TA+I,&H0:NEXT:AD=TA+512:OPEN FI$ FOR INPUT AS #1:GOSUB 2210:LOCATE 0,2
2060 INPUT #1,A$:B$=LEFT$(A$,1):IF B$=";" THEN 2060
2070 IF B$="#" THEN TA=BA+VAL(MID$(A$,2,LEN(A$)))*2:GOSUB 2210:FG=1:GOTO 2060
2080 IF B$="*" THEN POKE AD,&H1:POKE AD+1,VAL(MID$(A$,2,LEN(A$))):AD=AD+2:GOTO 2060
2090 IF A$="." THEN PRINT "o";:POKE AD,&H0:AD=AD+1:FG=0:GOTO 2060
2100 IF A$="[END]" THEN CLOSE #1:RETURN
2110 IF FG=0 THEN 2060
2120 IF A$="" THEN POKE AD,&HD:AD=AD+1:GOTO 2060
2130 '
2140 FOR I=1 TO LEN(A$)/2
2150 S1=ASC(MID$(A$,(I-1)*2+1,1)):S2=ASC(MID$(A$,(I-1)*2+2,1))
2160 IF S1<=&H9F THEN S1=S1-&H71 ELSE S1=S1-&HB1
2170 S1=S1*2+1:IF S2>=&H7F THEN S2=S2-1
2180 IF S2>=&H9E THEN S2=S2-&H7D:S1=S1+1 ELSE S2=S2-&H1F
2190 POKE AD,S1:POKE AD+1,S2:AD=AD+2:NEXT I:POKE AD,&HD:AD=AD+1:GOTO 2060
2200 '
2210 POKE TA,AD AND &HFF:POKE TA+1,((AD AND &HFF00)/256) AND &HFF:RETURN



ゲーム部分

YAKYU.BAS

  • 最初に上のMESCOMP.BASを使って、メッセージバイナリデータ(YAKYU.MES)を作成してから実行して下さい。

  • BASICリスト(MSX BASIC2.0以降)
10 CLS:SCREEN ,,0:COLOR 15,0,0:CLEAR 200,&HBFFF:BA=&HC000
20 SH=-1:' モジ ノ カゲ ノ イロ (-1=カゲ ナシ)
30 SC=5:W=255:MW=15:GF$="YAKYU":F$=GF$+".MES":BLOAD F$
200 '
210 SCREEN SC:DIM CL(8):RESTORE 600:FOR I=1 TO 8:READ CL(I):NEXT I
220 KX=0:KY=0:MN=3:GOSUB 1010:GOSUB 610
230 CLS:C=0:L=0:RD=5
240 ' イントロ
250 PLAY "T120O5S1M10000L16G8ED8EG8ED8EG8ED8EG8.G4":KX=0:KY=0:MN=4:GOSUB 1010
260 ' アウト!
270 PLAY "T180O5S1M3000E8E4":KX=0:KY=80:MN=5:GOSUB 1010:FOR I=0 TO 99:NEXT I
280 ' セーフ!
290 PLAY "T180O5S1M3000E8E4":KX=80:MN=6:GOSUB 1010:FOR I=0 TO 99:NEXT I
300 ' ヨヨイノ...
310 PLAY "T180O5S1M3000E8E4E8":KX=40:KY=96:MN=7:GOSUB 1010
320 K$=INKEY$:IF K$<>"1" AND K$<>"2" AND K$<>"3" THEN 320
330 ' ヨイ!!
340 PLAY "T180O6S1M10000G4":TE=VAL(K$)-1:R=INT(RND(-TIME)*3):KX=136:MN=8:GOSUB 1010:LINE(0,160)-(W,176),0,BF
350 KX=8:KY=128:MN=9:GOSUB 1010:KX=72:MN=TE:GOSUB 1010:KX=136:MN=10:GOSUB 1010:KX=200:MN=R:GOSUB 1010
360 ' アイコ
370 IF R=TE THEN KX=0:KY=160:MN=11:GOSUB 1010:LINE(0,96)-(W,144),0,BF:GOTO 310
380 IF ((R+1) MOD 3)=TE THEN 470
390 ' カチ
400 PLAY "T180O5S1M10000L16GEGEGE4":KX=0:KY=160:MN=12:GOSUB 1010:C=C+1:GOSUB 610:CLS
410 KX=0:KY=0:MN=20+C:GOSUB 1010
420 IF C<RD THEN KX=0:KY=80:MN=14:GOSUB 1010:GOTO 530
430 GOSUB 610:C=C+1:CLS
440 KX=0:KY=0:MN=20+C:GOSUB 1010
450 PLAY "T140S1M5000L8O5CO4BAGO5CO4BAGO5M8000C4E4D4":KX=0:KY=112:MN=19:GOSUB 1010:GOSUB 610:RUN
460 ' マケ
470 PLAY "T140O2V14C4":KX=0:KY=160:MN=13:GOSUB 1010:L=L+1:GOSUB 610:CLS
480 KX=0:KY=0:MN=30+L:GOSUB 1010
490 IF L<RD THEN KX=0:KY=80:MN=15:GOSUB 1010:GOTO 530
500 GOSUB 610:L=L+1:CLS:KX=0:KY=0:MN=30+L:GOSUB 1010
510 PLAY "T120S1M10000O3C4C8.C16C4D+8.D16D8.C16C8.O2B16O3C4":KX=8:KY=112:MN=18:GOSUB 1010:GOSUB 610:RUN
520 ' ツギノ ラウンド
530 GOSUB 610:LINE(0,80)-(W,195),0,BF
540 GOTO 270
600 '
610 KX=8:KY=195:MN=16:GOSUB 1010
620 IF INKEY$<>" " THEN 620 ELSE LINE(0,195)-(W,211),0,BF:RETURN
700 ' SCREEN 5,7 ヨウ System Color Table
710 DATA 1, 4, 8, 13, 2, 7, 10, 15
720 ' SCREEN 8 ヨウ System Color Table
730 'DATA 1, 7, 56, 63, 192, 199, 248, 255
1000 '
1010 TC=CL(8):AD=BA+MN*2:DT=PEEK(AD+1)*256+PEEK(AD):PX=0:PY=0
1020 A=PEEK(DT):IF A=&HD THEN PX=0:PY=PY+1:DT=DT+1:GOTO 1020
1030 IF A=&H0 THEN RETURN
1040 IF A=&H1 THEN TC=CL(PEEK(DT+1)+1):DT=DT+2:GOTO 1020
1050 KD=A*256+PEEK(DT+1):DT=DT+2
1060 IF SH>=0 THEN PUT KANJI(KX+PX*16+1,KY+PY*16+1),KD,CL(SH+1),TPSET
1070 PUT KANJI(KX+PX*16,KY+PY*16),KD,TC,TPSET
1080 PX=PX+1:IF PX>MW AND PEEK(DT)<>&HD THEN PX=0:PY=PY+1
1090 GOTO 1020



CG表示対応変更差分

  • スクリーンモードは、本体プログラムの30行目:変数SCで指定します。
  • CGはテキスト版と同様、各自用意して下さい。
  • システムカラーテーブルは、700行目からのDATAです。スクリーンモードに合わせてコメントアウトして下さい。

235 GOSUB 3010

405 GOSUB 3010

435 GOSUB 3010

3000 '
3010 A$=STR$(C):A$=GF$+RIGHT$("00"+RIGHT$(A$,LEN(A$)-1),3)+".SC"+RIGHT$(STR$(SC),1)
3020 SET PAGE 0,1:BLOAD A$,S:COLOR=RESTORE
3030 FOR I=0 TO 210 STEP 2:J=211-I:COPY(0,I)-(W,I),1TO(0,I),0:COPY(0,J)-(W,J),1TO(0,J),0:NEXT I
3040 IF INKEY$<>CHR$(13) THEN 3040 ELSE SET PAGE 0,0:CLS:RETURN



カーソルキー対応版変更差分

  • コウサギさんのご意見をもとに作ってみました。
  • 操作方法は、左=グー/上=チョキ/右=パーです。
  • パッド1にも対応しています。
  • CG表示時は、これまではキーバッファの問題からリターンキーにしていましたが、STRIG判定に変えたので、スペースキー(トリガ1)に統一しました。

320 FOR I=0 TO 1:S=STICK(I):IF S=7 THEN TE=0 ELSE IF S=1 THEN TE=1 ELSE IF S=3 THEN TE=2 ELSE NEXT I:GOTO 320
321 I=1:NEXT I

340 PLAY "T180O6S1M10000G4":R=INT(RND(-TIME)*3):KX=136:MN=8:GOSUB 1010:LINE(0,160)-(W,176),0,BF

620 IF STRIG(0)=0 AND STRIG(1)=0 THEN 620 ELSE LINE(0,195)-(W,211),0,BF:RETURN


3040 IF STRIG(0)=0 AND STRIG(1)=0 THEN 3040 ELSE SET PAGE 0,0:CLS:RETURN



  • 漢字はテキストファイルを読み込んで、PUT KANJIで出力しています。
    • スクリーンモードは5,7,8から任意のモードを指定可能です。
    • グラフィック面に文字を書いているので、後ろに絵を出す事も出来るけど、字が読み難くなります。
    • だからと言って、影(1ドットずらして同じ字を下に黒で二重書き)をつけると、さらに表示が遅くなり。。(´・ω・`)
  • テキストファイル中の制御記号でメッセージデータのライン毎に色をつける事が出来ます。
    • システムカラーとして、黒、青、赤、マゼンタ、緑、シアン、黄、白の8色を予約しています。(カラーコードは任意に変更可能)
    • これは、SCREEN 5,7で絵と文字を同時に出したい場合の留意点です。
    • SCREEN 8の場合や、ゲーム画面は殺風景でも良いと言う場合は、システムカラーの割り振りは気にする必要はありません。
  • テキスト版に比べて、表示がちょっと遅いです。やっぱりオールBASICだと限界あるなぁ。。(´・ω・`)

質問・要望とか
  • システムカラー8色のカラーコードは任意に変更可能とはどういうことですか? -- 質問 (2007-11-04 23:01:04)
    • MSX上の任意のカラーコードにテキスト表示で指定するシステムカラーのパレットを割り当てられるということです。
    • システムカラーコード0~7は、実際のカラーコードの何番かをプログラム側で変換して使用します。
    • つまり、その任意のカラーコードにシステムカラーとなるパレットを入れておけばO.K.です。
    • SCREEN 8の場合は、256色の中から適色を0~7に割り当てています。

  • グー、チョキ、パーは、それぞれカーソルキーに対応させた方が良いかもですね。パッドも扱えるようになりますし。 -- コウサギ (2007-11-06 19:47:15)
    • ご意見ありがとうございます。早速作ってみましたが、どうでしょう?

  • え~っと、つまり・・・?>システムカラーについて -- 質問 (2007-11-06 22:35:07)
    • ちょっと説明が解り難かったですね(^^;
    • つまり、上のリストの場合、下の3つのいずれかを選んで下さい。
      • MSXのカラーコード1, 4, 8, 13, 2, 7, 10, 15のパレットを触らずに描く
      • このカラーコードに近似色を割り当てる
      • 710行目のカラーテーブルを近似色のカラーコードに書き換える
    • SCREEN 8の場合は何も考えなくてO.K.です。

名前:
コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2007年11月06日 22:35
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。