2022년 8월 10일 수요일

MMC/SD Drive V4 제작 #17 - 마이크로캐빈 디스크의 자동인식

[서론]


혹시 중/고딩 시절 디스크 게임을 실행할 때 부팅이 안되는 경우를 겪어보신 적이 있나요?


디스크 게임에서 발생하는 가장 큰 문제는 메모리 부족현상입니다.

사용환경에 따라 WORKAREA가 점유하는 용량이 다르게 되니, 결국 스택 부족으로 프로그램이 죽는거죠.

(사실 메모리매퍼를 활용하면 좋겠지만, MSX2 최소사양이 램 64KB라서 거기 딱 맞춘...ㅋ)


주변기기들은 각자 필요한 메모리(RAM) 공간을 WORKAREA를 통해 할당합니다.

FDD를 여러개를 장착하면 점유 메모리도 더 늘어나게됩니다.

근데 이게 80년대에는 별 문제가 없었어요.

보통은 본체내장 FDD 또는 외장 FDD 한대만 연결해서 쓰니까요.


암튼 당시 게임들이 FDD 한개의 환경에 딱 맞도록 구동하고 있는데요.

좀 특이한 경우가 두가지가 있습니다.


@ 코에이 게임

이 게임들은 드라이브 문자 1개(A:)만 할당했을 때의 여유메모리를 필요로 합니다.

부팅할 때 CTRL 키를 눌러서 FDD의 B: 드라이브 용 메모리를 해제해야합니다.

그냥 부팅하면 친절하게도 CTRL 키를 눌러서 다시 부팅하라고 알려줍니다요.

만약 디스크 기기가 두개 이상이라면, CTRL 키를 눌러도 드라이브 문자가 두개(A: B:)라서 실행안됩니다.

MMC/SD의 ONE-Drive 모드가 들어있는 이유가 이 때문입니다. 대부분 FDD 내장된 기종을 사용하시니까요.


조금 특이한 경우라면 대우의 듀얼FDD인 CPF-360C인데요.

이넘은 CTRL 키를 눌러도 메모리 해제가 안되는걸로 알려져있어요.

통상의 방법으로는 코에이 게임을 구동하는게 불가능합니다.

(물론 꼼수는 있어요. 궁금하시면 게시판 검색 ㄱㄱ)



@ 마이크로캐빈 게임

이쪽은 좀 많이 특이한 경우인데요ㅋ

드라이브 문자가 1개(A:)만 있어도 구동이 안되고, 3개(C: ~) 이상 있어도 안됩니다.

딱 두개(A: B:)만 있어야합니다. 그지 같다능...



[본론]


만약 본체에 디스크 기기가 두개가 존재한다면, 마이크로캐빈의 게임을 어떻게 구동해야할까요?

부팅할 때 CTRL 키를 눌러주면 됩니다. 쉽죠?


근데 MMC/SD V3,V4는 DSK 구동 시 ONE-Drive가 기본적으로 ON이 되어있습니다. (MMC/SD V1,V2는 OFF가 기본값)

부팅할 때 본체의 FDD를 초기화하지 않습니다. 그러니까 디스크기기는 1개, 드라이브 문자도 1개(A:)가 되는 셈이죠.

결국 ONE-Drive를 켜면 프레이 같은 게임들이 실행이 안됩니다.

이 문제로 게시판에 가끔 질문이 올라오곤 하더라구요. ㅎ.ㅎ


정상적으로 실행하려면, /DO 옵션으로 ONE-Drive를 꺼야합니다.

물론 부팅할 때 CTRL 키를 눌러서 드라이브 문자를 두개로 맞춰야하겠구요.


"나는 /DO 쓰고 CTRL 키 눌러도 안되던데???"라고 하실 분 있을거에요.

아이큐2000, FS-A1처럼 본체에 FDD가 없는 경우인데요. 이때는 CTRL 키를 누르면 안됩니다.

드라이브 문자가 하나만 남으니까요. 그냥 부팅해서 문자 2개(A: B:)를 유지해줘야합니다.


MMC/SD 한개로 여러 종류의 환경에서 쓸 때 귀찮은 문제가 이 '마이크로캐빈'의 게임입니다요.

한참 V2를 쓰던 시절에도 그랬고, 지금의 V4도 마찬가지구요.

V1/V2 시절에는 DSK 구동옵션이 저장되는 방식이라 SD카드를 따로쓰면 쉽게 해결됩니다만...

지금의 V3/V4에서는 실행할 때 옵션 선택을 해야되니, 이게 무슨 상황인지 이해를 해야합니다.


저는 이십여년 이 짓(?)을 했으니 별로 어렵지 않은데, 아마 위에 쓴 내용도 이해가 안가시는 분들도 계실거에요.

뭐 예전에 이런 말 하는 분도 봤는데, "MSX쪽 개발하는 사람들은 죄다 ㅂㅅ인지, 그냥 한방에 실행되게 못 만드냐?"

