32MB RAM expansion: Difference between revisions

From dreamcast.wiki
Jump to navigation Jump to search
No edit summary
 
(12 intermediate revisions by the same user not shown)
Line 3: Line 3:


==Installation==
==Installation==
It is necessary to replace the stock read-only boot ROM with a writeable flash ROM. Without a BIOS mod, the system will not boot with RAM in a 32MB configuration.  
It is necessary to replace the stock read-only boot ROM with a writeable flash ROM, as without patching the BIOS to address the modified memory arrangement, the system will not boot with RAM in a 32MB configuration.  


The mod has only been tested so far using <code>IS42S32800J-6TL</code> replacement chips. These are readily available online, e.g. at [https://www.mouser.com/ProductDetail/ISSI/IS42S32800J-6TL Mouser] or [https://www.digikey.com/en/products/detail/issi-integrated-silicon-solution-inc/IS42S32800J-6TL/5319845 DigiKey].
The mod has only been tested so far using <code>IS42S32800J-6TL</code> replacement chips. These are readily available online, e.g. at [https://www.mouser.com/ProductDetail/ISSI/IS42S32800J-6TL Mouser] or [https://www.digikey.com/en/products/detail/issi-integrated-silicon-solution-inc/IS42S32800J-6TL/5319845 DigiKey].
Line 16: Line 16:


==Incompatibility issues==
==Incompatibility issues==
Existing games and applications predating this RAM expansion modification will not be able to take advantage of the additional memory. Adoption of the mod is not yet widespread, so additional testing is needed. At this time, the major incompatibility issue is Sofdec video playback in commercial games. These games will fail to play FMV, often hanging or crashing as a result. More research is needed to determine if this issue can be fixed in patches. Games that don't use Sofdec video appear to work without problem, even including other types of video like the 4XM video used in [[Headhunter]].
Existing games and applications predating this RAM expansion modification will not be able to take advantage of the additional memory. Adoption of the mod is not yet widespread, so additional testing is needed. At this time, the major known incompatibility issues are
# Sofdec video playback in commercial games crashes or hangs the system
# Windows CE games crash or hang the system at boot
More research is needed to determine if these issues can be fixed in patches. Games that use other types of video playback (like the 4XM video used in [[Headhunter]]) seem to work fine.


==Applications==
==Applications==
===lxdream Dreamcast Emulator===
===KallistiOS===
A [https://gitlab.com/cepawiel/lxdream-nitro/-/tree/big_ram fork of lxdream-nitro] by [[cepawiel]] exists which can be built to support 32MB expansion.
[[KallistiOS]] [https://github.com/KallistiOS/KallistiOS/pull/82 supports] the 32MB expansion mod. Applications built will function on 16MB or 32MB systems, but the programmer can support features with heavier memory use on 32MB systems. The following code block provides a primer on the use:
git clone -b big_ram https://gitlab.com/cepawiel/lxdream-nitro.git
<syntaxhighlight lang="c">/* HW_MEM_16 and HW_MEM_32 macros define the memory sizes KallistiOS supports */
cd lxdream-nitro
printf("KallistiOS supports systems with %d or %d bytes of memory installed.\n", HW_MEM_16, HW_MEM_32);
meson setup builddir -DMOD_32MB_RAM=true
 
meson compile -C builddir
/* The HW_MEMSIZE macro can be called to retrieve the running system's size */
./builddir/lxdream-nitro -h
printf("HW_MEMSIZE reports this system has %ld bytes.\n", HW_MEMSIZE);
printf("This is a %s console!\n", (HW_MEMSIZE == HW_MEM_32 ? "32MB" : "16MB" ));
 
/* The DBL_MEM boolean macro is provided as a fast way to determine if the extra RAM is available */  
printf("Does the system have double RAM? %s\n", (DBL_MEM ? "Yes!" : "No..."));
 
/* uint32 _arch_mem_top can be used to get the top address of memory */
printf("Top of memory is 0x%0lx!\n", _arch_mem_top);
/* 0x8e000000 if 32MB, 0x8d000000 if 16MB */</syntaxhighlight>
 
KallistiOS also includes [https://github.com/KallistiOS/KallistiOS/tree/master/examples/dreamcast/basic/memtest32 memtest32] in its example programs. Adapted from tsowell's original utility, memtest32 supports memory testing 16MB and 32MB Dreamcasts.


===KallistiOS===
===DreamShell===
A [https://github.com/darcagn/KallistiOS/tree/amx3-32mb fork of KallistiOS] exists which supports 32MB expansion, with an aim to be merged into the main repository soon. To build it, build both the toolchain and KallistiOS [[Getting Started with Dreamcast development|using the instructions here]], but clone the git repository using this command instead:
The latest version of the [[DreamShell]] operating system, which uses KallistiOS as its kernel, now supports 32MB expansion.  
git clone -b amx3-32mb https://github.com/darcagn/KallistiOS.git kos
If you already have an existing toolchain built, you must rebuild it to support 32MB expansion.


===NetBSD Support===
===NetBSD Support===
Line 42: Line 53:
===ScummVM===
===ScummVM===
tsowell has written a [https://github.com/tsowell/scummvm-dreamcast fork of ScummVM] with extra functionality which is able to play larger games on consoles with 32MB expansion. This version of [[ScummVM]] also offers an extensive array of other expansion hardware features, such as compatibility for loading/saving data with [[Serial SD card adapter|SD cards]] and [[IDE hard drive modification|hard drives]], the ability to output MIDI over [[MIDI adapter|serial]] or [[MIDI expansion|the expansion slot]] for external synthesizers, and the ability to output various VGA modes for CRT monitors.  
tsowell has written a [https://github.com/tsowell/scummvm-dreamcast fork of ScummVM] with extra functionality which is able to play larger games on consoles with 32MB expansion. This version of [[ScummVM]] also offers an extensive array of other expansion hardware features, such as compatibility for loading/saving data with [[Serial SD card adapter|SD cards]] and [[IDE hard drive modification|hard drives]], the ability to output MIDI over [[MIDI adapter|serial]] or [[MIDI expansion|the expansion slot]] for external synthesizers, and the ability to output various VGA modes for CRT monitors.  
===memtest===
A memory testing utility supporting 16MB and 32MB Dreamcasts has been written by tsowell. [[:File:Memtest.tar.gz]]


===Game mods===
===Game mods===
Line 52: Line 60:
* Knights of Valour The Seven Spirits (Atomiswave conversion)
* Knights of Valour The Seven Spirits (Atomiswave conversion)
* Super Street Fighter II X
* Super Street Fighter II X
==Emulators==
===Flycast===
Support has been [https://github.com/flyinghead/flycast/pull/1198 added to the development version of Flycast].
===lxdream Dreamcast Emulator===
[https://gitlab.com/simulant/community/lxdream-nitro lxdream-nitro] supports 32MB expansion when run with the <code>--ram-size=32</code> option.
git clone https://gitlab.com/simulant/community/lxdream-nitro.git
cd lxdream-nitro
meson setup builddir
meson compile -C builddir
./builddir/lxdream-nitro --ram-size=32

Latest revision as of 15:15, 8 July 2024

By replacing the Dreamcast's two 8MB SDRAM chips with larger SDRAM chips, modifying the pin arrangement, and modifying the BIOS, it is possible to install 32MB of system RAM in the Dreamcast.

Installation

It is necessary to replace the stock read-only boot ROM with a writeable flash ROM, as without patching the BIOS to address the modified memory arrangement, the system will not boot with RAM in a 32MB configuration.

The mod has only been tested so far using IS42S32800J-6TL replacement chips. These are readily available online, e.g. at Mouser or DigiKey.

tsowell's blog contains instructions on completing the RAM upgrade.

BIOS Flasher

A DreamShell image with 32MB-patched BIOS images is available. This image contains a variety of nearly 50 BIOS images including the stock BIOS, japanese-cake BIOS, DreamBoot BIOS, and DreamShell BIOS, in a variety of flavors for each. This image also contains an updated bflash.klf module to support flashing MX29L3211 32 megabit chips to accommodate multi-BIOS mods.

  • We are not responsible for damage to Dreamcast units due to the use of this disc. Know what you are doing before you use this disc! You may render your system unbootable!

Incompatibility issues

Existing games and applications predating this RAM expansion modification will not be able to take advantage of the additional memory. Adoption of the mod is not yet widespread, so additional testing is needed. At this time, the major known incompatibility issues are

  1. Sofdec video playback in commercial games crashes or hangs the system
  2. Windows CE games crash or hang the system at boot

More research is needed to determine if these issues can be fixed in patches. Games that use other types of video playback (like the 4XM video used in Headhunter) seem to work fine.

Applications

KallistiOS

KallistiOS supports the 32MB expansion mod. Applications built will function on 16MB or 32MB systems, but the programmer can support features with heavier memory use on 32MB systems. The following code block provides a primer on the use:

/* HW_MEM_16 and HW_MEM_32 macros define the memory sizes KallistiOS supports */
printf("KallistiOS supports systems with %d or %d bytes of memory installed.\n", HW_MEM_16, HW_MEM_32);

/* The HW_MEMSIZE macro can be called to retrieve the running system's size */
printf("HW_MEMSIZE reports this system has %ld bytes.\n", HW_MEMSIZE);
printf("This is a %s console!\n", (HW_MEMSIZE == HW_MEM_32 ? "32MB" : "16MB" ));

/* The DBL_MEM boolean macro is provided as a fast way to determine if the extra RAM is available */ 
printf("Does the system have double RAM? %s\n", (DBL_MEM ? "Yes!" : "No..."));

/* uint32 _arch_mem_top can be used to get the top address of memory */
printf("Top of memory is 0x%0lx!\n", _arch_mem_top);
/* 0x8e000000 if 32MB, 0x8d000000 if 16MB */

KallistiOS also includes memtest32 in its example programs. Adapted from tsowell's original utility, memtest32 supports memory testing 16MB and 32MB Dreamcasts.

DreamShell

The latest version of the DreamShell operating system, which uses KallistiOS as its kernel, now supports 32MB expansion.

NetBSD Support

NetBSD can be easily modified to support the 32MB expansion by modifying the sys/arch/dreamcast/conf/std.dreamcast file and rebuilding. Replace

options 	IOM_RAM_SIZE=0x01000000         # 16MB

with

options 	IOM_RAM_SIZE=0x02000000         # 32MB

and rebuild the kernel.

ScummVM

tsowell has written a fork of ScummVM with extra functionality which is able to play larger games on consoles with 32MB expansion. This version of ScummVM also offers an extensive array of other expansion hardware features, such as compatibility for loading/saving data with SD cards and hard drives, the ability to output MIDI over serial or the expansion slot for external synthesizers, and the ability to output various VGA modes for CRT monitors.

Game mods

A few game mods by yzb exist to increase performance:

  • The King of Fighters '98
  • King of Fighters XI (Atomiswave conversion)
  • Knights of Valour The Seven Spirits (Atomiswave conversion)
  • Super Street Fighter II X

Emulators

Flycast

Support has been added to the development version of Flycast.

lxdream Dreamcast Emulator

lxdream-nitro supports 32MB expansion when run with the --ram-size=32 option.

git clone https://gitlab.com/simulant/community/lxdream-nitro.git
cd lxdream-nitro
meson setup builddir
meson compile -C builddir
./builddir/lxdream-nitro --ram-size=32