https://gigglehd.com/gg/bbs/4824445
이렇게 해서 자기 버블이 어떻게 움직이고 버블 메모리가 어떻게 동작하는지 아셨을 겁니다.
사실 이외에 중요하게 다뤄야 할 것 중엔 배드 루프를 어떻게 회피하여 데이터를 기록하는지가 있으나, 제가 여기에 대한 지식이 부족한 관계로 앞으로 몇 년간 차차 적어가겠습니다.
1984년 코나미는 버블 시스템을 발표합니다. GX400기판을 베이스로 하는 이 시스템은 당시 비쌌던 UVEPROM을 사용하는 대신 버블 메모리를 사용함으로 원가 절감을 하고, 추후 4메가비트까지 확장 가능한 기능을 갖췄습니다.
80년대 초반 버블 메모리는 이미 쫑났으므로, 옛날 기술을 싸다고 갖다 쓴 셈입니다.
그런데 이것은 코나미의 큰 실책이었습니다. 버블 메모리 카트리지는 카트리지대로 원가절감이 이루어져 컨트롤러가 죄다 빠지는 통에 단순히 데이터 출력장치 그 이상 이하도 아니었습니다. 버블 메모리다운 제어를 못 하게 된 겁니다. 따라서 에러에 취약할 수밖에 없는 구조였습니다.
당시에도 이 고장은 기판 리비전에 따라 잦아, 얼마 있지 않아 버블 메모리 카트리지를 교체해 주던 서비스는 종료되고, 1메가비트짜리 EPROM이 두 개 실린 기판으로 갈아주는 것으로 AS를 대신하게 되었습니다.
이게 그라디우스의 개정판으로, 일옥에서 천만원이 넘어갑니다. 물론, 해외에도 수량이 좀 있어 컬렉터를 설득하면 300만원선에서 구할 수 있을지도 모릅니다.
그런데 마메로 다 들어왔기 때문에, 저같이 버블 메모리 기판만을 대상으로 하는 사람은 마메로 즐기면 됩니다.
저렇게 호기롭게 홍보하던 버블 시스템이 영 아니라는 것을 안 코나미는, 해외판은 전부 EPROM으로 바꿔서 내버립니다. 따라서 모닝 뮤직은 나오지 않습니다.
코나미 버블 메모리 카트리지 내부입니다.
왼쪽에 불쑥 솟은 오실레이터와 그 밑의 칩이 타이밍 관련 IC입니다. 타이밍 제네레이터로, 단순히 데이터를 타이밍에 맞춰 내보내는 역할을 합니다. 버블 시스템은 능동적으로 섹터를 찾는다든지 하는 기능이 없습니다. 애초에 컨트롤러를 빼고 넣었기 때문에, 외부에서 들어오는 신호대로 그냥 데이터를 내보낼 뿐입니다.
가운데 저항 두 개는 오락실 환경에서 적당한 온도를 만들어주는 저항입니다. 아마 적당한 온도가 되면 READY신호를 기판으로 보내(CPU는 이것과 관련 없음) 데이터의 전송을 알립니다.
저기 검은색 정사각형 두개는 후지쯔의 1메가비트 버블 메모리 2개입니다. ODD와 EVEN입니다.
このメモリのムカつくのはY信号のDutyが1:1じゃ無い上にDATが一見エッジに同期していそうに見える辺り。実際はDuty1:1相当で取り込まないとダメ。エッジで変化するデータはfake。#バブルメモリ日記 pic.twitter.com/VKsoSIvKRv
— きんのじ (@v9938) 2018년 8월 1일
ODD와 EVEN은 각각 1비트의 데이터 라인을 갖고 있습니다. 1바이트의 데이터 전송 시, 10us간격으로 ODD 1비트+EVEN 1비트 합 2비트 묶음을 4번 전송하여 총 40us가 걸립니다. 그러나 이 데이터는 반전으로, 본래 11이 나가야 한다면 00을 내보내는 식입니다. NOT게이트를 붙여야 원래 정상적인 데이터가 나옵니다.
カセット無しでBootセクターのエミュレーションは出来た!ちょっと動作を勘違いしていたところも有ったのでダンプ側も修正が必要。これでカスタムチップの解析が進むぜ #バブルメモリ日記 pic.twitter.com/8rGJzgFa7Y
— きんのじ (@v9938) 2018년 8월 19일
코나미 버블 메모리에는 부트 섹터가 있어, 초반에 부팅에 필요한 데이터와 버블 메모리의 에러 맵(이전 게시글 참조)을 CPU로 보냅니다. 이 데이터를 전송한 후 뒤이어 유저 섹터를 전송하는데, 1섹터의 데이터는 128바이트라고 합니다. 이것을 전송할 때, 전송하기 전 active low인 Chip Select신호와, X, Y신호를 받아서 아직 알지 못하는 타이밍을 맞추며 데이터를 보내게 됩니다.
이외에, 버블 메모리에 나름대로 체크섬 기능과 섹터 번호를 CPU로 전송하는 기능이 있는 것 같습니다만, 이건 나중에 연재할 [버블 시스템 에뮬레이터 n부작] 으로 공을 넘기겠습니다.
버블 시스템은 중2 이후로 7년간 호기심을 자극하고 있는데, 빠른 시일 내에 기판을 구해, 트윈비의 에뮬레이팅에 성공했으면 좋겠습니다. 가장 좋은 건, 버블 메모리 카트리지에는 정보를 처리하는 기능이 거의 없어 그냥 클럭이나 보내주면 데이터를 타이밍 맞춰 보낼 뿐이라는 겁니다. 이렇게 되면 접근하기 쉽습니다.
롬파일과 소스, PCB거버요? 모두 오픈입니다. 제가 이 프로젝트를 진행하기 시작한 이유는, 저 에뮬레이터가 작동되는 버블 시스템을 갖고 있는 사람을 대상으로 한 것이고, 제작자가 롬파일을 공유하지도 않고 추출할 수 있는 기능조차 삭제한 채 발매하어 성질이 돋아 직접 개발해 인터넷에 뿌려버릴 생각을 했다는 것입니다. 이것만 성공하면 죽어 있는 수많은 버블 메모리 기판을 살릴 수 있겠죠.
학교에서 베릴로그 진도를 막 나가기 시작했는데, 이게 제 첫 번째 FPGA프로젝트가 될 것 같네요.
2. 진짜 예전부터 궁금하던건데, 왜 롬은 홀수와 짝수로 나눠져 있나요?
3. 버블시스템에서 모닝뮤직이 나오기 전, 저항체가 발열할때 음성으로 'Presented by konami' 라고 나온 뒤 음성으로 카운트다운을 시작하는데, 만약 이 카운트다운이 다 끝나면 (끝나도록 레디 신호가 보내지지 않으면) 어떻게 되요?
3.2. 저항체 발열시 음성 카운트다운을 하는데, 이때 나오는 화면은 기기마다 다 다른 이상한 랜덤 화면이잖아요. 왜 이런 화면이 나오는 건가요? 당시 기술력의 한계로 버블시스템 준비중 화면을 출력할 수 없어서 이런 선택을 한거 같은데, 왜 꼭 이런 이상하고 컬러풀한 화면이죠?
4. 버블 시스템에 문제가 생기면, 카운트다운도 멈춰버리나요? 아니면 카운트다운 00에서 안 넘어가나요?