About less than one second after starting Metroid Fusion (USA, Australia), I get "Illegal word write" warnings in the loging window if enabled.
Â
DMA1: s=03002634 d=040000a0 c=b600 count=00000010
DMA1: s=03002624 d=040000a0 c=b600 count=00000010DMA1: s=03002614 d=040000a0 c=b600 count=00000010
DMA1: s=03002604 d=040000a0 c=b600 count=00000010
DMA1: s=030025f4 d=040000a0 c=b600 count=00000010
DMA1: s=030025f4 d=040000a0 c=b600 count=00000010
Illegal word write: 00000000 to 00000000 from 080025fa
Illegal word write: 00000000 to 00000000 from 080025fa
Illegal word write: 00000000 to 00000000 from 080025fa
Illegal word write: 00000000 to 00000000 from 080025fa
Illegal word write: 00000000 to 00000000 from 080025f6
Illegal word write: 00000000 to 00000000 from 080025f6
Illegal word write: 00000000 to 00000000 from 080025f6
Illegal word write: 00000000 to 00000000 from 080025f6DMA1: s=00000000 d=00000000 c=8440 count=00000010
DMA1: s=03002b04 d=040000a0 c=b600 count=00000010
DMA1: s=03002af4 d=040000a0 c=b600 count=00000010
DMA1: s=03002ae4 d=040000a0 c=b600 count=00000010
DMA1: s=03002ad4 d=040000a0 c=b600 count=00000010
DMA1: s=03002ac4 d=040000a0 c=b600 count=00000010
Â
With the VC++ debugger I found out that this happens because the game requests the underlined DMA transfer with on DMA channel 1.
Â
Now I wonder why would it do that. Before and after the warning is printed, it looks like DMA is used for the usual audio playback process.
Â
Is it an emulation fault or is the game's sound engine maybe starving?
Â
Â
I have just begun looking into core emulation aspects, so some hints would be appreciated.