Commit Graph

62 Commits

Author SHA1 Message Date
Jannik Vogel 01be8ef6b8 dsp: Improve DMA debug message 2018-12-29 12:07:38 +01:00
Jannik Vogel 4513ab50da dsp: Decode all DMA control bits 2018-12-29 12:07:38 +01:00
Jannik Vogel e3a93c48fb apu: Access system memory directly 2018-12-27 15:00:35 -07:00
Jannik Vogel 9cac29fe07 apu: Activate voice on VOICE_ON, regardless of list position 2018-12-26 15:44:15 -07:00
Jannik Vogel 7c43feded0 apu: Fix offset of scratch space PRD control word 2018-12-26 15:44:15 -07:00
Jannik Vogel 8579e23ecb apu: Use NV1BA0_PIO_VOICE_OFF_HANDLE mask 2018-12-26 15:44:15 -07:00
Jannik Vogel f94bcbacfa dsp: Support 'dec d' 2018-12-26 14:58:32 -07:00
Jannik Vogel fae1e33622 dsp: Support 'inc d' 2018-12-26 14:58:32 -07:00
Matt Borgerson 02f3b701d0 nv2a: Replace texture cache with a simpler implementation 2018-12-13 11:42:14 -07:00
Jannik Vogel 910dadc5ab nv2a: Fix window-clip region off-by-one error 2018-11-08 12:00:12 -07:00
Jannik Vogel e3d0803843 nv2a: Force GL surface transfer on surface address or pitch changes 2018-11-06 12:05:15 -07:00
Jannik Vogel 781a73e118 nv2a: Debug log GL surface transfers in GL 2018-11-06 12:05:15 -07:00
Jannik Vogel b42d49498c psh: Cleanup and dead code removal 2018-11-06 11:56:01 -07:00
Jannik Vogel 5db1694f88 psh: Rename c0 and c1 uniforms 2018-11-06 11:56:01 -07:00
Matt Borgerson d7dbfce2bc nv2a: re-enable texture caching
Texture caching (enabled via `USE_TEXTURE_CACHE` macro) got turned off
in a cleanup commit. Turn it back on for performance.
2018-11-03 15:53:02 -07:00
Lucas Eriksson 6ecac32cff eeprom: Read EEPROM from file 2018-10-10 11:40:18 -07:00
espes e12aa122cf relicense xbox components as LGPL
(with permission)
2018-10-10 13:38:16 +10:00
Stefan Schmidt 1c6bb37bec Replace ffs() calls with ctz32() 2018-10-08 11:34:23 -07:00
espes 3d33d8101b cleanup nv2a 2018-09-26 17:42:41 +08:00
espes 3ee213e59a cleanup xbox.c 2018-09-26 17:03:42 +08:00
Matt 316967c441 nv2a FIFO Refactoring (#76)
* Port espes's fifo work to the split up nv2a code

This patch ports over the following commits from the XQEMU 1.x tree
(available via tag archive-xqemu-1.x) to the refactored nv2a code:

- 4d9107e8 (HEAD -> xbox, upstream/xbox) Merge branch 'fix-fifo' into xbox
- c33f4ab2 cleanups
- d3f83d93 cleanups
- faca5dd0 fix
- 7c62d7c1 fixes
- 8ad239b0 wip
- 45ed3c31 wip
- c006d5e8 wip

However, in its current form, this patch causes some regressions and
needs further investigation.

* nv2a: basic pattern object
2018-09-26 16:10:07 +08:00
Lucas 7960ffe466 nv2a: Ptimer fixes (#113)
Set NV2A_CRYSTAL_FREQ to Retail speed
Fix ptimer_get_clock() behaviour
2018-09-26 16:01:28 +08:00
Matt Borgerson 6b21948bcc Merge branch 'master' into merge_3_0_0_sync 2018-09-05 20:07:50 -07:00
Matt Borgerson 5246cad0c1 nvnet: don't trigger interrupt if no packets are sent 2018-09-04 01:20:16 +02:00
Lucas Eriksson c01c27d968 nv2a: Fix EXP and LOG
According to the NV_vertex_program specification, our implementations of
these functions were wrong.
spec:
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program.txt
2018-09-04 01:14:55 +02:00
Matt Borgerson aa32236d5a smbus: Replace smbus_eeprom_init_single with new upstream equivalent 2018-09-02 14:14:34 -07:00
Matt Borgerson a0dad83029 nv2a: Replace QINC/DECREF macros with new inlines 2018-09-02 13:49:53 -07:00
Matt Borgerson 12401cd500 nv2a: remove global_vmstate arg in vga_common_init 2018-09-02 13:49:24 -07:00
Matt Borgerson 9c96d7bc08 sio: Use serial_hd(i) instead of serial_hds[i] 2018-09-02 13:48:02 -07:00
Matt Borgerson a0ed8d9c8b smbus: Use DeviceClass::realize instead of init
I2CSlaveClass::init removed in c8c9e10, use DeviceClass::realize
instead.
2018-09-02 13:44:07 -07:00
Jannik Vogel 92af9ca78e dsp: Implement GP memory register access 2018-07-30 12:27:15 -07:00
Jannik Vogel 2543aaf615 dsp: Fix EP memory register reads; implement writes 2018-07-30 12:27:15 -07:00
Jannik Vogel 57e9059e17 dsp: Fix broken X-Memory map 2018-07-30 12:27:15 -07:00
Matt Borgerson f169ce4c26 nv2a: Move some defs to nv2a.h and fix minor nits 2018-07-25 02:03:30 +02:00
Matt Borgerson 10b3b06320 nv2a: Fix minor prototype style issues 2018-07-25 02:03:30 +02:00
Matt Borgerson 8075a2f7ce nvnet: Fix checkpatch nits 2018-07-25 02:03:30 +02:00
Matt Borgerson f63c322740 smbus: Replace debug printf statements with macro 2018-07-25 02:03:30 +02:00
Matt Borgerson a4c9ee6b13 sio: Replace debug printf statements with macro 2018-07-25 02:03:30 +02:00
Matt Borgerson f0ea80b4bd nv2a: Use a macro to define the nv2a stub handlers 2018-07-25 02:03:30 +02:00
Matt Borgerson 7e7f837bad nv2a: Remove STUB stuff from nv2a.c 2018-07-25 02:03:30 +02:00
Matt Borgerson d53f884ec1 nv2a: Remove HACK HACK HACK code 2018-07-25 02:03:30 +02:00
Jannik Vogel 32bf810a59 xid: Improve emulation based on tests with real hardware
XID tests with a real Duke controller were done.
The results have been added to XboxDevWiki.

The behaviour documented on XboxDevWiki has then been implemented:
- XID_GET_CAPABILITIES is now supported
- Interrupt-out doesn't STALL anymore
- More accurate STALL conditions
- Packet truncation to actual length
- XID descriptor dumped from real Duke controller
2018-07-21 19:34:34 -07:00
Jannik Vogel 4ffe83b696 nv2a: Add ARL-bias to work around OpenGL float behaviour 2018-07-12 15:10:59 -07:00
Matt Borgerson 2497e2d7c4 nv2a: Add support for window clipping
Fixes several games which utilize clipping, such as Halo:CE which
uses clipping in multiplayer to render multiple player screens.

Research and original PoC work done by Jannik Vogel:
- JayFoxRox/xqemu-espes@c05d91b
- JayFoxRox/xqemu-espes@a254830
2018-07-10 01:11:05 +02:00
Jannik Vogel 67500be6e6 Add SDL flags and libs to objects which use it 2018-07-08 12:58:21 -07:00
Jannik Vogel a9db473231 Check for GL debug extensions before use 2018-07-01 14:50:50 -07:00
Jannik Vogel 0f190369d3 Switch from GLEW to epoxy 2018-07-01 14:21:53 -07:00
Matt Borgerson 0523deaa93 nv2a: Recycle FIFO command queue memory
This patch adds an additional "retired" queue in which FIFO command
entry objects are placed after execution. This queue of objects is then
returned to the pusher's new "available" queue for re-use.

This improves the performance of the system by avoiding the costly
overhead associated with the general-purpose use of `malloc` and `free`
for previous allocation of FIFO command queue objects.
2018-06-28 10:17:57 -07:00
Matt Borgerson 6eb2e9ac93 Update Xbox Makefile.objs 2018-06-26 17:07:42 -07:00
Matt Borgerson dc57d0e3c0 Add offscreen GL code 2018-06-26 17:07:41 -07:00