forked from mgba-emu/mgba
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
681 lines (670 loc) · 31.7 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
0.6.0: (Future)
Features:
- GBA: Support printing debug strings from inside a game
- GBA: Better cheat type autodetection
- GB: Tile viewer
- Sprite viewer
- Debugging console
Bugfixes:
- LR35902: Fix core never exiting with certain event patterns
- GB Timer: Improve DIV reset behavior
- GBA Memory: Fix misaligned BIOS reads
- GBA BIOS: Fix MidiKey2Freq BIOS reads
- GBA BIOS: Fix invalid CpuSet not setting BIOS prefetch
- GB MBC: Fix SRAM dangling pointer with RTC games
- Windows: Fix Unicode directory handling
- Qt: Fix changing resolution of software renderer
- Qt: Fix setting overrides
- GBA Cheats: Fix GameShark ROM patches
- Qt: Fix cut off tiles and alignment issues in tile viewer
- GB MBC: Fix initializing MBC when no ROM is loaded
- VFS: Fix resizing memory chunks when not needed
- GB Memory: Fix patching ROM bank 0
- GB: Fix audio not being deinitialized
Misc:
- SDL: Remove scancode key input
- GBA Video: Clean up unused timers
- Test: Add a basic test suite
- GBA Video: Allow multiple handles into the same tile cache
- VFS: Call msync when syncing mapped data
- GBA Video, GB Video: Colors are now fully scaled
- PSP2: Improved controller rumble
- GB, GBA: Prevent loading null ROMs
- VFS: Allow truncating memory chunk VFiles
- Debugger: Modularize CLI debugger
- Core: Clean up some thread state checks
- Debugger: Make building with debugging aspects optional
- GBA Memory: Support for Mo Jie Qi Bing by Vast Fame (taizou)
0.5.1: (2016-10-05)
Bugfixes:
- Core: Fix importing save games as read-only
- FFmpeg: Fix encoding AAC
- GB: Fix invalid STOP behavior on Game Boy Color
- GB: Initialize audio properly
- GB: Properly clear KEY1 bit 0 when switching speeds
- GB: Properly unload save files when unloading a ROM
- GB, GBA: Fix emulator hardlocking when halting with IRQs off
- GB MBC: Fix MBC7 when size is incorrectly specified
- GB MBC: Fix RTC access when no save file is loaded
- GB SIO: Don't auto-clock external shift clock
- GB Video: Setting LYC=LY during mode 2 should trigger an IRQ
- GB Video: Fix video frames getting missed when LCDC is off
- GB Video: Clear screen when LCDC is off
- GBA Cheats: Fix holding onto pointers that may get invalidated
- GBA Cheats: Fix key-activated CodeBreaker cheats
- GBA Cheats: Fix uninitialized memory getting freed when saving
- GBA Hardware: Improve Game Boy Player rumble behavior
- GBA Memory: Fix several unused I/O register read values
- GBA Savedata: Fix loading savestates with 512Mb Flash saves
- LR35902: Fix events running with the wrong cycle active
- Qt: Fix "close" button on Overrides view
- Qt: Fix saving overrides
- Qt: Fix directory set unloading when replacing the ROM
- Qt: Fix patch loading
- Qt: Fix crash when saving an override if a game isn't loaded
- Qt: Fix showing default display driver as OpenGL (force 1.x)
- SDL: Attach rumble in SDL frontend
- Util: Fix PNG identification on files too small to be a PNG
Misc:
- All: Only update version info if needed
- All: Split out install locations for Libretro and OpenEmu
- FFmpeg: Encoding cleanup
- GB: Reset active region when reloading ROM
- GB Memory: Initialize RAM pattern for GBC
- GB Video: Improved video timings
- Qt: Manage window sizes slightly better
- Qt: Remember scale option independent of core dimensions
0.5.0: (2016-09-19)
Features:
- Game Boy support
- Support for encrypted CodeBreaker GBA cheats
- Emulation of Vast Fame protected GBA carts (taizou)
- Tile viewer
- Threaded rendering mode
- Libretro: Memory map and achievement support (leiradel)
- GUI: Add UI control remapping
- GUI: Add fast-forward
- Wii: 240p support
- 3DS: Adjustable screen darkening
- Ability to temporarily load a savegame
- Load specific files out of archives
- Automatic BIOS detection
Bugfixes:
- ARM7: Fix decoding of Thumb ADD (variants 5 and 6)
- Debugger: Fix GDB breakpoints
- GBA: Fix losing IRQs when CPSR I bit isn't cleared
- GBA: Fix filehandle leak with savegames
- GBA: Timer 0 cannot be count up
- GBA: Count up timers should not count themselves
- GBA Memory: Fix mirror on non-overdumped Classic NES games
- GBA Memory: Fix ldm {pc}
- GBA Savedata: Fix savedata sync timer
- GBA Savedata: Only unmap savedata if present
- GBA Serialize: Savestates now properly store prefetch
- GBA Video: WIN0/1 take priority over OBJWIN
- GBA Video: Fix out-of-order OBJWIN
- PSP2: Fix GPU crash while exiting
- PSP2: Fix VSync
- PSP2: Fix accelerometer range
- PSP2: Actually load screen mode setting
- PSP2: Fix gyroscope direction
- PSP2: Delete threads after they return
- PSP2: Fix mapping/unmapping from not at 0
- Qt: Fix bug in software renderer scaling
- Qt: Fix hanging key press after disabling autofire
- Qt: Fix being unable to pause manually when using auto-pausing
- SDL: Fix axes being mapped wrong
- Util: Fix realloc semantics in utf16to8
- Util: Fix inserting too many items into a hash table
- VFS: Fix uninitialized varaible reading from 7z
- VFS: Fix reading multiple files from a 7z archive
- Wii: Fix framelimiting after a slowdown
- Wii: Fix garbage flash at startup
Misc:
- 3DS: Use blip_add_delta_fast for a small speed improvement
- 3DS: Allow UTF-16 filenames
- 3DS: Port to using citro3D
- 3DS: Use system font for menus
- 3DS: Attempt to use Core 2 for threads
- 3DS: Adjustable filering
- 3DS: 3D banner
- All: Add QUIET parameter to silence CMake
- All: Faster memory read/write
- ARM7: Support forcing Thumb mode via MSR
- ARM7: Flush prefetch cache when loading CPSR via MSR
- ARM7: Clean up instruction decoding for future expandability
- Debugger: Support register and memory writes via GDB stub
- Debugger: Add software breakpoint support to gdb
- FFmpeg: Full support for libavcodec 56+
- GBA: Better debug logging if event processing breaks
- GBA Audio: Force audio DMAs to not increment destination
- GBA BIOS: Use custom ArcTan, not relying on OS
- GBA Hardware: Clean up dead code in GBP
- GBA Memory: Optimize stalling behavior
- GBA Memory: Optimize Load-/StoreMultiple
- GBA Savedata: Add realistic timing for EEPROM
- GBA Serialize: Savestates now store if CPU was halted
- GBA Video: Remove old slow path fallback
- GBA Video: Optimize sprite drawing
- GBA Video: Optimize mode 0 rendering
- GBA Video: Optimize compositing cases slightly
- GUI: Screenshot dimensions are now passed through
- GUI: Add back logging
- GUI: Only reload config if manually saved
- GUI: Increase scrolling speed
- OpenGL: Log shader compilation failure
- OpenGL: Add texSize uniform
- Qt: Make -g flag work in Qt build
- Qt: Simplify OpenGL context creation
- Qt: Thread startup improvements
- Qt: Make audio channel/video layer options shortcut mappable
- Qt: Remove some C99isms from C++ code
- Qt: Remove default autofire mappings
- Qt: Make reseting when pasued frame-accurate
- Qt: Rearchitect game closing codepath
- PSP2: Use system font for menus
- PSP2: Add rumble for PS TV
- PSP2: Add fit-to-height screen mode
- PSP2: Sync files per descriptor
- PSP2: Allow UTF-8 filenames
- PSP2: Screenshots are now saved into the Photo Gallery
- PSP2: Stop underclocking when menuing
- SDL: Increase default audio buffer size to 1024 samples
- SDL: More responsive rumble
- Util: Add Vector GetConstPointer
- Util: Add rtrim
- Util: Add endswith
- VFS: Improve zip file detection
- Wii: Add pixelated resample filter
- Windows: Add native VDir support
- Util: Add PRIz macro for libc versions that don't support %z
0.4.1: (2016-07-11)
Bugfixes:
- All: Fix several file handle leaks
- All: Fix instruction tables getting zeroed when linking sometimes
- ARM7: Fix flags on SBC/RSC
- ARM7: Fix setting spsr privilege bits when spsr is empty
- GBA Audio: Reset audio FIFO DMA if an invalid destination is set
- GBA BIOS: Fix RegisterRamReset setting DISPCNT to the wrong value
- GBA BIOS: Fix ArcTan2 accuracy and boundary conditions
- GBA Memory: Fix executing code from OBJ region of VRAM
- GBA Serialize: Fix memory corruption bug in GBAExtdataSerialize
- GBA Serialize: Fix loading savegames from savestates
- OpenGL: Correct boolean vector strcmp strings for uniforms
- Qt: Fix sending gameStopped twice
- Qt: Fix hang if audio sync is enabled and audio fails to initialize
- Qt: Fix initial state of key mapping
- Qt: Initialize m_useBios
- SDL: Fix joystick initialization on BSD
- SDL: Fix potential joystick crash in games with rumble
- SDL: Fix SDL 1.2 build
- SDL: Fix sporadic crash when deinitializing audio
- Shaders: Fix AGS-001 shader with some bad drivers
- Util: Use closesocket on Windows
- Util: Fix socket bind addresses
- VFS: Fix reading 7z archives without rewinding first
- VFS: VFileFromFD should not open directories
- Wii: Fix tilting direction
- Util: Fix realloc semantics in utf16to8
Misc:
- All: Allow use of external minizip library
- Debugger: CLI debugger now exits when end-of-stream is reached
- FFmpeg: Update dependencies on Ubuntu
- GBA: Slightly optimize GBAProcessEvents
- GBA: Add overrides for DBZ: Legacy of Goku II and Ueki no Housoku
- GBA Video: Null renderer should return proper register values
- Libretro: Disable logging game errors, BIOS calls and stubs in release builds
- Qt: Add preset for DualShock 4
- Qt: Update 360 input profile on OS X to reflect newer drivers
- Qt: Remove use of NaN
- Qt: Canonicalize file paths when loading games
- Qt: Add refresh button to controller editing
- SDL: Remove default gamepad mappings
- Util: Fix intermittent build failure on OS X
- VFS: VFile.sync now updates modified time
0.4.0: (2016-02-02)
Features:
- Officially supported ports for the Nintendo 3DS, Wii, and PlayStation Vita
- I/O viewer
- Booting of multiboot images
- Customization of GIF recording
- Libretro: Cheat code support
- Support for GLSL shaders
- ROM information view
- Support for VBA-style cheat codes
- Savestates now store creation timestamps
- Key autofire
- Libretro: Allow blocking opposing directional input
- OpenEmu core for OS X
- Libretro: Settings for using BIOS and skipping intro
- Libretro: Customizable idle loop removal
- Implemented cycle counting for sprite rendering
- Cleaner, unified settings window
- Added a setting for pausing when the emulator is not in focus
- Customizable paths for save games, save states, screenshots and patches
- Controller hotplugging
- Ability to store save games and active cheats within savestates
Bugfixes:
- ARM7: Fix sign of unaligned LDRSH
- ARM7: Fix decoding of some ARM ALU instructions with shifters
- Debugger: Fix watchpoints in gdb
- GBA: Fix warnings when creating and loading savestates
- GBA: Fix Iridion II savetype
- GBA BIOS: Fix misaligned CpuSet
- GBA Cheats: Fix cheats setting the Action Replay version
- GBA Hardware: Fix GPIO on big endian
- GBA Memory: Fix DMA register writing behavior
- GBA Memory: Fix DMAs triggering two cycles early
- Libretro: Fix aspect ratio
- Qt: Fix some potential crashes with the gamepad mapping
- Qt: Fix keys being mapped incorrectly when loading configuration file
- Util: Fix PowerPC PNG read/write pixel order
- Util: Fix excessive memory allocation when decoding a PNG
- VFS: Fix VFileReadline and remove _vfdReadline
Misc:
- All: Improved PowerPC support
- All: Fix some undefined behavior warnings
- ARM7: Combine shifter-immediate and shifter-register functions to reduce binary size
- Debugger: Convert breakpoints and watchpoints from linked-lists to vectors
- GBA: Implement bad I/O register loading
- GBA: Allow jumping to OAM and palette RAM
- GBA BIOS: Finish implementing RegisterRamReset
- GBA Config: Add "override" layer for better one-time configuration
- GBA Input: Consolidate GBA_KEY_NONE and GBA_NO_MAPPING
- GBA Memory: Use a dynamically sized mask for ROM memory
- GBA Memory: Implement several unimplemented memory access types
- GBA Memory: Add GBAView* functions for viewing memory directly without bus issues
- GBA RR: Starting from savestate now embeds the savegame
- GBA RR: Add preliminary SRAM support for VBM loading
- GBA RR: Add support for resets in movies
- GBA Video: Remove lastHblank, as it is implied
- Libretro: Use anonymous memory mappers for large blocks of memory
- Libretro: Add install target for libretro core
- Qt: Window size command line options are now supported
- Qt: Increase usability of key mapper
- Qt: Add 'Apply' button to settings window
- Qt: Gray out "Skip BIOS intro" while "Use BIOS file" is unchecked
- Qt: Allow use of modifier keys as input
- Qt: Optimize log viewer
- Qt: Added button for breaking into the GDB debugger
- Qt: Add box for showing duration of rewind
- SDL: Support fullscreen in SDL 1.2
- SDL: Allow GBASDLAudio to be used without a thread context
- Util: Use VFile for configuration
- Util: Add MutexTryLock
0.3.2: (2015-12-16)
Bugfixes:
- ARM7: Fix STRT/STRBT
- ARM7: Implement undefined STRH/LDRH/LDRSH/LDRSB versions
- ARM7: Fix bank switching with LDR[B]T/STR[B]T
- Libretro: Fix problems with rumble not turning off
- GBA: Fix idle skip state being retained between games
- GBA: Initialize uninitialized pristineRom and pristineRomSize members
- GBA BIOS: Fix CpuSet on 0x01XXXXXX addresses
- GBA BIOS: Fix Sqrt sign
- GBA BIOS: Fix misaligned RLUnCompReadNormalWrite*
- GBA Hardware: Fix Game Boy Player rumble in Pokemon Pinball
- GBA Memory: Fix DMA behavior for SRAM accesses
- GBA Memory: Fix Store8 to OBJ VRAM
- GBA Memory: Fix alignment of LDM/STM on SRAM
- GBA Memory: Fix unaligned out-of-bounds ROM loads
- GBA Memory: Fix timing of DMAs
- GBA Video: Fix _mix for 15-bit color
- GBA Video: Fix OAM and palette initialization
- OpenGL: Fix fast-forward on some OpenGL drivers where it may block early
- Qt: Use safer isLoaded check in GameController
- Qt: Fix a race condition in PainterGL that could lead to a crash
- Qt: Fix clear button/analog buttons in gamepad mapper on some platforms
- Qt: Fix font size in memory viewer
- Qt: Fix a crash in the memory viewer
- Qt: Add additional checks in CheatModel to prevent crashes
- Qt: Fix race condition with setting sample rate
- Qt: Fix crash when closing multiplayer windows
- Qt: Fix resetting while paused
Misc:
- GBA Audio: Implement missing flags on SOUNDCNT_X register
- Qt: Add mute option to menu
0.3.1: (2015-10-24)
Bugfixes:
- ARM7: Fix instruction decoding of Thumb shifts
- GBA: Deinit savegame when unloading a ROM
- GBA: Fix BIOS check on big endian
- GBA: Fix autodetect problems with some bad dumps of Super Mario Advance 2
- GBA Audio: Fix 8-bit writes to audio channel 3 and 4 registers
- GBA Audio: Fix audio channels being silenced at the wrong time
- GBA Memory: Fix bad BIOS Load16 on big endian
- GBA Memory: Fix bad Load8 on big endian
- GBA Video: Start on the scanline BIOS finishes on if no BIOS is loaded
- GBA Video: Fix edge case with sprite blend modes and semitransparency
- GBA Video: Fix objwin and blending interaction on sprites
- GBA Video: Fix OBJ semitransparency improperly interacting with other blending ops
- Libretro: Fix a memory leak with the render buffer
- Qt: Windows no longer spawn in the top left on first launch
- Qt: Fix install path of XDG desktop file with DESTDIR
- Qt: Fix drag and drop on Windows
- Qt: Reenable double buffering, as disabling it broke some Windows configs
- VFS: Fix return values of VFileFILE.read and .write
Misc:
- All: Reset next event to cycles instead of zero to interrupt
- All: Add --version flag
- ARM7: Force disable LTO on two files to work around a GCC bug
- GBA: Attempting to save a screenshot-style savestate should be allowed without libpng
- GBA: Better memory handling with PNG savestates
- GBA: Additional savestate sanity checks
- GBA: Check for cycle count being too high
- GBA Audio: Allow GBAAVStream to have no video callback
- GBA BIOS: Implement RegisterRamReset for SIO registers
- Qt: Remove useless help icons in dialogs
- Qt: Prevent savestate window from opening while in multiplayer
- Qt: Disable menu items in multiplayer that don't make sense to have enabled
- Qt: Dropping multiplayer windows works more cleanly now
0.3.0: (2015-08-16)
Features:
- Ability to hide individual background layers, or OBJs
- Ability to mute individual audio channels
- Palette viewer and exporter
- Volume control
- More shortcuts are editable (e.g. quick save/load)
- Rewind now shows the frame after rewinding
- Import/Export of GameShark/Action Replay snapshots
- Add "Step backwards" item for single increment rewind
- Deadzone estimation for game controllers
- Analog inputs can be used for shortcuts
- Menu items for specific solar sensor brightness levels
- Remappable controls for tilt and gyroscope sensors
- Status messages for actions taken while a game is running (e.g. save/load state)
- Memory inspector
- Screensaver can now be suspended while a game is running
- Load/save the most recent savestate slot
- Support varible speed (PWM) rumble
- Ability to cap fast forward speed
- Finer control over FPS target
- Holdable shortcut for rewinding one frame at a time
- Ability to boot directly into the BIOS
- Preliminary support for yanking out the game pak while a game is running
- Thumb-drive mode by putting a file called portable.ini in the same folder
- Configurable display driver, between software and OpenGL
- Undo-able savestate loading and saving
- Controller profiles now store shortcut settings
- Default controller profiles for several common controllers
- Libretro now supports BIOS, rumble and solar sensor
- Implement BIOS call Stop, for sleep mode
- Automatically load patches, if found
- Improved video synchronization
- Configurable audio output sample rate
Bugfixes:
- ARM7: Fix SWI and IRQ timings
- ARM7: Fix Thumb MUL timing
- ARM7: Fix timing of multiplies to use N cycles
- ARM7: ARMHotplugDetach should call deinit
- Debugger: Fix use-after-free in breakpoint clearing code
- GBA: Fix crash if a 512kb flash save is loaded when a game has a 1Mb flash override
- GBA: Cap audio FIFO read size during deserialization
- GBA: Check for corrupted savestates when loading
- GBA: Check for improperly sized savestates when loading
- GBA: Check for savestates made from differently sized ROMs
- GBA: Fix calls to endian-independent loadstores
- GBA: Fix timing of reading from timer registers
- GBA: Ensure cycles never go negative
- GBA Audio: Force audio FIFOs to 32-bit
- GBA Audio: Fix audio pitch changing when adjusting buffer size
- GBA Audio: Fix sample order in audio channel 3
- GBA Audio: Fix 8-bit writes to audio channel 3 frequency
- GBA Cheats: Fix Pro Action Replay and GameShark issues when used together
- GBA Memory: Improve Thumb open bus behavior
- GBA Memory: Fix potential DMA issue when loading a savestate
- GBA Memory: Fix load/store multiple video memory waitstates
- GBA SIO: Fix reseting when there are SIO devices attached
- GBA Video: Blended sprites should never have other effects applied
- GBA Video: Fix out-of-bounds tiles in mosaic
- GBA Video: Fix windows not affecting sprites
- GBA Video: Prevent tiles < 512 from being used in modes 3 - 5
- GBA Video: Fix timing on first scanline
- Qt: Better cleanup when a game crashes
- Qt: Fix open ROM dialog filtering for archive formats
- Qt: Cap the maximum number of multiplayer windows
- Qt: Fix maximum year in sensor override
- Qt: Fix window being too tall after exiting fullscreen
- Qt: Fix a missing va_end call in the log handler lambda within the GameController constructor
- Qt: Fix analog buttons not getting unmapped
- Qt: Fix passing command line options
- Qt: Fix crashes on Windows by using using QMetaObject to do cross-thread calls
- SDL: Fix SDL build when OpenGL is missing
- Util: Allow loading IPS patches that grow the ROM
- VFS: Fix resource leaks if some allocations fail
- VFS: Fix line-reading to return proper values
- Video: Fix an issue with very long filenames
- Util: Fix formatting of floats
Misc:
- All: Add --help flag for command line programs
- All: Fix sanitize-deb script to set file permissions properly if run as (fake)root
- All: Enable static linking for Windows
- All: Enable static linking for OS X
- All: Threads are now named
- All: Proper handling of Unicode file paths
- ARM7: Add emulation for Undefined CPU mode
- ARM7: Reduce the size of the Thumb instruction table
- GBA: Add status log level
- GBA: GBARewind now returns how many states it has rewound
- GBA: SIO logging layer
- GBA BIOS: Stub out SoundBias
- GBA: More accurate cycle estimation for ROM prefetch and flash save chips
- GBA: Don't include GBACLIDebugger struct unless needed
- GBA: Savedata is now synced shortly after data finishes being written
- GBA: Process multiple timer events at once, if necessary
- GBA Audio: Implement audio reset for channels A/B
- GBA Audio: Process multiple audio events at once, if necessary
- GBA Hardware: Backport generic RTC source into core
- GBA Input: Allow axes and buttons to be mapped to the same key
- GBA Memory: Run multiple DMAs in a tight loop if they all occur before present
- GBA SIO: Add a dummy driver for Normal mode
- GBA Thread: Add functionality for running callbacks on the GBA thread
- GBA Thread: Split GBASync into a separate file
- GBA Video: Refactor software renderer into separate files
- GBA Video: Slightly optimize mode 0 mosaic rendering
- Debugger: Free watchpoints in addition to breakpoints
- Qt: Handle saving input settings better
- Qt: Move GL frame drawing back onto its own thread
- Qt: Fast forward (held) option moved from Other to Emulation menu
- Qt: Show version info in window title
- Qt: Migrate multiplayer window handling into GBAApp
- Qt: Unified file opening and saving with last location
- Qt: Fix windows being resizable when they shouldn't have been
- Qt: Only hide cursor in full screen
- Qt: Replace pause-after-frame mutex with an atomic
- Qt: Add application icon and XDG desktop files
- Qt: Rename "Fullscreen" to "Toggle fullscreen"
- Qt: Don't save window size when entering fullscreen
- Qt: Make the default fullscreen binding for Windows be Alt-Enter
- Qt: Gamepads can now have both buttons and analog axes mapped to the same key
- Qt: Increase usability of key mapper
- Qt: Show checkmark for window sizes
- Qt: Set window path to loaded ROM
- Perf: Ability to load savestates immediately on launch
- SDL: Properly check for initialization
- SDL: Clean up initialization functions
- SDL: Clean up GL context
- Util: Allow disabling the threading code entirely
- VFS: Add sync method to force syncing with backing
0.2.1: (2015-05-13)
Bugfixes:
- All: Fix sanitize-deb script not cleaning up after itself
- All: Fix dependencies for libavcodec on Debian-derived platforms
- ARM7: Handle writeback for PC in addressing modes 2 and 3
- ARM7: Make illegal instruction decoding consistent between ARM and Thumb
- ARM7: Fix ARM multiply instructions when PC is a destination register
- Debugger: Fix use-after-free in breakpoint clearing code
- Debugger: Fix boundary conditions in tab completion
- GBA: Fix timers not updating timing when writing to only the reload register
- GBA: Fix rewind boundary conditions
- GBA: Add initial I/O register settings for background matrix registers
- GBA: Fix hang when loading a savestate if sync to video is enabled
- GBA: Handle out-of-bounds I/O access
- GBA: Fix bounds-checking on EEPROM access
- GBA Audio: FIFOs should not poll DMAs that are not scheduled for audio
- GBA BIOS: Initialize a variable that may be uninitialized in very rare cases
- GBA Memory: Allow SRAM to be 64kB
- GBA Memory: Fix 32-bit loads from unaddress cartridge space
- GBA Memory: Fix jumping to invalid memory when switching from Thumb to ARM
- GBA Video: Fix second frame mode 5
- Perf: Fix race condition if a game crashes immediately on start
- Qt: Fix Display object leak when closing a window
- Qt: Fix .deb dependencies
- Qt: Fix "QOpenGLContext::swapBuffers() called with non-exposed window" warning
- Qt: Fix window not regaining focus after exiting savestate window
- Qt: Fix regression where video would not record if the game had already started
- Qt: Fix potential crash if a gamepad causes focus to change
- Qt: Fix controller axis querying
- Qt: Fix multiplayer windows opening as the wrong size
- Qt: Fix controllers sometimes not loading the right profile
- SDL: Fix boundary conditions for joystick adjustments
- SDL: Allocate properly sized input maps
- SDL: Fix potential build issues when Qt and SDL2 are in use
- Util: Fix resource leak in UTF-8 handling code
- Util: Fix a null-pointer issue when attempting to delete a key
- VFS: Fix resource leaks if some allocations fail
- Video: Fix an issue with very long filenames
Misc:
- GBA Memory: Soft-crash if jumping past the end of a ROM
- Qt: Show multiplayer numbers in window title
- Qt: Solar sensor can have shortcuts set
0.2.0: (2015-04-03)
Features:
- Support for gamepad axes, e.g. analog sticks or triggers
- Add scale presets for up to 6x
- Settings window
- Bilinear resampling option
- Add option to skip BIOS start screen
- List of recently opened games
- Support for games using the Solar Sensor
- Better audio resampling via blip-buf
- Game Pak overrides dialog for setting savetype and sensor values
- Support for games using the tilt sensor
- Remappable shortcuts for keyboard and gamepad
- Rewinding of emulation
- Implemented BIOS routines SoftReset, RegisterRamReset, Diff8bitUnFilterWram, Diff8bitUnFilterVram, and Diff16bitUnFilter
- Support IPv6
- Save directory of last loaded file
- Support BPS patches
- Automatically detect and optimize out idle loops
- Configurable game overrides
- Support loading 7-Zip files
- Drag and drop game loading
- Cheat code support
- Runtime configurable audio driver
- Libretro core for use with RetroArch and other front-ends
- Controller profiles for setting different bindings for different controllers
- Ability to lock aspect ratio
- Local link cable support
- Ability to switch which game controller is in use per instance
- Ability to prevent opposing directional input
- Warning dialog if an unimplemented BIOS feature is called
- Debugger: Add CLI "frame", frame advance command
- Debugger: Add CLI functions for writing to memory
- Debugger: Add CLI functions for examining memory regions
- Debugger: Add CLI function for writing a register
Bugfixes:
- ARM7: Extend prefetch by one stage
- ARM7: Fix cycle counting for loads
- Debugger: Disassembly now lists PSR bitmasks (fixes #191)
- GBA: Fix savestate loading of DISPSTAT and WAITCNT registers
- GBA: Initialize gba.sync to null
- GBA: Fix timer initialization
- GBA Audio: Support 16-bit writes to FIFO audio
- GBA Audio: Audio buffer sizes are now correct sizes for both sample rates
- GBA BIOS: Fix BIOS prefetch after returning from an IRQ
- GBA BIOS: Fix BIOS prefetch after reset
- GBA BIOS: Prevent CpuSet and CpuFastSet from using BIOS addresses as a source (fixes #184)
- GBA BIOS: Fix BIOS decompression routines with invalid source addresses
- GBA Memory: Fix alignment of open bus 8- and 16-bit loads
- GBA Memory: Fix I cycles that had been moved to ARM7 core
- GBA Memory: Fix cycle counting for 32-bit load/stores
- GBA RR: Fix fallthrough error when reading tags from a movie
- GBA Thread: Fix possible hang when loading an archive
- GBA Thread: Fix possible deadlock in video sync
- Perf: Fix crash when the GBA thread fails to start
- Qt: Fix crash starting a GDB stub if a game isn't loaded
- Qt: Fix crash when adjusting settings after closing a game
- Qt: Fix crash when starting GDB stub after closing a game
- Qt: Fix patch loading while a game is running
- Qt: Fix crash when loading a game after stopping GDB server
- Qt: Pause game while open file dialogs are open (fixes #6 on GitHub)
- Qt: Fix crash when attempting to pause if a game is not running
- SDL: Properly clean up if a game doesn't launch
- Util: Fix sockets on Windows
Misc:
- All: Enable link-time optimization
- Debugger: Watchpoints now work on STM/LDM instructions
- Debugger: Clean up GDB stub network interfacing
- Debugger: Simplify debugger state machine to play nicer with the GBA thread loop
- Debugger: Merge Thumb BL instructions when disassembling
- Debugger: Clean up debugger interface, removing obsolete state (fixes #67)
- Debugger: Watchpoints now report address watched (fixes #68)
- Debugger: Add support for soft breakpoints
- Debugger: Make I/O register names be addresses instead of values
- Debugger: Rename read/write commands
- GBA: Improve accuracy of event timing
- GBA: Add API for getting Configuration structs for overrides and input
- GBA: Refactor gba-sensors and gba-gpio into gba-hardware
- GBA: Refactor gba directory, dropping gba- prefix and making supervisor directory
- GBA: Move A/V stream interface into core
- GBA: Savestates now take into account savedata state machines (fixes #109)
- GBA Audio: Change internal audio sample buffer from 32-bit to 16-bit samples
- GBA Memory: Simplify memory API and use fixed bus width
- GBA Thread: Make GBASyncWaitFrameStart time out
- GBA Video: Start video at the last scanline instead of the first
- Qt: Optimize logo drawing
- Qt: Move frame upload back onto main thread
- Qt: Remember window position
- Qt: Double-clicking on the window toggles full screen
- Util: Use proper locale for reading and writing float values
0.1.1: (2015-01-24)
Bugfixes:
- ARM7: Fix LDM writeback to a register already written
- GBA: Fix timers 2 and 3 updating incorrectly
- GBA Audio: Make larger buffer sizes than 2048 actually work properly
- GBA Audio: Fix GB audio channels being too quiet (fixes #159)
- GBA Audio: Properly initialize audio FIFO channels
- GBA BIOS: Fix HLE Lz77 and RL functions to properly account for width and invalid addresses
- GBA BIOS: Fix BIOS prefetch after returning from a SWI
- GBA BIOS: Fix LZ77UnCompVram to use 16-bit loads from decompressed memory
- GBA BIOS: Fix HuffUnComp to work when games pass an invalid bit length
- GBA BIOS: Fix GetBiosChecksum to return the value of a real GBA, regardless of used BIOS
- GBA BIOS: Fix HuffUnComp boundary conditions
- GBA Memory: Don't call into GPIO write calls if GPIO devices are absent
- GBA Memory: Properly initialize 1 Mb flash, and add debug logging
- GBA Memory: Filter out top nybble of DMA addresses
- GBA Memory: Properly bounds-check VRAM accesses
- GBA Memory: Fix initial DMA state
- GBA Thread: Allow halted games to exit cleanly
- GBA Video: Fix blend issues with obscured middle layers
- GBA Video: Fix windows not disabling target 1 appropriately (fixes #161)
- GBA Video: Fix sprite mis-ordering behavior in some cases (fixes #168)
- GBA Video: Fix window interactions with 16-color mode 0 mosaic
- GBA Video: Fix sprite boundary conditions with mosaic
- GBA Video: Fix mode 0 being able to read tiles above appropriate tile range
- Qt: Fix issue with set frame sizes being the wrong height
- Qt: Fix emulator crashing when full screen if a game is not running
- Qt: Fix window focus issues
- Qt: Properly set default video recording settings
- Qt: Fix a race condition when a game crashes immediately
- Qt: Fix some cases where key mapping can break if focus is adjusted
- Qt: Fix crash if a game pauses before any frames are shown
- Debugger: Negative PC-relative loads now properly subtract the offset
- Debugger: Align PC-relative loads in Thumb
- Debugger: Fix watchpoints triggering too late
- Debugger: Fix binary print putting spaces between digits
- Video: Ensure FFmpeg encoder has audio frames
- Video: Fix uncompressed PCM audio recording
- Video: Fix FFmpeg crashing when the file extension is wrong
- Util: Fix SOCKET_FAILED macro
Misc:
- GBA: Exit cleanly on FATAL if the port supports it
- GBA Memory: Implement 16- and 32-bit loads from SRAM
- Qt: Disable sync to video by default
- Qt: Handle a game crash without crashing
- Qt: Set default log level to FATAL, ERROR and WARN
- Qt: Clarify some phrasing in the menus
- Qt: Clear active buttons when focus is lost
0.1.0: (2014-12-13)
- Initial release