Bolder Dash с БК0010–01
by hugeping on 2020-09-08 20:49:46
Мне повезло, программировать я начал в лет 13, когда у нас в стране появились доступные компьютеры. Я был счастливым обладателем машины под названием БК0010–01. Конечно, сейчас даже стыдно озвучивать её характеристики. Но главное — на этом можно было программировать! Вообще, в каком то смысле было проще. В то время всё было просто. Железо — простое. Программы — простые. Сегодня, между человеком и машиной столько слоёв абстракции, что пробиться сквозь них очень тяжело. А в то время, ты мог программировать прямо в машинных кодах. Или вообще, на листке бумаги… Аналоговый мир впервые встретился с цифровым. (Кстати, успех таких проектов как PICO-8 или TIC-80 объясняется, как мне кажется, попыткой снова придать программированию простоту и радость творчества, которую у нас забрали.)
Так вот, я из тех людей, которые научились программировать благодаря играм. Я играл в игры и хотел делать такие же. Это и было основным стимулом для изучения возможностей БК. Одной из первых игр, в которые я играл была игра Bolder Dash.
/* XPM */
static char * bolder_xpm[] = {
"128 128 33 1",
" c None",
". c #000100",
"+ c #000029",
"@ c #270000",
"# c #250028",
"$ c #022002",
"% c #8C0200",
"& c #1A11FA",
"* c #8D0026",
"= c #8C0138",
"- c #1120E1",
"; c #1525BF",
"> c #F60206",
", c #EF0C26",
"' c #FE1100",
") c #DF2300",
"! c #BF25B4",
"~ c #009418",
"{ c #0087BC",
"] c #008C8F",
"^ c #0186E0",
"/ c #008F8C",
"( c #028DB5",
"_ c #15BD00",
": c #BC890D",
"< c #0BB68A",
"[ c #05B6B7",
"} c #BD8688",
"| c #E1861B",
"1 c #ACA803",
"2 c #00E200",
"3 c #00D985",
"4 c #8BB78B",
"%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%%:1:::)%",
":222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222'",
":_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__'",
":_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__'",
":_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__'",
"122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'",
")_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1'",
"%''''''%%>'>>>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%>'''>'%%''''''%",
"%:1:::)%.@_~~_@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@..@)'')@.%:1:::)%",
":222222>@.~22~..@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@:222222'",
":_2_2__>@.$22$..@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@:_2_2__'",
":_2_2__>@$_22_$.@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@:_2_2__'",
":_2_2__>@.~22~..@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@:_2_2__'",
"122222_>@.$2_...@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@122222_'",
")_2_2_1'@.$__...@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@)_2_2_1'",
"%''''''%++~_2++++#,,,,#++#,,,,#++#,,,,#++#,,,,#++#,,,,#+.@)'')@..@)'')@.+#,,,,#++#,,,,#++#,,,,#++#,,,,#++#,,,,#++#,,,,#+%''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@..@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#)'''')@@)'''')#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/'>!!>'@@'>!!>'#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#'>[[|'@@'>[[|'#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#'>[[|'@@'>[[|'#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/''}4''@@''}4''#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#)'>|')@@)'>|')#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@..@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@..@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#)'''')@@)'''')#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/'>!!>'@@'>!!>'#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#'>[[|'@@'>[[|'#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#'>[[|'@@'>[[|'#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/''}4''@@''}4''#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#)'>|')@@)'>|')#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@..@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@..@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#)'''')@@)'''')#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/'>!!>'@@'>!!>'#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#'>[[|'@@'>[[|'#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#'>[[|'@@'>[[|'#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/''}4''@@''}4''#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#)'>|')@@)'>|')#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@..@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&+#,,,,#++#,,,,#++#,,,,#+.@)'')@..@)'')@.+#,,,,#++#,,,,#++#,,,,#+-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-#)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')@@)'''')#[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'#{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-#'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'#{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-#'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'#[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''@@''}4''#{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-#)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')@@)'>|')#{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@.+#,,,,#++#,,,,#++#,,,,#++#,,,,#++#,,,,#++#,,,,#+.@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-#)'''')#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#)'''')#[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/'>!!>'#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/'>!!>'#{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-#'>[[|'#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#'>[[|'#{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-#'>[[|'#[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-#'>[[|'#[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/''}4''#{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/''}4''#{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-#)'>|')#{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-#)'>|')#{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@+-^^;^^{&++++++++++++++++++++++++++++++++-^^;^^{&+@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-#)'''')#[/][/](-+..............................+[/][/](-#)'''')#[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/'>!!>'#{][/][/&+..............................+{][/][/'>!!>'#{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-#'>[[|'#{[/][/<-+..............................+{[/][/<-#'>[[|'#{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-#'>[[|'#[/][/](-+..............................+[/][/](-#'>[[|'#[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/''}4''#{][/][/&+..............................+{][/][/''}4''#{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-#)'>|')#{[/][/<-+..............................+{[/][/<-#)'>|')#{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@+^;^^;^-&+...........$.......$..........+^;^^;^-&+@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@+-^^;^^{&+..........~2$.....~2$.........+-^^;^^{&+@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-#)'''')#[/][/](-+.........~3[<$...~3[<$........+[/][/](-#)'''')#[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/'>!!>'#{][/][/&+........$<[3[~..$<[3[~........+{][/][/'>!!>'#{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-#'>[[|'#{[/][/<-+........~([[[_$.~([[[_$.......+{[/][/<-#'>[[|'#{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-#'>[[|'#[/][/](-+.......$<<(3<(~$<<(3<(~.......+[/][/](-#'>[[|'#[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/''}4''#{][/][/&+.......~([<3([_~([<3([_$......+{][/][/''}4''#{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-#)'>|')#{[/][/<-+......._[-[[[[[_[-[[[[[$......+{[/][/<-#)'>|')#{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@+^;^^;^-&+...$...$2[3333~$2[3333~....$..+^;^^;^-&+@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&+@)'')@+-^^;^^{&+..~2$...$$~2$$..$$~2$$....~2$.+-^^;^^{&+@)'')@+-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-#)'''')#[/][/](-+.~3[<$...~3[<$...~3[<$...~3[<$+[/][/](-#)'''')#[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/'>!!>'#{][/][/&+$<[3[~..$<[3[~..$<[3[~..$<[3[~+{][/][/'>!!>'#{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-#'>[[|'#{[/][/<-+~([[[_$.~([[[_$.~([[[_$.~([[[_.{[/][/<-#'>[[|'#{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-#'>[[|'#[/][/](-.<<(3<(~$<<(3<(~$<<(3<(~$<<(3<(~[/][/](-#'>[[|'#[/][/](-[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/''}4''#{][/][/&~([<3([_~([<3([_~([<3([_~([<3([~{][/][/''}4''#{][/][/&{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-#)'>|')#{[/][/<-~[-[[[[[_[-[[[[[_[-[[[[[_[-[[[[[([/][/<-#)'>|')#{[/][/<-{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&+@)'')@+^;^^;^-&$2[3333~$2[3333~$2[3333~$2[3333~^;^^;^-&+@)'')@+^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&=:1:::,*%:1:::)%*:1:::,*%:1:::)%%:1:::)%%:1:::)%%:1:::)%*:1:::,*%:1:::)%*:1:::,=-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-:222222':222222':222222':222222':222222':222222':222222':222222':222222':222222,[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&:_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__,{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-:_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__,{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-:_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__,[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_,{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-,_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1,{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&*>>>>>'%%>>>>>'%%>>>>>'%%>>>>>'%%>>>>>'%%>>>>>'%%>>>>>'%%>>>>>'%%>>>>>'%%>>>>>'*^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&+@@@@@@..@@@@@@..@@@@@@..@@@@@@..@@@@@@..@@@@@@..@@@@@@..@@@@@@..@@@@@@..@@@@@@+-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-+..............................................................................+[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&+..............................................................................+{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-+..............................................................................+{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-+........$_$$_$................................................................+[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&+.........$11$.................................................................+{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-+........$~))~$................................................................+{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&+........__::__................................................................+^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&+........_2112_................................................................+-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-+........__::__................................................................+[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&+........$~))~$................................................................+{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-+.........$~~$.................................................................+{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-+..............................................................................+[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&+..............................................................................+{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-+..............................................................................+{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&+.@@@@....@@@@....@@@@....@@@@......$.......$.....@@@@....@@@@....@@@@....@@@@.+^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&+@)'')@..@)'')@..@)'')@..@)'')@....~2$.....~2$...@)'')@..@)'')@..@)'')@..@)'')@+-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-#)'''')@@)'''')@@)'''')@@)'''')@..~3[<$...~3[<$.@)'''')@@)'''')@@)'''')@@)'''')#[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@.$<[3[~..$<[3[~.@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'#{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-#'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@.~([[[_$.~([[[_$@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'#{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-#'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@$<<(3<(~$<<(3<(~@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'#[/][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/''}4''@@''}4''@@''}4''@@''}4''@~([<3([_~([<3([_@''}4''@@''}4''@@''}4''@@''}4''#{][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-#)'>|')@@)'>|')@@)'>|')@@)'>|')@_[-[[[[[_[-[[[[[$)'>|')@@)'>|')@@)'>|')@@)'>|')#{[/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&+#,,,,#++#,,,,#++#,,,,#++#,,,,#+$_[3333~$_[3333~+#,,,,#++#,,,,#++#,,,,#++#,,,,#+^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)*-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^(&-^^;^^(&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&-^^;^^{&*:1:::)%",
":222222,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-:222222'",
":_2_2__,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/]{4-{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][(${([/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/](-[/][/{..][/](-[/][/](-:_2_2__'",
"122222_,{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/][/&{][/]{}.]][/][/&{][/][/&122222_'",
")_2_2_1,{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][/<-{[/][]/^][/][/<-{[/][/<-,_2_2_1'",
"%''''''*^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&^;^^;^-&*''''''%",
"%:1:::)%*:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,**:1:::,*%:1:::)%",
":222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222':222222'",
":_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__'",
":_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__'",
":_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__':_2_2__'",
"122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'122222_'",
")_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1')_2_2_1'",
"%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%%''''''%"};
Конечно, я тогда не мог знать, что Bolder Dash не самобытная игра на БК. Игра поразила меня своей сложностью. В то время я едва смог пройти несколько уровней, но не оставлял попыток пройти игру дальше.
Интересно, что потом, когда у меня появился уже x86 компьютер и я познакомился с разными вариантами Bolder Dash, я каждый раз был разочарован. Да, в этих играх человечек тоже толкал камни в разные стороны, но… Игра была абсолютно иной! В ней не было интеллектуальности! Скорее, рутинные уровни. Тяжёлое впечатление, словно ты играешь в sudoku или разгадываешь кроссворд. Каждый раз я с теплом вспоминал болдера с “бэкашки”…
В одной из версий INSTEAD, я добавил возможность создавать простые 2-D игры. Вот тогда (или чуть позже) я и вспомнил про Bolder Dash.
Мне хотелось сделать не просто клон, а точную копию игры. Поэтому, я вооружился дизассемблером PDP-11 и… Начал реверсить код.
Кстати, в то время я уже знал, что автор игры на БК (Мелентьев А.В.) был вдохновлён игрой Bolder Dash на Atari. Но он не играл в неё, а просто видел. После этого, он по памяти написал свою реализацию. Как здорово, что он не скопировал оригинал, и получилась совершенно новая игра!
Реверс кода PDP-11 оказался приятной и несложной задачей, буквально за несколько дней я воссоздал оригинальный алгоритм на Lua. С некоторыми улучшениями. :) Интересно, но я обратил внимание на тот факт, что функции часто начинались с “красивых” адресов, а между блоками кода часто были пропуски. Тогда я не мог этого понять, но ответ оказался простым! Игра писалась непосредственно в машинных кодах! Без использования ассемблера!
Кстати, вот так выглядит первый уровень игры в Lua реализации.
--$Name:STANDARD
--$Name(ru):СТАНДАРТ
maps = {
-- 0
"################",
"#+@@@@@@@@@@@@@#",
"#::::::@@::::::#",
"#::::::@@::::::#",
"#::::::@@::::::#",
"#:::@@@@@@@@:::#",
"#:::@::::::@:::#",
"#:::@: $$ :@:::#",
"#:::@: $$ :@:::#",
"#:::@: $$ :@:::#",
"#::##########::#",
"#:: % ::#",
"#:: ::#",
"#::@@@@$$@@@@::#",
"#::::::::::::::#",
"################",
Ещё несколько дней, и болдер даш заработал на INSTEAD!
Когда я рассказывал об игре знакомым и говорил, что это “Болдер Даш”, всегда происходил эффект ложного узнавания. Люди думали, что понимают о чём идёт речь, и это мешало. Так как этот “Болдер” совершенно самобытная игра. Поэтому, я назвал игру “Miner Bold”.
Прямо сейчас, вы можете поиграть в Miner Bold. А я пока продолжу.
Так в чём же уникальность гнёмплея этой игры, по сравнению с оригинальным Bolder Dash, которого мы все знаем?
Фактически, это аркадная головоломка. Игра — набор простых с виду уровней, каждый из которых имеет индивидуальные особенности. Каждый из которых проходится за пару минут (если знать — как). Но если не проявить смекалку, каждый уровень может стать блокадой.
В физике тоже есть нюансы. Например, вы можете толкать камни вверх. А также, делать это на лету… В некоторых ситуациях… :) В некоторых ситуациях, можно даже “пугать” врагов. Конечно, эта механика следствие очень простого кода, но и она придаёт игре свой шарм.
Кроме оригинальных уровней, я добавил библиотеку дополнительных лабиринтов. Игра пишет демки успешных прохождений, которыми можно потом обмениваться (Пишутся они в каталог с сейвами). Если не нажимать на кнопки при старте, то игра покажет уже записанные демки. Также запустить демку можно кнопочкой “d” из меню выбора уровня (предварительно записав демку или взяв ее у товарища и подложив в каталог с игрой).
В игру можно играть на Android с помощью жестов. Только играйте двумя руками одновременно, тогда управление становится не хуже клавиатурного. Проверено мной и сыном, игра проходима. :)
Всем БКшникам — привет! :)
https://www.youtube.com/watch?v=ghZ3iQQj0iI [1]