Cloudtree references class를 약 3년만에 새버전으로 갱신합니다.
이전 포스팅된 버전이 v1.0.2인데 왜 하나 건너뛰어 v1.0.4로 건너뛰었냐 물으신다면,
v1.0.3을 만들어놓고 포스팅하기도 전에 상당한 기간의 상주 개발에 투입되는 바람에... ㅠㅠ
게다가 v1.0.3을 프로젝트에 쓰면서 사업에 맞게 약간씩 수정하다보니, 배포하기엔 코드가 너저분해진 덕분에 이번 배포 버전은 v1.0.4가 되었네요.

각설하고, 이번엔 CPP와 C# 양쪽의 레퍼런스 양식을 최대한 통일하고, 어느 한쪽에만 있던 기능을 양쪽에 상호 이식하였습니다.
물론 이번에도 최종 릴리즈 DLL과 해당 DLL을 적용한 예제 어플리케이션이 포함된 프로젝트를 함께 업로드합니다.

 

 

Cloudtree erences v1.0.4
수학 유클리딘 거리 계산 2차원 EuclideanDistance(src_x, src_y, dest_x, dest_y)
3차원 EuclideanDistance(src_x, src_y, src_z, dest_x, dest_y, dest_z)
가우시안 랜덤 값 도출 Gaussian(mean, stdev)
Radian↔Degree 변환 Deg2Rad(deg)
Rad2Deg(rad)
좌표계 위경고도를 이용한
방위각,  고각 계산
LosAzimuthP1toP2(P1_lat, P1_lon, P2_lat, P2_lon)
LosElevationP1toP2(P1_lat, P1_lon, P1_alt, P2_lat, P2_lon, P2_alt)
위경고도를 이용한
두지점 사이의 거리
LatLonDistance(P1_Lat_Deg, P1_Lon_Deg, P2_Lat_Deg, P2_Lon_Deg)
LatLonAltDistance(P1_Lat_Deg, P1_Lon_Deg, P1_Alt_m, P2_Lat_Deg,
 P2_Lon_Deg, P2_Alt_m)
Geocentric(ECEF) ↔ Geodetic(LLA) 변환 Geoc2Geod(x, y, z, lat, lon, alt)
Geod2Geoc(lat, lon, alt, x, y, z)
시간 시간 경과 체크 GetDuration(start_time)
공유
메모리
공유메모리 할당과 해제,
쓰기와 읽기
CreateSharedMemory(SharedMemKey, BufferSize)
CloseSharedMem()
WriteSharedMemory(data)
ReadSharedMemory(data)
보간곡선 보간곡선생성 베지어 곡선 생성 getBezier2DPoList(pos, PosOnCurve, result)
캣멀롬 곡선 생성 getCatmullRom2DPoList(pos, result)
통신 TCP/IP서버 서버 생성 CreateTcpServer(IP, PORT, MaxDatumLength)
서버 연결 ConnectTcpServer()
클라이언트로 데이터 전송 SendDataTcpServer(sendData, length)
서버 종료 DisconnectTcpServer()
TCP/IP 클라이언트 클라이언트 생성 CreateTcpClient(IP, PORT, MaxDatumLength)
클라이언트 연결 ConnectTcpClient()
서버로 데이터 전송 SendDataTcpClient(sendData, length)
클라이언트 종료 DisconnectTcpClient()
UDP 멀티캐스트 멀티캐스트 생성 CreateUdpMulticast(IP, PORT, MaxDatumLength, Purpose)
멀티캐스트 Join ConnectUdpMulticast()
멀티캐스트로 데이터 전송 SendDataUdpMulticast(sendData, length)
멀티캐스트 종료 DisconnectUdpMulticast()
UDP 유니캐스트 유니캐스트 생성 CreateUdpUnicast(myIP, myPORT, DestIP, DestPort, MaxDatumLength)
유니캐스트 연결 ConnectUdpUnicast()
유니캐스트 데이터 전송 SendDataUdpUnicast(sendData, length)
유니캐스트 종료 DisconnectUdpUnicast()

 

하기 첨부된 레퍼런스 클래스 예제 어플리케이션 프로젝트를 열어보시면 사용법은 쉽게 아실 수 있으리라 생각됩니다.

 

 

이번 레퍼런스 클래스와 예제 어플리케이션은 Microsoft Visual Studio 2019(VC16.0)에서 작성되었으며, C# 어플리케이션의 경우 .Net Frameworks 4.0을 기반으로 작성되었습니다.

PSP용 철권6의 기본 구동 fps는 60Hz 입니다.

오드로이드 고 어드밴스에서 ppsspp 에뮬레이터로 철권6를 구동하면 60fps의 풀프레임을 뽑아낼 수 없습니다.

보통의 경우 Frame Skip 설정을 통해 중간 프레임을 생략하는 걸로 속도 향상을 노리는데,

이 경우 생략된 프레임으로 인해 움직임과 소리, 조작 입력이 끊어지는 상황이 발생합니다.

 

그러나 PSP용 철권6의 경우 Frame Skip을 주지 않고도 게임을 부드럽고 원활하게 돌리는 방법이 있습니다.

 

