//시스템 언어 ID를 받아와서 뒷자리가 11인지 테스트합니다.
// 일본어 - 0411, 한국어 - 0412
00456070 /$ FF15 D0F04A00 CALL DWORD PTR DS:[<&KERNEL32.GetSystemD>; [GetSystemDefaultLangID
00456076 |. 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4]
0045607A |. 25 FF030000 AND EAX,3FF
0045607F |. 33C9 XOR ECX,ECX
00456081 |. 3BC2 CMP EAX,EDX
00456083 |. 0F94C1 SETE CL
00456086 |. 8BC1 MOV EAX,ECX
00456088 \. C3 RETN
00456090 /$ 6A 11 PUSH 11
00456092 |. E8 D9FFFFFF CALL SoushinM.00456070
00456097 |. 83C4 04 ADD ESP,4
0045609A \. C3 RETN
// 테스트해서 결과값이 0이면 오류 나도록 함
0046EDE0 |. E8 AB72FEFF CALL SoushinM.00456090
0046EDE5 |. 85C0 TEST EAX,EAX
0046EDE7 |. 0F84 F4000000 JE SoushinM.0046EEE1 // 분기문을 NOP(90)으로 수정
이렇게 하면 BGI엔진을 사용하는 게임은 유니코드 변경없이 구동 가능합니다.
MultiByteToWideChar 국가코드까지 변경하는걸 귄장합니다.
폴더명이 일어일경우 오류날수 있으니 영문으로 변경 권장.
어플로켈(일본어) 실행이 아닌 일반 실행.
사족1. 왜이렇게 엔진을 쓸데없이 더럽게 만드나요.
이거 이외에도 체크해서 메세지를 일어로 표시할지 영문으로 표시할건지 하는 분기도 많죠. 폰트명도 그렇고...
나쁜건 아니지만 그닥 쓸모 있는것도 아닌듯 합니다(....)
어차피 0411아니면 아예 실행이 안되게 해놔서...