Early Joy Van/Idea-Tek/TXC Mappers

Discuss emulation of the Nintendo Entertainment System and Famicom.

Moderator: Moderators

lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

Per your description of mapper 173, on my mapper 36 board, shouldn't writes to $4101 have done something to the resultant bank?

e.g. the sequence
$00 -> [$4103]
$30 -> [$4102]
$30 -> [$4101]
xx -> [$4100]
xx -> [$8000]
should cause bank 0 to be mapped, and also 0 to read back from the ASIC?

In contrast, writing 0 to $4101 should have caused bank 3 to be mapped and 3 to read back from the ASIC?

I'm pretty certain that writes to $4101 had just no effect at all when I was testing before, but if it doesn't involve test clips I'm willing to play with hot-swapping things again.
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by NewRisingSun »

No, because Mapper 36 does not connect Pin 22 to any PRG or CHR pins, but Mapper 173 does, and I'm still insisting that Pin 22 is operated by $4101. Basically, the way I think it works (and the only way that emulation works) is like this: Writing anything to $8000-$FFFF not only copies the internal register bits (originally from pins 6/8-12) to the output pins (1-3, 23, 24), but also copies the inverse of the $4101 state to Pin 22. Note that I do not expect that writing to $4101 alone without being followed by the usual $4103/$4101/$8000 sequence will have any effect. Because Pin 22 is not connected to anything on Mapper 36, you will not be able to see the effect from hot-plugging alone without connecting something, either a LED or a voltmeter, to Pin 22.

To get 8 KiB CHR bank 0 in Mapper 173, you must write: $FF to $4101 and $x1 (AND $01) to $4102 (and then the usual rest).
To get 8 KiB CHR bank 1 in Mapper 173, you must write: $FF to $4101 and $x0 (AND $01) to $4102 (and then the usual rest).
To get 8 KiB CHR bank 2 in Mapper 173, you must write: $00 to $4101 and $x0 (AND $01) to $4102 (and then the usual rest).
To get 8 KiB CHR bank 3 in Mapper 173, you must write: $00 to $4101 and $x1 (AND $01) to $4102 (and then the usual rest).
The other bits in $4102 are only relevant for the game reading back from $4100 and checking its value. You can see it yourself in the Mapper 173 dump of Puzzle from PC $E6F5 on (which also does three increments, so it'll be a bit more complicated). Here's the equivalent Kazzo script, also with three increments since it was just copied after the game's code:

Code: Select all

function ppu_dump(d, pagesize, banksize)
{
	for(local i = 0; i < pagesize; i++){
		local xorvalue = ((i >> 1) & 1) * 0xFF) ^ 0xFF;
		cpu_write(d, 0x4101, xorvalue);
		local written = (((i & 7) - 3) & 7) | (i & 8);
		cpu_write(d, 0x4102, written ^ xorvalue);
		cpu_write(d, 0x4103, 0);
		cpu_write(d, 0x4100, 0);
		cpu_write(d, 0x4103, 0xFF);
		cpu_write(d, 0x4100, 0xFF);
		cpu_write(d, 0x4100, 0xFF);
		cpu_write(d, 0x4100, 0xFF);
		cpu_write(d, 0x80EF, 0xFF);
		ppu_read(d, 0, banksize);
	}
}
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

Sure? I wasn't talking about the CHR A14 bit on mapper 173, but rather what's going on with the readback value.

For mapper 173, you wrote

Code: Select all

Read $4100-$4103: [.... RRRR]: Read Register. Bit 3 is inverted if Invert==1. Bits 4-7 are open bus.
Write $4100: When Mode==0: Bits 0-3 of Register := Input, bits 0-2 being inverted if Invert==1.
             When Mode==1: Bits 0-2 of Register incremented by one, bit 3 unaffected.
Write $4101: Invert := Written value bit 0.
Write $4102: Input := Written value bits 0-3.
Write $4103: Mode := Written value bit 0.
Write $8000-$FFFF: Output := Register; written value is ignored.
so if I write 0 to $4103, then 0 to $4102, then $10 to $4101, and then anything to $4100 ... the value I read back from $4100 should be something other than 0, right? Or am I confused?
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by NewRisingSun »

All games always write to $4101 before writing to $4102, and then do not write to $4101 until they have read from $4100 to check its result. So honestly I have no idea what to expect when writing to $4101 after you have written to $4102. That will have to be investigated.

