Retro Game & PC/매뉴얼 팁 작업

Apple2 Bitmap Image to HGR Binary Data

smores 2024. 9. 8. 19:30

애플 그래픽스의 메모리맵 시작 어드레스 계산에 애를 먹어서 계속 실패하다가 아예 책에 나온 24줄의 HGR 페이지 1 시작 어드레스를 가져다가 사용해서 성공했다. -_-

 

어렸을때 주로 녹색 모노크롬 모니터를 썼기에 컬러모니터에서의 컬러블리딩에 대해선 느낌을 잘 모른다. 그리고 컬러쪽의 HGR 바이너리 데이터를 만드는 유틸리티들은 다양하게 공개되어 있다. 하지만 애초에 그림 자체를 먼저 흑백 dithered image 로 깔끔하게 만들어서 그대로 HGR 바이너리로 바꾸는 것은 잘 안보이는 것 같아서 그 목적으로만 파이썬으로 스크립트를 작성해 보았다.

 

Img 2 BWdither 2 HGR.zip
0.51MB

 

 

우선 192 라인 시작 어드레스 계산을 하는 코드와 그 안에 커맨트로 애플2 베이식으로 HGR 페이지 1 에서 라인 바이 라인으로 선을 긋는 테스트 코드.

calc_hgr_startpos.py
0.00MB

 

이 192라인 시작 어드레스를 사용하고, Python pillow 의 picture resize 및 B/W dithering 기능을 이용하여 그림을 먼저 애플 해상도인 280x192 에 맞추어 변환후 이를 HGR에 로딩할 수 있는 바이너리로 바꾸는 예제.

IMG_BWdither_HGR.py
0.00MB

 

예제들을 포함한 디스크 이미지 (DOS 3.3)

D-1.dsk
0.14MB

 

 

바이너리 데이터는 CiderPress 로 넣는 것이 편하다. 다만 이 경우 확장자에 #060000 을 붙이고, add 옵션을 두가지 설정한 상태로 하면 확실히 된다. (왜그런진 잘 모르지만, 이미 다른 디스크 이미지들에 있는 바이너리를 넣고 빼는 식으로 테스트하면서 알게됨)

 

# for using CiderPress, add #060000 at the end of the file name
# CiderPress: mouse right click > add
#   add options
#    - User file attribute preservation tags
#    - Convert text files by file type

 

디스크를 부팅한 후 다음 명령어로 그림 확인 가능

HGR: POKE -16302,0: BLOAD P1.HGR,A$2000

 

 

애초에 컬러 디더링이 아니기에 컬러 화면에선 좀 보기 그렇다. 

 

컬러 디더링은 이미 알려진 유틸리티를 사용하는 것이 낫다.