Well, my approach here is based on shaders via images and I am using an the HQX upscaler. The ideal way to do it is via vector graphics, the kind that you can infinitely zoom in and they never look blocky. Think of .svg and I hope you get what I mean. I wish you luck, I am currently working on university related things and I had to postpone my grand strategy endeavors temporarily. I would like to make an implementation from scratch at some point and make it public.