465 Commits

Author SHA1 Message Date
Matthew Jimenez
757e8343b7 UTLIMA8: Found test case to support the partial in front rule.
The rules that temporarily replaced this rule appear to only work well for x & y flats
2023-10-04 15:36:12 -05:00
Matthew Jimenez
4c1f8dfc59 ULTIMA8: Check x & y flat rules before z flat rules. 2023-10-04 15:36:12 -05:00
Matthew Jimenez
4d1ec7ff2b ULTIMA8: Undo sort item bounds inclusive of right screenspace edge.
This caused too many paint dependency cycles in current code.
2023-10-03 23:09:48 -05:00
Matthew Jimenez
f19a339c84 ULTIMA8: Fix sort item bounds to be inclusive of right and botton screenspace edges.
This fixes a flickering render issue where bounds did not properly check overlaps previously
2023-10-02 18:47:32 -05:00
Matthew Jimenez
478f821b7f ULTIMA8: Improve tolerance check when comparing Z in sort item.
Updated unit test with a better test case & solves a paint dependecy cycle.
2023-10-01 21:30:26 -05:00
Matthew Jimenez
c089416b38 ULTIMA8: Fix paint order of tapestry items to match original game.
Switching to screenspace checks may change order for items we have not tested, but may also be correct now.
2023-10-01 15:00:21 -05:00
Matthew Jimenez
ad8fee8fde ULTIMA8: Add unit test for sort item overlaps 2023-09-30 15:59:28 -05:00
Matthew Jimenez
8ad443bfb7 ULTIMA8: Update sort item tests to use multiples of footpad calculations. 2023-09-30 13:45:21 -05:00
Matthew Jimenez
0d0555bd14 ULTIMA8: Add tolerance when comparing Z in sort item.
X & Y flats are often offset below the top of the floor they sit on but by less than the multiplier used when calculating the footpad
2023-09-29 23:02:03 -05:00
Matthew Jimenez
b21876bd9d ULTIMA8: Move sort item calculations to setBoxBounds 2023-09-29 18:11:42 -05:00
Matthew Jimenez
3bd21ab50c ULTIMA8: Add more sort item tests and fixes for flat items 2023-09-29 17:27:23 -05:00
Matthew Jimenez
fa491cb998 ULTIMA8: Update sort item test to use actual position instead of reduced values. 2023-09-29 17:27:22 -05:00
Matthew Jimenez
88656e757c ULTIMA8: Adjust flat item rules based on more examples at map 37 2023-09-27 21:33:40 -05:00
Matthew Jimenez
cd1fb3d80b ULTIMA8: Enable y-flat sort test with a better test and an exception for non-fixed items 2023-09-27 21:33:40 -05:00
Matthew Jimenez
24c75479d7 ULTIMA8: Revert screenspace calculation changes.
Precision loss from integer division is intention and switch back to calculation prior to 7fe6e2ec
2023-09-27 21:33:40 -05:00
Matthew Jimenez
1e7bad99a9 ULTIMA8: Add sort item test for inconsistent sceenspace position.
The original game may have been more lossy when translating worldspace position to screenspace.
2023-09-26 22:39:14 -05:00
Matthew Jimenez
e3ac8447d1 ULTIMA8: Fix incorrect assignment in sort item test 2023-09-26 22:39:13 -05:00
Matthew Jimenez
888f1c6154 ULTIMA8: Fix tests for sort item to use bounds that properly overlap 2023-09-22 23:57:36 -05:00
Matthew Jimenez
e7a8def252 ULTIMA8: Fix paint order issue for flat objects in center of wall.
Misplaced item was not visible in original game but caused a paint dependency loop by our ruleset.
2023-09-22 16:07:44 -05:00
Matthew Jimenez
5677fcab43 ULTIMA8: Fix roof draws first rule & clarify rule on different test
Additional roof test documents altered behavior from orginal game & leaves opportunity to match orginal in the future if desired
2023-09-20 18:26:02 -05:00
Matthew Jimenez
a3833a98b9 ULTIMA8: Fix box isEmpty and add extend method.
Extend might be used to improve occlusion in item sorter by switching floor tiles together.
2023-09-18 18:47:21 -05:00
Eugene Sandulenko
3bce81ac70 TESTS: Added test for String::chop() method 2023-09-17 00:56:28 +02:00
Matthew Jimenez
f6acb92dac ULTIMA8: Fix paint order issue for flat objects slightly inside walls.
This might need to be altered to check against center points.
2023-09-16 15:39:14 -05:00
Matthew Jimenez
182e82f7f2 ULTIMA8: Fix paint order issue in catacombs.
Cobweb is a non-solid transparent flat object that should draw after objects it intersects
2023-09-16 11:44:18 -05:00
Le Philousophe
3b4e8a4eea TEST: Add CxxTest ValueTraits for String
This allows pretty printing them when there is an assertion failure
2023-09-02 11:42:29 +02:00
Le Philousophe
154fab3952 TEST: Silence logs by default
Else tests on INI parser spam with expected warnings.
2023-09-02 11:42:29 +02:00
Le Philousophe
f41cf652eb TEST: Fix warnings 2023-08-30 13:41:34 +02:00
Le Philousophe
4a8cfd6d0b TEST: Fix missing include 2023-08-30 13:41:26 +02:00
Le Philousophe
509043aa92 TEST: Fix warning about signedness 2023-08-30 13:41:19 +02:00
Le Philousophe
cc2c04a8cd TEST: Don't build slow blending tests by default 2023-08-16 13:06:03 +02:00
Le Philousophe
c48512b1f2 TEST: Check supported instruction set before running tests 2023-08-16 13:06:03 +02:00
Le Philousophe
e801c1b437 TEST: Fix test when only blending tests are built
When all tests are built, encoding sets up the backend.
2023-08-16 13:06:03 +02:00
Le Philousophe
7cfa940a7a TEST: JANITORIAL: Fix indentation style 2023-08-16 13:06:03 +02:00
Cameron Cawley
5d58b7768c BACKENDS: Remove leftover code 2023-08-14 00:40:42 +02:00
Wyatt Radkiewicz
4fbde03866 ALL: blendBlitFrom exaclty matched TS::blit 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
0961399727 ALL: blendBlitFrom prototype now matches TS::blit 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
72c01fcdbe TEST: Remove unnessesary functions in blending.h 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
91b9c112b5 TEST: Put bitmap saving under ifdef in blending.h 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
df073eeed7 TEST: Added copyright header to blendBlitFrom test 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
41a942c5ce ALL: Renamed TS_ARGB to MS_ARGB 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
ad0c823f2f GRAPHICS: TransparentSurface scales in place
TransparentSurface now scales in place instead of making a copy. This
is much faster than before.
Also BlendBlit::blit now takes a scale offset parameter to help with
vary large images being cropped, otherwise people can leave it to 0.
2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
a18332ab36 JANITORIAL: Touch up BlendBlit comments 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
e5bc2d696d TEST: Test for AVX2 BlendBlit 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
e4c984cd3a BUILD: Configure flags for SIMD extensions
--enable-ext-neon
--enable-ext-sse2
--enable-ext-avx2
2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
843d835641 TEST: Change blendFrom test 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
4f9739685a TEST: blendBlit test will now also test SSE2 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
c2c7ca0275 GRAPHICS: BlendBlit NEON blending modes coded 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
9ad04f8000 GRAPHICS: Optimize BLEND_NORMAL on NEON 2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
eebadf4495 GRAPHICS: Optimize alpha blend NEON and Generic
I optimized the NEON and Generic paths for ManagedSurface::blendBlitFrom
and the new TransparentSurface::blit. Now (on arm), the new blit function
matches the speed of the old blit function even with the added
inderections that the runtime extension detection code adds in.

Other than that, I made a benchmark for this code and you can make it
using this command:
CFLAGS="-DTEST_BLEND_SPEED" make test

I reverted wii to not use altivec anymore since it doesn't.

I also removed graphics/blit-neon.cpp from graphics/module.mk because
simply including the .cpp file in graphics/blit-alpha.cpp was a better
option because then I didn't need to instantiate every version of the
templates that I needed.
2023-08-13 00:22:10 +02:00
Wyatt Radkiewicz
d039a8570e TEST: Add test for ManagedSurface::blendBlitFrom 2023-08-13 00:22:10 +02:00