미친해커

[Nintendo 3DS] 닌텐도 3DS 개발환경 구축하기 본문

Nintendo/3DS

[Nintendo 3DS] 닌텐도 3DS 개발환경 구축하기

미친해커 2022. 4. 19. 02:16
반응형

닌텐도 3DS 개발에 도전하게된 이유

이유는 없다. 필자가 지금까지 무언가에 도전하는데에는 큰 이유가 있지 않다. 그냥 단순히 재밌어보이고 해보고 싶기 때문이다. 이번에도 닌텐도 3DS의 시스템에 관심이 생겨 한번 도전하게 되었다.

닌텐도 3DS 개발환경 구축

1. devkitPro Install

devkitPro는 GCC 툴체인 기반의 ARM을 지원하는 컴파일러이다. 닌텐도 3DS는 ARM 기반의 시스템이기 때문에 ARM 컴파일러가 필요하다. 이를 위해 devkiPro를 이용해 크로스 컴파일(다른 환경의 바이너리로 컴파일 하는 것)을 한다. 다음 링크에서 Installer를 다운한다.

 

Releases · devkitPro/installer

Contribute to devkitPro/installer development by creating an account on GitHub.

github.com

devkitProUpdater-3.0.3.exe
0.19MB

위 과정을 따라오면 3DS 개발용 컴파일러가 설치되고 환경변수도 설정된다.

2. Visual Studio Code 컴파일 설정

make를 사용해 컴파일을 할 수도 있지만 나는 따로 설정했다.

// c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "C:/devkitPro/libctru/include/**",
                "C:/devkitPro/devkitARM/arm-none-eabi/include/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:/devkitPro/devkitARM/bin/arm-none-eabi-gcc.exe"
        }
    ],
    "version": 4
}
// tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "arm-none-eabi-gcc Nintendo 3DS Compile",
            "type": "process",
            "command": "cmd",
            "args": [
                "/c",
                "C:\\devkitPro\\devkitARM\\bin\\arm-none-eabi-gcc.exe",
                "-MMD",
                "-MP",
                "-MF",
                "${fileDirname}\\${fileBasenameNoExtension}.d",
                "-g",
                "-Wall",
                "-O2",
                "-mword-relocations",
                "-ffunction-sections",
                "-march=armv6k",
                "-mtune=mpcore",
                "-mfloat-abi=hard",
                "-mtp=soft",
                "-I",
                "${fileDirname}",
                "-I",
                "C:\\devkitPro\\libctru\\include",
                "-D__3DS__",
                "-c",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.o",
                "&&",
                "C:\\devkitPro\\devkitARM\\bin\\arm-none-eabi-gcc.exe",
                "-specs=3dsx.specs",
                "-g",
                "-march=armv6k",
                "-mtune=mpcore",
                "-mfloat-abi=hard",
                "-mtp=soft",
                "-Wl,-Map,${fileDirname}\\${fileBasenameNoExtension}.map",
                "${fileDirname}\\${fileBasenameNoExtension}.o",
                "-LC:\\devkitPro\\libctru\\lib",
                "-lctru",
                "-lm",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.elf",
                "&&",
                "C:\\devkitPro\\devkitARM\\bin\\arm-none-eabi-gcc-nm.exe",
                "-CSn",
                "${fileDirname}\\${fileBasenameNoExtension}.elf",
                "&&",
                "C:\\devkitPro\\tools\\bin\\smdhtool.exe",
                "--create",
                "패키지 이름",
                "프로그램 이름",
                "제작자",
                "C:\\devkitPro\\libctru\\default_icon.png",
                "${fileDirname}\\${fileBasenameNoExtension}.smdh",
                "&&",
                "C:\\devkitPro\\tools\\bin\\3dsxtool.exe",
                "${fileDirname}\\${fileBasenameNoExtension}.elf",
                "${fileDirname}\\${fileBasenameNoExtension}.3dsx",
                "--smdh=${fileDirname}\\${fileBasenameNoExtension}.smdh"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "group": "build",
            "detail": "컴파일러: arm-none-eabi-gcc"
        }
    ]
}

위 두개의 파일을 각각 저장해 VS Code의 Workspace 폴더 최상위에 .vscode 폴더를 만들어 넣어주면 된다.

3. Nintendo 3DS 에뮬레이터 설치

실제로 커펌(커스텀 펌웨어)된 닌텐도 3DS가 없는 경우에는 닌텐도 3DS 개발을 하더라도 해당 바이너리를 실행시킬 수 없다. 그렇기에 다음과 같이 에뮬레이터를 설치해주자

 

Download Citra · Citra

The nightly build of Citra contains already reviewed and tested features. If you require support with the installation or use of Citra, or you want to report bugs you should use this version. This version is still in development, so expect crashes and bugs

citra-emu.org

citra-setup-windows.exe
18.79MB

4. 셋팅 확인

이렇게 cmd를 열고 where make 명령어를 했을 때 정상적으로 잡히면 성공이다. 잡히지 않는다면 따로 환경변수 셋팅을 해주도록 하자.

반응형
Comments