GOKIVADER for MSX

By fukenko

Champion (357)

fukenko's picture

15-03-2012, 23:57

日本のかつてのパソコン少年にはよく知られた、電波新聞社「マイコン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

Login or register to post comments