Playnite나 LaunchBox로 레트로 게임 라이브러리를 정리해 두었는데, Mesen2를 실행할 때마다 창 모드로 뜨고 마우스로 전체 화면을 다시 켜야 한다면 꽤 번거롭습니다. 이 부분은 명령줄 인수(커맨드라인 인수, 실행 인수)를 한 줄 덧붙이는 것으로 해결할 수 있습니다.
인터넷에 돌아다니는 Mesen 인수 목록 중에는 예전 Mesen(1.x) 시절의 표기나 실제로는 존재하지 않는 인수가 섞여 있는 경우가 있습니다. 이 글은 Mesen2 공식 GitHub 저장소의 소스 코드(명령줄 처리 부분)를 직접 확인해서, 실제로 존재하는 인수만 정리했습니다.
바로 가기·Playnite·LaunchBox에서의 입력 예, 설정값 덮어쓰기, 안 먹힐 때 점검할 부분까지 실행 옵션만 정리합니다(설치·패드 매핑·되감기 설정은 다루지 않습니다).
확인일: 2026-10-13. 명령줄 인수는 Mesen2 버전에 따라 바뀔 수 있으니, 동작하지 않으면 Mesen2 공식 GitHub의 최신 소스·문서를 확인하세요. (확인한 소스: SourMesen/Mesen2 저장소 2026-06-04 커밋(2.1.1 전후 버전의 보관본), 그리고 현재 개발이 이어지고 있는 커뮤니티 에디션 nesdev-org/MesenCE 저장소 2026-10-07 커밋. 두 저장소의 명령줄 처리 코드는 동일했습니다.)
1. 명령줄 인수란? 어디에 입력하나
명령줄 인수라고 하면 검은 화면에 명령어를 직접 치는 작업을 떠올리기 쉽지만, 여기서 할 일은 실행 설정 뒤에 짧은 옵션 문자열을 붙이는 것뿐입니다. 예를 들어 Mesen2를 그냥 실행하면 창 모드로 뜨지만, 실행할 때 –fullscreen을 붙이면 전체 화면으로 시작합니다.
Mesen2 소스 기준으로 인수 표기 규칙은 다음과 같습니다.
- 앞에 붙이는 기호는 —, –, / 중 어느 것이든 인식합니다. 프로그램 안의 도움말은 — 형식으로 표시하므로 이 글도 —로 통일합니다.
- 인수 이름은 대소문자를 구분하지 않습니다. –fullscreen과 –FullScreen은 같게 처리됩니다.
- 인수가 아니라 실제로 존재하는 파일 경로를 넘기면 그 파일(롬)을 불러옵니다. 확장자가 .lua인 파일은 Lua 스크립트로 열립니다.
Mesen2 안에서도 인수 목록을 볼 수 있습니다. 메뉴의 Help → Command-line options를 열면 일반 인수와 설정값 덮어쓰기 목록이 탭별로 나옵니다. Mesen2에는 현재 공식 한국어 메뉴가 없어(소스에 영어 리소스만 포함) 메뉴 이름은 영어 그대로 적었습니다.
방법 ①: 바로 가기 아이콘에 추가하기
바탕 화면의 바로 가기로 Mesen2를 실행한다면 다음 순서로 설정합니다.
- Mesen2 바로 가기 아이콘을 마우스 오른쪽 버튼으로 클릭하고 속성을 엽니다.
- 바로 가기 탭의 대상 칸을 확인합니다. “C:\Games\Mesen2\Mesen.exe”처럼 .exe” 로 끝나 있을 것입니다.
- 닫는 큰따옴표 바깥쪽에 공백 한 칸을 넣고 인수를 적습니다.
- 확인을 눌러 저장합니다.
예시(전체 화면으로 실행):
“C:\Games\Mesen2\Mesen.exe” –fullscreen
exe 경로는 각자 환경에 맞게 바꾸고, “exe 경로” + 공백 + 인수 형태만 지키면 됩니다. 되돌릴 때는 덧붙인 부분만 지웁니다.
방법 ②: 프런트엔드(Playnite·LaunchBox)에 입력하기
Playnite나 LaunchBox를 쓴다면 에뮬레이터 설정의 인수 입력 칸에 적습니다. 이 방식의 장점은 프런트엔드에서 실행할 때만 옵션이 적용된다는 점입니다. 직접 실행할 때는 창 모드로 설정을 만지고, 프런트엔드로 실행할 때는 전체 화면으로 플레이하는 식으로, 따로 전환하지 않아도 자연스럽게 나눠 쓸 수 있습니다. 구체적인 입력 예는 3장에서 다룹니다.
2. 자주 쓰는 Mesen2 명령줄 인수 4가지
Mesen2의 일반 인수는 많지 않습니다. 게임을 즐기는 용도라면 아래 4가지만 알아도 충분합니다.
① –fullscreen (전체 화면 실행)
전체 화면으로 시작합니다. 롬 경로와 함께 넘기면 롬을 불러온 뒤에 전체 화면으로 전환됩니다. 프런트엔드에서 콘솔 기기처럼 바로 게임 화면이 뜨게 하려면 이 인수가 기본입니다.
② –loadLastSession (마지막 상태에서 이어하기)
함께 넘긴 게임을 마지막으로 플레이를 끝낸 상태 그대로 이어서 시작합니다. 매일 조금씩 이어서 하는 RPG에 편리합니다. 롬 경로와 함께 사용하는 것을 전제로 하는 인수입니다.
③ –doNotSaveSettings (설정을 저장하지 않음)
실행 중에 바꾼 설정을 디스크에 저장하지 않습니다. Mesen2 도움말에도 “명령줄 옵션이 기본 설정이 되어 버리는 것을 막는 데 유용하다”는 취지로 설명되어 있습니다. 4장에서 설명하는 설정값 덮어쓰기와 함께 쓸 때 특히 중요합니다.
④ –recordMovie=”파일명.mmo” (무비 녹화 시작)
게임을 불러온 직후부터 Mesen 무비(입력 기록) 녹화를 시작합니다. 플레이 기록을 남기거나 TAS 연습을 할 때 쓰는 인수로, 일반적인 플레이에는 필요 없습니다.
복사해서 쓰는 기본 세트
가장 많이 쓰는 조합은 전체 화면 실행과 이어하기입니다.
–fullscreen –loadLastSession
처음 시작하는 게임이라면 –fullscreen만으로도 충분합니다. 이렇게 실행 과정을 정리해 두면 남는 것은 입력 장치 정도입니다. 패미컴 배열의 USB 패드를 하나 정해 두면 프런트엔드로 실행했을 때도 버튼 배치에 헷갈릴 일이 줄어듭니다.
3. Playnite·LaunchBox 실행 인수 설정 예시
① Playnite 설정 예시
- Playnite 데스크톱 모드에서 메인 메뉴 → Library → Configure emulators…를 엽니다.
- Mesen2를 선택하고 실행 프로필의 Arguments 칸을 찾습니다.
- 롬 경로 변수 {ImagePath} 뒤에 공백을 두고 인수를 덧붙입니다.
Playnite 입력 예:
“{ImagePath}” –fullscreen
이어하기까지 쓰려면 다음과 같이 적습니다.
“{ImagePath}” –fullscreen –loadLastSession
- {ImagePath}는 Playnite 공식 문서에서 게임(롬) 파일 경로를 가리키는 변수입니다. 이것을 지우면 Mesen2는 뜨지만 게임이 시작되지 않습니다.
- 이미 {ImagePath}가 따옴표로 감싸여 들어가 있다면 따옴표가 이중으로 붙지 않게 정리하세요.
- Mesen2는 인수를 하나씩 따로 처리하기 때문에 롬 경로와 옵션의 순서는 바뀌어도 동작합니다.
② LaunchBox 설정 예시
- 메뉴에서 Tools → Manage → Emulators…를 엽니다.
- Mesen2를 선택하고 Edit를 누릅니다.
- Default Command-Line Parameters 칸에 인수를 입력합니다.
LaunchBox 입력 예:
–fullscreen
LaunchBox는 기본적으로 게임 파일 경로를 명령줄 맨 끝에 자동으로 붙이므로, 이 칸에는 옵션만 적으면 됩니다. 경로 위치를 직접 정하고 싶다면 LaunchBox 변수 %romfile%를 쓸 수 있습니다. 설정 화면의 미리보기(Sample Command)에서 실제로 넘어가는 명령을 확인할 수 있으니, 게임이 안 열리면 여기부터 보세요. 메뉴 이름은 LaunchBox 버전에 따라 조금씩 다를 수 있습니다.
화면이 깜빡이거나 동작이 이상할 때
인수를 넣은 뒤 화면이 깜빡이거나 창 포커스가 빠지는 경우, 흔한 원인은 전체 화면 설정이 이중으로 걸리는 것입니다. 프런트엔드 쪽에도 전체 화면 관련 옵션이 켜져 있으면 –fullscreen과 겹칠 수 있습니다. 이럴 때는 한쪽을 끄고 인수 쪽으로 통일하면 안정되는 경우가 많습니다.
4. 설정값 직접 덮어쓰기와 기종별 설정 나누기
예전 Mesen 관련 글에는 설정 파일을 지정하는 인수가 소개되기도 하지만, Mesen2 소스에는 별도의 설정 파일을 지정하는 인수가 없습니다. 대신 Mesen2에는 설정값을 인수로 직접 덮어쓰는 기능이 있습니다.
형식: –분류.설정이름=값
Help → Command-line options 창의 Audio·Video·Preferences·NES·SNES·Game Boy 등의 탭에 나오는 항목을 –분류.설정이름=값 형식으로 넘기면, 그 실행에서 해당 설정이 바뀝니다. 켜고 끄는 항목은 true/false, 숫자 항목은 도움말에 표시된 범위 안의 값, 선택 항목은 도움말에 나온 이름 중 하나를 씁니다.
예시(GB 계열 게임을 소리 줄이고 SGB 테두리 없이 실행):
–fullscreen –audio.masterVolume=40 –gameBoy.hideSgbBorders=true –doNotSaveSettings
주의: –doNotSaveSettings를 함께 쓰기
인수로 덮어쓴 설정은 그대로 두면 종료할 때 일반 설정으로 저장될 수 있습니다. 그래서 Mesen2 도움말도 –doNotSaveSettings를 함께 쓰라는 취지로 설명합니다. 기종별·프로필별로 설정을 바꿔 쓸 생각이라면 덮어쓰기 인수 뒤에 –doNotSaveSettings를 꼭 붙이는 것을 권합니다.
또 값 부분에는 영문·숫자·밑줄·점·하이픈만 인식되므로 공백이 들어간 값은 넘길 수 없습니다.
Playnite에서 기종별로 나누는 예
Playnite는 에뮬레이터 하나에 실행 프로필을 여러 개 만들 수 있으므로, 플랫폼별 프로필에 서로 다른 인수를 넣는 방식으로 기종별 설정을 나눌 수 있습니다.
게임보이용 프로필 예:
“{ImagePath}” –fullscreen –gameBoy.hideSgbBorders=true –doNotSaveSettings
슈퍼패미컴(슈패)용 프로필 예:
“{ImagePath}” –fullscreen –video.fullscreenForceIntegerScale=true –doNotSaveSettings
설정 자체를 통째로 나누고 싶다면: 포터블 모드
Mesen2는 exe와 같은 폴더에 settings.json이 있으면 그 폴더를 설정 폴더로 쓰고(포터블 모드), 없으면 문서 폴더 안의 Mesen2 폴더(Windows 기준, 커뮤니티 에디션 MesenCE는 MesenCE 폴더)를 씁니다. 따라서 Mesen2 폴더를 기종별로 따로 복사해 각각 포터블 모드로 쓰면, 설정 전체를 완전히 분리할 수 있습니다.
5. Mesen2 명령줄 인수 목록(기능별)
Mesen2 소스와 프로그램 내 도움말에서 확인한 인수만 정리했습니다.
일반 인수
| 인수 | 기능 | 쓰는 상황 |
|---|---|---|
| –fullscreen | 전체 화면으로 실행 | 프런트엔드 실행, 바로 가기 실행 |
| –loadLastSession | 마지막으로 끝낸 상태에서 이어서 시작 | 매일 이어서 하는 게임 |
| –doNotSaveSettings | 설정을 디스크에 저장하지 않음 | 설정값 덮어쓰기, 테스트, 공용 PC |
| –recordMovie=”파일명.mmo” | 게임을 불러온 뒤 무비 녹화 시작 | 플레이 기록, TAS 연습 |
| –enableStdout | 로그 창 내용을 표준 출력으로 내보냄 | 문제 진단, 개발 용도 |
| –testRunner [Lua 스크립트] [롬 파일] | 화면 없이 Lua 스크립트를 실행 | 자동 테스트 등 개발 용도 |
설정값 덮어쓰기 예시
| 인수 | 기능 | 쓰는 상황 |
|---|---|---|
| –audio.enableAudio=false | 소리를 끈 상태로 실행 | 밤늦게 동작만 확인할 때 |
| –audio.masterVolume=40 | 전체 음량 지정(0~100) | 기종별 음량 맞추기 |
| –video.useExclusiveFullscreen=true | 배타적 전체 화면 사용 | 전체 화면 동작을 바꿔 보고 싶을 때 |
| –video.fullscreenForceIntegerScale=true | 전체 화면에서 정수 배율 강제 | 도트를 고르게 표시하고 싶을 때 |
| –video.aspectRatio=Auto | 화면비 지정(NoStretching, Auto, NTSC, PAL, Standard, Widescreen, Custom) | 기종별 화면비 조정 |
| –preferences.singleInstance=true | Mesen2를 하나만 실행(기본값 true. 저장된 설정으로 판정하므로 반영은 다음 실행부터) | 여러 창이 뜨는 것을 막을 때 |
| –gameBoy.hideSgbBorders=true | 슈퍼 게임보이 테두리 숨김 | GB 게임을 화면 가득 표시 |
전체 항목은 Help → Command-line options 창의 각 탭에서 확인하세요. 이 목록은 설정 항목에서 자동 생성되므로 버전이 바뀌어도 가장 정확합니다.
6. 인수가 안 먹힐 때: 자주 하는 실수
실수 ①: 인수 사이에 공백이 없다
여러 인수를 쓸 때는 사이에 반드시 공백을 한 칸 넣어야 합니다.
잘못된 예: –fullscreen–loadLastSession
올바른 예: –fullscreen –loadLastSession
또 웹 페이지나 메신저에서 복사해 붙여 넣으면 눈에 보이지 않는 특수 공백(줄 바꿈하지 않는 공백, 전각 공백 등)이 섞이는 경우가 있습니다. 보기에는 맞는데 동작하지 않는다면 공백 부분을 지우고 키보드로 직접 다시 입력해 보세요.
실수 ②: 바로 가기에서 큰따옴표 안쪽에 적었다
공백이 들어간 경로는 큰따옴표로 감싸야 하고, 인수는 그 바깥쪽에 적어야 합니다.
잘못된 예: “C:\Program Files\Mesen2\Mesen.exe –fullscreen”
올바른 예: “C:\Program Files\Mesen2\Mesen.exe” –fullscreen
실수 ③: Mesen2에 없는 인수를 썼다
Mesen2가 인식하지 못하는 인수를 넘기면 화면에 Invalid argument: (넘긴 인수) 메시지가 표시됩니다. 예전 Mesen용 글이나 다른 에뮬레이터의 인수를 그대로 가져오면 이 메시지가 뜨기 쉽습니다. 또 존재하지 않는 롬 경로를 넘기면 파일을 찾을 수 없다는 메시지가 나옵니다. 메시지가 뜨면 Help → Command-line options의 표기와 롬 경로를 다시 확인하세요.
정리: 자주 묻는 질문
Mesen2에서 실제로 쓸 만한 명령줄 인수는 –fullscreen, –loadLastSession, –doNotSaveSettings 정도이고, 나머지는 설정값 덮어쓰기(–분류.설정이름=값)로 대부분 해결됩니다. 프런트엔드에는 “{ImagePath}” –fullscreen부터 넣어 보고, 필요한 만큼 덮어쓰기 인수를 더하는 순서를 권합니다.
Q. 명령줄 인수가 안 먹힐 때는 무엇부터 보나요?
Mesen2 화면에 Invalid argument 메시지가 떴는지 먼저 확인하세요. 떴다면 인수 이름이나 값(범위를 벗어난 숫자, 없는 선택지 등)이 틀린 것이고, 뜨지 않았다면 바로 가기의 큰따옴표 위치나 프런트엔드의 다른 전체 화면 옵션과의 충돌을 의심해 볼 만합니다. Mesen2가 이미 실행 중인 상태(단일 인스턴스 설정)에서 다시 실행하면 인수는 이미 떠 있는 창으로 전달되니, 한 번 완전히 종료한 뒤 다시 실행해 보는 것도 방법입니다.
Q. Mesen 한글 메뉴에서는 어디서 인수 목록을 보나요?
현재 Mesen2 공식 소스에는 한국어 메뉴가 포함되어 있지 않습니다. 영어 메뉴의 Help → Command-line options에서 확인할 수 있습니다.
Q. Playnite에서 Mesen2는 뜨는데 롬이 안 열립니다.
Arguments 칸에 {ImagePath}가 빠졌거나 따옴표가 이중으로 붙은 경우가 대부분입니다. “{ImagePath}” –fullscreen 형태로 다시 적어 보세요. 롬 파일은 본인이 소유한 정품에서 직접 추출한 파일만 사용하세요. 한국 저작권법상 롬 파일을 내려받거나 배포하는 것은 위법입니다(이 글은 법적 조언이 아닙니다).

コメント