* start adding stubs for various tlcs870 features (nw)
* more logging (nw)
* logging (nw)
* moving forward (nw)
* cpu flag fix (nw)
* fake timer to push it along
* fix some cpu bugs (nw)
A standard memory handler has as a prototype (where uX = u8, u16, u32 or u64):
uX device::read(address_space &space, offs_t offset, uX mem_mask);
void device::write(address_space &space, offs_t offset, uX data, uX mem_mask);
We now allow simplified versions which are:
uX device::read(offs_t offset, uX mem_mask);
void device::write(offs_t offset, uX data, uX mem_mask);
uX device::read(offs_t offset);
void device::write(offs_t offset, uX data);
uX device::read();
void device::write(uX data);
Use them at will. Also consider
(DECLARE_)(READ|WRITE)(8|16|32|64)_MEMBER on the way out, use the
explicit prototypes.
Same for lambdas in the memory map, the parameters are now optional
following the same combinations.
* Allow <orientation> and <color> to work on group references
* Fix some corner cases where group bounds could be miscalculated
* Fix a corner case where MAME could incorrectly refuse to instantiate groups
* Add more checks to complay.py
* Document more of the layout format
- Use line callback instead of VBLANK_INT and acknowledge interrupt
- Use (likely) addressable latches instead of pointers to (fake?) RAM
- Add watchdog timer
- Clean up audio CPU ROM region length
----------------------
18 Wheeler (deluxe) [Ordyne, MetalliC]
18 Wheeler (deluxe) (Rev T) [Ordyne, MetalliC]
Club Kart: European Session (Rev C) [Ordyne, MetalliC]
Ring Out 4x4 [Ordyne, MetalliC]
The House of the Dead 2 (Export) [Ordyne, MetalliC]
Virtua Striker 2 Ver. 2000 [Ordyne, MetalliC]
Zombie Revenge (Export) [Ordyne, MetalliC]
naomi.cpp changes: New dumps added: NAOMI Development / tester BIOS (Nov 1998), Ferrari F355 DLX prototype Japan and Export BIOSes, NAOMI Rev F Export BIOS, Ferrari F355 DLX prototype motor board firmware. Existing Club Kart (Rev C) set was identified as Rev A and renamed accordingly. [Ordyne, MetalliC]
In commit ec325ef14f I did something stupid from
a performance standpoint, which was to select the shading function on a
per-pixel basis even though it can only change on a per-polygon basis. This
commit uses c++ templates and inline functions to so that the compiler's
constant folding can eliminate the switch statement that selects shading
functions (thus making the choice a per-polygon one). I also did the same thing
for the texture and bilinear filtering checks.
This brings back a little less than half of the performance hit on my PC, so
things still aren't as fast as they used to be.
Benchmark (running a full cycle of Crazy Taxi NAOMI's attract) on my PC:
Before ec325ef14f: 30%
After ec325ef14f: 23%
With this commit: 26%
Regarding the other 4% of the drop, that is coming from the pixel shading.
When I hardcode powervr2 to always use shading instruction 0, performance
jumps up to 29.5%, but when I hardcode it to use shading instruction 3
performance falls a bit down to 25%. Shading instruction 3 is the most
complicated of the four and shading instruction 0 is the simplest, so I think
that proves that the shading instructions themselves are a major bottleneck.
I don't have any ideas about how to make them faster yet.
* tlcs870 - takes first interrupt (nw)
still trying to work out exactly how I want this code to be formed, but this keeps pushing the program execution forward at least
* bit of port interface guessing to pass port based shared RAM check (nw)
* (nw)
* add analog ports, fix some tlcs870 exec issues (nw)
The Burning Cavern (31/03/87) [Miguel Bragado, Recreativas.org, ArcadeHacker, David Haywood]
A Day In Space (31/03/87) [Miguel Bragado, Recreativas.org, ArcadeHacker, David Haywood]
new clones marked as WORKING
War Mission (WM 09/04/87) [Miguel Bragado, Recreativas.org, ArcadeHacker, David Haywood]
there was also a disk for Paris Dakar, but the first tracks are damaged beyond repair, and it doesn't work, so haven't added it.