libretro / libretro-uae

PUAE libretro
GNU General Public License v2.0
114 stars 61 forks source link

A2000 and B2000 slow or fast RAM #624

Closed Vweber73 closed 4 months ago

Vweber73 commented 1 year ago

Ok, this one is really picky :)

The first Amiga 2000, called A2000, was made in Germany. It was based on the Amiga 1000. One of its odd characteristics is that the RAM at $C00000 is not slow RAM as in the subsequent American model (known as B2000) or the A500, but true fast RAM!

Winuae has no preset for the Amiga 2000, as Toni never had these machines for testing. Basically in Winuae, in you want an A2000, just take an A1000, and if you want a B2000, just take a 500! But then you can play with a setting (check box) called "slow RAM" in the RAM section (formally, before 5.0, there was a setting called "RAM at $C00000 is Fast RAM" in the chipset section). This allows, when unchecked, to have true fast RAM at this address space, like the A2000 had.

Anyway to support this in PUAE? I actually fail to understand how in PUE the A2000 OG presets differs from the A500 OG presets. Why having the 2000 OG in the first place? For the 1Mb Chip 2000 it is useful, it is a hybrid OCS/ECS design that I like to emulate, as already discussed. But if the OG was the German A2000 with true fast ram, that would bring diversity :) what do you think?

sonninnos commented 1 year ago

You can use custom uae confs as you please, and change and replace the current "presets". That seems like something not needed in the menu.

These are those "presets" for comparison.

      case EMU_CONFIG_A500:
         strcat(uae_preset_config,
         "cpu_model=68000\n"
         "chipset=ocs\n"
         "chipset_compatible=A500\n"
         "chipmem_size=1\n"
         "bogomem_size=2\n"
         "fastmem_size=0\n"
         );
         break;

      case EMU_CONFIG_A500OG:
         strcat(uae_preset_config,
         "cpu_model=68000\n"
         "chipset=ocs\n"
         "chipset_compatible=A500\n"
         "chipmem_size=1\n"
         "bogomem_size=0\n"
         "fastmem_size=0\n"
         );
         break;

      case EMU_CONFIG_A2000:
         strcat(uae_preset_config,
         "cpu_model=68000\n"
         "chipset=ecs_agnus\n"
         "chipset_compatible=A2000\n"
         "chipmem_size=2\n"
         "bogomem_size=0\n"
         "fastmem_size=0\n"
         );
         break;

      case EMU_CONFIG_A2000OG:
         strcat(uae_preset_config,
         "cpu_model=68000\n"
         "chipset=ocs\n"
         "chipset_compatible=A2000\n"
         "chipmem_size=1\n"
         "bogomem_size=2\n"
         "fastmem_size=0\n"
         );
         break;
Vweber73 commented 1 year ago

Thanks for that. But I think fastem here refers to Z2 memory. Not to the specific fast memory of the first German A2000, which occupied the same address space as the Bogo ram of the A500 and the B2000...

sonninnos commented 1 year ago

Z2 and Z3 are the only "fastmem" there are in the conf. Pretty sure it handles that silently then if it is emulated.

Vweber73 commented 1 year ago

That's why Winuae has a "slow ram" checkbox to decide whether the slow ram at $C00000 is really slow (like on 500 or B2000) or true fast (like in A2000). Anyway I'm really picky here, I can't find of a software that would benefit from this odd A2000 configuration! 🙂

sonninnos commented 1 year ago

Then the same checkbox works here when used in a uae conf.

Vweber73 commented 1 year ago

Ok, thanks!