News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

X-MEM, a new memory expansion for all CPC.

Started by TotO, 20:41, 26 April 14

Previous topic - Next topic

0 Members and 4 Guests are viewing this topic.

gerald

Quote from: dcdrac on 16:20, 22 June 14
Will cartridge roms work with this without the presence of an ACID chip?
No. Acid (or emulating PLD) is part of the plus design. It does not work without.

SyX

#201
Exactly, as gerald has said, X-MEM is a ROM/RAM board, there is not ACID there, neither a cpu accelerator.

But of course, depending in the use of the CPC+ cartridge special paging modes used by the game, those cart games could be patched to run from a romboard in a CPC+ (with a cartridge with an ACID for booting the machine).

Remember, the CPC+ lets that the first 8 rom pages in the cart can be selected as lower rom and they can be visible in address $0000, $4000 (new) or $8000 (new). And of course in $C000 when they are used as upper roms. You can see here:
http://www.grimware.org/doku.php/documentations/devices/gatearray#rmr2

Basically you select in the 3 lower bits, which of the 8 first rom pages in the cart is going to be the "new lower rom" and then you select where this lower rom is going to appear in memory ($0000, $4000 and $8000).

I took a look to a few cpc+ cartridge games.

Starting in Robocop 2, we can start for searching all the LD BC,$7FAx and LD BC,$7FBx followed by OUT (C),C (there is more ways, but this is the usual way).

The only LD BC,$7FAx that i found were LD BC,$7FA0 in other words, they are using it only for disabling the ASIC ram. Well that is good news, that means Robocop is not putting the lower rom in $4000, over the asic ram, that is not so stupid because you could make that for try to copy things over asic ram. Ok, time to look the other.

For LD BC,$7FBx, i get exactly:
LD BC,$7FB8
LD BC,$7FB9
LD BC,$7FBC
LD BC,$7FBD
LD BC,$7FBE
LD BC,$7FBF

The possibilities were from $7FB8-$7FBF, everything except $7FBA and $7FBB. This means they are using cart rom pages 0,1,4,5,6 and 7 as lower rom mapped in $0000 while they enabling the ASIC ram.

Why this? Well, you can imagine, for copying things to the ASIC ram (sprites images, coords, colours, etc...). And mainly this code is run from  RAM, that means it could be possible to change those OUTs to $7Fxx for  OUTs to $DF00, and the code for copy from $C000 instead. And that could work except in case of they mapped a upper rom simultaneously in $C000 for copying things, but i doubt it :P

Looking other CPC+ cartridge, Batman (yes that game is similar to the tape version :P )

Number of access to $7FAx, only two and they are to $7FA0 for disabling the ASIC after put the palettes for the loading screen and the game xDDD

Use of $7FBx, 3 times, always to $7FB8 (rom 0 as lower rom and mapped in $0000) and used only for enabling the ASIC RAM for putting the palettes (and one of them is  for putting a black palette XDDD).

Yes, this game could be ported to a rom board with not too much problems.

Looking other games, Pang looks similar to Robocop, but sometimes even shows the lower rom (remember rom page 128 in CPC+ cart) as an upper rom in $C000. For that in the worst case we can duplicate this rom page and patch the code for show this as upper rom X :P Although it looks that use one of the first 8 roms as lower rom in $0000 and simultaneously the "lower rom" (cart page 0) in $C000, that it could be a little awkard for us, because uses the contrary to a rom board, upper roms go in $0000 and lower goes in $C000. It would need more work, but it could be possible :P

Plotting use the normal $DFxx for paging as upper roms, maybe is easy to fix too.

Navy Seals is the more complex, because put the Lower rom over $4000 and then the upper goes in $c000. Maybe the most difficult to patch in a first look.

The list of CPC+ games is short, in cpc-power appears 33 files when i search for gx4000, but if i ignore hacks, diagnostic cartridges, the jukebox, etc... We have:
Barbarian II
Batman
Burning Rubber
Copter 271
Crazy Cars II
Dick Tracy
Epyx World of Sports
Fire and Forget II
Klax
Mystical
Navy Seals
No Exit
Operation Thunderbold
Pang
Panza Kick Boxing
Pinball Magic
Plotting
Pro Tennis Tour
Robocop II
Skeetshot
Switchblade
Tennis Cup II
The Enforcer
Tintin on the Moon
Wild Streets

Only 25 games, and not too much games to patch and not everyone of those should be patched because they are exactly the same game than the normal CPC version and for those the old tape/floppy versions can be used perfectly.

arnoldemu

Quote from: dcdrac on 16:20, 22 June 14
Will cartridge roms work with this without the presence of an ACID chip?
My plan wasn't really to create a cart this way, at least not a plus cart. But a form of cart game for cpc would be possible.


My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

The Last Bandit

Just ordered (preordered ?) one, can't wait to try it out  :D

TFM

Quote from: Neil79 on 19:46, 20 June 14
Can the X-Mem improve performance as I note some slow downs in Dizzy and games like Ikari Warriors when a grenade blows up a bunker


Yes it can. But you have to write games for it. It will not work with old games which don't use the new features. How to increase performance:
- Loading can be more quick, due to loading games from ROM instead of disc or tape.
- Reloading of levels can also be omitted because they can be stored in RAM
- Decompression must be done only once, uncompressed data can be stored in RAM.

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

arnoldemu

#205
Quote from: TFM on 18:57, 25 June 14

Yes it can. But you have to write games for it. It will not work with old games which don't use the new features.
@TFM: Please feel free to prove it by modifying dizzy or ikari warriors to make them faster.
A detailed overview of why it was slow and how the extra memory made it faster after your changes would be really nice.

