Another new version uploaded, same place as usual. A fair number of 
changes went into this version so I haven't attached a patch, but let me 
know if you'd like one.

http://www.phlamethrower.co.uk/misc2/arcem-src.zip (source)
http://www.phlamethrower.co.uk/misc2/arcem.zip (RISC OS build)

General changes:
* Fixed LDRB & SWPB loading a word instead of a byte when going via the 
memory access functions. This was confusing the Joystick module into 
thinking joystick hardware was present, which was causing problems with 
some games responding to the bad joystick input.
* Tweaked the IOC memory access functions a bit to make sure reads/writes 
of the joystick registers (and other IOEB registers) don't get passed to 
the HDC driver.
* Fixed the aspect ratio correction to correctly apply horizontal scaling 
to modes like 320x480
* Tweaked a couple of things to get a couple of percent extra speed.
* Fixed & improved the DumpHandler function. It'll now dump the registers 
for all modes, the MEMC page tables, and MEMC.PhysRam.
* Tidied some of my debugging/profiling code away
* Improved the handling of ARMul_EmuRate. The value now gets recalculated 
on VSync instead of at (effectively) random points during each frame. This 
means it's updated more often than it was before, so it can better adapt 
to changes in emulator load (important for the audio buffering). 
Additionally, the IOC timer & video clock rates will be recalculated at 
the same time, ensuring they stay in sync over the course of the frame. 
This solves a problem with the previous system where the IOC timer rate 
would update in the middle of a frame but the video clock rate would only 
update at the start of the frame, causing games to perform palette swaps 
at the wrong time.
* Rewrote the sound code (again). The previous system tried to guess how 
many channels the system was using, which would lead to improper mixing if 
it didn't guess correctly (e.g. if all channels were set to the same 
stereo position). It could also cause the code to instruct the host to
continually switch between two different sample rates if the stereo 
positions were manipulated in the right way. The new mixing algorithm 
avoids this guessing game by trying to more accurately emulate the time
division multiplexing scheme that the Arc uses for its sound output. It's 
also able to resample the data to the native sample rate of the host, so 
it's no longer reliant on the host being able to support the unusual Arc 
sample rates. Although I've only tested it on RISC OS and Linux, this 
new code should work as-is on GP2X & Amiga too. The only downside is that 
it is a bit more CPU intensive than the old code.
* As part of the above changes, I've also tweaked the Linux sound code to 
try and improve the poor buffering that the previous code suffered from.

RISC OS specific changes:
* The RISC OS binary is now compiled with GCC 4.6, which gave a
performance boost of about 6% when compared to 4.1
* RISC OS sound buffering has also been tweaked a bit to improve its 
reliability.
* I've tidied up my profiling code to make it more useful. When profiling 
is neabled, sound output will be disabled, and ARMul_EmuRate will be fixed
at 8MHz. Although the profiling can't be toggled on & off at runtime, the 
tweak menu can be used to start/stop stats collection, allowing for more 
targeted profiling.

Let me know what you think!

Cheers,

- Jeffrey

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2dcopy2
-- 
arcem-devel mailing list
arcem-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/arcem-devel

Reply via email to