History of Hoxs64 (Revised Date Order) 29 March 2003 v1.0.1.2 ====================== 1) Added Auto Load option to the file menu for easier C64 program loading. 2) Minor VIC-II fixes. 22 March 2003 v1.0.1.0 ====================== 1) Added windows screen doubler with option to choose between a CPU or a DirectX pixel doubler. 2) Changed C64 colours to RGB values provided by Stuart Toomer. 3) Changed full screen mode to prefer 8bit colour for performance. 10 March 2003 v1.0.0.10 ======================= 1) Option to configure Keyboard assignments 2) Load/Save of setting to the registry. Setting are saved under HKEY_CURRENT_USER/Software/Hoxs64 3) Minor VIC-II fixes. Hoxs64 can run all screens in the "Ice Cream Castle" demo by Crest with out glitches. 1 August 2002 V1.0.0.4 ====================== Numerous improvements to the VIC emulation accuracy. 1) The sprite X positions are displayed more correctly when the X register is changed on a line for which the sprite is active. 2) The border and boundground0 colours change 12 clocks after the write access to the colour registers as explained in "Christian Bauer's VIC-II Article". This rule applies regardless of the amount of XSCROLL. 3) If the value XSCROLL increases then the VIC will output idle state coloured pixels only after the current character has been shifted out to the display. 4) Corrected the idle state colours underneath the border. "Demus Interruptus" now shows all screen pixel perfect. 5) Sprites are corrupted if positioned near to the sprite data fetch clocks. As a result, Hoxs64 will the run "Demus Interruptus" with out having to patch. 8 July 2002 V1.0.0.3 ==================== 1) BUG Fix: Corrected colours that are fetched during the time that the VIC attempts to read from memory whilst the CPU still controls the address lines. 17 June 2002 V1.0.0.2 ===================== 1) BUG Fix: Intermittent loss of display during full screen mode operation. 7 June 2002 V1.0.0.1 (up to 30% faster emulation using frame skip) ==================== 1) New option on settings dialog to skip alternate frames (on by default). Use this option if emulation speed is a priority. 2) Option to alter the synchronisation for full screen mode. "VBL Sync" (on by default) is the slow but gives cleaner display switching. Line Sync is faster but may show small visual glitches during animation. 7 June 2002 V1.0.0 (Better disk and sound) ================== 1) The 1541 disk can be written to and can be saved to a D64 file on the host computer. Changes to the current 1541 disk are not immediately saved to the host computer storage. Changes to the current 1541 disk must be explicitly saved to the host PC through the Disk menu. 2) Ability to insert a blank pre formatted disk. 3) Finally fixed the last of the sound glitches (arrgh!). If any one has sound problems on 100% speed, then please let me know. 4) Synchronised screen redraw in full screen mode. 10 May 2002 V0.9D (Better disk and sound) ================= 1) Improved disk drive emulation compatibility to allow more turbo loaders to work. All loaders that are known to me at this time will now load. 2) Removed excessive function calls to the DirectSound "GetStatus" call. The result is that the sound play back does not "jump" as much. 17 April 2002 V0.9C ==================== 1) Fixed a random chance of a "divide by zero" GPF when pausing and un-pausing the emulation. This situation occurs when changing screen mode or accessing menus. 2) Fixed a bug with the CIA TOD clocks not counting up in correct order with respect to "rollover and carry" from the LSBs to the MSBs. 3) Fixed disk drive emulation to cause a false SINC condition between changing disks. Some software uses the false SINC as a means to detect when a disk has been removed. 4) Fixed a bug that caused sprites in the patched demo "Demus Interruptus" not to show correctly. This was because "Christian Bauer's VIC-II Article" did not mention that the increment that is added to the internal register MCBASE (for sprite pointer indexing) is dependant from the current value of MCBASE. After debugging the demo "Demus Interruptus" I realised what happening and I was forced to rip this table from VICE1.7 I would much love to know the logic in this table:- const int vic_ii_sprites_crunch_table[64] = { 1, 4, 3, /* 0 */ 4, 1, 0, /* 3 */ -1, 0, 1, /* 6 */ 4, 3, 4, /* 9 */ 1, 8, 7, /* 12 */ 8, 1, 4, /* 15 */ 3, 4, 1, /* 18 */ 0, -1, 0, /* 21 */ 1, 4, 3, /* 24 */ 4, 1, -8, /* 27 */ -9, -8, 1, /* 30 */ 4, 3, 4, /* 33 */ 1, 0, -1, /* 36 */ 0, 1, 4, /* 39 */ 3, 4, 1, /* 42 */ 8, 7, 8, /* 45 */ 1, 4, 3, /* 48 */ 4, 1, 0, /* 51 */ -1, 0, 1, /* 54 */ 4, 3, 4, /* 57 */ 1, -40, -41, /* 60 */ 0 }; This is how the table would look in Hoxs64 V0.9B as per "Christian Bauer's VIC-II Article" :- const int vic_ii_sprites_crunch_table[64] = { 1, 1, 1, /* 0 */ 1, 1, 1, /* 3 */ 1, 1, 1, /* 6 */ 1, 1, 1, /* 9 */ 1, 1, 1, /* 12 */ 1, 1, 1, /* 15 */ 1, 1, 1, /* 18 */ 1, 1, 1, /* 21 */ 1, 1, 1, /* 24 */ 1, 1, 1, /* 27 */ 1, 1, 1, /* 30 */ 1, 1, 1, /* 33 */ 1, 1, 1, /* 36 */ 1, 1, 1, /* 39 */ 1, 1, 1, /* 42 */ 1, 1, 1, /* 45 */ 1, 1, 1, /* 48 */ 1, 1, 1, /* 51 */ 1, 1, 1, /* 54 */ 1, 1, 1, /* 57 */ 1, 1, 1, /* 60 */ 0 }; 4 February 2002 V0.9B ====================== 1) Fixed a GPF memory read in the VIC code. 3 February 2002 V0.9A ====================== 1) Improved the DirectSound secondary buffer re-synchronisation. De-synchronisation occurs as a result of the DirectSound play back clock rate being independent to the clock that controls the emulation speed. All those random noise glitches should not occur on machines that can maintain 100% emulation speed. 2) Fixed a CPU port bug that caused the status of cassette play button not be read correctly until the port was written to. The two sided tape loaders should now work as they did in version 0.7. 3) The disk track head position will be left unchanged between inserting disks. The two disk game "Press Your Luck" will now load. 4) Fixed a minor VIC display bug that could occasionally cause multicolour text to be incorrectly masked against a sprite. 5) Added a scrollbar to the debug window. 6) Added execute break point capability. An execute break point is toggled by left clicking on the address label of a mnemonic. 7) Fixed the ARR undocumented opcode. 12 November 2001 V0.9 ===================== More of those fancy demos should now display. FLI and IFLI should work. (It was sort of working before, if you wrote a program that worked with the old Hoxs64 incompatible timing.) 1) Timing of interrupts with respect to the VIC --> CPU BA line has been fixed (I hope). This information is not easy to find. 2) Introduced a 12 clock cycle delay between the "g-access" data fetch of the VIC and the rendering of the pixels. Pixels are rendered with the colour register values that are available at the clock that they are rendered, as opposed to the clock that the pixels are fetched. 3) Fix to allow the border to be turned off by a switch from a 24 line to a 25 line display while the raster line is any where on the "top comparison line". This information seems to be missing from Christian Bauer's VIC Article. 4) Reworked CPU and VIC timing to allow the CPU to influence some additional operations of the VIC at the same clock cycle as the write to the VIC registers. 5) Fixed the VIC to fetch the lower 4 bits of the current CPU opcode when accessing the colour RAM while the address lines are in use by the CPU. 6) Introduced a 2 clock cycle delay (was 1 clock delay) between the CPU write to $D011 and the time that VIC goes from idle to display state given the various logic rules. 3 November 2001 V0.8D ===================== 1) Set disk drive speed from PAL Speed up to 1Mhz. Introduced a 1 clock cycle delay for the disk drive to see changes to the serial bus. This has the effect of allowing a wider variety of disk turbo loaders to now work. 2) "Limit speed" and "show speed" options in the settings menu. 30 October 2001 V0.8C ===================== Fixed a sound bug that caused NT4 service pack3+ machines not to initialise the sound. Fixed a minor bug with the CPU port. 26 October 2001 V0.8B ===================== Fixed a sound bug that caused garbage noise if the sound emulation was turned off and then a menu option was later selected. 26 October 2001 V0.8 ===================== 1) Not NT tested yet. SID (Sound Interface Device) now works. The only the filters are missing. 15 October 2001 V0.7D ===================== 1) Sprites can now be displayed in the extreme left and right edge underneath the border. 10 October 2001 V0.7C ===================== 1) Fixed incorrect background colour underneath the left right border. 2) Fixed a compiler optimisation error by disabling optimisations for the CIA execute cycle. The game Bounty Bob now works again as it did in V0.7 10 October 2001 V0.7B ===================== 1) Left and right border can now be opened. 2) Fixed a display bug caused by a multicolour foreground pixel being cut in half by the left border thus causing an incorrect colour. This was noticed in the title screen of California Games as an odd coloured vertical bar near the left border. 9 October 2001 V0.7 =================== 1) New 1541 Disk drive emulation. The drive is read only and supports the D64 file format. Turbo and custom loaders should run except the so called "Blast" game collection. This should not be a problem because "Blast" disks allow you to manually load games by their filenames. 2) Improved DirectX handling with full screen mode and enhanced support for windowed mode. The following windowed modes are now supported: 32 bit colour 24 bit colour 16 bit colour 8 bit palletised (256 colours) The following full screen resolutions are now supported: 400x300 320x240 320x200 3) Fixed bug with 24 bit colour renderer. 4) DirectX 3 support for NT4 with service pack 3 or higher. 6 August 2001 V0.6b =================== Small speed optimisation of VIC-II. 29 July 2001 V0.6a ================== Fixed CIA2 ports to read highs when DDR set to input. Beamrider now works. 25 July 2001 V0.6 ================= Initial release. The CPU, VIC, and MMU are fully functional. The CIA is functional with no support for devices on the "user" nor the "serial" port. There is no SID (Sound Interface Device). There is no disk support. The so called DE00 programs are not fully supported but it must be remembered that few real C64s can run DE00 programs. Known incompatibilities as of date ================================== 1) The SID filters and harmonic wave content are not present. Samples are at 22050Hz. 2) The CIA timer pulse/toggle of PB6-PB7 does not work.