EDIT: I can think of some ways that having more memory can help - if the program is written to support it. And people keep saying that having more ram can make a game faster - yes that is true if it's written to support it. But I read about claims that game "X" could be fixed to go faster with more ram, and I want to see proof of that.

For example it's easy to use compiled sprites and make faster sprite routines in 128k. But take a game like Dizzy or Ikari Warriors and make it faster - really????
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Bryce

I don't think he means it will be faster as in the game runs faster, but it can be used to make the whole game experience smoother, by removing mid-game data loading or removing the need to compress data in RAM. The data will still need to be loaded at the start, but it should improve the overall feel by not having to wait between level. I'd like to see this done on something like Gauntlet, where the re-loading used to really annoy me.

Bryce.

arnoldemu

Quote from: Bryce on 09:06, 26 June 14
I don't think he means it will be faster as in the game runs faster, but it can be used to make the whole game experience smoother, by removing mid-game data loading or removing the need to compress data in RAM. The data will still need to be loaded at the start, but it should improve the overall feel by not having to wait between level. I'd like to see this done on something like Gauntlet, where the re-loading used to really annoy me.

Bryce.
He means that, but he really does mean the game can also run faster if modified to take advantage of the extra ram. Faster=more fps.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Bryce

Maybe, but I don't see how really. If at all possible I doubt the difference would be enough to be obvious to the player.

Bryce.

arnoldemu

#209
Quote from: Bryce on 09:20, 26 June 14
Maybe, but I don't see how really. If at all possible I doubt the difference would be enough to be obvious to the player.

Bryce.
Some things can be stored uncompressed, compiled sprites can be used for faster drawing potentially. But compiled sprites and clipping is not easy and a lot of games like ikari warriors have sprites that clip.

So I would be happy with examples:
e.g.
this is how they draw the sprite in ikari warriors
and here is a version that uses 128k to make it faster and it gives identical results.

EDIT: When it comes to the hardware scrolling I've investigated and shown examples of ways to do it, and what does and doesn't work in certain circumstances, how to work around it, what benefits or disadvantages you get etc.

I will continue that by investigating R3 scrolling in much more detail.
I've got a few updates to add to the doc describing panels etc.


My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Bryce

It sounds like it would be useful for new games, but for existing games it would mean almost a complete re-write?

Bryce.

TotO

Nothing is magic!
If a program was not designed for taking part about an expansion, then it will never run faster, better, stronger, harder...  ;D

"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

TFM

IMHO RD128 and R-Type 128 are well examples.  :)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

TotO

#213
The 5th X-MEM batch will be dispatched tomorrow !!!  ;D

The 6th batch will be dispatched  start of July.
The 7th batch will be dispatched half of July.


"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

CraigsBar

Quote from: TotO on 16:06, 26 June 14
The 5th X-MEM batch will be dispatched tomorrow !!!  ;D

The 6th batch will be dispatched  start of July.
The 7th batch will be dispatched half of July.
ooohh I hope I'm in the 5th batch.
IRC:  #Retro4All on Freenode

joska

Mine arrived today :) Installed it and it seems to work fine. Now I just need to figure out how this thing work. My plan was to install SymbOS on it, I haven't even checked if this is possible...

Btw I installed mine internally using an old, hacked-up SCSI-cable:

[attach=2]

Does anybody know if I can still attach other things (like a RS232 card if I can find one) to the external port?

I also discovered a small guest inside my CPC :)

[attach=3]

TotO

Nice picture! Happy to know that you get it. :)
Probably the second picture is showing a CPC boooooster expansion ! XDDD

Yes, no problem for adding extra boards connected to your expansion slot.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

remax

I've just added myself to the waiting lane  :P
Brain Radioactivity

Bryce

#218
Quote from: joska on 22:38, 30 June 14
I also discovered a small guest inside my CPC :)

[attach=3]

Did you notice the CPC running any slower? :)

Regarding adding expansions externally. Any expansion that doesn't offer similar functions will work fine, but other ROM or RAM expansions could cause an issue.

Bryce.

arnoldemu

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

joska

Quote from: Bryce on 08:41, 01 July 14Regarding adding expansions externally. Any expansion that doesn't offer similar functions will work fine, but other ROM or RAM expansions could cause an issue.


I see. In the case of the RS232 interface I guess the ROM would cause problems. Maybe the interface ROM can be disabled and the ROM images put in the X-MEM instead.

Bryce

If the RS232 has a ROM but uses a ROM number above 31 then it should be ok (assuming the address decoding was done properly). Otherwise it could clash with the X-Mem or any other ROMBoard. However, the ROM is usually socketed, so you can remove the ROM IC and install the RS232 software on the X-Mem instead.

Which RS232 expansion do you have?

Bryce.

joska

Quote from: Bryce on 09:28, 01 July 14
Which RS232 expansion do you have?


I don't have one yet. I'm hoping to find one so I can use my 6128 as a unix terminal. Maybe I can build one, they don't look very complicated.

TotO

If someone want to code that for the CPCBooster/MiniBooster ...
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

TotO

--- CHECK POINT ---

CentPourCent "store" is closed for vacations.
That will allow me to finish to build the WIP boards is the next weeks and then... rest.  ;D
80 X-MEM are on the way. Thank you everyones for making the CPC going ahead.

We can definitively expect great programs using 512K RAM in the future, w/o compatibility problem!!!

Have fun,

  TotO.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Powered by SMFPacks Menu Editor Mod