2024년 12월 3일 화요일

HI-TECH C - ROM 카트리지 만들기

프로그래밍 글은 오랜만에 쓰네요. 지난 글을 검색해보니 마지막 글이 2016년이었..ㅎ.ㅎㅋ


지난 송년회 때 ROM파일 제작 얘기가 나와서, 관련 내용으로 글을 한번 적어봅니다.

일단, 여기서 설명하는 'HI-TECH C'는 제가 만든 뱅킹 툴과 결합된 툴체인을 의미합니다.

기존 CP/M 및 MS-DOS 버전과는 차이가 있으니, 잘 모르는 부분이 있으시면 지난 글을 검색해서 보시면 좋겠습니다.



CFG 파일에서 설정된 app-mode에 따라 DOS1 또는 DOS2용 실행파일(COM 또는 COM + OVL)이 생성됩니다.

이건 뭐 다 알고 계시죠? ㅎ.ㅎ


그러면, 생성된 실행파일을 롬 카트리지로 제작하려면 어떻게 해야될까요?

몇가지 방법이 있습니다.



1. 플래쉬롬 카트리지 사용


프로그램 종류에 맞는 부팅 디스크에 완성된 프로그램을 넣은 후,

DSK2ROM 등의 프로그램으로 롬디스크 이미지를 만듭니다.


롬디스크는 보통 DOS1 커널이구요. 각종 플래쉬롬 카트리지 등에 다운로드해서 사용가능합니다.

읽기전용 디스크로 동작하지만, 프로그램에서 디스크 쓰기를 하지 않는다면, 이정도로 충분하겠죠.


만약 DOS2 프로그램을 실행해야 한다면?

본체에 별도의 DOS2 카트리지가 있거나 turboR 같은 DOS2 내장 기종이 필요합니다.



2. MMC/SD V1 및 V2 카트리지 사용


요즘은 보통 V3나 V4를 쓰시겠지만, 구버전인 V1, V2는 플래쉬롬의 일부분을 부팅 디스크로 사용이 가능합니다.

이 롬디스크는 R/W가 가능하도록 설계되어 있어서, 실제 디스크처럼 사용가능합니다.

단, DSK 이미지 용량이 384KB로 제한이 되어있어요.

512KB 플래쉬롬에 MMCSD BIOS 128KB + DSK 이미지 384KB를 붙여서 다운로드합니다. (ATLOAD 툴 사용)


만약 MMC/SD 보드를 자작한다면, 매뉴얼에 나와있는 회로도의 SCC 카트리지 파트만 제작하시면 되는데요.

이제와서 이걸 만드실 분은 아마 없으시겠죠? ㅎ.ㅎ



3. Flash Drive 사용


DOS1 및 DOS2 커널이 내장되어 있어서, 자작한 DOS2 프로그램을 실행하는 용도로 쉽게 사용가능합니다.

플래쉬롬의 일부분을 쓰기가능한 디스크섹터로 구성되어있어서,

디스크 세이브/로드가 필요한 때에 활용하면 좋습니다. 디스크 용량도 1.44MB이구요.


참고로, 제가 샘플로 보여드린 활용법은, GRUN 세이브 및 YS2 HDD 버전 세이브였습니다.

관련 글은 Flash Drive로 검색하시면 볼 수 있어요.


.

.

.


뭔가 생각하시는 것과 거리가 있나요? ㅎ.ㅎ

다른 분들이 원하시는 것은 보통 이렇더라구요.

-> 디스크 루틴이 필요없는 32KB, 48KB 등의 저용량 롬팩용 프로그램 제작


원래 제가 HI-TECH C 뱅킹 툴을 만든 목적은,

- DOS2에서 대용량 프로그램(32KB 뱅킹) 제작

- turboR의 빠른 내장 메모리 매퍼를 활용

- 비트맵 그래픽, 한글 디스플레이 활용

입니다.


그렇게 제작된 것들이 ASO remake, M 파일매니저, HV 한글뷰어, 한자/특수 문자 로더, MMCSD 툴 등의 프로그램입니다.

자낙, 마성전설 같은 32KB 게임팩 제작과는 한참 떨어진 거라고 봐야겠죠.



그.래.서. 하나 더 추가합니다.


@ 32KB/48KB/64KB 넌매퍼 롬 카트리지 사용


작년에 TapTapRevolution을 구상하면서,

메인 프로그램을 HI-TECH C로, 디스크 없는 환경 용도로 만들어볼까? 라는 생각이 들더라구요 ㅎ.ㅎ


프로그램은 DOS 환경과 똑같은 램 64KB 영역에서 동작하지만,

프로그램 로더는 일반 32KB 롬팩처럼 실행됩니다.

기존 라이브러리에서 디스크 R/W를 제외한 코드를 구동할 수 있도록, BDOS의 에뮬도 구현이 되어있구요.

64KB 롬팩으로 구현하는 경우는 마지막 16KB 영역을 그래픽 데이터로 활용하는 것도 구현되어 있습니다.


프로그래머 입장에서는 HI-TECH C로 DOS1용 프로그램을 빌드하는 것과 같은 방식으로 제작이 가능합니다요.


CFG 파일에 새로 추가된 rom-mode 스위치를 사용하면 ROM파일로 출력물이 생성됩니다.

아래는 샘플 프로그램인 0HANGUL.ROM 디렉토리의 CFG 설정부분입니다.

'app-mode = 0' 및 'rom-mode = 2'로 설정되어 있습니다.




프로그램 로딩 및 실행은 카트리지의 INIT 루틴에서 이루어집니다.

따라서 프로그램이 종료되면 DOS로 복귀하는 게 아니라, 메인 BIOS의 슬롯 INIT 루틴으로 복귀합니다.


github의 EXAMPLE 디렉토리에 ROM 샘플이 있으니 참고하시구요.

-> 0BGM.ROM, 0HANGUL.ROM, 0HELLO.ROM, 0TETRIS.ROM


아래는 blueMSX에서 0HANGUL.ROM을 실행한 모습입니다.




롬 카트리지를 만들 때에는 넌매퍼 타입의 보드를 사용하면 되겠습니다.

48KB로 빌드된 ROM과 VRAM data 16KB를 붙여서 64KB의 롬 카트리지도 가능하구요.


마지막으로,

HI-TECH C 패키지 전체를 받으시려면, 아래의 오늘자 release 링크를 이용하셔요!

https://github.com/sharksym/CPMEMU_HI-TECH_C/releases/tag/2024-12-03



그럼, 이만...


2024년 12월 1일 일요일

2024-11-30 송년회 잘 다녀왔어요~

어제 토요일에 송년회가 있었습니다.


오후 3시부터 9시까지 쉴 틈 없이 얘기만 했네요. (나눔용 가위바위보 구간 제외ㅋ)


기억을 더듬어보니...

늘 등장하는 어릴 시절 MSX와 게임 추억 (캐슬, 퀸플 등),

MSX용 HI-TECH C의 프로그래밍 방법,

S/W, H/W 에뮬레이터와 요즘 개발자들의 취향,

각종 디스플레이 얘기 (모노크롬 CRT부터 LCD, PDP, PRT 프로젝션, DLP 프로젝션, OLED 까지ㅋ),

20여년 변함없는 니시의 말 던지기(?)의 배경,

... 정도가 생각나네요.

그 외, 제가 만들던 미출시 기기(VDP-OverDrive)의 동작영상도 조금 보여드렸네요.

.

.

.

모임 사진을 하나도 안찍었다는 걸, 집에 와서야 아라~ㅆ습니다! 된장... 말만 많이 했ㅋㅋ



