Re: A89: Another easy one
[Prev][Next][Index][Thread]
Re: A89: Another easy one
after bsr anim_sprite, after you returned, you branch to IOH, and it ends
main, shouldn't you bra to main again?
i probably wrong myself.
Thanks,
Rob Smith
At 08:10 PM 12/29/99 -0500, you wrote:
>Ok, I fixed the 1111 error (I don't know why, but it stopped.) Now, I've got
>a different problem. I can't seem to read keys. I've tried a few different
>methods; I can't get any to work. Here's the source as it is now. The
>problems: It fires immediately when I start the prgm, after I press a key on
>the "You Lost" screen, it returns to moving the target, when the target
>reaches the bottom, the "You lost" screen freezes, and I get address errors
>and illegal instructions periodically. I must be doing something really,
>really wrong... Please help me!
>
>;libraries
> include "doorsos.h"
> include "userlib.h"
> include "graphlib.h"
>
>;definitions
> xdef _main
> xdef _comment
> xdef _ti89
>
>;main program
>_main:
> move.l $300000,d0
> cmp.l #$4E56FFCC,d0
> beq v1_00_rom
> cmp.l #$77044EB9,d0
> beq v1_05_rom
> bra other_rom
>
>Go:
> move.l #3840,-(a7)
> jsr doorsos::HeapAlloc ;Allocate 3840 bytes
> addq.l #4,a7
> or.w d0,d0
> beq exit_prgm ;Check that memory was allocated
> move.w d0,vid_handle
> doorsos::DEREF d0,a0
> move.l a0,vid_addr
> eor.l d0,d0 ;clear d0
> move.l d0,x_pos
> move.l d0,y_pos
> move.l #88,Bullet
> bsr anim_sprite
> bra IOH
>
>v1_00_rom:
> move.b #$00,d0
> bra found_rom
>
>v1_05_rom:
> move.b #$01,d0
> bra found_rom
>
>other_rom:
> bra err
>
>found_rom
> move.b d0,rom_ver
> bra Go
>
>err:
> jsr graphlib::clr_scr
> move.w #4,-(a7)
> pea rom(pc)
> move.w #0,-(a7)
> move.w #0,-(a7)
> jsr doorsos::DrawStrXY
> lea 10(a7),a7
> jsr userlib::idle_loop
> bra IOH
>
>anim_sprite:
> bsr ClearBuffer
> move.l y_pos,d1
> move.l x_pos,d0
> lea target(pc),a0
> bsr PutSprite ;draw target
> move.l Bullet,d1
> move.l #76,d0
> lea shot(pc),a0
> bsr PutSprite ;draw bullet
> bsr CopyBufferToScreen
> bsr Updatex
> bsr UpdateBullet
> cmp #88,Bullet
> beq Checkkeys
> bra anim_sprite
> rts
>
>Updatex:
> move.l x_pos,d0
> addq.l #1,d0
> move.l d0,x_pos
> cmp #152,d0
> beq Updatey
> rts
>
>Updatey:
> move.l y_pos,d1
> addq.l #8,d1
> move.l d1,y_pos
> move.l #0,x_pos
> cmp #88,d1
> beq Lose
> rts
>
>UpdateBullet:
> move.l Bullet,d1
> cmp #92,d1
> bne MoveBullet
> rts
>
>MoveBullet:
> subq.l #1,d1
> move.l d1,Bullet
> move.l y_pos,d2
> addq.l #7,d2
> cmp d1,d2
> beq CheckHit
> cmp #0,d1
> beq Lose
> rts
>
>CheckHit:
> cmp #76,x_pos
> ble Checkhitb
> rts
>
>Checkhitb:
> cmp #76,x_pos
> bge win
> rts
>
>Checkkeys:
> move.b rom_ver,d0
> cmp.b #$00,d0
> beq v1_00_key
> cmp #13,d0
> beq Fire
> rts
>
>v1_05_key:
> eor.w d0,d0
> tst.w doorsos::kb_vars+$1c+4
> beq done_check
> move.w doorsos::kb_vars+$1e+4,d0
> clr.w doorsos::kb_vars+$1c+4
> bsr done_check
> rts
>
>v1_00_key
> eor.w d0,d0
> tst.w doorsos::kb_vars+$1c
> beq done_check
> move.w doorsos::kb_vars+$1e,d0
> clr.w doorsos::kb_vars+$1c
> bsr done_check
> rts
>
>done_check
> rts
>
>Fire:
> move.l #87,Bullet
> rts
>
>exit_prgm:
> jsr graphlib::clr_scr
> move.w #4,-(a7)
> pea mem(pc)
> move.w #0,-(a7)
> move.w #0,-(a7)
> jsr doorsos::DrawStrXY
> lea 10(a7),a7
> jsr userlib::idle_loop
> bra IOH
>
>Lose:
> jsr graphlib::clr_scr
> move.w #4,-(a7)
> pea lost(pc)
> move.w #0,-(a7)
> move.w #0,-(a7)
> jsr doorsos::DrawStrXY
> lea 10(a7),a7
> jsr userlib::idle_loop
> bra IOH
>
>win:
> jsr graphlib::clr_scr
> move.w #4,-(a7)
> pea won(pc)
> move.w #0,-(a7)
> move.w #0,-(a7)
> jsr doorsos::DrawStrXY
> lea 10(a7),a7
> jsr userlib::idle_loop
> bra IOH
>
>ClearBuffer:
> move.l vid_addr,a0
> eor.l d0,d0
> move.l #959,d1
>
>clear_buffer:
> move.l d0,(a0)
> addq #4,a0
> dbra d1,clear_buffer
> rts
>
>CopyBufferToScreen:
> move.l vid_addr,a0
> lea doorsos::main_lcd,a1
> move.l #3839,d1
>
>copy_buffer:
> move.b (a0),d0
> move.b d0,(a1)
> addq #1,a0
> addq #1,a1
> dbra d1,copy_buffer
> rts
>
>PutSprite:
> move.l vid_addr,a1
> mulu #30,d1
> adda.l d1,a1
> move.w d0,d1
> lsr.w #3,d1
> adda.l d1,a1
> andi.l #%111,d0
> moveq #7,d2
>
>draw_a_row:
> eor d1,d1
> move.b (a0),d1
> ror.w d0,d1
> or.b d1,(a1)
> addq #1,a1
> rol.w #8,d1
> or.b d1,(a1)
> adda.l #29,a1
> addq #1,a0
> dbra d2,draw_a_row
> rts
>
>IOH:
> move.w vid_handle,-(a7)
> jsr doorsos::HeapFree
> addq.l #2,a7
> rts
>
>;strings
>_comment:
> dc.b "Archer By Grant Elliott",0
>won:
> dc.b "Congratulations",0
>lost:
> dc.b "You Lost",0
>mem:
> dc.b "Not Enough Memory",0
>rom:
> dc.b "Invalid Rom",0
>
>;variables
>rom_ver:
> dc.b 0
>Bullet:
> dc.w 88
>y_pos:
> dc.l 0
>x_pos:
> dc.l 0
>vid_addr:
> dc.l 0
>vid_handle:
> dc.w 0
>
>
>;sprites
>target:
> dc.b %11111111
> dc.b %10000001
> dc.b %10011001
> dc.b %10111101
> dc.b %10111101
> dc.b %10011001
> dc.b %10000001
> dc.b %11111111
>
>shot:
> dc.b %00011000
> dc.b %00111100
> dc.b %00111100
> dc.b %00111100
> dc.b %00111100
> dc.b %00111100
> dc.b %00111100
> dc.b %00111100
>
> end
>
> Grant Elliott
> <A
>HREF="http://www.crosswinds.net/~proganon">Programmers Anonymous</A>
__________________________________________
NetZero - Defenders of the Free World
Get your FREE Internet Access and Email at
http://www.netzero.net/download/index.html
References: