A89: HELP!!!
[Prev][Next][Index][Thread]
A89: HELP!!!
I've started working on Lode Runner for the 89/92plus, but I'm stuck on this
one routine. It's supposed to read a byte from LevelData, draw the
appropriate sprite, and loop back to draw the next sprite. The problem is
that it's drawing the first sprite correctly, then drawing all Bricks (#1)
afterwards (It's doing something like 21111111111... when it SHOULD do
210210210210210...)! There's one line which I think may be causing the
problem, but I'm not really sure where it is -- and I've been working at
this for a few days. Can someone try to find why the routine won't work?
Thanks!
--------------------START OF PROGRAM------------
include "..\doors\tios.h"
include "..\doors\graphlib.h"
include "..\doors\userlib.h"
xdef _ti89
xdef _main
xdef _comment
_main:
DrawLevel:
jsr graphlib::clr_scr ;Clear Screen
move.l #LevelData,a5 ;Point a5 to Level Data
move.w #0,d0 ;PutSprite starting X (0)
move.w #0,d1 ;PutSprite starting Y (0)
move.b #%11111111,d3 ;PutSprite Constant Mask (%11111111)
move.b #19,d4 ;Number of times to loop (20-1)
DrawLevel_Row: ;Begin Row
move.b (a5),d6 ;Move byte from location in a5 to d6
cmp #0,d6 ;If 0, Draw Space
beq DrawLevel_Space ;
cmp #1,d6 ;If 1, Draw Brick
beq DrawLevel_Brick ;
cmp #2,d6 ;If 2, Draw Player
beq DrawLevel_Player ;
move.l #Space,a0 ;If Other (??) Draw Space
DrawLevel_Continue: ;Return Here
jsr graphlib::put_sprite_mask ;Draw Sprite
add.b #10,d0 ;Increase X coord with 10
add.b #10,d1 ;Increase Y coord with 10
add.l #1,a5 * ;Point a5 to next byte (PROBLEM LINE???)
dbra d4,DrawLevel_Row ;Decrease d4, loop until -1
jsr userlib::idle_loop ;Wait for Keypress
rts ;Exit
DrawLevel_Space:
move.l #Space,a0
jmp DrawLevel_Continue
DrawLevel_Brick:
move.l #Brick,a0
jmp DrawLevel_Continue
DrawLevel_Player:
move.l #Player,a0
jmp DrawLevel_Continue
Space:
dc.w 8,1
dc.b %00000000
dc.b %00000000
dc.b %00000000
dc.b %00000000
dc.b %00000000
dc.b %00000000
dc.b %00000000
dc.b %00000000
Brick:
dc.w 8,1
dc.b %11111111
dc.b %01010101
dc.b %11111111
dc.b %10101010
dc.b %11111111
dc.b %01010101
dc.b %11111111
dc.b %10101010
Player:
dc.w 8,1
dc.b %00111100
dc.b %01011010
dc.b %00111100
dc.b %00011000
dc.b %01111110
dc.b %00011000
dc.b %00100100
dc.b %01100110
LevelData:
;----------------------------------------------------------------+
;Col: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20|
;----------------------------------------------------------------+ Row:
dc.b 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1| ;01
dc.b 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1| ;02
dc.b 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1| ;03
dc.b 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1| ;04
dc.b 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1| ;05
dc.b 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1| ;06
dc.b 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1| ;07
dc.b 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1| ;08
dc.b 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1| ;09
dc.b 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1| ;10
;----------------------------------------------------------------+
_comment:
dc.b "Lode Runner v0.x",0
end
---------------------END OF PROGRAM-------------
Follow-Ups: