Retro Game & PC/매뉴얼 팁 작업

Mednafen으로 Apple2/2+ 에뮬레이션 하는 방법

smores 2023. 12. 1. 11:39

자세한 내용은 official document 에 잘 나오기에 이것을 꼼꼼히 읽어보고 사용하면 상당히 만족스런 결과를 얻을 수 있다. 

 

https://mednafen.github.io/documentation/apple2.html

 

Mednafen Apple II/II+ Documentation

Enable specified OpenGL shader. Obviously, this will only work with the OpenGL "video.driver" setting, and only on cards and OpenGL implementations that support shaders, otherwise you will get a black screen, or Mednafen may display an error message when s

mednafen.github.io

 

 

BIOS ROMS

우선 필요로 하는 바이오스들을 준비해서 firmware folder 안에 넣어둬야 한다. 필요로 하는 바이오스 롬들은 총 6개인데 이름들을 독특하게 붙이고, 일부 바이오스는 타 에뮬레이터에서는 여러개로 나뉘어 있는 것을 하나로 합쳐놓은 것이기에 command prompt 상에서 copy /b file1+file2+...  outputfile  식으로 만들어야 하는 것들이 있다. 일단은 준비해 놓은 것을 하나의 압축 파일에 합쳐서 첨부해 놓는다. 

firmware.zip
0.02MB

 

 

위의 롬들만 있으면 다음 설명들은 필요 없지만, 알고 싶은 경우를 위해 준비 과정도 정리해 놓는다. 오피셜 문서에 보면 어느 롬이 어느 것인지 나오는데 disk 롬들은 다음의 롬 파일들의 이름만 맞게 바꾸면 된다. 롬 번호를 보고 맞는 이름으로 바꾸는 것이다.

a2diskroms.zip
0.00MB

 

 

하지만 애플소프트와 정수베이식 펌웨어 롬은 여러개의 롬을 합친 것이어서 원래의 롬을 어디서 구하나 고민하다가 MAME 0.260 에서 사용하는 것들을 들여다보니 다 있었다.

apple2.zip
0.20MB
apple2p.zip
0.01MB

 

압축을 풀어두고 다음 두 배치파일을 돌리면 필요로 하는 바이오스 롬들이 준비된다. 

make_apple2-asoft-auto.rom.bat
0.00MB
make_apple2-int-auto.rom.bat
0.00MB

 

 

실행 옵션들

준비된 롬들을 firmware 폴더에 넣어두면 실행 준비 완료. command prompt 모드에서 mednafen.exe 가 있는 폴더로 가서 mednafen option들... apple2용 디스켓파일   식으로 실행하면 실행이 된다. 역시 문서에 온갖 옵션들이 다 나오지만 일단 화면 조정을 위한 옵션들 위주로 조금 설명을 하자면

 

-apple2.videoip 1 

 bilinear filter 이것으로 살짝 뭉게진 듯한 부드러운 화면 처리로 화면 사이즈를 마음대로 바꾸어도 깔끔하게 보인다. 0 으로 하면 옵션을 끄는 것임. 가급적 이 옵션은 1 로.

-apple2.scanlines 20

스캔라인의 진한 정도. 0-100. 0일때는 스캔라인이 안보임. 스캔라인을 사용할 때는 이후에 설명할 애플 스크린 이미지 사이즈의 스캐일링 값 중 y 쪽은 가급적 정수배로 함. 안그러면 잘못하면 Moire 간섭무늬 발생

- apple2.video.mode composite

여러 모드들이 있지만 composite 이 제일 무난. composite 의 경우 애플2 그래픽에서 홀짝수 픽셀에 대한 색변화도 가장 실기스럽게 처리. 내부적으로는 double hires (가로 560도트) 기준으로 처리한다고.

-apple2.video.force_mono 3byte_color

옵션 값은 0x00FF00 식으로 3바이트 헥사값으로 준다. 앞에서부터 RGB. 0 일때는 컬러, 0이 아닐때는 주어진 값 기준으로 monochromatic 색상으로 보여준다. 0x00FF00 이면 녹색, 0xFFFFFF 면 흰색, 0xFFAA00 정도면 엠버(주황) 식으로 보임.

-apple2.stretch 0

풀스크린 화면(윈도우 보더나 타이틀 바 안보이는 경우)에서 강제 스트레칭을 안함. 이런 경우 x/yscalefs 값을 조절하여 원하는 사이즈로 마음대로 조절 가능. 

-x/yscale value

윈도우 모드에서의 애플2 화면 사이즈(윈도우 사이즈) 조절. 스캔라인을 안쓸경우는 마음대로 조절해도 되지만, 스캔라인을 사용할 경우는 yscale에 한해서는 가급적 정수배로.

-x/yscalefs value 

