80년대 크랙 인트로 꿈을 Z80 어셈블리로 구현한 개발자
원제 Writing a Demoscene Intro for the ZX Spectrum
101 포인트댓글 17
Key Point
1980년대 해킹 문화에서 영감받은 개인 프로젝트가 30년 후 실제로 완성되었고, 저수준 Z80 어셈블리와 Spectrum의 기묘한 하드웨어 특성을 극복하는 과정이 자세히 기록되어 있다.
핵심 요약
- 저자가 ZX Spectrum 128KB용으로 완성한 데모씬 인트로는 스무스 스크롤텍스트, 3채널 AY 사운드, 바운싱 VU 미터, 패럭스 스타필드를 포함하며 총 10287바이트 코드(완성 테이프 이미지 19552바이트)로 이루어졌다.
- 1980년대 후반 친구 집에서 본 Amiga 크랙 인트로들(불법 소프트웨어 크래킹 그룹이 제작한 미니 데모)에 매료되었으나, 당시 ZX Spectrum으로는 흉내낼 수 없어 수십 년 후 직접 만들기로 결심했다.
- 개발 환경은 Makefile 기반 빌드, Pasmo 어셈블러, FUSE 에뮬레이터, 웹 기반 Z80 asm-editor 참고, 그리고 개와의 산책으로 문제를 해결하는 방식을 사용했다.
- Spectrum의 극도로 복잡한 화면 메모리 레이아웃이 가장 큰 도전이었다: 표준 비트맵 대신 3개 섹션의 인터리빙 행과 색상 속성 블록으로 구성되어 있고, 각 8x8 문자 셀은 2가지 색상만 표현 가능하다.
- 스크롤텍스트 구현을 위해 Z80의 RL(rotate left) 명령어를 활용해 한 프레임마다 256 바이트를 다시 그렸으며, 각 글자를 픽셀 단위로 한 줄씩 스트리밍하며 폰트 데이터에서 직접 비트를 조작했다.
- 문자 한 개를 화면에 완전히 표시하려면 8번 반복해서 픽셀을 이동시키는 과정을 거쳤으며, 이 같은 작업량은 Spectrum의 BASIC 인터프리터보다 어셈블리가 얼마나 빠른지 보여준다.
- 음악은 Amiga 트래커 모듈 포맷에서 영감을 받았으며, 트래커는 패턴 시리즈로 곡을 구성하고 각 노트 셀은 음정, 샘플, 볼륨·이펙트 등의 4바이트 정보를 담는다.
- 본문은 음악 부분에서 끝나며, 저자가 VU 미터 같은 추가 데모 이펙트를 구현했음을 언급한다.