Commit Graph

576 Commits

Author SHA1 Message Date
Jeffrey Pfau f55d085162 Change log handler API 2014-07-22 22:34:08 -07:00
Jeffrey Pfau 2ce9806de5 Fix ability to make audio buffers as big as they initially were 2014-07-22 02:33:45 -07:00
Jeffrey Pfau d1eda4250d Thread pausing refining 2014-07-22 01:52:16 -07:00
Jeffrey Pfau 6e727db553 Set buffer size to 512 samples in the SDL/GL port 2014-07-21 00:29:38 -07:00
Jeffrey Pfau e527220398 Ability to resize internal sound buffers 2014-07-21 00:14:48 -07:00
Jeffrey Pfau eabac4c413 Variable FPS target 2014-07-20 23:45:30 -07:00
Jeffrey Pfau b14f22191c Function for calculating audio rate for target FPS 2014-07-20 23:24:02 -07:00
Jeffrey Pfau e77238e5ef Fix typos in savestate format documentation 2014-07-20 15:53:37 -07:00
Jeffrey Pfau 3915158c96 Update GPIO for serialization 2014-07-20 15:53:15 -07:00
Jeffrey Pfau 7a0f86ae99 Serialize ROM CRC32 for error checking 2014-07-20 15:10:59 -07:00
Jeffrey Pfau b4d6d11d19 Add ability to resume recording as soon as a movie ends 2014-07-20 03:14:55 -07:00
Jeffrey Pfau 74dae5033b Rewrite rr to be streaming-only 2014-07-20 02:50:43 -07:00
Jeffrey Pfau a95e2c06b7 Remove unused function 2014-07-20 01:40:05 -07:00
Jeffrey Pfau 16cf389986 Make writing to RO mapped memory perform COW 2014-07-20 01:36:18 -07:00
Jeffrey Pfau 7d4f1fb661 Fix loading too many states from a file 2014-07-19 17:54:29 -07:00
Jeffrey Pfau 7172e6428c Create concept of state directory 2014-07-19 17:48:37 -07:00
Jeffrey Pfau e8a78c9547 Very basic movie saving/loading 2014-07-19 17:38:25 -07:00
Jeffrey Pfau c6cd179101 Fix scanline rendering when parameters change mid-scanline 2014-07-19 15:59:27 -07:00
Jeffrey Pfau 3202811e41 Be more rigorous when reseting 2014-07-19 14:34:24 -07:00
Jeffrey Pfau 6456a88669 Reset memory when reseting the board (fixes #94) 2014-07-19 04:13:25 -07:00
Jeffrey Pfau 14636f5b8a Beginning of rerecording code, ability to record/replay from a savegame 2014-07-19 00:09:18 -07:00
Jeffrey Pfau c50bd95258 Fix naming of savegames from files with no . 2014-07-18 00:53:08 -07:00
Jeffrey Pfau 5a0247ac78 Place save files in directories when loading in dirmode 2014-07-18 00:52:53 -07:00
Jeffrey Pfau a14ce5c815 Add some missing cleanup 2014-07-18 00:52:22 -07:00
Jeffrey Pfau 2367abe67d Don't crash if no ROM is loaded 2014-07-17 02:55:13 -07:00
Jeffrey Pfau d2272ba9ba Support reading from ZIPs 2014-07-17 02:45:17 -07:00
Jeffrey Pfau ee5c918ff2 Directory mode for loading the first ROM in a directory, still a bit buggy 2014-07-17 00:53:17 -07:00
Jeffrey Pfau 73425e80b5 Move VFile to vfs.h and add VDirs 2014-07-17 00:52:21 -07:00
Jeffrey Pfau 80c61379a0 Clean up GBAThread variables 2014-07-16 23:53:11 -07:00
Jeffrey Pfau e53135a7b9 Clean up command line args 2014-07-16 23:47:47 -07:00
Jeffrey Pfau 42484bbcc3 Allow save file to be specified externally 2014-07-16 02:57:04 -07:00
Jeffrey Pfau 0584c19229 Remove declaration for unimplemented function 2014-07-16 02:09:19 -07:00
Jeffrey Pfau f1f55cea47 Use VFiles for all file operations 2014-07-16 02:08:54 -07:00
Jeffrey Pfau 377d8e60a7 VFiles for abstract file operations, used at first in patches 2014-07-16 01:31:10 -07:00
Jeffrey Pfau d8654f3b88 Use stdbool for readability 2014-07-16 01:02:34 -07:00
Jeffrey Pfau fce2fb9252 Move flags and masks into defines to avoid making enums with values that are too large 2014-07-15 23:38:44 -07:00
Jeffrey Pfau 6716b13621 Ability to reset emulator while running 2014-07-15 00:01:35 -07:00
Jeffrey Pfau 939c349533 Slightly more accurate waitstate emulation 2014-07-13 22:21:37 -07:00
Jeffrey Pfau 6c1476403e Reorder log levels so more important ones have lower numbers 2014-07-10 01:12:25 -07:00
Jeffrey Pfau b810e38bd7 Fix a compiler warning in SIO code 2014-07-10 01:05:28 -07:00
Jeffrey Pfau d56dec79e7 Fix function prototype for GBAThreadInterrupt 2014-07-10 01:03:02 -07:00
Jeffrey Pfau c2fc2dbac3 Remove unused variable 2014-07-10 01:02:13 -07:00
Jeffrey Pfau 55977796f3 Move UNUSED macro to common.h 2014-07-10 01:00:38 -07:00
Jeffrey Pfau 642cbf3429 Hopefully fix edge cases for windows for real this time (fixes #88) 2014-07-09 23:09:28 -07:00
Jeffrey Pfau b762ce41a0 Only take slow mosaic path when mosiac is actually in play 2014-07-09 23:01:03 -07:00
Jeffrey Pfau e6863a6cc5 Fix mosaic drawing of 256-color mirrored background tiles 2014-07-09 22:49:05 -07:00
Jeffrey Pfau c3136b914e Fix sampling order of sound channel 3 2014-07-09 03:53:23 -07:00
Jeffrey Pfau 3e827c24a8 Fix 8-bit IO writes on SOUND3CNT_X 2014-07-09 03:53:23 -07:00
Jeffrey Pfau 78bd884a05 Fix setting window sizes to 0xFFFF from actually making a window 2014-07-09 03:53:23 -07:00
Jeffrey Pfau f1b4e7039f Fix sprites whose tiles go out of bounds 2014-07-09 01:32:02 -07:00
Jeffrey Pfau 79cfc4fd0a Make GBAThreadInterrupt work properly with paused threads again 2014-07-09 00:36:04 -07:00
Jeffrey Pfau 548793e551 Remove audio processing loop now that there is an event processing loop 2014-07-08 22:00:53 -07:00
Jeffrey Pfau 83e16d56c0 Fix a case where deserializing the FIFO may not restore up to three bytes 2014-07-08 21:56:03 -07:00
Jeffrey Pfau a62a932282 Ensure interrupting the GBA thread actually gets to a safe point to read from the thread 2014-07-08 00:04:38 -07:00
Jeffrey Pfau 8c9790bb3b Add audio FIFOs to savestates 2014-07-08 00:02:39 -07:00
Jeffrey Pfau 6bf0e704d2 Allow for savestates to be loaded between BIOS versions so long as they aren't in BIOS code 2014-07-07 22:59:24 -07:00
Jeffrey Pfau a450b0470a UPS patch loading support 2014-07-07 01:54:40 -07:00
Jeffrey Pfau f420232bbf IPS patch loading support 2014-07-06 23:39:27 -07:00
Jeffrey Pfau ced5220975 Out of bounds start coordinates are treated as 0 for windows (fixes #82) 2014-07-05 14:40:15 -07:00
Jeffrey Pfau 7142a0f820 Fix WININ priority trampling over the active windows (fixes #75) 2014-07-05 14:34:10 -07:00
Jeffrey Pfau ae12dd907c Reduce the code size of division by zero a bit 2014-07-05 13:55:36 -07:00
Jeffrey Pfau 2fd9ab1197 Emulate division by zero edge cases (fixes #80) 2014-07-05 05:19:58 -07:00
Jeffrey Pfau 26c33b18e1 Properly do bounds checking in CpuSet and CpuFastSet (fixes #81) 2014-07-05 03:52:07 -07:00
Jeffrey Pfau 34145543f2 Remove redundant checks that are in the BIOS code already 2014-07-05 01:03:04 -07:00
Jeffrey Pfau dea143829a Prevent lr from being trampled in the middle of long-running CpuSet 2014-07-05 01:01:29 -07:00
Jeffrey Pfau 678c5465ff Add (currently undocumented) command line flag for setting logging level 2014-07-04 18:43:07 -07:00
Jeffrey Pfau 80d1764e6c Save some registers we were overwriting in IntrWait 2014-07-04 18:41:13 -07:00
Jeffrey Pfau d6a28c8a6e Log SWIs in debug 2014-07-04 18:17:34 -07:00
Jeffrey Pfau 599537a41b Fix and optimize CpuSet and CpuFastSet a bit 2014-07-04 17:48:38 -07:00
Jeffrey Pfau fde6515a56 Implement CpuSet/CpuFastSet in assembly (fixes #31 and #76) 2014-07-03 03:51:53 -07:00
Jeffrey Pfau e5245b6cbb Reset timers when enabling them (fixes #78) 2014-07-02 00:48:20 -07:00
Jeffrey Pfau 2693f9d09b Implement high VRAM mirroring for writes 2014-07-01 00:26:57 -07:00
Jeffrey Pfau a7eced1324 Fix stub debugger entering 2014-04-26 18:25:45 -07:00
Jeffrey Pfau 89ccb41b03 Start moving command line parsing into a separate file 2014-04-20 04:06:44 -07:00
Jeffrey Pfau 9bf77f6653 Call ARMDeinit 2014-04-20 00:52:37 -07:00
Jeffrey Pfau 0f68dbc832 Redo component model/type punning 2014-04-20 00:19:55 -07:00
Jeffrey Pfau c0eb7c81f7 Remove ARMMemory and ARMBoard shims 2014-04-19 18:14:17 -07:00
Jeffrey Pfau 775e417cc6 Move halting functionality out of GBAHalt 2014-04-16 23:05:44 -07:00
Jeffrey Pfau ecb1939ff1 Move common headers to common.h, remove util and debugger from being first class include directories 2014-04-02 23:51:35 -07:00
Jeffrey Pfau 73d32e7cc7 Initialize some SIO variables properly 2014-04-02 23:16:37 -07:00
Jeffrey Pfau 4c1014685f Fix some valgrind errors 2014-03-29 22:58:58 -07:00
Jeffrey Pfau 2cd4bb3cff Initialize memory->eventDiff; fixes a valgrind warning 2014-03-29 22:58:58 -07:00
Jeffrey Pfau 8f241e2cfb Partially implement SOUNDBIAS 2014-03-29 22:53:56 -07:00
Jeffrey Pfau 683e90fa06 Remove special treatment for DISPSTAT 2014-03-29 22:53:52 -07:00
Jeffrey Pfau 4d8a00c180 Add thread-interrupt functions for having multiple threads that want to pause the GBA thread 2014-02-10 23:59:07 -08:00
Jeffrey Pfau eb5580f719 Make DriverSet setting read in normal driver 2014-02-10 01:42:44 -08:00
Jeffrey Pfau 6451aeaefc Support normal mode drivers 2014-02-10 01:42:44 -08:00
Jeffrey Pfau 764b3fce10 Fix SIO loading of a driver that is for the current mode 2014-02-10 01:42:44 -08:00
Jeffrey Pfau 9c8e5fc222 SIO registers can now be read and written properly 2014-02-10 01:42:40 -08:00
Jeffrey Pfau 3422527d5a Read SIO registers from sio field 2014-02-10 01:41:20 -08:00
Jeffrey Pfau a2a3f317b5 Make driver loading signal failure, and fix case where setting a driver can cause a null pointer deref 2014-02-05 01:50:01 -08:00
Jeffrey Pfau 924c6cf5a6 Clarify some function names and add more essenital SIO architecture 2014-02-05 01:03:34 -08:00
Jeffrey Pfau e5ee1aa07f Fill out SIO driver infrastructure 2014-02-04 01:28:16 -08:00
Jeffrey Pfau 70e1661342 Begin SIO 2014-02-04 00:39:55 -08:00
Jeffrey Pfau 23e0737649 Add missing GBA_KEY_NONE 2014-02-03 22:56:24 -08:00
Jeffrey Pfau 5a17030c65 Automatically break into the debugger if it was provided at launch time 2014-02-03 03:48:39 -08:00
Jeffrey Pfau 285b94b66a Add thread-safe function for telling if the GBA thread has started 2014-02-03 03:48:39 -08:00
Jeffrey Pfau 0f6523941c Null out threadContext->gba when shutting down 2014-02-03 03:48:39 -08:00
Jeffrey Pfau 56c51181e1 Debugger can get detached during a callback, clean up appropriately 2014-02-02 03:59:03 -08:00
Jeffrey Pfau 0c332d972b Add ability to detach debugger 2014-02-01 20:49:12 -08:00
Jeffrey Pfau cc53b06cae Implement OBJWIN for OBJs 2014-02-01 16:58:55 -08:00
Jeffrey Pfau 69d188668d Fix debugging shim to work even if there is no GBA struct at the moment 2014-02-01 16:27:27 -08:00
Jeffrey Pfau b9f8955890 Add debugging logging interface 2014-02-01 16:26:48 -08:00
Jeffrey Pfau 6616ca9111 Always enable the debugger framework 2014-02-01 01:14:41 -08:00
Jeffrey Pfau 5bbf7f2308 Separate out CLI debugger from debugging interface 2014-02-01 00:47:36 -08:00
Jeffrey Pfau 6822a0d770 Start separating out debugger logic 2014-02-01 00:27:53 -08:00
Jeffrey Pfau 6ad2b673b1 Omit sprites that are off-screen vertically from OAM calculations 2014-01-31 22:40:21 -08:00
Jeffrey Pfau 4255d10f08 Squelch compiler warning about type punning 2014-01-31 02:29:27 -08:00
Jeffrey Pfau d6a4fbd25a Squelch a compiler warning about an uninitialized variable 2014-01-31 02:27:17 -08:00
Jeffrey Pfau f8449482de Squelch warnings in software renderer 2014-01-31 02:17:41 -08:00
Jeffrey Pfau 2122ff1f43 Change override structure to not use multi-byte char literals 2014-01-31 02:17:41 -08:00
Jeffrey Pfau 95cf2909c1 Unblock on audio when closing thread 2014-01-30 04:05:53 -08:00
Jeffrey Pfau f0481d9413 Enable piping through BIOS 2014-01-29 23:13:44 -08:00
Jeffrey Pfau 79d4011650 Initialize OAM 2014-01-29 23:02:12 -08:00
Jeffrey Pfau 13d3146d0b Add LOG_FATAL 2014-01-29 22:49:34 -08:00
Jeffrey Pfau 70afe23fe4 Add log handling 2014-01-29 22:49:24 -08:00
Jeffrey Pfau 5fde0d8c35 GBAAudioResampleNN returns how many (destination) samples were read 2014-01-29 22:49:09 -08:00
Jeffrey Pfau a79a592c1e Move audio resampling out of SDL code 2014-01-29 22:48:38 -08:00
Jeffrey Pfau 2e2ca19220 Add GBAThreadEnd function for manually shutting down the GBA thread 2014-01-29 22:48:38 -08:00
Jeffrey Pfau c8b04a2ca5 Ensure rewind buffer is null if we are not enabling rewinding 2014-01-29 22:48:38 -08:00
Jeffrey Pfau 48a3522fbc Move inline struct definitions out of place for C++ compatibility 2014-01-29 22:48:19 -08:00
Jeffrey Pfau a72c77a3df Update DMA timings, and higher priority DMAs always take precedence, regardless of timing 2014-01-28 21:56:14 -08:00
Jeffrey Pfau ef66e4a8c7 Only unpause from state operations when we paused manually 2014-01-26 23:17:17 -08:00
Jeffrey Pfau c3a5fb497a Fix rewind buffer sizing itself wrong 2014-01-26 12:47:47 -08:00
Jeffrey Pfau 705b6e9b13 Simple rewind buffer 2014-01-26 02:50:28 -08:00
Jeffrey Pfau 9c2c93220b Implement most of audio serialization 2014-01-25 18:01:31 -08:00
Jeffrey Pfau 668c4f68b7 Fix OAM deserialization 2014-01-25 15:06:28 -08:00
Jeffrey Pfau 941c629f8b Serialize timers and DMA state 2014-01-25 15:02:55 -08:00
Jeffrey Pfau 408d39a297 Move mode 0 into macro-land so that much of the logic can be inlined 2014-01-25 14:47:21 -08:00
Jeffrey Pfau 709269ee5c Fix initial DMA count 2014-01-23 20:59:15 -08:00
Jeffrey Pfau 1e0f400091 Precompute some parameters in mode 0 2014-01-22 01:39:48 -08:00
Jeffrey Pfau a8921116dc Preprocess OBJ heights 2014-01-21 23:49:10 -08:00
Jeffrey Pfau 04c3b61d1c Basic OAM dirtying 2014-01-21 23:41:41 -08:00
Jeffrey Pfau f08e466fce Partially unroll video clearing loop 2014-01-21 22:37:08 -08:00
Jeffrey Pfau e432c66249 Fix some uninitialized values 2014-01-21 22:36:40 -08:00
Jeffrey Pfau 86bc662d9f Support proper DMA timings and priority 2014-01-21 21:07:15 -08:00
Jeffrey Pfau 3c100a5e31 Prevent bank switching when reloading CPU state 2014-01-20 23:42:07 -08:00
Jeffrey Pfau dccde662c6 Minor cleanup 2014-01-20 18:01:49 -08:00
Jeffrey Pfau 728f6481d6 Abort in invalid memory instead of SEGVing 2014-01-20 17:46:17 -08:00
Jeffrey Pfau aa99196700 Smarter I/O serialization 2014-01-20 17:42:30 -08:00
Jeffrey Pfau 872c3ceba3 Savestate game checks 2014-01-20 17:18:12 -08:00
Jeffrey Pfau 26c1fbd48f Add frame advance 2014-01-20 16:39:46 -08:00
Jeffrey Pfau 35a5e83465 Unified DISPSTAT representation 2014-01-20 14:18:24 -08:00
Jeffrey Pfau 5a1a04a353 Add basic IO and video serialization 2014-01-20 03:05:54 -08:00
Jeffrey Pfau 9f28b1ec73 Add missing version magic 2014-01-20 03:05:31 -08:00
Jeffrey Pfau a5d8be30d8 Don't block any signals on the run thread 2014-01-20 02:33:40 -08:00
Jeffrey Pfau 1f8c1bcdfa Fix signal handling for debugger 2014-01-19 23:42:34 -08:00
Jeffrey Pfau 4e98546cd6 Add missing header guard 2014-01-19 03:38:18 -08:00
Jeffrey Pfau daf12994db Start savestates 2014-01-19 01:59:35 -08:00
Jeffrey Pfau fbf8edf19b Create savestate format 2014-01-19 00:32:49 -08:00