about

90년대 청소년들의 가슴을 불태웠던 게임들이 있었으니, 바로 일본에서 만들어진 "일본식 어드벤쳐" 게임들입니다. 그중에서 가장 활발하게 작품을 발표했던 곳이 Elf와 자회사 Silky's였습니다. 이들의 게임들은 모두 공통의 스크립팅 엔진을 사용했고, 이를 분석해 한글화하는 것이 한때 굉장한 인기를 끈 적도 있습니다.

이 프로젝트의 목적은 바로 저 스크립팅 엔진을 요즘의 환경에 맞추어 다양한 플랫폼에서 돌아갈 수 있도록 새롭게 제작하는 것입니다. 일종의 에뮬레이터라고 할 수도 있겠습니다.

news

2005. 1. 13.

ANISE+ (05011) Zaurus용 패키지 공개
(Zaurusian.net의 두치님께서 Zaurus용 패키지를 만들어서 보내주셨습니다)

2005. 1. 11.

ANISE+ (050111) 공개
(nightknight님께서 ANISE를 수정, 보완한 특별 버전을 만들어주셨습니다)
* OPL3 에뮬레이션을 통한 M 파일의 재생을 지원합니다.
* 640x400 이상의 해상도를 가진 Windows CE 계열의 PDA를 지원합니다.

2004. 3. 27.

beta 11 진행중
* 타이머 관련 루틴을 개선하여 CPU 점유율을 크게 낮췄습니다.
* '동급생2 -국내정식발매판-'에 사운드팩을 적용하면 제대로 인식하지 못하던 현상을 수정하였습니다.

2004. 3. 7.

beta 10 공개
* '동급생1'과 '동급생2'를 위한 WAV 사운드팩을 만들었습니다(FAQ 2 참조).
* WAV 화일을 처리할 때의 여러가지 문제점을 수정하였습니다.
* 선택 메뉴 초기화 과정에서의 메모리 침범 현상을 고쳤습니다.

2004. 2. 26.

beta 9 공개
* '실낙원'에 대한 지원을 추가합니다.
* '하원기가의 일족'과 '노노무라 병원 사람들'의 일본 원판 실행이 가능합니다.
* 한누리에서 한글화한 '동급생1, 2'에서 대사 출력시 조사 처리('~은' 또는 '~는' 등)를 해주도록 하였습니다.
* '동급생2'의 엔딩 장면에서 화면 전환시 다운되는 문제점을 해결하였습니다(lmy417님).
* 32비트(트루컬러) 모드가 아닌 경우, 블러 필터를 사용할 때 화면이 깨지는 현상을 수정하였습니다.
* 화면 전환시 화면이 깜빡이는 현상을 없앴습니다.

2004. 2. 16.

beta 8 공개
* Zaurus C-860으로의 크로스 컴파일 및 실행에 성공하였습니다.
* '동급생2 -국내정식발매판-'에서 대사 출력시 조사 처리('~은' 또는 '~는' 등)를 해주도록 하였습니다.
* '동급생1'의 게임 데이터 화일(elf?.dat)을 직접 다룰 수 있어 SPLITDAT를 사용할 필요가 없습니다.
* 실행시의 언어 설정 옵션에 따라, '동급생1'의 '.HMS' 화일을 자동으로 인식하여 사용합니다.
* 블릿이 화면의 경계를 벗어나는 경우에도 제대로 처리되도록 하여, '애자매'의 화면 깨짐 현상이 사라졌습니다.
* 픽셀을 읽고 쓸 때의 부하를 줄임으로써 약간의 속도 향상이 있습니다.
* 비디오 관련 함수들에서 화면 프레임버퍼에 대해 잘못된 락을 거는 것을 수정하였습니다.
* 화면을 부드럽게 해주는 블러 필터 모드와 스캔라인 모드를 추가하였습니다.
* 원본
원본

* 블러 필터 모드
블러 필터 모드

* 블러 필터 + 스캔라인 모드
블러 필터 + 스캔라인 모드

