Commit Graph

169 Commits

Author SHA1 Message Date
Yuri Kunde Schlesner
9ae5a09655 GPU: Implement TextureCopy-mode display transfers
Fixes glitchy garbage in Fire Emblem 3D scenes.
2015-08-16 01:52:51 -03:00
Lioncash
12a9e8502c core: Fix missing prototype warnings 2015-07-29 12:12:39 -04:00
Subv
6c0ea5f5e8 Qt/GPU Breakpoints: Added three more breakpoint types:
* IncomingDisplayTransfer: Triggered just before a display transfer is performed.
* GSPCommandProcessed: Triggered right after a GSP command is processed.
* BufferSwapped: Triggered when the frames flip
2015-07-23 11:47:34 -05:00
Subv
63dbff9b1f GPU/DisplayTransfer: Implemented bit 5 in the transfer flags.
It tells the GPU to not swizzle/de-swizzle the input during the transfer.
2015-07-19 21:30:42 -05:00
archshift
2501f111a6 Merge pull request #904 from aroulin/y2r-narrowing-warning
Y2R: Fix narrowing warning
2015-07-13 22:07:39 -07:00
Tony Wasserka
902fa4da52 Add CiTrace recording support.
This is exposed in the GUI as a new "CiTrace Recording" widget.

Playback is implemented by a standalone 3DS homebrew application (which only runs reliably within Citra currently; on an actual 3DS it will often crash still).
2015-07-13 22:27:20 +02:00
Tony Wasserka
93d66475d4 GPU: Be robust against nullptr addresses; properly reset busy bits in the trigger registers. 2015-07-13 22:27:20 +02:00
Tony Wasserka
256bdfb579 HW: Fix a stupid issue which led to unknown register reads/writes. 2015-07-13 22:27:20 +02:00
aroulin
1f125a04c3 Y2R: Fix narrowing warning 2015-07-12 03:49:16 -04:00
Yuri Kunde Schlesner
867c28ae03 Merge pull request #876 from linkmauve/include-cleanups
Cleanup includes, mostly in common
2015-07-10 16:36:12 -07:00
Emmanuel Gil Peyrot
641e78bccf GPU: Implement blended downscaling for display transfers. 2015-06-28 15:11:26 +01:00
Emmanuel Gil Peyrot
8ee814ec27 GPU: Use shifts instead of multiplications to calculate the actual size of the output. 2015-06-28 14:31:13 +01:00
Emmanuel Gil Peyrot
4964a359e1 Core: Cleanup hw includes. 2015-06-28 00:46:39 +01:00
Emmanuel Gil Peyrot
45c4781544 CitraQt: Cleanup includes. 2015-06-28 00:36:54 +01:00
Yuri Kunde Schlesner
3e6663da43 Y2R: Rework conversion process, enabling support for all formats 2015-06-21 20:58:55 -03:00
Lioncash
bbe4430922 hw: Fix mismatched Write call 2015-06-16 15:49:22 -04:00
archshift
0414ad20cb Merge pull request #811 from archshift/commonify
Commonify video_core utility headers
2015-05-31 09:55:29 -07:00
bunnei
833936fc64 Merge pull request #832 from yuriks/refresh-rate-option
Remove gpu_refresh_rate configuration option
2015-05-31 04:48:20 -04:00
archshift
76690392bf Move video_core/color.h to common/color.h 2015-05-30 11:17:37 -07:00
Yuri Kunde Schlesner
d65b42a69a Remove gpu_refresh_rate configuration option
Changing it makes emulation inherently inaccurate. It also had a wrong
default value (30, whereas the real system has a refresh rate of 60 Hz)
which, even if changed, would continue to be used unless people manually
removed it from their config files.
2015-05-29 19:39:26 -03:00
Emmanuel Gil Peyrot
b1503b2020 Remove every trailing whitespace from the project (but externals). 2015-05-29 21:59:29 +01:00
tfarley
05dc633a8c OpenGL renderer 2015-05-22 15:51:18 -07:00
Yuri Kunde Schlesner
7ada357b2d Memmap: Re-organize memory function in two files
memory.cpp/h contains definitions related to acessing memory and
configuring the address space
mem_map.cpp/h contains higher-level definitions related to configuring
the address space accoording to the kernel and allocating memory.
2015-05-15 00:04:38 -03:00
Yuri Kunde Schlesner
17a8cae003 Memory: Add GetPhysicalPointer helper function 2015-05-09 04:02:32 -03:00
Yuri Kunde Schlesner
e1fbac3ca1 Common: Remove common.h 2015-05-07 15:45:22 -03:00
bunnei
57aaaf92db HW: Properly initialize and shutdown all modules. 2015-05-01 18:27:02 -04:00
Lioncash
7da90dee42 gpu: Fix a missing format specifier 2015-04-07 10:38:49 -04:00
purpasmart96
198c0ddc72 Services: Stubs and minor changes 2015-04-02 20:05:11 -07:00
bunnei
580b317821 Merge pull request #650 from Subv/scaling
GPU: Fixed the bit 25 in the display transfer flags.
2015-03-17 19:13:06 -04:00
Subv
23b401c3ac GPU/DisplayTransfer: Made the scaling bits a single 2bit value
Rephrased some comments.
2015-03-16 17:54:06 -05:00
Subv
fb8f47060b GPU: Implemented the flip_data (bit 0) bit in display transfers. 2015-03-14 15:26:42 -05:00
bunnei
ed5b275d21 Merge pull request #642 from bunnei/touchpad
Touchpad support
2015-03-11 21:28:57 -04:00
bunnei
d61b26b79f HID: Complete refactor of pad/touch input to fix threading issues. 2015-03-10 23:58:07 -04:00
bunnei
b56829df02 Merge pull request #629 from archshift/lcdfb
Implement SetLcdForceBlack and add implementation for color filling in the GPU code
2015-03-10 18:08:55 -04:00
Subv
ae0dfcae1d GPU: Fixed the bit 25 in the display transfer flags.
It is used to downscale the input image horizontally and vertically, previously we were only downscaling it vertically so this caused a hard-to-debug memory corruption problem.
2015-03-10 14:18:25 -05:00
archshift
041e99b613 Added LCD registers, and implementation for color filling in OGL code. 2015-03-09 15:51:41 -07:00
Tony Wasserka
511bf30a69 Merge pull request #648 from Subv/fill_bit
GPU: Use the correct position for the finished bit in memory fills
2015-03-09 23:17:11 +01:00
Subv
0abba5874c GPU: Use the correct position for the finished bit in memory fills 2015-03-09 17:15:13 -05:00
Subv
a762f9c176 GPU: Corrected the 24 bit memory fills component order 2015-03-09 09:01:41 -05:00
archshift
47010fea31 Implement SetLcdForceBlack, move register enum to hw.h 2015-03-05 19:38:23 -08:00
bunnei
34c31db14a GPU: Added RGB565/RGB8 framebuffer support and various cleanups.
- Centralizes color format encode/decode functions.
- Fixes endianness issues.
- Implements remaining framebuffer formats in the debugger.
2015-03-03 18:26:03 -05:00
archshift
7f9ee69a2b Added RGBA5551 compatibility in the rasterizer
This allows Virtual Console games to display properly.
2015-02-27 19:15:08 -08:00
Subv
c564c21668 GPU: Implemented bits 3 and 1 from the display transfer flags.
Bit 3 is used to specify a raw copy, where no processing is done to the data, seems to behave exactly as a DMA.
Bit 1 is used to specify whether to convert from a tiled format to a linear format or viceversa.
2015-02-26 21:17:14 -05:00
Subv
b1284222f2 GPU: Fixed RGBA8 as output format in a display transfer.
Verified with hwtests
2015-02-22 15:22:14 -05:00
bunnei
89a71eb6a4 Merge pull request #471 from archshift/pp3ports3
GPU: Add support for more framebuffer formats in display transfers.
2015-02-22 14:54:56 -05:00
Tony Wasserka
23c6764b2b GPU: Add support for more framebuffer formats in display transfers. 2015-02-22 11:48:02 -08:00
bunnei
d120757f32 Merge pull request #594 from Subv/display_transfer
GPU: Fixed the RGBA8 input format and RGB8 output format
2015-02-22 12:44:57 -05:00
Subv
fbbfb52a2c GPU: Fixed the RGBA8 input format and RGB8 output format
in Display Transfers, tested with hwtests.
2015-02-21 18:43:53 -05:00
archshift
302f0b32f5 Remove duplication of INSERT_PADDING_WORDS between pica.h and gpu.h 2015-02-19 22:26:25 -08:00
Tony Wasserka
0da6a7e234 GPU: Properly implement memory fills. 2015-02-18 14:02:58 +01:00
Emmanuel Gil Peyrot
c439b3074d video_core: Implement the remaining framebuffer formats in the OpenGL renderer. 2015-02-15 14:08:12 +00:00
archshift
ef24e72b26 Asserts: break/crash program, fit to style guide; log.h->assert.h
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time)
As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing)

