티스토리 뷰

강좌

[스타1 EUD] 버로우 인식

Ch. 2011.06.04 04:51
*모르는 분들은 몰라도 되는 재미있는 내용입니다.
*EUD 를 배우기 귀찮은 Ch가 겨우 적은 내용입니다. 원리를 아는 분이라면 왜이런지까지 아실듯.
*스타크래프트 + 맵제작 + 유즈맵제작 + EUD (트리거에서 스타크래프트 메모리를 인식하는 방식의 트리거) 를 모르신다면, 읽어도 이해 안됩니다.



기존의 겹침 불가를 이용한 방식을 사용할 시 구석에서 인식이 안되는 문제를 해결하기 위해서 이 방법을 사용합니다만, 가장 먼저 배치해야 하고, 처음 소유하는 플레이어는 반드시 있어야 ㅎ... 이건 아시겠죠.




현재 최신의 SCM Draft 2 "Calls Final"에서는 유닛을 선택하고 속성을 볼시 배치된 유닛의 인덱스를 보실 수 있습니다.

0번~5번 유닛에 관련된 버로우 인식 EUD 입니다.

1. 저글링으로 하던 영웅 저글링으로 하던 인덱스별 유닛의 메모리 오프셋 위치는 변하지 않습니다 (스노우 타일의 소형맵과 황혼 타일의 128^2 맵에 배치된 것을 비교하였습니다. 정확하게 말하자면, 여기서 제공하는 맵과 EV 0.2 OSE 를 비교했지요.)

2. 버로우에 대한 정보가 들어있는 Flag 의 값은 저글링이라면 통용되는 듯 합니다.

3. 버로우 상태 외에 다른 부분의 정보가 끼어있어서, 데스 트리거는 4바이트씩 읽어오는데다가 세는것도 4바이트씩밖에 안되는 듯 하여[각주:1] (EUDTrig 에서 값을 조금씩 바꿔보세요 =ㅅ=;) 앞으로 두 바이트 끌어당겨서 상태 하나만 인식하려는 시도는 무산되었습니다.

4. 아래 값들은 SCMD Calls Final 에서 Memory 구문을 사용한다는 것을 전제로 합니다. 왼쪽 칸엔 유닛에 대한 정보를, 오른쪽 칸에는 버로우에 대한 정보를 실어주시면 인식됩니다.

5. 버로우 인식은 타겟 타일에서 할것. Null 타일에서는 다른 값이 되는 경우도 있는듯


evlitetest.scx

만들던_게_샘플맵이_되다니_으으으.scx (셈틀 세력에서 확인하시기 바랍니다.)

<메모리 값 : 버로우>
11 1b 33 34 (burrow 1) - 875764497
11 1b 3b 34 (burrow 2) - 876288785
01 00 13 34 (Up) - 873660417
* 뒤집어서[각주:2] Dec 값으로 변경하면 됨 (34 33 1b 11 (HEX, 16진수) to 875764497(DEC, 10진수)
* 버로우 플래그의 위치는 유닛의 구조오프셋으로부터 +DC, 아까도 설명했듯이 +DA 를 시도했으나 무산

<유닛별 오프셋(버로우 플래그의 메모리 위치)>
0059CD84 - 1 - 19080
00628374 - 2 - 161796
00628224 - 3 - 161712
006280D4 - 4 - 161628
00627F84 - 5 - 161544
00627E34 - 6 - 161460
* EUDTrig 에 Hex값으로 그대로 넣어서 빼낼것. (0x59cd84 to 19080), 체크는 필수


잊어먹기전에 이렇게 기록해두는것도 좋겠지요.

EUD 트리거 제작을 위한 요소들도 포함 (물론 조건부)

AquaMapper.zip

EUDTrig1.3.exe

SCMD2는 나중에 찾아서 ...
  1. 2013년 추가 : 아마 데스 트리거에 쓰이는 (어셈블리) 명령어 자체가 4바이트씩 처리하는 명령어일 겁니다. [본문으로]
  2. 2013년 추가 : 왜 뒤집냐면, 80x86 컴퓨터구조에서는 메모리에 리틀 엔디안 방식으로 저장되기 때문입니다. 요약하자면 인텔(Intel) 때문에 뒤집어야 하는 겁니다. 자세하게 알고싶으시면, 리틀 엔디안을 검색해보세요. [본문으로]
신고
댓글
댓글쓰기 폼