Commit Graph

712 Commits

Author SHA1 Message Date
Lior Halphon
c5ce14dad1 Prevent Hblank HDMAs when the LCD is off 2017-02-21 22:33:09 +02:00
Lior Halphon
f4a364c3db It seems like STAT’s LYC flag should be on while the screen is off. 2017-02-21 21:31:52 +02:00
Lior Halphon
fed3b4f9cd Symbolicate LDH instructions 2017-02-21 21:31:22 +02:00
Lior Halphon
aca7687edd Fixed a bug where LYC would be compared to the wrong value in the first cycle of a frame 2017-02-20 22:52:34 +02:00
Lior Halphon
91513ced22 Minor adjustment to LCD timing after enabling it. 2017-02-20 14:20:45 +02:00
Lior Halphon
399e88d5fe STAT timing and LCD interrupts rewritten, should be more accurate. 2017-02-19 02:22:50 +02:00
Lior Halphon
74d00b84b7 Treat STOP as a 2-byte instruction 2017-02-17 00:21:02 +02:00
Lior Halphon
6b1363e96e Fixed: Writing to 3XXX in MBC5 before writing to 2XXX no longer switches to the wrong bank. 2017-02-16 23:13:55 +02:00
Lior Halphon
421d3b27f5 Correct emulation of HUC1 banks higher than 0x1F 2017-02-16 21:07:35 +02:00
Lior Halphon
10ab2b4fe0 Fixed typo in the disassembler. 2017-02-16 20:51:32 +02:00
Lior Halphon
3fbc2c5716 DI should not be delayed. 2017-02-15 19:04:53 +02:00
Lior Halphon
4b6fda0cb6 Simplified HDMA and fixed the reading of the HDMA5 register 2017-02-08 21:58:15 +02:00
Lior Halphon
d5c9a52337 Fixed: HDMA registers were not being updated during transfer 2017-02-07 00:24:26 +02:00
Lior Halphon
eed8a06fc0 Several fixes to the help command 2017-02-04 19:00:31 +02:00
Lior Halphon
57c73c8a51 Fixed the help command for the disassemble command 2017-02-04 17:49:22 +02:00
Lior Halphon
517e72f92b Printer compression support 2017-01-20 23:00:02 +02:00
Lior Halphon
527ae01e0e Printer API, compression not supported yet 2017-01-13 22:20:11 +02:00
Lior Halphon
cd382ef236 Fixed: Conditional read watchpoints crashed if the expression referred to the 'new' variable. Breakpoint and watchpoint conditions no longer trigger watchpoints. 2017-01-12 23:11:26 +02:00
Lior Halphon
8c14ec3268 An interrupt should also occur when using external clock. 2016-11-13 00:42:05 +02:00
Lior Halphon
22c34e1095 Serial API 2016-11-12 01:58:53 +02:00
Lior Halphon
388fb600de Added VRAM-debugging APIs, added VRAM viewer to Cocoa Port, fixed uninitialized VRAM, fixed memory viewer crash 2016-10-27 00:23:24 +03:00
Lior Halphon
47aaf44017 Rumble API 2016-10-22 15:37:03 +03:00
Lior Halphon
2d51d13479 Various optimizations 2016-10-22 02:18:29 +03:00
Lior Halphon
1b8832a7ff Added disassemble command 2016-10-19 23:55:23 +03:00
Lior Halphon
ee51dec20e Added modifier syntax to debugger: Changed watch's syntax, added format modifier to print/eval, added count option to examine command. 2016-10-19 23:48:46 +03:00
Lior Halphon
edf93abff1 According to Mooneye's test ROMs, this behavior does not happen on a CGB 2016-10-18 00:31:07 +03:00
Lior Halphon
11f8c41305 Basic HUC3 support 2016-10-17 18:51:43 +03:00
Lior Halphon
9ca7540c69 Fixed dereferencing a non-banked address in the debugger 2016-10-14 01:19:39 +03:00
Lior Halphon
fa35869bc4 Implemented DMG STAT-write interrupt bug, fixed Road Rash and Zero no Densetsu (These game do not work on CGBs) 2016-10-11 13:37:43 +03:00
Lior Halphon
76c795a966 Whoops. 2016-10-04 04:01:06 +03:00
Lior Halphon
90b7383df7 The camera's get pixel callback must return the same value for every coordinate until a new photo is taken. 2016-10-03 23:05:47 +03:00
Lior Halphon
2d06599a85 Edge enhancement support 2016-10-03 19:39:20 +03:00
Lior Halphon
8941504863 Refinements to camera support according to AntonioND's docs 2016-10-03 18:24:15 +03:00
Lior Halphon
dd23fffcc0 Proper (I believe) emulation of most GameBoy Camera registers 2016-10-03 14:22:54 +03:00
Lior Halphon
2a84d62187 Forbid reading the image while the camera is busy 2016-10-03 01:29:54 +03:00
Lior Halphon
479a64dca6 Dither using a pattern, closer to actual GameBoy Camera 2016-10-02 23:36:20 +03:00
Lior Halphon
de7c15fc68 Another camera API bugfix 2016-10-02 18:33:33 +03:00
Lior Halphon
9c68ac1419 Camera API bugfix 2016-10-02 18:14:05 +03:00
Lior Halphon
ab5f66795a Gameboy Camera API 2016-10-02 17:14:58 +03:00
Lior Halphon
b3b041a151 Basic GB Camera support (Emulate only MBC, enough for the ROM to boot). 2016-10-02 03:40:11 +03:00
Lior Halphon
9b71454f07 Basic HUC1 support (Emulated as MBC1) 2016-10-02 02:15:03 +03:00
Lior Halphon
4904277f0d Corrected behavior of palette registers in DMG mode. This affected a broken Game & Watch Gallery 2 ROM that was previously used in the automation test. 2016-10-01 22:10:44 +03:00
Lior Halphon
80a1b12ae7 Added palette command to the debugger 2016-10-01 22:08:34 +03:00
Lior Halphon
4a2bec239a MBC2 RAM support was completely broken. 2016-09-30 23:34:06 +03:00
Lior Halphon
5565c096c7 Misc optimizations, especially for the tester 2016-09-30 01:09:44 +03:00
Lior Halphon
3ac3eccebb Bugfix: Multiple watchpoints did not work correctly and conflicted with breakpoints 2016-09-30 01:09:17 +03:00
Lior Halphon
258500bda3 Merge branch 'master' into rateless_apu 2016-09-23 18:53:38 +03:00
Lior Halphon
52ed2ca55e Corrected BG enable's behavior (Fixes visual glitch with Krusty's Funhouse) 2016-09-23 18:30:07 +03:00
Lior Halphon
42c01a21b2 Fixed crash when accessing MBC RAM on a cartridge that "has RAM", but it's 0-sized. 2016-09-22 01:52:40 +03:00
Lior Halphon
0991705379 Refined HALT bug behavior, fixed Robocop 2016-09-22 01:51:09 +03:00
Lior Halphon
bc3cab7dfa Forbid pressing two opposing direction keys. Fixes Pocket Bomberman (U). 2016-09-21 02:15:02 +03:00
Lior Halphon
252439c1af Fixed a deadlocking race condition that might happen when reading APU memory in the hex viewer 2016-09-21 01:59:43 +03:00
Lior Halphon
c40b86d4a4 Merge branch 'master' into rateless_apu 2016-09-21 00:23:59 +03:00
Lior Halphon
6f2b36cacb The HALT bug also happens on CGBs, regardless of DMG mode. 2016-09-20 22:59:25 +03:00
Lior Halphon
f88c9d299b Merge branch 'master' into rateless_apu 2016-09-20 20:05:03 +03:00
Lior Halphon
f46414b7b1 Updated struct version :( 2016-09-20 20:04:38 +03:00
Lior Halphon
37e895352f Volumes no longer doubles 2016-09-20 19:58:30 +03:00
Lior Halphon
f049284324 Emulate the HALT bug on a DMG 2016-09-20 01:22:21 +03:00
Lior Halphon
1a3a96762b CPU cleanup 2016-09-18 23:50:04 +03:00
Lior Halphon
ed31358934 Forgot to emulate LCDC bit 0! 2016-09-18 21:00:05 +03:00
Lior Halphon
fe51805ed7 Incorrect constant name 2016-09-16 18:24:38 +03:00
Lior Halphon
f4c5cf20bc Cleanup of ret_cc 2016-09-16 13:27:32 +03:00
Lior Halphon
71d4ba21f2 Added a tick-counting debugger command 2016-09-16 11:58:31 +03:00
Lior Halphon
4beb946468 Slight APU optimization 2016-09-14 22:49:35 +03:00
Lior Halphon
f274cbc2ec Read wave form while playing 2016-09-13 17:40:10 +03:00
Lior Halphon
594aea2d5a APU is now being run lazily 2016-09-13 17:33:48 +03:00
Lior Halphon
eefc998e43 Removed for loop in APU 2016-09-13 17:06:35 +03:00
Lior Halphon
ff7b8a6854 Removed doubles, reorganized code a bit 2016-09-13 16:57:16 +03:00
Lior Halphon
b95860c034 Making the APU independent of sample rate 2016-09-13 16:55:26 +03:00
Lior Halphon
43be91f032 Slightly more readable code. 2016-09-13 01:20:18 +03:00
Lior Halphon
95cfb114a2 Properly setting MBC RAM 2016-09-10 13:25:18 +03:00
Lior Halphon
6d836b9f48 Fixed APU bug that prevented some games from working 2016-09-10 02:20:44 +03:00
Lior Halphon
62ecadeb57 Fixed another reset-while-debugging deadlock in Cocoa 2016-09-07 00:37:11 +03:00
Lior Halphon
01fc137256 Fixed an APU issue that might occur when having more than one GB_gameboy_t object 2016-09-06 22:36:16 +03:00
Lior Halphon
603b8969ab Correct (disconnected) serial emulation. 2016-09-06 13:13:14 +03:00
Lior Halphon
a6c5a8fdaa Fixed a bug that caused the Cocoa port to freeze sometimes if the emulator was reset while debugging. 2016-09-03 13:34:49 +03:00
Lior Halphon
a2d77b1754 Warn about unsupported cartridges/MBCs 2016-09-03 04:00:37 +03:00
Lior Halphon
a746c726ee Added basic automatic ROM tester 2016-09-03 03:39:32 +03:00
Lior Halphon
ee4907949b Support for RTC latching. Fixes #4. 2016-08-21 22:33:57 +03:00
Lior Halphon
e7626535a8 Initial Windows support 2016-08-20 17:51:17 +03:00
Lior Halphon
0734e990b3 Memory viewer now has a Goto command, different memory space modes, and allows viewing/editing specific banks 2016-08-19 14:54:54 +03:00
Lior Halphon
f9236d12bf Improvements to the help command and general debugger usability. 2016-08-13 22:52:41 +03:00
Lior Halphon
806d0775a4 Added backtrace command to debugger 2016-08-09 22:48:53 +03:00
Lior Halphon
bebb5c7a41 Correctly emulating the unused OAM memory in DMG mode 2016-08-06 18:58:44 +03:00
Lior Halphon
cc8664b0a8 Correctly emulating a disconnected serial cable 2016-08-06 18:57:33 +03:00
Lior Halphon
af10e07ed7 Initing OBP0/1 correctly 2016-08-06 18:57:13 +03:00
Lior Halphon
e95d2c4abe Fixed DI instruction on CGB 2016-08-06 17:16:38 +03:00
Lior Halphon
d03a1fbd16 Fixed TMA writing while reloading. 2016-08-06 14:36:33 +03:00
Lior Halphon
85a33ed8ef Emulating DMA delay correctly 2016-08-06 14:24:43 +03:00
Lior Halphon
4a50000e83 Corrected timing for many instructions 2016-08-06 14:00:35 +03:00
Lior Halphon
8dd5462525 Correct DMA timing 2016-08-06 13:57:38 +03:00
Lior Halphon
0f98ac5ff9 Emulate TIMA reloading 2016-08-06 13:56:29 +03:00
Lior Halphon
55cbe5d4d0 Accuracy improvements to timers 2016-08-06 00:24:12 +03:00
Lior Halphon
d098458ee4 Major improvements to accuracy: Fixed instruction timing, DMA timing, and IO reg masking. Passes most of mooneye-gb acceptance tests. 2016-08-05 16:36:38 +03:00
Lior Halphon
47e3300b66 Improved DMA accuracy, mooneyegb test ROMs no longer crash miserably. (but still fail) 2016-08-03 23:31:10 +03:00
Lior Halphon
fad1007427 Merge branch 'master' of https://github.com/LIJI32/SameBoy 2016-08-03 22:28:28 +03:00
Lior Halphon
e6d4cac00e Fix logical bug when changing watchpoint flags 2016-07-21 15:20:25 +03:00
Lior Halphon
185e71fe12 Improvements to IR API, since timing is VERY important 2016-07-21 01:03:13 +03:00
Lior Halphon
1d35c04ab1 Infrared API 2016-07-18 22:11:18 +03:00
Lior Halphon
da0911d69b Fixed SDL crash 2016-07-18 14:30:21 +03:00
Lior Halphon
b30822fd0b Async commands in SDL port, better handling of ^C and ^D 2016-07-18 13:10:19 +03:00
Lior Halphon
aa6438fa06 Async debugger commands 2016-07-18 00:46:45 +03:00
Lior Halphon
a68b06226a Fixed crash on free 2016-07-15 23:20:14 +03:00
Lior Halphon
eaca0634aa Reading and writing absolute addresses in the expression evaluator. 2016-07-15 17:06:46 +03:00
Lior Halphon
e20e81befd Symbol support in the expression evaluator 2016-07-15 14:31:27 +03:00
Lior Halphon
c3a831db7d Debugger's pc "variable" now returns a full address 2016-07-14 23:27:48 +03:00
Lior Halphon
909f3ba75e Bank-specific breakpoints and watchpoints 2016-07-14 23:25:16 +03:00
Lior Halphon
ce837b3727 Bank-specific examine support 2016-07-14 21:15:24 +03:00
Lior Halphon
65f37bccbd Initial 25-bit debugger values support 2016-07-14 21:01:45 +03:00
Lior Halphon
ea082b777d ...And another crash 2016-07-14 01:46:55 +03:00
Lior Halphon
f6b10ed439 Operators priorities were inverted! 2016-07-13 23:51:46 +03:00
Lior Halphon
46714108ac ...And a crash. 2016-07-13 23:46:18 +03:00
Lior Halphon
c3f1eb26b1 Fixed potential overflow 2016-07-13 23:07:36 +03:00
Lior Halphon
d49404d248 Debugger can now read .sym files, and display them. (No expression support yet) 2016-07-13 23:00:50 +03:00
Lior Halphon
e9b3a38171 Uniform syntax for debugger input and output 2016-07-12 23:30:18 +03:00
Lior Halphon
bd7f8f2555 Support for an alternative MBC1 wiring, should solve most N-in-1 carts (Issue #3) 2016-07-09 19:25:25 +03:00
Lior Halphon
c6bafe3fc3 Rewrote MBC support 2016-07-09 17:34:55 +03:00
Lior Halphon
78a809795e Renaming MBC constants 2016-07-09 14:45:25 +03:00
Lior Halphon
b4208be4f4 Multiple watchpoints were broken 2016-07-09 14:37:11 +03:00
Lior Halphon
de4983099a Added (conditional) r/w watchpoints. Fixed a bug where breakpoint condition syntax is not checked. Added != operator. 2016-07-07 00:29:25 +03:00
Lior Halphon
19aea4096b Added condition breakpoint. Fixed a possible crash when deleting a breakpoint. 2016-07-01 18:24:21 +03:00
Lior Halphon
8eee70aed9 Fixed disassembler bugs 2016-07-01 18:04:25 +03:00
Lior Halphon
79fd9ed6ad Added boolean operators to the debugger 2016-07-01 13:12:04 +03:00
Lior Halphon
70bd90740a Mass name and type changes. Save states are now compatible between 32- and 64-bit systems. Maybe. 2016-06-18 20:29:11 +03:00
Lior Halphon
64832e0e9e HDMA accuracy improvement 2016-06-18 16:51:25 +03:00
Lior Halphon
d58ddef07b Proper initial value for the Joypad register 2016-06-18 15:01:51 +03:00
Lior Halphon
5723b82293 Fixed graphical glitches caused by the last change to LCDC emulation 2016-06-17 02:27:32 +03:00
Lior Halphon
e6c4b4d1b2 Seems like I forgot to finish implementing the stop instruction! 2016-06-14 14:12:13 +03:00
Lior Halphon
8153b765a2 General cleanup. Minor fixes to LCD Controller accuracy. 2016-06-12 19:39:05 +03:00
Lior Halphon
d7d8da3fa9 More accurate emulation of the SCX register 2016-06-11 17:58:00 +03:00
Lior Halphon
b7e999b242 Modified saved data to be more future-compatible. 2016-06-11 17:49:42 +03:00
Lior Halphon
6c7dd761e2 Fixed a crash related to adding and deleting breakpoints 2016-06-10 18:03:12 +03:00
Lior Halphon
ee7e58e44b Fixed a bug introduced by the last STAT fix. This restores GBVideoPlayer support. 2016-06-10 17:29:49 +03:00
Lior Halphon
759b497c07 Fixed bug introduced by the stereo support 2016-06-10 16:38:20 +03:00
Lior Halphon
aca5873de2 More accurate STAT interrupt. This fixes Altered Space and partially fixes Pinball Deluxe. It breaks GBVideoPlayer, however. 2016-06-10 16:31:57 +03:00
Lior Halphon
6bc64a9902 Added stereo support. Correct some PCM register behavior. 2016-06-10 15:28:50 +03:00
Lior Halphon
79e4c22c6b Fixed string in MBC command 2016-04-16 15:18:40 +03:00
Lior Halphon
0fa2d6ea2f Prevent creating .sav files for ROMs claiming they have a battery but have no cartridge RAM or RTC 2016-04-16 14:09:56 +03:00
Lior Halphon
7dc575d01e Fixed a bug where audio channel 3 was playing silently instead of being muted. 2016-04-16 14:08:30 +03:00
Lior Halphon
b8bc84db4e Corrected read of HDMA5, fixing A Bug's Life 2016-04-15 01:26:48 +03:00
Lior Halphon
4a05c4243d Corrected description for the breakpoint command 2016-04-13 22:48:07 +03:00
Lior Halphon
8dd1b3c854 Added (experimental) stack-leak and stack-overflow detection command to the debugger. 2016-04-10 23:22:54 +03:00
Lior Halphon
71ef40f4b6 "Standardized" the finish/next call depth as debugger "hooks" 2016-04-10 22:36:54 +03:00
Lior Halphon
bf6dff30cb Corrected debugger's finish behavior's on interrupt handlers 2016-04-10 20:58:14 +03:00
Lior Halphon
0a09fba091 Correcting DIV and TIMA speed in CGB's double speed mode 2016-04-09 16:48:37 +03:00
Lior Halphon
de95e6f6fc Fixed incorrect DMA validity check, fixing The Smurfs 3 2016-04-09 15:00:29 +03:00
Lior Halphon
80d03f3c91 Added ROM-bank wrapping support, making bootleg game "Pocket Monster Adventures" boot.
(Although this game is better not booting)
2016-04-09 02:18:09 +03:00
Lior Halphon
a3b44d20cb Added mbc/cartridge command to debugger 2016-04-09 02:00:10 +03:00
Lior Halphon
f448865b8a Silently ignoring empty lines 2016-04-08 01:53:21 +03:00
Lior Halphon
1069637e45 Added support for multiple breakpoints 2016-04-07 00:25:41 +03:00
Lior Halphon
1c2af7fa5b Fixed the default debugger input to strip new lines, fixing the debugger in SDL 2016-04-06 22:57:37 +03:00
Lior Halphon
eb0b642247 Improved debugger command style and usability, made code more flexible 2016-04-06 01:43:35 +03:00
Lior Halphon
3e135a7c00 More accurate emulation of the DMG-emulation-mode registers. 2016-04-05 23:21:51 +03:00
Lior Halphon
cda6621dc2 Fixed mask for TAC and STAT 2016-04-04 22:12:00 +03:00
Lior Halphon
af7309b98d Moved the call to display_run to advance_cycle.
This fixes games with delicate timings such as X/Ekkusu, that expect STAT to change *during* an opcode.
2016-04-02 19:15:07 +03:00
Lior Halphon
0787e5b271 Debugger's next command can now exit a function 2016-04-02 19:06:43 +03:00
Lior Halphon
b7555e9976 Correct OAM interrupt behavior 2016-04-02 16:29:27 +03:00
Lior Halphon
da00e240e5 Correct read of IF and write of IE 2016-04-02 16:29:02 +03:00
Lior Halphon
a3dd58c92c Fixed inaccurate LCD controller behavior that caused Pokémon Pinball to freeze. 2016-04-01 21:27:16 +03:00
Lior Halphon
3344480de7 Vblank now returns a white screen if LCD is off, instead of keeping the buffer unmodified. 2016-04-01 21:27:16 +03:00
Lior Halphon
e822f17bb7 Wrapping external RAM banking support. Required for Pokémon Pinball's saves. 2016-04-01 21:27:16 +03:00
Lior Halphon
f1e9623371 Initial public commit 2016-04-01 21:27:01 +03:00