DRAM: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 10: Line 10:
The total amount of DRAM in the NeoGeo CD always was 7MBit organized as follows:
The total amount of DRAM in the NeoGeo CD always was 7MBit organized as follows:


** 1MB for the [[68k]]'s program
** 2MB for the [[68k]]'s program
** 4MB for [[sprites]] tiles
** 4MB for [[sprites]] tiles
** 2MB for the [[YM2610#ADPCM|ADPCM]] data
** 1MB for the [[YM2610#ADPCM|ADPCM]] data


One example of chip configuration:
One example of chip configuration:
** 2x 2MB in 8bits (4MB) for sprites
** 1x 2MB in 16bits for the 68k program
** 2x 512k in 16bits (1MB) for 68k program
** 2x 2MB in 16bits (4MB) for sprites
** 4x 512k in 4bits (2MB) for [[YM2610#ADPCM|ADPCM]] data
** 2x 512k in 4bits (1MB) for [[YM2610#ADPCM|ADPCM]] data


[[Fix layer|Fix]] tiles are stored in 128kB of [[PSRAM]].
[[Fix layer|Fix]] tiles are stored in 128kB of [[PSRAM]].

Revision as of 09:30, 16 April 2011

File:Cd2 sprdram.jpg
2x2MiB of DRAM for sprite tiles in a CD2 system.

DRAM stands for "Dynamic RAM". It's a type of fast and cheap volatile memory, which needs to be regularly refreshed in order to keep its contents. When not refreshed fast enough, the DRAM chips contents gradually fades towards random values.

DRAM is used in the NeoGeo CD as a virtual cartridge, which is filled with data loaded from files in the game CD. The rest of the hardware (basically the same as in the AES and MVS) then sees the DRAM as it was a regular cartridge of fixed size.

DRAM organization changed with the different revisions of the NeoGeo CD PCB. Multiple 16, 8 and 4 bits chips were used and grouped as banks. The total amount of DRAM in the NeoGeo CD always was 7MBit organized as follows:

One example of chip configuration:

    • 1x 2MB in 16bits for the 68k program
    • 2x 2MB in 16bits (4MB) for sprites
    • 2x 512k in 4bits (1MB) for ADPCM data

Fix tiles are stored in 128kB of PSRAM. The Z80 program (sound drivers) is stored in a 64kB RAM block (self modifying code possible ?).