아래는 나눔으로 받은, 스타비즈에서 출판된 책과 98xx용 게임입니다.




즐거운 모임이었습니다.

진행하신 유령군님, kobe님, 소주님 수고많으셨어요. 다음에 또 뵈어요~ ㅎ.ㅎ/


2024년 11월 10일 일요일

WAU 제작 #8 - 리모트 플레이어

MSX의 사운드 기기만으로 재생이 불가능한 미디어파일들이 많이 있는데요.

이것들을 PC쪽 리모트 드라이브에 놓고 플레이해보아요~


WAU 서버가 오디오(PCM)를 MP3 320kbps로 인코딩 후 MSX로 스트리밍해주는 방식입니다.

MSX에서는 Wi-Fi로 데이터를 받아서 VS1003으로 재생(디코딩 출력)합니다.

PAC-V가 있다면 LED 비주얼라이저도 함께 동작하겠네요 ㅎ.ㅎ


WAU 서버에는 OpenMPT와 VGMplay가 내장되어 있습니다.

ffmpeg의 경우는 외부 프로그램으로 구동되지만, 데이터를 pipe로 전달받아서 사용합니다.


ffmepg  -> MKV, MP4, FLAC, OGG 등의 오디오 처리

OpenMPT -> S3M, MOD 등의 모듈 음악 플레이

VGMplay -> VGM, VGZ(압축) 음악 플레이


M 파일매니저에 내장된 #MPXP, #VGMP 플레이어에서는,

현재 재생하려는 파일이 리모트 드라이브에 존재하는 경우, 자동으로 WAU 리모트 플레이어로 전환합니다.

이렇게 동작하는 방식이 사용자 입장에서는 제일 편한 것 같네요.


그럼, 실기에서 동작하는 모습을 감상하시죠~

부팅 후 리모트 드라이브를 연결하고 S3M -> MP4 -> VGM 순으로 재생하는 모습을 볼 수 있습니다.



그럼, 다음편에서 이어집니다...


2024년 11월 1일 금요일

WAU 제작 #7 - S3M 플레이어 테스트

WAU에 들어있는 Wi-Fi 모듈은 ESP-12F입니다.

ESP8266 32BIT MCU에 4MB(32Mbit) SPI 플래쉬롬이 붙어있는데요. 이 플래쉬롬은 1MB 영역만 CPU에 매핑됩니다.

결국 나머지 3MB는 코드가 아닌 다른 영역으로 활용하게 됩니다.


보통은 F/W를 2세트로 넣어서, 런타임으로 다운로드 및 교체하는 방식으로 2MB를 사용하구요.

나머지는 영역에는 파일시스템을 탑재하거나, 별도의 데이터로 활용하면 됩니다.

아니면 그냥 F/W를 4세트로 넣어버려도 좋구요 ㅎ.ㅎ


사실 1MB 맵에서 공용 데이터를 제외하면 실제 메인 프로그램의 영역은 896KB가 되는데요.

이게 TCP/IP 및 RF 등의 기본적인 코드만 넣어도 700KB 수준이라서,

사용자가 추가할 수 있는 코드가 200KB 정도로 보시면 되겠습니다.


현재 WAU에서는 기본 F/W 1개, MP3 스트리밍 모드 전용(TCP 수신버퍼 최대활용) F/W 1개가 들어갑니다.

이제 플래쉬롬 2MB가 남았네요.

남은 부분으로 뭘 만들면 재밌을까요? ㅎ.ㅎ


Wi-Fi 모듈 및 USB-UART 모듈은 둘 다 UART 921KBPS를 사용합니다.

UART start 1bit, data 8bit, stop 1bit 세팅에서 92KB/s 전송이 가능합니다.


만약 전송되는 데이터를 몽땅 사운드 PCM으로 활용한다면, 오디오 디코더처럼 쓸 수 있겠네요!

16BIT MONO 44KHz PCM은 가능하겠죠? STEREO PCM이라면 16BIT 22KHz 또는 8BIT 44KHz가 되겠습니다.

전송되는 데이터는 88KB/s입니다.


사운드 테스트를 위해 S3M 플레이어를 넣어보았습니다.

RTOS와 최소한의 라이브러리만 남기고, 기본적인 S3M 플레이어 코드를 넣으니, 285KB 정도의 F/W를 만들 수 있네요.

896KB 범위 내에서라면... 608KB 정도의 S3M 데이터를 넣어서 실행가능합니다.


참고로, ESP8266 칩은 사용자용 램(캐시를 제외)이 80KB밖에 없어요.

따라서 프로그램에서 쓰는 변수 외의 const 데이터 테이블은 모두 SPI 플래쉬롬 상에서 직접 액세스해야합니다.

캐시도 작아서, 악기용 PCM 샘플과 노트 데이터를 연속으로 읽으면 캐시미스로 성능이 대폭 하락할 예정ㅋ


그래도 한번 해보면 재미겠죠? ㅎ.ㅎ


전체적인 프로그램의 흐름은 이렇게 되겠습니다.

1. MSX의 디스크에서 S3M 데이터를 읽어서 ESP로 전송합니다. (SPI 플래쉬롬 1섹터 4KB단위)

2. ESP에서는 전송받은 S3M 데이터를 플래쉬롬에 다운로드합니다.

3. 전송 및 다운로드가 완료되면, ESP에서 S3M 전용 F/W로 전환하고 리부팅합니다.

4. ESP의 S3M 플레이어는 최종 PCM 데이터를 생성 후 MSX로 전송(스트리밍)합니다.

5. MSX에서는 수신된 PCM 데이터를 WAU의 VS1003 디코더로 전송합니다.

6. 주기적으로 VS1003의 스펙트럼 애널라이저 데이터를 수신하여, PAC-V의 LED 비주얼라이저를 설정합니다.


이렇게 해서, 최종 오디오는 WAU의 HP출력단자로 나오게 되겠습니다요~ ㅎ.ㅎ/


그럼, 제 GT에서 동작하는 모습을 보시죠!




이번 S3M 플레이어는 이런식으로 Wi-Fi(ESP) 모듈을 활용할 수 있다...정도로 보시면 되겠습니다.

이미 문사운드용 MOD/S3M 플레이어가 있어서, 굳이 WAU-S3M을 사용할 이유는 딱히 없어요 ㅎ.ㅎ


그럼, 다음편에서 이어집니다...


2024년 10월 27일 일요일

WAU 제작 #6 - 윈도 VHD 활용

지난 '#5 - PC 리모트 드라이브' 글에서 PC의 이동식(Removable) 디스크를 WAU에 연결하는 것을 보여드렸는데요.

오늘 문득 이런 생각이 들더라구요.

'혹시 윈도의 VHD(가상 하드 디스크)가 Removable로 등록이 되었던가?'

.

.

.

그래서 해봤습니다 ㅎ.ㅎ


아래 스크린샷은 저의 윈도11 기준입니다. 혹시 윈도10을 쓰시는 분이라면 제어판이 조금 다를 수 있으니 참고하셔요.


제어판에서 '시스템 > 저장소 > 디스크 및 볼륨' 메뉴로 가면 VHD 만들기 항목이 나옵니다.

아래처럼 2GB 고정크기로 만들면 되겠습니다.



레이블은 적당히 MSX_WAU로 넣었구요. 파일시스템은 당연히 FAT으로 하셔야합니다. ㅎ.ㅎ

몇가지 테스트용 파일들을 복사해서 넣었습니다.



마운트 해제는 '꺼내기' 버튼을 누르시면 되구요.



