Commit Graph

1243 Commits

Author SHA1 Message Date
Lior Halphon 5f2e893828 Allow GBS files with loading addresses 0x6E-0x3FF, fixes #376 2021-04-19 00:08:21 +03:00
Lior Halphon e8158be454 Merge branch 'bess' into gbs 2021-04-17 16:57:05 +03:00
Lior Halphon 9fcdc082d2 Fix an SDL crash, minor tweak to BESS SGB 2021-04-17 16:37:55 +03:00
Lior Halphon 817c4a7752 Merge branch 'bess' into gbs 2021-04-16 16:35:21 +03:00
Lior Halphon 87a2d48675 Redo TPP1 saving, fix RTC and HUC3 in BESS 2021-04-16 00:35:54 +03:00
Lior Halphon f0a6488546 Added optional INFO block 2021-04-15 21:57:38 +03:00
Lior Halphon 98a39ae49a ATTR_CHR does not seem to wrap around screen (only lines/columns) 2021-04-14 23:39:07 +03:00
Lior Halphon b325148544 Update and clarify specification 2021-04-14 23:37:00 +03:00
Lior Halphon ba6e22dfc0 Merge branch 'bess' into gbs 2021-04-14 16:44:51 +03:00
Lior Halphon 8a84a5897e Allow drag&drop of state files 2021-04-14 15:20:01 +03:00
Lior Halphon 43fb86320e Hard fail on unexpected SGB blocks 2021-04-13 22:05:13 +03:00
Lior Halphon 0af4f1fa4d Clarify SGB multiplayer, handle count = 0 2021-04-13 21:33:13 +03:00
Lior Halphon 24915e41eb TPP1 in BESS 2021-04-13 20:56:09 +03:00
Lior Halphon 976f5e4d02 Merge branch 'master' into bess 2021-04-13 20:50:29 +03:00
Lior Halphon fada772cb1 Don't use BESS for internal in-memory saves 2021-04-13 20:35:07 +03:00
Lior Halphon dfdbff7304 Allow writes to the $a000-$bfff range in the MBC block 2021-04-13 16:01:44 +03:00
Lior Halphon a3a73602fc ATF is only 0xFD2 bytes, not 0xFE0 2021-04-13 01:09:29 +03:00
Lior Halphon 5b993ed775 Add HuC3 to BESS 2021-04-12 23:36:42 +03:00
Lior Halphon 9a1f962281 Spec update 2021-04-12 22:39:13 +03:00
Lior Halphon 80f422d0ca Respect TPP1 feature flags for rumble and RTC 2021-04-11 23:16:31 +03:00
Lior Halphon 763de9d2e0 Fix Rumble support in TPP1 2021-04-11 22:52:34 +03:00
Lior Halphon 42471095e4 Normalize invalid weekdays only after a $11 command 2021-04-11 22:38:25 +03:00
Lior Halphon 0c5e15b49d Correct emulation of count overflow in ATTR_CHR, fixes #372 2021-04-11 02:38:58 +03:00
Lior Halphon f24489b983 TPP1 support 2021-04-10 23:56:41 +03:00
Lior Halphon 44c75ae7be Remove commented out code 2021-04-10 18:43:24 +03:00
Lior Halphon ad05eb6d0a GCC build fix 2021-04-10 16:15:40 +03:00
Lior Halphon 955ef59140 Merge branch 'bess' into gbs 2021-04-10 16:12:35 +03:00
Lior Halphon f89c80caa5 Merge branch 'master' into bess 2021-04-10 16:12:03 +03:00
Lior Halphon d0bbf383d6 Another cheat bugfix 2021-04-10 16:10:23 +03:00
Lior Halphon 77384a5f6a Merge branch 'bess' into gbs 2021-04-09 23:12:03 +03:00
Lior Halphon 1c31812ffd BESS format updates 2021-04-06 01:02:49 +03:00
Lior Halphon 7a558492b6 Merge branch 'master' into bess 2021-04-05 23:10:00 +03:00
Lior Halphon e6fa2336da Fix a potential crash/corruption when modifying cheats 2021-04-05 23:09:32 +03:00
Lior Halphon f67d3947d6 UI Updates 2021-04-05 23:08:43 +03:00
Lior Halphon bb3a73ff88 Cocoa GBS Player 2021-04-03 01:29:43 +03:00
Lior Halphon 9996c7b4a2 Add GBS APIs 2021-04-03 01:29:06 +03:00
Lior Halphon 39c71b40e7 Fix memory leak 2021-04-02 19:07:28 +03:00
Lior Halphon 328e2d9e40 Merge branch 'master' into gbs 2021-04-02 19:06:15 +03:00
Lior Halphon 6b8eb8063a Fix a bug where SameBoy would start in "faux turbo mode" 2021-04-02 02:54:14 +03:00
Lior Halphon e460b0a7b4 Change the border format to SNES-style 2021-03-31 00:54:55 +03:00
Lior Halphon 8adaba237e SGB support in BESS, BE fixes, changes to SGB save state format on BE machines 2021-03-29 02:47:57 +03:00
Lior Halphon 659f954028 RTC support 2021-03-25 00:07:37 +02:00
Lior Halphon a52302f2f6 Make NAME come before CORE 2021-03-25 00:07:37 +02:00
Lior Halphon 75bc1e9a86 Initial BESS support, no SGB nor RTC yet 2021-03-25 00:07:37 +02:00
Lior Halphon 925bd863c0 Better errnos 2021-03-22 00:18:49 +02:00
Lior Halphon da1003263f Redo save states to remove severe code duplication between buffers and files 2021-03-21 20:32:30 +02:00
Lior Halphon ad54dc57b0 Improved time syncing when turning the LCD on and off, fixes #193 2021-03-21 15:15:04 +02:00
Lior Halphon ea97c1dc0b Fix an APU regression that caused some games in DMG mode to play in the wrong pitch 2021-03-01 21:44:54 +02:00
Lior Halphon 57080c48bc No need for -1 2021-02-28 16:50:46 +02:00
Lior Halphon ec7d756e3b
Merge pull request #351 from NieDzejkob/symbol-off-by-one
Fix off-by-one in symbol search
2021-02-28 15:27:50 +02:00
Lior Halphon 0fbd714d4a
Merge pull request #352 from NieDzejkob/value-to-string-oob
value_to_string: use snprintf
2021-02-28 15:23:29 +02:00
Lior Halphon 81bfea9ba2
Coding style, ensuring string termination. 2021-02-28 15:23:14 +02:00
Lior Halphon 1fdb4f09b4 Fix a sweep regression in DMG/SGB mode and CGB-C mode 2021-02-28 03:40:58 +02:00
Jakub Kądziołka c9665d0449
value_to_string: use snprintf
Currently, value_to_string and debugger_value_to_string use an
error-prone calculation to avoid overflow. This was once adjusted
already, and one of the codepaths is still vulnerable. Put this in a
symfile:

    01:5678 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

