칩의 핀맵을 알아내었고, 그에 맞게 ROM을 덤프할 수 있을 장치까지 완성하였다. 이제 실제로 ROM을 덤프하여 파일로 만들어낼 차례이다.
1. 목표
칩을 덤프하여 데이터를 파일로 추출한다.
2. 진행
2-1. 납땜
정말로 남은 일은 납땜 뿐이었다. Teensy와 칩을 하나하나 전선으로 이어주는 작업을 했다. 얇은 wire wrapping wire와 플럭스를 이용하여 칩에 살짝 인두를 대는 방식으로 납땜을 진행하였다.
![]() |
미리 잘라둔 전선 |
![]() |
절반을 납땜한 모습 |
![]() |
모든 핀을 납땜한 모습 |
![]() |
Teensy와의 연결도 완료한 모습 |
납땜을 진행하면서 헷갈리지 않도록 앞에 놔둔 폰에는 Teensy 핀맵을, 옆에 놔둔 노트북에는 Teensy 핀맵을 띄워두고 납땜하였다.
2-2. 덤핑
이제 모든 일의 결실을 확인할 수 있을 순간이 다가왔다. 과연 덤핑에 성공할까? 우려 반 기대 반으로 Teensy에 SD카드를 꽂고 시리얼 창을 열어 32를 입력하였다.
잠시후..
1분이 안되어 덤핑이 완료되었다. SD카드를 노트북에 꽂아 확인해보았다. 덤프된 ROM파일을 조심스레 바탕화면에 복사하고, NES의 그래픽을 편집할 수 있는 툴인 YYCHR로 파일을 열어보았다.
화면에 결과가 나왔다. 이걸 본 순간 머리에서 여태껏 한 일들이 스쳐갔다. 믿을 수 없었다.
이 시점에서 이 파일이 말해주는 바는 다음과 같았다.
- 칩 분리에 성공하였다.
- CHR-ROM이 맞았다.
- 핀맵의 주소 핀과 데이터 핀이 섞이지 않았다.
- 덤핑 장치가 잘 작동하였다.
혹시 A-1 핀의 납땜이 잘못 되었을까 확인해 보았다. 그러나 잘못된 점은 없었다. 그래서 몇 번 같은 방식으로 덤프를 다시 실행해 보았다. 결과는 똑같았다. 혹시 몰라 덤프가 진행중일 때 쓰이지 않는 데이터 핀을 스코프로 검사해 보았다. 데이터가 출력되고 있었다.
(나중에 따로 만든 이미지이다) |
![]() |
위쪽으로 새 전선을 납땜한 모습 |
![]() |
새 핀 배정 |
![]() |
즉석에서 추가한 코드 |
코드를 수정하는 일은 그리 어렵지 않았으나 새로운 핀을 납땜하는 일이 좀 힘들었다. 옆에 닿이면 그것까지 다시 납땜해야 했기 때문이다. 이런 실수를 최소화하기 위해 새로운 전선은 반대편으로 납땜했다. Teensy의 포트는 D33-D39, D14핀으로 배정했다. 이렇게 하고 보니 남은 디지털 핀이 두개밖에 없었다. (그래도 필요하다면 뒷면에 납땜할 순 있다)
작업을 완료하고 다시 덤프를 시도해 보았다.
이번에는 확실히 압축된 듯한 느낌이 없었다. 그리고 첫 화면의 타일들이 메뉴 글씨였다는 것도 발견하였다.
![]() |
(타일 배치를 변경하였다) |
하지만 이번에도 문제가 있었다. 글자들이 깨져 보였던 것이었다. 또 데이터가 손상된 것은 아니었을지 걱정이 스쳐갔다. 하지만 곧 규칙을 발견해 내었다.
![]() |
(배율이 엉망인건 넘어가자) |
4줄씩 수직으로 나누어, 맨 왼쪽 줄이 맨 오른쪽에서 삐져나와 반대편으로 이동한 모양이었다. 다른 말로 오른쪽으로 한칸씩 굴러간 셈이다. 참고로 사진의 문양은 팔각 도형안에 S자가 들어있는 문구이다. 1번 게임에서 거꾸로 2000번 게임으로 가면 붙어있던 문구였다. 아마 전부 후라피였던것 같다.(같은 게임을 가지고 레벨만 달리하여 2000개라 한게 맞다. 실제 게임은 120개 정도 된다.)
어쨌거나, NES가 그래픽을 저장하는 방식을 확인해 보면 두개의 비트플레인이 한줄씩 번갈아 가며 저장되어 있는 구조이다.
![]() |
(출처) |
그렇다는 말은 비트 단위에서 문제가 발생하였다는 것이다. ....그렇다는 말은 핀맵이 뭔가 잘못되었다는 말도 된다. 그래도 어떻게든 전체적인 핀의 위치가 맞아 데이터를 다 읽을 순 있으므로, 그 순서만을 제대로 하기 위해 Teensy가 비트를 처리하는 패턴을 바꾸었다.
정확히는 버퍼에 쓰는 패턴을 바꾸어 코드를 수정하는데, 좀 헷갈렸다. 하지만 코드를 잘 보면 0~2번 비트는 버퍼의 1~3번 비트로 들어가고, 마지막 3번 비트는 버퍼의 0번 비트로 들어가 잘못된 비트 순서를 잡아주는걸 확인할 수 있다. 사실 필자도 좀 헷갈려 두번째에 성공했다.
![]() |
(드디어 성공!?) |
마침내 온전한 모양의 글씨들이 모습을 드러냈다. 마침내!!
내 손으로 직접 덤핑한 롬을 자랑스럽게 둘러보았다. 앞쪽에는 메뉴 글씨가 잔뜩 있었고, 그 뒤로 게임 그래픽이 주욱 있었다. 메뉴와 게임 그래픽이 섞인 부분도 있었다. 파일의 거의 마지막에는 0xFF으로 가득 차 있는 부분이 있었다. 그런데 또, 여기서 다른 문제점을 발견하고야 말았다.
![]() |
(아크느디라오드?) |
![]() |
실제 알카노이드 타이틀 로고 |
이번에는 타일의 순서가 잘못된 것이 눈에 들어왔다. 알카노이드의 로고인데, 완전 섞여버렸다. 바로 위의 알파벳 배열도 섞여져 있는 것이 눈에 들어왔다.
3. 결론
칩과 Teensy를 연결해 내부 ROM의 덤프를 하였다. 다만, 데이터의 순서가 섞여 있어 수정이 필요하다.
이런 와중에, 다른 터틀몬 어드벤처 게임기가 도착하였다. 미처 덤프하지 못한 PRG-ROM을 덤프할 수 있을 것이다. 다음 글에서는 이 PRG-ROM을 덤프하도록 하겠다.
6부에서 계속....
댓글 없음:
댓글 쓰기