2012년 9월 19일 수요일

MMC/SD Drive V2 - Multi-ROM II 제작 #1 개조 용 보드

간만에 납땜을 해보았습니다. ㅎ.ㅎ;


MMC/SD의 플래쉬롬 512KB는 멀티롬 기능을 이용하여,

 336KB 영역을 플래쉬롬팩처럼 쓸 수가 있습니다.


멀티롬 V2는 플래쉬롬을 7개 더 추가해서 자주 즐기는 게임들을 빠르게 실행하도록 하는 것입니다.

플래쉬롬을 많이 달더라도 SCC의 4MBits 주소를 초과할수는 없으니, 코에이 8메가롬팩은 실행 불가능합니다요...


이번에 추가될 플래쉬롬은 byte program 방식으로 골랐습니다.

SCC메가플래쉬팩 등에서 쓰이는 AM29F040B 모델을 쓸수 있겠습니다.

MMC/SD BIOS에서 쓰던 AT29C040은 이제 구하기 힘들기 때문에 어쩔수없이 플래쉬롬을 다른걸로 골랐어요. ㅋ


제작 과정은 아래처럼 됩니다.

1. MMC/SD Drive V2.2 제작 (흥건남자님 PCB 사용)

2. 플래쉬롬 8개 (BIOS 1개 + 추가플래쉬 7개) 선택 로직 추가

3. 멀티롬 V2 SW 제작


1차로 MMC/SD Drive V2.2를 납땜해봤습니다.

흥건남자님의 보드의 회로 그대로 납땜했습니다.

나중에 패턴을 약간 수정이 되겠습니다만 이렇게 하면, 다른 분들도 기존 보드 수정하기가 쉽겠지요~


아래는 납땜 후 사진입니다. (LED 를 안달았군요..ㅋ)





아래는 뽀너스~ 샷 ㅡ,.ㅡ


이번 SCC 칩 및 어레이 저항은 격돌!페넌트레이스 팩에서 적출했는데요,

실수로 저항 GND 핀이 뽑혀버렸네요. (부러진게 아니라 쑤~욱 빠졌다능...ㅜ.ㅜ)

다행이 칼로 저항 구석을 긁어내니, 내부 패턴이 약간 드러납니다.

멀티미터로 찍어보니 14번 GND가 맞네요. 앗싸~ㅎ (곰님이 긁어보라고하셨는데, 진짜 됨... ㄳㄳ)

암튼 다리를 새로 달아서 연결했습니다.

사라만다로 테스트해보니 소리 잘나오네요.




다음은, 멀티롬 V2를 위한 플래쉬롬 추가가 되겠습니다.

애들 재우고 작업해하는데, 요즘엔 약간 힘드네요. ㅎ.ㅎㅋ

아무래도 납땜보다는 AM29F040B 다운로드 테스트가 먼저 될 것 같습니다요...


2012년 5월 21일 월요일

ASO Remake - 조금씩 업뎃~ㅋ

AREA1 완성 후, 구석에 쳐박아둔 ASO 소스를 다시 보고 있습니다.

목표는 올해안에 AREA2 완성! (너무 느긋하려나요? ㅋ)


HI-TECH C의 LIB에서 R800 명령을 쓸수 있도록 한군데 보완했습니다.

16BIT 곱셈 루틴인 IMUL 함수지요.

앞으로 터보알 고속모드 전용 프로그램은 LIB 바꿔서 쓸예정입니다.


사실... 순수 곱셈을 많이쓰는 프로그램이 아니라면 속도 향상이 미미하겠지만,

몇바이트 용량 작은 LIB 쓰는 재미도 있으니...ㅎ


으흠, 근데 OCM에서 돌릴려면, 기존 LIB쓰는 실행파일도 빌드해야되겠군요.



지저분한 코드 정리도 좀 했구요.ㅎ

점수 디스플레이도 추가했습니다.

사실 요건 숫자 출력하면 속도가 떨어질것 같아서, 빼놓고 만든거였지요. 히히..

숫자 폰트는 원본 ASO 캡쳐한 것과 동일한 8x8 크기로 넣었습니다.


속도 저하를 최소화하기 위해,

 점수판 숫자는 매 프레임 당 한 글자만 그리도록 했습니다. ㅋ

6자리 숫자니까 다 그리는데 6/60 초가 필요한 셈이죠. 0.1 초

2012년 4월 23일 월요일

GRUN으로 메가롬 게임도 세이브/로드가 가능할까요?

어제 GRUN v1.1 동작영상 찍으면서 생각해본 것인데요.

메가롬팩 게임도 잘 굴려보면, 상태저장/복구가 가능할 것 같다는 생각이 들었습니다.ㅋ


몇가지 추가로 구현이 필요하지만 MSX1 용 메가롬팩은 가능할 것 같네요.


참고로 MSX2 용 게임은 VRAM 128KB 전체 백업해야되는 문제랑,

VDP 레지스터 몽땅 백업해야 되는 문제가 있어서 불가능 확률 99%입니다.ㅋ


VDP 레지스터의 경우 분명히 게임 내에서는 shadow 레지스터 처럼 램에 백업을 해놓겠지만,

해당 위치를 알수가 없으니 다시 복구가 불가능합니다.

그리고 팔레트 레지스터는 램에 저장안할 확률이 높고요. 


암튼, MSX1용 메가롬팩으로 제한을 합니다.

메가롬은 메모리에서 실행하는게 불가능하니, MMC/SD의 멀티롬 또는 SCC메가플래쉬롬 등이 있어야겠군요.


문제는 메가롬 매퍼 레지스터를 백업하는 방법인데,

이것도 게임롬의 매퍼 처리하는 루틴을 패치하면 가능합니다.

FLASHMAN의 경우 매퍼 패치를 필수로 해야되기 때문에 별로 어려운건 아닙니다.

그러니까 멀티롬으로 실행되는 게임은 일단 다 된다고 보시면 되겠네요.

매퍼 레지스터는 GRUN 처럼 BIOS를 램에 올린후 후반 영역(3F00H ~ 3FFFH 등)을 활용합니다.


이렇게 되면 GRUN같은 DOS용 프로그램으로 겜이 시작되는게 아닌...

MMC/SD의 멀티롬에서 게임 시작하는 방식으로 밖에 구현이 안되겠지요.


결국 MMC/SD BIOS내에 GRUN 의 기능이 기본으로 포함되어야겠구요.

FLASHMAN에서 롬 다운로드할때는,

 GRUN 루틴으로 실행할지, 기존의 롬 BIOS 에서 실행할지 선택해서,

 각각 패치를 적용하면 되겠습니다.


쓰고보니 SCC 메가플래쉬 용으로는 안되겠군요. 흐...

불가능한건 아니지만, 다운로더를 따로 만들어야되겠지요.


근데 MSX1용 메가롬 게임이 꽤되나요? 그라디우스 시리즈 정도밖에 생각나는게 없네요. 으흠... 몽대륙이랑~