;================================================================; ;= __ _________ =; ;= _ /. \/ \ =; ;= / \ | | o----> | | \ \ =; ;= | | _ _ | _ \__/\||__ | |_ \ =; ;= | |/ \ /\ |^v^| /_\ | /_\ /\ |/\ || / / \ | =; ;= \_/ | | \/| | | \_ | \_ \/ | | -=(_)\_|| /| | =; ;= \(_)\ \_/ =; ;= \ \____ =; ;= \ =; ;= \____ =; ;= Shawn Lindberg 1998 =; ;= =; ;================================================================; ;This is an include file that will allow you to program games for ;the TI-83 which use 4 colors, 2 besides the standard black and ;white. Please do not modify this file, rather, if you find a ;problem, e-mail me. Of course, if you use this in your game, or ;if you use this to make your own greyscale system, give me ;credit. Happy coding! ; =) ; ;--Shawn Lindberg BuffClr: ld hl,$8265 ld de,$8266 ld bc,767 ld (hl),$0 ldir ret ChameleonOn: res statsvalid,(iy+statflags) ld hl,$8600 ld de,$8601 ld bc,256 ld (hl),$87 ldir ld hl,IntCham ld de,$8787 ld bc,IntChamEnd-IntCham+1 ldir xor a ld ($8785),a ld a,$86 ld i,a im 2 ret IntCham: ex af,af' exx in a,(3) bit 1,a jr z,IntChamDone ld hl,$8785 inc (hl) ld a,(hl) cp 3 jr nz,NotReset ld (hl),0 NotReset: ld hl,$8e29 dec a jr z,ChamPic1 ld hl,$8265 ChamPic1: ld a,7 call LCDBusy out ($10),a ld b,64 Bclcpy: push bc ld a,$0C0 sub b call LCDBusy out ($10),a ld a,$20 call LCDBusy out ($10),a ld b,12 Bcl2cpy: ld a,(hl) inc hl call LCDBusy out ($11),a djnz Bcl2cpy pop bc djnz Bclcpy ld a,5 call LCDBusy out ($10),a IntChamDone: jp $003A LCDBusy =$-IntCham+$8787 push af inc hl dec hl pop af ret IntChamEnd: Chameleon: ld ($877d),a ld a,e ld ($877e),a ld a,(ix) ld ($877f),a inc ix ld a,(ix) ld ($8780),a inc ix ld a,d cp 1 jr z,ChamDraw cp 2 jp z,ChamErase ChamDraw: ld a,2 ld de,$8e29 ChamDraw1: ld ($8783),a push de ld a,($877e) ld e,a ld a,($877d) ld hl,0 ld d,0 add hl,de add hl,de add hl,de add hl,hl add hl,hl ld d,0 ld e,a srl e srl e srl e add hl,de pop de add hl,de ld b,00000111b and b or a jr z,CDAlign ld d,a ld a,($877f) ld b,a ld a,($8780) ld c,a CDNoAli1: ld e,b push bc push hl CDNoAli2: ld b,(ix) ld c,0 push de CDNoAli2a: srl b rr c dec d jr nz,CDNoAli2a pop de ld a,b or (hl) ld (hl),a inc hl ld a,c or (hl) ld (hl),a inc ix dec e jr nz,CDNoAli2 CDNoAli3: pop hl ld bc,12 add hl,bc pop bc dec c jr nz,CDNoAli1 jr ChamDraw2 CDAlign: ld a,($877f) ld b,a ld a,($8780) ld c,a CDAli1: push bc push hl CDAli2: ld a,(ix) or (hl) ld (hl),a inc ix inc hl djnz CDAli2 pop hl ld bc,12 add hl,bc pop bc dec c jr nz,CDAli1 ChamDraw2: ld de,$8265 ld a,($8783) dec a jr nz,ChamDraw1 ret ChamErase: ld a,2 ld de,$8e29 ChamErase1: ld ($8783),a push de ld a,($877e) ld e,a ld a,($877d) ld hl,0 ld d,0 add hl,de add hl,de add hl,de add hl,hl add hl,hl ld d,0 ld e,a srl e srl e srl e add hl,de pop de add hl,de ld b,00000111b and b or a jr z,CEAlign ld d,a ld a,($877f) ld b,a ld a,($8780) ld c,a CENoAli1: ld e,b push bc push hl CENoAli2: ld b,(ix) ld c,0 push de CENoAli2a: srl b rr c dec d jr nz,CENoAli2a pop de ld a,b cpl and (hl) ld (hl),a inc hl ld a,c cpl and (hl) ld (hl),a inc ix dec e jr nz,CENoAli2 CENoAli3: pop hl ld bc,12 add hl,bc pop bc dec c jr nz,CENoAli1 jr ChamErase2 CEAlign: ld a,($877f) ld b,a ld a,($8780) ld c,a CEAli1: push bc push hl CEAli2: ld a,(ix) cpl and (hl) ld (hl),a inc ix inc hl djnz CEAli2 pop hl ld bc,12 add hl,bc pop bc dec c jr nz,CEAli1 ChamErase2: ld de,$8265 ld a,($8783) dec a jp nz,ChamErase1 ret