1P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • 아케이드 게임 Street Fighter II의 부제 ‘World Warrior’가 출시 직전까지 ‘World Warrier’로 오타가 있었던 일화를 다룸
  • 그래픽 디자이너 Akiman이 GFX ROM이 이미 굽혀진 상태에서 수정이 불가능하자, 스프라이트 조합으로 ‘e’를 ‘o’처럼 보이게 조정
  • 그는 ‘World’의 일부 타일을 재활용해 ‘ier’을 대체했지만, 그 결과 ‘The World Warrlor’ 라는 새로운 문제를 낳음
  • 이후 Guile의 종아리 타일(0x96) 을 활용해 픽셀 단위로 ‘l’의 윗부분을 잘라 ‘i’처럼 보이게 하는 임시 수정을 완성
  • 이 수정은 이후 버전에서 정식으로 교체되었으며, 게임 개발의 세밀한 기술적 대응과 창의적 문제 해결을 보여줌

오타 발견과 수정의 시작

  • Street Fighter II의 부제 ‘World Warrior’가 ‘World Warrier’로 잘못 표기된 사실이 출시 3일 전 발견됨
    • Akiman은 “끔찍한 실수를 발견했다”고 회상하며, 이미 GFX ROM이 굽혀져 수정이 불가능했다고 설명
  • GFX ROM은 그래픽 데이터를, 68000 ROM은 명령어를 저장하며, 그래픽 ROM은 수정 불가 상태였음
  • Akiman은 스프라이트를 겹쳐서 ‘e’를 ‘o’처럼 보이게 하는 방법을 시도해 시각적 수정을 구현

타일 교체를 통한 임시 해결

  • 로고는 16개의 타일(0xC8~0xDF)로 구성되어 있었으며, Akiman은 마지막 세 타일(0xDD~0xDF)을 제거하고 0xCD, 0xCE로 교체
  • 이로 인해 ‘World Warrier’가 ‘World Warrlor’로 바뀌었지만, ‘l’이 ‘i’처럼 보이지 않는 문제가 남음
  • 68000 CPU는 타일을 직접 수정할 수 없기 때문에, 픽셀 단위의 조정이 필요했음

Guile 타일을 이용한 픽셀 수정

  • 해결의 열쇠는 Guile 캐릭터의 종아리 타일(0x96) 에 있었음
    • 해당 타일은 왼쪽 하단에 단 하나의 픽셀만 표시되어 있었음
  • 68000 CPU는 팔레트를 자유롭게 선택할 수 있었고, Guile의 팔레트와 로고 팔레트를 비교해 색상 차이를 활용
    • Guile 팔레트의 인덱스 14는 짙은 초록색, 로고 팔레트에서는 짙은 파란색이었음
  • 이 타일을 로고 팔레트로 사용해 255픽셀은 투명, 1픽셀만 ‘연필’처럼 활용
    • 세 번의 드로우 명령으로 ‘l’의 윗부분을 잘라내 ‘i’의 점처럼 보이게 함

결과와 후속 버전

  • 이 임시 수정 덕분에 최종 화면에서는 ‘World Warrior’로 보이게 완성
  • 이후 버전에서는 올바른 ‘IOR’ 타일 세트가 포함되었으나, 부제가 ‘Champion Edition’, ‘Hyper Fighting’으로 변경되어 사용되지 않음

기술적 의의

  • 이 사례는 ROM 기반 아케이드 하드웨어의 제약 속에서도 창의적 문제 해결이 가능함을 보여줌
  • 단일 픽셀을 활용한 수정은 정교한 그래픽 제어와 하드웨어 이해의 결합 사례로 평가됨
  • 오타 수정 과정은 게임 개발의 세밀한 디버깅과 실무적 대응력을 상징하는 일화로 남음