MSX를 수퍼패미콤 같은 단일기종의 콘솔 겜기 정도로 생각하는 사람이 꽤 많거든요.

그 놈의 재믹스 때문에...-_-

진짜 대X전자 담당자를 한대 때려주고 싶습니다요. (멍청한 유저는 죄가 없...ㅋ)

.

.

.


하지만, 결국 제가 백기를 들었습니다ㅋㅋ

어차피 현재 문제되는 경우가 마이크로캐빈 게임들 뿐이니까 이넘들만 자동으로 처리해주는 걸로 정리했어요.

프레이, XAK, 공주만들기, 환영도시 등 게임 갯수가 몇개 안되니까...

MMCSD.COM에서 실행할 때 디스크를 구분해서 /DO 옵션이 자동적용되도록 했습니다.

그리고 본체의 FDD 유무에 따라 CTRL 키 부팅을 자동설정해줍니다.


본체 환경을 따질 필요없이, 그냥 옵션 없이 DSK를 구동하면 되겠습니다.



[결론]


FDD_EMU 모드에서는 아무옵션 없이 실행하면 이렇게 동작합니다.

일반 게임, 코에이 게임 -> ONE-Drive ON

마이크로캐빈 게임 -> ONE-Drive OFF 및 조건부 CTRL 부팅 사용


참고)

GameRunner II에서는 항상 FDD_EMU가 드라이브 문자 2개(A: B:)로 동작합니다.

해당 머신의 실기를 쓰는 느낌으로 쓰시면 되겠습니다.

-> 코에이 게임의 경우, CTRL 키를 눌러서 부팅!


그럼, 즐 MMC/SD 하셔요~ ㅎ.ㅎ


2022년 8월 3일 수요일

NeoTron 카트리지가 왔습니다.

아시다시피 NeoTron은 준소프트님이 제작하신 사운드카트리지의 해외판매버전입니다.

SuperSoniqs에서 판매하고 있지요.


그 동안 살까말까 고민하다 몇 년이 흘러버렸는데요.

최근에야 구매했습니다. 그리고, 오늘 택배가 왔네요! ㅎ.ㅎ/








저의 확장슬롯(SLT-X)에 NetoTron이 자리잡은 모습입니다.

V4와 MoonBase 사이에 있네요~





현재 저의 슬롯 상황입니다.


SLOT 0-1 = T-Wave

SLOT 1   = PAC-V (BLUE ver.)

SLOT 2-0 = MMC/SD Drive V4

SLOT 2-1 = NeoTron

SLOT 2-2 = MoonBase + MoonSound

SLOT 2-3 = MPX R1.1

SLOT I/O = FontPack V2


FontPack이 I/O 슬롯에 있다보니, ANSI스크린, 한글IME는 구동불가입니다요~

참고로 이 상태에서 CP949한글 및 유니코드 직접출력은 가능합니다.


카트리지들은 현상태로 수년간 붙박이가 되겠네요.



NeoTron을 꽂았으니 VGMPlay를 잠시 돌려봅니다.

소리가 잘 나오네요~ ㅎ.ㅎ/





사운드 출력되는 카트리지가 많다보니 저의 오디오믹서도 Full 상태가 되었습니다.




그럼, 이만~~


2022년 8월 2일 화요일

MMC/SD Drive V4 제작 #16 - PSG 비주얼라이저 개선

PAC-V는 기본적으로 FM(OPLL) 채널 비주얼라이저로 동작합니다.

만약 FM을 사용하지 않는 경우, V4의 GameRunner II에서 PSG + SCC 채널 비주얼라이저로 쓸 수 있습니다.

이 때 PSG만 사용하는 프로그램이 구동되면, PAC-V의 9개 LED 중 3개 LED만 움직이게됩니다.


이 부분이 좀 심심하다는 의견이 있어서...

PSG 전용 비주얼라이저 모드를 따로 구현해보았습니다.


PSG의 각 채널 출력 시, 음높이(주파수)에 따라 LED가 동작하게 됩니다.

멜로디에 주로 쓰이는 옥타브 3,4,5 범위를 9개 LED가 나눠서 표시합니다.

너무 낮거나 높은 주파수라면 왼쪽끝 또는 오른쪽 끝 LED가 켜지게 되겠네요.


동작모습은 아래 영상으로 확인하셔요~ ㅎ.ㅎ





마지막으로,

영상 끝부분의 Zanac EX 실행에서는 MMCSD의 /V 옵션을 사용하는 것을 볼 수 있는데요.

MegaRAM 모드에서 R800 고속모드를 사용하는 경우에도 PSG/SCC 비주얼라이저를 쓸 수 있도록 해주는 옵션입니다.

자세한 내용은 MMC/SD Tool 업뎃에서 확인하시면 되겠습니다.


그럼 이만...