다시 마운트하려면 VHD 파일에서 탑재 메뉴를 선택하면 되겠습니다.



이제 WAU Server를 실행해봅니다.

아래처럼 'V: MSX_WAU' 드라이브가 목록에 나옵니다. 짜잔~



아래는 실기에서 WAU로 연결한 모습입니다.




PC와 MSX 공유용 드라이브는 윈도의 VHD를 활용하는 편이 간단하고 좋네요 ㅎ.ㅎ/


그럼, 다음편에서 이어집니다...


2024년 10월 25일 금요일

WAU 제작 #5 - PC 리모트 드라이브

MSX와 PC가 네트웍으로 데이터를 공유한다면, 어떤 방식을 쓰는 것이 좋을까요?


이번에 WAU에서 구현된 'PC 리모트 드라이브' 기능은,

PC에 연결된 이동식(removable) 디스크의 RAW 섹터 액세스를 그대로 MSX에서 동작시켜주는 방식입니다.

실제 HDD는 PC에 연결되어 있지만, MSX 유저는 로컬 디스크를 쓰는 것처럼 모든 디스크 기능들이 그대로 동작되는 거죠.


왜 이동식 디스크라는 얘기를 썼냐면요.

윈도에서 물리적인 디스크 섹터의 액세스를 일반 프로그램에세 허용해 주는 것이 제한되어있습니다.

PC 본체에 물려진 내장 디스크는 접근이 안되거든요.

물론 커널 드라이버를 만들면 되겠지만... 어차피 MSX가 인식할 수 있는 게 저용량 FAT16이니까,

그냥 적당한 외장 디스크(USB 메모리스틱, USB HDD 등)를 붙입시다요~ ㅎ.ㅎ/


아래는 제가 백업용도로 쓰고 있는 USB HDD입니다.

용량이 2TB인데, 끝부분 2GB정도만 잘라서 FAT16으로 포맷 후 Y: 드라이브로 마운트했놨습니다.

테스트 용도로 폴더 및 파일들을 복사해놨구요.



PC와 MSX WAU간의 TCP 통신을 위해, 간단하게 만든 PC쪽 서버 프로그램을 실행해둡니다.


.

.

.

'이제 와우 서버에서 얼라이언스와 호드가 만나게 되는데...'는 아니구요.

WAU에서 요청하는 드라이브의 간접 액세스를 대신 처리하는 용도입니다 ㅎ.ㅎ


그럼, MSX쪽에서 서버 설정 및 드라이브 선택을 해야겠죠?

WAU프로그램에서 /D:IP주소 옵션을 입력하면, 아래처럼 PC의 드라이브가 연결됩니다.

PC의 Y: 드라이브를 MSX의 H: 드라이브로 동작이 됩니다. DOS의 DIR H: 명령이 실행된 모습이네요.




WAU의 드라이브 문자는 기존 일반 드라이브처럼 부팅 시 정해집니다만, 약간의 차이점이 있어요.


- 마스터 디스크롬으로 등록불가

  WAU를 빠른 슬롯에 꽂았을 때, WAU의 디스크롬이 마스터가 되어 부팅 드라이브 A:가 되는 것을 막기 위함입니다.


- 슬레이브 디스크롬으로 등록 순위

  WAU가 빠른 슬롯에 장착되어, 첫 디스크롬으로 실행되는 경우는 드라이브 등록을 취소합니다.

  따라서 다른 디스크롬이 부팅 드라이브 A:부터 점유하게 됩니다.

  이 때, MMC/SD V3 또는 V4가 존재한다면, MMC/SD 이후의 드라이브로 등록됩니다.


  예를 들어 FDD가 내장된 파나소닉 기종에서,

  SLOT 1   = WAU

  SLOT 2   = MMC/SD V4

  SLOT 3-2 = FDD

  로 배치했다면, V4 -> WAU -> FDD 순으로 드라이브가 등록됩니다

  만약 V3, V4 외의 대용량 디스크드라이브를 사용한다면,

  해당 디스크를 SLOT 1에 넣고, WAU를 SLOT 2에 장착하는 식으로 쓰면 됩니다.


  다른 예로 X-II에서,

  SLOT 2   = FDD

  SLOT 3-0 = V4

  SLOT 3-3 = WAU

  로 배치했다면, V4 -> WAU -> FDD 순으로 등록됩니다.

  X-II에서는 내장 FDD가 가장 늦게 리매핑이 되도록 해놨습니다.



아래는 M 파일매니저를 실행한 모습입니다.

그냥 MSX의 로컬 디스크를 쓰는 것과 동일하게 사용하면 됩니다.

DOS 커맨드를 쓰거나 Disk BASIC에서 명령들을 똑같이 쓸 수 있어요.



그럼, 실제로 사용하는 모습을 영상으로 보시겠습니다.





그럼, 다음편에서 이어집니다...


2024년 10월 20일 일요일

WAU 제작 #4 - GitHub 다운로드

MSX가 인터넷에 연결되면, 뭘 하면 도움이 될까요? ㅎ.ㅎ


만약 프로그램, 데이터 파일을 다운로드 받는 용도로 쓴다면, 어떤 방법이 좋을까요?

텔넷, FTP 정도가 머리에 떠오릅니다만...

요즘엔 이런 서버를 운영하는 곳도 드물고, 실제로 접속해서 쓰는 사람도 거의 없네요.


그래서 이것 저것 생각하다보니,

요즘은 GitHub를 S/W 개발용이 아닌 파일 저장소로 쓰는 분들이 꽤 있더라구요.

GitHub에 널린(?) MSX 자료를 받는 용도로 써본다면 좀 의미가 있겠죠?


으흠... GitHub용 간이 브라우저는 나중에 생각해보기로 하구요.

이미 알고 있는 GitHub repo에서 파일을 받는 걸 해봅시다!


근데, 보통 파일을 다운받을 수 있는 URL이 키보드를 타이핑해서 입력가능한 수준이 아닙니다.

URL을 찾는 것도 S/W의 도움이 없으면 불가능한데, 일단 본인의 repo라면 대충 기억하실테니 어떻게 한번 시도해보아요.


WAU.COM 프로그램에서 /G 옵션으로 파일을 GET 하기위한 URL을 입력합니다.

아래처럼 저의 git에서 파일을 하나 골라서, 명령어를 BAT 파일로 만들었습니다.



실행하면, 아래처럼 현재 디렉토리에 파일을 다운받는 것을 볼 수 있어요.



이번엔 repo에 있는 디렉토리, 파일 목록을 읽어서 다운로드 해주는 프로그램을 만들어봅니다.

git은 아래처럼 구성해서, 제가 만든 프로그램 몇개를 올려놨습니다.

https://github.com/sharksym/MSX-APP



WAU.COM에서 /A 명령을 주면, MSX-APP repo의 디렉토리 목록을 보여줍니다.




다운 받을 앱의 이름(디렉토리)을 WAU.COM의 /A:옵션으로 실행합니다.

아래는 WAU /A:PACV 를 실행한 모습입니다.




이젠 저의 프로그램들 또는 다른 분들의 자료를 받을 때, MSX 혼자만의 힘으로 가능하겠지요? ㅎ.ㅎ


그럼, 실제 동작하는 모습을 영상으로 구경하시죠!



그럼, 다음편에서 이어집니다...


2024년 10월 18일 금요일

WAU 제작 #3 - Audio

WAU의 Audio 기능은 VS1003B 칩으로 동작합니다.

준소프트님의 예전 MPX R1.0 카트리지에 들어간 오디오 디코더와 같습니다.