Hacker News 의견들
  • 진짜 소셜 미디어는 오락실이었음
    스포츠센터에서 볼링공 굴러가는 소리 사이로, 내 게임 캐비닛이 어떤 건지 바로 알 수 있었음
    사람들은 둘러서서 구경하고, 농담하고, 집중과 환호가 오가는 공간이었음
    한동안 조이스틱을 잡은 아이에게 잠시 존경심이 쏟아지다가, 완벽한 드래곤펀치 한 방으로 왕좌가 바뀌는 순간 모두가 환호했음
    동전을 다시 올려놓고 다음 차례를 기다리며 낯선 이들과 도파민을 공유하던 시절이었음
    지금은 세상 그 어느 때보다 연결되어 있지만, 정작 서로 멀어진 느낌임

    • 중학교 앞 아시아 상점에서 방과 후에 친구들과 Street Fighter를 몇 시간씩 했던 기억이 있음
      베트남 전쟁 이후 이주한 몽족 2세대 친구들과 함께 놀았고, 나는 Ken을, 그들은 Ryu를 골랐음
      서로 기술을 가르쳐주며 경쟁하고 웃던 그 시간들이 진짜 사회적 교류의 수업이었음
      사립학교에 다니던 친구들은 이런 경험을 놓쳤을지도 모름
    • 스페인에서는 이런 문화가 거의 없었음
      SF2가 오락실에 있었지만 대전보다는 1인 플레이 위주였음
      한 판이 너무 비싸서 다들 협력하며 싱글플레이를 즐겼고, Gauntlet이나 Knights of the Round 같은 PvE 게임이 인기가 있었음
      완전히 다른 문화였음
    • 공터에서 축구하던 시절보다는 덜 생생했지만, 그래도 화면만 바라보며 ‘네트워킹’이라 부르는 것보단 훨씬 나았음
    • 지금도 러닝 클럽 같은 데 나가면 사람들과 어울릴 수 있음
      일본에는 여전히 오락실 문화가 살아있음
      이런 회상들이 약간 아이러니하게 느껴짐
    • 혹시 클라이밍 같은 사회적 스포츠를 해본 적 있는지 묻고 싶음
      벽을 공유하는 구조라 낯선 사람들과 자연스럽게 대화하게 되고, 몇 시간만 투자해도 충분히 즐길 수 있음
      나이대별로 어울리는 다른 소셜 스포츠도 많을 것이라 생각함
  • 정말 흥미로운 이야기였음
    내가 좋아하는 사례 중 하나는 Naughty Dog이 EULA를 이용해 Ratchet and Clank를 수정했던 일임
    자세한 내용은 이 블로그 글에서 볼 수 있음

    • EULA 메시지의 버퍼 오버플로우를 패치 메커니즘으로 썼다는 게 믿기지 않음
    • 글 속에 Dilbert가 나와서 순간 멈칫했는데, 날짜를 보고 이해했음
  • 근처 햄버거 가게에 SF2 캐비닛이 있는데, 스티커 대신 손으로 그린 그림이 있음
    상단에는 ‘HYRER FIGHTING’이라고 적혀 있고, ‘WORLD WARRIER’ 오타를 생각하면 참 어울린다는 생각이 들었음

    • 사진 없으면 믿기 힘들다는 반응임
  • 혹시 최근에 관련된 YouTube 영상 봤는지 묻고 싶음

    • 봤음
      제목은 “It sounds dumb but they really fixed a typo with a human leg”였고, 영상 링크도 있음
      꽤 잘 만든 영상이었음
  • 오늘 이 이야기를 보고 텍스트 렌더링 방식이 궁금했음
    예전에는 drawText 같은 함수가 당연하지 않았다는 걸 다시 떠올리게 됨
    초기 기기에서는 문자 출력조차 직접 구현해야 했던 시절이었음

  • “Thank you for playing Wing Commander! ”라는 문구가 떠오름
    그 시절 감성을 정확히 건드리는 문장이었음

    • WCNews의 글에 따르면, 그 문구는 실제 출시 버전에는 포함되지 않았다고 함
      메모리 관리 시스템 충돌을 피하기 위한 임시 문구였다고 함
  • Continental Circus라는 게임이 생각남
    아케이드뮤지엄 링크에 트리비아 섹션이 있음

    • 하지만 그 이름이 ‘Circuit’의 오타라는 건 말이 안 됨
      일본어로 ‘Circuit’은 サーキット이고, ‘サーカス’와는 발음이 완전히 다름
      게다가 F1을 ‘서커스’라고 부르는 표현은 일본뿐 아니라 전 세계적으로 흔함
  • Guile의 종아리를 그리기 위해 픽셀 3개에 드로우콜 3번을 썼다는 말이 너무 웃김

    • 하지만 여기서 ‘draw call’은 현대 용어일 뿐, 실제로는 스프라이트 테이블 메모리에 값을 쓰는 작업이었음
      운영체제나 그래픽 API가 없던 시절, 하드웨어 메모리에 직접 접근하던 구조였음
    • 다행히 타이틀 화면에서는 그렇게 많은 작업을 하지 않았음
  • 누군가 Double Dragon의 “Bimmy and Jimmy” 오타를 고쳐줬으면 좋겠다는 농담임