A85: I need help with this code!
[Prev][Next][Index][Thread]
A85: I need help with this code!
    I have been working on some code for Usgard 1.5. It is
supposed to move a 16 by 8 sprite across the screen when you
press the arrows. when you press exit it should quit. When
you run it nothing happens. If you press exit a couple of
times the calc freezes and displays garbage, eventualy
shutting off. What is wrong? The code is below and attached.
#include "usgard.h"                      ; ROM_CALLs Galore!
.org 0                                   ; Need this
.db "Sprite Test",0                      ; Sprite test
Pos            =TEXT_MEM                 ; Bin pos
   ld          a, 4                      ; Set Video Mode
   out         (5), a
   ld           a, 60
   ld           (Pos), a
GameLoop:
   call         &EraseSprite
   halt                                  ; save some power
   call         GET_KEY
   cp           K_LEFT
   jr           z, MoveLeft              ; Is it left?
   cp           K_RIGHT
   jr           z, MoveRight             ; Is it right?
   cp           K_EXIT
   ret          z
   call         &DrawBin
   jr           GameLoop
MoveLeft:
   ld           a, (Pos)
   dec          a
   dec          a
   jr           z, GameLoop
   ld           (Pos), a
   jr           GameLoop
MoveRight:
   ld           a, (Pos)
   inc          a
   inc          a
   cp           112
   jr           nc, GameLoop
   ld           (Pos), a
   jr           GameLoop
DrawBin:
   ld          a, (Pos)                  ; Load x pos
   ld          b, a
   ld          c, 30                     ; Load y pos
   ld          hl, &Bin1                 ; Load sprite
   #fncall PSPR_NR
   ld          a, b                      ; Load offset
   add         a, 8
   ld          b, a
   ld          c, 30                     ; Load y pos
   ld          hl, &Bin2                 ; Load sprite
   #fncall PSPR_NR
   ret
EraseSprite:
   ld          a, (Pos)                  ; Load x pos
   ld          b, a
   ld          c, 30                     ; Load y pos
   ld          hl, &Blank                ; Load sprite
   #fncall PSPR_NR
   ld          a, b                      ; Load offset
   add         a, 8
   ld          b, a
   ld          c, 30                     ; Load y pos
   ld          hl, &Blank                ; Load sprite
   #fncall PSPR_NR
   ret
Bin1:
   .db        8,8
   .db        %11111111
   .db        %11111111
   .db        %11111111
   .db        %11111111
   .db        %11111111
   .db        %01111111
   .db        %00111111
   .db        %00001111
Bin2:
   .db        8,8
   .db        %11111111
   .db        %11111111
   .db        %11111111
   .db        %11111111
   .db        %11111111
   .db        %11111110
   .db        %11111100
   .db        %11110000
Blank:
   .db        8,8
   .db        %00000000
   .db        %00000000
   .db        %00000000
   .db        %00000000
   .db        %00000000
   .db        %00000000
   .db        %00000000
   .db        %00000000
.end
------------------------------------------------------------
---------
Michael Cook
MBCook@MBCook.com (website related)
MBCook@Concentric.net (general)
Digi02@aol.com (checked once per month)
------------------------------------------------------------
---------
www.MBCook.com
spritest.asm