출력할 문구의 유니코드 값을 얻는다
한글의 유니코드 값을 롬에 입력
짠~
처리량 : 1 글자 / 1 tick
지연시간 : 12 tick
팩토리오 게임 속에서 좀 그럴싸하게 한글을 표현할 수는 없을까라는 고민을 하다가 아래의 글을 보게됨
https://bakyeono.net/post/2013-12-03-clojure-hangul-bitmap-font.html
한글 비트맵 폰트 출력 | 박연오한글 비트맵 폰트 출력 | 박연오bakyeono.net한번 보고 나니까 할만해 보이더라고
원래 한글은 초성19개*중성21개*종성28개=11,172개로 이루어져있고 이걸 전부다 폰트로 구현하려면 16*16픽셀의 폰트를 사용한다해도
11,172*32Byte=350KB의 비트맵 저장용 ROM 필요해진단 말임
상수조합기가 20*4Byte =80Byte를 저장할수 있다는 것을 생각하면 4,480개의 상수조합기가 필요하단 소리가 되는데 이건 아무래도 너무 부피가 커진다
하지만 아래의 방법을 이용하면?
초성 19개*8벌=152개
중성 21개*4벌=84개
종성 28개*4벌=112개
348개의 글자만 비트맵으로 저장해두면 상황에 맞게 조합해서 모든 글자를 렌더링 할 수 있게 된다.
기존의 11,172개에서 약 3%가량으로 줄어들었고 이러면 필요한 상수조합기도 이론상 대충 140개면 충분하단 뜻
그래서 구현한게 아래 회로
사실 지금 회로 대회에서 만들 것을 요구하는 Lookup table도 여기에서 쓰이는 테이블이다
중성과 종성이 주어졌을때 그때 맞는 초성은 몇 벌을 써야하는지 알아내기 위한 테이블이였던것 ㅋㅋ
아무래도 16x16픽셀이라 복잡한 글자는 읽기 힘든 면이 있지만 그래도 이게 어디인가
이런식으로 한글 렌더링 하기위한 폰트도 찾아보니 이것저것 있는데 더 가독성이 좋은게 뭐가 있는지도 한번 시도 해보려고함
https://github.com/TandyRum1024/hangul-johab-render-gms/tree/master/fonts/DKB_HAN
일단 지금 위 링크에서 SOMANG이란 폰트 주워다가 해봤음
이런 폰트용 이미지를 입력으로 넣으면 청사진으로 바꿔주는 스크립트도 따로 만들었음
폰트 저장용 일정신호 조합기 하나하나가 이런 식으로 설정 되어있는데 이걸 172개를 하나하나 손으로 설정하는건 사람이 할 짓이 아니니 자동화는 선택이 아니라 필수다...
아래는 NEO 둥근모 적용. 괜찮네
청사진 공유는 좀 더 가다듬어서 버전 올리면 그 때 할 것 같음
궁극적으로는 글자 흐르는 전광판이라던지 터미널 자체를 구현하는게 목표
회로 참 재밌다
https://neodgm.dalgona.dev/
마침 네오둥근모 비트맵도 가지고있어서 바로 적용해봤는데 괜찮네 ㅋㅋ
이게 무슨 ㅋㅋㅋㅋㅋㅋ
놀라서 욕이 나오는데 욕을 할 수도 없고 대단하다..
와 씨 개쩌네 진짜
와 ㅅㅂㅋㅋㅋㅋㅋㅋㅋㅋㅋ