돈 대신 댓글 좀 던져봐용. 돈도 안 주면서...ㅇ.ㅇ
하지만 안된다고 하는 사람들에게 일일히 댓글 달아주기도 귀찮...
-by 블로그 주인장 자본주의자-
코드 파인딩 프로젝트 610
| MYS projects/코드 파인딩 프로젝트 2024. 1. 25. 21:48--------------------------------------------------------------------------------------------------------------------------------
※이용 철칙!
제 블로그의 모든 내용과 파일과 특히 코드는 절대로 모든 경우의 배포, 영리적 목적의 사용 등을 금합니다.
(즉, 펌 or 불펌, 출처 기재 or 미기재 배포, 수정배포, 재배포, 첨부파일로의 직접링크, 웹하드나 토렌트에서의 영리 및 비영리 공유 등... 모두 일절 금지.) (특히, 제 자작 코드와 개조 파일, 준한글화의 경우는 더 더욱 위와 같은 것들 모두 일절 금지.)
( = 여기, http://capita.tistory.com/ 이외에서 제 자작 코드, 준한글화, 개조파일를 얻을 수 있는 어떠한 경우의 방법도 금합니다.)
(어떤 "웹하드 판매자"분께서 "웹하드 공유금지"라는 말이 안 써있으니 마음대로 퍼가도 되는 것이 아니냐고...그러셔서 명시해둡니다.)
AralTrans를 실행 후 뜨는 창에서 F1을 누르면 도움말을 볼 수 있습니다. AralTrans를 잘 모르시는 초보분들은 반드시 읽어보시기 바랍니다.
이번 달 타겟 : 코드-파인딩-2024년-11월-타겟
아랄랩 주소 이전 : https://arallab.hided.net/
폴라리스 주소 이전 : https://polaris.hided.net/
제가 쓰는 AralTrans0.2 : AralTrans02.7z
각종 버그 제거한 ATCode.dll 180603버전(AralTrans0.2의 Algorithm에 넣기, 원본은 ATCode_130805.dll 등으로 백업 추천) : ATCode_180603.7z
→자세한 정보 링크
방송 : 미연시 코드 찾는 등의 방송 컨텐츠 (다음 정기 방송: 12월 13일 금요일 오후 7시)
--------------------------------------------------------------------------------------------------------------------------------
[240126][IRODORI] 八剱伝
파인더의 한 마디:
IRODORI의 처녀작인 사쿠라 재판에 이은 팔검전입니다.
제품 소개 페이지에 가을이 끝나지 않는 전국시대 배경에 4명의 남주와 4명의 여주가 주인공이라는 것 말고는 정보가 없습니다.
초반 대략 플레이 해보니 에도시대 19세기의 장편소설 "사토미 팔견전"(https://ja.wikipedia.org/wiki/南総里見八犬伝)과 깊게 연관되어 있는 것 같습니다.
역사의 사토미 요시히로의 미우라 미사키 침공 1556년 10월
실제 인물 모티브 중에 가장 어린 사람이 1549년생(최소+14년)
역사의 호죠 우지야스의 사토미의 쿠루리성 포위 1560년
암시되는 우에스기 겐신의 호죠 오다와라성 공방전이 1561년
실제 인물 모티브 중에 가장 일찍 사망한 사람이 1564년에 사망
역사의 오오타 겐로쿠로 야스스케의 반기 1562년
코우노다이 합전(国府台合戦) 및 마사키 노부시게, 토미나가 나오카츠, 토오야마 츠나카게 전사 1563~1564년
오오타 스케후사가 이와츠키성에서 아버지를 추방하고 호죠의 가신이 된 게 1564년
.
.
.
Unity 엔진으로 이사한 CatSystem 엔진
저번에 찾았던 mono-2.0-bdwgc.dll가 있는 MONO 버전이 아닌 GameAssembly.dll가 있는 IL2CPP 버전이라 완전히 달라서 고전 중
.
.
.
이번에도 완전히 처음하는 작업이라 이것 저것 삽질하느라 대략 총 20시간이 소요되었다.
기존 MONO 버전 Unity(CatSystem) 엔진은 게지네님이 만든 폰트 파일을 XUnity.AutoTranslator를 이용해서 적용했었는데, AutoTranslator가 IL2CPP 지원이 완벽하지 못하여(https://github.com/bbepis/XUnity.AutoTranslator?tab=readme-ov-file#il2cpp-support) 다른 방법으로 한글 폰트 적용이 필요했다.
간접적인 방법으로 폰트 교체를 시도하였으나 전부 실패하고 직접적으로 에셋의 폰트를 교체하는 방법을 구글 검색으로 찾아서 시도하였다. (Snowyegret님 블로그: https://snowyegret.tistory.com/21, https://snowyegret.tistory.com/47)
47번 글의 내용을 따라 일반 폰트만 교체하면 Gulim의 경우 첫 줄만 한글로 나오고 이후에 간간히 네모에 섞여서 나오고 NanumGothic의 경우 전부 네모로 나온다.
21번 글의 내용을 따라 SDF 폰트를 전부 NanumGothicBold로 교체하여 한글 폰트 출력에 성공하였다.
(글에는 안 나와 있지만 Unity Editor만 깔면 실행이 안 되므로 Unity Hub를 깔아야만 한다.)
일부 IL2CPP 버전은 21번 글의 3번 "원본폰트 좌표파일(MonoBehaviour) dump"를 수행하면 에러를 발생하고 튕긴다.
해당 문제는 UABEA의 github 페이지(https://github.com/nesrak1/UABEA/issues/296)에 동일한 이슈가 있어 Il2CppDumper나 cpp2il을 이용하여(https://github.com/Perfare/Il2CppDumper) dummy dll을 생성해서 Managed 폴더에 넣고 UABEA에 내장된 CPP2IL 기능을 끄면 해결된다.
(Il2CppDumper를 사용할 때 Il2Cpp binary file 지정 시 exe 파일이 아닌 GameAssembly.dll를 지정해야 하는 것을 잊지 말 것.)
21번 글의 korean.txt에 원본에 있는 일본어까지 추가한 Character Sequence를 사용하였다.
아래는 원본 renderMode의 int값 대조 테이블
int renderMode
SDF=4134 SDF8=8230 SDF16=16422 SDF32=32806 SDFAA=4165 SDFAA_HINTED=4169
.
.
.
대사 지점에 브레이크 포인트를 걸어서 찾은 UTF-16 복사 함수(gameassembly.dll!0x01653780)에서 어셈블리 개조로 0x00FF이하만 오는 문장만 쳐내서 역추적하는 방법으로 분석 시작.
그렇게 발견한 byte 길이가 0x20 이상만 잡히던 임시 코드:
저걸 더 거슬러 올라가면,
XX XX XX XX(포인터?) ?? ?? ?? ?? (4byte 공간 word 길이) [String 내용]
의 문자열 구조체를 변수로 받는 함수들이 있다.
현재 AT코드는 저 함수들에 후킹한 결과물이다.
추후에 도움될 수도 있으므로 이것 저것 메모한 ATcode.txt를 첨부.
복구 방식을 쓰지만 근본적으로 OVERWRITE(IGNORE)이기 때문에 튕길 가능성이 있고 マガツバライ의 경우(https://capita.tistory.com/733) 일정 길이 이상이면 반드시 튕겼기 때문에 안정성 확인이 필요하다.
→
결국 바이너리 패치를 추가해서 PTRCHEAT 방식으로 바꿔서 OVERWRITE(IGNORE)의 불안정성을 제거했다.
2024년 01월 25일 PM 09시 48분 : 코드글을 게시.
2024년 01월 26일 PM 05시 37분 : 임시 코드를 약간 수정.
체험판과 본판의 차이가 없음을 확인.
바이너리 패치, AT code 수정.
2024년 01월 27일 PM 01시 08분 : 코드를 전면 개편
2024년 01월 27일 PM 01시 21분 : ATdata.7z 수정.
CustomDic.txt의 단어를 수정 및 CustomScript_Auto.txt에 예외 추가.
2024년 01월 27일 PM 04시 20분 : 바이너리 패치 추가, ATcode 수정.
OVERWRITE에서 PTRCHEAT 방식을 수정하여 코드의 안정성을 올림.
2024년 01월 27일 PM 05시 53분 : ATdata.7z 수정.
CustomDic.txt의 사람 이름을 17명에서 46명으로 늘림.
2024년 01월 27일 PM 08시 43분 : 바이너리 패치 수정.
특수한 경우(원문 번역문 모두 1글자 일때?) 제대로 출력 되지 않고
다음 번역문이 출력되는 경우를 임시 땜빵해결.
2024년 01월 27일 PM 10시 21분 : ATdata.7z 수정.
CustomDic.txt의 단어 추가 및 수정.
2024년 01월 28일 PM 08시 36분 : ATdata.7z 수정.
CustomDic.txt의 많은 단어 추가 및 수정.
메모:
저저번에 CatSystem에서 Unity 엔진으로 이민갔다...
이건 mono-2.0-bdwgc.dll가 있는 MONO 버전이 아닌 GameAssembly.dll가 있는 IL2CPP 버전
자세한 내용은 본문 참고
※주의. 최신 아랄을 쓰지 않다가 발생한 문제는 책임지지 않습니다ㅇ.ㅇ
(Unity(CatSystem) 엔진으로 ... 으아아아헤민ㅇ헤ㅐㅈ대ㅓ헤ㅐㄱ돟서ㅚㄴ에ㅐㅊㅍ튜ㅜㅊ'ㅍ)
(PS. 언제나 그렇듯이 일본어 로캘에서만 테스트 했습니다. 일본어 로캘은 만병통치약.)
----------------------------------------------------------------------------------------------------------------------------------------
(완전히 새로운 패턴이라 안정성 확인되지 않았으므로 주기적으로 세이브 권장, 2번 이상 튕기면 제보 바랍니다.)
한글 폰트 수정 파일(내장된 SDF 폰트를 NanumGothicBold SDF로 교체한 것.):
아래의 압축을 풀어서 나온 sharedassets0.assets를 "게임 설치 폴더\八剱伝_Data"에 있는 sharedassets0.assets와 교체 (기존 파일 백업 권장)
바이너리 패치:
ATcode:
Filtercode:
----------------------------------------------------------------------------------------------------------------------------------------
(제가 뭐라고 지껄여도, 여러분이 덧글을 쓰건 말건은 여러분의 자유이며 권리입니다. -.- )
(다만, 아청법의 두려움이 덧글 파워보다 커지는 순간, 블로그를 폐쇄할 수 밖에 없습니다. ㅇ.ㅇ;; )
(왜냐구요? 블로그는 딱히 자유로운 덧글 빼고는 즐거운 점이 한 개도 없기 때문이지요.ㅇㅇㅋ)
Tistory는 로그인 없이 덧글을 달 수 있어요.
그래요,로그인이필요없어요...(oㅅo)
'MYS projects > 코드 파인딩 프로젝트' 카테고리의 다른 글
코드 파인딩 프로젝트 612 (0) | 2024.01.25 |
---|---|
코드 파인딩 프로젝트 611 (2) | 2024.01.25 |
코드 파인딩 프로젝트 609 (4) | 2023.12.21 |
코드 파인딩 프로젝트 608 (15) | 2023.12.21 |
코드 파인딩 프로젝트 606 (6) | 2023.11.17 |