Discussion:
BoulderDash
(too old to reply)
Kerr-Mudd, John
2023-12-02 20:49:16 UTC
Permalink
Dos game in <256 bytes

Code based on James David Chapmans' BD3, not that much of it remains.

Move man with csr keys, eat all jewels to open exit, don't let boulders
(or jewels) drop on your head! Shoving boulders sideways (if space beyond)
implemented. Space bar to restart level. No butterflys or timer or anything
cleverer!

Uses int 21 for STDIN file read of cavern map, int 16 for kbd input.

Usage: BD<Cave.map


-> d 100 l100
16AD:0100 40 CD 10 B7-B8 53 07 0E-1F B4 3F 31-DB B9 1A 04 @....S....?1....
16AD:0110 BA F9 01 CD-21 91 E3 46-06 1F 31 FF-31 ED 89 D6 ....!..F..1.1...
16AD:0120 52 B9 E8 03-2E AC 2C 20-72 FA 98 D0-E0 93 2E 8B R....., r.......
16AD:0130 87 EB 01 3C-02 75 02 89-FA 3C 04 75-01 45 3C 58 ...<.u...<.u.E<X
16AD:0140 75 04 89 3E-D2 07 AB E2-DB 89 D7 5A-B4 01 CD 16 u..>.......Z....
16AD:0150 75 FA B4 00-CD 16 3C 20-74 C0 3C 1B-75 01 C3 88 u.....< t.<.u...
16AD:0160 E0 C6 05 20-BB 50 00 A8-01 74 02 B3-02 3C 4C 77 ... .P...t...<Lw
16AD:0170 02 F7 DB 8B-01 3D 58 2E-74 8D 3C 4F-75 12 F6 C3 .....=X.t.<Ou...
16AD:0180 02 74 22 53-D1 E3 80 39-20 75 02 89-01 5B 74 13 .t"S...9 u...[t.
16AD:0190 A8 40 75 11-3C 04 75 0B-4D 75 08 8B-36 D2 07 46 ***@u.<.u.Mu..6..F
16AD:01A0 C6 04 2E 01-DF C7 05 02-0E 31 F6 B9-E8 03 AD A8 .........1......
16AD:01B0 04 74 33 BB-FE FF 38 44-4E 75 07 4B-4B 80 38 20 .t3...8DNu.KK.8
16AD:01C0 75 1F 80 78-50 20 75 19-C6 44 FE 20-89 40 50 80 u..xP u..D. ***@P.
16AD:01D0 B8 A0 00 02-75 D3 C6 40-50 20 C6 80-A1 00 0C 8C ***@P ......
16AD:01E0 DF 83 C3 04-74 D7 E2 C6-E9 61 FF 20-07 B0 06 DB ....t....a. ....
16AD:01F0 01 4F 07 04-02 02 0E 58-4E 00 00 00-00 00 00 00 .O.....XN.......
-> q

Single Level example, can have more
Cave.map:

""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""
"!!!!!! !!$!# !!!!!#!#!!!!!!! !!!!#!!!!"
"!#%#!!!!!! !!!!!!!!!#$!!#!!!! !!!!! !!"
"!!!!!!!!!! !!#!!!!!#!#!!#!!!!!!!!#!!!!"
"#!##!!!!!!!!!#!!!!!!#!!#!!!!#!!!#!!!!!"
"#! #!!!!!!!!! #!!#!!!!!!!!#!!!!!!#!##!"
"!!! !!!!!!!!!!!#!!!!!#! #!!!!!!!!#!##!"
"""""""""""""""""""""""""""""""!!!#!!#!"
"! !!!#!!$! !!#!#!!!!!!!!!$!#!$!!!!!! !"
"!!$!!!!!#!!!!! !!!!!!!## #!!!#!!!!#!!!"
"!!!#!!#!#!!!!!!!!!!!!!# !#!!!#!!!!!!!!"
"!!#!!!!#!!!!!!!!###!!!!!!!#!! !$!!!!#!"
"!$!! !!#! !!!!!#!#$!!$!!!!#!!!#!!$! !"
"! #!!!!!!!!!!!!!# #!!#!!!!!!!!!$!!!!!#"
"!!!!!!!!"""""""""""""""""""""""""""""""
" #!!!!!!!!!#!!!$!!!!#!!!!!#!!!#!!!!!!!"
" #!!!!!!!!! #!!#!!!!!!!!#!!!!!!#!##!!&"
"! !!#!!!!!!!!#!!!!!#! !!!!$!!!#!##!!!"
"!!!!#$!!#!!!!!!!!#!!!!!!!!#$!!!!!!#!!!"
"!!!!!!#! !!#!##!!!!!!!!!!!#$!!!!!! !!#"
"!$!!!! !!!!! !!!!!!!!!!!!!!#!!!!#!!!#!"
""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""
--
Bah, and indeed Humbug.
Kerr-Mudd, John
2023-12-08 16:12:28 UTC
Permalink
On Sat, 2 Dec 2023 20:49:16 +0000
Post by Kerr-Mudd, John
Dos game in <256 bytes
Code based on James David Chapmans' BD3, not that much of it remains.
Move man with csr keys, eat all jewels to open exit, don't let boulders
(or jewels) drop on your head! Shoving boulders sideways (if space beyond)
implemented. Space bar to restart level.
[]
Post by Kerr-Mudd, John
Uses int 21 for STDIN file read of cavern map, int 16 for kbd input.
Usage: BD<Caves.map
Version 2, now with a timer; much more exciting! up to 99s to complete
each level.

