イオ太のブログ

ゲームのこと(レトロ多め)とか、コンピュータのこととか

「イチゴサーカス」更新(2023/04/04)

IchigoJam 用「イチゴサーカス」のプログラムを更新しました。オリジナルの「サーカス」に近づけるためにキャラのアニメと曲の追加をしました。プログラムは4つになり、合計4KB近くまでになってしまいました。ただ、見やすいように行を分けたり増やして書いているので、詰めればもっとメモリは空くと思います。

 

www.youtube.com

(2023/04/04)

  • キャラクターのアニメパターンを追加
  • スタート時、ボーナス時の曲を追加

 

プログラムは、IchigoJam BASIC 用(プログラム0〜3)と IchigoCake BASIC 用(プログラム0)の2種類あります。どちらも行番号と内容は同じになっています。


IchigoJam BASIC 用(Ver. 1.2.3以降)

<プログラム0>

NEW

10 'Circus-0
20 CLV
30 POKE#778,#18,#99,#7E,#18,#18,#24,#24,#66,#10,#21,#27,#7C,#7C,#24,#26,#42
50 POKE#788,#60,#23,#3E,#18,#98,#7E,#19,#00,#42,#64,#24,#3E,#3E,#E4,#84,#08
70 POKE#798,#00,#98,#7E,#19,#18,#7C,#C4,#06,#00,#19,#7E,#98,#18,#3E,#23,#60
90 POKE#7A8,#00,#99,#7E,#18,#18,#3C,#42,#C3,#00,#00,#18,#7E,#99,#3C,#24,#66
110 POKE#7B8,#00,#00,#00,#18,#7E,#99,#7E,#C3,#00,#00,#00,#00,#00,#C8,#2B,#FF
130 POKE#7E0,#00,#18,#18,#30,#3C,#10,#10,#18
140 POKE#7F0,#00,#18,#18,#0C,#3C,#08,#08,#18
150 POKE#8A0,#13,#91,#91,#14,#14,#00,#F9,#00,#00,#00,#00,#9F,#9E,#13,#13,#91
160 POKE#8B0,#00,#F9,#00,#14,#14,#91,#91,#13,#91,#13,#13,#9F,#9E,#00,#00,#00
170 POKE#8C8,19,19,19,19
180 LET[0],0,4,6,1
190 LET[4],-1,-1,-1,1,-1,1,1,1
200 LET[12],50,25,0,0,0,0,25,50
210 LET[24],100,50,20
220 LET[28],0,12,75,-200,31,12,-75,-200,0,17,100,-200,31,17,-100,-200
310 LET[44],252,251,252,251,254,253,254,253
320 LET[52],243,250,244,245,240,241,242,243
330 LET[60],239,239,239,239,239,246,247,248
350 LRUN1

SAVE0

 

<プログラム1>

NEW

400 'Circus-1
410 CLS:FOR I=0 TO 31:POKE#BE0+I,3:NEXT:LC0,0:?"SCORE ";S:LC13,0:?"JUMPS ";H
420 COPY#AA0,#8C8,4:COPY#ABC,#8C8,4:COPY#B40,#8C8,4:COPY#B5C,#8C8,4
430 LC9,8:?"Ichigo Circus":LC4,12:?"PUSH SPACE KEY OR BUTTON":GSB1700:GSB1800
440 COPY#900,#940,32:COPY#A00,#940,32:COPY#A40,#940,32:COPY#A80,#940,32
450 PLAY"T100O5F8R64F16R64F4R64F16G16F16G16A4"
460 WAIT180:H=3:K=0:L=0:N=13:S=0:LET[21],0,0,0
500 '
510 COPY#BC0,#940,32:T=30:U=-350:M=-1
520 A=RND(4)*4:X=[28+A]:Y=[29+A]:P=[30+A]:Q=[31+A]:IF X=0 Z=1 ELSE Z=2
530 E=X*100:F=Y*100:V=X:W=Y
600 '
610 FOR I=0 TO 2:IF[21+I]=0 [21+I]=8:FOR J=0 TO 7:POKE#920+I*64+J*4,#FF:NEXT:NEXT ELSE NEXT
620 LRUN2

