오랫만에 FF6 관련 행사를 보고 또 과거 회상모드가 되어 있습니다.
청소를 하며 책장을 닦는데 과거의 유물이 발굴되더군요.
우연이랄까 우연을 가장한 의지랄까... 가짜 우연입니다.

그것은 바로...
파이어 엠블렘 셀프 공략집!
그렇습니다. 요즘이야 인터넷의 발달로 웬만한 메이저 게임은 한국어판이 나오지 않더라도 한글화 패치가 나오거나 하다못해 대사집/공략집이라도 나옵니다.
하지만 MP3 한곡을 받기 위해 30분을 아무것도 못하고 마음 졸이며 기다려야 했던 시절... 게다가 저걸 만들었던 시절 전 집에 PC도 없었습니다.

이 시절 평민 게이머들에겐 게임 잡지의 공략집외엔 아무런 정보도 없었고 파이어 엠블렘 정도 되는 제법 높은 난이도와 숨겨진 요소를 가진 게임은 공략집만으론 만족을 못한 경우가 많았죠.

지금 생각해보면 그 때도 정보에 밝은 유저는 이런저런 루트로 일본쪽 공략집이나 정보를 수집했을것 같지만 당시 전 좁고 좁은 게임 저변의 와중에서도 아무도 손대지 않았던 게임을 9번이나 클리어하며 저런 짓을 하고 있었던 겁니다.

일본어도 겨우겨우 읽기가 가능한 수준인 주제에 밤새 사전을 뒤적이며 화면에 나오는 모든 대사를 받아 적고 모든 스테이지에서의 공략 사항을 적어놓은게 A4용지에 앞뒤로 빼곡히 40장이나 되는군요. 저 바랜 색과 비틀어진 종이, 철해놓은 부분이 녹슬기까지 한 과거의 유물... 정말이지 안습입니다.

여하튼 절망했다!
아무리 노력해봤자 그걸 비웃는 듯한 다른 이의 완벽한 결과물에 절망했다!



p.s.
그래도 오늘의 절망은 그리 나쁘지만은 않았습니다.
Posted by gongdo

웹서핑중 발견!
http://www.thisisgame.com/board/view.php?id=60513&category=5001

길고긴 최종 결전에서 나오는 Dancing Mad의 오케스트라 버전입니다.
원곡의 작곡자도 콘서트 현장에 있었다는데 얼마나 좋았을까요. ;o;
그렇지만 FF6 OST 앨범을 하도 많이 들어온 저에겐 파이프 오르간 부분은 약간 어색하네요.중간에 케프카의 흐드러진 웃음소리도 -당연하겠지만- 안 들리고.^^;

수퍼패미콤의 음원이 아마 ADPCM이었던 걸로 기억하는데 -몇 kbps인지는 기억이 안나지만 아마 48kbps쯤?- 아래엔 OST에 들어있는 같은 곡입니다.
한번 비교해 보시는 것도 나름대로의 즐거움이.^-^
(으악... 96kbps로도 10메가를 넘기네요. 17분이 넘는 긴 곡이라;; 할 수 없이 모노로 압축.)
Posted by gongdo
▶ 문제 코드
[환경]
OS : Windows 98
Language : Visual Basic 6.0 SP6
참고 : Paul Caton의 Self-SubClassing 기법(http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54117&lngWId=1)

[소스 코드]
// 상세 생략 //
VB폼의 hWnd를 넘겨서 Subclass_Start()을 호출하여 서브클래싱을 시작하고
Subclass_AddMsg()로 몇 가지 메시지를 추가한 후 Subclass_Stop()을 호출.

▶ 문제점
- Windows 2000, XP 등 에서는 전혀 문제가 없지만 같은 코드를 Windows 98에서 실행할 경우 APP가 완전히 종료된 후 Memory Access Violation이 발생함
- APP 자체의 동작이나 서브 클래싱은 모두 정상적으로 작동하나 APP가 종료되는 시점에서 치명적으로 보기 좋지 않은 메시지를 보여주므로 문제.
- VB폼의 hwnd가 아닌 CreateWindow()등의 API로 생성한 윈도에서는 문제가 발생하지 않는 것으로 보임(정확하진 않음)

▶ 해결 과정
시도1 : 복잡한 서브 클래싱 과정을 최소로 줄여 SubClass_Start(), Stop()만 호출하여 테스트
여전히 같은 증상 발생.

시도2 : 라인 단위의 길고 지루한 트레이스를 통해 정상적으로 실행되지 않은 코드가 있는지 하나하나 체크... 별 다른 이상은 없음.

시도3 : 내부적으로 사용되는 GlobalAlloc(), VirtualProtect(), GlobalFree() 등의 동작 체크, 이상 없음.

시도4 : Paul Caton의 새 업데이트 없는지 확인. 없음.

시도5 : Self-SubClass 자체의 문제가 있다고 판단하고 다른 코드로 교체.
- 대체할 코드로 역시 Paul Caton이 작성한 WinSubHook.tlb 모듈을 사용.
- WinSubHook.tlb는 Self-SubClass에 비해 디자인 타임 의존성이 추가된다는 단점이 있지만 소스 코드는 훨씬 단순화 되므로 TLB 관리만 잘 한다면 큰 문제가 없을 것으로 생각됨.
- 같은 동작을 하는 코드를 WinSubHook TLB의 iSubClass 인터페이스를 통하여 구현, 2000, 98 모두 잘 동작하고 Access Violation도 발생하지 않음.

▶ 정리
- Paul Caton의 Self-SubClass 기법은 98에서 약간의 문제가 있는 것으로 판단됨.
- vbAccelerator.com에 올라온 Paul Caton의 WinSubHook TypeLibrary로 교체하여 해결함.
링크 : TLB 다운로드(http://www.vbaccelerator.com/home/VB/Type_Libraries/WinSubHook/article.asp)
WinSubHook 예제 및 설명(http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing_and_Hooking_with_Machine_Code_Thunks/article.asp)
Posted by gongdo


티스토리 툴바