곁다리 이야기

해석 과정에서 나온 흥미로운 것들과 아직 모르는 것

日本語 | English | Français | Español | Italiano | 한국어

게임에 심어진 특수 코드

바코드의 결과는 모두 계산으로 정해진다 — 라고 말하고 싶지만, 딱 하나 그렇지 않은 패턴이 있다. 산포된 내부 레지스터가 특정 값과 일치하면 추첨도 능력치 계산도 건너뛰고 고정된 결과가 돌아온다. 그 패턴에 상품명과 함께 기록된 코드가 슈퍼 패미컴용 드래곤볼Z 초무투전의 4902425373737이다.

읽히면 초사이어인 손오공, HP 59000, BP 49990, DP 49990, 필살기 레벨 4가 나온다. BP·DP 49990은 정상 경로로는 불가능하다. 그쪽에서는 BP와 DP가 절반이 되어 상한이 48750과 49750이기 때문인데, 특수 코드는 그 계산을 통째로 건너뛰므로 절반 처리가 일어나지 않는다. 자사 게임을 산 아이들에게 주는 보상이었다고 읽고 싶어지지만, 개발자의 의도는 이 해석으로 알 수 없다. 말할 수 있는 것은 반다이 타이틀의 코드 하나가 특별 취급을 받았다는 사실이다.

앞의 두 자리와 체크 디지트는 판정에 쓰이지 않으므로, 앞자리를 바꾼 4502425373739(체크 디지트 재계산) 같은 코드도 같은 초사이어인 손오공을 낸다. 일반 코드로 도달 가능한 상한은 가장 강한 바코드 페이지에 있다.

프리저 3단계가 한 번도 나오지 않았던 이유

당시에 이 게임을 해본 사람이라면 프리저의 변신 형태가 도무지 나오지 않았던 기억이 있을 것이다. 해석은 그 기억에 숫자를 붙여준다. 3단계에는 다음이 전부 필요하다.

  1. 60장 중 1장인 프리저 1단계를 뽑을 것
  2. 그다음 세 능력치가 50000 / 26000 / 25000 이상일 것
  3. 동시에 60000 / 30000 / 30000에는 닿지 않을 것(닿으면 4단계로 넘어가 버린다)

임의의 바코드가 이 구간에 들어올 확률은 대략 8,000분의 1이다. 약 500건을 모은 선행 연구자가 「프리저 3단계는 알려진 패턴이 하나뿐」이라고 적은 것은 통계적으로 지극히 타당했다. 셀 3단계는 더 드물어 약 17,000분의 1이다. 캐릭터 표에서 이 형태들이 「상품명 기록 없음」으로 남아 있는 것도 같은 이유다.

카린님의 방. BARCODE DATA 창에 HP 50000, BP 50000, DP 25000의 프리저 3단계가 표시되어 있다.
프리저 3단계 — 8,000분의 1의 구간. 출처: 드래곤볼Z 격투천하제일무도회(반다이, 1992)의 게임 화면. 근거로서 인용.

어느 매대에서 사야 하나

JAN 코드의 앞 일곱 자리는 제조사를 나타낸다. 즉 제조사를 고르는 순간 나올 수 있는 결과의 범위가 정해진다. 상품 코드 부분(뒤 다섯 자리)을 전수 열거하면 다음과 같은 쇼핑 안내가 만들어진다.

원하는 것어디를 볼 것인가기대 확률
프리저와 셀삿포로 이치방(산요 식품, 4901734)약 7분의 1로 프리저 1단계, 약 40분의 1로 2단계
초사이어인들라이온 생활용품(4903301)약 25분의 1
아이템과 드래곤볼가오·라이온·산토리·닛신·롯데 등 일곱 번째 자리가 홀수인 곳약 2분의 1이 아이템 칸으로 떨어진다
HP 99500급 괴물세 번째 자리가 2·3·6·7인 소규모·취미·수입 계열 코드대형 내셔널 브랜드(4901–4903)는 구조적으로 HP 99500을 낼 수 없다

반대로 대형 제조사의 코드 중에는 프리저도 셀도 절대 나오지 않는 경우가 많다. 제조사 부분이 고정되면서 캐릭터 추첨에 쓰이는 비트가 불리하게 못 박히기 때문이다. 「프리저는 삿포로 이치방에서만 나온다」는 농담처럼 들리지만 사실이다.

이 확률은 특정 제조사의 상품 코드 10만 가지를 전수 열거해 얻은 이론값이다. 그중 실제 존재하는 상품에 해당하는 코드는 일부뿐이고 배정도 고르지 않으므로, 진짜 매대에서 만나는 비율은 이 숫자와 다르다. 어느 통로로 갈지 정하는 참고 정도로 보면 된다.

어긋난 기록들의 정체

선행 연구자들의 실측과 대조했을 때, 8자리 코드 18건 중 4건이 정확히 한 항목씩 어긋났다. 오랫동안 「원인 불명」으로 여기에 남아 있던 문제다. 게임에서 하나씩 재확인해 네 건 모두 결론이 났다. 전부 원자료의 오기였다.

한 건은 단순히 능력치를 잘못 옮겨 적은 것이고 코드 자체는 문제가 없었다. 흥미로운 것은 나머지 세 건으로, 기록된 숫자가 애초에 올바른 바코드가 아니었다. EAN-8에는 체크 디지트가 있고 데이터크의 리더는 이를 검사한다. 검사를 통과하지 못한 배열은 결과를 내지 못하고 판독 단계에서 거부된다. 그런데도 결과가 기록되어 있다는 것은, 당시 읽힌 무언가는 분명 읽을 수 있는 코드였다는 뜻이다.

세 건 각각에 대해 한 자리만 바꿔 유효해지는 후보를 찾자 매번 정확히 하나씩 나왔고, 세 건 모두 마지막 자리였다. 바로잡은 코드를 읽히니 기록된 캐릭터·HP·BP·DP·기술 레벨이 그대로 재현되었다. 결국 숫자를 잘못 옮겨 적은 것이다.

레벨 4 손오공에게서 관찰된 두 기술명, 원기옥과 계왕권도 같은 방법으로 결론이 났다. 당시 설명서에는 캐릭터마다 필살기 네 개가 실려 있는데, 손오공은 3이 계왕권, 4가 원기옥이다. 레벨 4에서 보인 계왕권은 초사이어인 손오공의 것이다. 승격한 캐릭터는 기술명 목록 자체가 다른 줄로 바뀐다. 「손오공·레벨 4·계왕권」으로 기록된 코드 세 개를 읽히니 원기옥이 표시되었다. 이것들도 오기였다. 기술명은 승격 후의 최종 캐릭터와 기술 레벨로 정해지며, 수수께끼의 분기 같은 것은 없다.

아직 모르는 것

누가 태어나고 능력치가 얼마인지, 즉 생성 규칙 자체는 전부 복원되었다. 남은 것은 표시 계층의 한 가지뿐이다.

실기와 판정 도구의 결과가 어긋나는 사례를 발견하면 꼭 알려주기 바란다. 알고리즘의 반례로서 가장 값진 정보다.