Commit Graph

1002 Commits

Author SHA1 Message Date
Lior Halphon
b5eea012cc STAT reads 0 during mode 2 if DMA is active 2022-02-05 17:43:48 +02:00
Lior Halphon
6a8db89ae5 Emulate PPU OAM reads while both DMA and GDMA are active 2022-02-05 14:52:09 +02:00
Lior Halphon
1c6ecc2e14 GDMA/DMA Timing fix 2022-02-05 14:08:56 +02:00
Lior Halphon
ba5416ee5b Correct comment 2022-02-04 19:07:47 +02:00
Lior Halphon
320aff1d1e DMA doesn't block GDMA 2022-02-04 13:58:44 +02:00
Lior Halphon
864f0927be Timing confirmed and improved 2022-02-04 13:55:06 +02:00
Lior Halphon
7c5704621a Don't batch during stop mode 2022-02-03 22:34:14 +02:00
Lior Halphon
37ca174f37 OAM DMA/GDMA conflicts 2022-02-03 21:00:37 +02:00
Lior Halphon
76b881c2e1 More accurate HDMA during halt 2022-02-02 23:01:38 +02:00
Lior Halphon
967fdadd7c More accurate IR modeling, fixes Gen 2 Pokémon mystery gifts 2022-02-01 23:23:24 +02:00
Lior Halphon
1a41957b3c LCDOff behavior, basic halt/stop behavior 2022-01-31 01:02:31 +02:00
Lior Halphon
ad1f019893 Actually fix overflow behavior 2022-01-30 23:11:29 +02:00
Lior Halphon
941afee3ba Fix overflow behavior 2022-01-30 21:33:33 +02:00
Lior Halphon
dbb14d7040 Minor edge case for HDMA instant start 2022-01-30 20:52:34 +02:00
Lior Halphon
44ee6dc73f HDMA timing 2022-01-30 20:09:58 +02:00
Lior Halphon
a7f7530eed Preparation for future AGB-0 and B support 2022-01-30 18:11:35 +02:00
Lior Halphon
4bebd2bc33 Correct comment 2022-01-30 17:33:33 +02:00
Lior Halphon
3a2d028efa GDMA/PPU conflicts 2022-01-30 14:38:58 +02:00
Lior Halphon
26656de44f Improvements to GDMA 2022-01-28 23:56:26 +02:00
Lior Halphon
81e2ec08e0 Oops 2022-01-23 22:07:15 +02:00
Lior Halphon
aa5a279116 Halt during DMA with objects 2022-01-23 21:05:29 +02:00
Lior Halphon
0ab7bf7749 VRAM conflicts during halt/stop on a CGB 2022-01-22 22:52:34 +02:00
Lior Halphon
196aaaa7ed Conflicts don't happen in the first 6 T-cycles 2022-01-22 16:56:32 +02:00
Lior Halphon
8676a7c7bc Typo 2022-01-22 16:36:22 +02:00
Lior Halphon
582a5588ba Undo is stopped only 2022-01-22 01:11:50 +02:00
Lior Halphon
56b14c67aa Fixed AGB audio regression 2022-01-22 01:11:23 +02:00
Lior Halphon
ee03b1e433 Initial halt/stop during DMA support 2022-01-19 01:24:40 +02:00
Lior Halphon
cce36f1754 DMA debugger command 2022-01-18 23:42:22 +02:00
Lior Halphon
e903333c7e Add TODO 2022-01-17 22:56:13 +02:00
Lior Halphon
ab75858c86 DMA/PPU VRAM conflicts on the CGB/AGB 2022-01-17 22:07:24 +02:00
Lior Halphon
b45761146f VRAM DMA during mode 3 2022-01-16 13:50:59 +02:00
Lior Halphon
3133687e68 Potential logic bug fixes 2022-01-16 00:50:08 +02:00
Lior Halphon
dbe9035c55 Merge branch 'master' of https://github.com/LIJI32/SameBoy 2022-01-16 00:16:12 +02:00
Lior Halphon
5088bd0959 Redundant OR 2022-01-16 00:16:06 +02:00
orbea
7c9ab0fd46 sgb.h: Use GB_INTERNAL to hide internal struct data
Silences warnings in downstream projects that use a different language standard
when including gb.h.

