game.zip 외부에서 파일을 로드할 수 있는 Portal 1 및 2용 Nintendo Switch 플러그인으로, 무언가를 변경할 때마다 더 이상 큰 아카이브를 다시 포장하고 보낼 필요가 없습니다.
Portal 2 버전 1.0.3과 Portal 버전 1.0.2 또는 1.0.3이 있어야 합니다.
릴리스 다운로드:
포털-NXSideLoader.zip
네트워크 패치가 없으면(네트워크 사용이 차단되지 않음):
- Portal2-NXSideLoader.zip
네트워크 패치 사용(Nintendo 서버를 차단하는 사람들의 경우 충돌을 방지하고 디버깅에 도움이 되도록 게임의 네트워크 연결을 차단합니다):
- Portal2-NoWeb-NXSideLoader.zip
atmosphere
폴더를 sdcard의 루트에 넣습니다(예, CFW는 삭제되지 않습니다...)
게임에 따라 기본 모드 폴더 이름을 다음과 같이 변경합니다(예: Portal Reloaded의 경우 "portalreloaded").
portal
portal2_dlc3
이 폴더를 다음 위치에 넣으세요.
atmosphere/contents/01007BB017812000/romfs/nxcontent/
atmosphere/contents/0100ABD01785C000/romfs/nxcontent/
romfs 폴더 내의 모든 폴더 및 파일 이름은 소문자여야 합니다!
Some mods are overwriting menu options, so you can lose access to Switch controller settings.
If after installing mod you can't save anything in options, try to delete `gameinfo.txt` from mod folder. You may also delete custom options menu.
They are stored either freely somewhere inside mod folder OR they are packed to some vpk file.
모드에는 적절하게 최적화된 CPU 코드가 있어야 합니다. 그렇지 않으면 스위치가 질식하게 됩니다.
적절하게 최적화된 모드의 예:
잘못 최적화된 모드의 예:
nxcontent
의 일부 파일은 별도의 기능이 미리 로드되어 있으므로 지원되지 않을 수 있습니다. rom_boot_params.txt
를 로드할 수 있도록 한 함수에 대한 특정 지원을 추가해야 했습니다. 작동하지 않는 파일이 있고 작동하길 원한다면 이슈를 작성하세요.
게임은 vscript를 지원합니다.
이 모드에서는 소스 코드 수정이 지원되지 않습니다. 수동으로 후크를 직접 만들어야 합니다.
게임 개발자는 game.zip을 파일 시스템으로 사용하도록 전체 cstdio를 재설계했습니다. 대부분의 파일을 여는 포털 게임은 fopen_nx()
라는 함수를 사용합니다. 이 파일을 읽으려면 - fread_nx()
등. 모든 기능은 cstdio와 상호 호환되므로 솔루션은 매우 쉬웠습니다.
fopen_nx()
rom:/
으로 시작하는 올바른 경로를 사용하여 fopen()
에 대한 호출을 리디렉션합니다.이 솔루션에는 두 가지 문제가 있었습니다.
rom_boot_params.txt
이므로 이 파일을 읽는 기능을 연결하고 SD 카드에서 파일을 로드하도록 다시 설계했습니다. 나중에 동일한 기능이 bsp 파일에서 사운드 파일과 텍스처를 로드하는 역할을 한다는 것이 밝혀졌습니다.fopen_nx()
경로 로드는 대소문자를 무시하고 파일이 nxcontent
폴더 내에 있는지 먼저 확인하고 그렇지 않은 경우 zip의 루트를 확인하는 우선순위를 갖습니다. HOS romfs 파일 로딩은 대소문자를 구분하고 모든 원본 파일은 소문자이므로 후크 내부에서 이 검사를 다시 구현하고 파일 경로에 tolower()
사용했습니다.Switch-dev를 사용하여 표준 devkitpro를 설치해야 합니다.
다음으로 exefs에서 main.npdm
패치하세요. 그렇지 않으면 플러그인이 충돌합니다: https://github.com/skyline-dev/skyline/blob/master/scripts/patchNpdm.py
Portal 1용으로 컴파일하려면 명령을 사용하세요.
make PORTAL="-DPORTAL"
포털 2의 경우
make PORTAL="-DPORTAL2"
Nintendo 서버에 대한 액세스를 차단한 네트워크를 통한 디버깅을 허용하는 인터넷 패치
make PORTAL="-DPORTAL2 -DPDEBUG"