Re: A86: Need Help! Level Maps!


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

Re: A86: Need Help! Level Maps!




Ok, I failed again.  However I know I came close. Here's the
source I came up with.  I'd appeciate it if someone would
show me my mistake.  What I did in my game is the same thing
Matt and David did. (Use a byte per block).

-- 
Tercero	 --  Email: mailto:tercero@busprod.com

"The stone the builders rejected has become the capstone;"
			--Psalms 118:22
"Everyone who falls on that stone will be broken to pieces,
but he on whom it falls will be crushed."
			--Luke 20:18

#include "asm86.h"
#include "ti86asm.inc"

.org _asm_exec_ram

Start:
	call _clrLCD
	ld a, 15
Loop:
	ld d, a                 ;save a for later
	ld hl, Level1           ;point to data
	ld b, 0                 ;\
	ld c, a                 ; > do an easy addition
	add hl, bc              ;/
	ld a, (hl)              ;get the first byte of data
	ld b, 8
	or a
ShiftLoop:
	sra a
	call nz, DispBlock
	djnz ShiftLoop
	ld a, d
	dec a
	jp nz, Loop
	ret

DispBlock:
	push af
	push bc
	push de
	push hl
	ld hl, $0000
	dec b
	ld h, b
	ld a, d
	and $01
	cp 1
	jp z, Padone
	ld a, 8
	add a, h
	ld h, a
Padone:
	ld l, d
	srl l
	ld de, Block
	call AlignSprite
	pop hl
	pop de
	pop bc
	pop af
	ret

;Data______________________________________________
Level1:
	.db %11111111,%11111111
	.db %10000000,%00000001
	.db %10001100,%00110001
	.db %10000000,%00000001
	.db %10010000,%00001001
	.db %10001111,%11110001
	.db %10000000,%00000001
	.db %11111111,%11111111

Block:  .db %11111111,%10000001,%10111101,%10100101
	.db %10100101,%10111101,%10000001,%11111111

;AlignSprite_____________________
;Input: DE = Sprite Address     |
;       H = X-Coord (0-15)      |
;       L = Y-Coord (0-7)       |
;Output: Sprite drawn to screen |
;Destroyed: none                |
;--------------------------------
AlignSprite:
	push af
	push bc
	push de
	push hl
	ld a, h
	ld h, l        
	ld l, a
	sla l
	srl h
	rr l
	ld bc, $FC00
	add hl, bc
	ld b, 8
ASpriteLoop:
	ld a, (de)
	ld (hl), a
	inc de
	ld a, 16
	add a, l
	ld l, a
	jp nc, ASNoinc
	inc h
ASNoinc:
	djnz ASpriteLoop
	pop hl                  ;\
	pop de                  ; \
	pop bc                  ;  > cleanup and goodbye
	pop af                  ; /
	ret                     ;/

.end


Follow-Ups: References: