Commit Graph

1123 Commits

Author SHA1 Message Date
Lior Halphon 0c2772942e Oops 2022-07-24 14:49:58 +03:00
Lior Halphon dbd33684e8 Missed some switches 2022-07-24 14:34:32 +03:00
Lior Halphon 6f9da353bd Add GBP model to the core (disables bouncing) 2022-07-24 14:22:49 +03:00
Lior Halphon 03f4f03661 Rename function 2022-07-24 13:56:33 +03:00
Lior Halphon 4b03cc05c1 Optimization to joypad code 2022-07-24 13:16:19 +03:00
Lior Halphon 0f31c7a1ba Lag minimization bounce optimization 2022-07-24 02:35:46 +03:00
Lior Halphon a524cc3105 Emulate key bouncing 2022-07-23 23:49:11 +03:00
Lior Halphon 33ba353c3a Emulate the JOYP mode switching delay on the DMG 2022-07-23 19:29:23 +03:00
Lior Halphon dd24801507
Merge pull request #476 from CasualPokePlayer/camera_improvements
Various GB Camera improvements
2022-07-23 13:24:50 +03:00
Lior Halphon 93c611e9bc
Values must be added to the end of a GB_SECTION for save state compatibility 2022-07-23 13:12:48 +03:00
CasualPokePlayer bb8f973fb4 Implement GB Camera timing (when no webcam is connected), misc camera accuracy improvements, use GB_random instead of rand for noise_seed 2022-07-22 20:15:00 -07:00
Lior Halphon f5f79f88ab Insert the pixel at the correct position 2022-07-23 01:52:33 +03:00
Lior Halphon f75f170448 Proper fix for WX=0 in the window pixel insertion glitch 2022-07-22 19:51:38 +03:00
Lior Halphon 029b7492b6 Fix WX=0 regression 2022-07-22 19:51:20 +03:00
Lior Halphon 537d0e1b25 Fix for WX=1-6 2022-07-22 18:55:48 +03:00
Lior Halphon ee407f07f3 Better describe softbreak 2022-07-22 13:51:56 +03:00
Lior Halphon 1fedb81ab7 Emulate window pixel insertion glitch, fixes Star Trek - 25th Anniversary, closes #278 2022-07-22 00:27:21 +03:00
Lior Halphon 08549c1395 Typo 2022-07-19 02:19:31 +03:00
Lior Halphon 541dbc5db3 One last try 2022-07-19 01:52:38 +03:00
Lior Halphon 110deee6f8 Oops 2022-07-18 23:22:23 +03:00
Lior Halphon 09cbf6a13f Fix GCC C++ warning? #464 2022-07-18 22:19:10 +03:00
Lior Halphon 7071032288 Improved MMM01 emulation, fixes #447 2022-07-02 21:03:26 +03:00
Lior Halphon 1065a40d8f Add rX as symbol aliases to IO_X 2022-07-01 17:40:47 +03:00
Lior Halphon 96d127e160 Remove the SLD command, reorder debugger commands 2022-07-01 16:14:52 +03:00
Lior Halphon 52a4c09855 More accurate PPU/OAM-DMA conflicts, artifacts in "It Came from Planet Zilog" should match hardware now 2022-06-25 20:08:59 +03:00
Lior Halphon 6a24598266 Grammar 2022-06-25 15:55:42 +03:00
Lior Halphon aaf9a76b67 The vblank callback now reports the vblank type 2022-06-25 01:59:51 +03:00
Lior Halphon 58df8144ec Fix audio artifacts in the SGB jingle 2022-06-25 01:44:50 +03:00
Lior Halphon 22f8ab6509 Last fix was wrong, this is correct 2022-06-17 18:17:29 +03:00
Lior Halphon 517f455486 Theorized HDMA behavior proven wrong 2022-06-17 15:58:37 +03:00
Lior Halphon 9b5dc9eca7 Refine TILE_SEL glitch, fixes #445 2022-06-12 21:43:04 +03:00
Lior Halphon 3fbeb61c09 Fix MMM01 RAM size detection (Closes #446) 2022-06-12 21:28:58 +03:00
Lior Halphon 4d90504688 HuC-1 mode is not a thing, fixes Robopon Japanese prototype 2022-06-11 20:57:02 +03:00
Lior Halphon d41c188cfd More accurate Camera MBC emulation 2022-06-11 14:44:06 +03:00
Lior Halphon 4f91b19a94 Added MBC7 BESS support, documented BESS TPP1 2022-06-05 14:09:33 +03:00
Lior Halphon 12891c641b
Merge pull request #453 from remind-me-later/master
fix rlc_r zero flag
2022-05-21 22:15:32 +03:00
Ricardo Maurizio Paul c79e67b8cc
fix rlc_r zero flag 2022-05-21 14:45:16 +02:00
Lior Halphon 6055092249 Add audio recording APIs 2022-05-21 02:06:10 +03:00
Lior Halphon 706135113c Fix AGB APU regression 2022-05-19 20:59:48 +03:00
Lior Halphon 8c86cff486 Fix MBC5's initial state 2022-05-14 01:33:45 +03:00
Lior Halphon bb836662dd More accurate emulation of Hblank skip, emulation of Mode 2 skip 2022-05-14 01:14:41 +03:00
Lior Halphon 87fdf91e0c Better debugger output for scrolling adjustment 2022-05-13 00:58:21 +03:00
Lior Halphon 4521bb4767 Fixed and accurate emulation of object at x=0 timings 2022-05-11 02:15:56 +03:00
Lior Halphon a68f749c3a Initial emulation of "SCX banging" to prolong mode 3 2022-05-09 17:15:54 +03:00
Lior Halphon cb73e0b91a Oops, I broke the window 2022-05-09 00:43:49 +03:00
Lior Halphon 6337e3e43a Remove unused 2022-05-07 20:24:28 +03:00
Lior Halphon ac29b4391e Refactor FIFOs 2022-05-07 19:27:25 +03:00
Lior Halphon 69a5ed3396 Fix several potential regressions 2022-05-04 19:30:29 +03:00
Lior Halphon 36e2896ec7 Fix a regression while emulating object size change during fetch 2022-05-04 00:23:55 +03:00
Lior Halphon b2edcc9543 Improve serial accuracy 2022-04-17 23:41:05 +03:00
Lior Halphon b31bd58642 Consistent wording 2022-04-02 00:57:22 +03:00
Lior Halphon 9fe965bcc2 Fix skipped square tick when writing to NR13/23, fixes Telefang start screen audio on CGB-D and E 2022-03-12 15:38:05 +02:00
Lior Halphon b5e271386a Add an optional argument to the APU command 2022-03-12 15:08:15 +02:00
Lior Halphon ef15c9b160 More square zombie step quirks 2022-03-12 14:32:16 +02:00
Lior Halphon ab109da683 Fix several square channel zombie stepping quirks 2022-03-12 00:49:43 +02:00
Lior Halphon 5e119548e9 GDMA during mode 3 writes to both banks, list AGB_E as a future model 2022-03-09 00:32:50 +02:00
Lior Halphon 0925b06555 Add support for Mani carts 2022-03-06 15:54:29 +02:00
Lior Halphon 965e623637 Fix several BESS compatibility issues 2022-03-06 15:53:33 +02:00
Lior Halphon 7350843cca Fix incorrect INFO block on MMM01 BESS states 2022-03-05 23:05:00 +02:00
Lior Halphon c78a003712 MMM01 support 2022-03-05 21:20:42 +02:00
Lior Halphon a621803e82 More compact memory usage for symbol maps, removes the 0x200 bank limit 2022-02-28 23:30:31 +02:00
Lior Halphon 4d74719d56 One day I'll just report that bug to Clang 2022-02-23 20:40:10 +02:00
Lior Halphon f52152b2c9 Fix the Preserve Waveforms setting 2022-02-23 20:34:50 +02:00
Lior Halphon 4c6bc91ded Add missing register 2022-02-14 22:59:05 +02:00
Lior Halphon a4209b47d0 Be consistent with hex casing 2022-02-13 16:58:44 +02:00
Lior Halphon efe31cefc9 More accurate DMA write conflicts 2022-02-13 12:56:16 +02:00
Lior Halphon c730ba767b Not sure where I've got that 0 from 2022-02-07 00:21:45 +02:00
Lior Halphon f8a105e8d0 Stop whining GCC 2022-02-06 14:42:53 +02:00
Lior Halphon 97c758ba75 More accurate internal bus behavior 2022-02-06 13:02:15 +02:00
Lior Halphon 4e27558ac2 Mode 2 OAM open bus behavior 2022-02-05 18:50:33 +02:00
Lior Halphon 850e7bb78c Fixed obscured object indication in the OAM viewer API 2022-02-05 17:44:10 +02:00
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