diff --git a/firmware/l0dable/nick_scr0ll.c b/firmware/l0dable/nick_scr0ll.c new file mode 100644 index 0000000..8279436 --- /dev/null +++ b/firmware/l0dable/nick_scr0ll.c @@ -0,0 +1,95 @@ +#include + +#include "basic/basic.h" + +#include "lcd/print.h" +#include "lcd/render.h" +#include "lcd/display.h" + +#include "basic/config.h" + +#include "usetable.h" + +#define one ((uint32_t)1) + +typedef uint8_t uchar; + +static unsigned long iter=0; + +void ram(void) { + getInputWaitRelease(); + + static int nickx=2,nicky=10; + signed char movy=1; + static int nickwidth,nickheight; + static int nickoff=10; + static char delay=10; + static char speedmode=0; + static char LCDSHIFTX_EVERY_N=2; + static char LCDSHIFTY_EVERY_N=2; + + lcdClear(); + setExtFont(GLOBAL(nickfont)); + + nickheight=getFontHeight(); + nicky=(RESY-getFontHeight())/2; + + nickwidth=DoString(nickx,nicky,GLOBAL(nickname)); + if(nickwidth<50)nickoff=30; + + char stepmode=0; + while (1) { + lcdDisplay(); + lcdClear(); + // draw_area(); // xor life pattern again to restore original display content + // Old shift code. Can't handle longer Nicks... + // if(iter%LCDSHIFT_EVERY_N==0) lcdShift(1,-2,1); + // if(iter%LCDSHIFT_EVERY_N==0) { nickx=(nickx+1)%100-nickwidth; nicky=(nicky+1)%50;} + if(iter%LCDSHIFTX_EVERY_N==0) { nickx--; + if(nickx<(-1*nickwidth-nickoff))nickx=0; } + // if(iter%LCDSHIFTY_EVERY_N==0) { nicky+=movy; + // if(nicky<1 || nicky>RESY-nickheight) movy*=-1; } + DoString(nickx,nicky,GLOBAL(nickname)); + DoString(nickx+nickwidth+nickoff,nicky,GLOBAL(nickname)); + if(nickwidth