풀스크린 화면에서의 사이즈 조절. 앞의 윈도우 사이즈도 그렇고 기본적으로 타 애뮬레이터와 달리 1, 1 일때 단순히 애플 고해상도 픽셀수(native resolution, 280x192)가 아니라 세로는 192인데 가로는 LCD 화면에서도 4:3 에 가깝게 보이도록 약간 작은 숫자로 매칭시키는 듯 하다. 예전 4:3 CRT 모니터에서는 280x192 라도 4:3 의 사이즈로 맞춰주는데 비해 현대 LCD는 픽셀 사이즈가 정사각형이기에 280x192는 좌우로 좀 길어 보인다. 이걸 보정한 듯. 그래서 글자들이 윈도우즈 LCD 화면상에서는 약간 위아래로 길쭉해 보인다. 이를 보정하려면 1.1:1 정도로 가로쪽을 살짝 늘리는 것이 글자가 정사각에 가까와 보이는 느낌이다. 예를 들면 x, y 스케일 값을 3.3, 3 이나 4.4, 4 정도로 주면 적당해 보이는 듯. 가로로 정수배가 아니라도 videoip 1 로 linear interpolation 을 통해 깔끔하게 보인다. 

 

이정도의 설명을 바탕으로 한 커맨드 실행 사례는 다음과 같다. 

 

mednafen -apple2.videoip 1 -apple2.scanlines 20 -apple2.video.mode composite -apple2.video.force_mono 0x00FF00 -apple2.video.matrix cxa2025as_usa -apple2.stretch 0 -apple2.xscale 2.2 -apple2.yscale 2 -apple2.xscalefs 4.4 -apple2.yscalefs 4 loderunner.dsk

 

mednafen 에서는 이런 식으로 한번 실행하고 나면 실행했던 옵션들이 기록이 되어 있기에 다음번에는 단순히 mednafen loderunner.dsk 식으로만 실행해도 이전과 같은 옵션들로 다시 동작하기에 편리하다. 그리고 어떤 기기의 에뮬레이션을 할것인지는 mednafen 자체가 롬, 또는 디스크 이미지 타입을 확인해서 결정하기 때문에 이전에 포스팅한 mednafen gui 프로그램에서 apple2 선택 옵션이 없더라도 other options 항목에 원하는 식으로 바꾸고 싶은 옵션을 넣고 애플2 디스켓 이미지를 game rom 선택 항목에 넣어서 실행하면 잘 돌아간다. 예를 들면 다음 스크린샷과 같다.

 

 

 

멀티 디스크 이미지 기반의 소프트웨어

위의 경우 하나의 디스크 기반의 소프트웨어나 게임을 동작하기엔 충분하지만, 다수의 디스크에 들어있는 소프트웨어를 실행하려면 MAI 라는 파일을 하나 텍스트 에디터로 준비해 놓아야 한다. 내용은 역시 official document 에 잘 나오지만 예를 들어서 하나 준비해 놓은 것을 첨부해 놓는다. 

horo.mai
0.00MB

 

다른 옵션들도 중요하지만 멀티 디스크 관련한 부분의 핵심은 다음과 같은 옵션들이다.

 

disk2.enable 1
disk2.drive1.enable 1
disk2.drive2.enable 1

 

위의 내용은 disk2 를 사용하게 하고, 1, 2 드라이브 모두 사용 가능하게 한 상태이다. 사실 drive2 는 사용하지 않아도 된다. 뒤에 나오지만 drive1 에 여러 디스켓의 리스트를 매칭해 놓고 실행하면서 원하는 디스크 이미지를 선택하면 되기 때문.

 

disk2.disks.horo1 "Horo1" "horo1.dsk" 1
disk2.disks.horo2 "Horo2" "horo2.dsk" 1

 

위의 내용은 2개의 디스크 이미지, horo1.dsk와 horo2.dsk (사랑의 별점) 을 사용하는 예이다. disk2.disk2 다음에 나오는 것은 디스크 이미지에 대한 고유 이름(알파벳과 숫자만으로 이루어진 단일 단어, 공문자없이)이다. 뒤에 드라이브1에 리스팅 할때 쓰는 이름들. 그 다음 쌍따옴표안에 들어간 것은 디스켓 이미지 선택시에 UI  에서 보이는 이름. 그 다음 쌍따옴표 안에 들어가 있는 것이 디스크이미지 파일명. 마지만 1 이면 write protect 된 경우 (쓰기 방지), 0 이면 프로텍트 해제. 

 

mednafen 의 에뮬레이션에서는 프로텍트 안된 디스크라도 뭔가를 써도 실제로 디스크 이미지 안에 데이터를 변경하는 것이 아니라 일종의 상태 저장(실제로는 시스템 전체의 상태, 선택된 바이오스까지 포함) 파일에 그 상황을 기록하기에 mednafen 자체에서는 다시 같은 디스크 이미지를 사용하면 변경된 내용이 보이지만, AppleWin 처럼 실제로 작업 내용이 디스크 이미지 안에 저장되지 않는다. 즉, 실질적인 작업 보다는 mednafen 은 게임용으로 적합한 셈이다. 마치 게임 콘솔 롬을 다루듯 처리하는 셈이다.

 

disk2.drive1.disks *horo1 horo2

 

