KOR세상

[카테고리:] 한글화 관련툴 및 자료

  • 고전 콘솔게임용 만능도구 유콘64(uCON64)

    오늘 소개할 툴은 고전게임 롬파일계의 맥가이버라는 별명을 가진 만능도구 유콘64(uCON64) 입니다

    툴 자체의 기능이 꽤 방대하다보니 전부 소개하기는 어려운데 그나마 수퍼패미컴 한국어화에 관련된 사례만 하나 콕찝어서 소개하고자 합니다

    참고로 지원하는 기종은 아래와 같습니다

    • 아타리 시리즈
    • 코레코비전
    • 패미컴
    • 수퍼패미컴
    • 버추얼보이
    • 게임보이
    • 게임보이어드밴스
    • 닌텐도64
    • 닌텐도DS
    • 네오지오
    • 네오지오 포켓
    • 세가 마스터시스템
    • 세가 메가드라이브
    • 세가 드림캐스트
    • PC엔진
    • 플스1
    • 원더스완

    툴의 자세한 기능은 같이 배포되는 readme.html이나 faq.html을 참고해주시면 될거 같습니다

    툴에 기능이 방대한데다가 구동환경도 리눅스, 윈도우 가리지 않아서 그런지 모르겠지만 아쉽게도 기본적으로 GUI를 지원하지 않습니다

    별도로 공식웹에서 배포되는 프론트엔드 GUI가 있긴하지만 저는 제대로 작동하지 않아서 포기하고 그냥 커맨드라인 형태로 쓰기로 했습니다

    우선 공식배포처부터 소개하고자 합니다

    공식 사이트 URL – https://ucon64.sourceforge.io/

    공식배포처에는 MinGW버전이나 Cygwin, 리눅스 버전도 배포하고 있으니 원하시는 버전이 있으시면 가급적 공식배포처에서 내려받으시는걸 권장합니다

    제가 올려둔 버전은 윈도우 플랫폼용 비주얼C++버전 입니다

    해당 버전은 비주얼C++ 재배포 패키지가 실행에 필요할수도 있습니다

    해당 포스팅에서는 제가 한국어화를 진행하고자 하는 프론트미션 건하자드를 예시로 사용법을 조금 알려드리고자 합니다

    우선 프론트미션 건하자드에는 불법복제 방지용 조치가 취해져 있는 게임입니다.

    패미컴시절 불법복제 롬팩(게임팩 하나에 게임이 64개 혹은 124개가 들어있는 게임팩을 기억 하시는분도 계실겁니다. 현대컴보이 시절 사용해보신 경험들이 있으실텐데요… 사실 그거 전부다 불법복제 게임팩이였던거죠)에 게임회사들이 시달렸었는데 그러다보니 불법복제 방지용 락도 발전을 했었습니다.

    그 예시중 하나가 프론트미션 건하자드인데요. 게임팩의 내용물이 조금이라도 변경되면 아예 사용 못하게끔 조치가 되어있습니다

    그러다보니 당연히 한국어화를 하기위해서 롬에 한국어폰트를 그려넣는 순간 다음과 같은 화면을 보게됩니다

    카세트가 망가져있습니다

    스퀘어 로고까지는 정상적으로 출력되는데 그다음에 게임의 오프닝이 안나오고 저런 메세지가 출력되면서 게임 플레이가 정상적으로 되지않는 문제가 생겨버립니다

    이 문제를 해결해줄 툴이 바로 오늘 소개할 유콘64 입니다

    이 툴에는 불법복제 방지를 위한 프로텍션을 깰수있는 기능이 있습니다

    그럼 바로 한번 시도해 보도록 하겠습니다

    우선 유콘64를 특정 폴더에 압축을 풀어줍니다 GUI가 지원되지 않아 윈도우 명령프롬프트를 통해서 프로그램을 실행시켜야 하기때문에 가급적 경로를 짧게 해주시는게 사용하시기 편할 겁니다

    그리고 불법복제 락을 풀어줄 롬파일도 같은 폴더에 넣어줍니다

    저는 프론트미션 건하자드를 가지고 시도해 볼껍니다

    그러면 대충 요렇게 배치되게 됩니다. fmgh.sfc가 락을 풀어줄 롬파일 입니다

    이제 명령프롬프트를 실행시켜 줍니다 윈도우키를 누르고 cmd 라고 입력해주면 위 화면과 같이 명령 프롬프트를 쉽게 선택할수 있습니다

    일단 명령어를 입력해서 프로그램을 실행하기전에 필요한 명령어를 한번 확인해 보겠습니다

    프로그램과 함께 배포되는 readme.html을 열어보면 명령어 종류와 설명이 적혀있습니다

    -k 명령어를 사용하면 된다고 나와있네요

    그럼 이제 명령 프롬프트에 직접 입력해보죠

    명령 프롬프트 사용에 익숙하신분은 금방 쉽게 쓰시겠지만 그렇지 않으신경우에는 조금 고생하실수도 있을 겁니다

    조금 설명을 드리자면 cd 라는 명령어는 특정 경로로 이동할수있는 명령어 입니다

    저는 E 드라이브에 해당 경로가 있다보니 먼저 E: 를 입력해서 드라이브를 바꿔주고 cd 명령어로 경로 이동을 해줬습니다

    E:
    cd KorPatchUtils\ucon64

    그런 다음에 다음과 같이 입력해 줍니다

    ucon64.exe fmgh.sfc -k

    한번 해보면 생각보다 간단할겁니다

    그리고 이 프로그램의 특징이라면 롬파일에 대한 체크섬을 진행을 합니다

    일단 불법복제 락을 걷어내면서 롬파일에 체크섬이 변경되게 되는데 해당 롬파일에 동일한 작업을 수행해주면 다음과 같이 체크섬 항목에 Bad가 뜨게 됩니다

    롬파일에 락을 걷어내기전에 수정작업을 해줘도 마찬가지로 체크섬이 변경되면서 Bad가 뜨게 되는데 그래도 락 해제는 정상적으로 진행되므로 신경쓰지 않으셔도 됩니다

    그럼 한번 제대로 락이 해제됫는지 확인해 보겠습니다

    yychr에서 숫자 2 폰트칸에 다음과같이 7 처럼 바꿔주겠습니다

    보면 네모칸 친자리에 폰트가 정상적으로 출력되지 않는걸 볼수 있습니다

    원본 롬을 보면 이렇게 정상적으로 숫자 21이 표시되어야 하지만 수정을 잘못해줘서 폰트 자체가 아예 표시가 정상적으로 되지 않네요

    그렇지만 롬 내용변경으로 인해 처음처럼 카세트가 망가져있습니다는 에러메세지는 출력되지 않고 정상적으로 게임이 진행되는걸 볼수 있습니다

    이렇게 한국어화 작업을 정상적으로 해주려면 락을 풀어줘야 하는 게임들이 몇몇 있습니다

    대표적으로 록맨X1도 그런 게임중 하나라고 하네요

    참고로 루나 익스팬드로 롬을 확장시켜주는 것 또한 롬 내용물 변동으로 치기때문에 카세트가 망가져있습니다는 에러를 표시하게 됩니다

    따라서 루나 익스팬드를 쓰건 롬 내에 폰트를 수정을 하건 어떻게든 게임 내용물에 변동이 생겨도 정상적으로 작동하게 하려면 유콘64는 필수적으로 사용을 해주셔야 합니다

  • 슈퍼패미컴 롬파일 확장도구 – 루나익스팬드(Lunar Expand)

    오늘 소개할 툴은 슈퍼패미컴(SFC)용 롬파일 확장도구인 루나익스팬드(Lunar Expand) 입니다

    현재도 구글에 검색하면 심심찮게 구버젼을 다른 블로그들에서 내려받을수있지만 정작 제작자분의 홈페이지를 링크해두고 최신버젼을 내려받도록 유도되어있는 블로그 게시글이 적어서 스스로 기록용 및 필요한 사람들에게 안내차원에서 블로그 포스팅을 해봅니다

    개발자 공식 사이트 URL – https://fusoya.eludevisibility.org/

    Lunar Expand 페이지 URL – https://fusoya.eludevisibility.org/le/index.html

    2026년 5월 10일 기준 최신버젼인 1.20(2022년 7월 1일자 버젼) 내려받기

    프로그램의 사용법은 상당히 심플한데 확장하고 싶은 롬을 선택하고 그에맞게 용량을 늘려주면 끝입니다

    GUI로 깔끔하게 제작자분이 만들어두고 관리하고 있어서 UI가 지금에와서 깨진다거나 최신 윈도우에서 작동이 안된다든가 하는 불상사는 없는듯합니다

    심지어 굉장히 오래전 32비트용으로 개발된 소프트웨어이나 최신 트렌드에 맞춰 64비트 버젼을 따로 만들어서 같이 배포하고있을정도로 제작자분의 정성이 대단합니다

    아래는 프로그램에 첨부된 readme.txt 파일을 AI 번역한 내용입니다.

    1. Instructions(설명서) 번역

    SNES ROM을 32 Mbit 이상으로 확장하는 것은 전통적으로 대부분의 ROM 해커들에게 골칫거리였습니다. 부분적으로는 확장 방식이 조금 다르기 때문이고, 주로는 에뮬레이터 지원이 비교적 최근에야 이루어졌기 때문입니다. 또한 메모리 맵의 미러 영역을 추가 데이터 저장에 사용하기 때문에, 모든 ROM에서 별도의 조정 없이 32 Mbit 이상 확장이 제대로 작동한다고 보장할 수 없습니다.

    그래서 이러한 확장을 처리하기 위한 몇 가지 옵션을 제공하는 프로그램을 만들었습니다.

    에뮬레이터 호환성

    • Tales of Phantasia를 실행할 수 있다면, 해당 에뮬레이터는 48 Mbit ExHiROM 옵션을 지원합니다. ZSNES와 Snes9x는 이미 이를 지원합니다.
    • Snes9x 1.39a 이상: 48 Mbit ExLoROM 및 64 Mbit ExHiROM 확장 지원.
    • Snes9x 1.39a ~ 1.43, 1.54+: 64 Mbit ExLoROM 지원 (단, 1.50~1.53은 ExLoROM을 48 Mbit로 제한).
    • Snes9x 1.54+: 48 및 64 Mbit SA-1 ROM 지원.

    현재 ZSNES는 ExLoROM이나 48 Mbit(6 MB) 이상의 ROM을 지원하지 않습니다. 또한 SA-1의 경우 32 Mbit 이후 첫 두 개의 64 KB 뱅크에 접근할 수 없는 문제가 있습니다. 하지만 제 사이트에서 제공하는 비공식 ZSNES 1.51 8MB 빌드를 다운로드하면 이를 우회할 수 있습니다.

    SA-1과 S-DD1 옵션도 제공되는데, 이들은 MMC 칩으로 뱅크 스위칭을 통해 특정 뱅크에서 ROM의 다른 부분을 접근할 수 있습니다. 4 MB 이상 영역에 접근하려면 ASM으로 MMC 레지스터를 변경해야 할 수도 있습니다. 게임별 툴(예: SMW용 Lunar Magic + SA-1 패치)이 있다면 그것을 사용하는 것이 더 낫습니다. SuperFX 게임에도 같은 옵션을 사용할 수 있지만, SuperFX 칩 자체는 2 MB 이상을 접근할 수 없으므로 SNES CPU만 나머지를 접근할 수 있습니다. 따라서 상업용 게임에서는 이 구성을 사용하지 않았고, 대부분의 에뮬레이터도 SuperFX ROM을 2 MB 이상 지원하지 않습니다.

    다른 추가 칩을 사용하는 ROM은 확장 시 각 칩이 고유한 메모리 맵을 사용하기 때문에 직접 해결해야 합니다. 또한 프로그램은 인터리브된 ROM을 지원하지 않습니다. 0x200 바이트 카피어 헤더가 있거나 없어도 지원합니다.

    프로그램 사용법

    • 왼쪽 열: 최대 32 Mbit까지 확장 옵션 (HiROM/LoROM 모두 가능).
    • 오른쪽 열: 48 또는 64 Mbit 확장 옵션.
    • LoROM 게임은 반드시 ExLoROM 옵션을, HiROM 게임은 ExHiROM 옵션을 선택해야 합니다. 프로그램이 ROM 타입을 확인하긴 하지만, 직접 확인하는 것이 안전합니다.
    • ExHiROM 옵션은 8 Mbit 이하 LoROM을 ExHiROM으로 변환할 수도 있지만, 실제로는 거의 필요 없습니다.

    ExLoROM/ExHiROM 확장은 기본적으로 ROM 확장, 헤더 크기 변경, 0x8000 뱅크 데이터 복사 과정을 수행합니다. 각 ROM 크기마다 최대 3가지 옵션이 있습니다.

    ExHiROM

    • 기본 옵션: 일반적인 확장.
    • 호환성 옵션(note 3): 원래 게임에서 00:8000 맵을 사용하는 경우, 확장 공간에 32K 뱅크를 절반 정도 복사하여 호환성을 유지.
    • 확장 영역 접근: 40:0000 ~ 7D:FFFF. 단, 7E와 7F는 RAM이므로 마지막 128K는 접근 불가.

    ExLoROM

    • 옵션 1(note 1): 00:8000 ~ 6F:FFFF 맵을 사용하는 LoROM (보통 28 Mbit 이하). 원래 ROM을 40:0000에 복사.
    • 옵션 2(note 2): 80:8000 ~ FF:FFFF 맵을 사용하는 LoROM (보통 28 Mbit 이상).
    • 옵션 3(note 3): 두 맵을 모두 사용하는 경우 호환성 옵션. ROM을 확장 공간에 그대로 복사.

    확장 영역 접근: 00:8000 ~ 7D:FFFF. 단, 7E와 7F는 RAM이므로 마지막 64K는 접근 불가. 따라서 ExLoROM/ExHiROM 모두 실제로는 63.5 Mbit만 사용 가능.

    실제 사용 사례

    • Chrono Trigger, Mario World → 48 Mbit ExHiROM 변환 성공.
    • RoboTrek → 호환성 ExHiROM 옵션 필요.
    • 항상 일반 옵션을 먼저 시도하고, 필요할 때만 호환성 옵션을 사용하세요.

    명령줄 사용법

    코드

    "Lunar Expand.exe" -ExpandROM "ROM파일명" SizeOfROM
    

    SizeOfROM 인자:

    • Mbit 단위: 1,2,4,8,12,16,20,24,28,32
    • MB 단위: 1MB, 1.5MB, 2MB, 2.5MB, 3MB, 3.5MB, 4MB
    • 라벨: 48_EXHIROM, 48_EXHIROM_3, 64_EXHIROM, 64_EXHIROM_3, 48_EXLOROM_1, 48_EXLOROM_2, 48_EXLOROM_3, 64_EXLOROM_1, 64_EXLOROM_2, 64_EXLOROM_3, 48_EXPCHIP, 64_EXPCHIP (SA-1/S-DD1용).

    2. Updates 번역

    버전 1.20 (2022년 7월 1일)

    • -ExpandROM 명령줄 기능 추가
    • SA-1 및 S-DD1 게임 확장 옵션 몇 가지 추가
    • ROM 타입별로 확장 옵션을 재구성하여 가독성 개선
    • Windows 10 크리에이터 업데이트(1703) 이상에서 모니터별 V2 DPI 인식 추가
    • x64 폴더에 64비트 빌드 추가
    • 유니코드 OS에서 실행 시 유니코드 파일명/경로 지원 추가

    버전 1.14 (2010년 5월 22일)

    • 내부 헤더 위치 감지 기능을 개선하여, LoROM과 HiROM 위치 모두에서 헤더가 갱신되는 문제 수정 (보고해준 BMF에게 감사)
    • 프로그램이 항상 Win95 기본 글꼴을 사용하던 문제 수정 및 고해상도 DPI 인식 추가 → ClearType LCD에서 가독성 개선

    버전 1.13 (2003년 7월 4일)

    • ExHiROM 맵 관련 문서 소폭 업데이트: 마지막 두 뱅크의 후반부는 기술적으로 00:8000 맵에서 접근 가능
    • 프로그램 자체에는 버전 번호 변경 외 수정 없음

    버전 1.12 (2002년 12월 25일)

    • 00:8000 메모리 맵을 사용하는 ROM의 ExLoROM 확장 관련 소폭 변경
    • ExHiROM 맵 문서 업데이트 (뱅크 $70~$77)

    버전 1.11 (2002년 11월 13일)

    • ExHiROM 옵션 변경: ROM이 이미 32 Mbit 이상일 경우 시작 뱅크를 다시 복사하지 않도록 수정 (ExLoROM 확장과의 일관성 확보)

    버전 1.10 (2002년 11월 11일)

    • 48 & 64 Mbit LoROM 확장 옵션 추가
    • 64 Mbit HiROM 확장 옵션 추가 (snes9x 1.39a 및 1.39mk3에서 지원, ZSNES는 아직 미지원)
    • 몇 가지 표준 확장 크기 추가

    버전 1.02 (2002년 8월 28일)

    • 컨트롤 간 탭 이동 문제 수정

    버전 1.01 (2002년 8월 26일)

    • 프로그램이 더 이상 Lunar Compress DLL을 필요로 하지 않음

    버전 1.00 (2002년 8월 25일)

    • 첫 릴리스

    3. Legal Notice(법적 고지) 번역

    Lunar Expand 프로그램(이하 “소프트웨어”)은 닌텐도나 기타 상업적 기업의 공식 제품이나 지원을 받는 소프트웨어가 아닙니다.

    소프트웨어는 프리웨어(freeware)이므로 다음 조건을 충족하는 한 자유롭게 배포할 수 있습니다:

    1. 이 문서가 소프트웨어와 함께 제공되며, 문서와 소프트웨어가 어떤 방식으로든 수정되지 않을 것
    2. 소프트웨어가 어떤 형식의 ROM 이미지와 함께 또는 그 일부로 배포되지 않을 것
    3. 소프트웨어에 대해 어떠한 상품, 서비스, 금전적 대가도 청구할 수 없으며, 다른 제안이나 금전 거래와 결합하여 제공되지 않을 것

    소프트웨어는 있는 그대로(AS IS) 제공되며, 사용은 전적으로 사용자의 책임입니다. 이 문서에 언급된 누구도 소프트웨어의 사용이나 존재로 인해 발생하는 직접적 또는 간접적인 손해에 대해 책임을 지지 않습니다.