2004. 2. 5.

beta 7 공개
* 리눅스에서 실행 가능합니다.
* 화면을 교차시키는 루틴을 실행하는 쓰레드에서 발생할 수 있는 오류를 수정하였습니다.
* 전체화면 모드를 지원합니다.
* 프로그램 종료시 사운드 자원을 제대로 반환하도록 수정하였습니다.

2004. 1. 28.

beta 6 (20040128) 공개
* '애자매'와 'CRESCENT'에 대한 지원을 추가합니다.
* 폰트를 프로그램 내에 내장하여 외부 폰트 화일이 필요하지 않습니다.
* 16 * 16 크기의 아이콘 모양을 변경하였으며, 프로그램 윈도우의 타이틀바에 표시되도록 하였습니다.
* '동급생2 -국내정식발매판-'에서 배경음악과 효과음을 구분하게 되어 잘못된 반복 재생이 없도록 하였습니다.
* '동급생2 -국내정식발매판-'이 아닌 경우에도 WAV 화일이 있다면 재생해줄 수 있도록 하였습니다.
* 프로그램 종료시 메모리 반환을 제대로 하지 않던 구조를 수정하였습니다.
* 아스키 숫자를 반각 문자로 변환할 때 항상 한 자리만 출력하는 오류를 고쳤습니다.

2004. 1. 21.

beta 5 (20040121a) 공개
* 숫자를 문자로 변환하여 출력하는 루틴에 오류가 있어 새로 구현하였습니다.

beta 5 (20040121) 공개
* 필드 화면에서의 길 찾기 알고리즘을 구현하였습니다.
* 실제 사용되지는 않지만 내장되어 있는 지도 복사 함수를 구현하였습니다.
* 마우스 오른쪽 버튼을 클릭하였을 때 좌표값 변환이 잘못 되는 것을 고쳤습니다.
* '동급생1'의 지도 화면에서 마우스 클릭시 발생하는 오류를 고쳤습니다.

2004. 1. 15.

beta 4 (20040115) 공개
* '동급생2 -국내정식발매판-'이 아닌 경우에도 항상 WAV 화일을 재생하려고 하는 버그를 고쳤습니다(kju135님).

2004. 1. 5.

beta 4 (20040105) 공개
* WAV 형식의 사운드 화일 지원으로 '동급생2 -국내정식발매판-'에서 사운드 재생이 가능해졌습니다.
* 커맨드 라인 옵션에서의 폰트 설정이 적용되지 않던 것을 고쳤습니다.

2004. 1. 2.

리눅스 포팅중
* 약간의 시행착오를 거쳐 리눅스에서의 컴파일에 성공하였습니다.
* 스크린샷: 1 2 3

2003. 12. 30.

beta 3 (20031230) 공개
* 폰트 처리 루틴을 새로 작성하였습니다.
* 각 게임에 특화된 스크립팅이 가능하도록 구조를 조정하였습니다.
* 커맨드 라인에서 실행 옵션을 처리할 수 있도록 하였습니다.
* MSVCP71.dll과 MSVCR71.dll에 대한 의존성을 제거하였습니다.

2003. 12. 22.

KLDP.net 등록
* 개발의 편의성과 리눅스로의 포팅 등을 고려하여 KLDP.net에 프로젝트 등록을 하였습니다.

2003. 10. 18.

beta 2 완성
* 자동 길찾기 알고리즘을 제외한 필드 이동 함수 대부분이 구현되었습니다.
* 페이드 알고리즘을 개선하였습니다.
* 상수를 처리할 때의 오류를 제거하고, 난수 발생 루틴을 추가하였습니다.
* 애니메이션 스크립트 처리 루틴 중 빠져있던 부분을 추가하였습니다.
* 화면 버퍼 교환 블릿을 할 때 가로폭이 조금 길게 나오는 것을 수정하였습니다.

2003. 9. 21.

