대항해시대2 윈도우95판 한글 출력 과정



대항해시대2 윈도우95판 한글 출력 과정

대항해시대2는 도스 버전에서만 한글판이 출시되었고, 윈도우95 버전은 일본어판으로만 존재합니다. 이로 인해 윈도우95판에서도 한글 메시지를 출력하고 싶다는 생각이 들었습니다. 이를 위해 Ollydbg를 활용한 어셈블리 수정 과정을 소개하겠습니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

Ollydbg를 통한 어셈블리 수정

Ollydbg 기본 설정

Ollydbg는 디버깅 도구로, 실행 파일을 분석하고 수정하는 데 유용합니다. 대항해시대2 윈도우95판의 실행 파일을 열어 어셈블리 코드를 수정하여 한글 출력을 시도했습니다.

주요 수정 사항

특정 헥스 코드 값을 변경하여 한글 출력 문제를 해결했습니다. 예를 들어, 다음과 같은 헥스 코드 수정이 이루어졌습니다:



  • 0044BC3E에서 PUSH 0x81로 변경
  • 0044E0FF에서 CMP EAX, 0xC8로 변경
  • 0044A8AD에서 ADD EDX, 0x161로 변경

이러한 수정 후, 도스판의 대사와 윈도우95판의 대사를 비교하여 변환 과정을 확인했습니다.

도스판 대사 헥스 코드 윈도우95판 대사 변환 헥스 코드 변환
C0 CC B0 CC
BA C1 B0 C1
BC B1 B0 B1
C3 A2 C3 A2
C7 C7 C7 C7

이 표에서 확인할 수 있듯, 헥스 코드 변환에서 일부 글자는 제대로 출력되지 않았습니다.



 

👉 ✅ 상세 정보 바로 확인 👈

 

한글 출력 문제 분석

알고리즘의 문제

한글 출력에 대한 문제를 ‘한글 한겡 출력 문제’라고 명명하였습니다. 헥스 코드의 앞 바이트 값에 따라 출력 결과가 달라지는 현상이 관찰되었습니다. B0~C0의 한글은 정상적으로 출력되지 않았으며, 이로 인해 한글 2350자 영역의 출력이 불가능했습니다.

알고리즘 해체 시도

대항해시대3를 분석하던 중, 다시 대항해시대2를 접하게 되었습니다. Ollydbg를 통해 TextOutA 함수와 관련된 문제를 추적하고 수정하였습니다.

  • 00402E30의 JBE 점프 구문을 NOP으로 변경하여 Bx xx대 글자들도 출력되도록 하였습니다.
  • 이후, 특정 레지스터 값들이 잘못 입력되는 것을 확인하고, 조건문을 수정하여 출력되는 글자의 변환 과정을 조정했습니다.

이 과정을 통해 B0 xx 영역의 글자들도 출력되었지만, 전각 기호는 여전히 출력되지 않았습니다.

전각 기호 출력 수정

전각 기호 문제는 추가적인 어셈블리 수정으로 해결하였습니다. 특정 헥스 코드 값을 변경하여 전각 기호가 출력될 수 있도록 조치했습니다.

이름 입력 처리 수정

이제 새 게임 시작 시 한글 이름을 입력할 수 있도록 MENU.DAT 파일을 수정했습니다. 글자 리스트에서 끝 바이트가 ~FD, ~FE로 끝나는 글자들도 출력될 수 있도록 Ollydbg에서 코드 수정을 진행했습니다.

엔딩 연도의 수정

게임을 플레이하면서 날짜가 잘못 출력되는 문제를 발견했습니다. 이를 Ollydbg를 통해 수정하여 정상적으로 출력되도록 하였습니다.

결론

대항해시대2 윈도우95판의 한글 출력 과정을 통해 여러 문제를 해결하였습니다. 텍스트는 MENU.DAT를 제외하고는 대부분 한글판 파일과 호환이 가능했습니다. 그러나 레이아웃 TYPE 02는 도스판과 윈도우95판의 파일 구조 차이로 인해 이식에 실패했습니다. 한글 패치를 통해 한글 출력이 가능해졌으므로, 패치를 공개할 예정입니다.

이 과정을 통해 문제를 해결하며 많은 것을 배울 수 있었습니다.

이전 글: 청주페이: 청주 지역에서의 스마트한 결제 수단