Commit Graph

849 Commits

Author SHA1 Message Date
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 8e5b806cdd Have board re-read CPSR when it is modified by MSR 2014-01-27 00:21: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 b1a648e46e Don't sync on audio and video at the same time--this can cause audio skipping 2014-01-25 18:08:33 -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 0e379fed41 Fix audio buffer reading in SDL audio 2014-01-23 20:59:15 -08:00
Jeffrey Pfau 709269ee5c Fix initial DMA count 2014-01-23 20:59:15 -08:00
Jeffrey Pfau 968dbe55db Properly sync to frame only when not in turbo 2014-01-22 03:25:09 -08:00
Jeffrey Pfau 1e0f400091 Precompute some parameters in mode 0 2014-01-22 01:39:48 -08:00
Jeffrey Pfau 7132c873e3 Make viewport size not-hardcoded 2014-01-21 23:51:52 -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 2553b96e9b Skip table lookup in ARMStep if not needed 2014-01-21 23:15:51 -08:00
Jeffrey Pfau f08e466fce Partially unroll video clearing loop 2014-01-21 22:37:08 -08:00
Jeffrey Pfau 52808da265 Inline CPU stepping 2014-01-21 22:36:40 -08:00
Jeffrey Pfau f8de62ba71 Null out frameCallback on perf-main 2014-01-21 22:36:40 -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 98c8b42b0f Slow down audio slightly to match target FPS 2014-01-20 20:02:44 -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 e7d4f3ae8a Fix MSR with immediate 2014-01-20 15:40:56 -08:00
Jeffrey Pfau 12f4ff6cbb Fix ARM_ROR 2014-01-20 15:40:44 -08:00
Jeffrey Pfau 2db6d27496 Implement SWP, SWPB 2014-01-20 15:19:52 -08:00
Jeffrey Pfau fede211874 Remove checks for ARM writeback operations that fail on real hardware 2014-01-20 15:10:41 -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 f2b031467f Fix non-debugger build 2014-01-19 01:24:29 -08:00
Jeffrey Pfau 7b682dd7c5 Break into debugger with F11 2014-01-19 00:37:53 -08:00
Jeffrey Pfau fbf8edf19b Create savestate format 2014-01-19 00:32:49 -08:00
Jeffrey Pfau a969d70de3 Handle illegal and stub opcodes separately 2014-01-18 00:39:51 -08:00
Jeffrey Pfau ce4d0b5203 Checksum BIOS 2014-01-18 00:17:58 -08:00
Jeffrey Pfau 94cc48faf1 Account for floating point error in resampling 2014-01-16 02:12:35 -08:00
Jeffrey Pfau 4e88cc86d9 Have circle buffer work when memory is misaligned 2014-01-16 01:56:17 -08:00
Jeffrey Pfau 39025dedff Ensure that video buffers are flushed to the GPU before unlocking the mutex 2014-01-16 01:05:32 -08:00
Jeffrey Pfau 48e89fb5eb Fix buffer size in SDL audio 2014-01-16 00:27:15 -08:00
Jeffrey Pfau 5758964617 Unlock mutex before swapping buffers 2014-01-16 00:26:59 -08:00
Jeffrey Pfau 3837213f94 Support Win32 threads on Vista and higher 2014-01-15 23:46:47 -08:00
Jeffrey Pfau 2b558a5a65 Rearchitect audio copying to make it cleaner and more atomic 2014-01-15 03:43:56 -08:00
Jeffrey Pfau b8167f55b1 Create Windows and POSIX platform directories 2014-01-15 01:28:30 -08:00
Jeffrey Pfau 270c1a35d7 Fix mappedMemoryFree on *nix 2014-01-15 00:34:45 -08:00
Jeffrey Pfau dd1f1bc79e Initial support for Windows 2014-01-15 00:32:54 -08:00
Jeffrey Pfau 003db6019c Fix _mix for 16-bit color 2014-01-15 00:32:53 -08:00
Jeffrey Pfau d53b1c784f Mirror SRAM across 0x0F000000 2013-11-23 16:22:26 -08:00
Jeffrey Pfau bc03872ab5 Add FireRed/LeafGreen to the override list 2013-11-18 00:34:54 -08:00
Jeffrey Pfau e6eea94626 Revert "Move halting code out from below the ARM emulator"
This reverts commit 3b74b61862.
2013-11-14 23:17:14 -08:00
Jeffrey Pfau 0bc5c4a69e Fix color blending in 16-bit 5-5-5 mode 2013-11-14 23:09:13 -08:00
Jeffrey Pfau 55c6103116 Remove "finalized" flag in favor of stricter sorting 2013-11-14 00:33:34 -08:00
Jeffrey Pfau a2a306bb03 Significantly optimize 16-bit color mixing 2013-11-14 00:19:18 -08:00
Jeffrey Pfau 620adbd577 Remove extra free in SDL code 2013-11-11 19:40:37 -08:00
Jeffrey Pfau f8d5842240 Implement mosaic for mode 0 with 256-color tiles 2013-11-10 23:09:50 -08:00
Jeffrey Pfau c2658ce7a1 Initialize mosaic to 0 2013-11-10 22:53:12 -08:00
Jeffrey Pfau 7d526e97f4 Support narrow windows 2013-11-10 22:43:57 -08:00
Jeffrey Pfau 53dd260b3e Fast 32-to-16-bit memory conversion routine on ARM 2013-11-09 13:30:25 -08:00
Jeffrey Pfau 95b6cc9b00 Initialize halted 2013-11-09 13:29:08 -08:00
Jeffrey Pfau f43c82e79e Preprocess instead of post-process 5-6-5 color 2013-11-07 02:57:22 -08:00
Jeffrey Pfau f09e44062f Use gettimeofday for perf-main instead of clock_gettime 2013-11-06 22:20:29 -08:00
Jeffrey Pfau 2a683aaf99 Preselect palettes for sprites 2013-11-06 00:00:42 -08:00
Jeffrey Pfau fd6e9cb311 Use unsigned instead of uint16_t in sprite drawing 2013-11-05 23:25:44 -08:00
Jeffrey Pfau e3dac089e7 Small refactor of _composite 2013-11-05 21:57:24 -08:00
Jeffrey Pfau 818ce96d0d Fix mixing colors on 16-bit 2013-11-05 04:13:49 -08:00
Jeffrey Pfau 9253eeba23 Optimize range check in mode 2 rendering 2013-11-05 01:49:29 -08:00
Jeffrey Pfau 53515b41cd Fix warnings in CircleBuffer 2013-11-05 01:20:46 -08:00
Jeffrey Pfau 2c826e208c Optimize palette access 2013-11-05 00:19:42 -08:00
Jeffrey Pfau 7d688ceb5a Use unsigned instead of color_t where size is irrelevant 2013-11-04 21:47:44 -08:00
Jeffrey Pfau 3005c6c9fb Add per-second perf updating 2013-11-04 21:07:41 -08:00
Jeffrey Pfau 3b74b61862 Move halting code out from below the ARM emulator 2013-11-03 23:26:10 -08:00
Jeffrey Pfau 66ee98513f Pass pointers instead of offsets to composite 2013-11-03 01:00:56 -07:00
Jeffrey Pfau 32e0591fd0 Early finalization if possible 2013-11-02 22:36:07 -07:00
Jeffrey Pfau 53a52d8cf8 Call setActiveRegion with the right address 2013-11-02 03:56:13 -07:00
Jeffrey Pfau e0eefa24da Hack to guess when blending should be disabled 2013-11-01 23:50:13 -07:00
Jeffrey Pfau a87d30ed9f Fix channel 1 - 4 volume 2013-10-29 21:12:26 -07:00
Jeffrey Pfau 9fd181dba9 Fix potential issues with sound playing when they shouldn't, or with the wrong volume 2013-10-29 02:19:58 -07:00
Jeffrey Pfau 8902635e3a Fix bugs in OBJ mosaic 2013-10-27 21:58:37 -07:00
Jeffrey Pfau 09888a8852 Add performance-monitoring main thread 2013-10-27 05:16:07 -07:00
Jeffrey Pfau f5a3fd7c7f Rearrange _composite to optimize for common cases first 2013-10-27 04:51:14 -07:00
Jeffrey Pfau 6e40c7ec29 Replace bit-packed map data with flags 2013-10-27 04:51:09 -07:00
Jeffrey Pfau 7cb183a8be Only update active region if necessary 2013-10-27 03:44:38 -07:00
Jeffrey Pfau 775f9db546 Begin OBJ mosaic 2013-10-27 03:12:55 -07:00
Jeffrey Pfau 3b0ee473d3 Refactor sprite code in preparation of implementing OBJ mosaic 2013-10-27 02:39:35 -07:00
Jeffrey Pfau 72ef1643c7 Rotate 16-bit without using AND 2013-10-26 16:40:31 -07:00
Jeffrey Pfau 0155d9c028 Remove SPRITE_DRAW_PIXEL_*_VARIANT 2013-10-26 14:56:35 -07:00
Jeffrey Pfau ffef3d2486 Preemptively mark the envelope as dead in some cases 2013-10-26 04:23:08 -07:00
Jeffrey Pfau 70365782de Reorganize audio code so as to only update channels when audible 2013-10-26 04:08:18 -07:00
Jeffrey Pfau cd448324c5 Fixed the first load from SRAM not returning a value 2013-10-26 03:04:21 -07:00
Jeffrey Pfau 9c922862e8 Fix mode 3 in 16-bit color 2013-10-26 02:39:45 -07:00
Jeffrey Pfau 7f17be5ead Support WIN0/1 in modes 2 - 5 2013-10-26 02:33:29 -07:00
Jeffrey Pfau 6376a1ff7f Support OBJWIN in mode 4 2013-10-26 02:26:08 -07:00
Jeffrey Pfau 38116f0ead Rearrange calculation to shave off some more time 2013-10-26 01:43:06 -07:00
Jeffrey Pfau 71b5473563 Fix white on 5-6-5 color 2013-10-26 01:32:27 -07:00
Jeffrey Pfau 915b04dded Add support for PowerPC to the memory and CPU interfaces 2013-10-26 01:53:13 -04:00
Jeffrey Pfau 07115ca655 Ensure thread-local storage is created before it is needed 2013-10-25 03:15:31 -07:00
Jeffrey Pfau d5291eb1b6 Remove unnecessary sprite post-processing passes 2013-10-25 00:27:42 -07:00
Jeffrey Pfau c12eca835f Don't busy-wait if the emulator is paused 2013-10-24 01:09:01 -07:00
Jeffrey Pfau 17ccb35c33 Small, trivial optimizations in GBAVideoSoftwareRendererDrawScanline 2013-10-24 00:54:51 -07:00
Jeffrey Pfau 6eafbc6331 Tear out counter-productive optimization 2013-10-24 00:21:59 -07:00
Jeffrey Pfau 4b9e9f84be Start implementing mosaic with a half-baked mode 0 implementation 2013-10-23 01:17:53 -07:00
Jeffrey Pfau 9358cbd690 Initialize rumble callback to null 2013-10-22 00:26:09 -07:00
Jeffrey Pfau 709434ce9f Add Drill Dozer to the override list 2013-10-22 00:18:56 -07:00
Jeffrey Pfau e74b0125a7 Expose rumble 2013-10-21 21:50:29 -07:00
Jeffrey Pfau 2fde9738be Add more overrides 2013-10-21 21:42:28 -07:00
Jeffrey Pfau 0458184a5e Implement gyro 2013-10-21 02:54:52 -07:00
Jeffrey Pfau c77ed8c11e Only reset save type manually for flash 2013-10-21 01:28:41 -07:00
Jeffrey Pfau fcaa0eb066 Implement RTC 2013-10-20 21:39:47 -07:00
Jeffrey Pfau 7e5eada69b Mark more registers as safe to read 2013-10-20 18:14:04 -07:00
Jeffrey Pfau ddc1034d42 Start GPIO 2013-10-20 18:08:18 -07:00
Jeffrey Pfau 228b6aaa01 Remove obsolete errno interface 2013-10-20 16:48:29 -07:00
Jeffrey Pfau 4429435071 Implement sound length 2013-10-20 16:33:37 -07:00
Jeffrey Pfau d6e466dda1 Fix pitch of channel 3 2013-10-20 16:04:22 -07:00
Jeffrey Pfau 76266a4ee7 Move mode 0 loops out of macros 2013-10-20 12:36:57 -07:00
Jeffrey Pfau 76f02be757 Ability to disable sound 2013-10-20 02:18:09 -07:00
Jeffrey Pfau ca80e5f32b Add l/r channel scaling 2013-10-20 02:10:54 -07:00
Jeffrey Pfau cc8eeb4353 Start audio channel 3 2013-10-19 03:04:45 -07:00
Jeffrey Pfau cfb0115c0e Commit unreadable sound memory for the sake of bitewise assignment 2013-10-19 00:49:20 -07:00
Jeffrey Pfau 4a0a462673 Clean up channel 1 2013-10-19 00:48:57 -07:00
Jeffrey Pfau 003a537dc7 Implement most of channels 1 and 2 2013-10-18 23:12:14 -07:00
Jeffrey Pfau 79d483d002 Fix audio loudness issues 2013-10-18 19:44:55 -07:00
Jeffrey Pfau 04f99bd358 Prescale audio 2013-10-18 09:41:13 -07:00
Jeffrey Pfau 565ee43bb2 Fix video cycle timing to match audio timing fix 2013-10-18 09:41:01 -07:00
Jeffrey Pfau 093c86c943 Add channel 4 envelope, fix audio timing 2013-10-18 09:33:07 -07:00
Jeffrey Pfau a55b4dc87f Fix valgrind-found uninitialized values 2013-10-18 08:42:15 -07:00
Jeffrey Pfau 3acabb01c8 Conglomerate save data initialization to ensure the struct is always initialized 2013-10-18 08:36:05 -07:00
Jeffrey Pfau d99bf7fdff Rename GBAAudioWave to GBAAudioEnvelope, add fields for internal state 2013-10-18 08:10:10 -07:00
Jeffrey Pfau 7393351e27 Start implementing channel 4 2013-10-18 01:21:44 -07:00
Jeffrey Pfau eac9dfb325 Start filling in audio framework 2013-10-18 01:21:22 -07:00
Jeffrey Pfau ea41ef7ae6 Fix main thread stalling when starting a game 2013-10-17 23:10:16 -07:00
Jeffrey Pfau 62d941a979 Plumb through filename for checking overrides 2013-10-17 01:07:08 -07:00
Jeffrey Pfau 451c16f4cb Fix overwriting DISPSTAT with fixed values for the lower bits 2013-10-16 22:23:32 -07:00
Jeffrey Pfau 3edb2da58d Make platform directory for ports 2013-10-16 01:35:49 -07:00
Jeffrey Pfau a1fb90635f Functions for explicitly pausing and unpausing 2013-10-16 00:52:52 -07:00
Jeffrey Pfau a107243c7a Support pausing 2013-10-16 00:46:09 -07:00
Jeffrey Pfau 8e43ffed90 Adjust scaling/rotation state for backgrounds regardless of if they were actually drawn 2013-10-15 22:58:47 -07:00
Jeffrey Pfau f4a1e994d6 Mark BG*CNT registers as safe to read 2013-10-15 21:55:28 -07:00
Jeffrey Pfau 0120ea93a5 Sprites shouldn't be blended if the current window has blending disabled 2013-10-15 21:44:47 -07:00
Jeffrey Pfau ce33adf5e4 Don't wait on frame swap when we aren't doing frame synchronization in the first place 2013-10-15 02:34:37 -07:00
Jeffrey Pfau 1b5dd352af Sprites can only be color variants when they aren't forced semitransparent 2013-10-15 02:09:23 -07:00
Jeffrey Pfau 1b54f50daa Allow sprites to be ordered by priority in addition to OAM order 2013-10-15 01:45:49 -07:00
Jeffrey Pfau ee344f0dca Optimize and fix IntrWait, make sure that SVC doesn't trample its input register r0 2013-10-15 00:50:07 -07:00
Jeffrey Pfau f90b01b95d Fix setting privilege mode when entering SVC 2013-10-14 22:32:52 -07:00
Jeffrey Pfau 9430040cb3 Check for some invalid memory regions before performing BIOS decompression routines 2013-10-13 20:12:30 -07:00
Jeffrey Pfau 67007ee002 Fix 8-bit VRAM writes 2013-10-13 15:23:39 -07:00
Jeffrey Pfau ee44e2ac89 Add Super Mario Bros. Advance 4 to the override list 2013-10-13 15:06:32 -07:00
Jeffrey Pfau 187687403c Fix EEPROM initialization 2013-10-13 12:14:32 -07:00
Jeffrey Pfau a20117ec14 Fix Huffman destinations 2013-10-13 12:14:16 -07:00
Jeffrey Pfau 9d08997fdc Fix Huffman with tree sizes >127 2013-10-13 03:25:46 -07:00
Jeffrey Pfau 3ca0a97ca1 Prepopulate RCNT 2013-10-12 16:37:10 -07:00
Jeffrey Pfau d8778cf516 Implement Huffman 2013-10-12 13:32:23 -07:00
Jeffrey Pfau 973abb7b94 Uncomment audio initialization line 2013-10-12 02:29:24 -07:00
Jeffrey Pfau 51ec1c1099 Bring SDL main to parity with GL main 2013-10-12 02:13:26 -07:00
Jeffrey Pfau cf298474bc Use 5_6_5 with SDL 2013-10-12 02:11:57 -07:00
Jeffrey Pfau 25cc40f3e1 Bring Raspberry Pi main to parity with GL main 2013-10-12 01:18:34 -07:00
Jeffrey Pfau 290b64b171 Compile-time flag for disabling debugger 2013-10-12 00:34:59 -07:00
Jeffrey Pfau b3dc065144 Read DISPCNT, fix video register writing 2013-10-11 22:04:41 -07:00
Jeffrey Pfau de39f23a1b Add ROM override checking, seed with BPEE 2013-10-11 22:03:27 -07:00
Jeffrey Pfau 58611facf1 Fix OBJWIN blending modifications on BG modes 0 - 2 2013-10-11 00:43:01 -07:00
Jeffrey Pfau cff77a3a81 Remove extraneous macros by adding a palette variable 2013-10-10 23:33:22 -07:00
Jeffrey Pfau e789b324dc Refactor BREAK_WINDOW into _breakWindow, fix bug cleaning up extra windows 2013-10-10 01:40:49 -07:00
Jeffrey Pfau 2ef64ede02 Basic tab-completion 2013-10-10 01:05:25 -07:00
Jeffrey Pfau 01d8569262 Remove reliance on linenoise 2013-10-10 00:29:41 -07:00
Jeffrey Pfau c19d1117f1 Add timings to CpuSet and CpuFastSet 2013-10-09 01:57:53 -07:00
Jeffrey Pfau 09a0f95ed4 Actually use GBATestIRQ 2013-10-09 01:56:59 -07:00
Jeffrey Pfau 6906df95e2 VCOUNT is not properly reset on wrap 2013-10-09 01:09:09 -07:00
Jeffrey Pfau c3a7d87214 Add missing variable 2013-10-09 00:44:44 -07:00
Jeffrey Pfau 9698531702 Clean up thread starting, stopping and sound 2013-10-09 00:44:31 -07:00
Jeffrey Pfau 2f9bcf63b7 Clean up audio sync code 2013-10-08 22:36:55 -07:00
Jeffrey Pfau 84ad94b85e Support loading BIOS 2013-10-08 22:36:19 -07:00
Jeffrey Pfau 68d85ab9b7 Implement VRAM load/store8 2013-10-08 21:43:43 -07:00
Jeffrey Pfau 3e3bb58ae5 Minor timing fixes 2013-10-08 02:10:43 -07:00
Jeffrey Pfau 40a0a0eb11 Fix reading 32-bit unaligned IO registers 2013-10-06 12:28:48 -07:00
Jeffrey Pfau 45501658b5 Sync to audio by default 2013-10-05 02:52:57 -07:00
Jeffrey Pfau 4ef6a70731 Refactor frame synchronization 2013-10-05 02:11:53 -07:00
Jeffrey Pfau 2f00e3d146 Don't trample audio buffer 2013-10-03 12:08:52 -07:00
Jeffrey Pfau 4a09d41aab Fix circle buffers 2013-10-03 01:25:51 -07:00
Jeffrey Pfau 0dd69e8273 Fix incorrect condition in FIFO sampling 2013-10-03 01:23:16 -07:00
Jeffrey Pfau da38027654 Add missing changes 2013-10-02 02:45:41 -07:00
Jeffrey Pfau ba0596da07 Hook up audio for DMA sound channels 2013-10-02 02:40:16 -07:00
Jeffrey Pfau a834f8b1f6 Sample FIFOs with sound DMA timer 2013-10-02 00:46:51 -07:00
Jeffrey Pfau 71ec6162f1 Fix circle buffer sizing 2013-10-02 00:46:19 -07:00
Jeffrey Pfau 09b4a4a29a Build up DMA channel audio infrastructure from GBA.js 2013-10-01 23:56:10 -07:00
Jeffrey Pfau 9bf6b571b1 Fix naming 2013-09-30 02:02:26 -07:00
Jeffrey Pfau f5bcb1eace Change log level to mask 2013-09-30 01:48:41 -07:00
Jeffrey Pfau aaaafb90a5 Add ability to get thread-specific GBA 2013-09-30 01:42:31 -07:00
Jeffrey Pfau be36c1b5d6 Clean up error handling a bit 2013-09-30 01:31:14 -07:00
Jeffrey Pfau 3439fa5bf4 Start audio 2013-09-30 01:23:58 -07:00
Jeffrey Pfau 25885e1e82 Invalid memory reads 2013-09-27 23:48:56 -07:00
Jeffrey Pfau 453fdac3fe Fix ArcTan2 2013-09-27 09:48:04 -07:00
Jeffrey Pfau f8341f2d20 Rotate 16-bit unaligned loads 2013-09-27 02:07:44 -07:00
Jeffrey Pfau f6e1e6e6d5 Fix OBJWIN for backgrounds 2013-09-26 17:12:46 -07:00
Jeffrey Pfau 07d3fbaceb Support 16-bit color again 2013-09-26 15:11:09 -07:00
Jeffrey Pfau 187e099f25 Fix sorting in _composite 2013-09-26 10:35:26 -07:00
Jeffrey Pfau a7182b8df9 Add watchpoints 2013-09-26 00:26:11 -07:00
Jeffrey Pfau 99769695d7 Fix ADCS C bit 2013-09-26 00:25:48 -07:00
Jeffrey Pfau 662feed390 Always go through pointers for load and store 2013-09-25 22:11:58 -07:00
Jeffrey Pfau fcdbbf2a43 Fix bank switch detection 2013-09-25 04:48:27 -07:00
Jeffrey Pfau 13a2289e25 Fix ADCS 2013-09-25 00:27:40 -07:00
Jeffrey Pfau a0505ee7d7 Pepper memory access functions with warnings 2013-09-24 23:10:51 -07:00
Jeffrey Pfau 1a3f28d2b0 Start implementing OBJWIN 2013-09-24 22:58:53 -07:00
Jeffrey Pfau cec9e67d88 Support flash game saves 2013-09-23 23:05:25 -07:00
Jeffrey Pfau abc89982be Windows on backdrop and blending with backdrop 2013-09-23 20:39:28 -07:00
Jeffrey Pfau 8132341b75 Support reading 8-bit values from palette RAM 2013-09-22 16:45:36 -07:00
Jeffrey Pfau 34ddb09516 Plumb through filename for proper saves 2013-09-22 16:45:19 -07:00
Jeffrey Pfau 388dbc0851 Fix window values where start >= max being broken 2013-09-22 15:14:14 -07:00
Jeffrey Pfau 2a6e7db693 Make GBALog actually use its log levels 2013-09-22 15:01:23 -07:00
Jeffrey Pfau e7622ed70f Fix tiles being shifted when adjusting outX 2013-09-22 11:15:52 -07:00
Jeffrey Pfau ddf078383a Fix buffer underrun in mode 0 rendering 2013-09-22 03:59:33 -07:00
Jeffrey Pfau 2ce017b555 Fix WIN0H writing with overlapping values 2013-09-22 03:00:43 -07:00
Jeffrey Pfau 4523777bee Fix initializing savegames when writing to disk fails 2013-09-22 02:13:03 -07:00
Jeffrey Pfau e80ab4c855 Make debugger optional 2013-09-21 18:10:13 -07:00
Jeffrey Pfau 9d10ca3f90 Move out int declarations for stricter parsers 2013-09-21 01:27:16 -07:00
Jeffrey Pfau 85e1c2d573 Exploit cache locality for slightly faster drawing 2013-08-03 01:15:08 -07:00
Jeffrey Pfau 6b86cdf9ef LDM should force-align loads 2013-07-31 01:59:00 -07:00
Jeffrey Pfau 3301cc9f97 Reuse code for splitting WIN0 for WIN1 2013-07-31 00:48:57 -07:00
Jeffrey Pfau d2f15f4af4 Window bounds enforced 2013-07-31 00:48:34 -07:00
Jeffrey Pfau 0939d5e2bc Fix WIN0 cases 2013-07-31 00:24:21 -07:00
Jeffrey Pfau 5a685558c7 Window respects y coordinate now 2013-07-30 21:39:25 -07:00
Jeffrey Pfau 453939fc8d Sloppy first implementation of windows 2013-07-29 03:33:22 -07:00
Jeffrey Pfau 7291fcfe9e Start windows 2013-07-29 01:46:09 -07:00
Jeffrey Pfau 27f5468e01 Writing for Window registers 2013-07-29 01:30:27 -07:00
Jeffrey Pfau 3f122dcf14 Fix 8-bit I/O writes 2013-07-29 01:30:06 -07:00
Jeffrey Pfau 15aa862d70 Small optimization for sprite drawing 2013-07-29 00:44:38 -07:00
Jeffrey Pfau 425056ca15 Ensure LDM does not write back incorrectly with register list overlaps 2013-07-27 03:02:52 -07:00
Jeffrey Pfau 9e578da5a1 Do register writeback in addressing mode 2 before actual load/store 2013-07-26 23:42:45 -07:00
Jeffrey Pfau 8b1eb01a96 Fix MUL, UMULL, UMLAL 2013-07-26 01:03:34 -07:00
Jeffrey Pfau 6321b1f827 Fix ARM_CARRY_FROM 2013-07-26 00:50:20 -07:00
Jeffrey Pfau 76cd712907 Fix modes 4 and 5 2013-07-26 00:10:33 -07:00
Jeffrey Pfau 3537099820 Fix sprites 64+ not drawing 2013-07-21 21:10:12 -07:00
Jeffrey Pfau 774b7d75bc Fix broken bitmap 2013-07-21 19:04:24 -07:00
Jeffrey Pfau 6829b54234 Bitmap of enabled sprites 2013-07-21 18:58:32 -07:00
Jeffrey Pfau edecf6c1f6 Minor optimization to backgroud mode 0 2013-07-21 18:56:45 -07:00
Jeffrey Pfau 8dc3fa9bec Use software renderer for EGL, just use it for uploading the texture 2013-07-21 05:15:02 -07:00
Jeffrey Pfau da7853bda6 Mode 5 2013-07-20 01:46:40 -07:00
Jeffrey Pfau 15a2e43b2b Fix read/write 0x0400020A 2013-07-20 01:40:17 -07:00
Jeffrey Pfau 02cb9c56c5 Reuse bitmap mode background code 2013-07-20 01:38:13 -07:00
Jeffrey Pfau 90ddf937a5 Implement modes 3 and 4 2013-07-19 21:51:14 -07:00
Jeffrey Pfau 1e4a82ef5b Update GBA BIOS from GBA.js 2013-07-18 02:14:22 -07:00
Jeffrey Pfau 6a1afbda50 8-bit write to IO 2013-07-18 02:13:49 -07:00
Jeffrey Pfau 8215afcee6 Decouple GLSL and GL mains 2013-07-17 23:31:19 -07:00
Jeffrey Pfau 49de0fb52e Different mains for SDL and EGL, supporting Raspberry Pi and BeagleBone Black 2013-05-29 21:18:25 -07:00
Jeffrey Pfau f8b0acd86a Fix tile mapping for 256-color sprites 2013-05-13 02:47:11 -07:00
Jeffrey Pfau c20efb42ff Clean up thread locking in the software renderer 2013-05-11 21:07:10 -07:00
Jeffrey Pfau 63b72657c1 Fix transformed sprites that are off the top of the screen 2013-05-11 18:36:35 -07:00
Jeffrey Pfau f7ddc3a2b6 Implement RLUnCompWram/RLUnCompVram 2013-05-11 18:22:23 -07:00
Jeffrey Pfau a6d87bbfb9 Better cycle counting for STR 2013-05-11 18:01:16 -07:00
Jeffrey Pfau b6361cdfa9 Start LDM/STM timings 2013-05-11 17:05:57 -07:00
Jeffrey Pfau 0a37300bcf Improve LDR/STR cycle counting 2013-05-11 14:55:29 -07:00
Jeffrey Pfau 013e322c0b Improved cycle counting for branches 2013-05-11 14:45:31 -07:00
Jeffrey Pfau f6592b17b8 Implement MUL timings 2013-05-11 14:35:10 -07:00
Jeffrey Pfau 5c31757912 Remove int operations and vectorize shader calculation 2013-05-08 21:10:32 -07:00
Jeffrey Pfau f246587a9d Add support for (my) joystick 2013-05-08 16:57:17 -07:00
Jeffrey Pfau 12e681392d Fragment shader now no longer requires extensions 2013-05-08 15:19:54 -07:00
Jeffrey Pfau 8047ce11d0 Fix off-by-one scanline 2013-05-07 22:22:35 -07:00
Jeffrey Pfau 5b5251434f Add background sizes to GLSL mode 0 2013-05-07 22:21:40 -07:00
Jeffrey Pfau f278805255 Fix x indexing into VRAM 2013-05-07 21:48:46 -07:00
Jeffrey Pfau 5388fb8cea Draw backdrop in GLSL renderer 2013-05-07 04:40:25 -07:00
Jeffrey Pfau 03fb87acd0 Continue implementing GLSL mode 0, now with layers and offsets 2013-05-07 04:11:49 -07:00
Jeffrey Pfau cc2262149e Reindent GBAVideoGLSLRendererProcessEvents 2013-05-07 03:36:50 -07:00
Jeffrey Pfau 20b67240ae Start on mode 0 renderer 2013-05-07 03:36:34 -07:00
Jeffrey Pfau f6a9467e86 Write to renderer VRAM 2013-05-07 03:36:15 -07:00
Jeffrey Pfau bb1e598a78 Start GLSL renderer 2013-05-07 01:04:36 -07:00
Jeffrey Pfau db96be98dc Deinit video when shutting down 2013-05-07 01:00:18 -07:00
Jeffrey Pfau 8bc5ec4222 Roll out incorrect fix for Halt bug and apply proper fix 2013-05-05 20:37:35 -07:00
Jeffrey Pfau 7ec435b94c Fix 512x512 backgrounds in Mode 0 2013-05-05 01:33:05 -07:00
Jeffrey Pfau ae3f623fd5 Overwrite IF while attempting to IntrWait 2013-05-05 00:44:30 -07:00
Jeffrey Pfau fc7aec557b Count cycles for load/store singles 2013-05-04 23:57:12 -07:00
Jeffrey Pfau 738b3dc44e Implement ArcTan2 2013-05-04 15:50:42 -07:00
Jeffrey Pfau 374aca2ff7 Move event polling to after framedraw only 2013-05-04 14:49:04 -07:00
Jeffrey Pfau ac0c7ba792 Implement BgAffineSet 2013-05-04 01:20:42 -07:00
Jeffrey Pfau fb2ddd6c32 Start implementing modes 1/2 2013-05-04 01:20:24 -07:00
Jeffrey Pfau 7373c37e19 Fix sprite blending with between layers 2013-05-03 22:23:45 -07:00
Jeffrey Pfau 813b2c0697 Partially implement frameskip 2013-05-03 10:24:56 -07:00
Jeffrey Pfau 3ad2510b78 Get rid of flags struct and redo compositing 2013-05-03 10:02:01 -07:00
Jeffrey Pfau 6ef3e3b6a8 Copy ObjAffineSet implementation from GBA.js 2013-05-03 01:43:39 -07:00
Jeffrey Pfau 2bc11c9aac 32- and 16-bit reads of OAM 2013-05-03 01:33:20 -07:00
Jeffrey Pfau 862c93916d Support edge cases for 256-color mode 0, excluding hflip 2013-05-03 01:21:25 -07:00
Jeffrey Pfau 1c6fc26bf7 Support hflip on mode 0 edges 2013-05-02 21:51:00 -07:00
Jeffrey Pfau ebb1c08840 Fix warnings on gcc 2013-05-02 00:40:12 -07:00
Jeffrey Pfau 13a46429e2 Remove -Wno-unused and fix resulting errors 2013-05-02 00:35:32 -07:00
Jeffrey Pfau a635f4de4d Implement addressing mode 1 ASR register shift 2013-05-02 00:32:04 -07:00
Jeffrey Pfau 86c228f2e4 Implement SMLAL 2013-05-02 00:29:06 -07:00
Jeffrey Pfau a80175e689 Fix sprite variant condition 2013-05-01 23:56:59 -07:00
Jeffrey Pfau 3b3f55b14c Variant and 256-color transformed sprites 2013-05-01 23:54:39 -07:00
Jeffrey Pfau 0423656ad8 Extract more into macros 2013-05-01 23:46:15 -07:00
Jeffrey Pfau d6c88fc7cb Introduce macros for sprite drawing 2013-05-01 23:39:55 -07:00
Jeffrey Pfau e3fddc5739 Support 256-color sprites 2013-05-01 23:27:49 -07:00