1100 '
1110 IF H=0 A=200:LC11,8:?"GAME OVER" ELSE A=150
1120 IF[20]<S [20]=S
1130 PLAY"T120O3B8R32B8R64B16R64B8O4D8C#16R64C#8O3B16R64B8A#16B8"
1140 GSB1700:WAIT A:IF H=0 GOTO400
1150 GSB1800:COPY#A40,#940,32:GOTO500

1700 '
1710 LC5,10:?"TODAYS HIGH SCORE ";[20]
1720 RTN

1800 '
1810 IF BTN(32) [27]=1 ELSE IF BTN() [27]=2 ELSE CONT
1820 RTN

SAVE1

 

<プログラム2>

NEW

700 'Circus-2
710 'Main_Start
720 COPY#AA0,#8C8,4:COPY#ABC,#8C8,4:COPY#B40,#8C8,4:COPY#B5C,#8C8,4
730 IF(Z<3)|(Z>5) GOTO800
740 IF(X<4)|(X>27) GSB1200
750 IF X=0 P=T:Z=4 ELSE IF X=31 P=-T:Z=4
760 A=X-N:B=A-[L]:IF(Y>19)&(B>=0)&(B<=3) GSB1300
770 IF Y>=22 Y=22:F=2200:Q=0:Z=6:G=0
800 '
810 IF(K<>L)|(N<>M) COPY#BA0+M,0,8:COPY#BC0+M,0,8:COPY#BA0+N,#8A0+L*16,8:COPY#BC0+N,#8A8+L*16,8:K=L
820 IF Z>0 LCV,W:?" ";
830 O=O^1:IF O=1 FOR I=0 TO 1:A=PEEK(#920+I*128):COPY#920+I*128,#921+I*128,31:POKE#93F+I*128,A:NEXT:B=PEEK(#97F):COPY#97F,#97E,-31:POKE#960,B
840 A=0:IF SCR(X,Y)=255 A=1:P=-P:Q=-Q:B=Y/2:S=S+[24+B]:[21+B]=[21+B]-1:IF[21+B]=0 A=2
850 LRUN3

1200 '
1210 A=0
1220 IF(Y>=12)&(W<12) A=1:Y=12:F=1200:Q=-200:U=-400
1230 IF(Y>=17)&(W<17) A=1:Y=17:F=1700:Q=-200:U=-400
1240 IF A=1 Z=4:T=75:IF X<4 P=T ELSE P=-T
1250 RTN

1300 '
1310 BEEP:Z=3:X=N+[L+2]:Y=20:E=X*100:F=2000:Q=U:IF U>-450 U=U-50
1320 IF T<200 T=T+[12+A]
1330 P=T*[4+A]:K=L:L=L^1
1340 RTN

SAVE2

 

<プログラム3>

NEW

900 'Circus-3
920 G=(G+1)%4:IF(Y>17)&(Q>0) Z=5
930 IF Z=1 E=E+25:IF E=400 Z=3
940 IF Z=2 E=E-25:IF E=2800 Z=3
950 R=[40+Z*4+G]
960 IF(Z=6)&(G=3) Z=7:H=H-1
980 LC0,0:?"SCORE ";S;:LC13,0:?"JUMPS ";H;
1000 LCX,Y:?CHR$(R);:IF A=1 BEEP4,4:WAIT5 ELSE IF A=2 GSB1600:LRUN1,600
1010 IF Z=7 BEEP30,20:WAIT30:LRUN1,1100
1020 M=N:IF [27]=1 GSB1400 ELSE IF [27]=2 GSB1500
1030 IF(Z>=3)&(Z<=5) E=E+P:Q=Q+49:F=F+Q:IF F<0 F=0:Q=0
1040 IF E<0 E=0 ELSE IF E>3199 E=3100
1050 V=X:W=Y:X=E/100:Y=F/100
1060 'Main_End
1070 WAIT4:LRUN2

1400 '
1410 D=-BTN(28)+BTN(29):IF D=0 C=0 ELSE C=C+1:IF C>4 D=D*3 ELSE IF C>2 D=D*2
1420 N=N+D:IF N<0 N=0 ELSE IF N>24 N=24
1430 RTN

1500 '
1510 A=ANA(2):IF A<320 A=320 ELSE IF A>619 A=619
1520 N=(A-320)/12
1530 RTN

1600 '
1610 A=[24+B]*10:LC10,8:?"BONUS ";A:S=S+A
1620 PLAY"T120O5C16O4B16O5C16F8C16R64O4A8R64A16G#16A16O5C8O4A16R64F8A16G16F16G8R64G16R64G8A#16A16G16O5C8O4A16F4"
1630 WAIT300:COPY#A00,#940,32:COPY#920+B*64,#940,32
1640 RTN

2000 '2023/04/04

SAVE3

 


IchigoCake BASIC 用(Ver. 1.3.2以降)

<プログラム0>

NEW

10 'Circus-0
20 CLV
30 POKE#778,#18,#99,#7E,#18,#18,#24,#24,#66,#10,#21,#27,#7C,#7C,#24,#26,#42
50 POKE#788,#60,#23,#3E,#18,#98,#7E,#19,#00,#42,#64,#24,#3E,#3E,#E4,#84,#08
70 POKE#798,#00,#98,#7E,#19,#18,#7C,#C4,#06,#00,#19,#7E,#98,#18,#3E,#23,#60
90 POKE#7A8,#00,#99,#7E,#18,#18,#3C,#42,#C3,#00,#00,#18,#7E,#99,#3C,#24,#66
110 POKE#7B8,#00,#00,#00,#18,#7E,#99,#7E,#C3,#00,#00,#00,#00,#00,#C8,#2B,#FF
130 POKE #7E0,#00,#18,#18,#30,#3C,#10,#10,#18
140 POKE #7F0,#00,#18,#18,#0C,#3C,#08,#08,#18
150 POKE#8A0,#13,#91,#91,#14,#14,#00,#F9,#00,#00,#00,#00,#9F,#9E,#13,#13,#91
160 POKE#8B0,#00,#F9,#00,#14,#14,#91,#91,#13,#91,#13,#13,#9F,#9E,#00,#00,#00
170 POKE#8C8,19,19,19,19
180 LET[0],0,4,6,1
190 LET[4],-1,-1,-1,1,-1,1,1,1
200 LET[12],50,25,0,0,0,0,25,50
210 LET[24],100,50,20
220 LET[28],0,12,75,-200,31,12,-75,-200,0,17,100,-200,31,17,-100,-200
310 LET[44],252,251,252,251,254,253,254,253
320 LET[52],243,250,244,245,240,241,242,243
330 LET[60],239,239,239,239,239,246,247,248

400 '
410 CLS:FOR I=0 TO 31:POKE#BE0+I,3:NEXT:LC0,0:?"SCORE ";S:LC13,0:?"JUMPS ";H
420 COPY#AA0,#8C8,4:COPY#ABC,#8C8,4:COPY#B40,#8C8,4:COPY#B5C,#8C8,4
430 LC9,8:?"Ichigo Circus":LC4,12:?"PUSH SPACE KEY OR BUTTON":GSB1700:GSB1800
440 COPY#900,#940,32:COPY#A00,#940,32:COPY#A40,#940,32:COPY#A80,#940,32
450 PLAY"T100O5F8R64F16R64F4R64F16G16F16G16A4"
460 WAIT180:H=3:K=0:L=0:N=13:S=0:LET[21],0,0,0
500 '
510 COPY#BC0,#940,32:T=30:U=-350:M=-1
520 A=RND(4):X=[28+A*4]:Y=[29+A*4]:P=[30+A*4]:Q=[31+A*4]:IF X=0 Z=1 ELSE Z=2
530 E=X*100:F=Y*100:V=X:W=Y
600 '
610 FOR I=0 TO 2:IF[21+I]=0 [21+I]=8:FOR J=0 TO 7:POKE#920+I*64+J*4,#FF:NEXT:NEXT ELSE NEXT

700 'Main_Start
720 COPY#AA0,#8C8,4:COPY#ABC,#8C8,4:COPY#B40,#8C8,4:COPY#B5C,#8C8,4
730 IF(Z<3)|(Z>5) GOTO800
740 IF(X<4)|(X>27) GSB1200
750 IF X=0 P=T:Z=4 ELSE IF X=31 P=-T:Z=4
760 A=X-N:B=A-[L]:IF(Y>19)&(B>=0)&(B<=3) GSB1300
770 IF Y>=22 Y=22:F=2200:Q=0:Z=6:G=0
800 '
810 IF(K<>L)|(N<>M) COPY#BA0+M,0,8:COPY#BC0+M,0,8:COPY#BA0+N,#8A0+L*16,8:COPY#BC0+N,#8A8+L*16,8:K=L
820 IF Z>0 LCV,W:?" ";
830 O=O^1:IF O=1 FOR I=0 TO 1:A=PEEK(#920+I*128):COPY#920+I*128,#921+I*128,31:POKE#93F+I*128,A:NEXT:B=PEEK(#97F):COPY#97F,#97E,-31:POKE#960,B
840 A=0:IF SCR(X,Y)=255 A=1:P=-P:Q=-Q:B=Y/2:S=S+[24+B]:[21+B]=[21+B]-1:IF[21+B]=0 A=2
900 '
920 G=(G+1)%4:IF(Y>17)&(Q>0) Z=5
930 IF Z=1 E=E+25:IF E=400 Z=3
940 IF Z=2 E=E-25:IF E=2800 Z=3
950 R=[40+Z*4+G]
960 IF(Z=6)&(G=3) Z=7:H=H-1
980 LC0,0:?"SCORE ";S;:LC13,0:?"JUMPS ";H;
1000 LCX,Y:?CHR$(R);:IF A=1 BEEP4,4:WAIT5 ELSE IF A=2 GSB1600:GOTO600
1010 IF Z=7 BEEP30,20:WAIT30:GOTO1100
1020 M=N:IF [27]=1 GSB1400 ELSE IF [27]=2 GSB1500
1030 IF(Z>=3)&(Z<=5) E=E+P:Q=Q+49:F=F+Q:IF F<0 F=0:Q=0
1040 IF E<0 E=0 ELSE IF E>3199 E=3100
1050 V=X:W=Y:X=E/100:Y=F/100
1060 'Main_End
1070 WAIT4:GOTO700

1100 '
1110 IF H=0 A=200:LC11,8:?"GAME OVER" ELSE A=150
1120 IF[20]<S [20]=S
1130 PLAY"T120O3B8R32B8R64B16R64B8O4D8C#16R64C#8O3B16R64B8A#16B8"
1140 GSB1700:WAIT A:IF H=0 GOTO400
1150 GSB1800:COPY#A40,#940,32:GOTO500

1200 '
1210 A=0
1220 IF(Y>=12)&(W<12) A=1:Y=12:F=1200:Q=-200:U=-400
1230 IF(Y>=17)&(W<17) A=1:Y=17:F=1700:Q=-200:U=-400
1240 IF A=1 Z=4:T=75:IF X<4 P=T ELSE P=-T
1250 RTN

1300 '
1310 BEEP:Z=3:X=N+[L+2]:Y=20:E=X*100:F=2000:Q=U:IF U>-450 U=U-50
1320 IF T<200 T=T+[12+A]
1330 P=T*[4+A]:K=L:L=L^1
1340 RTN

1400 '
1410 D=-BTN(28)+BTN(29):IF D=0 C=0 ELSE C=C+1:IF C>4 D=D*3 ELSE IF C>2 D=D*2
1420 N=N+D:IF N<0 N=0 ELSE IF N>24 N=24
1430 RTN

1500 '
1510 A=ANA(2):IF A<320 A=320 ELSE IF A>619 A=619
1520 N=(A-320)/12
1530 RTN

1600 '
1610 A=[24+B]*10:LC10,8:?"BONUS ";A:S=S+A
1620 PLAY"T120O5C16O4B16O5C16F8C16R64O4A8R64A16G#16A16O5C8O4A16R64F8A16G16F16G8R64G16R64G8A#16A16G16O5C8O4A16F4"
1630 WAIT300:COPY#A00,#940,32:COPY#920+B*64,#940,32
1640 RTN

1700 '
1710 LC5,10:?"TODAYS HIGH SCORE ";[20]
1720 RTN

1800 '
1810 IF BTN(32) [27]=1 ELSE IF BTN() [27]=2 ELSE CONT
1820 RTN

2000 '2023/04/04

SAVE0