Bolder Dash с БК0010–01

by hugeping on 2020-09-08 18: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__,{][/][/&{][/][/&{][/][/&#'>!!>'#{][/][/&+........{body}lt;[3[~..{body}lt;[3[~........+{][/][/&#'>!!>'#{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-#'>[[|'#{[/][/<-+........~([[[_$.~([[[_$.......+{[/][/<-#'>[[|'#{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-#'>[[|'#[/][/](-+.......{body}lt;<(3<(~{body}lt;<(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__,{][/][/&{][/][/&{][/][/&#'>!!>'#{][/][/&+{body}lt;[3[~..{body}lt;[3[~..{body}lt;[3[~..{body}lt;[3[~+{][/][/&#'>!!>'#{][/][/&{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-{[/][/<-#'>[[|'#{[/][/<-+~([[[_$.~([[[_$.~([[[_$.~([[[_.{[/][/<-#'>[[|'#{[/][/<-{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-[/][/](-#'>[[|'#[/][/](-.<<(3<(~{body}lt;<(3<(~{body}lt;<(3<(~{body}lt;<(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__,{][/][/&{][/][/&#'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'@.{body}lt;[3[~..{body}lt;[3[~.@'>!!>'@@'>!!>'@@'>!!>'@@'>!!>'#{][/][/&{][/][/&:_2_2__'",
":_2_2__,{[/][/<-{[/][/<-#'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@.~([[[_$.~([[[_$@'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'#{[/][/<-{[/][/<-:_2_2__'",
":_2_2__,[/][/](-[/][/](-#'>[[|'@@'>[[|'@@'>[[|'@@'>[[|'@{body}lt;<(3<(~{body}lt;<(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]

https://www.youtube.com/watch?v=ghZ3iQQj0iI [1]