yuchi's Development Home
글 수 201
그래픽자들이 5.0 나왔다고 맥스 5.0쓰게 해달라고 해서..굳은 맘먹고 5.0 max sdk를 깔고 재컴파일을 했다.컴파일은 말끔하게됐다.
하나 걱정스러웠던것은..지난번 4.2컴파일해서 돌렸을때 피지크 모디파이어쪽에서 문제가 있었는데, 이번에도 같은 문제가 생기지 않을까 하는것이었다.
그때 대충 때려맞추기론 인터페이스 선언이 실제 맥스에 들어있는 코드와 달랐다.굳이 4.2를 써야할 필요를 못느껴서 더 안뜯어보고 거기서 스톱했었다.
허나..이번엔 그래픽자들이 4.0은 버그 많아서 도저히 못쓰겠다.5.0으로 바꿔달라....고 요구했다.
혹시나 했는데 역시나..컴파일만 잘 되고 피지크 익스포트할때 똑같은 현상이 발생했다.어쩌겠나...
해서 다시 디버거로 뒤지기 시작했다.
PHYExport virtual IPhyVertexExport *GetVertexInterface(int i, const int type = HIERARCHIAL_VERTEX) = 0;
요 함수를 한번 호출하고나면 esp가 어긋나 있는게 문제였다.그렇다.push한만큼 스택을 비우지 않았으므로 당연한 얘기다.그럼 왜 비우지 않았을까? 아니 비우지 못했을까? 시부럴...함수 선언이 틀렸단 얘기다.
디스어셈블해서 따라가봤다.분명히..두번정도 확인했는데 이 함수의 실제코드는 인자를 한개 받은걸로 간주하고 있었다.맨 마직에는 선명하게~~~
ret 4
라는 명령이 보였다.
그렇다.인자 한개짜리 함수다.근데 호출할땐 인자 두개 push해서 호출하니 스택포인터가 안맞아서 _chkesp에서 걸린거였다.
해서 헤더파일의 함수 선언을 고쳐버렸다.
그래서 잘 돌아간다.
망할 discreet....
하나 걱정스러웠던것은..지난번 4.2컴파일해서 돌렸을때 피지크 모디파이어쪽에서 문제가 있었는데, 이번에도 같은 문제가 생기지 않을까 하는것이었다.
그때 대충 때려맞추기론 인터페이스 선언이 실제 맥스에 들어있는 코드와 달랐다.굳이 4.2를 써야할 필요를 못느껴서 더 안뜯어보고 거기서 스톱했었다.
허나..이번엔 그래픽자들이 4.0은 버그 많아서 도저히 못쓰겠다.5.0으로 바꿔달라....고 요구했다.
혹시나 했는데 역시나..컴파일만 잘 되고 피지크 익스포트할때 똑같은 현상이 발생했다.어쩌겠나...
해서 다시 디버거로 뒤지기 시작했다.
PHYExport virtual IPhyVertexExport *GetVertexInterface(int i, const int type = HIERARCHIAL_VERTEX) = 0;
요 함수를 한번 호출하고나면 esp가 어긋나 있는게 문제였다.그렇다.push한만큼 스택을 비우지 않았으므로 당연한 얘기다.그럼 왜 비우지 않았을까? 아니 비우지 못했을까? 시부럴...함수 선언이 틀렸단 얘기다.
디스어셈블해서 따라가봤다.분명히..두번정도 확인했는데 이 함수의 실제코드는 인자를 한개 받은걸로 간주하고 있었다.맨 마직에는 선명하게~~~
ret 4
라는 명령이 보였다.
그렇다.인자 한개짜리 함수다.근데 호출할땐 인자 두개 push해서 호출하니 스택포인터가 안맞아서 _chkesp에서 걸린거였다.
해서 헤더파일의 함수 선언을 고쳐버렸다.
그래서 잘 돌아간다.
망할 discreet....
댓글 '5'
자갈공명
예전에 저도 한번 당한적이 있었습니다. ( 아마 그때 4.2버전이었던듯..학생때였습니다. )
피직관련 함수 헤더가 맥스를 설치할때 생기는 sdk와 discreet에 정식으로 요청하는(정품샀을경우)의 sdk의 헤더가 다르더군요.
(하이텔 게제동이 잠시 올라왔다가 사라졌는데..김정만님의 익스포터에 들어있는 소스의 헤더가 정품버전이어서 알았다는..)
#define CURRENT_VERSION 300 이었던걸로 기억합니다. (맥스깔때 생기는 놈은 이것보다 낮았던..)
이번엔 IGameInterface를 이용해서 ..~
피직관련 함수 헤더가 맥스를 설치할때 생기는 sdk와 discreet에 정식으로 요청하는(정품샀을경우)의 sdk의 헤더가 다르더군요.
(하이텔 게제동이 잠시 올라왔다가 사라졌는데..김정만님의 익스포터에 들어있는 소스의 헤더가 정품버전이어서 알았다는..)
#define CURRENT_VERSION 300 이었던걸로 기억합니다. (맥스깔때 생기는 놈은 이것보다 낮았던..)
이번엔 IGameInterface를 이용해서 ..~