MSX 64k games ROM program

Pagina 1/3
| 2 | 3

Door mjnman

Rookie (21)

afbeelding van mjnman

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

Aangemeld of registreer om reacties te plaatsen

Van lintweaker

Champion (464)

afbeelding van lintweaker

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.

Van ~mk~

Champion (328)

afbeelding van ~mk~

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

Van santiontanon

Paragon (1805)

afbeelding van santiontanon

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.

Van gdx

Enlighted (6209)

afbeelding van gdx

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.

Van ARTRAG

Enlighted (6935)

afbeelding van ARTRAG

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

Van Briqunullus

Hero (665)

afbeelding van Briqunullus

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

Van MsxKun

Paragon (1124)

afbeelding van MsxKun

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

Van ARTRAG

Enlighted (6935)

afbeelding van ARTRAG

21-11-2020, 14:31

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

Van sd_snatcher

Prophet (3659)

afbeelding van sd_snatcher

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

Van gdx

Enlighted (6209)

afbeelding van gdx

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.

Pagina 1/3
| 2 | 3