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
Tony Wasserka
ec9511e1db
GSP: HLE GXCommandId::SET_DISPLAY_TRANSFER and GXCommandId::SET_TEXTURE_COPY.
2014-07-23 00:33:08 +02:00
Tony Wasserka
994d29f416
Use a more compatible choice of initial framebuffer addresses.
2014-07-22 22:27:27 +02:00
bunnei
004df76795
Merge branch 'threading' of https://github.com/bunnei/citra
...
Conflicts:
src/core/hle/function_wrappers.h
src/core/hle/service/gsp.cpp
2014-06-14 12:13:16 -04:00
bunnei
0deeda54ee
Core: Cleaned up SingleStep(), updated default LCD refresh to assume each instruction is ~3 cycles
2014-06-13 09:51:09 -04:00
Tony Wasserka
d4530765ce
GPU: Cleanup register definitions.
2014-06-12 06:10:50 -04:00
Tony Wasserka
1dfa392824
Rename LCD to GPU.
2014-06-12 06:10:49 -04:00
Tony Wasserka
b1c8bad9a6
Pica: Add command list registers.
2014-06-12 06:10:47 -04:00
bunnei
46aef01d04
lcd: moved kFrameTicks to lcd.h for use in other modules
2014-05-28 21:19:13 -04:00
bunnei
7bb66421a0
lcd: added thread wait after (faked) vblank interrupt (would have) occurred
2014-05-22 20:01:04 -04:00
bunnei
f0525a1eb4
added code to LCD modules keep track of framebuffer location in FCRAM or VRAM
2014-04-27 12:39:57 -04:00
bunnei
f78794961e
- changed HW IO map to use virtual addresses
...
- added hooks to catch LCD IO read/writes
2014-04-26 14:21:40 -04:00
bunnei
25d595d869
added (fake) physical addresses for where to put framebuffer in VRAM
2014-04-26 01:32:05 -04:00
bunnei
70c2cce963
renamed hw_lcd module to just lcd
2014-04-17 23:48:23 -04:00
bunnei
c3a4b4bfca
added NDMA hardware interface
2014-04-17 23:43:55 -04:00
bunnei
f2f63a0f05
fixed hw write declarations to not be const
2014-04-12 23:32:04 -04:00
bunnei
01bedbf956
updated logging message
2014-04-10 22:49:12 -04:00
bunnei
5d95bb9843
cleaned up some logging messages
2014-04-10 22:45:40 -04:00
bunnei
de0a034a84
fixed project includes to use new directory structure
2014-04-08 20:15:08 -04:00
bunnei
63e46abdb8
got rid of 'src' folders in each sub-project
2014-04-08 19:25:03 -04:00