Commodore 64를 핀 단위로 시뮬레이션하는 하드웨어 시뮬레이터 공개
원제 The Commodore 64 hardware simulator: break chips and pins, see the results
132 포인트댓글 22
Key Point
실제 칩을 제거하거나 손상시킬 위험 없이 고장난 Commodore 64의 원인을 하드웨어 수준에서 진단하고 탐구할 수 있는 오픈소스 도구가 공개되었다.
핵심 요약
- antirez가 Commodore 64 ASSY 250407 마더보드를 핀 단위로 시뮬레이션하는 프로그램 c64-hw-sim을 GitHub에 공개했다.
- 칩의 다리를 들어올리거나 그라운드/+5V에 단락시키거나, 칩을 소켓에서 빼거나, 저항을 개방할 수 있으며 그 결과를 모니터, 키보드, 보드의 모든 신호로 확인할 수 있다.
- 프로그램은 PCB의 전기 연결(네트리스트)과 각 칩의 핀 동작을 알고 있으며, 손상된 부품을 시뮬레이션하면 화면의 잡음도 회로 계산에서 나온 것이다.
- 고장난 C64의 원인을 추측하고 시뮬레이션해서 실제 칩을 제거하기 전에 단서를 얻을 수 있으며, 실제 하드웨어를 손상시킬 위험 없이 C64의 동작을 깊이 있게 배울 수 있다.
- Apple M3 Max에서 실시간의 31%, AMD Ryzen AI Max+ PRO 495에서 39%, Apple M5 Max에서 48% 속도로 시뮬레이션되므로 게임 에뮬레이터로는 적합하지 않다.
- macOS와 Linux(X11)에서 OpenGL로 동작하며, 보드, 모니터, 제어 패널, 오실로스코프를 포함한 윈도우를 표시한다.
- 사용자는 핀을 클릭해서 오실로스코프에 올리거나 부유/GND 단락/+5V 단락으로 설정할 수 있고, 칩을 클릭해서 빼거나, 저항·페라이트 비드·수정을 개방할 수 있다.
- headless 모드에서는 --fault 옵션으로 고장을 입력해서 프레임 단위로 실행하고 모니터 화면을 텍스트로 읽거나 PNG로 저장할 수 있다.
- tools/kicad2c.py가 KiCad 레플리카를 C 테이블로 변환하고, 각 핀은 강한 드라이브, 약한 드라이브(풀업), 전원 단락, 또는 드라이브 없음으로 설정된다.
- 전압이 없는 칩은 정지하고, GND가 없는 칩의 출력은 부유하며, CMOS 칩은 핀의 보호 다이오드를 통한 유령 전력으로 동작한다.
- src/parts.c는 글루 로직, ROM, DRAM(행은 /RAS에 래치, 열은 /CAS에 래치), 색상 RAM, PLA를 핀 단위로 모델링한다.
- 6510, VIC-II, CIA, SID는 floooh의 사이클 정확 코어를 사용하며, 각 코어는 핀만 보는 소켓에 앉아 있다.
- 부동 소수점과 전원 모델은 형태는 맞지만 임계값, 드리프트 시간, 크로스톡 같은 수치는 추측이며, 비디오 출력, SID 필터, 전원 공급, 도트 클록 PLL은 시뮬레이션되지 않는다.
- DRAM 셀 고장이나 느린 칩, 두 네트 간 브리지 같은 칩 내부 고장은 계획 중이지만 아직 구현되지 않았다.