VGMPlay for MSX

Page 34/35
27 | 28 | 29 | 30 | 31 | 32 | 33 | | 35

By Grauw

Enlighted (7681)

Grauw's picture

11-01-2019, 15:03

ImATrackMan wrote:

Friendly reminder that Makoto and Neotron also have a PSG built-in.

Big smile Yeah, definitely, those fall under the OPNA and OPNB detection though.

Additionally, their base frequency is 2 MHz, where the other PSGs run at 1.79 MHz, and I can’t combine chips with a different base frequency yet until I implement frequency translation.

Looking very much forward to Makoto!

By sdsnatcher73

Master (233)

sdsnatcher73's picture

11-01-2019, 18:32

Who is making these? Are they already/still available for purchase?

By Grauw

Enlighted (7681)

Grauw's picture

11-01-2019, 18:52

They’re still in development, not released yet.

ImATrackMan is working on Makoto, SuperSoniqs & JunSoft are working on Neotron.

By da_Dude

Rookie (18)

da_Dude's picture

12-01-2019, 06:37

!Declare Interest: i can't wait till ImATrackman Makoto & Supersoniqs/JunSoft Neotron release. \0/ yay VGM \0/
Greetz, SceneCAT
Running Naked in a Field of Flowers

By Pentarou

Master (146)

Pentarou's picture

19-01-2019, 17:51

Grauw, can you explain how does the detection of a PSG at the alternate address work?
Is it enough that a writable address exists at 12H, or does it have to be fully working?

By Grauw

Enlighted (7681)

Grauw's picture

19-01-2019, 18:54

The detection code here corresponds to points 1 and 2 of my previous post.

It writes 12H to register 0 and 34H to register 2, then reads registers 0 and 2 to confirm it gets back the written values.

The MSX-BASIC equivalent would be:

10 OUT &H10,0 : OUT &H11,&H12
20 OUT &H10,2 : OUT &H11,&H34
30 OUT &H10,0 : IF INP(&H12) <> &H12 THEN PRINT "Not found" : END
40 OUT &H10,2 : IF INP(&H12) <> &H34 THEN PRINT "Not found" : END
50 PRINT "Found"

Note that this only works for PSGs which are fully accessible, write-only PSGs (like the MegaFlashROM SD’s) can’t be detected by normal means unfortunately, so I have to jump through hoops for them.

Pentarou wrote:

a writable address exists at 12H

12H is the read port just like A2H is for the internal PSG. I expect a fully working PSG, so if it’s an FPGA emulation then it also should emulate the reading of the registers.

By АIеks

Master (135)

АIеks's picture

19-01-2019, 19:05

Why did the added PSG lay on the I / O range 0 ... 3F? This is a range for users. There is the MSX2 I / O standard (I / O, 40 ... H) and FPGA (do whatever you want). So mindlessly do incompatibility.

Sorry for my English.

By Pentarou

Master (146)

Pentarou's picture

19-01-2019, 19:45

Thanks Grauw, I have a few more questions:
Is it possible to add an internal YM2203 (the real IC) to an MSX and use it with VGMPlay? I've seen a photo of a board built by l_oliveira, but is there info about it (I/O addresses, freq)?
Is it possible to use just the PSG part of the YM2203 as a 2nd PSG?

By Grauw

Enlighted (7681)

Grauw's picture

19-01-2019, 21:20

Aleks: The secondary PSG is a user extension, not an official standard. And many other devices use the 0-3FH range. So I don’t understand what the problem is with it?

Either way, hardware nowadays needs to be very careful with their I/O port choices, there simply isn’t many unused ones left. Making things more difficult is the excessive Music Module port mirroring in the 0-3FH space, or Franky using 48H-49H without taking switched I/O into account. Using memory-mapped I/O or switched I/O are the best options to avoid conflicts.

Anyway I’m only documenting and using what already exists. Best I can do is encourage hardware makers to standardise on the same ports and not to use up ports unnecessarily, and to use switched I/O if they’re CPLD-based so that the more simplistic address decoding remains free for simpler hardware.

Pentarou: I suppose it’s possible.

One thing to be aware of, at the 10H address it will conflict with the Music Module, which has very annoying mirroring there of the MIDI UART output ports. Its bits 5-7 contain UART interrupt enable flags, which will crash the MSX due to unhandled IRQs. However I guess it can be worked around by disabling interrupts while selecting registers above 20H and up (and select register 0 after). So it’s possible, but it doesn’t come unencumbered.

By nitrofurano

Champion (287)

nitrofurano's picture

20-01-2019, 00:53

how difficult would be "emulating" rp2a03 on k051649, co12294 on ay-3-8910, saa1099 on ay38910+k051649, etc?
(i'm asking this after seeing that converting vgm files among these chips seems to be not that hard)

Page 34/35
27 | 28 | 29 | 30 | 31 | 32 | 33 | | 35
My MSX profile