MP3, WMA 디코딩이 가능하구요, WAV도 다이렉트로 출력가능합니다.

(있으나 마나 수준의 MIDI 재생도 들어있..ㅋ)


MPX R1.0 카트리지와 오디오 칩은 동일합니다만,

레지스터가 메모리맵 I/O가 아닌 포트 I/O만 사용합니다.

바꿔말하면 S/W가 서로 호환이 되지않습니다.


외부 오디오 단자는 2개가 있습니다.

카트리지 전면에 가까운 단자가 출력이구요. 후면에 가까운 단자는 입력입니다.

외부에서 입력된 신호는 패시브 믹서로 WAU의 오디오와 믹스되어 출력됩니다.



WAU는 앞으로 확장슬롯에 늘 꽂혀 있을테니, 믹서를 하나 넣는 것도 괜찮아보였어요.

저는 NeoTron의 출력을 WAU의 오디오 입력으로 넣었습니다.

요걸로 주렁주렁 달린 A-MPS 한개를 떼어냈네요. 흐흐...

아래는 확장슬롯에 꽂힌 카트리지의 모습입니다. (레이블 없는 까만놈이 WAU에요)




그 외 기본적인 오디오 기능은 MPX R1.0 때와 비슷합니다.

물론 제가 만든 S/W만 WAU를 지원하겠지만요 ㅎ.ㅎ


M 파일 매니저의 #MPXP 명령으로 MP3, WMA, MIDI 파일의 재생이 가능하구요.

스펙트럼 애널라이저 펌웨어를 로딩해서 PAC-V(또는 XII-V)의 비주얼라이저 구동도 가능해요.

이미 다 아시는 기능이니, 따로 사진을 찍을 필요는 없을 것 같군요. 넘어갑니다요~



이제, WAU만으로 할 수 있는 활용법이 나갑니다.


WAU에는 Wi-Fi가 있으니, MP3 스트리밍을 해봐야겠죠?

로컬 디스크에 있는 MP3 파일이 아닌, 이터넷으로 데이터를 받으려면 스트리밍을 해주는 URL을 입력해야하는데요.

어떻게 하면 좋을까요?

주소를 사용자가 직접 타이핑하거나, 별도의 프로그램으로 URL 리스트를 관리해주는 방법도 있고 뭐, 그렇네요.


참고로, M 파일매니저의 음악 재생 방식은, 폴더(디렉토리) 플레이어류와 같은 방식입니다.

현재 내가 열어놓은 디렉토리에서 원하는 파일을 주르륵 골라서 재생시키는 거죠.


혹시 20세기 WinAmp 시절부터 내려오는 그 전설의 PLS 파일을 아시나요? ㅎ.ㅎ

원래 목적은 자기가 좋아하는 음악들을 분류해서 여러개의 리스트(*.PLS)를 만들어서 쓰는 건데요.

인터넷 라디오(오디오 스트리밍) 용 URL도 쓸 수 있습니다.

아마 예전에 한번씩 써보셨을 거에요.


아래는 PLS 파일의 샘플입니다.

[playlist]

File1=http://radio.streemlion.com:1560/stream

Title1=Greatest Hits of the 80s [320kbps]

NumberOfEntries=1

Version=2


M 파일매니저에서는 PLS의 항목에서 1번 링크(File1)만 사용합니다.

그러니까 PLS 파일과 URL 주소가 1:1로 대응된다고 보시면 되겠습니다.


여기저기서 모은 스트리밍 주소들을 각각의 PLS로 만들고,

제 윈도 PC에서 구동한 icecast의 주소도 만들어봤습니다.


만들어진 PLS 파일들을 M 파일매니저에서 실행하면,

 WAU의 WiFi + MP3 디코더를 이용해서 음악을 듣게 되겠습니다요~ ㅎ.ㅎ/


그럼, 동작 영상으로 보시죠~





그럼, 다음편에서 이어집니다...


2024년 10월 16일 수요일

WAU 제작 #2 - WiFi 모듈 설정

WAU에 들어간 WiFi 모듈은 ESP-12F입니다.

ESP8266 칩과 4MB의 플래쉬롬이 들어있습니다. 현재 펌웨어는 2MB 사이즈로 되어있어요.


WiFi를 사용할 때는 아래의 S/W 흐름이 발생합니다.

> WAU 전용 S/W(WAU.COM) -> WAU BIOS -> ESP-12F F/W

> 일반 DOS 및 BASIC S/W -> WAU DiskROM -> ESP-12F F/W


WiFi를 쓰는 거니까, 당근 가장 중요한 건 ESP-12F 펌웨어겠죠? ㅎ.ㅎ

제조사의 펌웨어(ESP-AT 코드)에 사용자 코드를 추가하는 방식으로 구현됩니다.


WAU 카트리지를 처음 시작하게 되면 이런 순서로 WiFi 모듈 셋업을 하게 되겠습니다.


1. 펌웨어 다운로드

   -> PC와 USB 케이블을 연결 후 진행


2. 새로운 펌웨어를 구동 후 기본적인 설정(UART baudrate 변경, STATION 모드 설정 등)

   -> WAU.COM 툴에서 자동으로 해줘요


3. WiFi AP를 검색 후 접속

   -> UI는 DOS의 텍스트 모드니까 열심히 키보드를 눌러주시면 되겠네요.


4. Time zone 설정

   -> 대부분 한국에 계시니까, 기본 설정(UTC+09:00)으로 가면 되겠습니다.

      완료되면 SNTP 서버에서 받은 시각을 표시해줍니다.


그럼, 저의 GT에서 초기 설정하는 모습을 영상으로 구경하시죠~



그럼, 다음편에서 이어집니다...


2024년 10월 14일 월요일

WAU 제작 #1 - 여러가지 생각

아래는 저의 확장슬롯 SLT-X에 꽂힌 기기들의 모습입니다.



슬롯은 8개지만, MoonSound 아래엔 MoonBase가 있으니 9개의 카트리지가 꽂혀있습니다.

그리고, 본체 슬롯(SLOT 0-1 개조)에는 PAC-V가 있죠. 총 10개! ㅎ.ㅎ


이젠 다른 기기를 추가하려면 기존 기기를 뽑아야(?) 하는 상황이 되었네요.

기기 활용도를 생각해보면, NeoTron이 퇴출 1순위입니만...

NeoTron은 사운드 연결 때문에 한번 빼놓으면 다시 세팅하는 게 귀찮으니, 아마 서랍행이 되면 다시는 못 볼 운명??

일단 이건 두고 다른 방법을 고민해봅니다요~


가장 오래된 기기 2개를 봅시다.

2010년 초에 만들었던 RS-232C와 2010년 중반에 출시된 준소프트님의 MPX R1.1가 있습니다.

둘다 제게는 필수 기기인데요. 요걸 하나로 합쳐보면 어떨까요?

MoonBase처럼 합체하는 건 아니구요. 새로운 카트리지를 만드는거죠!


근데 MP3 Audio와 RS-232C의 만남?!

두 기능이 그닥 연관성이 없다보니, '이 조합은 혼자만 써야할까?' 그런 생각이 들었습니다.

일단 슬롯 여유가 급한 문제는 아니니까, 생각은 여기에서 멈춥니다.

.

.

.

2022년 어느 봄날, 남들 다 써봤다는 WiFi 모듈이나 한번 써볼까? 생각이 들더라구요.

ESP8266 칩이 들어간 소형 모듈인데요.

주로 웹서버를 구동해서 IoT 연결로 활용하거나, 그냥 TCP 연결로 간단한 작업하는 용도로 쓰이는데요.

