カラオケスタジオは1987年に発売された、マイクとサブカートリッジスロットを持つカートリッジ。
今回は Enri 氏の調査とほぼ同じなので、該当部分も参照すること。
http://www43.tok2.com/home/cmpslv/Famic/Famic.htm
今回は Enri 氏の調査とほぼ同じなので、該当部分も参照すること。
http://www43.tok2.com/home/cmpslv/Famic/Famic.htm
[label] BANDAI M60001-0115P 728100 [pinout] PDIP 28 pin 1 i? 青 |28 s +5V 2 i? 黄 |27 o internal ROM EN# 3 i? 橙 |26 o external ROM EN# 4 i PPU A11 |25 o VRAM A10 5 i PPU A10 |24 o output PORT 6 i CPU ROM R/W |23 o program ROM A14 7 i CPU ROMSEL# |22 o program ROM A15 8 i CPU A14 |21 o program ROM A16 9 i CPU A13 |20 o program ROM A17 10 i CPU A12 |19 ? 11 io CPU D0 |18 i CPU D6 12 io CPU D1 |17 i CPU D5 13 io CPU D2 |16 i CPU D4 14 s GND |15 i CPU D3 [凡例] s: power supply i: input o: output io: input and output
ピン番号別における特記事項
- 1,2,3: マイクからのケーブルの色が基板上にレジストで漢字で書いてあるのでその表記にした
- 19: L level 固定??
- 20: main cartridge ROM には未接続。 external ROM 向け。
- 24: output port だが、基板上には配線されてないので実質無効
- 26,27: CPU address $8000-$ffff のデコードのみで、 R/W は無関係。よって write 時は bus 衝突する。
[代替論理式] always @(posedge CPU_R/W) begin if(CPU_ROMSEL# == 1'b0) begin reg[6:0] <= CPU_D[6:0]; end end PORT = reg[6]; VRAM_A10 = reg[5] == 1'b0 ? PPU_A10 : PPU_A11; internal ROM EN# = ~( (CPU_ROMSEL# == 0 && CPU_A14 == 1) || (reg[4] == 1'b1 && CPU_ROMSEL# == 0 && CPU_A14 == 0) ); external ROM EN# = ~( reg[4] == 1'b0 && CPU_ROMSEL# == 0 && CPU_A14 == 0 ); program ROM A[17:14] = CPU_A14 == 0 ? reg[3:0] : 4'b1111; //↑ reg[3:0] | 4{CPU_A[14]}; cpu_d[2:0] = (CPU_ROMSEL# == 1'b1 && CPU_A14 == 1'b1) ? {mic_ad, mic_b, mic_a} : 3'bzzz;
BANDAI
87 KARAOKE A
ピン配置は, 28pin 1Mbit ROM と一般的な配置. 基板自体は 27C301 の接続を想定しており、program ROM A17 は基板内部に配置されていない。
他の人の調査(Enri氏とnesdev.FCdev の Guest 投稿)では 27C301 を使用しているようだ。
87 KARAOKE A
ピン配置は, 28pin 1Mbit ROM と一般的な配置. 基板自体は 27C301 の接続を想定しており、program ROM A17 は基板内部に配置されていない。
他の人の調査(Enri氏とnesdev.FCdev の Guest 投稿)では 27C301 を使用しているようだ。
Enri 氏の調査結果にはピン番号の配置がない。
- UP-RIGHT -> 1
- UP-LEFT -> 15
- DOWN-RIGHT -> 16
- DOWN-LEFT ->30
[CPU - read] $6000-$7fff MIC input $8000-$bfff program ROM bank #0 (switchabale) $c000-$ffff program ROM bank #1 (fixed, bottom page) [CPU - write] $8000-$ffff VRAM control, program ROM bank #0 register $8000-$ffff ROM (bus conflict) [PPU - read and write] 0x0000-0x1fff cartridge RAM 0x2000-0x2fff system VRAM
[MIC input] address: CPU $6000-$7fff read bit assignments --------------- 2 MIC input A/D coneveted data??? (おそらく 0:on, 1:off) 1 MIC button B 0 MIC button A
マイクに向けて声をいれて bit2 を見ると 0 になるようだ。
[VRAM control, program ROM bank #0 register] address: CPU $8000-$ffff write (and read) bit assignments --------------- 6 pin 24 output (disabled) 5 VRAM A10 connection (0:PPU A10, 1:PPU A11) 4 ROM select (0: sub cartridge, 1:main cartridge) 3:0 program ROM A17:14
- busconflict があるので、sta $c000,x の形式で write する。
- 実際の所は $8000-$ffff の領域で反応する。
- bit6 は IC から出力されているが基板上でどこにも配線されてないので無効。
sub, main の ROM の address MSB ともに A16 なので、 A17 は未デコードの為、2 つの mirror を持つ。 register に書かれる値とそれに対応する ROM は下記となる。
value ---------------------------- 0x00-0x07 sub cartridge ROM 0x08-0x0f sub cartridge ROM (市販品2つはmirror) 0x10-0x17 main cartridge ROM 0x18-0x1f main cartridge ROM (mirror)
offset length --------------------------------- 0x00000 0x00010 NES header 0x00010 0x20000 main cartridge ROM 0x20010 0x20000 sub cartridge ROM (optional)
- 2つの mirror は含まず、 ROM select register とは逆の順番に持つので注意すること。
- NES file はこのような ROM 構成を想定していないのでこのような無理のある構成になっている。
- 再現度を上げるのであれば2つの ROM image は分離したほうがよい。