0 Members and 1 Guest are viewing this topic.
relocate($F6F6)F: di_ push af push de push bc push hl ld a, (frameage) inc a ld (frameage),a cp 1 jr z, doregular cp 3 jr z, dogray cp 4 jr nz, EndInterrupt xor a ld (frameage), a jr EndInterruptdoregular: ld hl, regularbuffer call safecopy2 jr EndInterruptdogray: ld hl, grayscalebuffer call safecopy2 EndInterrupt: pop hl pop bc pop de ld a, %00001000 out (3), a ld a, %00001010 out (3), a pop af ei retSafeCopy: ;ld hl, plotsscreensafecopy2: ld c,$10 ld a,$80setrow: in b,(c) rl b jp c,setrow out ($10),a ld de,12 ld a,$20col: in b,(c) rl b jp c,col out ($10),a push af inc c ld b,64row:rowwait: in a,($10) rla jp c,rowwait ld a, (hl) out (c), a add hl,de dec b jp nz, rowwait pop af dec h dec h dec h dec c inc hl inc a cp $2c jp nz,col ret
It looks like you're trying to do grayscale like this (warning epilepsy ), but usually we do grayscale like this, which blends together much better. We can't reliably synchronize with the LCD on the TI-83+, plus we usually can't update the screen quickly enough to keep up anyway.
I guess what you're saying is it doesn't work if I have two buffers where pixels alternate in a checkboard pattern?
EDIT: Oh, it's because no matter how fast or how slow you refresh the screen RAM, it displays 60 times a second. I missed that part.
I guess what you're saying is it doesn't work if I have two buffers where pixels alternate in a checkboard pattern?EDIT: Oh, it's because no matter how fast or how slow you refresh the screen RAM, it displays 60 times a second. I missed that part.
Quote from: Hot_Dog on August 28, 2011, 10:59:24 pmI guess what you're saying is it doesn't work if I have two buffers where pixels alternate in a checkboard pattern?EDIT: Oh, it's because no matter how fast or how slow you refresh the screen RAM, it displays 60 times a second. I missed that part.You can keep the buffers how they are, but you should combine them in such a way that it takes 2 pixels from the dark buffer, 1 pixel from the light buffer, 2 pixels from the dark buffer, 1 pixel from the light buffer, etc. This can be done with some clever bitmasking. You'll have to do 3 screen updates before the pattern repeats itself.
Quote from: calc84maniac on August 28, 2011, 11:51:34 pmQuote from: Hot_Dog on August 28, 2011, 10:59:24 pmI guess what you're saying is it doesn't work if I have two buffers where pixels alternate in a checkboard pattern?EDIT: Oh, it's because no matter how fast or how slow you refresh the screen RAM, it displays 60 times a second. I missed that part.You can keep the buffers how they are, but you should combine them in such a way that it takes 2 pixels from the dark buffer, 1 pixel from the light buffer, 2 pixels from the dark buffer, 1 pixel from the light buffer, etc. This can be done with some clever bitmasking. You'll have to do 3 screen updates before the pattern repeats itself.I'm only doing 3-color grayscale. I think my problem is the screen refresh.