and execute `p 1:$5679`. On Linux, the canary terminates the process.
2021-02-27 19:33:31 +01:00
Jakub Kądziołka e8bfc4050e
Fix off-by-one in symbol search
Before this commit, printing an address that's after every symbol in a
bank would not show it relative to the last symbol.
2021-02-27 19:29:06 +01:00
Lior Halphon ce44773caa Make the printer not deadlock after a sudden termination 2021-02-26 16:40:35 +02:00
Lior Halphon 72cb391612 Slightly improve MBC3 accuracy 2021-02-26 00:52:18 +02:00
Lior Halphon 71c6fa45e0 Accurate RTC emulation 2021-02-26 00:40:18 +02:00
Lior Halphon a13469c4e2 Fix PAL SGB in the Cocoa port 2021-02-25 22:42:02 +02:00
Lior Halphon e08df2a089 Add accurate RTC emulation mode 2021-02-25 22:12:14 +02:00
Lior Halphon 6ec4583aa0 Tell GCC to calm down 2021-02-25 15:52:48 +02:00
Lior Halphon 4c05ebcea6 Redo the volume envelope with better timings, locking emulation and zombie mode edge cases. Fixes #344 2021-02-25 15:43:38 +02:00
Lior Halphon 8809d8ac2f More correct emulation of manual clocking of channels 1 and 2 2021-02-22 15:27:36 +02:00
Lior Halphon 71c88323b7 Rename UNROLL to unrolled (`unrolled for`) 2021-02-22 14:45:30 +02:00
Lior Halphon 393269ae1f Emulate volume envelope locking 2021-02-22 13:48:56 +02:00
Lior Halphon d50fdc52ea Further accuracy improvements to the audio envelope 2021-02-22 01:58:43 +02:00
Lior Halphon 6d2d88648e Improved emulation of the volume envelope 2021-02-22 01:10:14 +02:00
Lior Halphon 95051d1c1c Improved emulation of the NRx2 write glitch (Zombie mode) on models prior to CGB-D 2021-02-13 23:00:20 +02:00
Lior Halphon 2d76698279 Emulation of NR43 bit 3 glitch on CGB-C and older 2021-01-31 19:17:26 +02:00
Lior Halphon d67580c964 Oops, that was reversed 2021-01-31 17:16:59 +02:00
Lior Halphon ef9671010b More NR43 obscurities 2021-01-24 20:57:46 +02:00
Lior Halphon 8e1e889ce0 Add a TODO 2021-01-16 15:31:09 +02:00
Lior Halphon aa421258b8 Update the model enum so comparisons work correctly for SGB PAL and no-SFC SGBs 2021-01-16 14:51:06 +02:00
Lior Halphon 13a1e9d332 Timing fix 2021-01-16 14:43:32 +02:00
Lior Halphon 0056cc2d61 Revert "Further NR43 write glitch emulation" for now
This reverts commit e384707615.
2021-01-16 14:42:13 +02:00
Lior Halphon e384707615 Further NR43 write glitch emulation 2021-01-10 17:20:25 +02:00
Lior Halphon 07e76a4ecf Oh boy, looks like my CGB-B is unique 2021-01-09 23:28:30 +02:00
Lior Halphon 1b3f52e8c0 Improved emulation of NR43 writes on different revisions 2021-01-09 21:21:22 +02:00
Lior Halphon 2aa171e0ea Better sample alignment on pre-CGB-D models 2021-01-09 16:26:56 +02:00
Lior Halphon 96736fe7c5 Fix false positives in odd-mode detection 2021-01-09 00:59:12 +02:00
Lior Halphon c0582fd994 More accurate emulation of NR10 writes 2021-01-09 00:31:16 +02:00
Lior Halphon 29a3b18186 Better camera noise on frontends without camera support 2021-01-03 16:52:18 +02:00
Lior Halphon f9b13c66b1 Emulation of a newly discovered revision specific APU quirk 2021-01-03 13:49:36 +02:00
Lior Halphon ecace40fb0 Minor APU bug fix 2021-01-02 18:27:21 +02:00
Lior Halphon a9c337264e Fix the last remaining APU test 2021-01-02 16:23:34 +02:00
Lior Halphon b54a72d9b9 Fixing a bug where where zero-shift sweep wouldn't tick 2021-01-02 14:56:45 +02:00
Lior Halphon 5c854dbdca Interference emulation 2020-12-31 00:07:04 +02:00
Lior Halphon 1d34637bda Fix it harder 2020-12-26 23:56:26 +02:00
Lior Halphon 47ebc31733 Fixed a bug where the SDL and libretro frontend would not update the border when loading a new ROM 2020-12-26 23:52:41 +02:00
Lior Halphon 544d39f19d Further improvements to STOP timing 2020-12-26 00:19:48 +02:00
Lior Halphon 4bbd27735f Fix a regression in speed switch timing, reset DIV on speed switch, better odd-mode detection and avoidance 2020-12-25 20:41:00 +02:00
Lior Halphon 159d9d0348 Color temperature control 2020-12-25 14:17:57 +02:00
Lior Halphon b5a611c5db More accurate color correction curves 2020-12-24 23:17:20 +02:00
Lior Halphon 66f62d696c More window fixes 2020-12-24 20:50:47 +02:00
Lior Halphon 8f64f49c3b More accurate emulation of window timing, actual correct fix of #123 2020-12-23 23:49:57 +02:00
Lior Halphon 7a3ebb708c LCDC write timing regression fix 2020-12-12 22:55:14 +02:00
Lior Halphon db483ce95f Warn about potential odd-mode triggers 2020-12-12 20:40:35 +02:00
Lior Halphon 555835549a More accurate pausing behavior, including revision differences 2020-12-12 20:35:18 +02:00
Lior Halphon 770885440f Minor changes to debugger output 2020-12-12 19:09:53 +02:00
Lior Halphon 4f408eae7c Whoops 2020-12-12 18:13:55 +02:00
Lior Halphon dffc12331b Emulate the delayed NR44 write on the DMG 2020-12-12 18:11:35 +02:00
Lior Halphon 7de6194e28 Redo channel 4's timing accurately, emulate NR43 write quirks 2020-12-12 16:02:25 +02:00
Lior Halphon 1baa0446a9 More sweep improvements 2020-12-01 22:37:13 +02:00
Lior Halphon 13bc8679f9 Correct preservation of NRx1's state on pre-CGB models 2020-12-01 14:18:19 +02:00
Lior Halphon 74cf452a48 Further accuracy improvements to sweep; passes Blargg's APU tests again, this time for real 2020-12-01 14:17:35 +02:00
Lior Halphon 0485124076 Redo channel 1 sweep based on DMG schematics; emulates two newly discovered behaviors and also fixes #309 2020-11-28 19:31:25 +02:00
Lior Halphon 67c0e03f3b Fix a window bug in CGB mode, fixes #123 2020-11-22 00:21:19 +02:00
Lior Halphon 027cecde24 Added debugger "undo" command. Closes #156 2020-11-21 16:19:58 +02:00
Lior Halphon 1d9ac5ccc3 More accurate IR emulation, simplify API 2020-11-21 00:52:54 +02:00
Lior Halphon b7f3454763 More accurate emulation of the IR port 2020-11-20 22:12:15 +02:00
Lior Halphon cd2310f0a7 Wave RAM reads 0xFF while active on AGBs 2020-11-20 19:39:54 +02:00
Lior Halphon 7fdc58a07e Implement CGB-mode TILE_SEL mixing, fixes cgb-acid-hell and m3_lcdc_tile_sel_change2, closes #308 2020-11-20 16:24:16 +02:00
Lior Halphon c36bdc22f6 More accurate interrupt emulation 2020-11-14 13:55:39 +02:00
Lior Halphon 60b8978762 Local link cable and infrared emulation in the Cocoa port 2020-11-13 23:07:35 +02:00
Lior Halphon 88198e64f4 Minor bug fixes 2020-11-13 23:02:17 +02:00
Lior Halphon c35fe8b517 Make `gb.h` compatible with C++ again for bsnes integration. Fixed #300 2020-10-09 16:39:23 +03:00
Lior Halphon 7ff3556bc3 Workboy emulation (Cocoa only) 2020-09-19 19:31:24 +03:00
Lior Halphon e35c22d405 Fix a potential single byte overflow 2020-09-17 23:47:35 +03:00
Lior Halphon dab1c1bcfa Fix RTC drift 2020-08-22 14:10:02 +03:00
Lior Halphon bce4bfba61 Fix major battery save regressions introduced by the last release, fixes #282 2020-08-06 19:34:57 +03:00
Lior Halphon 3f97b8eaa8 Even more regressions 2020-08-05 02:10:21 +03:00
Lior Halphon d3664d5da0 Fix more RTC regressions 2020-08-05 01:39:19 +03:00
Lior Halphon 289853445f Fix long loading times when loading save states with bad local RTC times 2020-08-04 21:32:33 +03:00
Lior Halphon b0d118f246 Fix broken and regressed MBC3 RTC emulation. Fixes #273, fixes #276, fixes #280 2020-08-04 21:32:27 +03:00
Renato Oliveira ac3b09966c
Fix "Cartrdige" to "Cartridge" 2020-08-01 12:55:53 -03:00
James Larrowe 87d25c0896 Compatibility hacks for old compilers
GCC versions below 4.8.1 didn't have __builtin_bswap16, so provide
a suitable replacement.
2020-06-22 20:14:32 +00:00
Lior Halphon b6b56d0766 Fix various save state compatibility issues between Windows and non-Windows, and a potential crash 2020-06-10 22:46:19 +03:00
Lior Halphon c07588e3bd Console auto complete 2020-06-05 02:10:05 +03:00
Lior Halphon 6a3cd371d0 Fix potential memory corruption when execution malformed ROMs 2020-06-03 20:54:06 +03:00
Lior Halphon 08efb46d41 Made the command line debugger output “>” before inputs, added special magic sequence to break the debugger from stdin 2020-05-31 20:32:00 +03:00
Lior Halphon 97e844a0b7 GB_debugger_break is for external APIs, not available on libretro builds 2020-05-31 01:01:06 +03:00
Lior Halphon 5f4aee8ca1
Merge pull request #261 from JL2210/ld-b-b
Add ld b, b breakpoint
2020-05-31 00:55:17 +03:00
Lior Halphon f1ea39f1c6
Spacing 2020-05-31 00:54:49 +03:00
Lior Halphon fd97e11919
Spacing 2020-05-31 00:54:13 +03:00
James Larrowe 6fcf77c7f6 Make no argument for softbreak be equivalent to "on" 2020-05-30 16:46:17 -04:00
James Larrowe abdece7737 add debugger command to enable and disable 2020-05-30 16:35:07 -04:00
James Larrowe f105f28017 Add ld b,b breakpoint
Signed-off-by: James Larrowe <larrowe.semaj11@gmail.com>
2020-05-30 15:54:51 -04:00
Lior Halphon fa7232944f Better emulation of CGB’s first frame behavior 2020-05-30 01:25:21 +03:00
Lior Halphon ffa569deeb Partial emulation of reading VRAM right after mode 3 2020-05-29 23:10:23 +03:00
Lior Halphon 17dfe0dd6a Fix minor CGB-C regression 2020-05-29 16:30:40 +03:00
Lior Halphon 7af66387de HuC-3 alarm clock emulation 2020-05-23 14:50:54 +03:00
Lior Halphon 369410f370 Fix HuC-1 regression 2020-05-23 00:09:30 +03:00
Lior Halphon 08ca56eec7 Cleanup 2020-05-23 00:05:43 +03:00
Lior Halphon ce9114ed55 Fix IR bugs 2020-05-19 01:24:09 +03:00
Lior Halphon 933b622886 Allow more GameShark cheats 2020-05-19 01:24:02 +03:00
Lior Halphon a588993f28 Add an HuC command required by Pocket Family 2 2020-05-17 00:10:43 +03:00
Lior Halphon a9023d08c6 Emulate HuC-3’s IR and RTC 2020-05-16 23:27:17 +03:00
Lior Halphon 2cc980755e HuC1 IR support 2020-05-13 22:21:31 +03:00
Lior Halphon 3cba3e8e27 Emulate CGB-C PCM read glitch, fix a potential noise volume envelope bug 2020-05-10 00:37:52 +03:00
Fredrik Ljungdahl 99ec31dfdc Allow more than 1 symbol per debug address 2020-05-07 00:12:35 +02:00
Lior Halphon 5a56c3b882 Style fixes 2020-05-01 16:03:26 +03:00
Lior Halphon 4b24178553 Rumble mode selection 2020-04-29 16:50:31 +03:00
Lior Halphon 6448a692e2 Add smart rumble to games without a rumblepak 2020-04-29 16:06:11 +03:00
Lior Halphon 5a14eb93c6 Merge branch 'master' into JoyKit
# Conflicts:
#	Cocoa/Document.m
#	Cocoa/GBView.h
#	Cocoa/GBView.m
#	Cocoa/joypad.m
#	Cocoa/main.m
#	Core/display.c
#	Core/gb.h
#	Core/save_state.c
2020-04-29 15:52:03 +03:00
Lior Halphon 110cedeaac Even better hueristics 2020-04-25 23:26:17 +03:00
Lior Halphon d1e3ad7790 Better hueristics for wrong MBC type 2020-04-25 23:18:03 +03:00
Lior Halphon ca567bee79 Fix Linux build break 2020-04-25 22:54:50 +03:00
Lior Halphon 152924e13f Add support to the ISX format, including symbols 2020-04-25 22:48:48 +03:00
Lior Halphon bb5c9f7fc6 Fix libretro build 2020-04-25 15:12:10 +03:00
Lior Halphon 1e7737a239 Limit unroll to GCC 8 2020-04-25 14:46:01 +03:00
Lior Halphon 0cf168f32b Fixing inconsistent style 2020-04-24 20:37:57 +03:00
Lior Halphon 695c6ee943 Don't crash if a naughty frontend runs the boot ROM without a ROM 2020-04-11 19:21:00 +03:00
Lior Halphon 0abd3b2c46 Dump and load cheats 2020-04-11 19:15:40 +03:00
Lior Halphon 5df45417fa Console quirks 2020-04-11 18:27:31 +03:00
Lior Halphon 852a6997ed Add cheats UI to Cocoa 2020-04-11 18:03:10 +03:00
Lior Halphon 337e74352d Add cheats API, with GameShark and GameGenie import 2020-04-09 22:13:09 +03:00
Lior Halphon a6567d9ee1 Update old coding style 2020-04-09 14:32:52 +03:00
Lior Halphon a9cd3f2c11 Fix operator priorities, fix parsing debugger bug 2020-04-09 14:21:07 +03:00
Lior Halphon 92d6cc6394 Use official register names 2020-04-09 02:36:27 +03:00
Lior Halphon d8e89f5114 Fix banked 16-bit assignments; fixes #245 2020-04-08 19:17:45 +03:00
Lior Halphon 0ed5cf6b38 Proper MBC30 support, more accurate MBC3 emulation. Fixes #244 2020-04-08 19:07:29 +03:00
Lior Halphon 2f1b8e5b57 IME is now available under the registers command 2020-03-27 18:56:47 +03:00
Lior Halphon 1a3572316f next now skips over halt, closes #233 2020-03-27 17:49:14 +03:00
Lior Halphon 05403d3a56 Fix the Joypad interrupt. Fixes #237 2020-03-27 17:36:55 +03:00
Lior Halphon 4cb56dc76f Improve MBC2 emulation. Fixes #238 2020-03-27 16:35:36 +03:00
Lior Halphon 5ecb845662 Add accurate frame blending option 2020-03-26 20:54:18 +02:00
Lior Halphon e94e7cc501 Add another color correction mode 2020-03-25 20:33:13 +02:00
Lior Halphon 84e8e45b7b Implement ATTR_CHR 2020-03-13 13:35:54 +02:00
Lior Halphon e7f6ac8828 Do the same for SGB 2020-03-06 21:19:53 +02:00
Lior Halphon 34cf0f558d It's more reasonable to do it this way 2020-03-06 18:56:51 +02:00
Lior Halphon c6f9d05124 Emulate LCD-PPU horizontal desync on DMGs 2020-03-06 14:41:13 +02:00
Lior Halphon 4d2f56c42d Minor bug fix 2020-03-04 23:43:05 +02:00
Lior Halphon 1c7351fc85 Missing braces 2020-03-04 23:34:36 +02:00
Lior Halphon 409ab2a6d4 Accurate emulation of tilemap advancement timings 2020-03-03 02:21:19 +02:00
Lior Halphon e846f4f3b0 Hacky, but correct emulation of WX=166 2020-03-01 23:58:28 +02:00
Lior Halphon 2a8b26d5e6 Add TODO 2020-03-01 00:23:50 +02:00
Lior Halphon b7194402eb Accurately emulate Window X = Object X 2020-03-01 00:17:45 +02:00
Lior Halphon 5ca602fbd2 WX=0 emulation 2020-02-29 18:26:16 +02:00
Lior Halphon 39b999a68b Emulate the FIFO insertion glitch (WX variant) 2020-02-29 17:06:08 +02:00
Lior Halphon 955860b463 Get rid of the FIFO pause flags 2020-02-28 22:36:51 +02:00
Lior Halphon e29246fd91 Window tile is reset on WX trigger 2020-02-28 18:28:47 +02:00
Lior Halphon 2a8f15c68b The fetcher pushes pixels to the FIFO as soon as it's empty 2020-02-28 18:10:09 +02:00
Lior Halphon 60f01fe947 Merge branch 'master' into ppu_window 2020-02-28 15:21:38 +02:00
Lior Halphon 0c716bd970 More accurate timing emulation of window-objects interaction 2020-02-27 23:42:16 +02:00
Jakub Kądziołka 67d5a53503
Spell "length" properly 2020-02-27 18:11:10 +01:00
Lior Halphon 89303ab046 WX access conflicts 2020-02-27 00:12:42 +02:00
Lior Halphon 9c7a8fdb1b WY is tested every cycle 2020-02-26 22:24:08 +02:00
Lior Halphon b37a0b285a Window Y still advances if WX=166 2020-02-24 23:59:18 +02:00
Lior Halphon 7456beb7b9 Better emulation of negative WX positions 2020-02-24 21:23:06 +02:00
Lior Halphon 248e7bc332 Timing improvements 2020-02-24 20:46:00 +02:00
Lior Halphon 25b51362e9 Safety first 2020-02-24 00:33:45 +02:00
Lior Halphon 3864ff37e1 Timing improvements 2020-02-24 00:32:47 +02:00
Lior Halphon c22611c701 Minor bugfix 2020-02-23 23:48:08 +02:00
Lior Halphon c0ba898ef2 Basic window implementation 2020-02-23 23:16:45 +02:00
Lior Halphon 2be58439bf Starting over – removing all window related code 2020-02-23 00:38:47 +02:00
Lior Halphon d8282fe3c9 Please pretend the last commit never happened 2020-02-22 00:45:52 +02:00
Lior Halphon 39b88d546b The upper bits of SCX might mid-line 2020-02-21 21:59:03 +02:00
Lior Halphon ea2f32b255 The fetcher state machine advances even while handling an object 2020-02-21 21:44:44 +02:00
Lior Halphon f86e682d2c Fix sign 2020-02-21 17:22:57 +02:00
Lior Halphon 8409d3bcfb Emulate changing sprite height mid-fetch 2020-02-21 16:43:51 +02:00
Lior Halphon 7d51ba3d97 More fixes, SGB emulation of the same quirk 2020-02-21 16:16:02 +02:00
Lior Halphon 91404edd13 Disgusting hacks to emulate disabling objects while an object is being fetched 2020-02-21 15:14:33 +02:00
Lior Halphon 56118d2a67 Move improvements to LCDC conflicts 2020-02-21 14:22:25 +02:00
Lior Halphon a8f63aea3c Emulate DMG LCDC write conflicts correctly. This might vary between individual units. 2020-02-21 02:55:07 +02:00
Lior Halphon 0290e70445 Improvements to AGB color correction 2020-02-17 23:05:11 +02:00
Lior Halphon bec09a012c More accurate emulation of STOP mode 2020-02-15 19:21:43 +02:00
Lior Halphon 08eb2f3d98 Correct emulation of FF6C (Turns out it controls object priority) 2020-02-15 15:32:06 +02:00
Lior Halphon f550360f1a More accurate CGB color correction curve 2020-02-15 13:21:21 +02:00
Lior Halphon 8b7805b95d Hit ^T 2020-02-10 20:19:37 +02:00
Lior Halphon 804b9bec63 Fixed a bug where HDMA begins in the middle of an instruction while cycles are pending to be flushed. Fixes #230 2020-02-10 00:21:33 +02:00
Lior Halphon 103caa56e1 Allow displaying borders outside of SGB emulation, including borrowing SGB border. Allow not displaying SGB borders. (Todo: libretro support) 2020-02-08 13:28:46 +02:00
Lior Halphon b806ae4e82 Fix #228 2020-02-01 23:36:16 +02:00
Lior Halphon 38ee020653 Fixed a regression bug that made the first CGB frame blank instead of repeated. 2020-01-31 01:29:59 +02:00
Lior Halphon 48d3504de7 Let the core handle boot ROM selection 2020-01-29 20:29:30 +02:00
Lior Halphon 163a5ea20c Add DMG color palettes (Cocoa) 2020-01-29 14:19:11 +02:00
Lior Halphon 0737655753 Merge branch 'master' into JoyKit 2020-01-03 23:42:25 +02:00
Lior Halphon 95af00a752 speling is veri difikult 2020-01-03 21:11:45 +02:00
Lior Halphon bd9ac204c2 Allow SameBoy to compile on 4-byte-bools platforms 2019-11-20 22:40:03 +02:00
Lior Halphon 31609319de Fix the set_joyp API 2019-11-09 14:45:38 +02:00
Lior Halphon c802361800 Whoops, this function was missing 2019-11-08 16:14:16 +02:00
Lior Halphon 143e1f88a8 There’s not reason it must be an integer 2019-11-03 22:02:33 +02:00
Lior Halphon 0ece21bca7 Replace the SDL-derived controller support with my own JoyKit framework. Adds rumble support, LED support, better manual and automatic configurations, analog speed controls. 2019-10-19 19:26:04 +03:00
Lior Halphon dee29c118c Added GB_set_sample_rate_by_clocks API, split SGB_NO_SFC into PAL and NTSC; now they report the correct clock rate. 2019-10-08 15:10:24 +03:00
Lior Halphon ca370eee7e A bit more accurate AGB audio rendering 2019-10-01 18:50:59 +03:00
Lior Halphon ac418b9de1 Pass channel_1_freq_change_timing 2019-09-30 00:09:25 +03:00
Lior Halphon 652e52df3d Pass the SGB multiplayer tests 2019-09-14 12:31:52 +03:00
Lior Halphon 851dbd3ccd SGB and AGB color correction 2019-09-13 17:13:21 +03:00
Lior Halphon 4fcc921b46 Fix SGB multiplayer, improve multiplayer accuracy 2019-09-13 17:10:58 +03:00
Lior Halphon eaa1c1cd4a Merge bsnes’s changes 2019-08-16 17:38:43 +03:00
Lior Halphon e3672e8293 Emulate built in SGB palettes 2019-07-20 16:10:24 +03:00
Lior Halphon 8c1f76a594 Fix HLE SGB 2019-07-19 20:37:58 +03:00
Lior Halphon ffb9f1b134 Fix HLE SGB 2019-07-19 20:34:26 +03:00
Lior Halphon e634019ac9 Fix CGB emulation 2019-07-19 20:27:53 +03:00
Lior Halphon 4f9c8e9374 Match the HLE timings to the LLE timings 2019-07-19 20:19:09 +03:00
Lior Halphon ea7dec4e88 Merge branch 'master' into bsnes_integration 2019-07-19 15:51:10 +03:00
Lior Halphon 33198fc7b7 Give SGB its own conflict map 2019-07-19 15:50:49 +03:00
Lior Halphon df7f7d8171 Fix silly desync inaccuracy 2019-07-18 22:55:11 +03:00
Lior Halphon 772289c545 Fix a silly bug 2019-07-18 00:53:11 +03:00
Lior Halphon 9efd20d7cd Revert "Silence some GCC warnings"
This reverts commit 11a9f1df21.
2019-07-16 23:33:07 +03:00
Lior Halphon 11a9f1df21 Silence some GCC warnings 2019-07-16 23:27:35 +03:00
Lior Halphon 9ba6915c85 ICD JOYP write API 2019-07-16 21:42:57 +03:00
Lior Halphon 2d7f54a775 Load ROM from buffer API 2019-07-16 21:04:29 +03:00
Lior Halphon ce9ce07817 Make the ICD APIs pixel based 2019-07-16 20:44:27 +03:00
Lior Halphon 346e499602 ICD APIs 2019-07-15 23:02:58 +03:00
Lior Halphon e1873ad2ec Add JOYP write callback API 2019-07-15 22:35:21 +03:00
Lior Halphon 2bfe922650 Allow emulating an SGB without SFC HLE 2019-07-15 20:47:16 +03:00
Lior Halphon 9f7255cd23 Make the automation results more consistent across revisions, and making use of this change as a chance to add color correction to the automation 2019-07-13 20:29:11 +03:00
Lior Halphon 8c8d5afe62 Make the debugger compatible with more sym formats 2019-07-13 17:17:55 +03:00
Lior Halphon f55c254959 Fixed a regression that made ly_lyc_0_write and ly_lyc_write fail 2019-07-12 02:18:25 +03:00
Lior Halphon 4541efe86a Fixed a bug that prevented writing to the wave RAM, as well as a bug where the wave RAM was treated as zeros despite not being zero’d out 2019-06-29 14:03:42 +03:00
Lior Halphon 36a87f96bd Formatting 2019-06-21 16:58:56 +03:00
Lior Halphon 24b58da8c6 Minor text change 2019-06-21 14:18:48 +03:00
Lior Halphon 7c61445fe3 Fixed out of bound read in GB_load_state_from_buffer. Closes #104 2019-06-21 03:04:38 +03:00
Lior Halphon 72b1fe0500 Minor Fixes™ 2019-06-21 01:03:52 +03:00
Lior Halphon 50a6a3e35c Fix libretro SGB1 FPS, fix un/serialization memory corruptions in libretro 2019-06-19 23:49:43 +03:00
Lior Halphon 91b0e491c5 Increase the minimum required cycles for a sync, fix SGB jingle audio 2019-06-19 22:44:54 +03:00
Lior Halphon 431f1f8199 Remove redundant calls to display_vblank on non-SGB models and in irregular FPS scenarios. Affects #161 2019-06-18 23:16:28 +03:00
Lior Halphon e268efefef Redesign and reimplement the audio API, let the frontends handle more stuff. Probably affects #161 2019-06-15 23:22:27 +03:00
Lior Halphon 8b7922b679 Fix #144 by ignored malformed commands with 0 length 2019-06-15 03:42:53 +03:00
Lior Halphon 66b814a226 Don’t use libc’s random/rand 2019-06-14 16:49:41 +03:00
Lior Halphon 843683a492 Randomize everything! 2019-06-09 18:14:32 +03:00
Lior Halphon 49d8a5cb44 Fixed the parsing of comparison operators as well as their priorities. Fixes #155 2019-06-08 16:08:07 +03:00
Lior Halphon 0da2930109 Fix #175 2019-06-08 14:35:52 +03:00
Lior Halphon 274760746e Fix #165 2019-06-07 19:18:07 +03:00
Lior Halphon 9d8adbb581 This is not correct, this bug only affects the PCM registers and not actual output. Currently not emulated at all. 2019-06-07 18:37:19 +03:00
Lior Halphon 2f9de4942c Increase input polling frequency in the Cocoa and SDL frontends, should make inputs look less synthetic and potentially reduce input lag 2019-06-07 18:27:25 +03:00
Lior Halphon 64879f5b02 Accurate emulation of (most aspects of) stop mode 2019-06-07 13:53:50 +03:00
Lior Halphon 4c34e0a6e0 Turns out the AGB inverts Channel 3’s output 2019-06-01 18:22:58 +03:00
Lior Halphon 6888047102 Show flags in the registers command 2019-06-01 16:42:17 +03:00
Lior Halphon cdc36f329e Added open dialog to the SDL GUI, misc fixes 2019-06-01 14:29:46 +03:00
Lior Halphon 1de34b12ac
Merge pull request #181 from ISSOtm/master
Fix sample lengths for CH1, 2 and 4
2019-05-25 21:09:47 +03:00
Lior Halphon 85c43fa81f Fixed Channel 3’s first sample behavior, update analog characteristic to more realistic values. Fixes #177 2019-05-25 19:12:09 +03:00
Lior Halphon 3e724afb0a Basic SGB support in the SDL port 2019-05-18 18:45:31 +03:00
ISSOtm ec5d1b7b88 Fix sample lengths for CH1, 2 and 4 2019-05-18 03:01:20 +02:00
Lior Halphon 3ee2c64899 Make the apu command a bit safer 2019-05-17 22:03:23 +03:00
Lior Halphon 6648a0a84d Minor adjustments and style fixes to the new APU debug functions 2019-05-17 20:48:49 +03:00
Lior Halphon 280467ad38
Merge branch 'master' into master 2019-05-17 20:31:52 +03:00
Lior Halphon 91eeb4d9d5 Emulate AGB audio mixing 2019-05-17 00:08:34 +03:00
ISSOtm 40f83c8f25 Add APU-related debugger commands
This change includes making one of the APU functions public
2019-05-15 12:45:51 +02:00
Lior Halphon ddc4e7484b Fix and restore optimization 2019-05-10 22:29:30 +03:00
Lior Halphon 06670fc970 Fix #172. Allow unroll optimizations when compiling with GCC. 2019-05-10 21:51:11 +03:00
orbea 2bded45397 Disable pragmas for gcc. 2019-05-09 10:55:31 -07:00
Lior Halphon 82ce597573 Line breaks 2019-04-12 20:30:02 +03:00
Lior Halphon 05cd81b77c Implemented jump-to breakpoints 2019-04-12 20:29:43 +03:00
Lior Halphon 7242ddae64 speling is difikult 2019-03-16 20:56:22 +02:00
Lior Halphon c342663200 Emulate serial bit shifting, update the serial API to use bits instead of bytes, update printer emulation and libretro to use the new API 2019-03-15 14:36:10 +02:00
Lior Halphon 0b03b61564 Render the first line 0, as required for SGB emulation 2019-02-16 04:19:16 +02:00
Lior Halphon 9d0aadb83f Emulate missing Vreset signal (SGB only for now) and ICD2 desyncing 2019-02-15 17:04:48 +02:00
Lior Halphon dde06e7cae Work around a crashing race condition, proper fix needed 2019-01-28 20:56:37 +02:00
Lior Halphon b996ed9220 Writing to BGPD/OBPD while it’s blocked still increases BGPI/OBPI if needed. Fixes #145 2019-01-19 23:37:44 +02:00
Lior Halphon 73a54049d2 Accurate PPU access timings 2019-01-19 19:32:26 +02:00
Lior Halphon 4536581a6e Fixed a bug where modifying RTC data would corrupt cartridge RAM data. Fixes #136 2019-01-18 02:36:14 +02:00
Lior Halphon 312478e509 CGB palettes are not accessible during Mode 3, closes #84 2019-01-14 22:22:46 +02:00
Lior Halphon 879d3b607d Removed verified TODO 2019-01-14 20:32:52 +02:00
Lior Halphon ba5c07bed9 Correctly emulate speed switch timing 2019-01-13 01:09:41 +02:00
Lior Halphon c74b39e712 The CPU core of the Game Boy is (most likely) called SM83 2019-01-12 00:42:16 +02:00
Lior Halphon 21d2a59a5f Fixed a very rare edge case where an interrupt occurs when SP=FF11 2019-01-12 00:39:24 +02:00
Lior Halphon 4e2b5bb336 Fix the GB_run_frame API in SGB mode 2019-01-11 21:53:21 +02:00
Lior Halphon 7b36ee10a4 Merge branch 'master' into sgb 2019-01-05 19:00:22 +02:00
Lior Halphon ae959cd878 ATTR_LIN and ATTR_DIV 2019-01-05 18:59:50 +02:00
Lior Halphon 4051f190a5 Cache cycles_per_sample to avoid FP arithmetic 2019-01-01 00:42:40 +02:00
Lior Halphon 9d947c7ce6 Unroll some APU loops 2018-12-31 23:09:56 +02:00
Lior Halphon af0430dbc5 Unroll some loops in PPU code, more efficient timer handling 2018-12-31 22:06:20 +02:00
Lior Halphon 21eb96a2f5 Joypad multiplayer support (Cocoa) 2018-12-15 18:55:41 +02:00
Lior Halphon 612cd07fb3 Fixed emulation of echo RAM 2018-12-12 23:44:00 +02:00
Lior Halphon ea09dfc888 Fixed multiplayer SGB mode 2018-12-04 23:46:30 +02:00
Lior Halphon b1a2e45168 Improvements to the SGB animation 2018-12-01 13:39:43 +02:00
Lior Halphon 6d28e74667 Color 0 must always be shared 2018-11-24 15:53:53 +02:00
Lior Halphon 4b93f89763 Correct emulation of color masks 2018-11-24 15:42:54 +02:00
Lior Halphon 389d8ae045 Halt the CPU while the SGB animation is playing 2018-11-24 13:34:07 +02:00
Lior Halphon 2d6d1e6325 SGB boot animation 2018-11-24 13:21:00 +02:00
Lior Halphon b3166135eb Clean up that crashing mess I made 2018-11-23 19:59:15 +02:00
Lior Halphon 558f9b9bae Updated SGB border, add “2” to SGB2 2018-11-23 14:16:48 +02:00
Lior Halphon 67d52b78b6 Handling interrupted SGB commands 2018-11-17 12:26:07 +02:00
Lior Halphon af5ef50cf9 Fixing default border 2018-11-17 01:39:38 +02:00
Lior Halphon deb5e21842 More colorization commands 2018-11-17 00:44:18 +02:00
Lior Halphon b698ce5d95 Correctly emulate SGB border color 0 2018-11-17 00:44:07 +02:00
Lior Halphon e5e7ce8203 Basic colorization 2018-11-16 22:05:35 +02:00
Lior Halphon d42cbcdee2 Palette transfer functions 2018-11-16 19:11:21 +02:00
Lior Halphon 91a3091b2e Build fix 2018-11-16 17:41:23 +02:00
Lior Halphon 2710939e1e That should be an inc file 2018-11-16 17:38:53 +02:00
Lior Halphon 595907cae2 Border fade animation 2018-11-16 17:36:21 +02:00
Lior Halphon 69ac36cca1 Add default SGB border 2018-11-16 17:22:57 +02:00
Lior Halphon 398148f7ea Basic SGB border support 2018-11-16 16:04:40 +02:00
Lior Halphon 382d9f8898 MASK_EN support 2018-11-16 12:42:52 +02:00
Lior Halphon 2f2b792edf SGB save states 2018-11-16 01:53:01 +02:00
Lior Halphon 634a54c046 SGB resolution support (Cocoa only so far) 2018-11-15 00:21:21 +02:00
Lior Halphon 6ba5cfbeef Support for multi-packet SGB commands 2018-11-13 23:45:26 +02:00
Lior Halphon 7735d638c6 Multiplayer SGB APIs/SGB detection 2018-11-12 00:37:06 +02:00
Lior Halphon 5c581651ce Handle the SGB header commands, disable SGB functions if needed. 2018-11-11 22:50:00 +02:00
Lior Halphon 44891d5c4a Initial code to support SGB, command “parsing”, replacement SGB boot ROM 2018-11-11 01:16:32 +02:00
Lior Halphon 94136f5741 Adjust DAC attributes to fix LADX’s crackling audio (Fixes #125) while keeping Cannon Fodder’s buzzing reasonable (Proper audio measurements still required) 2018-11-10 19:14:18 +02:00
Lior Halphon a39b314378 Fixed silly APU regression (Noise volume envelope ran too fast) Fixes #121 2018-11-03 14:37:19 +02:00
Lior Halphon c9d6a1381f Cross emulator compatibility with RTC saves 2018-11-03 01:31:14 +02:00
Lior Halphon 64922fff4b Fixed a bug where channels 1 and 2 would start playing earlier than they should have if NRx4 was written to twice. Fixes #86. 2018-10-29 00:44:43 +02:00
Lior Halphon 3035f43428 Emulation of DAC charging, Fixes #46, #85, #88 and #89 2018-10-19 23:53:01 +03:00
Lior Halphon 4276549acd Research notes TODOs 2018-10-19 01:02:27 +03:00
Lior Halphon 324201f336 Correct emulation of switching the DACs on and off. Fixes #100 and #87 2018-10-17 20:35:29 +03:00
Lior Halphon e9b78b6370
Merge pull request #114 from RobLoach/patch-2
Fix control reaches end of non-void function
2018-10-12 17:10:11 +03:00
Rob Loach 2da7a3f7fb
Fix the return value of read_lvalue to be 0 2018-10-12 10:09:30 -04:00
Rob Loach e834d32b8e
Update switch to just return at the end instead 2018-10-12 09:41:25 -04:00
Rob Loach ec41e87cf1
Update logic behind params 2018-10-11 22:39:43 -04:00
Rob Loach b8825127fd
Fix parentheses around ‘+’ in operand of ‘&’
```
Core/z80_cpu.c: In function ‘add_hl_rr’:
Core/z80_cpu.c:341:31: error: suggest parentheses around ‘+’ in operand of ‘&’ [-Werror=parentheses]
     if ( ((unsigned long) hl) + ((unsigned long) rr) & 0x10000) {
          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
```
2018-10-11 22:37:26 -04:00
Rob Loach f4ee044347
Fix control reaches end of non-void function
This change makes it so that there is a return value when a kind doens't match. Allows -Werror=return-type to pass.

```
Core/debugger.c: In function ‘read_lvalue’:
Core/debugger.c:239:1: error: control reaches end of non-void function [-Werror=return-type]
 }
```
2018-10-11 22:17:16 -04:00
Lior Halphon 11c148c851 Starting G/HDMA directly takes one more M-cycle (More research required) 2018-09-15 00:48:31 +03:00
Lior Halphon dbc338a887 Compensate for prefetch in DIV’s initial value 2018-09-15 00:47:26 +03:00
Lior Halphon ec0a879a93 Correct emulation of enabling and disabling the volume envelope. Correct emulation of a glitch where the volume envelope ticks when it usually wouldn’t. 2018-09-10 16:59:59 +03:00
Lior Halphon 3151821e6d Fixed minor APU regression (Channels 1 and 2 were given no delay under certain circumstances) 2018-09-09 12:50:55 +03:00
Maximilian Mader a36dd791ec
Rewrite the DAA instruction 2018-07-22 18:37:34 +02:00
Lior Halphon f7b882f0e8 Whoops 2018-07-22 02:10:26 +03:00
Lior Halphon b7426f93c0 Randomize object palettes. Slightly more accurate emulation of FF4C. 2018-07-20 23:23:47 +03:00
Lior Halphon ce80acc818 Fixed HDMA timing )But still not verified) 2018-07-20 12:34:52 +03:00
Lior Halphon b1cc55b786 Turns out Left/Right audio channels were flipped 2018-07-19 20:38:11 +03:00
Lior Halphon c66b6fbafc Fixed an edge case with DAC discharge emulation 2018-07-16 23:08:25 +03:00
Lior Halphon 2e9e3424ec Document some revision differences 2018-07-14 21:52:54 +03:00
Lior Halphon 0145b790a3 Merge branch 'v0.11.x' 2018-07-11 20:08:33 +03:00
Lior Halphon 5f58323c01 Attempt to improve audio quality on frontend with big audio buffers 2018-07-10 21:33:03 +03:00
Lior Halphon dc5cb71c22 Emulate CGB-C’s quirky LFSR function 2018-07-04 21:55:12 +03:00
Lior Halphon f3437d7cc0 Added todo 2018-07-03 23:47:50 +03:00
Lior Halphon b7b35c9b59 CGB-C timing 2018-07-03 22:25:09 +03:00
Lior Halphon 0a78f735d3 Fetcher Y is not cached on CGB-C 2018-07-03 22:14:53 +03:00
Lior Halphon 18ae18a95c LYC bit on CGB-C 2018-07-03 21:56:32 +03:00
Lior Halphon a7aabca618 Starting to add CGB-C support 2018-07-03 21:43:46 +03:00
Lior Halphon 47a74cb6c3 Randomize initial RAM values. Closes #82 2018-06-30 16:53:28 +03:00
Lior Halphon 2791775c5d Improvements to the `lcd` debugger command 2018-06-22 18:38:54 +03:00
Lior Halphon 6a7c084177 Fixed window regression 2018-06-18 21:57:01 +03:00
Lior Halphon d81c23cb16 Fixed HDMA regression 2018-06-16 23:52:24 +03:00
Lior Halphon 45c73e0175 Replaced the is_cgb bool with a more future compatible model enum. Removed the GB_init_cgb API and replaced it with an extended GB_init and GB_switch_model_and_reset APIs that now receive a model parameter. Increased the struct version. 2018-06-16 13:59:33 +03:00
Lior Halphon d95ad1ca54 SWAP was incorrectly disassembled as RLC 2018-06-09 15:39:40 +03:00
Lior Halphon 38c0cb3323 Typo 2018-06-09 15:12:42 +03:00
Lior Halphon f64da1864f APU glitch: When turning the APU on while DIV's bit 4 (or 5 in double speed mode), the first DIV/APU event is skipped. 2018-06-09 15:11:20 +03:00
Lior Halphon 593cb7c107 Pixel accurate emulation of Prehistorik Man on a CGB-CPU-E 2018-06-08 18:44:03 +03:00
Lior Halphon ca01ff6f79 Finally, perfect emulation of the STAT write bug. 2018-06-08 17:16:15 +03:00
Lior Halphon 127324d2d6 Fixed regression involving rendering a window with negative X position. Closes #75 2018-06-07 23:08:46 +03:00
Lior Halphon f1dfa2a1bc More sensible implementation of the STAT interrupt. 2018-06-04 02:07:38 +03:00
Lior Halphon 0481ff9af5 Whoops 2018-06-04 01:52:24 +03:00
Lior Halphon 8721a48206 Fixed incorrect double speed behavior. 2018-06-03 00:36:05 +03:00
Lior Halphon 7003e31b7e Fixed a regression with STAT blocking. 2018-06-02 04:00:10 +03:00
Lior Halphon 80c92daacd Include cleanup (#73) 2018-05-27 19:30:23 +03:00
Lior Halphon 6532aef089 Correct emulation of the DMG stat write bug 2018-05-26 18:06:40 +03:00
Lior Halphon 9693b2de6a Refined the STAT bug behavior. Still not perfect. 2018-05-26 17:06:49 +03:00
Lior Halphon 855ffb490a A HBlank interrupt cannot occur in the last M-cycle of HBlank. Correct emulation of STAT access conflicts on the CGB (Test: CPU-E, single speed only). Fixes a minor graphical glitch in Pokémon Puzzle Challenge. 2018-05-25 23:42:36 +03:00
Lior Halphon 249acb04cc Verified some timings on a DMG. Fixed palette write conflict timing (Although the fix kind of implies time traveling). Closes #65 2018-05-16 00:59:11 +03:00
Lior Halphon 562b43a7c5 Notes about the DMG wave-ram glitch 2018-05-15 23:02:07 +03:00
Lior Halphon 7df571d42f Less strict matching for `delete` and `unwatch`. Fixes #71 2018-05-13 23:17:23 +03:00
Lior Halphon 1fcde88d8a Improved accuracy of the halt bug 2018-05-12 22:13:52 +03:00
Lior Halphon 713dc02e46 A bit tacky, but T-cycle accurate emulation of LYC write conflicts on the CGB. Only single speed mode verified. Closes #54 2018-05-11 12:38:55 +03:00
Lior Halphon af3554c1d1 More accurate emulation of the LYC register and interrupt. (Still not perfect on a CGB) 2018-04-27 13:40:39 +03:00
Lior Halphon 0f8385a798 Refined line 153 behavior on a CGB. Verified on CGB-E. 2018-04-25 00:08:06 +03:00
Lior Halphon be9df4d658 Added mechanism to handle MMIO read/write conflicts. Fixes #65 2018-04-14 17:57:00 +03:00
Lior Halphon 2c6f7906c5 Make multi-byte opcodes trigger the OAM bug when they increase PC 2018-04-14 15:32:55 +03:00
Lior Halphon 84aa06aba5 Clean up OAM bug code 2018-04-14 13:35:16 +03:00
Lior Halphon d667d87bbe Refactor CPU code so handling access conflicts is possible 2018-04-14 13:25:55 +03:00
Lior Halphon f1ec42d4ba H/GDMA was 4 times faster than it should have been. Made it also more accurate. Fixes #56 2018-04-13 14:41:39 +03:00
orbea 10dc12c502 Core: Fix libretro builds 2018-04-11 14:21:46 -07:00
Lior Halphon 89094950f8 Correct emulation of mapping both button sets. Fixes #60 2018-04-07 16:45:31 +03:00
Lior Halphon 5be2b3db29 It appears that OAM DMA blocks PPU access to OAM 2018-04-07 13:59:36 +03:00
Lior Halphon 0725b008be Further simplifications 2018-04-07 13:02:53 +03:00
Lior Halphon 097b768127 Update comments 2018-04-07 03:36:47 +03:00
Lior Halphon 9ce028056a Cleanup 2018-04-07 03:26:10 +03:00
Lior Halphon fed2556fc3 More reasonable implementation of sprite timings 2018-04-07 03:00:26 +03:00
Lior Halphon 0751eae90b Moved the fetcher state machine to another function 2018-04-06 19:29:49 +03:00
Lior Halphon 0461fb5b2a Simplified FIFO logic 2018-04-06 19:11:48 +03:00
Lior Halphon cb01259073 Fixed #61 2018-04-06 11:37:49 +03:00
Lior Halphon 0c86ff1ee4 More CGB revision quirks 2018-04-06 04:00:37 +03:00
Lior Halphon a6ed2029b7 New information about PPU changes between CGB-B and CGB-E 2018-04-06 03:19:47 +03:00
Lior Halphon cc95c89d3c Surprise! The CGB has a 16-bit VRAM data bus 2018-04-05 16:15:51 +03:00
Lior Halphon 9aadc80f75 Implemented some obscure PPU rendering quirks, verified some timings 2018-04-05 15:33:21 +03:00
Lior Halphon d785e45308 More accurate emulation of LCDC.0 2018-04-05 12:27:01 +03:00
Lior Halphon d8e0683c35 Fixed a bug where skipping a sprite by modifying LCDC flags mid-scanline will disable sprites for the rest of the scalene. 2018-04-05 00:51:37 +03:00
Lior Halphon 5d63892949 T-cycle accurate timing of the extra OAM interrupt. Fixes vblank_stat_intr-GS, related to #54 2018-04-03 01:43:24 +03:00
Lior Halphon ba07e7ba85 Fixed a bug where 0:$dxxx reads/writes from the wrong bank in CGB mode. Made sure symbols are reset after reloading a sym file. 2018-04-02 19:57:39 +03:00
Lior Halphon e163026ca9 The STAT bug does not occur during the glitched mode 0 2018-04-02 01:05:32 +03:00
Lior Halphon 9339a6027f Slight refinement to the last fix 2018-04-01 22:20:26 +03:00
Lior Halphon ec64c041ab The OAM interrupt is internally implemented differently from the other 3. Fixed the stat_write_if tests, relates to #54 2018-04-01 21:45:56 +03:00
Lior Halphon 0d0d9ccdae Fixed a timer regression, fixes timer_if in DMG mode. Relates to #54 2018-03-31 15:52:31 +03:00
Lior Halphon 73dc3560a5 Mode 0 interrupts do not occur in the glitched mode 0 of the first line 0. The extra OAM interrupt bug also affects DMG. 2018-03-31 13:18:02 +03:00
Lior Halphon 0a2d6e6dcb Fixed DMG timing regression 2018-03-31 12:21:34 +03:00
Lior Halphon 9811dceca1 Emulate another OAM timing quirk; a sprite at x = 0 has extra penalty if SCX is not 0. Fixes intr_2_mode0_timing_sprites_scx*_nops, affects #54 2018-03-30 17:06:27 +03:00
Lior Halphon 2c44ffbe39 More accurate fetcher penalty emulation, fixed intr_2_mode0_timing_sprites_nops, affects #54 2018-03-30 02:53:49 +03:00
Lior Halphon c7ca786e77 Attempt to fix building using MINGW. Affects #55 2018-03-29 21:27:19 +03:00
Lior Halphon a9fbbd3894 Merge branch 'master' of https://github.com/LIJI32/SameBoy 2018-03-29 21:07:04 +03:00
Lior Halphon e380a00b67 Fixed another timing regression with the CB opcodes 2018-03-29 21:06:53 +03:00
Kyle Swanson 7ffe132e79 fix typo 2018-03-28 21:38:48 -07:00
Kyle Swanson 7bfe5de9c7 chmod -x 2018-03-28 21:37:34 -07:00
Lior Halphon 96063fb0da Fixed Windows build, added Unicode support in Windows. 2018-03-28 21:59:27 +03:00
Lior Halphon 4cf78139a8 Fixed a bug where SameBoy freezes for a while after leaving turbo mode 2018-03-27 23:33:31 +03:00
Lior Halphon 0e3d2770d9 Properly handle cases where an object’s X position is modified between the OAM mode and rendering mode 2018-03-27 22:13:08 +03:00
Lior Halphon 0912a30bb9 Fixed a regression in dmg_sound-2 2018-03-27 21:04:55 +03:00
Lior Halphon f5493e023d Fixed a timing regression in the CB opcodes 2018-03-27 20:21:24 +03:00
Lior Halphon 7671648fca Simplified a function 2018-03-27 19:06:36 +03:00
Lior Halphon 7543461c24 Increasing PC in OAM triggers the OAM bug 2018-03-27 16:36:39 +03:00
Lior Halphon 4cbade9a88 Function name change 2018-03-27 15:55:12 +03:00
Lior Halphon 4986930511 Mostly complete emulation of the OAM bug. Passes oam_bug-2. 2018-03-27 15:46:00 +03:00
Lior Halphon 9093f22293 More accurate emulation of the OAM bug 2018-03-24 14:46:51 +03:00
Lior Halphon 5cb74fb684 Bugfix: turning the PPU off during OAM mode made the OAM bug persist while the LCD is off 2018-03-24 02:58:37 +03:00
Lior Halphon d343152fca Basic emulation of the OAM bug 2018-03-24 00:32:19 +03:00
Lior Halphon f8c6b9e7a0 Fixed the lcd command 2018-03-23 21:26:49 +03:00
Lior Halphon 4e3928df81 Turns out the behavior differs between DMG and CGB – in DMG mode, the objects enabled bit is checked before halting the FIFOs, meaning that disabled sprites do not affect Mode 3’s length on the DMG. 2018-03-23 20:01:27 +03:00
Lior Halphon 48a8db233d Refinement to the last fix 2018-03-23 19:54:11 +03:00
Lior Halphon e9eeace995 The object enabled bit is checked only when popping from the object FIFO. Objects affect timing even when disabled. 2018-03-23 19:50:19 +03:00
Lior Halphon 04bfc89816 Cycle accurate OAM search mode 2018-03-23 19:07:14 +03:00
Lior Halphon c11af7ea26 Fix CGB timings 2018-03-23 12:58:51 +03:00
Lior Halphon 3e5e17d1a3 Fixed CB [hl] opcodes timings 2018-03-23 12:35:37 +03:00
Lior Halphon 18e32d1755 Merge branch 'master' into timing
# Conflicts:
#	Core/gb.c
2018-03-22 22:37:35 +02:00
Lior Halphon 577e23925b Fixed sources-dmgABCXmgbS 2018-03-22 20:09:01 +02:00
Lior Halphon e9f243a913 Fix sprite priority 2018-03-21 00:02:35 +02:00
Lior Halphon cb33a5b25a Fix Aevilla 2018-03-20 20:08:29 +02:00
Lior Halphon 3883b7d86a Merge branch 'master' into timing
# Conflicts:
#	Core/display.c
#	Core/z80_cpu.c
2018-03-19 23:46:33 +02:00
Lior Halphon b50c97f4a7 Prevent starting HDMA in the middle of an instruction, making both the CPU and DMA access memory at the same time. Closes #47 2018-03-19 20:01:31 +02:00
Lior Halphon 202eb2b5cc Fix stat_lyc_onoff 2018-03-18 20:32:19 +02:00
Lior Halphon 80b1275e07 Fix stat_lyc_onoff 2018-03-18 20:08:45 +02:00
Lior Halphon 0dc30f081a CGB halt interrupt timing 2018-03-17 23:21:14 +02:00
Lior Halphon 12ae5745db While fixing some rendering issues, this change was incorrect. 2018-03-17 21:04:48 +02:00
Lior Halphon 269bac4626 More CGB fixes 2018-03-17 20:34:55 +02:00
Lior Halphon 21b75494a2 More CGB fixes (currently on DMG-mode CGB is verified). Halt interrupt timing isn’t correct yet. 2018-03-11 00:17:57 +02:00
Lior Halphon 15b6c48d7c Fixed vblank_stat_intr-C 2018-03-10 15:52:22 +02:00
Lior Halphon c267ad00b5 Goodbye 2018-03-09 23:34:23 +02:00
Lior Halphon e8b107efdb In double speed mode, there are no quirks where IF and STAT don’t update together 2018-03-09 23:31:49 +02:00
Lior Halphon cb6bb0590e Starting to fix CGB timing quirks 2018-03-09 21:11:35 +02:00
Lior Halphon 9083e883fe CGB BG rendering 2018-03-09 18:52:36 +02:00
Lior Halphon a32f232bb1 Fixed OAM-window priority glitch, fixed OAM glitch in Prehistoric Man 2018-03-09 17:10:19 +02:00
Lior Halphon 1149c266cf More regression fixes, actually fix Pinball Deluxe this time 2018-03-08 23:22:03 +02:00
Lior Halphon 544ca2be4c Changing the timings of memory writes so they’re not effectively one T-cycle late. This screws up APU’s cycle accuracy for now. 2018-03-05 21:17:37 +02:00
Lior Halphon 88a11b891f Object rendering 2018-03-04 23:27:31 +02:00
Lior Halphon 3d1c8b50c4 OAM search and OAM timing in mode 3 2018-03-04 22:21:56 +02:00
Lior Halphon 476133abd0 The scrolled y value is cached and not recalculated 2018-03-03 20:51:38 +02:00
Lior Halphon 518746f664 fixed rendering off by one 2018-03-03 19:52:48 +02:00
Lior Halphon 496c5589e6 Added window support 2018-03-03 19:36:21 +02:00
Lior Halphon 5ea33cc931 Cleanup 2018-03-03 19:05:29 +02:00
Lior Halphon b08f02c4f3 Rewriting the PPU rendering: T-cycle accurate background rendering. DMG only, CGB completely broken 2018-03-03 15:47:36 +02:00
Lior Halphon a67db0595b Fixed window behavior 2018-03-01 22:03:56 +02:00
Lior Halphon b702d56547 Merge branch 'master' into timing
# Conflicts:
#	Core/display.c
#	Core/z80_cpu.c
2018-03-01 21:22:33 +02:00
Lior Halphon 94c6dbd281 Fixed ‘call’ instruction not being properly symbolicated. Closes #37 2018-03-01 21:12:37 +02:00
Lior Halphon 7248403be7 Fixed several DMG regressions, fixes Pinball Deluxe again 2018-03-01 00:12:04 +02:00
Lior Halphon fb03479a1f Added 16-bit dereferencing operator (`{address}`) to the debugger. Closes #38 2018-02-28 19:39:22 +02:00
Lior Halphon b02e40d5a2 Refinement to that last fix 2018-02-25 23:23:55 +02:00
Lior Halphon 90a943d05a Emulate an HDMA quirk required to properly emulate Aevilia 2018-02-25 22:32:41 +02:00
Lior Halphon ef670986c6 Rewrote PPU (currently only emulates DMG correctly) to use the new timing mechanism. Removed “future interrupts” (No longer required because SameBoy is now T-cycle based) 2018-02-25 00:48:45 +02:00
Lior Halphon 42ab746a66 Starting to remove the delayed interrupts hack – done for timer interrupt, broken for display interrupts 2018-02-23 15:33:44 +02:00
Lior Halphon c48097a484 Convert div counter to the SM mechanism 2018-02-23 13:16:05 +02:00
Lior Halphon 5974092c94 Bugfix 2018-02-20 23:04:35 +02:00
Lior Halphon 56eac9f875 Removed some dead code from display.c 2018-02-20 21:23:27 +02:00
Lior Halphon 9802ca41dd Components not affected by CGB’s double speed mode now operate in 8MHz mode to theoretically make advance_cycles(gb, 1) safe. 2018-02-20 21:17:12 +02:00
Lior Halphon f79af39ea2 More accurate emulation of the APU’s analog characteristics 2018-02-16 18:01:50 +02:00
Lior Halphon fc35111ae7 Corrected the emulated DAC’s range 2018-02-16 01:26:37 +02:00
Lior Halphon 0c231db9e7 This is probably not correct (and makes no sense from an hardware design perspective), but this correctly emulates my analog test cases and fixes the pops introduced by the last commit. 2018-02-13 23:13:15 +02:00
Lior Halphon bfb37884e1 Inactive channels are not equivalent to channels with 0 volume. 2018-02-11 22:50:15 +02:00
Lior Halphon afcc66fb3c Added CPU under/over-clocking support in Core, add under-clocking hotkey in the Cocoa port, allow modifier keys to be configured as input keys in Cocoa. 2018-02-10 23:30:30 +02:00
Lior Halphon 0cbbaac490 Updated incorrect comment after verification 2018-02-10 19:50:42 +02:00