パレットをMSXっぽくしたり超低機能MML再生をつけたりしたので、それなりにそっくりになってるかと。
DSiへ移植されたYOPPALの図 |
操作:
Aボタンで上昇しますが、常に重力があり、離すと下へいきます。
左右で横移動しますが、慣性がかかっています。
緑色の線を操作し、右下の黄色のゴールへたどり着くことが目的です。
全7面、オールクリアで、エンディングデモとクリアまでにかかったTIMEを表示します。
---PRG:YOPPAL ‘*** YOPPAL for DSi *** CLEAR DIM P(14) VISIBLE 1,1,1,1,1,1 CLS:GCLS:SPCLR CHRINIT “BGF0” CHRINIT “BGU3” GOSUB @PALINIT GOSUB @PALSET CHRSET “BGU3”,0,”1571000055570000455500001451000000000000000000000000000000000000” RESTORE @NOTEDAT:FOR I=0 TO 13:READ P(I):NEXT I RESTORE @SCENEDAT:FOR I=1 TO 7:READ O$(I):NEXT I @NEWGAME O=1:U=0 @MAIN GCLS 0 FOR I=0 TO 1 FOR J=0 TO 63 GPUTCHR J*4,I*180,”BGU3”,0,0,1 NEXT FOR J=1 TO 44 GPUTCHR I*252,J*4,”BGU3”,0,0,1 NEXT NEXT A$=O$(O) FOR I=0 TO 3:B=VAL(“&H”+MID$(A$,I*2,2)):G=128 FOR J=1 TO 6:iF B>=G THEN GOSUB @WALLTATE:B=B-G G=FLOOR(G/2):NEXT J NEXT I FOR I=0 TO 4:B=VAL(“&H”+MID$(A$,I*2+8,2)):G=128 FOR J=1 TO 6:IF B>=G THEN GOSUB @WALLYOKO:B=B-G G=FLOOR(G/2):NEXT J NEXT I GFILL 252,148,255,179,10:’GOAL X=20:Y=164:Z=3.5:V=0:W=0:OX=X:OY=Y:GCOLOR 3:GPSET X,Y A$="SCENE["+STR$(O)+"]":GX=0:GY=185:GOSUB @GPRINT @PLAY B=BUTTON():S=B AND 15:U=U+1 IF S AND 4 THEN V=V-0.5:IF V<=-Z THEN V=-Z IF S AND 8 THEN V=V+0.5:IF V>=Z THEN V=Z IF B AND 16 THEN W=W-2:IF W<-3 THEN W=-3 W=W+1:IF W>3 THEN W=3 X=X+V:Y=Y+W:I=GSPOIT(X,Y) GLINE OX,OY,X,Y:OX=X:OY=Y VSYNC 3 IF I==0 OR I==3 GOTO @PLAY IF I==10 THEN P$=“O6CDEFC”:GOSUB @MML:O=O+1 IF I!=10 THEN P$=“O5GFEDC”:GOSUB @MML IF O==8 GOTO @ALLCLEAR GOTO @MAIN @ALLCLEAR A$=“:TIME[“+STR$(U)+”]”:GX=64:GY=185:GOSUB @GPRINT P$=“DEGCDEGEDC”:GOSUB @MML FOR I=0 TO 1 GLINE X,Y,RND(255),RND(184),RND(16) I=BUTTON() AND 15 VSYNC 2 NEXT:GOTO @NEWGAME @MML ‘OCTAVE=O3~O6 ‘CDEFGABC,# M=0 @MMLLOOP ML=1 N=ASC(MID$(P$,M,1))-ASC(“A”) NN$=“”:IF M<LEN(P$)-1 THEN NN$=MID$(P$,M+1,1) IF NN$=“#” THEN ML=2:N=N+8 IF N==14 AND NN$=“” GOTO @NEXTMML IF N==14 THEN ML=2:OCT=(VAL(NN$)-3)*4096-8192:GOTO @NEXTMML @PLAYMML BEEP 0,FLOOR(OCT+341.3*P(N)+0.5) VSYNC 5 @NEXTMML M=M+ML IF M<LEN(P$) GOTO @MMLLOOP RETURN @GPRINT FOR M=0 TO LEN(A$)-1 GPUTCHR GX+M*8,GY,"BGF0",ASC(MID$(A$,M,1)),0,1 NEXT M:RETURN @WALLYOKO FOR W=0 TO 9 GPUTCHR J*36+W*4,I*36+36,”BGU3”,0,0,1 NEXT W:RETURN @WALLTATE FOR W=0 TO 9 GPUTCHR J*36,I*36+W*4,”BGU3”,0,0,1 NEXT W:RETURN @PALINIT FOR M=0 TO 15 COLINIT “BG”,M COLINIT “SP”,M COLINIT “GRP”,M NEXT M:RETURN @PALSET RESTORE @PALDAT FOR M=0 TO 15:READ C$ COLSET “BG”,M,C$ COLSET “GRP”,M,C$ NEXT M:RETURN @NOTEDAT DATA 9,11,0,2,4,5,7 DATA 10,11,1,3,4,6,8 @PALDAT DATA 000000,000000,24DB24,6DFF6D DATA 2424FF,496DFF,B62424,49DBFF DATA FF2424,FF6D6D,DBDB24,DBDB92 DATA 249224,DB49B6,B6B6B6,FFFFFF @SCENEDAT DATA 4450047C00FCFC DATA 7C381C3E0084C4C080 DATA 7C3E4C980080A06444 DATA 7CF24C860008287050 DATA 64384C861094A47050 DATA 70EC5820081424AC94 DATA 1C6ED00840A0286CA4 ---もし奇特にも約140行を打ち込まれて、動かなかったり、変な動きをするようでしたら、DSからの転記ミスなので教えてください。
修正します m(_ _)m
※7/6 転記ミスがありましたので修正しました(´・ω・`)
入力してみましたが、転記ミスと想われる箇所が何箇所かありました。
ReplyDelete1.冒頭のCHRINITのリソース指定
CHRINIT “BGF0” → CHRINIT “BGF0”
CHRINIT “BGF3” → CHRINIT “BGU3”
2.同じく冒頭のRESTORE直後のFORの最大値
RESTORE @NOTEDAT:FOR I=0 TO 14 →
RESTORE @NOTEDAT:FOR I=0 TO 13
3.@PLAY中の下記IF文でシーンが+1されてない
IF I==10 THEN P$=“O6CDEFC”:GOSUB @MML →
IF I==10 THEN P$=“O6CDEFC”:GOSUB @MML:O=O+1
4.@MMLLOOP中の下記IF文の条件式の不等号
NN$=“”:IF M>LEN(P$)-1 THEN →
NN$=“”:IF M<LEN(P$)-1 THEN
レス遅くなり申し訳ありません...
ReplyDeleteチェックしてびっくりしましたが全くお書きのとおりでした。
ご指摘ありがとうございました!