I do think that we should investigate the $4101->Pin 22 issue first (assuming you don't insist on the "broken chip" explanation).
Last edited by NewRisingSun on Fri Mar 02, 2018 10:03 am, edited 1 time in total.
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by MLX »

I have a ET.02 Xiao Ma Li up for grabs. So if any of you want it to have some fun with the ITC20V8…
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

NewRisingSun wrote:All games always write to $4101 before writing to $4102, and then do not write to $4101 until they have read from $4100 to check its result. So honestly I have no idea what to expect when writing to $4101 after you have written to $4102. That will have to be investigated.
What I'm trying to get at isn't the order, but instead that it seems that writes to $4101should have done anything at all on mapper 36, unless I'm really misunderstanding things.
I do think that we should investigate the $4101->Pin 22 issue first (assuming you don't insist on the "broken chip" explanation).
I can't rule out that behavior having something to do with pins 4-8 being wired differently.
MLX wrote:I have a ET.02 Xiao Ma Li up for grabs. So if any of you want it to have some fun with the ITC20V8…
I unfortunately only have a front-loading NES and no famicom-to-NES adapter, so would have difficulty doing any tests. (short of desoldering it)
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by NewRisingSun »

What I'm trying to get at isn't the order, but instead that it seems that writes to $4101 should have done anything at all on mapper 36, unless I'm really misunderstanding things.
Let me revise what I have previously written to more accurately answer your question. The snipped you quoted, if correct, would say in terms of chip pins (and with my new understanding that there are really six bits plus one carry bit, even if Mapper 173 only connects four of them):
  1. Writing to $4101 changes Invert to Pin 12's value.
  2. When $4100 is written to and Mode is 0, the value previously written to $4102, being the triplet from Pin 10-12 and the triplet from Pin 6/8/9, is copied into Register. If Invert is active, the triplet from Pin 10-12 is inverted during copying, while the triplet from Pin 6/8/9 is not inverted.
  3. When $4100 is read from, the two triplets from Register are copied to Pin 6/8/9 and Pin 10-12. If Invert is active, the triplet copied to Pin 6/8/9 is inverted during copying while the triplet copied to Pin 10-12 is not inverted.
  4. When $8000 is written to, Register is copied to Output, and Pin 22 goes high if Invert is inactive and low if Invert is active.
The basic hypthesis here is that $4101 inverts one triplet during writing only and the other triplet during reading only.

On Mapper 36, since only two bits of the Pin 10-12 triplet and none of the bits of the Pin 6/8/9 triplet are connected, writing a value to $4102+$4100 with Invert inactive, then activating Invert, then reading via $4100 will return the same value because reading $4100 only inverts the non-connected triplet. Writing a value to $4102+$4100 with Invert active and reading it back via $4100 should however invert it. This is something you can test without clips.
Last edited by NewRisingSun on Fri Mar 02, 2018 12:43 pm, edited 1 time in total.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

Ok, great, my earlier analysis was wrong. Writes to $4101 do have an effect.

If I specifically write:
$30 → [$4102]
$10 → [$4101]
xx → [$4100]

then the value read back is $4F (D7, D6, D3-D0 open bus)

If I write
$30 → [$4102]
$20 → [$4101]
xx → [$4100]

then the value read back is $7F.

Subsequently, if I just write

$10 or $00 → [$4101]
xx → [$4100]

then the value switches to $4F and $7F as appropriate.

My hotswap test reads back after every write, and the value read back doesn't change until the final write to $4100.
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by NewRisingSun »

Yes, that seems compatible with my description. I have further edited it to highlight the importance of the final $4100 write. The experiment also nicely shows that only Pin 12 is relevant during the $4101 write. As for $4101 inverting the 6/8/9 triplet while reading from $4100, as I hypothesized, you will not be able to test this with a Mapper 36 board without using clips, as these pins are not connected to the CPU data bus.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

Mostly I was just worried about my earlier (incomplete) evidence implying a difference between your required behavior in mapper 173 and what I'd observed in mapper 36. But now that's resolved cleanly.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

MLX wrote:I have a ET.02 Xiao Ma Li up for grabs. So if any of you want it to have some fun with the ITC20V8…
Oh, actually. There's a few simple tests that would let us determine whether pin 4 is an input/output or connected internally to the other ground pin. Would you be willing to do them?

They're:
* measure resistance between pin 4 and pin 19 — whether it's more or less than a couple kiloohms
* measure diode drop across pin 19 to pin 4 — whether it exists
* measure diode drop across pin 4 to pin 5/7 — whether it exists
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by MLX »

Alright. My multimeter is kinda primitive so I'm not sure it's going to meet your expectations.

1-2) I can't, pin 4 is grounded by a trace under the IC (from pin 19).
3) Since the multimeter only has ohmic and continuity functionnality, I can't mesure any voltage drop… but we can still check both side:
4->5, 4->7: 520 Ohm
5->4, 7->4: 637 Ohm
The same value were observed for both 5 and 7.

Since it's straight grounded.
Last edited by MLX on Sun Mar 04, 2018 2:07 pm, edited 1 time in total.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

MLX wrote:1-2) I can't, pin 4 is grounded by a trace under the IC (from pin 19).
Argh. Well, ok, that's the answer we're going to get for that question.
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by NewRisingSun »

My hypothesis is still that Pin 4 was meant to take PA10 as an input and Pin 5 was originally meant to take PA11, and Pin 22 meant to output to CIRAM A10, relaying Pin 5 if $4101 D0==0 and Pin 4 if $4101 D0==1, just as Pins 24/25/26 on the JV001 ASIC. With Mapper 173 tying Pin 4 to GND and Pin 5 to Vcc, under this hypothesis, Pin 22 would instead constantly output 0 or 1 depending on the $4101 setting.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Early Joy Van/Idea-Tek/TXC Mappers

Post by lidnariq »

I realized that I could easily use a wire-wrap tool to non-destructively add connections to my copy of Policeman ... if we can think of any tests where that would be useful.

Unfortunately, I don't see an easy way to read back the contents of pins 1,2, and 24-22 without adding a lot of extra hardware.
Post Reply