MSX 64k games ROM program

Page 1/3
| 2 | 3

By mjnman

Supporter (8)

mjnman's picture

20-11-2020, 15:18

I bought a little board where I can put a eprom. The card support 8K, 16K, 32K and 64K.
I can use with 8K and 16K. The 32K games work with cut the ROM file in two 16K pieces, inverted and assemble in 32K and it's ok.
How I can program a 64K ROM games (27C512)? I tried with entire ROM game but didn't work.
oO

Login or register to post comments

By lintweaker

Champion (313)

lintweaker's picture

20-11-2020, 17:21

MSX supports ROMs up to up to 32k without a mapper mechanism. Larger ones require a mapper as it would otherwise overlap with system memory/bios.

By ~mk~

Master (254)

~mk~'s picture

20-11-2020, 20:10

I think you have to swap the banks as well.
This video might be helpful: https://youtu.be/pd_EqTok7fc

By santiontanon

Paragon (1105)

santiontanon's picture

21-11-2020, 00:52

You can definitively use up to 64kb without a mapper. But to access the info in the first 16KB of the ROM the assembler code needs to swap the BIOS out, which is a pain. And to access the last 16KB of the ROM, you need to swap out the RAM, which is an ever bigger pain. That's why most non-mapper ROMs are 32KB, using the middle 32KB. But in principle, you can use all 64KB without a mapper.

By gdx

Prophet (3837)

gdx's picture

21-11-2020, 01:47

All is here:
https://www.msx.org/wiki/Develop_a_program_in_cartridge_ROM

For a 64KB ROM, you need to find the RAM slot on page 3 and keep the value somewhere to reselect RAM after ROM.

By ARTRAG

Enlighted (6455)

ARTRAG's picture

21-11-2020, 11:10

In Uridium (commercial version) the last rom page in c000h is used to store code and data that is relocated to ram in 0000h at setup. After the setup the game swaps the rom and the ram at 0000h during execution using slot swap as it waere a two page mapper

By Briqunullus

Master (203)

Briqunullus's picture

21-11-2020, 11:55

gdx wrote:

For a 64KB ROM, you need to find the RAM slot on page 3 and keep the value somewhere to reselect RAM after ROM.

Never thought of that. If the memory is all ROM, where do you store where the RAM is... Smile Smile Smile

By MsxKun

Paladin (953)

MsxKun's picture

21-11-2020, 12:03

Briqunullus wrote:
gdx wrote:

For a 64KB ROM, you need to find the RAM slot on page 3 and keep the value somewhere to reselect RAM after ROM.

Never thought of that. If the memory is all ROM, where do you store where the RAM is... Smile Smile Smile

On a Z80 register, there is plenty of them Wink

By ARTRAG

Enlighted (6455)

ARTRAG's picture

21-11-2020, 14:31

All setup is done using registers only.
Once the copy is complete it swaps again ram at c000h

By sd_snatcher

Prophet (3367)

sd_snatcher's picture

21-11-2020, 15:40

@mjnman

16KB and 32KB ROMs are very easy.

48KB (0000h~BFFFh) can be supported without too much pain if the frame-0 is only used for data. It can be read using the BIOS RDSLT function. You can, i.e., store compressed graphics there.

64KB ROMs are totally nonstandard and not worth the pain. There are a lot of places where things could go wrong and end up only working on a few plain-vanilla machines without any extensions connected.

If you need more than 48KB of ROM, the wise decision is top go for an ASCII16 megaROM. It's a ridiculously simple circuit that will cost you much less time/resources than trying to solve the problems of the 64KB plain ROM approach, with the added bonus that it allows you to go much further than just 64KB. Smile

By gdx

Prophet (3837)

gdx's picture

21-11-2020, 16:41

Both 48KB and 64KB ROMs are either non-standard or both are standard. They are standard if we consider that the PPI is part of the standard. Otherwise there are almost as many constraints to use page 0000h-3FFFh and page C000h-FFFFh. The only difference is that no Bios routine can be used to manipulate the slots of the page C000h-FFFFh. Some routines work for the page 0000h-3FFFh.

Page 1/3
| 2 | 3