beta 1 완성
* 좀더 객체지향적인 설계를 도입하여 처음부터 새로 코딩 했습니다.
* 팔렛트 에뮬레이션을 제대로 할 수 있게 되었습니다.
* 글자 출력시 볼드 효과가 주어지도록 하였습니다.

2003. 8. 18.

프로젝트 재개
* 사정이 풀렸습니다.

2002. 9. 23.

프로젝트 중단
* 개인적인 사정으로 잠시 손을 놓습니다.

2002. 9. 14.

alpha 3 완성
* 화면 상에서 실제 갱신할 부분만 처리해주도록 하여 성능이 대폭 향상되었습니다.
* 그래픽 효과들이 대부분 구현되어 타이틀 화면을 제대로 볼 수 있지만, 페이드 할 때 명암이 완벽하지 않습니다.
* 마우스 커서의 설명이 나오는 부분은 공백 문자 처리를 하지 않도록 하여 화면이 깨지지 않도록 하였습니다.

2002. 9. 10.

alpha 2 완성
* 선택 항목의 수를 항상 최대로 계산하던 오류를 수정하였습니다.
* 공백 문자의 출력 크기를 절반으로 조정하여 가독성을 높였습니다.
* 화면에 평균값 필터를 적용해 보았습니다.

2002. 9. 6.

alpha 1 완성
* 스크립트 명령어 30여개 이상을 구현하였으며, '동급생2'의 프롤로그 진행이 가능합니다.

2002. 8. 27.

코딩 시작
* 약 70% 정도 분석을 마치고 첫 코딩에 들어갑니다.

2002. 8.

분석 시작
* 디스어셈블링을 통해 엔진 소스의 분석에 들어갑니다.

screenshot

실행화면

Windows XP Linux

동급생2 (同級生2)

동급생2 (同級生2) 동급생2 (同級生2) 동급생2 (同級生2) 동급생2 (同級生2) 동급생2 (同級生2) 동급생2 (同級生2) 동급생2 (同級生2) 동급생2 (同級生2)

동급생2 (同級生2) -국내정식발매판-

동급생2 (同級生2) -국내정식발매판- 동급생2 (同級生2) -국내정식발매판-

동급생2 스페셜 (同級生2 -SPECIAL-)

동급생2 스페셜 (同級生2 -SPECIAL-) 동급생2 스페셜 (同級生2 -SPECIAL-) 동급생2 스페셜 (同級生2 -SPECIAL-) 동급생2 스페셜 (同級生2 -SPECIAL-) 동급생2 스페셜 (同級生2 -SPECIAL-) 동급생2 스페셜 (同級生2 -SPECIAL-) 동급생2 스페셜 (同級生2 -SPECIAL-) 동급생2 스페셜 (同級生2 -SPECIAL-)

동급생1 (同級生)

동급생1 (同級生) 동급생1 (同級生) 동급생1 (同級生) 동급생1 (同級生)

실낙원 (失樂園)

실낙원 (失樂園) 실낙원 (失樂園) 실낙원 (失樂園) 실낙원 (失樂園)

애자매 (愛姉妹)

애자매 (愛姉妹) 애자매 (愛姉妹)

하원기가의 일족 (河原崎家の一族)

하원기가의 일족 하원기가의 일족 하원기가의 일족

노노무라병원 사람들

노노무라병원 사람들 노노무라병원 사람들

CRESCENT

CRESCENT CRESCENT CRESCENT CRESCENT

JACK

JACK

faq

1. 어떤 게임들의 실행이 가능합니까?

