VGMPlay for MSX

Page 46/47
39 | 40 | 41 | 42 | 43 | 44 | 45 | | 47

By ToriHino

Champion (366)

ToriHino's picture

16-10-2019, 17:58

Yes indeed, it really looks like there is a problem in accessing the configuration register when it is in a subslot (at least other than a -0 slot). Of course it can still be a specific issue of this type of slot expander

The strange thing is that in version 1.2 it did work (be it probably only for 2MB) and in 1.3 not, even though it is also still detected as a MoonSound.

Although i now have a reasonable workaround by just putting the DalSoRi in subslot -0, i still want to try some more things and try to find at least what's really going on here Smile

By Grauw

Ascended (8452)

Grauw's picture

16-10-2019, 20:58

Let’s narrow it down some more… Add ld a,"x", call System_PrintChar after the first jr c,NotFound in DalSoRiR2_MatchSlot to determine exactly in which step it fails. And a call System_PrintHexA after the pop af in OPL4_Detect.

Also additionally I was thinking maybe there is some timing issue, although it doesn’t seem likely. You could try to intersperse ld b,0, djnz $ in OPL4_Detect before and after each call.

I tried again on my turboR and CX5MII with my MK expander btw, I still can’t reproduce it on either Sad.

By ToriHino

Champion (366)

ToriHino's picture

16-10-2019, 23:12

Actually i already tried exactly the same with 'X' Big smile
The 'x' is never printed so disabling the port does not work, the pop af results in 30.

Double checked again in slot -0 and there the x is shown just before detection and pop af results in 20

I indeed don't think it's a timing issue since i see it also on my MSX2+. Next to that OPL4 detection is not a a problem, it even detects when it should not Tongue

I did try it with the additional delay loops, even disabled the R800 but still the same effect

By Grauw

Ascended (8452)

Grauw's picture

16-10-2019, 23:42

Is there a possibility that the bus is floating and returns 30H by coincidence? Maybe the buffer of the slotexpanders isolate the bus from the pullups in the system or something.

The test could be made a little more elaborate than just testing the top 3 bits of the inputted value, such as first setting the bottom five bits to a specific value (and the top 3 to anything but 001B) and testing the full 8 returned bits… Doesn’t seem like a bad idea either way.

After the first call OPL4_WriteRegister2 in OPL4_Detect, could you try adding:

    ld de,10010010B << 8 | OPL4_WAVE_MEMORY_CONTROL
    call OPL4_WriteRegisterWave

Then remove the and 11100000B and change the xor 00100000B to xor 00110010B.

By ToriHino

Champion (366)

ToriHino's picture

17-10-2019, 00:42

Found the problem, and as it turns out it indeed was the slot expander itself oO .

It has 2 jumpers (JP4 and JP5) which can be used to duplicate subslot 1 on 0 and subslot 3 on 2. Apparently the jumper for subslot 1 and 0 was not working: i swapped it with the other one and now subslot 0 and 1 work, 2 as well but subslot 3 not. Swapping it back result in subslot 0, 2 and 3 working but subslot 1 not.

So for me the reported problem with the DalSoRi 2 no longer reproduces as well...

By Grauw

Ascended (8452)

Grauw's picture

17-10-2019, 18:39

That certainly explains it. Quite a peculiar feature those jumpers offer, it's clearly a Brazilian made expander Smile I think MegaRAM was popular there, whereas here few people have one. I wonder what the jumpers do exactly. Anyway. It sounds lile even with a broken jumper the slot can still be used for an I/O only device.

Now that leaves Pencioner, I wonder why he got the same symptoms too.

By Pencioner

Paladin (951)

Pencioner's picture

17-10-2019, 18:55

@ Grauw - no, I'm not having it. I had posted that my tests were ok, i can't reproduce:

Pencioner wrote:

I tried to reproduce the DalSoRi R2 issue but at my setup it is working fine in slotexpander, tried both Modulon and 8bit4ever one - all is good. But i don't have Turbo R - i tested on Sanyo Wavy 70FD. So might be that the issue is not related to either DalSoRi or VGMplay - it might be some hw related stuff

EDIT: and my guess about HW issue was correct Wink

By Grauw

Ascended (8452)

Grauw's picture

17-10-2019, 19:04

Oh ah it was Avkooi Big smile.

@Avkooi does all other hardware (both I/O and memory based) work well in those slots where the DSR2 has problems? E.g. Musical Memory Mapper if you have it, or SCC / FM-PAC / any megaROM.

By Avkooi

Expert (76)

Avkooi's picture

18-10-2019, 10:29

Thanks for all the suggestions! And I have some answers for you:

How did I erase the MSX Audio BIOS: I just wrote 00's to the ROM area with Jun's FPMT tool.

The first dipswitch in my DalSoRi2 for BIOS detection was 'OFF' while in your D2's it was 'ON', so I set it the same. With the first dipswitch 'ON', detection of the DalSoRi2 in the main slot of the TurboR isn't depended on the MSX Audio BIOS anymore. So that's one mystery solved!

When using in the Tecnobytes slotexpander however, detection of the DalSoRi2 still doesn't work in any of the subslots unfortunately... I tried a lot of other memory and I/O based hardware in the slotexpander and all (Metal Gear, Thexder, F1 Spirit, Wozblaster Enhanced, NeoTron, SFG, Musical Memory Mapper) function without problems. The only culprit still is the DalSoRi2.

There are no dipswitches on the Tecnobytes expander, so no settings I can change. I also checked the documentation and it doesn't mention settings that can be configured. Do you have any more ideas?

By Grauw

Ascended (8452)

Grauw's picture

18-10-2019, 11:45

Avkooi wrote:

Thanks for all the suggestions! And I have some answers for you:

How did I erase the MSX Audio BIOS: I just wrote 00's to the ROM area with Jun's FPMT tool.

The first dipswitch in my DalSoRi2 for BIOS detection was 'OFF' while in your D2's it was 'ON', so I set it the same. With the first dipswitch 'ON', detection of the DalSoRi2 in the main slot of the TurboR isn't depended on the MSX Audio BIOS anymore. So that's one mystery solved!

Ah I see, that explains at least that part; the natural “erased” state of flash memory is FF, so if you erase to that value it should work.

In VGMPlay I can’t write the detection sequence to every slot blindly because then it will interfere with other mappers and will cause e.g. Nextor to crash. So a slot is a candidate for detection when the MSX-AUDIO BIOS is installed (it has an ID string). However when it’s not flashed, how do I identify the candidates? I check for a pattern of FFs at address 4000H, which is what un-flashed DSR2’s have. When there’s a ROM there it will generally be different so if it’s that I can safely detect.

Avkooi wrote:

When using in the Tecnobytes slotexpander however, detection of the DalSoRi2 still doesn't work in any of the subslots unfortunately... I tried a lot of other memory and I/O based hardware in the slotexpander and all (Metal Gear, Thexder, F1 Spirit, Wozblaster Enhanced, NeoTron, SFG, Musical Memory Mapper) function without problems. The only culprit still is the DalSoRi2.

There are no dipswitches on the Tecnobytes expander, so no settings I can change. I also checked the documentation and it doesn't mention settings that can be configured. Do you have any more ideas?

Not really, but I’ll send you a test version by mail which logs debug information during detection to gather some more information.

Page 46/47
39 | 40 | 41 | 42 | 43 | 44 | 45 | | 47