View Single Post
Old 05 June 2016, 06:51   #25
modrobert
old bearded fool

modrobert's Avatar
 
Join Date: Jan 2010
Location: Bangkok
Age: 50
Posts: 376
Quote:
Originally Posted by alpine9000 View Post
I was able to reproduce the bug you found in an emulator. I just ran a demo first that would use all the chip ram, then ran the game from a soft reset:



Was actually nothing to do with AGA or A1200, just the way you ran it. The above screen shot is from an emulated A500.

Verified that it is fixed in test version 3.
Interesting, I did try the test1 release with same bug results using the power supply switch (cold boot) on the A1200, but that could be due to the type of memory circuit and FPGA/CPLD interface used in ACA-1232 for RAM handling, giving random garbage in uninitialized memory differently compared to other expansion hardware.

Perhaps the emulator you tried zero fills RAM buffer during initial allocation.

EDIT:

Just checked the source code of the emulator I assume you used, and yes, it zero fills on launch (hardreset).

Code:
void memory_clear (void)
{
	mem_hardreset = 0;
	if (savestate_state == STATE_RESTORE)
		return;
	if (chipmem_bank.baseaddr)
		memset(chipmem_bank.baseaddr, 0, chipmem_bank.allocated);
	if (bogomem_bank.baseaddr)
		memset(bogomem_bank.baseaddr, 0, bogomem_bank.allocated);
	if (mem25bit_bank.baseaddr)
		memset(mem25bit_bank.baseaddr, 0, mem25bit_bank.allocated);
	if (a3000lmem_bank.baseaddr)
		memset(a3000lmem_bank.baseaddr, 0, a3000lmem_bank.allocated);
	if (a3000hmem_bank.baseaddr)
		memset(a3000hmem_bank.baseaddr, 0, a3000hmem_bank.allocated);
	expansion_clear ();
	cpuboard_clear();
}

// ... snip ...

	if (mem_hardreset) {
		memory_clear ();
	}
Source: https://github.com/alpine9000/fs-uae...src/memory.cpp

Last edited by modrobert; 05 June 2016 at 08:07.
modrobert is offline  
 
Page generated in 0.05143 seconds with 9 queries