일단 모듈을 2개 사서 어떻게 조합하면 좋을지 생각해봅니다.

그나마 오디오 스트리밍을 받아서 재생할 수 있으니, MP3 Audio와 WiFi의 활용처 하나는 생기는 셈이네요.


하지만... 그 외에는 WiFi를 연결해서 해볼만한 아이디어가 떠오르질 않는군요.

MSX에서 이더넷 카트리지가 나온지 20년은 되었습니다만, 거의 활용안되는 이유이기도 합니다만.

인터넷에서 파일을 주고 받거나 텔넷을 구동하는 것 정도밖에는 Z80으로 할만한 게 없습니다.

이건 MSX 뿐만 아니라, 다른 8비트 컴퓨터도 비슷한 문제겠네요. 아마 XT도 그럴걸요? ㅋㅋ


'텔넷, FTP, 홈페이지의 파일을 전송만 가능해도 재밌을 것 같은데요?'라고 하실 분도 계시겠지만,

실제로 해보면 한두번은 재미겠지만, 바로 서랍행(!)입니다요~

이미 다들 그런 생각으로 기기를 만들다 스쳐간 20년...ㅎ.ㅎ


텔넷에서 한글 지원을 얘기하신 분도 계셨는데요.

MSX에서 이걸로 활용하던 때는 90년대였죠.

개인적으로 VT 하이텔 파라동 시절에 MSX로 접속 못해봤던 게 참 아쉬웠는데 말이에요.

더 안타까운 사실은,

제가 아이큐2000 이후로 다시 MSX 실기를 잡은게 2003년에 GT를 구하면서 부터였는데,

그 때부터 하이텔이 웹서비스로 전환되면서 사람들 다 떠나고, 파라동에도 암흑기가 온 시절이었습니다요.

실기로 뭔가 하려니, 이젠 혼자가 되버린 상황~ ㅎ.ㅎ;


얘기가 삼천포로 빠졌군요.


암튼 이런저런 생각만 하다가 2년이 또 흘러갑니다.

.

.

.

때는 2024년 봄, 갑자기 아이디어가 떠오릅니다!


제가 쓰는 MSX 환경에서 M 파일매니저의 활용이 굉장히 많은 부분을 차지하고 있는데요.

MSX에서 웹브라우저를 만드는 건 불가능하겠지만, M 파일매니저의 파일 브라우징만으로 네트웍을 활용할 수 있다면?

자세한 내용은 나중에 얘기하기로 하구요 ㅎ.ㅎ



다시 기기의 기능 조합으로 돌아옵니다.

지난 십여년간 RS-232C 카트리지를 유용하게 썼지만,

대부분은 제 작업용 데스크탑 PC와 연결해서 파일전송(PC to MSX)에 활용되었습니다.

사실 PC에 연결하는거라면 RS-232C 인터페이스가 편하지는 않거든요. 요즘 PC, 노트북은 9핀 포트가 없기도 하구요.

대신 USB-UART 칩을 이용해서, PC와 USB-C 케이블로 연결하기로 합니다.


한때는 TV의 디버깅 포트(RS-232C)에 물려서 재밌는 짓도 했었는데, 이젠 모두 추억으로~

https://sharksym.blogspot.com/2010/03/paramsxlinux-rs-232c.html



새로운 카트리지에 들어가는 기본 기능은...

'Wi-Fi + MP3 Audio + USB-UART' 입니다.


각 기능의 앞 글자를 모아서, WAU라는 이름의 카트리지가 되었습니다! 와우~


아래는 지난 여름에 만든 WAU 최종 버전의 모습입니다. 요게 아마 3번째 리비전일거에요 ㅎ.ㅎ



보드의 좌상단에는 오디오 출력 및 입력 단자가 있구요.

오디오 단자 옆에는 VS1003B MP3/WMA 디코더,

상단 중앙에는 ESP-12F (ESP8266) Wi-Fi 모듈,

우상단에는 USB-UART (CP2102) 모듈이 들어갑니다.

FlashROM 8MB에는 기본적인 BIOS 외, I/O 포트로 도움받을 수 있는 계산 테이블 또는 폰트롬 등의 테이블이 들어갑니다.

(여러가지 동작 모드를 넣다보니 문서로 정리하는 것도 꽤 귀찮았다는 후문이...ㅋ)


참고로 CP2102 칩은 최대 Baudrate가 921600 BPS까지 지원하는데요.

CPLD로 구현된 UART도 921600 BPS, Wi-Fi 모듈 컨트롤도 921600 BPS가 가능합니다.

보드 한장으로 모아놓으니 S/W 개발할 때도 편하고 좋네요.

특히 Wi-Fi 모듈에서 응답으로 출력되는 데이터를 MSX-UART와 USB-UART로 동시 출력하면,

MSX 동작 상황을 PC에서도 실시간 모니터링이 되거든요 ㅎ.ㅎ


그럼, 다음편에서 이어집니다...


2024년 9월 28일 토요일

TapTapRevolution 제작 #8 - 댄스 패드 개조

댄스 패드를 하나 구입했습니다. PC용 USB연결을 사용하구요, 알리산입니다 ㅎ.ㅎ



이걸 MSX에 연결해보아요~

TTR용 상하좌우 입력을 처리할 수 있도록 댄스 패드를 개조하면 되겠죠?


원래 MSX의 조이스틱(범용) 9핀 포트용 케이블은 오른쪽처럼 생겼습니다.

근데, 일부 MSX 기종에서는 왼쪽의 일반 DSUB 케이블도 연결할 수 있는데요.

A1WSX, A1GT 등의 후기형 파나소닉 기종이 여기에 해당됩니다.

X-II 등의 대우 기종은 단자가 깊어서 연결이 안돼요~~



RS-232C용 9핀 케이블입니다. 선배열을 바꿔야해서, 뚜따가 가능한 놈으로 하나 가져왔어요.



케이블 단자를 열어본 모습입니다.

1번, 6번, 8번핀의 신호가 서로 연결되어있군요.

실제 케이블에는 6개의 선들이 들어있습니다. (쉴드선도 포함해서요)



TTR에서 사용하는 상하좌우 및 공통출력(COM) 신호선 5개를 정리합니다.

1번,6번,8번 쇼트된 녹색선을 제거 후 노란선을 5번->8번으로 옮겼습니다.



파나소닉 기종의 본체와 간섭이 되지 않도록 철판과 덮개 일부를 잘라줍니다.



아래는 turboR에 연결한 모습입니다.



이제, 댄스 패드를 열어봅시다!

USB가 싸구려 케이블인지... 선이 4개 밖에 없네요.

만약 쉴드선까지 있었다면 선이 5개니까, 이걸 그대로 DSUB 단자에 연결해서 써도 됩니다.

암튼 멀티미터로 PCB의 상하좌우 신호를 찾아줍니다.



개조한 케이블을 여기에 연결해주면~ OK!

참고로, 노란색 공통(COM)신호는 PCB의 GND에 연결하면 되겠습니다.



선을 정리해서 케이스를 닫아주면 되겠네요.



잘 되네욤 ㅎ.ㅎ/



혹시 직접 개조하실 분들을 위해 제가 샀던 댄스패드의 링크도 남겨드려요~

https://ko.aliexpress.com/item/1005007514960644.html


PS.

개조하실 때 '무적의 380도' 이런거 쓰심 안됩니다. 필름이나 단자 접합용 스펀지가 녹아버릴거에요ㅋ


2024년 9월 13일 금요일

TapTapRevolution 제작 #7 - 완성판

 



