Yet Another SEGA GAME GEAR Emulator その6

COLECOVISIONのゲームをGAME GEARに移植する方向性を探ってみます。

f:id:tanam:20140602200045p:image:w360

BIOSを公開している方(Colecovision ROM optimization)がいらっしゃるのでパッチを当てて起動してみます。

http://xi6.com/code/

http://xi6.com/code/coleco/

f:id:tanam:20140602203409p:image:w360

色々考えた結果は、COLECOVISIONのメモリーマップに合うように、GAME GEARのROMファイルを構成するのが良さそうです。

DONKEY.ROM

0000H-1FFFH coleco29.bin
2000H-3FFFH sc-3000 keyboard program
4000H-7FFFH unuse (all 0xff)
8000H-BFFFH donkey.col

もちろんI/Oポートも調整する必要があります。あとVSYNC割り込みがINTなのでNMIのアドレスに転送します。GAME GEARのRAMはC000Hからですが、COLECOVISIONのRAMは7000Hからなのでそこが問題です。以下の情報を元にROMパッチを作成する必要があります。

http://www43.tok2.com/home/cmpslv/Coleco/EnrCol.htm

http://www43.tok2.com/home/cmpslv/Mark3/EnrM3.htm

sc-3000 keyboard program

2000            		ORG	2000H
2000 3E02       A2000	LD	A,02H
2002 32FFCF     		LD	(0CFFFH),A
2005 C9         		RET
2006 FFFFFFFFFF 		DB	0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
200E FFFF       		DB	0FFH,0FFH
2010 C5         A2010	PUSH	BC
2011 D5         		PUSH	DE
2012 16FF       		LD	D,0FFH
2014 3E07       		LD	A,07H
2016 D3DE       		OUT	(0DEH),A
2018 DBDC       		IN	A,(0DCH)
201A 2F         		CPL
201B CB67       		BIT	4,A
201D 2802       		JR	Z,SKIP
201F 16BF       		LD	D,0BFH
2021 47         SKIP	LD	B,A
2022 4F         		LD	C,A
2023 CB10       		RL	B
2025 CB19       		RR	C
2027 380C       		JR	C,A202C
2029 CB19       		RR	C
202B 3E4C       		LD	A,4CH
202D A0         		AND	B
202E 47         		LD	B,A
202F 3E02       		LD	A,02H
2031 A1         		AND	C
2032 B0         		OR	B
2033 180C       		JR	A2038
2035 CB19       A202C	RR	C
2037 3E4C       		LD	A,4CH
2039 A0         		AND	B
203A 47         		LD	B,A
203B 3E02       		LD	A,02H
203D A1         		AND	C
203E B0         		OR	B
203F F601       		OR	01H
2041 32EEC3     A2038	LD	(0C3EEH),A
2044 3AFFCF     		LD	A,(0CFFFH)
2047 32F0C3     		LD	(0C3F0H),A
204A 3E00       		LD	A,00H
204C D3DE       		OUT	(0DEH),A
204E DBDC       		IN	A,(0DCH)
2050 2F         		CPL
2051 CB47       		BIT 0,A
2053 2805       		JR	Z,KEY8
2055 3E02       		LD	A,02H
2057 C3F320     		JP	TENKEY
205A DBDD       KEY8	IN	A,(0DDH)
205C 2F         		CPL
205D CB47       		BIT	0,A
205F 2805       		JR	Z,KEY2
2061 3E0E       		LD	A,0EH
2063 C3F320     		JP	TENKEY
2066 3E01       KEY2	LD	A,01H
2068 D3DE       		OUT	(0DEH),A
206A DBDC       		IN	A,(0DCH)
206C 2F         		CPL
206D CB47       		BIT	0,A
206F 2805       		JR	Z,KEY9
2071 3E08       		LD	A,08H
2073 C3F320     		JP	TENKEY
2076 DBDD       KEY9	IN	A,(0DDH)
2078 2F         		CPL
2079 CB47       		BIT	0,A
207B 2805       		JR	Z,KEY3
207D 3E04       		LD	A,04H
207F C3F320     		JP	TENKEY
2082 3E02       KEY3	LD	A,02H
2084 D3DE       		OUT	(0DEH),A
2086 DBDC       		IN	A,(0DCH)
2088 2F         		CPL
2089 CB47       		BIT	0,A
208B 2805       		JR	Z,KEY0
208D 3E03       		LD	A,03H
208F C3F320     		JP	TENKEY
2092 DBDD       KEY0	IN	A,(0DDH)
2094 2F         		CPL
2095 CB47       		BIT	0,A
2097 2805       		JR	Z,KEY4
2099 3E05       		LD	A,05H
209B C3F320     		JP	TENKEY
209E 3E03       KEY4	LD	A,03H
20A0 D3DE       		OUT	(0DEH),A
20A2 DBDC       		IN	A,(0DCH)
20A4 2F         		CPL
20A5 CB47       		BIT 0,A
20A7 2805       		JR	Z,KEYA
20A9 3E0D       		LD	A,0DH
20AB C3F320     		JP	TENKEY
20AE DBDD       KEYA	IN	A,(0DDH)
20B0 2F         		CPL
20B1 CB47       		BIT	0,A
20B3 2805       		JR	Z,KEY5
20B5 3E06       		LD	A,06H
20B7 C3F320     		JP	TENKEY
20BA 3E04       KEY5	LD	A,04H
20BC D3DE       		OUT	(0DEH),A
20BE DBDC       		IN	A,(0DCH)
20C0 2F         		CPL
20C1 CB47       		BIT	0,A
20C3 2805       		JR	Z,KEYS
20C5 3E0C       		LD	A,0CH
20C7 C3F320     		JP	TENKEY
20CA DBDD       KEYS	IN	A,(0DDH)
20CC 2F         		CPL
20CD CB47       		BIT	0,A
20CF 2805       		JR	Z,KEY6
20D1 3E09       		LD	A,09H
20D3 C3F320     		JP	TENKEY
20D6 3E05       KEY6	LD	A,05H
20D8 D3DE       		OUT	(0DEH),A
20DA DBDC       		IN	A,(0DCH)
20DC 2F         		CPL
20DD CB47       		BIT	0,A
20DF 2805       		JR	Z,KEY7
20E1 3E01       		LD	A,01H
20E3 C3F320     		JP	TENKEY
20E6 3E06       KEY7	LD	A,06H
20E8 D3DE       		OUT	(0DEH),A
20EA DBDC       		IN	A,(0DCH)
20EC 2F         		CPL
20ED CB47       		BIT	0,A
20EF 280B       		JR	Z,NOKEY
20F1 3E0A       		LD	A,0AH
20F3 A2         TENKEY	AND	D
20F4 32F0C3     		LD	(0C3F0H),A
20F7 3E00       		LD	A,00H
20F9 32FFCF     		LD	(0CFFFH),A
20FC D1         NOKEY	POP	DE
20FD C1         		POP	BC
20FE DBBF       		IN	A,(0BFH)
2100 FB         		EI
2101 C9         		RET
2102            END