development
황당버그 - Crash Bandicoot 게임
주먹불끈
2023. 6. 3. 22:02
개요
한 번쯤 들어보았던 황당한 버그들 모음이 있어 시간 날 때마다 하나씩 정리해본다
- 전체 링크: https://beza1e1.tuxen.de/lore/
- 원문 링크: Crash Bandicoot: https://beza1e1.tuxen.de/lore/crash_bandicoot.html
내용
Crash Bandicoot 이라는 비디오 게임을 만들면서 생겼던 버그 이야기
게임 진행을 메모리 카드에 저장하는데 어쩌다 한번씩 저장을 실패하고, 심지어는 메모리 카드를 날려버렸다.
디버깅
- 관련이 있어보이는 코드를 하나씩, 하나씩 제거하고, 가짜(stub) 코드로 대체해 나감
- 최후의 최후까지 하다보니 프로그래밍이 가능한 타이머의 클락을 기본값인 100Hz에서 1kHz로 바꾼 것이 남았음
- 리드 프로그래머인 동료가 좀더 정확한 중력 묘사를 위해 높여두었던 것
- 1kHz로 두었다가 메모리 카드 로드/저장시에만 100Hz로 잠시 돌려놓도록 했더니 문제가 사라짐
- 하지만 아직도 원인은 알 수 없었는데, 우연히도 메모리 카드 관련 작업중 컨트롤러를 만지면 문제가 생기는 것을 알아냄
- 일본의 하드웨어 엔지니어와 연락하여 테스트 코드를 주고 확인시켰더니 하드웨어 문제임을 확인함
원인
하드웨어 문제였기에 정확한 원인은 알 수 없지만 보드의 각 부분간의 혼선으로 보인다. 즉, 1kHz로 클락을 올린 상태에서 메모리 카드와 컨트롤러 양쪽에서 데이터를 보내면 문제가 생겼던 것이다.
반응형