기본 플레이 루틴을 완성하니까 동기부여가 확~ 떨어지네요.

몇 달 쉬었으니, 다시 진행해봅니다!


TTR에 사용되는 카트리지는 8MB 메모리(FlashROM 64Mbit)를 사용합니다.

2MB는 프로그램 및 오프닝 영상 및 각종 그래픽, 효과음 데이터로 사용되구요.

남은 6MB에 노래 3곡이 들어갑니다. 노래 한곡당 2MB가 소진된다고 보심 맞아요 ㅎ.ㅎ


오프닝 영상은 약 7초 정도로 편집한 MV 파일입니다.

구동 방식은 V3, V4에서 쓰이던 것과 거의 같습니다. 스크린2 + 팔레트 스위칭~


타이틀과 노래 선택 화면은 스크린8을 사용합니다.

타이틀 그래픽은 AI의 힘을 좀 빌려서...ㅋ


메인 플레이 영역은 기존에 보여드린대로 스크린5를 사용합니다.


스테이지가 끝나고 나오는 결과 화면과 게임오버 화면은 스크린8을 사용합니다.

기존 그래픽을 변환해서 그대로 넣어도 꽤 괜찮아보이더라구요.


효과음으로 쓰이는 사운드는 모두 PCM으로 들어갑니다. 노래 재생용 PCM player와 같은 동작구조입니다.


마지막으로,

타이틀 화면에서 일반 모드 또는 트레이닝 모드로 선택이 가능한데요.

트레이닝 모드는 체력(?) 게이지가 0이 되어도 게임오버가 되지 않습니다.


.

.

.


그럼, 동작 모습을 보시죠~ 백문이 불여일견 ㅎ.ㅎ

비트맵 그래픽을 그리고, 지우고, 스프라이트 뿌리느라 Z80, VDP가 미친듯이 삽질을 합니다만...

60FPS로 잘 동작하는 것을 보실 수 있습니다요. 이번엔 DOUBLE 모드 플레이로 찍어보았어요~




PS.

효과음을 PCM으로 처리하니까 편하고 좋네요.

이제 OPL4 (문사운드, 달소리 등) 사운드를 쓰시는 분이 많으니...

앞으로 DOS2용 게임을 만든다면, 그냥 OPL4 PCM으로 도배하는 쪽으로 생각해봐야겠습니다요ㅋㅋ


PS. 2024-09-18
옵션 메뉴을 따로 할당했습니다. 오디오 싱크 조절도 가능하고, 키맵도 확인할 수 있습니다요~ ㅎ.ㅎ


2024년 9월 6일 금요일

지난 20년 개발의 추억 #11 - T-Wave


월간 추억팔이 #11편이 나왔습니다~ ㅎ.ㅎ


지난 글은 아래 링크를 이용하세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html

https://sharksym.blogspot.com/2024/03/20-7-audiofactory.html

https://sharksym.blogspot.com/2024/04/20-8-mmcsd-drive-v4.html

https://sharksym.blogspot.com/2024/06/20-9-xii-v.html

https://sharksym.blogspot.com/2024/07/20-10-slt-x-v1.html




V4에는 PSG 사운드를 씐나게 해주는 PSG2SCC 기능이 있습니다.

PSG의 구형파 소리에 SCC의 파형을 보태주면 꽤 재미난 소리가 나죠.

PSG만 쓰는 32KB 롬게임 또는 자낙EX 등의 메가롬에서 활용하면 GOOD!


2020년 어느날...

GameRunner BIOS 없이 H/W 단독으로 동작하는 PSG2SCC 카트리지가 있으면 좋겠더라구요.

이스 시리즈 처럼 PSG만 쓰는 디스크 게임에서는 GameRunner를 못 쓰니까,

H/W만으로 구동이 되면 모든 S/W에서 다 쓸 수 있어서 좋겠죠? ㅎ.ㅎ

.

.

.

근데 PSG2SCC 카트리지 하나 때문에 서브 슬롯 한개를 써버리기엔 좀 아깝다는 생각이 듭니다.

일단 비슷한 컨셉으로 쓸만한 기능들을 떠올려보아요~


PSG2SCC를 처리하려면 파형샘플로 출력해주는 기능이 필요한데,

그냥 SCC 기능을 그대로 구현해서 SCC 단독 또는 PSG2SCC로 전환하면 좋겠죠?

이왕이면 SCC보다는 SCC-I가 좋겠구요. 사운드 기능뿐만 아니라, SCC-I의 메가램도 그대로 구현합니다.


사실, 오리지널 SCC-I는 메가램이 64KB라서 사실 메가 BIT는 아닙니다만, 128KB로 증설이 가능해요.

아마 많은 분들이 128KB로 증설해서 쓰시는 걸로 알고 있습니다.

예전엔 코나미의 1메가 SCC게임들을 구동하는 용도로 요긴하게 썼습니다요.

일단 512KB를 때려넣고, 기본 설정을 128KB로 두면 기존 S/W 호환문제는 해결!


여기까지 해놓으니, 욕심이 생기네요.

SCC-I를 유저 선택으로 PSG2SCC 모드로 전환하는 게 아닌 별도의 채널로 구현하면?

그럼 사라만다, 메탈기어2 등의 기존 SCC를 쓰는 롬에서도 PSG2SCC와 SCC 사운드를 동시에 쓸 수 있겠네요.

특히 보이스 패치된 SCC롬들을 쓸 때에는 듀얼 SCC가 필수이니, 이 때도 유용하겠구요.

VS + T-Wave 조합이면, 보이스 SCC + PSG/SCC BGM + PSG2SCC를 한방에 해결!


여기까지 생각을 정리해보면...

- SCC-I 128KB/512KB RAM mode (5Ch. Sound)

- PSG2SCC Sound (3Ch. Sound)

되겠습니다.


.

.

.

그러던 어느날 또 다른 아이디어가 떠오르네요.

PSG2SCC의 채널을 2배로 늘려서 스테레오로 구현해보는거죠.

물론 채널 늘려서 좌우 다른 샘플 소리를 내주는 것도 중요하지만... 여기에 주파수 조절을 추가해봅니다.

원본 PSG에 어울리는 화음을 넣어주는거죠.

좌우 채널에 다른 주파수를 쓸 수 있도록, PSG2SCC를 6채널로 구현합니다.


실제로 구현해서 들어보니, 원래 PSG 채널이 노이즈를 출력모드가 될 때는 화음이 잘 안어울리네욤

V3의 PSG2SCC는 PSG와 같은 주파수라서 별로 거슬리지않았는데 말이죠. 으흠...

결국 T-Wave의 PSG2SCC는 노이즈 모드도 들어갑니다. 실제로 들어보면 차이가 꽤 나요 ㅎ.ㅎ


샘플 파형은 16가지를 롬에 내장해서 외부 스위치(카트리지 상단)로 쉽게 선택할 수 있도록 합니다.

주파수도 외부 스위치로 조절 가능하구요.

물론 파형과 주파수는 좌우 채널 각각 조절됩니다.


그리고, 샘플 파형에는 구형파도 있어서, 본체의 PSG 복제도 가능합니다.

본체의 사운드 출력을 MUTE하고, T-Wave의 출력만 스피커로 듣는 식으로 활용할 수 있어요.


여기에 PSG 2번째 포트를 쓰는 것도 옵션으로 추가합니다.

듀얼 PSG (포트 10H, 11H)를 쓰는 S/W에서 활용하면 좋겠죠?


기능이 많이 바꼈으니 PSG2SCC 대신 다른 이름을 붙여봅니다.