sgb.h:14:9: warning: anonymous structs are a GNU extension [-Wgnu-anonymous-struct]
        struct {
        ^
sgb.h:14:9: warning: anonymous types declared in an anonymous union are an extension [-Wnested-anon-types]
        struct {
        ^
2022-01-14 15:26:15 -08:00
Lior Halphon
eaeeb49612 Minor stylistic changes 2022-01-14 22:26:23 +02:00
orbea
adfc329cdf gb.h: Silence -Wembedded-directive warning with -pedantic
gb.h:731:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
\#define GB_REWIND_FRAMES_PER_KEY 255
 ^
2022-01-14 11:40:55 -08:00
orbea
5cf71b406e gb.h: Silence -Wembedded-directive warnings with -pedantic
gb.h:400:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
\#ifdef GB_BIG_ENDIAN
 ^
gb.h:410:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
\#endif
 ^
2022-01-14 11:40:55 -08:00
Lior Halphon
d92148b461 Merge branch 'master' of https://github.com/LIJI32/SameBoy 2022-01-14 17:09:49 +02:00
Lior Halphon
ffa53eda20 DMA during mode 3 emulation 2022-01-14 17:09:39 +02:00
Lior Halphon
4ce8e77796 More accurate OAM access timings 2022-01-14 15:07:50 +02:00
orbea
fefb81ab65 gb.h: Silence -pedantic warnings
Silences warnings such as the following when including gb.h as a dependency.

gb.h:385:6: warning: extra ';' inside a struct [-Wextra-semi]
    );
     ^
2022-01-13 20:12:58 -08:00
Lior Halphon
ec012cf9f8 is_dma_restarting hack no longer needed 2022-01-12 14:12:55 +02:00
Lior Halphon
c4a14ac4db Simplify DMA code, fix DMA read timing 2022-01-12 00:26:18 +02:00
Lior Halphon
b1187919d3 Fixed a bug with the joy_accessed API 2022-01-09 16:43:32 +02:00
Lior Halphon
2c71ca789f Fixed a regression caused by a recent optimization 2022-01-09 15:36:01 +02:00
Lior Halphon
8df572f92e Comment fix 2022-01-09 15:30:33 +02:00
Lior Halphon
b7f03dea8d Add CGB-A support 2022-01-05 21:55:46 +02:00
Lior Halphon
ab1d4cd26e More DMA write conflicts 2022-01-05 21:40:10 +02:00
Lior Halphon
5e7bb0f891 DMA write conflict revision differences 2022-01-04 19:59:46 +02:00
Lior Halphon
79ec22b28e Clang hates this 2022-01-03 17:55:00 +02:00
Lior Halphon
5c17c0ec3b unreachable fun 2022-01-03 17:17:35 +02:00
Lior Halphon
cd16431699 OMA DMA improvements (WIP) 2022-01-03 16:51:45 +02:00
Lior Halphon
c7298ae5a6 Fix a silly underflow 2022-01-03 16:51:05 +02:00
Lior Halphon
bc073e3d09 Expose PC 2021-12-30 23:53:24 +02:00
Lior Halphon
59c315a5dd Minor free optimization 2021-12-29 16:33:04 +02:00
Lior Halphon
b72c2ea225 DMG palette getter 2021-12-29 13:08:46 +02:00
Lior Halphon
769aac93c0 Lazy APU, extra ~17% speed up 2021-12-29 00:48:44 +02:00
Lior Halphon
db50462710 More accurate fix 2021-12-26 23:24:08 +02:00
Lior Halphon
59dfb1a85a It's not verified because it's wrong 2021-12-26 21:57:40 +02:00
Lior Halphon
6ffe924637 This is probably better but still wrong 2021-12-26 21:43:54 +02:00
Lior Halphon
d178ece909 Disabled an incorrectly emulated portion of the TILE_SET glitch 2021-12-26 19:57:18 +02:00
Lior Halphon
66f7babe86 Cache the clock rate 2021-12-26 15:50:24 +02:00
Lior Halphon
c53d99dbc4 Abolished slow double use 2021-12-26 15:20:46 +02:00
Lior Halphon
c5f6be1e64 Several likely/unlikely optimization, saving on a memset 2021-12-26 02:38:54 +02:00
Lior Halphon
69de3f0fae Implement a PPU fast path, up to 34% performance boost 2021-12-26 01:47:59 +02:00
Lior Halphon
f3277ab8d3 Sorry C++ users 2021-12-20 18:59:51 +02:00
Lior Halphon
e9906e44cd Sure, why not 2021-12-19 21:46:22 +02:00
Lior Halphon
f866441481 Improved emulation of channel 3 wave RAM read glitch 2021-12-19 19:27:40 +02:00
Lior Halphon
e9629407a5 Fix potential alignment issues 2021-12-19 00:54:29 +02:00
Lior Halphon
cdc3321c36 Add an API to allow illegal inputs 2021-12-19 00:28:24 +02:00
Lior Halphon
eaccd792ed Fixes to safe reads, closes #422 2021-12-18 14:56:33 +02:00
Lior Halphon
5127cb0022 Direct access to registers (#422) 2021-12-18 14:51:14 +02:00
Lior Halphon
c63ddbe771 Lag frame detection API (#422) 2021-12-18 01:25:06 +02:00
Lior Halphon
c3d9141b7c Replace the term sprite with object for consistency 2021-12-17 21:16:23 +02:00
Lior Halphon
c1ae129ed4 Allow hiding background/object "layers" (#422) 2021-12-17 21:12:26 +02:00
Lior Halphon
f78fac12c2 Fixed several issues involving LY change timing, as well as an LYC issue in models prior to CGB-D 2021-12-14 20:27:38 +02:00
Lior Halphon
7e5e672988 RTC speed multiplier, for TAS syncing (#422) 2021-12-11 02:51:21 +02:00
Lior Halphon
a30247cf16 LCD line callback (for #422) 2021-12-10 19:49:52 +02:00
Lior Halphon
7508ddb0cf Execute callback (for #422) 2021-12-10 19:42:47 +02:00
Lior Halphon
9e57201b08 Accurate IF clear timing 2021-12-05 16:18:54 +02:00
Lior Halphon
25e3414974 Redesigned vblank callback scheduling scheme, should be more regular and less prune to various sorts of frontend DOS 2021-12-04 15:04:46 +02:00
Lior Halphon
4b3c77bfa5 oops 2021-12-02 11:54:26 +02:00
Lior Halphon
8660e20eeb New inputs API 2021-12-02 11:23:44 +02:00
Lior Halphon
b770bbea2e Fix save state issue that caused vblank callbacks timings to differ 2021-12-02 11:21:12 +02:00
Lior Halphon
486f8a2c10
Merge pull request #420 from SnowyMouse/cgb_mode
Add GB_is_cgb_in_cgb_mode
2021-11-26 14:10:35 +02:00
Lior Halphon
06b744259b Add memory write callback, optimize memory access with likely/unlikely 2021-11-26 14:09:41 +02:00
Lior Halphon
bdbe02b043 Add a safe memory read API 2021-11-26 13:54:28 +02:00
Lior Halphon
33090a5cc0 Fix an oops from the last commit 2021-11-26 13:38:52 +02:00
Snowy
d0a9d2f72a Add GB_is_cgb_in_cgb_mode 2021-11-25 17:16:11 -06:00
Lior Halphon
f1e5e04198 ...even when timekeeping is disabled 2021-11-25 21:46:51 +02:00
Lior Halphon
d0d39015ee Let update_input_hint_callback get called during turbo 2021-11-25 21:17:49 +02:00
Lior Halphon
f08f16346e Fix #293 2021-11-24 23:13:52 +02:00
Lior Halphon
ae930472f0 Units info 2021-11-14 13:18:58 +02:00
Lior Halphon
c6f39bc60b Initial MBC7 support 2021-11-12 17:44:51 +02:00
Lior Halphon
02f55d12d3 Maybe one day GCC will stop being shit at handling __attribute__s 2021-11-07 14:13:52 +02:00
Lior Halphon
1650820edb Clean up endian-related code 2021-11-07 13:57:43 +02:00
Lior Halphon
18e7a3f4fa Cleanup, better symbol handling, improves LTO 2021-11-07 13:39:18 +02:00
Lior Halphon
fbf1bb7f98 Save state compatibility breaking cleanup 2021-11-07 12:56:46 +02:00
Lior Halphon
5565c2540b Register name and info update 2021-11-06 13:34:34 +02:00