Running MSX AUDIO supported cartridge with NMS1205 Music Module

Page 2/5
1 | | 3 | 4 | 5

By Takamichi

Champion (355)

Takamichi's picture

11-09-2020, 05:42

I should've realized Dante 2 had FM but other titles especially the MSX Magazine ones were too unfamiliar ("Gladius ... Gradius with FM?!") oO

By Randam

Paladin (993)

Randam's picture

11-09-2020, 10:06

Sd_snatcher: I did not know also Ascii/ MSX Magazine games work with the poke. You made my day/ week! I was aware that Compile and Peach up games work with the msx audio poke. Xevious and Family stadium seemed to be outliers, but those might have been programmed by Compile (especially Xevious is very blatant about this in the credits). One game that was not named above is Columns. It also supports MSX Audio.

By sd_snatcher

Prophet (3326)

sd_snatcher's picture

11-09-2020, 14:02

@Randam

The ASCII/MSX-Magazine games won't work with just the poke. They really require the BIOS (v1.3 or higher).

By NYYRIKKI

Enlighted (5587)

NYYRIKKI's picture

11-09-2020, 22:13

Takamichi wrote:

poke -54,35 trick doesn't work in that case. I am particularly interested in Labyrinth.

Yes, seems so... In Labyrinth poke -54,241 may work better for you.

By Randam

Paladin (993)

Randam's picture

12-09-2020, 02:54

mmm, if it requires the bios for that it might be interesting to have it altered. But is there someone who can do that? Because I can't do that myself...

By Takamichi

Champion (355)

Takamichi's picture

12-09-2020, 18:18

NYYRIKKI wrote:
Takamichi wrote:

poke -54,35 trick doesn't work in that case. I am particularly interested in Labyrinth.

Yes, seems so... In Labyrinth poke -54,241 may work better for you.

It really worked with NMS 8255! What does that poke really do? However, I get "Syntax error in 1010" with FS-A1GT and hangup with HB-F1XDJ. Since I don't own megaRAM I am using openMSX with megaRAM and NMS1205 as extensions.

Back to the original question, how to run an MSX-AUDIO game cartridge/rom with NMS1205? Alternatively I own GR8NET that behaves almost equal to NMS1205. How to run Sofarun with it while fooling the GR8NET is FS-CA1? Edit: I copied all Sofarun files, MSXDOS2 files and Commando rom to a FD, booted SR and launched the Commando rom but it doesn't run, all I see is a flickering horizontal bar regardless GR8NET/NMS1205 is inserted or not. The MSX was unmodified FS-A1GT. Changing Sofarun's CPU setting to Z80 and Music Modul detect = ON didn't solve. Edit: Sofarun on Sunrise IDE couldn't run Labyrinth and Xevious. MSX simply resetted. With Family Stadium MSX showed the initial NAMCO PRESENTS screen but hanged there.

By sd_snatcher

Prophet (3326)

sd_snatcher's picture

12-09-2020, 16:32

Doesn't the GR8NET support the MSX-Audio BIOS mapper type? Since it's an FPGA cartridge that has received many updates and new features since its release, theoretically this could be implemented as a new feature.

By Takamichi

Champion (355)

Takamichi's picture

12-09-2020, 17:48

Eugeny told me GR8NET hasn't incorporated MSX-Audio BIOS mapper type and it will be difficult since it " is not that ROM allocation, but two RAM pieces mirrored between the banks."
btw openMSX "Boosted audio" extension = NMS1205 with 1.3 rom, right?

By sd_snatcher

Prophet (3326)

sd_snatcher's picture

12-09-2020, 20:25

GR8NET has ROM and RAM, and can emulate much more complex devices like the SCC+.

The MSX-Audio BIOS BIOS ROM/RAM slicing can be implemented with a single 74LS139 chip. I really struggle to understand why a monster FPGA isn't also able to do it...

Quote:

btw openMSX "Boosted audio" extension = NMS1205 with 1.3 rom, right?

Yes. I'm just not sure if the latest version of openMSX updated the BIOS to the newer v1.3b.

By NYYRIKKI

Enlighted (5587)

NYYRIKKI's picture

13-09-2020, 00:52

Takamichi wrote:
NYYRIKKI wrote:
Takamichi wrote:

poke -54,35 trick doesn't work in that case. I am particularly interested in Labyrinth.

Yes, seems so... In Labyrinth poke -54,241 may work better for you.

It really worked with NMS 8255! What does that poke really do? However, I get "Syntax error in 1010" with FS-A1GT and hangup with HB-F1XDJ.

Uh, oh... You could ask something more simple you know... Smile
Well, let's try... I'll break down the POKE -54,35 first...

This address -54 (#FFCA) is entry address to all extended BIOS functions. There are many devices and software out there that uses this to extend MSX functionality such as MSX-DOS2 memory mapper, TCP/IP, Memman, Kanji driver, MSX-JE, MultiMente, RS-232 and as you can guess... MSX-Audio as well.

IF there is no devices or software that uses this functionality (like is the case when you boot not extended NMS 8255) this address contains just 5x "RET" (return) instruction and when you poke 35 to it, it will change the first "RET" to "INC HL" that will change HL register when called. CPU will then continue to next instruction that is still RET as no one has touched it. In case there was an active device CPU will start doing "random" things after INC HL, but it still has relatively good possibility it will end up returning without crashing the computer as there are many "RET" instructions "near by", but this is just a lottery... To make sure this is not matter of luck, you should execute also POKE -53,201 ... but it also makes this trick already double long.

When these games start, they put MSX-AUDIO device number (10) to D and send message to it to see if it responds... Easy way to see if someone responded is to check if message buffer location pointed by HL is moved and this is exactly the idea that this trick tries to achieve.

How ever the problem is that this is "really ugly hack" as it will not even check device number, but messes up communication to all possible connected devices... No matter what device or software you try to talk with, you just increase HL and nothing else happens... The whole trick is based to the idea that there is NOTHING else using extended BIOS functions than the game it self and the game is using it ONLY to detect if MSX-AUDIO is there or not... As horrible and unlikely as this sounds, we have already learned that many times this is actually exactly the case.

... but this is not the case with Labyrinth. Instead this game asks all extended BIOS devices to send it pretty much all the public information they can give, archives that and then it specifically asks "How many MSX-Audio compatible devices are connected?", checks the response, asks some more details and even executes some init stuff from MSX-Audio BIOS. Only after all this massive data collection and artistic initialization performance it finally returns the result in a flag, if it was able to find MSX-Audio compatible device or not.

Naturally this makes it impossible for us to fool the routine by just simple INC HL trick and especially we can't let it call MSX-Audio BIOS as we don't have one... So instead we change the "INC HL" to "POP AF". So... When extended BIOS is called, this instruction will mess up the stack so that CPU forgets where it was coming from. This will also use the original return address to mess up all the CPU flags and accumulator. Because flag can only be 0 or 1, this is a bit coin flipping, but we are lucky this time and get correct value to correct flag. As the CPU does not remember where it was supposed to return, it will return to previous routine and in this particular case the messed up flag ends up being status: "Yes, I found MSX-Audio" -> Great!

How ever as you might imagine when there IS something else around that tries to use the extended BIOS functionality, it will also end up forgetting what it was doing and get messed up flags accumulator etc. and most likely result out of this kind of total mess is a crash.

I would not normally suggest you to try this kind of crap, but as it is a ROM cartridge, the options are kind of limited... at least on real machine... but on emulator you could use correct cartridge combo anyway.

Page 2/5
1 | | 3 | 4 | 5