* 현재 플레이가 가능한 게임은 '동급생2'(국내정식발매판 포함), '동급생2 스페셜', '동급생1', '애자매', 'CRESCENT' 등 입니다. 이중 '동급생1'의 경우, 현재 게임 데이터들(elf?.dat)이 모두 추출되어 있는 환경에서만 실행 가능합니다. 그 외에 스크린샷에서 보이는 게임들은 아직 정상적으로 진행하기에 어려움이 많습니다. 이것은 '동급생2'의 엔진을 기준으로 프로젝트를 진행하였기 때문입니다. 다른 게임들의 엔진은 대부분 그 이전에 나온 것들이기 때문에 구성 자체는 더 간단하지만, 중간 중간 다른 부분들이 있어서 좀 더 분석이 필요합니다. '유작'의 경우에는 '동급생2' 이후에 나왔으며 게임 방식 자체도 다르기 때문에 다른 부분들이 상당수 존재합니다. 이 부분들은 현재 분석을 시도하고 있는 중입니다. 또한, 예전에 사과나무에서 한글화한 게임들은 한누리와 방식이 다른 듯 하며, 이에 한글을 제대로 볼 수가 없습니다.

2. 왜 소리가 나오지 않습니까?

* 이 게임들은 모두 야마하의 OPL3칩(사운드 블라스터 16)을 직접 제어하여 사운드를 처리합니다. OPL3칩은 그다지 널리 사용되지 않았기 때문에, 자료를 구하기가 힘들어서 다른 에뮬레이터 프로젝트들에서도 구현을 위해 진행중인 것으로 알고 있습니다. 게임의 사운드 엔진이라고 할 수 있는 'play5v'에 대한 분석을 진행 중에 있긴 하지만, 제 스스로 사운드 처리에 관한 지식이 부족하기 때문에 어려움을 겪고 있습니다. 따라서 단 시일내에 해결할 수 있는 문제는 아닐 것 같습니다. 예외적으로 국내에 정식으로 발매된 '동급생2'의 경우, WAV 화일을 사용하여 사운드를 재생하기 때문에 소리를 들으실 수 있습니다. 한편, 이와 비슷한 방식으로 다른 게임들의 소리를 녹음하여 '사운드팩' 형식으로 배포할 계획을 가지고 있습니다. 이와 비슷한 방식으로 '동급생1'과 '동급생2'에서 사용가능한 WAV 사운드팩을 만들었습니다. 사운드 화일들은 각 게임의 윈도우용 버전에서 추출한 것입니다. 사운드팩을 사용하기 위해서는 다운로드 받은 압축 화일을 풀어, WAV 화일들을 해당 게임 디렉토리에 넣어두시기만 하면 됩니다.

* nightknight님께서 OPL3칩의 에뮬레이션 코드를 만들어주신 ANISE+ 버전에서는 원판 그대로의 소리를 들으실 수 있습니다.

3. 한글화된 게임을 실행할 수 있습니까?

* 가능합니다. '한누리'에서 사용하던 한글 폰트와 '동급생2 -정식발매판-'의 폰트 화일을 내장하고 있습니다. '~은', '~는' 등의 조사 처리는 현재, '동급생2 -정식발매판-'에서만 가능합니다. 폰트의 선택은 실행시 옵션(-l[j, k, K])을 통해 할 수 있습니다. '-lj'는 S-JIS 일본어 폰트, '-lk'는 한누리의 한글 폰트, '-lK'는 '동급생2 -국내정식발매판-'의 한글 폰트입니다.

4. '동급생1'의 게임 데이터 추출은 어떻게 하는 것입니까?

* 예전에 Juice Kim님께서 만드신 'SPLITDAT.EXE'라는 유틸리티를 사용하시면 됩니다. 게임 화일들이 있는 디렉토리에서 'splitdat elf*.dat'와 같은 식으로 실행을 하면 모든 게임 데이터들이 추출됩니다. 다만 이때 주의하실 점은, 만약 예전에 '한누리'에서 한글화한 '동급생1'을 즐기시려면 데이터 추출 후에 한글화된 스크립트인 '.HMS' 화일들의 확장자를 '.MES'로 바꿔주셔야 합니다. 이것은 'copy *.hms *.mes'로 간단히 해결하실 수 있습니다. 참고로, beta 8 부터는 이렇게 번거로운 데이터 추출, 복사 과정이 필요없이 자체적으로 'elf?.dat' 화일을 처리할 수 있게 되었습니다.

5. 윈도우가 아닌 환경에서도 실행이 가능합니까?