마지막으로 drive1 에 여러 디스크 이미지들을 미리 걸어둔다. 앞서 설명한 것 처럼 디스크 이미지에 대한 고유 이름(horo1, horo2)를 여기서 사용. 앞에서 disk2.disk2.d1  식으로 해 뒀으면 여기서도 d1 으로 해야된다.

 

리스트된 디스크 이미지들 중에서 하나를 선택하는 키는 F6 (순차적으로 선택 디스크가 바뀌어감), 그리고 해당 디스크를 드라이브에 넣거나 빼는 동작은 F8.

 

동작 상태 전환키

mednafen 이 실행되면 기본적으로 시스템 컨트롤 모드이다. 애플의 알파벳 키가 전혀 안먹는다. 이때 애플 고유의 키보드가 작동하게끔 하기 위해서는 모드 전환을 해야 하는데 L-SHIFT + L-CTRL + WinMenu (우측 ALT 옆에 있는 키, 윈도우키 말고) 로 두 모드 사이를 토글 방식으로 전환한다. 이 키들을 눌러서 애플 고유의 키보드 상태로 들어간 경우를 Input Grabbing 이라고 한다고.

 

조이스틱 에뮬레이션

조이스틱은 위의 mai 파일에 보면 gameio joystick 2 식으로 설정하는 것이 나온다. 커맨드 옵션에서라면

 

-apple2.input. port1 joystick

 

식으로 해야 할것이다. 조이스틱 키 매핑은 타 콘솔 에뮬레이션과 마찬가지로 컨트롤 모드상에서 L-SHIFT + L-ALT + 1 로 셋팅옵션으로 들어가서 화면 하단에 보이는 내용을 따라서 키를 입력해 주면 된다. 나의 경우 보통 조이스틱 4방향은 커서 4방향, 버튼 1은 R-SHIFT, 버튼 2은 R-CTRL, 그리고 Resistance Setting 인가 하는 것이 하나 더 있는데 Num 패드에 있는 0 (Ins) 를 할당해서 사용중이다. 이 마지막 키는 게임에 따라 최적의 저항값 옵션 4개 중 하나를 선택하는 것이다. 역시 공식 문서에 잘 설명이 되어 있다. 조이스틱을 사용할 때는 Input Grabbing Off (기본 시스템 컨트롤 상태) 에서 사용해야 한다. 약간 불편한 듯도 싶지만, 사실 개인적으로는 이것이 나아 보인다. 내가 좋아하는 Mr Robot and His Robot Factory 라는 게임의 경우 AppleWin에서 조이스틱 에뮬레이션을 커서키로 할 경우, 애플 키보드의 좌우 커서와 충돌이 있는 듯 조정이 잘 안되고 버벅거리는 경험을 할 수 있다. 이를 회피하려면 AppleWin 에서는 굳이 조이스틱 에뮬레이션을 NumPad 키로 하게끔 바꿔줘야 한다. 하지만 Mednafen 에서는 아예 모드를 전환한 상태로 사용하기에 같은 커서키라도 전혀 충돌이 없다. 그리고 키 매핑시에 mednafen 에서는 같은 키를 두번 입력해야 한다. 두번이 다른 키일 경우 재차 물어본다.

 

조이스틱 키 매핑 화면 (마지막 Resistance Select 옵션 선택 장면)

 

결론

mednafen의 apple2/2+ 에뮬레이션에는 여러 제약이 많다. 우선 apple2+ 까지만 지원하기에 2e 이상이 필요로 하는 소프트웨어는 사용할 수 없다. 게다가 CP/M, 80컬럼, 모킹보드 등이 전혀 지원되지 않는다. 가장 큰 문제로는 디스크 이미지 안에 작업 내용이 저장이 되지 않는다는 점은 실질적인 프로그램 작성 등에 사용하지 못하게 하는 단점이다. 멀티 디스크의 경우엔 마치 mednafen 의 세가세턴이나 플스1 에뮬레이션에서 멀티 디스크(CD)의 경우 디스크마다 cue 파일을 준비한 후, 여러 cue 들을 하나로 리스팅한 .m3u 파일을 준비하는 것과 같이 .mai 파일을 준비해야 한다. 결국은 apple2+ 까지에서 돌아가는 소프트웨어나 게임을 돌려보고 싶을때는 사용하기 적합한 에뮬레이터이다. 하지만 그런 단점들에도 불구하고 PC 윈도우즈가 돌아가는 고해상도 LCD 화면에서 에뮬레이트 된 스크린 이미지는 개인적으로는 여타 에뮬레이터들에 비해서 가장 CRT 상에서 보는 느낌에 가까운 화질을 제공한다는 것에서 크게 만족스럽다. CRT TV나 CRT 모니터를 구해서 연결해 사용할 수 있는 환경이라면 사실 이렇게까지 단점들을 감수하고 쓸 필요가 있을까 싶지만, 그런 환경이 아닌 경우 그나마 실기 CRT 화질 느낌을 약간이나마 느껴가면서 다양한 애플 소프트웨어를 사용해 본다는 측면에서는 나같이 화질에 목숨건 사람이라면 한번쯤 사용해 볼 만한 에뮬레이터라고 생각한다.