日本のかつてのパソコン少年にはよく知られた、電波新聞社「マイコンBASICマガジン」掲載ゲームプログラム「GOKIVADER」(オリジナルはPC-6001,制作末永悟氏)を、MSX用に移植してみました。せっかくだからここでさらしてみます。グラフィックキャラクターを使っているので、日本の本体でないと正常表示されないと思います。
100 CLEAR 100,&H8FFF:GOTO 350 110 REM======== COCKROACH ======== 120 FORI=0TOWT:NEXT:A=USR2(0) 130 IF GN>4 THEN G4=G3:G3=G2:G2=G1:G1=INT(RND(1)*5)+1:GN=1 140 LOCATE G1*6-5,4:PRINT G$(GN);:GN=GN+1 150 REM======== STOPPER ======== 160 I$=INKEY$:IF I$<"a" OR I$>"e" THEN 200 170 LOCATE PX*6-5,19:PRINT" ";:PX=ASC(I$)-96 180 LOCATE PX*6-5,19:PRINT"QQQQQ"; 190 REM======== CORRISION ======= 200 IF GN<>4 OR G4=0 THEN 120 210 IF G4<>PX THEN 250 220 LOCATE G4*6-5,15:PRINT H$;:SC=SC+1 230 SOUND1,5:SOUND0,100:SOUND12,5:SOUND8,16:SOUND13,4:GOTO 120 240 REM======== MISTAKE ============ 250 FORI=0TO3:LOCATE G4*6-5,15+I:PRINT"*****";:NEXT 260 SOUND1,2:SOUND0,0:SOUND12,2:SOUND11,0:SOUND13,12:SOUND8,16 270 FORI=1TO300:NEXT:SOUND8,0 280 LOCATE 0,4:PRINT "=== YOU KILLED ";SC;"GOKIVADERS ==="; 290 LOCATE 0,5:PRINT "======= TRY AGAIN? (y/n) ======="; 300 I$=INKEY$:IF I$="y" THEN390 310 IF I$<>"n" THEN 300 320 DEFUSR3=&H3E 330 A=USR3(0):END 340 REM======== INITIALIZE ======= 350 RESTORE:FORI=&H9000TO&H9023:READA$:POKEI,VAL("&H"+A$):NEXT 360 SCREEN1,2,0:WIDTH32:KEYOFF:COLOR15,12,1:DEFINT A-Z 370 DEFUSR1=&H9000:DEFUSR2=&H900B 380 DIM G$(4):FORI=1TO5:KEY I,CHR$(96+I):NEXT 390 G$(4)="ZXRY[":G1=0:G2=0 400 G$(3)="ZVVV[":G3=0:G4=0 410 G$(2)="XTQSY":GN=5:PX=3 420 G$(1)=" ZW[ ":SC=0:WT=150 430 H$=CHR$(29):H$=H$+H$+H$+H$+H$+CHR$(31) 440 H$=". . ."+H$+" . . "+H$+". . ."+H$+" . . " 450 CLS 460 LOCATE13,19:PRINT"QQQQQ"; 470 SOUND 8,8:SOUND 1,3:SOUND 0,255 480 LOCATE12,6:PRINT"READY?";:FORI=1TO300:NEXT:SOUND1,0 490 A=USR1(0):FORI=0TO15:A=USR2(0):SOUND0,(15-I)*15:NEXT:GOTO 120 500 REM======== DATA ========= 510 DATA 21,00,91,06,20,36,20,23 520 DATA 10,FB,C9,21,80,18,11,20 530 DATA 91,01,C0,01,CD,59,00,21 540 DATA 00,91,11,80,18,01,E0,01 550 DATA CD,5C,00,C9
画面上部から「ゴキベーダー」こと敵が降りてくるので撃退してください。ゴキベーダーの位置は、左からF1~F5キーに対応しています。降りてくるタイミングに合わせて、対応するファンクションキーを押せば倒せます(いわゆる「音ゲー」と同じ操作です)。
スクロール処理にマシン語を使っています。いちおうこちらのソースも載せときます。マシン語はもっといい書き方もあるんでしょうが、とりあえずはこれで。
; ;GOKIVADER SCROLL ROUTINE ; LDIRMV: EQU 00059H LDIRVM: EQU 0005CH ; ORG 09000H ; ;--- FILL TOP LINE WITH BLANK ; LD HL,09100H LD B,20H LD (HL),20H INC HL DJNZ 09010H RET ; ;--- SCROLL ; ;- COPY A SCREEN TO RAM ; LD HL,01880H LD DE,09120H LD BC,01C0H CALL LDIRMV ; ;- COPY RAM TO VRAM ; LD HL,09100H LD DE,01880H LD BC,01E0H CALL LDIRVM RET ; END
ログイン/登録して投稿