PSP의 치트 기능을 이용하는 것인데요, 다른게임에서는 볼 수 없지만 철권6에서 가능한 치트중에

구동 프레임을 30fps로 고정시키는 치트가 존재합니다.

이를 적용하면 게임의 기본 구동 fps가 30Hz로 고정되며, 게임구동과 소리, 조작이 모두 정상적으로

끊김없이 돌아가는걸 보실 수 있습니다.

 

 

위 영상에서 에디의 스텝모션과 헤이하치, 에디의 다운 모션 등을 보시면 그 차이가 확연히 보이실겁니다.

 

이제 오드로이드 고 어드밴스의 PPSSPP 에뮬레이터에서 철권6를 원활히 구동하는 설정방법을 설명하고자 합니다.

 

1. 우선  ppsspp 에뮬레이터에서 철권6를 구동하신 후 ppsspp 메뉴로 진입합니다.

오른쪽 항목들 중 "게임 설정파일 생성" 버튼을 선택합니다.

 

 

2. 철권6 에만 적용되는 설정파일이 생성되었으므로, 이제 게임을 위한 최적화 설정을 해야합니다.

"게임 설정"을 선택합니다.

 

 

3. 다음 스크린샷을 참고하여 철권6 전용 설정을 진행합니다.

처리자 - OpenGL

방식 - 버퍼 없는 렌더링(속도 상승)

블록 전송 효과를 시뮬레이션 - 체크

소프트웽 렌더링(실험적) - 체크해제

프레임 생략 - 끄기

프레임생략 유형 - 프레임 수 (어차피 껐기 때문에 상관없습니다.)

자동 프레임 생략 - 체크해제

대체 속도 - 무제한

대체 속도2(단위 퍼센트, 0=무제한) - 비활성화

후 처리 셰이더 - 끄기

전체화면 - 체크

렌더링 해상도 - PSP 1배

Render duplicate frames to 60Hz - 체크해제

Buffer graphics commands(faster, input lag) - No buffer

하드웨어 변환 - 체크

버텍스 캐시 - 체크

텍스처 캐싱을 줄임(속도상승) - 체크

변경된 텍스처를 보유(속도감소) - 체크

느림 효과를 비활성화(속도상승) - 체크

낮은 품질의 스플라인 및 베지어 곡선(속도상승) - 낮음

하드웨어 테?레이션 - 체크해제

확대 수준 - 끄기

활대 종류 - xBRZ

색조 융합 - 체크해제

비등방성 필터링 - 16배

텍스처 필터링 - 선형 필터링

화면 크기 조절 필터 - 근접 필터링

Camera device - 0:rkisp1_mainpath

효과 해상도 저하(질감 감소) - 끄기

FPS 카운터표시 - 없음 (FPS를 확인하고 싶으시면 켜도 무방합니다.)

디버그 통계 표시 - 체크해제

 

 

4. 여기까지 하셨으면 철권6를 위한 PPSSPP 자체 설정은 끝났습니다. 이제 치트를 사용해 철권6의 기본 구동 프레임을 30Hz로 고정해야 합니다.

 

치트를 사용하기 위해 "게임 설정"에서 "시스템 - 치트 활성화" 를 찾아가 체크해줍니다.

여기까지 되셨으면, 이제 뒤로가기를 몇번 하신 후 ppsspp를 종료해줍니다.

치트는 오드로이드 고 어드밴스 상에서 직접 입력이 힘들기 때문에, WinSCP를 사용하거나, 또는 microSD카드를 파라곤으로 읽어와 치트 파일을 편집해주어야 합니다.

 

5. 저는 라즈겜동 구퓌님의 V4 이미지를 사용하고 있으므로, 이를 기준으로 작성합니다.

ppsspp의 치트 파일이 존재하는 경로는 "/root/home/odroid/.config/ppsppp/PSP/Cheats" 경로입니다.

위 4번 단계에서 "치트 활성화"를 체크했기 때문에 철권6의 치트 파일이 생성되어있습니다.

제 경우 ULUS10466.ini 파일이 철권6의 치트 파일이며, 이 파일을 메모장 등의 텍스트에디터로 열어 다음의 치트코드를 추가해줍니다.

 

_C1 Force 30 FPS[Fixed][Tekken6]
_L 0x20452890 0x00000000//FPS=30 (stable)
_L 0xE0030004 0x001C6094
_L 0x201C6094 0x00000000
_L 0x201CFC28 0x00000000
_L 0x201CFE74 0x00000000//CPU-freeze (fixed)

 

 

편집한 파일을 저장하신 후 microSD 카드를 오드로이드 고 어드밴스에 삽입합니다.

(저는 WinSCP등의 네트워크 접근보다 microSD 카드를 파라곤을 이용해 컴퓨터에 직접 연결해 사용합니다.)

 

이후 ppsspp의 철권6를 구동하시고, 설정화면 우측의 "치트" 항목에 들어가보시면

다음과 같이 "Force 30 FPS[Fixed][Tekken6]" 항목이 체크되어 있는걸 보실 수 있습니다.

(그럴리 없겠지만, 혹시 체크해제 되어있다면 체크해주시면 됩니다.)

 

 