* beta 7 부터는 리눅스용 소스 화일을 함께 제공합니다. 컴파일을 하기 위해서는 SDL 라이브러리가 필요하며, 컴파일 과정에 대한 간단한 문서(INSTALL)가 들어있으므로 참고하시기 바랍니다. 또한, SHARP의 Zaurus SL-C7X0/860으로의 포팅도 생각중입니다. VGA 해상도(640*480)를 지원하며, 리눅스 기반이기때문에 큰 수정 없이 가능하리라 기대를 하고 있습니다만, 정작 제 자신이 PDA를 소지하고 있지 않기 때문에 많은 어려움이 있습니다.

* nightknight님께서 포팅을 해주신 ANISE+ 버전에서는 640x400 이상의 해상도를 가진 Windows CE 계열의 PDA에서 구동이 가능합니다.

* Zaurusian.net의 두치님께서 ANISE+를 Zaurus용으로 패키징을 해주셨습니다.

6. 소스코드가 공개되어 있습니까?

* 네, GPL로 공개되어 있으며 CVS로 접근하실 수 있습니다. 부족한 실력으로 남에게 보이기에는 민망하지만, 이렇게 공개하는 이유는 좀더 많은 사람들의 참여와 관심을 얻고 싶어서 입니다. 혼자서 취미로 끄적끄적 대는 것 보다는 여러 사람들의 의견과 반응을 들으면서 함께 만들어가고 싶습니다.

download

* plus (050111) Win32
* plus (050111) WinCE ARM
* plus (050111) WinCE ARM (iBee)
* plus (050111) Linux
* plus (050111) Zaurus
* Release Note

* beta 10 (20040307) Win32
* beta 10 (20040307) Linux
* beta 10 (20040307) Zaurus
* Release Note

* beta 9 (20040226) Win32
* beta 9 (20040226) Linux
* beta 9 (20040226) Zaurus
* Release Note

* beta 8 (20040216) Win32
* beta 8 (20040216) Linux
* beta 8 (20040216) Zaurus
* Release Note

* beta 7 (20040205) Win32
* beta 7 (20040205) Linux
* beta 7 (20040211) Zaurus
* Release Note

* beta 6 (20040128) Win32 - Release Note
* beta 5 (20040121a) Win32 - Release Note
* beta 5 (20040121) Win32 - Release Note
* beta 4 (20040115) Win32 - Release Note
* beta 4 (20040105) Win32 - Release Note
* beta 3 (20031230) Win32 - Release Note

* splitdat - Release Note

* CVS는 http://kldp.net/plugins/scmcvs/cvsweb.php/?cvsroot=anise로 접근하실 수 있습니다.

contact

* 질문이나 하고 싶은 말이 있으신 분들은 http://kldp.net/forum/forum.php?forum_id=1179을 사용해주십시오.
* tomyun (at) yonsei.ac.kr로 메일을 보내주셔도 됩니다.

credit

special thanks to

* Juice Kim
90년대 중반, 나우누리 한글화팀 '한누리'에서 활동하신 것으로 기억하고 있습니다. 이분께서 만드셨던 여러 툴과 그 소스들은 제가 이 프로젝트를 시작하는데 많은 도움이 되었습니다. 감사합니다.

* nightknight
개인적인 사정으로 더 이상 프로젝트에 손을 대지 못하고 있는 와중에, OPL3 에뮬레이션 코드와 Windows CE 구동 코드를 손수 만들어주셨습니다. 구현이 상당히 까다로울 것이라고 생각을 했었는데 며칠 안되어 척척 결과물이 나오는 모습을 보면서 굉장히 놀랐습니다. 정말 감사드리구요, 군대 잘 다녀오세요.

* anise22

link

http://kldp.net/projects/anise * KLDP.net의 프로젝트 페이지
http://www.libsdl.org * 제작에 사용된 라이브러리 SDL의 공식 홈페이지
http://www.elf-game.co.jp * Elf의 홈페이지
http://www.silkys.jp * Silky's의 홈페이지