[A83] Re: Help!
[Prev][Next][Index][Thread]
[A83] Re: Help!
Yes, you have to write the letters to the graph buffer. You do that by setting 7,(iy+20) before you call _vputs. But make sure you reset that flag again before your program exits, because the TIOS expects it to be reset.
> ----------------------------------------
> From: Maarten Z. <m021085@hotmail.com>
> Sent: Sat Sep 08 09:20:01 GMT+02:00 2001
> To: <assembly-83@lists.ticalc.org>
> Subject: [A83] Help!
>
>
>
> I have problems with a program I am currently making. It first draws a Line
> and some text on the screen. After that there is an animation of a tiny
> spaceship flying by. But when the ship flies by, the letters are erased(do I
> have to write the letters to the graphbuffer?), and I used Movax routine but
> the ship leaves set bits on it's way so it isn't erased, anyone know what to
> do?
> Code:
>
> ..NOLIST ;Necessary stuff,
> #define end .end
> #define END .end
> #define equ .equ
> #define EQU .equ
> #include "ti83asm.inc"
> #include "tokens.inc"
> ..LIST
> #DEFINE shipx 8265h
> #DEFINE shipy 8266h
>
> KClear .equ 191
> ..org 9327h ; Begin
> progstart:
> call _clrLCDFull
> ld hl,256*0+1 ; in the routine
> ld (pencol),hl
> ld hl,nameandversion
> call _vputs
> ld b,0
> ld c,56
> ld d,94
> ld e,56
> ld h,1
> call _Iline
> ld a,0
> ld (shipx),a
> ld a,20
> ld (shipy),a
> clearloop:
> ld a,0ffh
> out (1),a
> ld a, 0fdh
> out (1),a
> in a,(1)
> cp KClear
> jp z, startgame
> flyship:
> ld a,(shipx)
> inc a
> ld (shipx),a
> call drawship
> jr clearloop
> drawship:
> ld a,(shipy)
> ld e,a
> ld a,(shipx)
> ld bc,ship ;Load sprite name to bc
> call SPRXOR ;Call movax' Sprite Routine
> call _grbufcpy_v
> ret
>
>
> startgame:
> ret
> ship:
> .db %00000000
> .db %00000000
> .db %10000000
> .db %01110110
> .db %10001001
> .db %11111111
> .db %00000000
> .db %00000000
>
> ;Hannes sprite routine, XOR.
>
> SPRXOR:
>
> push bc ; Save sprite address
>
> ;==== Calculate the address in graphbuf ====
>
> ld hl,0 ; Do y*12
> ld d,0
> add hl,de
> add hl,de
> add hl,de
>
> add hl,hl
> add hl,hl
>
> ld d,0 ; Do x/8
> ld e,a
> srl e
> srl e
> srl e
> add hl,de
>
> ld de,8e29h
> add hl,de ; Add address to graphbuf
>
> ld b,00000111b ; Get the remainder of x/8
> and b
> cp 0 ; Is this sprite aligned to 8*n,y?
> jp z,ALIGN
>
>
> ;==== Non aligned sprite blit starts here ====
>
> pop ix ; ix->sprite
> ld d,a ; d=how many bits to shift each line
>
> ld e,8 ; Line loop
> LILOP: ld b,(ix+0) ; Get sprite data
>
> ld c,0 ; Shift loop
> push de
> SHLOP: srl b
> rr c
> dec d
> jp nz,SHLOP
> pop de
>
> ld a,b ; Write line to graphbuf
> xor (hl)
> ld (hl),a
>
> inc hl
> ld a,c
> xor (hl)
> ld (hl),a
>
> ld bc,11 ; Calculate next line address
> add hl,bc
> inc ix ; Inc spritepointer
>
> dec e
> jp nz,LILOP ; Next line
>
> jp DONE1
>
>
> ;==== Aligned sprite blit starts here ====
>
> ALIGN: ; Blit an aligned sprite to graphbuf
> pop de ; de->sprite
>
> ld b,8
> ALOP1: ld a,(de)
> xor (hl)
> ld (hl),a
> inc de
> push bc
> ld bc,12
> add hl,bc
> pop bc
> djnz ALOP1
>
> DONE1:
> ret
>
> nameandversion:
> .db "Ultimate Bomber v 0.11",0
>
> ..end
> END
>
> ----------------------------------------------------------
> "If I have seen farther than others, it is because I was standing on the
> shoulders of giants." - scientist Sir Isaac Newton, in a letter to his
> colleague Robert Hooke, February 1676.
>
>
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp
>
>
>
-----------------------------------------------------
Mail.be, Free WebMail and Virtual Office
http://www.mail.be