So I've finally got of my butt and MADE something with this great tool. Not a game, more of a toy...plus, I made a Playfield Graphic Editor that some of you may find useful.
The toy name is "NECG DRUMMA v0.1". Screenshot and binary attached I hope. I made extensive use of pfpixel to write the title of the game in the background. It's
New England Classic Gamers' own "PacPilgrim" for a simple drum machine: left is bass, right is snare, button is high hat.
The quick and dirty tool I made for that is here:
the bBpf Editor. You can use the keyboard to enter Xs and.s to draw the pixels, and it translates them to individual pfpixel calls, with a few formatting option. It's not super-well tested, doesn't warn you if you do something that exceeds what bB can do, but it worked pretty well for me!
I'm including the text of the game here becuase I think it uses some good practices available with the 0.2 Alpha that I haven't heard much talk about: it shuns line numbers, uses descriptive labels for both goto-locations and variable names.
dim pacMouthTime=a
dim voice0vol=b
dim voice1vol=c
dim okToReadStick=d
COLUPF = 90
player0x = 128 : player0y = 35
player1x = 127 : player1y = 40
okToReadStick = 1
setHatGraphic player0:
%11111111
%00110100
%00111100
%00111100
%00111100
end
pfpixel 0 0 on : pfpixel 3 0 on : pfpixel 5 0 on : pfpixel 6 0 on
pfpixel 7 0 on : pfpixel 10 0 on : pfpixel 11 0 on : pfpixel 14 0 on
pfpixel 15 0 on : pfpixel 0 1 on : pfpixel 1 1 on : pfpixel 3 1 on
pfpixel 5 1 on : pfpixel 9 1 on : pfpixel 13 1 on : pfpixel 20 1 on
pfpixel 22 1 on : pfpixel 26 1 on : pfpixel 27 1 on : pfpixel 28 1 on
pfpixel 30 1 on : pfpixel 0 2 on : pfpixel 2 2 on : pfpixel 3 2 on
pfpixel 5 2 on : pfpixel 6 2 on : pfpixel 9 2 on : pfpixel 13 2 on
pfpixel 15 2 on : pfpixel 16 2 on : pfpixel 20 2 on : pfpixel 22 2 on
pfpixel 26 2 on : pfpixel 28 2 on : pfpixel 30 2 on : pfpixel 0 3 on
pfpixel 3 3 on : pfpixel 5 3 on : pfpixel 9 3 on : pfpixel 13 3 on
pfpixel 16 3 on : pfpixel 21 3 on : pfpixel 24 3 on : pfpixel 26 3 on
pfpixel 27 3 on : pfpixel 28 3 on : pfpixel 30 3 on : pfpixel 0 4 on
pfpixel 3 4 on : pfpixel 5 4 on : pfpixel 6 4 on : pfpixel 7 4 on
pfpixel 10 4 on : pfpixel 11 4 on : pfpixel 14 4 on : pfpixel 15 4 on
pfpixel 4 6 on : pfpixel 5 6 on : pfpixel 8 6 on : pfpixel 9 6 on
pfpixel 12 6 on : pfpixel 14 6 on : pfpixel 16 6 on : pfpixel 20 6 on
pfpixel 22 6 on : pfpixel 26 6 on : pfpixel 29 6 on : pfpixel 4 7 on
pfpixel 6 7 on : pfpixel 8 7 on : pfpixel 10 7 on : pfpixel 12 7 on
pfpixel 14 7 on : pfpixel 16 7 on : pfpixel 17 7 on : pfpixel 19 7 on
pfpixel 20 7 on : pfpixel 22 7 on : pfpixel 23 7 on : pfpixel 25 7 on
pfpixel 26 7 on : pfpixel 28 7 on : pfpixel 30 7 on : pfpixel 4 8 on
pfpixel 6 8 on : pfpixel 8 8 on : pfpixel 9 8 on : pfpixel 12 8 on
pfpixel 14 8 on : pfpixel 16 8 on : pfpixel 18 8 on : pfpixel 20 8 on
pfpixel 22 8 on : pfpixel 24 8 on : pfpixel 26 8 on : pfpixel 28 8 on
pfpixel 29 8 on : pfpixel 30 8 on : pfpixel 4 9 on : pfpixel 6 9 on
pfpixel 8 9 on : pfpixel 10 9 on : pfpixel 12 9 on : pfpixel 14 9 on
pfpixel 16 9 on : pfpixel 20 9 on : pfpixel 22 9 on : pfpixel 26 9 on
pfpixel 28 9 on : pfpixel 30 9 on : pfpixel 4 10 on : pfpixel 5 10 on
pfpixel 8 10 on : pfpixel 10 10 on : pfpixel 12 10 on : pfpixel 13 10 on
pfpixel 14 10 on : pfpixel 16 10 on : pfpixel 20 10 on : pfpixel 22 10 on
pfpixel 26 10 on : pfpixel 28 10 on : pfpixel 30 10 on
startLoop
rem player1x = 127
player1y = 47
if okToReadStick = 0 then goto doneStick
if joy0left then player1x = 117 : voice0vol = 12 : AUDF0 = 30 : AUDC0 = 15 : okToReadStick = 0 : goto doneStick
if joy0right then player1x = 137 : voice0vol = 8 : AUDF0 = 8 : AUDC0 = 8 : okToReadStick = 0 : goto doneStick
rem if joy0up then player1y = 20
rem if joy0down then player1y = 60
doneStick
if joy0left then goto stickAintClear
if joy0right then goto stickAintClear
okToReadStick = 1;
stickAintClear
if joy0fire then player1y = 37 : voice1vol = 8 : AUDF1 = 0 : AUDC1 = 8
if voice0vol = 0 then goto doneLowerVoice0
voice0vol = voice0vol - 1
doneLowerVoice0
if voice1vol = 0 then goto doneLowerVoice1
voice1vol = voice1vol - 1
doneLowerVoice1
AUDV0 = voice0vol
AUDV1 = voice1vol
if player1x < 127 then player1x = player1x + 1: REFP1 = 8 : REFP0 = 8
if player1x > 127 then player1x = player1x - 1: REFP1 = 0 : REFP0 = 0
if player1y < 47 then player1y = player1y + 1
if player1y > 47 then player1y = player1y - 1
player0y = player0y + 5
player0x = player0x - 1
if player0x < player1x then player0x = player0x + 1
if player0x > player1x then player0x = player0x - 1
if player0y < player1y then player0y = player0y + 1
if player0y > player1y then player0y = player0y - 1
player0y = player0y - 5
player0x = player0x + 1
goto doPacGraphic
returnFromPacGraphic
COLUP0 = $04 : COLUP1 = $1C
drawscreen
goto startLoop
doPacGraphic
pacMouthTime = pacMouthTime + 1
if pacMouthTime > 20 then pacMouthTime = 1
if pacMouthTime > 10 then goto setPacGraphic2
setPacGraphic1 player1:
%00011000
%00111100
%01110000
%01100000
%01110000
%00111100
%00011000
end
goto doneSettingPacGraphic
setPacGraphic2 player1:
%00011000
%00111100
%01111110
%01100000
%01111110
%00111100
%00011000
end
doneSettingPacGraphic
goto returnFromPacGraphic
rem X..X.XXX..XX..XX................
rem XX.X.X...X...X......X.X...XXX.X.
rem X.XX.XX..X...X.XX...X.X...X.X.X.
rem X..X.X...X. .X..X....X..X.XXX.X.
rem X..X.XXX..XX..XX................
rem ................................
rem ....XX..XX..X.X.X...X.X...X..X..
rem ....X.X.X.X.X.X.XX.XX.XX.XX.X.X.
rem ....X.X.XX..X.X.X.X.X.X.X.X.XXX.
rem ....X.X.X.X.X.X.X...X.X...X.X.X.
rem ....XX..X.X.XXX.X...X.X...X.X.X.