철권6의 기본 구동 FPS가 30Hz로 고정되었다는 의미이며, 이제 철권6를 구동해보시면

움직임과 소리, 입력이 끊김없이 부드럽게 돌아가는걸 보실 수 있습니다.

 

이상으로, 오드로이드 고 어드밴스에서 psp 철권6 구동 설정 방법 안내를 마칩니다.

읽어주셔서 감사합니다.

저렴한데 성능은 가격 이상의 만족감을 주고, 싼거니까 고장나면 또 사던가 다른거 사던가 하는 맘으로 샀는데

심지어 고장도 잘 안나는 제품이 이 QCY T1이 아닐까 싶습니다.

 

근데 고질적인 버그인지, 많은 분들이 한쪽만 들리고 어떻게해도 다른 한쪽이 안들리는 경우가 생깁니다.

저도 이번에 두번째 나온 증상이구요.

 

웹서핑을 통해 이것저것 정보를 모아 해보면 대부분 되지 않더라구요.

저도 지난번 증상때는 이것저것 해메다가 네이버블로그의 혁도님 게시물을 보고 해결했던 기억이 있습니다.

 

혁도님 블로그 글 바로가기

 

QCY T1 한쪽만 소리날 때 해결 방법 및 사용법

​안녕하세요~​요새 핫한 가성비 블루투스 이어폰 QCY -T1 들어보셨나요?저도 얼마전에 구매해서 처음...

blog.naver.com

 

근데 이번에 증상이 나와 같은 방법으로 해봤는데, 이번엔 대여섯번을 다시 시도해도 해결이 되지 않습니다.

어떻게 해도 오른쪽만 나오고, 왼쪽 이어폰은 소리가 안나더라구요.

 

그러다가 오늘 다시한번 혁도님 블로그를 보는데, 영문 매뉴얼의 리페어링 부분을 직접 찍어 올리셨더라구요.

그동안 읽어볼 생각도 안했던 그 페이지를 읽어보니 한단계가 빠져있더군요.

 

 


  # 대략적인 의역

 

  1. 두 이어폰을 20초간 누른채 기다린다.

  (LED가 흰빨 점멸하다 꺼질거고 10초쯤 후에 다시 3회 흰빨 점멸후 꺼질때까지)

 

  2. 누르고 있던 손을 떼었다가 다시 두 이어폰 모두 1초간 누르고 있으면 전원이 켜진다.

  (LED가 2회 흰빨로 점멸함)

 

  3. 그러면 두 이어폰이 서로를 페어링한다.

  잠시후 왼쪽 이어폰의 불이 꺼지면 두 이어폰은 페어링 된거고 오른쪽 이어폰이 페어링 모드에 들어간다.

 

  4. 이때 스마트폰의 블루투스 기기 검색에서 QCY-T1_R을 찾아 페어링한다.

 

  주의 : 두 이어폰이 20초 안에 서로를 페어링 못하면, 두 이어폰이 각각 스마트폰에 페어링 등록기기로 나온다.

  (즉, 이어폰끼리 페어링 안되서 양쪽을 따로따로 기기에 등록해야된다는 얘기.

  이러면 양쪽 이어폰에서 소리가 이상하게 싱크도 안맞고 음악듣기 매우 안좋음.)

 

 

 

제경우 이번 증상 발생에서는 영문 매뉴얼의 방법대로 하니 그냥 한방에 해결됐습니다.

 

혹시 혁도님의 블로그 방법으로 안되시거든, 영문 매뉴얼 방법 그대로 해보시는 것도 괜찮을 것 같아요.

 

분명하게 짚고 넘어갈것은, 저역시 지난번 증상 발생시에는 혁도님 블로그의 방법대로 해서 해결되었던 경험이 있다는것입니다.

결코 혁도님 블로그 글의 내용이 잘못됐다는 이야기는 아니란 말씀!

 

멀쩡한 기기를 교체하거나 버리시기 전에, 이런 방법도 있으니 참고하셨으면 하여 포스팅합니다.

수원역에 영화볼겸 아내와 데이트 나갔다가 생일선물 앞당겨 받는셈 치고 사준다며

아내가 제게 안겨준 MG EX-S Ver.1.5 의 작업을 이제야 완료했습니다.

 

글 재주가 미천하여 이하 사진으로 설명을 대신하고자 합니다.

 

 

 

 

 

 

 

 

 

 

아이가 태어난 후 두번째 도색 완성작이네요.

확실히 아이 아빠가 되면 취미에 들일 수 있는 시간이 너무 적어요 ㅜㅜ

 

게시물 읽어주셔서 감사합니다. 

 

 

1. 빔스마트건, 인컴 및 전신 포인트에 크롬실버 부분도색

2. 정보량이 적은 흰부품 일부에 진회색과 연회색 투톤으로 포인트 부분도색

 

앞으로 남은 작업은 먹선 작업과 데칼링입니다.

 

크롬실버 부분도색 포인트 작업 완료.

흰색 면분할 하여 마스킹 후 옅은 회색으로 부분도색 진행 후 데칼링 및 마감제 작업하면 최종 완성.