Also removed some GEKKO cruft.
2015-02-10 18:30:31 -08:00
Lioncash
676daef3c7 core: Fix some warnings on OSX 2015-02-03 08:14:42 -05:00
Yuri Kunde Schlesner
a09f71521e GPU: Fix buffer overrun in Display Transfers
Display transfers with the horizontal downscaling flag were calculating
the wrong output size, causing them to write double the amount of data
intended. It is likely that this was perceived as correct due to a
separate bug in calculating source indices which caused the image to be
padded unless the previous bug was present.

This fixes both issues, correcting flickering issues in 3dscraft,
blargSnes and more (caused by the transfer overwriting the back buffer
which followed) as well as potentially fixing other crashes.
2015-01-14 05:20:14 -02:00
Yuri Kunde Schlesner
9e084826b8 GPU: Do periodic VBlank updates using CoreTiming 2015-01-14 05:20:13 -02:00
Yuri Kunde Schlesner
e29dd76e12 GPU: Correct wrong default framebuffer address for sub-screen.
It appears this is a mistake, since the sub-screen has no right
framebuffer.
2015-01-14 05:20:13 -02:00
Yuri Kunde Schlesner
98e3274935 GPU: Fire GPU interrupts at the correct places.
PDC0 and PDC1 are both VBlank interrupts. PDC0 was being treated as a
HBlank interrupt and fired many more times than it should. They now both
fire together at 60 Hz. This puzzlingly *improves* apparent framerate on
many applications.

