MSX1 pages and slots

Pagina 6/7
1 | 2 | 3 | 4 | 5 | | 7

Van DamnedAngel

Master (232)

afbeelding van DamnedAngel

07-02-2020, 12:05

Hi gdx, thanks for your reply. You were on spot!

In fact my rom is a 16k one, and being run in an emulator, it could not miss the wires for the mirror effect. Nevertheless, openMSX seems to be emulating the mirror effect, because the recond time it is run is after the scan on 0x8000!

Should this be the correct behaviour of the emulator? I mean, if I have a fully adrdressed 16kb cartridge, it would not be mirrored, and the final behaviour of the system would be a unique run of the init routine.

I understand that the emulator has no way of knowing if there is a mirror wiring or not in the cartridge just by the contents of the rom, but it seems to me that not-mirroring should be the default, the baseline.

Is there a configuration to instruct the emulator not to emulate the mirror effect?

Unless, of course, that is an expected behavior or a common practice. Is that the case?

Van Grauw

Ascended (10068)

afbeelding van Grauw

07-02-2020, 12:48

You can tell openMSX to use a non-mirrored mapper type. However the auto-detection can only guess so much. Here is a list of all supported ROM types:

https://github.com/openMSX/openMSX/blob/8e968800/src/memory/...

In your case I think you want to pass -romtype Normal4000 or -romtype Page1 on the command line.

Van DamnedAngel

Master (232)

afbeelding van DamnedAngel

07-02-2020, 14:29

That's it!

Catapult's Normal4000 and Plain 16kB Page 1.

It works perfectly well now!

Thanks a lot!

Van hit9918

Prophet (2905)

afbeelding van hit9918

07-02-2020, 20:26

but I think the common case is a mirroring ROM!
because on the MSX a cartridge gets its own 64k and then being cheap on address decoders is NOT a bad design because the rest of the system is not affected.

and. now your ROM crashes at the user. who shall not be bothered with emulator switches. better stretch the ROM to 32k.
maybe today the common case is to load it in a flashrom. then a 32k file too is better for a reliable ROM loading.

or keep it 16k and set a flag in your SLTWRK to protect against double running.

Van ducasp

Champion (461)

afbeelding van ducasp

07-02-2020, 22:10

hit9918 wrote:

but I think the common case is a mirroring ROM!
because on the MSX a cartridge gets its own 64k and then being cheap on address decoders is NOT a bad design because the rest of the system is not affected.

and. now your ROM crashes at the user. who shall not be bothered with emulator switches. better stretch the ROM to 32k.
maybe today the common case is to load it in a flashrom. then a 32k file too is better for a reliable ROM loading.

or keep it 16k and set a flag in your SLTWRK to protect against double running.

Not mirroring is not expensive, CS1 can be used along with Slot Select, no need to care about address decoders and extra logic (a nice guy has explained me this, as I wasn't aware about this and thought the same as you Tongue ). You can just wire slot select directly to CS on the EEPROM and CS1 to OE on the EEPROM, no extra logic needed, as CS1 is generated when there is a read in the 4000-7FFF address range.

Van Grauw

Ascended (10068)

afbeelding van Grauw

07-02-2020, 22:46

Most game ROMs don't return once booted, so the mirroring into page 8000H and being started again by the BIOS is not an issue.

However I do wonder if a mirroring ROM type is the best default. I noticed that for a page 2 ROM openMSX picks a nonmirroring type.

Van DamnedAngel

Master (232)

afbeelding van DamnedAngel

08-02-2020, 11:09

Grauw wrote:

I noticed that for a page 2 ROM openMSX picks a nonmirroring type.

That is not what I experience. Xyzolog's 16kb 0x8000 ROM is loaded mirrored in 0x4000 in my OpenMSX in AUTO mode (via Catapult).

Van DarkSchneider

Paladin (942)

afbeelding van DarkSchneider

08-02-2020, 11:53

If you want to nullify system ISR, instead trying so many tricks, why not simply use IM2? It will take a few RAM but then you don't require a 64KB system to put your own ISR.

What I do to set IM2 is get some space used by BASIC (if you are not going to use it) on page 3, actually this one:

F500-F601 (257), vector table IM2 pointing to value below.
F4F4-F4F6 (3), JP ISR_address

Van sd_snatcher

Prophet (3473)

afbeelding van sd_snatcher

08-02-2020, 15:21

I wonder why openMSX is defaulting to mirror 16KB ROMs, if the real MSX has three pins on its slot dedicated to avoid that to happen: /CS1, /CS2 and /CS12. This default only causes this kind of double-boot confusion amongst users and developers.

The vast majority of cartridges won't mirror. In fact, only some poorly designed cartridges will.

Van gdx

Enlighted (4706)

afbeelding van gdx

08-02-2020, 16:13

sd_snatcher wrote:

I wonder why openMSX is defaulting to mirror 16KB ROMs

This allow to launch more games by default.

Pagina 6/7
1 | 2 | 3 | 4 | 5 | | 7