2011年05月01日投稿 / 投稿者 : 名無しさん / タグ : 投稿プログラム ゲーム レースゲーム 初代対応 移植
ベーマガ1983年8月号 熊谷 栄二さん投稿JR-100用「3D CAR RACE」の移植その2です(2画面なのでDSです)。
その3、その4と続き、Wikiが「3D CAR RACE」で埋まることを願って・・・。
デモ画面でАを押すとゲーム開始、Бを押すと終了です。
←→でマイカー移動です。ジャマカーやガードレールにぶつかるとゲームオーバーです。
オリジナルは、GOTO文も少なく、よくできたプログラムでした。
マシン語で、未使用箇所($3049〜$3059)があったり冗長な処理もありますが。
道路とジャマカーがBG0、ガードレールの外がBG1、マイカーとディーゼルカーがスプライトです。
○のフォントがJR-100とプチコンで違います。JR-100のフォントにしてます。
スコアなど、BG上にコンソールを重ねると見にくいので、BGF0を少しいじってます。デモ画面から終了すると元に戻ります。
プチコンmkII 向けの QR コードです。
- GOSUB @INIT
- GOTO @DEMO
- @START
- BEEP 39
- GOSUB @BGDISP
- CLS:E=6:C=0:X=16:P=0
- LOCATE 24,0:PRINT ”HIGH”
- LOCATE 24,1:PRINT H
- LOCATE 24,2:PRINT ”SCORE”
- CNT=MAINCNTL
- @LOOP
- IF MAINCNTL−CNT<1 THEN @LOOP
- CNT=MAINCNTL
- GOSUB @SCRDOWN
- IF POSC==0 THEN XX=0:BTN=BUTTON()
- IF BTN AND 4 THEN XX=XX−2:IF XX<=−8 THEN X=X−1:XX=0
- IF BTN AND 8 THEN XX=XX+2:IF XX>= 8 THEN X=X+1:XX=0
- SPPAGE 1:SPOFS 12,X*8+XX*R,128
- IF POSC!=0 THEN @NEXT1
- BGREAD(0,X ,POS+40),CHR0,DMY0,DMY1,DMY2
- BGREAD(0,X+1,POS+40),CHR1,DMY0,DMY1,DMY2
- BGREAD(0,X ,POS+41),CHR2,DMY0,DMY1,DMY2
- BGREAD(0,X+1,POS+41),CHR3,DMY0,DMY1,DMY2
- IF CHR0!=1 OR CHR1!=1 OR CHR2!=1 OR CHR3!=1 THEN @GAMEOVER
- C=C+1:LOCATE 24,3:PRINT C
- IF (C%200)==0 THEN E=E−1:IF E<3 THEN E=3
- IF (C%E )==0 THEN GOSUB @JAMACAR
- IF (C%100)==0 THEN GOSUB @TRAIN
- IF SPCHK(0)==TRUE THEN BEEP 0,−3000
- @NEXT1
- IF POSC!=0 THEN GOSUB @HYOSHIKI
- IF (POSC%4)==2 THEN GOSUB @DENCHU
- GOTO @LOOP
- @SCRDOWN
- POSC=POSC+2:IF POSC<8 THEN @SCRDOWN1
- FOR P=0 TO 1
- BGPAGE P
- FOR I=9 TO 22
- BGPUT 0,I,POS−3,1,0,0,0
- NEXT I
- NEXT P
- POSC=0:POS=POS−1
- @SCRDOWN1
- IF POS<0 THEN POS=POS+64
- BGPAGE 0:BGOFS 0,0,POS*8−POSC*R
- BGPAGE 1:BGOFS 0,0,(POS+24)*8−POSC*R
- RETURN
- @JAMACAR
- JX=RND(13)+9
- FOR P=0 TO 1
- BGPAGE P
- BGPUT 0,JX ,POS−2,4,0,0,0
- BGPUT 0,JX+1,POS−2,5,0,0,0
- BGPUT 0,JX ,POS−1,6,0,0,0
- BGPUT 0,JX+1,POS−1,7,0,0,0
- NEXT P
- RETURN
- @TRAIN
- FOR P=0 TO 1
- SPPAGE P
- FOR I=0 TO 5
- FOR J=0 TO 1
- SPOFS I*2+J,J*16+16,I*16−P*192−96
- SPOFS I*2+J,J*16+16,I*16−P*192+384,180
- NEXT J
- NEXT I
- NEXT P
- RETURN
- @HYOSHIKI
- FOR P=0 TO 1
- BGPAGE P
- FOR I=0 TO 2
- BGPUT 1,7,(HY+I*16 )%48, 9,0,0,0
- BGPUT 1,7,(HY+I*16+1)%48,13,0,0,0
- NEXT I
- NEXT P
- HY=HY+1:IF HY>47 THEN HY=0
- RETURN
- @DENCHU
- FOR P=0 TO 1
- BGPAGE P
- FOR I=0 TO 1
- DY0=(DY+I*24 )%48
- BGPUT 1,27,DY0, 9,0,0,0
- BGPUT 1,28,DY0, 8,0,0,0
- BGPUT 1,29,DY0, 9,0,0,0
- BGPUT 1,30,DY0, 2,0,0,0
- DY0=(DY+I*24+1)%48
- BGPUT 1,27,DY0,15,0,0,0
- BGPUT 1,28,DY0,15,0,0,0
- BGPUT 1,29,DY0,15,0,0,0
- BGPUT 1,30,DY0,14,0,0,0
- NEXT I
- NEXT P
- DY=DY+1:IF DY>47 THEN DY=0
- RETURN
- @GAMEOVER
- SPPAGE 1:SPOFS 12,−99,0
- BGPAGE 1
- FOR I=0 TO 3
- FOR J=0 TO 3
- IF BK(J,I)>0 THEN BGPUT 0,X+J−1,POS+I+39,BK(J,I),0,0,0
- NEXT J
- NEXT I
- FOR I=8 TO −4 STEP −1
- BEEP 13,I*1000:VSYNC 5
- NEXT I
- PNLSTR 0,19,”YOUR SCORE ”+STR$(C)+”POINTS!!”,0
- IF H<C THEN H=C:PNLSTR 0,20,”YOUR HIGH SCORE!!”,0:BEEP 42
- LOCATE 24,1:PRINT H
- VSYNC 120
- @DEMO
- GOSUB @BGDISP
- VISIBLE 1,1,1,1,1,1
- @DEMOLOOP
- BTN=BUTTON()
- IF BTN AND 16 THEN R=1:GOTO @START
- IF BTN AND 32 THEN @EXIT
- IF BTN AND 64 THEN R=0:GOTO @START
- VSYNC 1
- C=C+1
- IF C%64==0 THEN CLS
- IF C%64==32 THEN LOCATE 24,0:PRINT ”PLAY→[А]”:LOCATE 24,1:PRINT ”EXIT→[Б]”
- IF C%12==0 THEN GOSUB @JAMADEMO
- GOSUB @SCRUP
- IF C>32766 THEN C=0
- GOTO @DEMOLOOP
- @SCRUP
- POSC=POSC+2:IF POSC<8 THEN @SCRUP1
- FOR P=0 TO 1
- BGPAGE P
- FOR I=9 TO 22
- BGPUT 0,I,POS+50,1,0,0,0
- NEXT I
- NEXT P
- POSC=0:POS=POS+1
- @SCRUP1
- IF POS>63 THEN POS=POS−64
- BGPAGE 0:BGOFS 0,0,POS*8+POSC*R
- BGPAGE 1:BGOFS 0,0,(POS+24)*8+POSC*R
- RETURN
- @JAMADEMO
- JX=RND(13)+9
- FOR P=0 TO 1
- BGPAGE P
- BGPUT 0,JX ,POS+48,4,0,0,0
- BGPUT 0,JX+1,POS+48,5,0,0,0
- BGPUT 0,JX ,POS+49,6,0,0,0
- BGPUT 0,JX+1,POS+49,7,0,0,0
- NEXT P
- RETURN
- @EXIT
- FOR P=0 TO 1
- BGPAGE P:SPPAGE P
- CHRINIT ”BGF0”
- SPCLR
- NEXT P
- VISIBLE 1,1,0,0,1,1
- CLS
- END
- @INIT
- VISIBLE 1,1,0,0,1,1
- CLEAR:COLOR 0:CLS:R=1
- PNLTYPE ”OFF”
- FOR P=0 TO 1
- BGPAGE P:SPPAGE P:GPAGE P
- GCLS 0:SPCLR
- BGCLIP 0,0,31,23
- CHRINIT ”BGF0”
- FOR I=0 TO 255
- COLINIT ”BG”,I
- COLINIT ”SP”,I
- COLINIT ”GRP”,I
- NEXT I
- NEXT P
- FOR I=0 TO 3
- ICONCLR I
- NEXT I
- DIM CH$(24),SP$(5),NO(13),BK(4,4)
- Z$=”00000000”
- CH$(0)=Z$+Z$+Z$+Z$+Z$+Z$+Z$+Z$
- CH$(23)=CH$(0)
- FOR I=1 TO 22
- READ F$:CH$(I)=””
- FOR J=0 TO 7
- FT=VAL(”&H”+MID$(F$,J*2,2))
- BIT=&H80
- FOR K=0 TO 7
- IF (FT AND BIT)>0 THEN CH$(I)=CH$(I)+”F”
- IF (FT AND BIT)<1 THEN CH$(I)=CH$(I)+”E”
- BIT=BIT/2
- NEXT K
- NEXT J
- NEXT I
- FOR I=0 TO 4
- READ SP$(I)
- NEXT I
- FOR I=0 TO 12
- READ NO(I)
- NEXT I
- FOR I=0 TO 3
- FOR J=0 TO 3
- READ BK(J,I)
- NEXT J
- NEXT I
- S$=”SPU0”
- FOR P=0 TO 1
- BGPAGE P:SPPAGE P
- FOR I=0 TO 19
- CHRSET ”BGU0”,I,CH$(I)
- NEXT I
- FOR I=0 TO 4
- FOR J=0 TO 3
- CHRSET S$,I*4+J,CH$(VAL(MID$(SP$(I),J,1))+16)
- NEXT J
- NEXT I
- FOR I=0 TO 12
- SPSET I,NO(I),0,0,0,1
- SPOFS I,−99,0
- NEXT I
- S$=”SPS0”
- NEXT P
- GOSUB @BGFFONT
- RETURN
- @BGDISP
- POS=0:POSC=0:HY=0:DY=5
- FOR P=0 TO 1
- BGPAGE P
- FOR I=0 TO 31
- BG=VAL(”&H”+MID$(”00000000011111111111111000000000”,I,1))
- FOR J=0 TO 63
- BGPUT 0,I,J,BG,0,0,0
- NEXT J
- BG=VAL(”&H”+MID$(”139BCB89200000000000000398898921”,I,1))
- FOR J=0 TO 23
- BGPUT 1,I,J+P*24,BG,0,0,0
- NEXT J
- NEXT I
- BGOFS 0,0,P*192
- BGOFS 1,0,P*192
- NEXT P
- RETURN
- @BGFFONT
- FOR I=&H01 TO &H5D
- CHRREAD(”BGF0”,I),S$
- SN$=””
- FOR J=0 TO 63
- C$=MID$(S$,J,1)
- IF C$==”0” THEN C$=”E”
- SN$=SN$+C$
- NEXT J
- FOR P=0 TO 1
- BGPAGE P
- CHRSET ”BGF0”,I,SN$
- NEXT P
- NEXT I
- RETURN
- DATA 55AA55AA55AA55AA
- DATA 478E478E471E1F0E
- DATA 1D2C0F0F1C2D1C2D
- DATA 41894F8F4E880E0B
- DATA F8F9FFFF070103FD
- DATA 0B0B0B0E0C0E4F87
- DATA FDFDFD030107FFFE
- DATA 663399CC663399CC
- DATA 4488112244881122
- DATA BFF3E64CF9F255AA
- DATA DB1818189A1D9A18
- DATA 60063000AA55AA00
- DATA 44880F0E007E1122
- DATA 553A7DC6C77C39AA
- DATA 4400000000000022
- DATA 438549894F880C0B
- DATA FCFAF9F90F0103FD
- DATA 0B0B0B0C088E4F87
- DATA FDFDFD030107FFFE
- DATA 0000000000000000
- DATA AA55AA55AA55AA55
- DATA 003C424242423C00
- DATA 0123,4545,5565,4577,5577
- DATA 1,2,1,2,1,2,1,2,1,2,3,4,0
- DATA 0,17,19,0,10,15,5,4
- DATA 4,17,16,3,0,15,17,0
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.209 秒 | このページの最終更新 : 2022/09/20 (火) 12:43:54 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30