void DrawString(SDL_Renderer* renderer, const char* txt, int x, int y) {
static uint64_t font[] = {0x7cfc3cfcfefe3cc6,0x7e7ec6c0c6c67cfc,0x7cfc7cfcc6c6c6c6,0xccfe187c0000600c,0x0000c6c666c6c0c0,
0x66c61818ccc0eee6,0xc6c6c6c6c630c6c6,0xc6c6cc0618c60000,0x30180000c6c6c0c6,0xc0c0c0c61818d8c0,0xfef6c6c6c6c6c030,
0xc6c6c66ccc0c1806,0x00001830fc00fefc,0xc0c6f8f8c0fe1818,0xf0c0d6dec6c6c6c6,0x7030c6c6c6387818,0x180c00000c600000,
0xc6c6c0c6c0c0cec6,0x1818d8c0c6cec6fc,0xc6fc1c30c6c6d66c,0x3030181800000c60,0x0000c6c6c0c6c0c0,0xc2c61818ccc0c6c6,
0xc6c0c6c60630c6c6,0xfec6306018300000,0x1830fc00c6c666c6,0xc0c066c61818c6c0,0xc6c6c6c0ccc6c630,0xc66ceec630c00000,
0x180830180000c6fc,0x3cfcfec03cc67e70,0xc6fec6c67cc07ac6,0x7c307c38c6c630fe,0x18301818600c0000,0x0c0000007c187c7c,
0xccfe7cfe7c7c7c30,0x467c6c000000d8c0,0xe0e060c030c03060,0x3c3c0c000000c638,0xc6c6ccc0c606c6c6,0xc678e6d66c00c0c0,
0xd8c0c060c0606060,0x30604242183000cc,0xc6180606ccc0c006,0xc6c6c6cc4cd0fe00,0xc0c04840c060c060,0x6060303099991830,
0x00ccd6180c1cfe7c,0xfc0c7c7e6c001870,0x6c6c00009080c060,0xc060c0303030a1a5,0x30fcfc30d6181806,0x0c06c618c6063000,
0x301c6cd800000000,0xc060c06060603018,0xa1a5303000ccc618,0x30060c06c630c606,0xd8006416fe00c040,0x0000c060c0606060,
0x3018999d603000cc,0xc61860c60cc6c630,0xc6c6cc00ced66c00,0xc0c00000c060c060,0x6060300c42466000,0x00007c3cfe7c0c7c,
0x7c307c7c7600c47c,0x6c0000000000e0e0,0x60c030c0300c3c3c};
static const char* font_mapping = "abcdefghijklmnopqrstuvwxyz!?.,><= /+-*0123456789&^%$#~:;\"'[](){}|\\`@";
static SDL_Surface* font_surface = NULL;
static SDL_Texture* font_texture = NULL;
if (!font_surface) {
font_surface = SDL_CreateRGBSurfaceWithFormat(0, 272, 16, 32, SDL_PIXELFORMAT_ABGR8888);
for (int i = 0; i < 272 * 16; i++)
((uint32_t*)font_surface->pixels)[i] = ((font[i >> 6] >> (63 - (i & 63))) & 1) * 0xFFFFFFFF;
font_texture = SDL_CreateTextureFromSurface(renderer, font_surface);
}
for (int i = 0; i < strlen(txt); i++) {
const char* pos = strchr(font_mapping, tolower(txt[i]));
size_t ci = pos ? pos - font_mapping : 0;
SDL_Rect src_rect = {(ci % 34) * 8, (ci / 34) * 8, 8, 8};
SDL_Rect dst_rect = {x + i * 8, y, 8, 8};
SDL_RenderCopy(renderer, font_texture, &src_rect, &dst_rect);
}
}
I made a dumb silly simple thing.
Oh also there's a slightly more useful endpoint
which just returns your IP as a raw text string. I know there are infinite sites like this but I just think it's fun.
The instructions are the last resort.
welp, the time has come. my personal website is long overdue a redesign and i started working on it recently.
for now i'm not gonna share any code or screenshots, cause everything is still kind of messy, but the base idea i have is a kind of mask design, with three columns showing the same logo shape but with different style of logo and background and separate content for each. one column per major hobby category.
i'm kind of broken between making it interactive or more of a static page design - i even wrote a whole overengineered parallax tilt&move component which looks great, but right now i'm basically scrapping that to have pure CSS stuff. okay not entirely pure, i'm also trying out new stuff a bit more, like scss.
it's pretty fun so far, and i'm not just aimlessly wandering around - i still have some diverging ideas i could go with for each column (cause i'm trying to make each one unique), but unlike last time i know exactly what i want to do for the core design, and that it's achievable.
i'll send updates when it's at a very-early-wip-works-okay state.
played around with scss and gsap for the past couple of days, both are pretty cute, but i decided the effects i wanna go for inside the columns will need some more flair so fuck it im gonna go with three fiber again
i have decided that i wanna have my creative freedom back so i went back on the previous decision. the page is now extremely heavy, but doesn't have even a touch of js.
static site is out :3
Here's a new rhythm game I'm working on. I haven't announced this anywhere else, so keep this between you and me, alright? :P
"The universe itself has an unlimited supply of generosity and surprise built in, and as designers we only need to keep our eyes open to what is here."