You must collect all jewels to open the Exit and get there before the
timer runs out. (it expires on rollover from 00 to 99, so 1 more sec than
on the clock, however you lose the 1st clock tick immediately).

Known Side-effects:
Can restart on most keys, (don't use tab).
Can shove boulders up as well as sideways.

BD.DMP:

-> d 100 l100
16AD:0100 40 CD 10 B7-B8 53 07 53-1F B4 3F 31-DB B9 1A 04 @....S.S..?1....
16AD:0110 BA D0 07 89-D6 CD 21 91-E3 11 31 FF-B9 1A 04 AC ......!...1.....
16AD:0120 3C 28 73 1E-2C 20 72 1B-D0 E0 88 C3-2E 8B 87 EE <(s., r.........
16AD:0130 01 3C 02 75-01 57 3C 04-75 02 FE 07-3C 40 75 02 .<.u.W<.u...<@u.
16AD:0140 89 FD AB E2-DA 5F B3 06-B4 02 CD 1A-38 37 74 11 ....._......87t.
16AD:0150 88 37 4B 4B-74 D5 B0 39-86 07 48 3C-2F 74 F3 88 .7KKt..9..H</t..
16AD:0160 07 B4 01 CD-16 74 DF 98-CD 16 3C 1B-77 AC 74 BB .....t....<.w.t.
16AD:0170 88 05 B3 50-F6 C4 01 74-02 B3 02 80-FC 4C 77 02 ...P...t.....Lw.
16AD:0180 F7 DB 8B 01-3C 3F 74 81-3C 04 75 0A-FE 0E 08 00 ....<?t.<.u.....
16AD:0190 75 04 3E FE-4E 00 99 3C-4F 75 0C 53-D1 E3 38 31 u.>.N..<Ou.S..81
16AD:01A0 75 02 89 01-5B 74 04 A8-40 75 02 01-DF C7 05 02 u...[***@u......
16AD:01B0 0E 31 F6 B9-E8 03 AD A8-04 74 2E BB-FE FF 38 44 .1.......t....8D
16AD:01C0 4E 75 06 4B-4B 38 30 75-1B 38 70 50-75 16 88 74 Nu.KK80u.8pPu..t
16AD:01D0 FE 8D 58 50-89 07 80 7F-50 02 75 D5-88 37 C6 47 ..XP...P.u..7.G
16AD:01E0 51 0C 8C C7-83 C3 04 74-DC E2 CB E9-58 FF 00 07 Q......t....X...
16AD:01F0 B0 06 DB 03-4F 07 04 02-02 0E 40 0D-00 00 00 00 ***@.....
-> q

CAVES.MAP:

47'' ASCII BoulderDash for DOS "
""""""""""""""""""""""""""""""""""""""""
""""""""""" Example Level """"""""""""""
""""""""""""""""""""""""""""""""""""""""
"!!!!!! !!$!# !!!!!#!#!!!!!!! !!!!#!!!!"
"!#%#!!!!!! !!!!!!!!!#$!!#!!!! !!!!! !!"
"!!!!!!!!!! !!#!!!!!#!#!!#!!!!!!!!#!!!!"
"#!##!!!!!!!!!#!!!!!!#!!#!!!!#!!!#!!!!!"
"#! #!!!!!!!!! #!!#!!!!!!!!#!!!!!!#!##!"
"!!! !!!!!!!!!!!#!!!!!#! #!!!!!!!!#!##!"
"""""""""""""""""""""""""""""""!!!#!!#!"
"! !!!#!!$! !!#!#!!!!!!!!!$!#!$!!!!!! !"
"!!$!!!!!#!!!!! !!!!!!!## #!!!#!!!!#!!!"
"!!!#!!#!#!!!!!!!!!!!!!# !#!!!#!!!!!!!!"
"!!#!!!!#!!!!!!!!###!!!!!!!#!! !$!!!!#!"
"!$!! !!#! !!!!!#!#$!!$!!!!#!!!#!!$! !"
"! #!!!!!!!!!!!!!# #!!#!!!!!!!!!$!!!!!#"
"!!!!!!!!"""""""""""""""""""""""""""""""
" #!!!!!!!!!#!!!$!!!!#!!!!!#!!!#!!!!!!!"
" #!!!!!!!!! #!!#!!!!!!!!#!!!!!!#!##!!&"
"! !!#!!!!!!!!#!!!!!#! !!!!$!!!#!##!!!"
"!!!!#$!!#!!!!!!!!#!!!!!!!!#$!!!!!!#!!!"
"!!!!!!#! !!#!##!!!!!!!!!!!#$!!!!!! !!#"
"!$!!!! !!!!! !!!!!!!!!!!!!!#!!!!#!!!#!"
""""""""""""""""""""""""""""""""""""""""


Map "editing":

The top left corner of the Map holds the time limit - must be " nn''"
Need a char prior to the countdown number to set the colour
i.e. make it visible (it's a White Empty character). Also for the
timer to timeout the high digit must be in col2. col3 for the low digit,
next is the saved current second value (hidden) and then the
hardcoded position for the Jewelcount (also hidden).

If putting words in the header lines note that some letters will drop if
there are empty spaces below.
More than 1 player start position per map will crash the program.

Key to Map:
(space)=White Empty
!=Brown Earth
"=Cyan Block
#=White Boulder
$=Green Jewel
&=Closed Exit
%=Player's Start Position
'=hidden 0 (Empty)
--
Bah, and indeed Humbug.
Loading...