Wave Sound Generator - 줄여서 WSG!


WSG 기능을 요약하면 이렇게 됩니다.

- 샘플 파형 출력 (SCC와 같은 방식)

- 노이즈 모드

- 좌우 채널 분리 (3Ch. + 3Ch.)

- Sec-PSG 에뮬 모드



카트리지 상단에는 3단 스위치 2개와 조그 다이얼 2개를 넣었습니다.

설정이 귀찮은 분들을 위해 프리셋 모드(EASY MODE)도 넣었어요.

부팅 시 기본 설정되는 화음 모드 그대로 두어도 꽤 괜찮은 밸런스를 보여줍니다. 흐흐...


마지막으로 다른 사운드를 넣어봅시다.

카트리지 출력이 기본 스테레오니까, 세가에서 많이 쓰였던 DCSG(SN76489)를 2개 넣어서 스테레오로 들어보아요.

오락실 기판에서 듀얼 DCSG가 꽤 쓰였습니다. MSX에서 VGM파일이라도 스테레오로 들으면 잼납니다 ㅎ.ㅎ


최종 T-Wave의 스펙은 2x WSG + SCC-I + 2x DCSG가 되겠습니다.

3종류의 디지털 사운드의 조합이라서, 이름을 Tripple Wave로 붙였습니다. (제3의 물결?)


그리고, 디버깅 용으로 넣은 DAC 테스트 모드가 있는데요.

이 모드에서는 WSG + SCC 대신 스테레오 8BIT DAC으로 동작합니다.

MMCSD.COM 등에서 스테레오 WAV 파일을 출력하는 등의 용도로 쓸 수 있어요.


.

.

.


T-Wave를 5년째 쓰고 있는데, 이젠 WSG 화음이 없으면 귀가 허전하네욤.

아무리 생각해도 잘 만든 것 같아요 ㅎ.ㅎㅋ


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ/


2024년 8월 25일 일요일

MMC/SD Drive V4 제작 #22 - MV 영상으로 SD 응답속도 테스트

SD카드를 Read/Write 할 때에는 컨트롤러에게 먼저 커맨드를 보내고 Ready 신호를 기다리게 됩니다.

그 후 Read/Write를 주르륵 해주는 거죠.

근데 데이터(파일)이 저장된 위치에 따라 응답속도에 편차가 생기게 됩니다.


MMC/SD에서 동영상 재생 기능을 처음 넣었던 때가 2009년 MMC/SD V2를 쓰던 시절이었는데요.

그 때는 동영상 저장용 파티션을 별도로 만들어서, SD카드의 연속된 메모리공간을 활용했습니다.

SD카드의 멀티섹터 Read 커맨드를 쓰면, 연속으로 데이터를 읽을 때 빠르게 처리가 가능하죠.


나중에 2015년 MMC/SD V3부터는 디스크 파티션에 일반 파일을 영상으로 처리할 수 있도록 구현이 되었습니다.

이 방법은 CPU에 굉장히 부담이 됩니다.

많은 클러스터로 쪼개진 파일을 처리해야 되는 것과 SD카드의 연속 읽기를 쓰지 못한다는 것 때문이죠.

사실 V3 설계 때에는 MV 플레이어는 계획에 없었는데요.

DSK 에뮬 때문에 클러스터 처리를 구현해보니, MV 플레이어도 가능성이 보이더라구요 ㅎ.ㅎ


처음 MV 플레이어를 만들었을 때에는 주로 8GB SD를 사용했구요.

2018년 V4에 와서는 16GB SD를 쓰다가 후기에는 32GB SD를 사용했습니다.


여러 종류의 SD카드를 쓰면서 알게된 것이 하나 있는데요.

용량이 늘면, 커맨드 응답도 느려지더라구요.

초기 코드는 샌디스크 8GB SD기준이었는데, 그 때는 커맨드 응답이 꽤 빨랐습니다.

이 코드가 32GB SD에서는 버티지 못해서, 결국 작년에 MV 플레이어 코드를 다 갈아엎었죠.


.

.

.


며칠전 알리에서 할인하는 SD 32GB를 3개 구매합니다.

빨간색+회색의 Sandisk Ultra UHS-I 모델입니다. 두둥~~




사진의 왼쪽 흰색+회색으로 된 SD가 구버전이구요. 오른쪽 빨강+회색은 신버전입니다.

둘 다 UHS-I, Class 10으로 거의 같은 속도입니다.

사실 구버전은 종류가 여러개 있는데요.

최대 속도가 80MB/s, 98MB/s, 100MB/s 였던걸로 기억하는데, V4에 번들된 SD는 80MB/s, 100MB/s 두 종류였습니다.

사진 아랫쪽의 삼성 EVO 32GB는 제가 최근 4년정도 계속 쓰던 거네요.


그럼 본론으로 넘어가서, 어제 택배로 받은 신버전 32GB SD에 기존 SD카드와 똑같이 파일들을 때려넣고 테스트 해봅니다.


드라마 도깨비의 영상으로 테스트해보았어요!


MMC/SD BIOS는 디버깅모드입니다. 동영상 재생 시, SD카드 커맨드의 응답속도가 PAC-V의 LED로 표시됩니다.

왼쪽부터 켜지는 LED바 1개가 PCM 샘플 1개를 의미합니다.

커맨드를 대기하는 동안 LED가 점점 켜지는거죠 ㅎ.ㅎ

결국 LED가 모두 꺼져있면 응답속도가 빠르고, LED가 많이 켜지면 응답이 느린 상태입니다.


아래는 삼성 EVO입니다.




아래는 샌디스크 구버전입니다.




아래는 샌디스크 신버전입니다.



위의 사진에서는 샌디스크 Ultra 신버전이 꽤 느린 것으로 보이는데요.

실제로 MV 재생을 해보면 타이밍을 놓쳐서 화면에 테어링도 생기고, 사운드도 끊어질 정도로 엉망이 됩니다 ㄷㄷ


여러 종류의 MV 파일로 테스트 했을 때의 응답 딜레이는,

삼성 EVO        -> 대부분 1개 또는 2개, 느린 경우는 6개까지 발생

샌디스크 구버전 -> 대부분 0개 또는 1개, 느린 경우는 9개 이상 발생

샌디스크 신버전 -> 대부분 2개 ~ 5개, 느린 경우는 9개 이상 발생


삼성 EVO가 가장 안정적이구요. (그래서 계속 쓰고 있었...)

샌디스크 구버전은 파일에 따라 가끔 테어링이 나는 경우가 생깁니다.

샌디스크 신버전은 사실상 재생포기 수준이네요 ㅎ.ㅎ


V4에서 빨강+회색의 샌디스크 SD를 쓰시려는 분은 참고하세요~

저는 이번에 구매한 것들 서랍에 쳐박아놨습니다ㅋㅋ


그럼, 이만...


PS. 나무위키에서 찾아보니 위의 SD에 대한 출시연도가 나오네요. (위키라서 틀린 정보일 수도 있습니다.)

제가 샌디스크의 구버전(흰색+회색), 신버전(빨강+회색)이라고 표현했는데, 모두 같은 해(2020년)에 출시되었군요.




2024년 7월 28일 일요일

역시나 멋진 파리 올림픽 2024

프랑스 애들은 원래 그래요.



.

.

.

유럽에 놀러가려면 독일, 이탈리아, 스페인, 스위스 쪽으로 선택하시길~ ㅎ.ㅎ


2024년 7월 24일 수요일

지난 20년 개발의 추억 #10 - SLT-X V1

월간 추억팔이 #10편이 나왔습니다~ ㅎ.ㅎ


