Make host memory reads and writes atomic
[jpcrr.git] / Changelog.utf8
blob9bc1e4c7d8e39fc4bfb50c88b5523e12ffb1028e
1 Changes from JPC-RR Release 11.4 onwards:
2 =========================================
3 - Don't try to stuff CDs into fdb.
4 - streamtools: Backport newer x264 driver.
5 - remove scripts/encode.lua
6 - Add host-specific Lua memory.
7 - Fix error in jpcrr.project_id().
8 - Show MIDI UART activity.
9 - Use BigInteger for rerecords.
10 - Export counters related to IRQ0 to Lua.
11 - Correctly autodetect FPU in CMOS equipment byte.
12 - Emulator status display.
13 - Get gameinfo right in unattended dumping.
14 - Some more VGA status display.
15 - Fix bug in handling linefeeds in VGAChargen.
16 - Make host memory reads and writes atomic.
18 Changes from JPC-RR Release 11.3 to JPC-RR Release 11.4:
19 ========================================================
20 - Export some VGA counters (retraces seen and scrolls) to Lua.
21 - Add ability to edit game name from the UI.
22 - Fix desync if savestate is created while joystick multivibrator is in unstable state.
23 - Don't crash if stdin is not readable.
24 - Get MD5 of empty files right.
25 - Fix the add image dialog.
27 Changes from JPC-RR Release 11.2 to JPC-RR Release 11.3:
28 ========================================================
29 - Add feature to show framerate.
30 - Add feature to make debug dump of VGA I/O and memory writes.
31 - General MIDI support.
32 - Add feature to allow multiple initial states.
34 Changes from JPC-RR Release 11.1 to JPC-RR Release 11.2:
35 ========================================================
36 - Make some modules default in assembly dialog.
37 - Various improvements to streamtools
39 Changes from JPC-RR Release 11 to JPC-RR Release 11.1:
40 ======================================================
41 - Fix palette buffer overruns in VGA code.
42 - Add HQX resize driver.
43 - Output-drv-x264: Automatically pass correct constant framerate.
44 - Less crashing due to exceptions thrown out of various stream converter programs.
45 - Make other file ops than save/load use different dialog.
46 - Fix = vs space in x264 and oggenc drivers.
47 - New FAAC output driver.
48 - Send clicks to monitor panel to Lua (for instance for mouse emulation).
50 Changes from JPC-RR Release 10.5 to JPC-RR Release 11:
51 ======================================================
52 - Lock out odd/even when in graphics mode.
53 - Merge fixes in r10.6
54 - Merge fixes in r10.7
55 - Document some undocumented Lua operations.
56 - New Lua functions bit.signextend and bit.tosigned.
57 - Merge fixes in r10.8
58 - Implement P478 for Rayman.
59 - Implement CRx operations in VM86 mode.
60 - Merge fixes in r10.9
61 - Include monitor panel in PCControl.
62 - Show time in statusbar.
63 - Don't use popups, use statusbar.
64 - Fix deadlock when resizing monitor.
65 - Merge fixes in r10.10.
66 - Fix compile error.
67 - Merge fixes in r10.11.
68 - Merge the build system revamp.
69 - Merge fixes in r10.12.
70 - Merge selfmodify fix and LDT/TSS fix.
71 - Merge fixes in r10.13.
72 - Change even-odd lockout condition from graphics mode to Axxxx
73   addresses only (to fix garbled graphics in CGA games).
74 - Merge build fixes form r10 mainintance branch.
75 - Merge fixes in r10.14.
76 - Merge some fixes from r10 maint branch.
77 - Don't repaint monitor on retach, rely on VGA output cycles.
78 - Do VGA output cycle on PC stop.
79 - Rework the Lua waiting system.
80 - Make window member not superclass of PCControl.
81 - Close the image backing files on image GC.
82 - Merge some fixes from r10 maint branch.
83 - Support resetting pixel panning on line compare.
84 - Prevent races in HUDRenderer.
85 - Properly name Monitor Panel thread.
86 - Merge fixes in r10.15.
87 - Don't deadlock if setTask is called with busy PC execution thread.
88 - Add method to obtain VGA frame number.
89 - Add methods to access event stream from Lua.
90 - Add method to send event with specified low time bound.
91 - Add method to query key state at input edge.
92 - Fix crash on event stream truncation.
93 - Don't do weird stuff with VGA frame numbers.
94 - Support savestate drag'n'drop loading.
95 - Don't loadstate via DnD when running.
96 - Add option to dump every frame with frametimes.
97 - Fix NPE when canceling loadstate.
98 - Add emuname for telling apart multiple emulators.
99 - Add hotkeys for screenshots.
100 - Merge fixes in r10 maint branch.
101 - Merge fixes in r10.16
102 - Fix loadstate from Lua not to crash the emulator.
103 - Merge r10 maint fixes.
104 - Fix some save/movie handling bugs in Lua.
105 - Show what keyedge timing is if its incorrect (makes hexing easier).
106 - Don't crash if VBE register #10 is poked.
107 - Add some Lua math functions.
108 - Add some more Lua math functions.
109 - Some Lua onevent functions.
110 - Make soundcard spam less.
111 - Don't do undesirable things if stop_and_execute is recursively entered.
112 - Lua window extension.
113 - Add remaining Lua onevent functions.
114 - Fix Lua repaint callback.
115 - Add some debugging output options.
116 - Add memory search.
117 - Fix VGA DAC write indexes.
118 - Allow coloring components in lua window support.
119 - Remove debug messages accidentially left in.
120 - Add new dumping system.
121 - Allow direct output to I420.
122 - oggenc and x264 output drivers.
123 - Add nearest neighbor resizer.
124 - Add image dumping support.
125 — Fix HDD image dumping.
126 - Refactor system flags (less places to modify to add one).
127 - Add gameinfo variables.
128 - Add mode where font data is read from VGA BIOS data.
129 - Add built-in VGA font.
130 - Dispatch HUD calls directly (easier to maintain and should be faster).
131 - Fix HUD partial transparency.
132 - Refactor rescalers a bit.
133 - Allow size-specific resizers.
134 - Playdump fixes.
135 - Dump resolution guesser.
136 - Dumping tools manual.
137 - Add real VGA timings.
138 - Add support for BGA rev.5.
140 Changes since JPC-RR Release 10.16:
141 ===================================
142 - Fix streamtools build in makefile.
144 Changes from JPC-RR Release 10.15 to JPC-RR Release 10.16:
145 ==========================================================
146 - Fix some savestate/loadstate/ramdump operations from Lua.
147 - Add command line option to access image maker mode.
149 Changes from JPC-RR Release 10.14 to JPC-RR Release 10.15:
150 ==========================================================
151 - Change hotkeys for some key events to be the keys themselves.
152 - Add sendmessage command to Lua VM.
153 - Change VGA offset for 8d2 to 0.
154 - Fix popups if display resolution determination fails.
155 - Backport: Make window member not superclass of PCControl.
156 - Backport: Close the image backing files on image GC.
157 - Backport: Prevent races in HUDRenderer.
159 Changes from JPC-RR Release 10.13 to JPC-RR Release 10.14:
160 ==========================================================
161 - Make build abort if ExceptionDefProcessor fails.
162 - Add SYSTEM header to note the system movie is for.
164 Changes from JPC-RR Release 10.12 to JPC-RR Release 10.13:
165 ==========================================================
166 - Use new LDT when loading registers in jump to TSS.
167 - Add optional fast instruction reloading on selfmodify.
168 - Fix selfmodify mode to be actually saved to savestate.
170 Changes from JPC-RR Release 10.11 to JPC-RR Release 10.12:
171 ==========================================================
172 - Revamp the build system.
173 - Add call to shutdown PCRunner from Lua.
174 - Add keyboard queue length to generic hud.
175 - Fix off-by-one in box rendering.
177 Changes from JPC-RR Release 10.10 to JPC-RR Release 10.11:
178 ==========================================================
179 - Fix subtitle time display.
180 - Sightly better subtitle test.
181 - Add tool to procude animated dumps.
182 - Add script to produce ASCII font files.
183 - Add makefile rule for mkdump.exe.
184 - Add better help to mkdump.
185 - Add color selection to subtitle script.
186 - Fix priviledge checking in PMode.
187 - Less spam about HALTs on insufficient CPLs.
189 Changes from JPC-RR Release 10.9 to JPC-RR Release 10.10:
190 =========================================================
191 - Do immediate VGA output cycle on loadstate.
192 - Fix LuaPlugin console.
193 - Capabilities file I/O from Lua scripts.
194 - Clean up root directory
195 - Clean up VirtualKeyboard a bit.
196 - Add kill command to do stack trace of all threads.
198 Changes from JPC-RR Release 10.8 to JPC-RR Release 10.9:
199 ========================================================
200 - Redesign author editor dialog.
201 - Fix some savestate errors.
202 - Add support for author nicknames.
203 - Add ability for Lua to query movie length, rerecord count and headers.
204 - Allow loading Lua plugin without GUI.
205 - Allow action combos from extra menu.
206 - Implement INT3_O16 and INTO_O16 in pmode.
207 - Clean up Misc.parseString().
208 - Clean up ConstantTableLayout.
209 - Keyboard layouts support and new default layout.
210 - Subtitle library.
212 Changes from JPC-RR Release 10.7 to JPC-RR Release 10.8:
213 ========================================================
214 - Don't truncate stack trace if menu invocation goes wrong.
215 - Report inner exceptions in saved stack traces.
216 - Set disk library in autoexec file, not from command line.
217 - (try to) Keep focus on main window on savestate/loadstate.
218 - Allow printing image info from JPC-RR commandline.
219 - Fix bug in OPTION ABSOLUTE.
221 Changes from JPC-RR Release 10.6 to JPC-RR Release 10.7:
222 ========================================================
223 - Uncompressed saves.
224 - If rename fails, try deleting file before retrying.
225 - Probe if rename-over is possible and if not, fall back to copy&delete.
226 - Do move to backup slot position just before committing the save.
227 - Automatically resize PC monitor to correct size.
228 - Make PC Control window to automatically resize to correct size.
229 - If no arguments are specified, use defaults.
231 Changes from JPC-RR Release 10.5 to JPC-RR Release 10.6:
232 ========================================================
233 - Fix fast typing (keyhit) mode.
234 - Rename assemble.bat to assemble.jpcrrinit as its not DOS batch file.
236 Changes from JPC-RR Release 10.4 to JPC-RR Release 10.5:
237 ========================================================
238 - Fix audio dumping lockup.
240 Changes from JPC-RR Release 10.3 to JPC-RR Release 10.4:
241 ========================================================
242 - Include luakernel.lua in release package.
243 - Include BIOS/VGABIOS images in release package.
245 Changes from JPC-RR Release 10.2 to JPC-RR Release 10.3:
246 ========================================================
247 - Make release builds include proper main-class attribute so java -jar works.
249 Changes from JPC-RR Release 10.1 to JPC-RR Release 10.2:
250 ========================================================
251 - Dispatch ECI invocations to all plugins, not just the first.
253 Changes from JPC-RR Release 10 to JPC-RR Release 10.1:
254 ======================================================
255 - Fix save filehandle leak.
256 - Add script for automated release building.
258 Change from JPC-RR Release 9.1 to JPC-RR Release 10:
259 ====================================================
260 - Don't call DMA transfer handler with empty remaining buffer.
261 - Deprecate FPU lines, create FPUs via modules.
262 - Take dump to pcm converter from unstable/soundcard (to fix serious
263   bugs in pcmdump to pcm conversion).
264 - Eliminate some console spam.
265 - Add FPU bit hack.
266 - Warn about attempts to use FPU when not present.
267 - Add VGA update hack bit.
268 - Save ioportRegistered in DMAController.
269 - Add I/O delay emulation.
270 - Add information about images to movies/savestates.
271 - New JRSR parser.
272 - Fix crashes/misdraws in HUD code when drawing outside screen.
273 - Allow screenshots from Lua.
274 - Refactor image file creation.
275 - Fix 880KiB standard disk format.
276 - Rewrite JRSR parser again.
277 - Graphical image importer.
278 - Don't let Lua call methods on dead objects.
279 - Mark internal state of dead Lua objects as garbage-collectable.
280 - Remove some obsolete stuff (SoundTest and RAWToPNG)
281 - Fix lots of warnings from GCJ.
282 - Include build version in binaries.
283 - Support hexadecimal constants in Lua.
284 - Calculate audio filtering using doubles. Some filters are very
285   sensitive to numeric accuracy.
286 - Fix incorrect stream ending when writing dumps.
287 - Implement A16 REP(N)E {SCA,CMP}S[WD] in pmode.
288 - Scan all devices when finding sound outputs.
289 - Fix ECI with varargs.
290 - Add configurable extra menu to PCControl and use it to replace PCStartStopTest.
291 - Add wait for PC to stop function to Lua.
292 - Update brief instructions.
293 - Give import disk window proper layout.
294 - Allow using file chooser in image import.
295 - Fix bug in tree importer with recursive directories.
296 - Allow INT 0.
297 - Add VGA Hretrace emulation (needed by Commander Keen)
298 - Check events better.
299 - Add abilility to specify dumps using GUI.
300 - Don't deadlock if video dumper is stopped.
301 - Allow filtering and changing volume in rawtoaudio2.
302 - Show keyboard LED status on vkeyboard.
303 - If shift is held while selecting vkeyboard key, send two edges.
304 - Sound card (FM and PCM) support.
305 - Actually normalize coefficients in rawtorgb.
306 - Add jpcrr.sendevent() for Lua.
307 - Fix quicksave/quickload deadlock.
308 - Fix video dumping crashing on first frame.
309 - Don't wedge the emulator if filename to dump to can't be opened.
310 - Save information about output channels to movie (makes automated encoding easier).
311 - Revert keyboard interrupt mode since it is just broken.
312 - Extramenu was missing send space, add it.
313 - Mouse hw rerec support.
314 - Do once-over on manual (add missing SoundCard and FMCard modules).
316 Changes from JPC-RR Release 9 to JPC-RR Release 9.1:
317 ====================================================
318 - Fix reconnect-terminate Lua deadlocks.
319 - Don't crash Lua kernel if name of script to execute is invalid.
321 Changes from JPC-RR Release 8 to JPC-RR Release 9:
322 ==================================================
323 - Add plain text version of manual.
324 - Add new hotkeys to startstoptest.
325 - Add support for timed running into PCRunner.
326 - Merge fixes in JPC-RR Release 8.1.
327 - Revamp ECI to actually type calls.
328 - Lua interpretter plugin.
329 - Use true read length not requested length for return length
330   in BinaryInFile::read()
331 - Support nullary BinaryInFile::read() [read entiere file].
332 - Don't block PC in LuaPlugin before running script.
333 - Fix PC halting vs. Lua prints.
334 - HUD support framework.
335 - New HUD primitive: Box.
336 - New HUD primitive: Bitmap.
337 - Print warnings on non-dispatchable ECI calls.
338 - Lua script arguments support!
339 - Text rendering library.
340 - Don't crash in PCMonitor if w or h is 0.
341 - Add method to get PC clock time.
342 - Fix reconnect deadlock vs. Lua waiting for output hold.
343 - Add way to query key status and simple generic HUD.
344 - Allow querying VGA lock status from Lua.
345 - Fix deadlock in PC attach wait vs. Lua VM termination.
346 - Refactor generic HUD Lua script.
347 - Support binary bitmaps and convert fonts to binary.
348 - Special-case no-resize dump -> raw conversion.
349 - Properly pass through exceptions in module loader.
350 - Add method to dump long arrays to StatusDumper.
351 - Average output sample over sample duration in dump->PCM conversion.
352 - Write parameterless modules properly into initialization segment.
353 - Joystick support.
354 - Also compile modules by default.
355 - Refactor joystick support.
356 - Refactor Lua support.
357 - Fix warnings when compiling Lua VM.
358 - Support "Light amplification" in PCMonitor.
359 - Allow screenshotting from PCMonitor.
361 Changes from JPC-RR Release 8 to JPC-RR Release 8.1:
362 ====================================================
363 - In loadstate code, doubles are 8 bytes each, not 4.
365 Changes from JPC-RR Release 7 to JPC-RR Release 8:
366 ==================================================
367 - Support CR, CRLF and NL line endings.
368 - Don't crash in PCControl on invalid ECI calls.
369 - Support memory read/write over ECI.
370 - Make various JRSR utility classes implement Closeable.
371 - Fix connector unsubscribing.
372 - Record rerecord count for savestates.
373 - Fix/Workaround VGA scrolling bug. Mario & Luigi now works.
374 - Fix PCSpeaker transition edges to be sharp.
375 - Optionally Load and default save relative event timing.
376 - Add plugin to display current time.
377 - Add crude raw streamdump to raw RGB converter.
378 - Replace rounddown resizer with Lanzcos resizer.
379 - Add raw audio stream to raw audio file converter.
380 - Add raw audio mixer.
381 - Add raw audio digital FIR/IIR filter.
382 - Implement micro-op 125 (PUSHA) in pmode.
383 - Support multiple resizing algorithms in rawtorgb
384 - Add movie length to time display.
385 - Force UTF-8 in compile scripts.
386 - Don't trucate stack traces if plugin instantiation throws
387   error or unknown exception.
389 Changes from JPC-RR Release 6 to JPC-RR Release 7:
390 ==================================================
391 - Mark that some fields are not saved.
392 - Refactor menus in PCControl.
393 - Refactor menus even more by adding profiles to menu manager.
394 - Use comboboxes instead of textboxes to prompt images.
395 - Give next event time when clock is processed.
396 - Support INT1 in real mode.
397 - Pretty-print time sequence values on PC stop.
398 - Support moving windows via external command interface.
399 - Add tools for manipulating video streams.
400 - Give reliable retracing signal from VGA.
401 - Add utility to perform image letter boxing.
402 - Try to backup savestate before overwriting.
403 - Add makefile for stream tools and add brief description for each.
404 - Refactor writing component encoding lines.
405 - Add ability to edit run authors from GUI.
406 - Improve exception reporting.
407 - Add ability to force load savestate as movie.
408 - Fix keyboard Pause/Printscreen timing.
410 Changes from JPC-RR Release 6 to JPC-RR Release 6.1:
411 ====================================================
412 - Fix event stream truncation.
414 Changes from JPC-RR Release 6.1 to JPC-RR Release 6.2:
415 ======================================================
416 - Fix reporting exceptions from dumpers.
417 - Don't crash when dumping CD-ROM images.
419 Changes from JPC-RR Release 5 to JPC-RR Release 6:
420 ==================================================
421 - Rearrange Snapshot menu.
422 - Make traps in interface independent from PC.
423 - Fix setting traps using external commands interface.
424 - Remove RunnerPlugin. External PC start/stop is via external commands interface.
425 - Get rid of image library index files.
426 - Input PC parameters via dialog.
427 - Remove notifyArguments().
428 - Give plugins via new command loop.
429 - Allow using external command interface from command loop.
430 - Obtain event modulo timing from callback, not from event itself.
431 - Add external command interface command to send an event.
432 - Implement support for disk switching.
433 - Support naming disks.
434 - Support autoexec scripts.
435 - Delete DiskImageChooser as unused.
436 - Support floppy write protect.
438 Changes from JPC-RR Release 4 to JPC-RR Release 5:
439 ==================================================
440 - Move classes to more logical places.
441 - A16/A32 doesn't control stack access size
442 - Allow PNG saving to occur in parallel to saving next frame.
443 - Add timebase data to audio blocks for time linearization.
444 - Synchronize shutdown of audio and video dumpers to shutdown of main PC
445 - Support variable framerate and splice audio segments properly.
446 - Add test module for audio dumping.
447 - Don't deadlock in PCRunner if savestate load fails.
448 - Pop up error dialog on unexpected exception.
449 - Add method to wait until all connector subscribers have released.
450 - Squash whitespace errors.
451 - Move dialog related code from JPCApplication to Misc.
452 - Support offsets in RAWAudioDumper
453 - Fix VirtualKeyboard shutdown deadlock
454 - Support raw format dumps in PNGDumper.
455 - Move PNG dumping to external utility and rename PNGDumper -> RAWVideoDumper.
456 - Optimize save and loadstate a bit.
457 - Show time taken by loadstate and savestate.
458 - Optimize loadstate by reading data out internal buffer.
459 - Optimize savestate by writing data to internal buffer.
460 - Display total savestate load/save time.
462 Changes from JPC-RR Release 3 to JPC-RR Release 4:
463 ==================================================
464 - Fix broken BIOS image making.
465 - Add comments sections to images and record tree info to comments.
466         Handy to know how to get the ID to match in case someone created the filesystem
467         from tree.
468 - Collapse VirtualClock to Clock.
469 - Refactor FPU core to be inside FPU class.
470 - Merge real and protected mode FPU emulation code.
471 - Remvoe unneeded stuff from top-level FPU class.
472 - Refactor FPU emulation.
473         Support CPU without FPU and support EM, TS, MP and ET bits.
474 - Make FPU emulator optinal/configurable.
475 - Fix CLTS to reset CR0 bit 3, not CR3 bit 2.
476 - Make RTC update cycle to be 244 microseconds instead of 10 milliseconds.
477 - Fix PUSHx/POPx to respect SS size attribute in all modes.
478 - Cache SS size in real mode.
479 - Don't bomb out with uncaught exception if library is missing.
481 Changes from JPC-RR Release 2 to JPC-RR Release 3:
482 ==================================================
483 - Merge user manual and savestate docs, write devel docs and convert all that to Lyx.
484 - Try to support auto-init DMA (for soundcard).
485 - Update Changelog to include stuff before r1.
486 - Add external commands interface to control plugins from others
487 - Bump PNG counter from 6 digits to 12 so all movies can be dumped.
488 - Don't allow using scancodes 0, 84 and 198.
489 - Print usage on command line errors for ImageMaker.
491 Changes from JPC-RR Release 1 to JPC-RR Release 2:
492 ==================================================
493 - Optimize disk ID calculation
494         Optimize disk ID calculation by special-casing the handling of all-zero blocks in hash
495         plus doing the necessary modifications in order to exploit that special case. In case
496         of used space being small in comparison to total space, this cuts the time to compute
497         the disk ID by HALF.
498 - Fix bug in assigning audio output IDs in presence of same module loaded multiple times
499 - Warn if audio input ID in raw audio dumper is invalid
501 Changes from JPC to JPC-RR Release 1:
502 =====================================
503 - Remove background compiler
504         One really doesn't need the nondeterminism JIT brings.
505 - Remove applet code and debugger
506         This is not going to run as applet and debugger isn't something I would want to keep
507         up to date.
508 - Remove ethernet and serial port emulation
509         Multi-machine emulation is nightmare to make sync.
510 - Make TSC exact number of instructions executed, not guess based on frequency
511 - Synchronize all timing to CPU
512 - Replace all block device types with GenericBlockDevice
513         GenericBlockDevice can handle all types of block backed by DiskImage, and DiskImage
514         can handle COW (Copy-On-Write).
515 - Don't allow save/loadstate on running PC
516         Savestating on running PC is racy and produces unusable savestate.
517 - Variable CPU speed/memory size/BIOS image support
518 - Add VGA retrace start/stop traps and timed traps
519         This is frame / time advance mecanism.
520 - Textual status dump
521         Textual status dump is powerful tool when debugging desyncs.
522 - Implement new savestate mechanism and remove the old
523         The old mechanism just didn't cut it. New mechanism is brute-force but works.
524 - Video dumping support
525         Support dumping video to series of PNG files
526 - Add tools for making image files
527 - Image library code
528         Needed images are searched via image library.
529 - Handle triple faults
530         Reboot PC on triple fault instead of crashing the emulator core.
531 - Enable start/stop as apporiate
532 - Don't hang the UI during savestate and related operations
533 - Remove mouse input support
534         To be reintroduced later
535 - Create PC from GUI, not before it
536 - Allow fast exits out of CPU emulator
537 - Fix the "11 micro-ops" bug.
538 - Dedicated timer priority queue class
539         The standard one from java.util.<foo> just isn't deterministic enough.
540 - Use stderr instead of logger
541         Makes nicer-looking console output.
542 - Support dumping emulated RAM
543 - Plugins and modules support
544         These are for future extensions, so devices can be added without breaking timing.
545 - Move previous JPCApplication/PCMonitor code to plugins
546 - Display errors as dialogs if GUI available, on console if not
547 - Event recording/playback code
548 - Audio dumping support + PCSpeaker audio output support