Re: A86: bomberman mapping


[Prev][Next][Index][Thread]

Re: A86: bomberman mapping



I would discourage this approach because of its size.  The code I would 
use is this:

;de points to the level you want to load.
LoadLevel:
     ld   hl, LevelBuffer
     ld   c, 16        ;16 bytes
NewByte:
     ld   b, 4
     ld   a, (de)
     inc  de
InnerLoop:
     ld   (hl), 0
     RLA
     RL   (hl)
     RLA
     RL   (hl)
     inc  hl
     DJNZ InnerLoop
     dec  c
     jr   NZ, NewByte
     ret
Level1:
.db  %01010101, %01010101
.db  %01000001, %00010001
.db  %01000111, %00010001
.db  %01000101, %00010001
.db  %01000000, %00000001
.db  %01000001, $01000001
.db  %01000001, %01000001
.db  %01010101, %01010101
Level Buffer: <<64 bytes>>

Steve86Asm@aol.com (Steve86Asm@aol.com) wrote:
>The 1st really woudn't be that hard.  You could use just the buffer, rather
>than the map whenever you reference it.
>
>For example, if each map is 8x8 and you have 1 byte per square (not too
>familiar with bomberman, but aren't there more than just 1 type of block?),
>maybe something like this:
>Level1:
> .db 1,1,1,1,1,1,1,1
> .db 1,0,0,1,0,1,0,1
> .db 1,0,1,2,0,1,0,1
> .db 1,0,1,1,0,1,0,1
> .db 1,0,0,0,0,0,0,1
> .db 1,0,0,1,1,0,0,1
> .db 1,0,0,1,1,0,0,1
> .db 1,1,1,1,1,1,1,1
>LevelBuffer:
> .db 0,0,0,0,0,0,0,0
>  ;(7 more times)
>
>then you could use this code to load the level:
>
> ld hl,Level1              ;source
> ld de,LevelBuffer      ;destination
> ld bc,64                  ;# bytes
> ldir
>
>and then use LevelBuffer when you reference the level.


James Yopp
jyopp@pobox.com
"Time is the fire in which we burn."