지난 글은 아래 링크를 이용하세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html

https://sharksym.blogspot.com/2024/03/20-7-audiofactory.html

https://sharksym.blogspot.com/2024/04/20-8-mmcsd-drive-v4.html

https://sharksym.blogspot.com/2024/06/20-9-xii-v.html



2009년에 만들어서 10년간 쓰던 확장슬롯이 있었습니다.

만능기판에 뜨개질로 만든 후 종이 테입으로 덮어놨는데, 10년이 흐르니 미라처럼 되었네요ㅋ



기본 4개의 서브슬롯과 I/O 슬롯 2개가 들어있죠.

저의 WSX, GT는 내부 SLOT 0-1 개조가 되어있어서, 이 슬롯의 /SLTSL 신호가 RSV핀으로 출력됩니다.

이걸 활용하면 서브슬롯 5개 + I/O 슬롯 1개로 사용할 수 있어요.

I/O 슬롯에는 뮤직모듈(Y8950)을 꽂으면 내장롬 실행을 막을 수 있어서 편합니다요 ㅎ.ㅎ


.

.

.

그렇게 시간이 흘러 주변기기가 많이 늘어나게 되었습니다.

2개의 확장슬롯을 써도 되겠지만, 상단슬롯에서 케이블이 삐져나오면 보기가 안좋거든요.

가끔은 기본슬롯(SLOT 1)을 써야하는 경우, 확장슬롯을 뺏다 꽂았다 하는 것도 귀찮구요.


뭔가 새로운 확장슬롯을 만들어야 하는 때가 되었습니다요~



하나의 마스터 보드(슬롯 1개)에 여러개의 슬레이브 보드(슬롯 3개)를 합체하는 방식으로 구상을 해보았어요.

마스터 보드에는 컨트롤 기능이 들어있구요. 슬레이브 보드는 신호 버퍼링 및 보든 연결 상태만 알려줍니다.

동작 모드는 연결된 슬레이브 보드의 갯수에 따라 기본값이 설정됩니다.


마스터 + 슬레이브 x 1 = 기본 확장슬롯 (서브슬롯 4개)

마스터 + 슬레이브 x 2 = 기본슬롯 + 확장슬롯 (서브슬롯 4개) + I/O 슬롯 2개

마스터 + 슬레이브 x 3 = 확장슬롯A (서브슬롯 4개) + 확장슬롯B (서브슬롯 4개) + I/O 슬롯 2개

... 이렇게요.


각 서브슬롯은 순서를 바꿔서 섞거나, /SLTSL 신호를 ON/OFF 가능합니다.

사용자가 매니저 프로그램을 통해 이 설정을 하게 되구요. 설정값은 플래쉬롬에 저장되어서 부팅할 때 자동으로 재설정되는 방식입니다.



당시에 오랫동안 고민해서 만들었는데, 지금 다시 봐도 머리가 어지럽네요ㅋㅋ


아래는 옆에서 본 10-SLOT 모드의 모습입니다.

보드마다 전원 LED가 따로 있어요. 흐...





그리고, 각 슬롯에서 입력되는 사운드는 개별로 ON/OFF 가능합니다.

여러개의 사운드 카트리지를 쓰다보면 이게 또 유용하거든요 ㅎ.ㅎ



.

.

.

이렇게 SLT-X V1을 만들어서 수개월을 써보니 여러가지 생각이 떠오릅니다.

프로그램만으로 슬롯 설정을 마음대로 바꿀 수 있는 건 좋은데, 이게 기기 외부에서는 전혀 설정값을 알 수가 없거든요.

일단 켜서 매니저 프로그램으로 진입해야 설정을 볼 수 있으니까요.

결국 본체 하나에 SLT-X 하나 붙박이로 쓰면 괜찮겠지만, 이걸 다른 기기에 옮겨서 꽂으면 최악의 경우 본체가 망가지는 상황이...ㅋ


참고로, SLT-X V1은 본체에서 출력되는 /SLTSL를 사용하지 않습니다.

이 신호를 무시한 채, SLT-X에서 신호를 따로 재생성합니다.

다르게 말하면 SLT-X가 본체의 PPI 역할을 똑같이 해주고 있습니다.

본체의 슬롯 상황을 잘 알고 쓰면 괜찮습니다만, 그게 힘드신 분들도 많을 거에요.


그리고 결정적으로, 본체의 DATA BUS에 양방향 버퍼가 있으면 사용이 불가능합니다.

버퍼 컨트롤을 본체쪽에서 하고 있어서, 외부의 SLT-X가 아무리 ㅈㄹ을 해도 방법이 없어요ㅋ

대우 아이큐2000, X-II 등등 대부분 MSX2에서는 못 쓴다능...


결국 이걸 다른 분이 쓸 수 있도록 제작하는 건 포기했습니다.

그냥 '머리속으로 상상 가능한 슬롯환경을 모두 구현해보자'라는 목표만 달성하는 걸로 마무리했네요.

그래도 만드는 건 잼났어요. 나중에 보급형(?) SLT-X V2가 나올 때까지 잘 썼습니다요~ ㅎ.ㅎ


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ/


2024년 7월 22일 월요일

MMC/SD Drive V4 제작 #21 - SUB-ROM에 긴 제목을 넣어보자

V4에서 SUB-ROM 기능을 쓰시는 분 계세요? ㅎ.ㅎ

참고로 V3에서는, 작은 용량의 메가램 때문에 하이브리드 모드(MegaRAM + FlashROM)나 코에이 모드로 활용되었습니다.


V4에서는 4MB의 SUB-ROM 영역을 Multi-ROM 모드로 사용하는데요.

이게 옛날 V2의 Multi-ROM II와 비슷한 모습이죠.


그닥 활용안되던 V4의 SUB-ROM을 좀 더 유용하게 보이도록(?) 만들어보았습니다.

롬 이름에 긴 제목을 달아주는 것으로요ㅋ

이 기능은 BIOS/Tool v5.75부터 지원됩니다!


일단 테스트를 위해, 코나미의 롬을 모아서 넣습니다.

파일명은 코나미 카트리지의 시리얼 넘버 RCxxx.ROM 스타일로 바꿨네요.

코나미의 모든 롬을 다 넣으면 좋겠지만, SUB-ROM 용량 제약이 있으니... 몇몇 게임을 제외합니다. (마종, 콘트라 등등)

선택된 롬은 총 53개입니다.




기존에 SUB-ROM을 다운로드하는 방법은 보통 2가지 정도인데요.

MMCSD FILENAME.ROM /S

MMCSD *.ROM /S


여기서 '/S:Long_Name' 옵션이 추가되었습니다.

최대 28자의 롬 제목을 별도로 붙여줄 수 있어요.

예) MMCSD RC749.ROM /S:THE_MAZE_OF_GALIOUS


제목을 쓸 때는 빈칸(SPACE)를 쓸 수 없으니, 대신 언더스코어(_)를 쓰면 됩니다.

다운로드 할 때 빈칸으로 변환이 되도록 해놨어요.


아래는 53개의 롬을 모두 다운로드한 후의 모습입니다.

남은 SUB-ROM 영역이 0이 되었네요! ㅎ.ㅎ




재부팅 후 부트 메뉴에서 SUB-ROM으로 진입하면 아래처럼 긴이름으로 표시됩니다.




만약 구버전의 BIOS를 쓰는 경우는 아래처럼 짧은 제목(롬 파일명)으로 표시됩니다. 참고하셔요.




그럼, 즐 V4 하셔요~~ ㅎ.ㅎ/