A few other interrupts were being fired inside the GSP command
processing instead of on the actual GPU register writes, so they were
moved there, which should cover direct writes tho those registers not
going through the GX command queue.
2015-01-14 05:07:35 -02:00
Yuri Kunde Schlesner
7b3452c730 Move ThreadContext to core/core.h and deal with the fallout 2015-01-09 03:51:55 -02:00
bunnei
e9650f1c61 DSP: Signal (faked) interrupt on every frame.
- Hack to work around games checking that the DSP event has been signaled by a real DSP interrupt.
2015-01-05 00:25:37 -05:00
Tony Wasserka
18a5e888bb GPU: Pseudo-implement horizontal scaling.
It's not really known how this actually works. Some testing has shown that this probably performs no filtering, and common usage in games suggests it's not actually resizing the image at all.
However, this patch does seem to fix some homebrew showing quasi-duplicated images while still keeping other applications in a working state.
2014-12-31 16:32:55 +01:00
bunnei
3b9d181b8e GPU: Implement frameskip and remove forced framebuffer swap hack. 2014-12-28 22:14:05 -05:00
bunnei
5799025ac4 GPU: Further improve synchronization. 2014-12-25 22:46:55 -05:00
purpasmart96
ebfd831ccb License change 2014-12-20 21:20:24 -08:00
Yuri Kunde Schlesner
0600e2d8b5 Convert old logging calls to new logging macros 2014-12-13 02:08:02 -02:00
bunnei
170123982d GPU: Fixed bug in command list size decoding. 2014-12-09 19:07:13 -05:00
Yuri Kunde Schlesner
521e1cb7e0 Remove unused NDMA module 2014-12-09 18:27:16 -02:00
vaguilar
223e76d51d Fixed formatting and switch statement warnings 2014-11-27 02:59:14 -08:00
Emmanuel Gil Peyrot
f5d38649c7 Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generated 2014-11-19 09:03:07 +00:00
bunnei
01e37962e7 Merge pull request #162 from SeannyM/warning-fixes
Fix some warnings
2014-10-29 21:07:27 -04:00
Sean
9a012ff007 Fix some warnings 2014-10-29 20:26:15 -04:00
Gareth Poole
38df9e96dd Renamed souce files of services to match port names 2014-10-29 15:55:51 -04:00
archshift
09e19f9f1e Added gpu_refresh_rate config setting for the new interpreter speed hack. 2014-10-27 19:42:01 -07:00
archshift
0783498f57 Use configuration files to enable or disable the new dyncom interpreter. 2014-10-27 18:35:21 -07:00
Yuri Kunde Schlesner
fec7f6b035 Rename GPU::Regs::FramebufferFormat to PixelFormat
This name better represents what the enum does, and is less overloaded
in the context. (The whole register the enum is part of is also called
'format'.)
2014-10-12 14:37:24 +02:00
Lioncash
eb5054e6eb Fix warnings in video_core 2014-10-07 20:35:13 -04:00
Lioncash
6cc7c73b80 Core: Fix warnings in gpu.cpp 2014-09-13 22:55:41 -04:00
archshift
6e606c515f core: Prune redundant includes 2014-09-08 17:54:14 -07:00
bunnei
aabfcfe6ad GPU: Improve frame synchronization, increases compatibility with both homebrew and retail applications. 2014-08-30 23:24:14 -04:00
bunnei
20d169e4a1 VideoCore: Fixes rendering issues on Qt and corrects framebuffer output size. 2014-08-26 17:34:52 -04:00
Tony Wasserka
941762a573 GPU: Fix a compiler warning about redundant semicolons. 2014-08-25 22:03:19 +02:00
Tony Wasserka
76a586de49 Pica: Add command processor. 2014-08-12 13:47:30 +02:00
Tony Wasserka
7b6a7d7dfb Pica/GPU: Change hardware registers to use physical addresses rather than virtual ones.
This cleans up the mess that address reading/writing had become and makes the code a *lot* more sensible.
This adds a physical<->virtual address converter to mem_map.h. For further accuracy, we will want to properly extend this to support a wider range of address regions. For now, this makes simply homebrew applications work in a good manner though.
2014-08-12 13:32:56 +02:00
Tony Wasserka
9c781a6c76 Remove the fancy RegisterSet class introduced in 4c2bff61e.
While it was some nice and fancy template usage, it ultimately had many practical issues regarding length of involved expressions under regular usage as well as common code completion tools not being able to handle the structures.
Instead, we now use a more conventional approach which is a lot more clean to use.
2014-08-12 02:17:21 +02:00
bunnei
0805ecbaca GPU: Updated g_last_ticks variable to be more descriptive (represents CPU tick count of last vertical line). 2014-08-06 18:20:02 -04:00
bunnei
7ada2625fe GPU: Updated horizontal sync line counter to use framebuffer height. 2014-08-06 18:20:01 -04:00
bunnei
4e9f305ed2 GSP: Removed dumb GX prefixes to functions/structs in GSP namespace.
- Various other cleanups.
2014-08-05 23:58:00 -04:00
bunnei
ec14ffe1cd GSP: Implements preliminary command synchronization via GPU interrupts.
Core: Added a comment to explain the logic for the RunLoop iterations.
2014-08-05 23:57:53 -04:00
Tony Wasserka
9fd2537e93 Use uniform formatting when printing hexadecimal numbers. 2014-07-23 00:44:31 +02:00
Tony Wasserka
afcb250b31 Fix a few warnings.
Templates shouldn't be marked as inline if they aren't defined in the header.
2014-07-23 00:44:31 +02:00
Tony Wasserka
2eb61dafc0 GPU: Clarify display transfer code.
Also makes the illogical component order more obvious.
2014-07-23 00:44:31 +02:00
Tony Wasserka
61e2ffd448 GPU: Add documentation. 2014-07-23 00:44:31 +02:00
Tony Wasserka
246cb75584 RegisterSet: Simplify code by using structs for register definition instead of unions. 2014-07-23 00:33:08 +02:00
Tony Wasserka
75775e9ef4 GPU: Make use of RegisterSet. 2014-07-23 00:33:08 +02:00
Tony Wasserka
357d893b26 GPU: Make framebuffer code format-aware. 2014-07-23 00:33:08 +02:00
Tony Wasserka
9d618d0b70 GPU: Interface cleanup. 2014-07-23 00:33:08 +02:00
Tony Wasserka
46950ee4de GPU: Initialize GPU registers to some sensible default state. 2014-07-23 00:33:08 +02:00
Tony Wasserka
baf0aa04f5 GPU: Emulate memory fills. 2014-07-23 00:33:08 +02:00
Tony Wasserka
0b4055c152 GPU: Add proper framebuffer register handling. 2014-07-23 00:33:08 +02:00
Tony Wasserka
bbc6f314eb GPU: Properly implement display transfers. 2014-07-23 00:33:08 +02:00
Tony Wasserka
16bbc4f81b GPU: Add display transfer configuration. 2014-07-23 00:33:08 +02:00