+----------------------------------------------------------------------------+ | Copyright | +----------------------------------------------------------------------------+ MTMW is Freeware, which means you can give the program to friends and acquaintances for *free*. Archive maintainers are allowed to include MTMW in their program collections for "downloading". Shareware distributors are allowed to distribute MTMW, if they only take a small fee for copying. Compared to Public Domain, Freeware does not mean that it is "free" and you may do anything with it. I still retain the copyright. +----------------------------------------------------------------------------+ | Disclaimer | +----------------------------------------------------------------------------+ MTMW is supplied as is. The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The author assumes no liability for damages, direct or consequential, which may result from the use of MTMW. +----------------------------------------------------------------------------+ | Version 1.30b (16/Jun/98) | +----------------------------------------------------------------------------+ ---+++*** WIN95 GUI ***+++--- 1. Added the other Snapshot types to the standard requester. 2. Forgot to load/save last jupiter ace snapshot name/from to the '.INI'. 3. Full-screen windows frames when using menus are now sized correctly. 4. Snapshot name on the Caption line is now updated properly. 5. Fixed the allways on top problem when returning from full-screen mode. DirectDraw in all its wisdom sets the window into HWND_TOPMOST mode and does not revert it on return from fullscreen. 6. Fixed tape hardware info property sheet and updated INI file to match. Any available HWINFO blocks from a TZX or CDT file are now displayed. 7. Changed the DISC menu completely. re-adding the 'turn disc over' and adding in a facility to eject the disk 'Close disk'. 8. Updated the FILE->Open cartridge option to work correctly with a CPC+. 9. If full-screen was activated and a primary surface with backbuffer could not be allocated then all dest blits would be 640x480 rather than the required size. Sorted. 10. Started introducting Win95 Direct Draw in a window for far better speeds in windowed mode. 11. Bl00dy hell that was hard. I've just went through rewritting every single draw routine to handle direct draw in a window. Its now a lot better and far faster in windowed mode. What a pain in the arse that was. Oh well its done now. ---+++*** SPECTRUM RANGE ***+++--- 1. Verified undocumented display modes on the TC2068. Yup my initial guesses look spot on. Outs to port 255 can be decoded as follows. Bit 0 (==1) sets ALTDFILE (alternate display file) Bit 1 (==2) sets EXTCOLOR (8*res attributes) Bit 2 (==4) sets HIRES (hires 512x192 mode) Using the standard Spectrum address decoding you get 2 streams. Stream 1 is the bitplane data Stream 2 is the attribute data When HIRES is enabled 'Stream 2' is no longer used for colour but for the next 8 pixels of display data. Using a 'C' switch case statement you can adjust the addresses of Streams 1 and 2 as follows:- Switch(Last_ff&(ALTDFILE|EXTCOLOR)) { case 0: break; case ALTDFILE: stream1|=0x2000; stream2|=0x2000; break; case EXTCOLOR: stream2=stream1|0x2000; break; case EXTCOLOR|ALTDFILE: stream1|=0x2000; stream2=stream1; break; } Now you can decide which routine to use to display hi or lores data based on the HIRES flag. 2. Changed flash handler to be based on the refresh rate. (50/60) 3. Changed flash to occur at 2*refresh rate. 4. Adjusted output volumes for EAR output/EAR input/MIC so all 3 are audible. Besides there was a bug involving an 'OR' instead of an 'AND' 5. Adjusted contention emulation. Should be a bit faster when contended section of screen is active. Also makes introducing the real system for memory contention. 6. Adjust '.SP' snapshot loading to handle old and new '.SP' format snapshots. 7. Added support for '.ZX' format snapshots as used in the KGB emulator. 8. Added support for '.ACH' format snapshots as used in the !Speccy emulator on the Archimedes. 9. Added support for '.PRG' format snapshots as used in the Specem. 10. Added support for '.SNX' format snapshots as used in the Specci. 11. Ooooops. Quite a few snapshot formats did not set up the 'R' register High bit backup and as such anything apart from Z80 or SNA files that required the High bit setup may have had problems. 12. Updated audio mixing to same standard as the CPC core which now gives a far better mix on TAPE I/O and Sample type replays. 13. Memory contention for NTSC machines was being set at the wrong period and so would not have been any where near correct. ---+++*** TZX ***+++--- 1. Added support for Warajevo 2.0 '.TAP' format files. 2. Added support for '.VOC' format tapes. ---+++*** AMSTRAD CPC RANGE ***+++--- 1. Changed operation of audio mixer quite radically. Audio and samples should be a lot crisper now. 2. Added an extra translation table in for the PLUS sprites that may help with their performance. 3. Changed audio yet again. Hopefully I'm now actually happy with the way it works. It should be a bit faster also. 4. Removed old audio rigs which may have caused problems if you set bit 4 in PPI port B from the INI. It didn't remember about 50/60hz option. 5. Updated the PLUS mode 2 interrupts, hopefully this should allow Mr. Cadley to continue on his voyage into beyond. 6. Ooops somewhere along the way I managed to cock up the CPC memsize setting which meant your virtual CPC would allways have 576K. Now well and trully squashed (for the n'th time). 7. Oh dear, whilst investigating the MEMSIZE problem I noticed a memclear before the size section had been initialised. Now rectified. 8. Fixed PLUS asic sprites incorrectly clipping on the right hand side of the screen. Well I tell a lie, after hours pouring over the clipper I discovered that the actual plot code sometimes plotted an extra pixel and that the clipper had been cool all along. 9. Fixed PLUS asic sprites in HIGH and MEDIUM rendering accuracy modes. 10. Fixed ASIC UNLOCK SEQUENCE, caused DEMO+ and a lot of other plus software to not unlock and therefore crash. Demo+ still crashes but it gets into the demo first. 11. When ASIC was LOCKED/UNLOCKED or advanced paging control paged ASICRAM in it didn't switch to memwrite checking straight away and some ASIC writes could (and did) get missed. Now sorted and fixes some sprites being left behind on FLUFF and Switchblade. This also fixes a lot of problems with other PLUS programs. 12. Replaced the CPC PLUS multiple cart blocks definition in the INI file with single 'C'PC 'P'LUS 'R'OM (.CPR) file entry for 464+ and 6128+. As long as:- cpc_464_plus_cart="??????.cpr" cpc_6128_plus_cart="??????.cpr" points to a valid RIFF format .CPR rom file then it will autoboot. This format has been produced in association with the other PLUS emulator developer to ensure a consistant format. 13. Updated the handling of the DMA control register in the ASIC for indicating interrupt source. FLUFF now has coloured bars in the backgound of the screen and WOS.CPR actually runs through the first event. 14. Video and audio interrupts could occur up to 64us late. All ints should now be signalled as soon as needed. 15. Removed high nibble on ASIC Sprite data writes to conform to Mr. Lawsons Unlock test code. 16. Improved performance and compliance of palette changes. Changes make direct draw in a window easier, out's that write to the palette and another device will function correctly and its all faster. 17. Adjusted positioning of the code for detecting left/right border colours and their translations into the destination format. ---+++*** JUPITER ACE RANGE ***+++--- 1. Emulation was failing to use the memory setting supplied in the '.INI' file for amount of hardware memory to allocate. It was allways 49k. 2. Added support for Paul Robson's '.ACE' format snapshots. 3. Updated audio mixing to same standard as the CPC core which now gives a far better mix on TAPE I/O and Sample type replays. ---+++*** ZX80/ZX81 RANGE ***+++--- 1. Updated audio mixing to same standard as the CPC core which now gives a far better mix on TAPE I/O and Sample type replays. +----------------------------------------------------------------------------+ | Version 1.29a (24/Feb/98) | +----------------------------------------------------------------------------+ ---+++*** AMSTRAD CPC RANGE ***+++--- 1. Yet more GA int fiddling (almost looks right). 2. ASIC Sprites back in. (Very crap code so its a bit slow at the mo). 3. ASIC Soft scroll horizontal (almost right now). 4. Improved the speed of the horizontal stages routine. 5. Added in the direct_memoryread and write to shave a few more cycles of the emulation. 6. Added some decent ASIC sprite code. Asic sprites now pretty damned fast if I say so myself. 7. Fiddled with the GA a bit more. 8. Sliced another cycle or so from the video line decoder. 9. INI file settings for the memory size on each machine did not allways get read correctly and as a result the memory size was not a stable quantity. Upshot was some programs freaked. Now fixed. Prodatron Megademo now correctly Id's the amount of RAM available. 10. Improved border handling code. Should now mean that overscan and non-overscan will be the same speed unless lots of border changes occur from frame to frame (like loading etc). 11. Started using S4ct z80 instruction processing now that it is up and running. Should improve Z80 emualtion speed and also give a better approximation of the NOP cycle that CPC programmers loved (and still do) so much. 12. Fixed up more S4CT related code, far better Z80 speed now. 13. ---*** AMSTRAD USERS PLEASE READ ***--- I have greatly changed the way in which the palette translation works. This means that demos and other programs which change the palette lots of time on each frame should run a hell of a lot faster. Prehistorik II runing in medium rendering accuracy on my Cyrix 166 actually runs at full speed when those strange bars appear on screen. The strange bars should be a scrolling message generated by changing the palette many times on each line, but due to my rendering technique it has allways been unreadable (and probably will until 300Mhz PC's come down to $19.95 or so I.E. a long time away). But as I say it should be a hell of a lot faster on DEMOS and high-colour change screens. 14. True mode 2 in medium/high rendering accuracy. I was going to say that this makes CPM usable but that would be a contradiction in terms, so lets just say it makes it readable. 15. Improved palette translation. In general reducing the actual table generation by between 10-30%. Also additional checks for display status have improved this section. At long last MTMW now runs the complete startup section of Voyage93 at full speed on my Cyrix166 in low rendering accuracy mode. 16. Readjusted S4CT POP instructions to 3 NOP cycles. Kevs doc says 4 and 2 other docs disagree. I'm not sure which is right but the actual M-cycles are 4,3,3 which rounded gives 12 /4t per nop = 3 ?????? 17. Yet another re-write of the display routines to avoid horribleness that had crept in over time. Should save a small amount of time also. ---+++*** PPI8255 ***+++--- 1. PPI_init now sets the control port to 0x9B as specified in the reset state of the Harris semiconductor specification. ---+++*** SPECTRUM RANGE ***+++--- 1. Added in the direct_memoryread and write to shave a few more cycles of the emulation. 2. Improved the main cpu control loop quite a bit, should be a lot faster than the previous loop. 3. Removed some test code which I'd accidentaly left in the last version I sent out. 4. More general speed improvements, on my 166 in full screen mode it spends about 60% or the time waiting for audio-sync. 5. Improved border handling code. Should now mean that overscan and non-overscan will be the same speed unless lots of border changes occur from frame to frame (like loading etc). 6. Removed redundant buffers to lower memory overhead. 7. Fixed TS/TC2068 hi-lores translation ready for real hi-res and TV style modes. 8. Fixed TS/TC2068 refresh to 60Hz rather than 50 with 224 t-states per line and 260 lines per refresh. 9. Updated the ULA display routines to allow for all rendering levels. 10. Added INI settings for dock rom. You should now just be able to supply the dock rom file(s) and of you go. 11. Ooops the memory paging wasn't quite using the dock info correctly. That has now been sorted (I think) I don't have any DOCKROM's to try it out on so its a bit of guesswork really. 12. Hires rendering was craping over some memory. Now fixed. ---+++*** WIN95 GUI ***+++--- 1. Changed the format of the rom description and colour definition in the INI file to make it a little bit smaller, neater, easier to understand and change. 2. Changes to the redraw borders code. 3. Added in a detect for active version of directX and if it is less than 5 then strongly advise the user to upgrade at the earliest possible chance. 4. Pre-DirectX 3 users will now be unable to start MTMW to ensure bug reports are generally caused by MTMW rather than an old version of DirectX. 5. Complete re-write of the internal display interface code. This was required to facilitate different levels of accuracy on the rendering of the emulated machines. Now allows for scanline and hi-res modes. 6. Added the Rendering accuracy option under the screen line of the main bar. 7. Changed the palette start for 8 bit mode to avoid some clashes with some Win95 requesters. 8. OOOOPS palette entries failed to be swapped has caused invalid menu colours in full-screen mode for a while now, Tis fixed. 9. Fixed the requesters again so if the screen is in FULL-SCREEN mode and a requester is opened and the screen <512x384 then it drops back to windowed mode for the duration of the requester. 10. Sound ON/OFF now actually functioning as per request. 11. If you select the mode that is currently active it no longer causes the emulated machine to reset. ---+++*** JUPITER ACE RANGE ***+++--- 1. Prepared the main core files for the jupiter ace, should have most of it up and running quite quickly thanks to the help of Mr. Paul Robson (author of ACE32). 2. Patched the TAP->TZX translation to add the filenames correctly to the tape menu. Jupiter ACE file headers are somewhat different. 3. Fixed screen redraw at it was displaying lines before 0. 4. Current tape now stored/restored in INI file. 5. Mirrored memory 2000-23ff at 2400-27ff as the tape routines read the filename from one but the OS writes it to the other. 6. Mirrored memory 2800-2bff at 2C00-2Fff as TURTLE.TAP writes to one to define the turtle characters, however the OS writes it's charset to the other. 7. Remapped keyboard rather than using incorrect spectrum keys. Hell who wants to press X to get Z and M to get N, never mind pressing Z to get Symbol shift. 8. Improved border handling on overscan mode. 9. Converted line rendering to ASM to increase speed. 10. Updated the display routines to allow for all rendering levels. ---+++*** Z80 ***+++--- 1. Adjusted operation of the JR cc,d to allways read the next PC byte, this should ensure closer emulation of the cpu contention. 2. One dummy read and right page is now used one all the cpu's rather the a read and write page per machine. Lowers memory overhead. 3. Ensured all Z80 and main ASM functions are now aligned on 32 byte boundaries. I've been told this can help the cache a lot. 4. Codegen automatically now removes duplicate routines. 5. Started adding in the stretched 4 t-state handling for better and faster CPC Z80 emulation. 6. Adjusted t-states for INT 0/1/2 and NMI to be correct. 7. Completed s4ct handling. 8. All machines can now be in the z80 loop for >1 instruction thanks to the correct s4ct handling, as a result better performance. 9. Having the machines in the z80 loop for >1 showed up a register corruption that may have been causing spurious crashes. Now well and trully fixed. 10. Prefix codes were allways using the NO_MEMORY_CHECK version of the READ_B. This would have caused all prefix codes to be to quick if running in contended RAM. Now sorted (well ard). 11. Fixed some incorrect NOP timings for POP's, RST's and a few others. 12. Fixed incorrect function jump tables for S4CT handlers. ---+++*** TZX ***+++--- 1. Rewrote CPU time slice interface to remove a huge problem causing the actual tape signal only to have the same approximate resolution as the t-states per scan line. TZX/CDT files should be a hell of a lot more reliable now on all platforms. 2. Fixed a bug in the pause block where if the pause was 0 it would continue on fine, otherwise it would pause until user unpaused it. Got the compare the wrong way around. ---+++*** AY-38912 ***+++--- 1. The Hardware enveloping was bust. Tunes now sound a lot funkier, things like Prehistorik II, Prodatron Megademo ETC now actually have the proper sounding digital base. 2. Changed volume to be LOG rather than linear to sound more like the original chip. It gives it a greater ambience and volume. 3. Ooops fucked up the second line of the envelope data, now fixed. Funny how you spot these things when your explaining it to someone else. Tah JS. 4. Expanded a macro slightly to avoid secondary memory reads. 5. Fixed initial rate from 44010 to 44100 (helped on some systems). ---+++*** ENTERPRISE ***+++--- 1. Initial slow and dodgy emulation added. 2. Initial screen functions (god they are slow). 3. Initial support for the EXDOS rom and its IO ports. 4. Fixed initial setting for port 0xb4 to 0x30 to stimulate interrupts. ---+++*** ZX80/ZX81 RANGE ***+++--- 1. Converted line rendering to ASM to increase speed. 2. Improved border handling code. Should now mean that overscan and non-overscan will be the same speed. 3. Updated the display routines to allow for all rendering levels. +----------------------------------------------------------------------------+ | Version 1.28a (29/Oct/97) | +----------------------------------------------------------------------------+ ---+++*** AMSTRAD CPC RANGE ***+++--- 1. Started yet another re-write of the CRTC, looking better this time. 2. Prehistorik II runs fine with the new CRTC but its still not right. 3. Changed interrupt serving. 4. Fixed plus palette. 5. Fixed plus DCSR. 6. Burning rubber works mostly, as does prehistorik almost. 7. Changed IRQ handler again. 8. Burning rubber no longer works but fluff runs and prehistorik plays its DMA music. 9. Oooops fixed border clear on plus. (wasn't using right colour). 10. Loads more GA interrupt fixes, JSW now splits properly and Mission genocide works. Burning rubber now also sync's properly. 11. Re-enabled display of CRTC Vertical adjust period. Genocide and prehistorik look nicer at bottom of splits now. 12. Massively speeded up the colour translation table building, this will help on demos with lots of copper like effects. 13. Implemented a secondary SC counter for the ASIC splits. 14. Meddled with my GA again. 15. Major re-write of PPI. Starglider and firelord now function without any kludges. Firelord uses SET/RESET bit n of Port C data. Starglider required correct reads of port C. 16. Amstrad TZX files no longer pause in between blocks for 2 secs. This was fixed by the correct port C read on the PPI. The OS allways thought the solenoid was of so waited for 2 sec's till it was up to speed. 17. Fixed PPI hard wired links. 18. Added in user selection of GATE ARRAY type for each machine via the INI file. CRTC types 0-5 currently defined. 19. Something I've done has broke Cauldron III again. I'll investigate. 20. Changed GA interrupt inhibit handling again. 21. Slight fiddle with the ROM again. ---+++*** AY-38912 ***+++--- 1. Ay now correctly handles the BC1/BC2 and BDIR signal into and out of its chip. Allows amstrad funkiness to occur with the AY and PPI. ---+++*** SPECTRUM RANGE ***+++--- 1. Oooops SLT files may have had slight (understatement or what) problems loading. This should now be fixed. 2. Wow LLT also now working (or it looks like it). 3. TAP/BLK files are now internally converted to TZX files. Yes I know what you're all going to say 'But isn't that slower at loading'. Yes but I intend to put in a feature to allow you to fastload STD datablocks under TZX. 4. Doh. In fixing the TAP/BLK file stuff I slightly upset the TZX/CDT stuff. Now sorted and no-one will ever know :) 5. Changed TAP section identification to use the actual header name. ---+++*** WIN95 GUI ***+++--- 1. TZX/CDT tape files now have a properties sheet for all of thier info. Authoring info, instructions, hardware specification. 2. TZX/CDT 'group starts' are now listed with the 'text description' blocks as valid points to rewind/fast forward to. 3. TZX/CDT message blocks are now actually interpreted. 4. The 'PAUSE' key now pauses/unpauses an active tape file. 5. Reworked the TZX handler slightly, better comments and structures. 6. Changed audio handler slightly. ---+++*** ZX80/ZX81 RANGE ***+++--- 1. Have actually been sent some decent documentation so I am now starting to progress with the STD video display circuitry emulation. Many thanks to Mr. W. Rigter. 2. Yes,yes,yes. Thanks to that wonderfull document, 5 pots of coffee and 8 paracetemols I now have a ZX81 running and looking good. 3. Patched the tape output port to the sound mixer. 4. Patched the tape input port to the sound mixer. 5. Investigating ZX81 tape format. 6. Added current snapshot and tape to the internal structure need to re-vamp it and ensure all INI settings a READ/WRITTEN. 7. Removed tape output from sound mixer cause of out(ff)/in(fe) kbd stuff. Just won't give the effect I wanted. 8. .P files are now internally converted to .TZX files and load, although it looks like my h/v/nmi generators aren't quite right as all of the programs I've tried seem to crash rather quick. 9. Fixed .P->.TZX translation and they appear now to work. 10. Added in Wilf Rigters True Hi-res hardware patch to the emulation, don't know if any hi-res works yet though as I haven't brought those files home. 11. Last Tape file accessed is now saved out to INI file. ---+++*** TRS80 RANGE ***+++--- 1. Couldn't make much progress so I decided to add the first parts of the TRS80 shell. Menu options and base computer carcass now inserted and compiling fine. +----------------------------------------------------------------------------+ | Version 1.27a (29/Aug/97) | +----------------------------------------------------------------------------+ ---+++*** WIN95 GUI ***+++--- 1. Added another flag to the setting section of the ini file to allow the allways on top flag for the window to be turned off. [Settings] allways_on_top=1 2. Revised the RESET button to allow for more options E.G. multiface. 3. Tape format menu now defaults to an 'All tape formats' section. 4. Added voc into the menus of tape formats allthough it doesn't do much yet. 5. Allways on top flag seems to be forgotten after a full-screen experience. Investigating. 6. Recieved Direct X 5 final. Had to make a few changes from DX5 beta but all appears OK now. 7. Fixed TZX tape file pauses and closing. TZX now has 2 pause types an internal one I.E. 1. Pause_block(0) or menu pause 2. Soleniod pause (CPC and other machines can control the tapes on/off automatically). You can now play R-type, Agent-x, Lyra-II and many others. 8. Added TZX File sections to tape menu to allow you to fast forward and rewind the tape to beginning of levels/tape. Handy for Agent-x and others of a similar type I.E. Multi-loaders. 9. Split of the compat. section of this doc into a separate file called COMPAT.TXT makes it easier to read. ---+++*** ZX80/ZX81 RANGE ***+++--- 1. Still trying to get hold of some decent info on the damned thing so I'm resorting to rom disassembly. ---+++*** AMSTRAD CPC RANGE ***+++--- 1. Added the first hooks for Multiface II as suggested by Kev. Thacker. 2. Added rest of Multiface handler. It now appears to work fine under general test conditions. 3. Before you ask I do not have or know of any location that any of the multiface roms can be obtained from. So don't bother to ask me. The multiface rom is still considered to be in copyright as far as I have read and therefore should not and will not be distributed with this program. |Rant mode deactivated| 4. Amstrad CDT tapes are now closed on reset. 5. Removed clearing of Multiface ram on reset to allow for MFRAM resident programs. ---+++*** SPECTRUM RANGE ***+++--- 1. After the success of adding multiface support on the CPC range I have now added Multiface 128 support. I works most of the time but I've noticed problems sometimes when it returns to the frozen program and the program remains frozen. Currently under investigation. 2. Changed the operation of an interrupt. If it is not serviced straight away (IFF1!=1) then it is thrown away. This was causing problems on return from the MF128 as an EI could be sent and then before the MF128 had disabled itself an IM1/2 int came along and jumped to the MF128 int handler which does RET. And therefore IFF1=0 IFF2=1 (DI). Any comments on this throwing away would be handy,see "QUESTIONS FOR ALL YOU TECHNO-HEADS" section 6. OOOOOOH Sexy, I've just discovered that fixing this also fixes some problems with Commando 128. Now removed from incompatability list Commando 128 - Prints part of the Published by thing and then stops responding to keypresses but still scrolls and plays the music. 3. Modified the TS2068 memory map to use SNA/Z80 compatible banks 5,2,0. This now means that SNA and Z80 programs could be selectively loaded in TS2068 mode, still some minor problems to get rid of first though. 4. Major work on the TZX handler in preperation for proper TZX menus. Jump to relative block should now function internal to a TZX file. Ready now to fix pause key conditions. 5. Spectrum TZX tapes are now closed on reset. 6. Way hay MDADEMO.TZX now works, maybe due to the interrupt handler changes as mentioned in point 2. Also SIL5.TZX now loads and runs. 7. Removed clearing of Multiface ram on reset to allow for MFRAM resident programs. 8. Added another flag to the ini file to allow <128k models to have a AY located at the same place as the 128k AY. [Spectrum] enable_128_ay_in_48=1 This helps with some demos snapped under 48k that have 128k sound. 9. Spectrum keyboard is now updated only once every 50th of a second like the joystick. This make IO port access faster. If a different layer of the kbd is requested it will still re-read it. Helps on games which repeatedly sit there at the start playing music and waiting for any key to be pressed. 10. Ghosts and goblins flicker appears to have been fixed by certain recent fixes. Ghosts'n'goblins- Flickers unacceptably. +----------------------------------------------------------------------------+ | Version 1.26a (27/Jul/97) | +----------------------------------------------------------------------------+ ---+++*** SPECTRUM RANGE ***+++--- 1. Ooops TS2068 video memory was not acting as if it was contended, now fixed. ---+++*** ZX80/ZX81 RANGE ***+++--- 1. More general systems tied in but no actual runtime execution yet. ---+++*** WIN95 GUI ***+++--- 1. Certain users have been experiencing problems with full-screen mode. The problem has been that the screen is still small. Hmmm I said to myself what would cause this..... Aha what if the drivers they had for DirectX did not support the lower res modes I was using. And that was the problem. The ATI 3d-rage II and S3 Virge drivers support lovely modes like 320x200,320x240,400x300 etc. But after trying out the latest S3 Trio 64V drivers on my sons P100 I discovered that he had the same problem. To solve the problem I have added in PIXEL DOUBLING on full screen. If the video card supports the resolution requested it ignores the current status of the DOUBLE SIZE option on the menus and just goes for the exact mode. If it can't find this however it now searches for a pretty appropriate mode to double up into. E.G. if no 320x240 present it will look for 640x480 and double into it ***NOTE*** : This doubling up code is currently pretty crap so it is by no means fast. However it does give a full screen option to users with out-dated display drivers. Or cards from manufacturers who can't be arsed updating their old drivers. If you card supports these modes under DOS but not under DirectX email you card manufacturer and ask thier support staff why not. 2. The file LOG.TXT now contains extra information on which video modes your video board and current driver support. +----------------------------------------------------------------------------+ | Version 1.25a (23/Jul/97) | +----------------------------------------------------------------------------+ ---+++*** SPECTRUM RANGE ***+++--- 1. Cleaned up port access stuff a bit. 2. Added TS/TC2068 normal screen,secondary screen and extended colour screens are all handled but no hi-res yet. EXROM and DOCK selection and paging are all working and its looking pretty good. Oh and the TS2068 AY chip is plugged in. If anyone has some TS2068 enhanced software could they please try it and tell me what happened. +----------------------------------------------------------------------------+ | Version 1.24a (25/Jul/97) | +----------------------------------------------------------------------------+ ---+++*** ZX80/ZX81 RANGE ***+++--- 1. Put together most of ZX80/81/TS1000 shell. Options now in the INI file and rom/memory initialisation is performed. Hopefully ZX80/81 emulation will actually be running in the next rev. ---+++*** AMSTRAD CPC RANGE ***+++--- 1. Some modifications to the PLUS emulation. 2. The "colour_monitor" option in the INI file is now actually used, so if you wish to be the proud owner of a CPC with green screen monitor change "colour_monitor=1" to "colour_monitor=0". ---+++*** SPECTRUM RANGE ***+++--- 1. Added the ability to have the Fuller AY box hardware on < 128k modes. Just set "fuller_ay_box=1" in your ini file, fuller joystick is not yet handled as I want to sort out the GUI section of that first. 2. Added port 0x80FD for 128k AY data reg handling as DIGISYNT.Z80 and SAMPTRAC.Z80 both used this port instead of 0xB0FD for some reason. 3. Slight changes to the way non-existant memory is handled on the 16K spectrum to try to avoid auto-detection of 48K/16K. ---+++*** Z80 ***+++--- 1. Speeded up a couple of things to do with T-state counting. ---+++*** WIN95 AUDIO ***+++--- 1. Added the following items to the INI file. [Audio] frequency=44100 resolution=16 channels=2 If your sound-card is mono then try "channels=1", if it doesn't handle 16 bit try "resolution=8", and if it doesn't handle 44k samples then try "frequency=22050". Added after an email from one of the new testers (sorry I don't have my list of names with me at home so I'll change this tomorrow if I remember). ---+++*** WIN95 GUI ***+++--- 1. Removed the LOG Z80 COMPARISON as it is no longer required. +----------------------------------------------------------------------------+ | Version 1.23a (12/Jul/97) | +----------------------------------------------------------------------------+ ---+++*** AY-38912 ***+++--- 1. Fixed hardware enveloping as it was completely guff. 2. Fixed hardware translations as they could under extreme circumstances wrap and cause popping. 3. Optimized the hell out of the line mixer. There now seems little point in converting any of it to asm. 4. Port A (and B) are now handled as function calls. Makes life a bit simpler internally. Yes I know the AY 38912 didn't have a B port but some compatible chips did. And they may be needed for the other machines I want to emulate like the MSX. ---+++*** SPECTRUM RANGE ***+++--- 1. 128K SNA format files may previously been identified as 48K ones. This is now fixed. +----------------------------------------------------------------------------+ | Version 1.22a (7/Jul/97) | +----------------------------------------------------------------------------+ Note:- A long period has elapsed since the last update due to my machine total screwing up. Over that period there have been more fixes but I can't quite remember what they all were. ---+++*** SPECTRUM RANGE ***+++--- 1. Changed the palette in the INI file to be more like the palette in X128 as requested by Mr. Tomaz Kac. If you don't like it then change it or uncomment out the old palette (don't forget to comment out the other though). ---+++*** AMSTRAD CPC RANGE ***+++--- 1. Oh my god I managed to totally screw up the memory handling and anything other than a 64k machine would have responded very badly to memory paging. This fix means that a lot of previously duff games now manage to work. Fruit-machine simulator 2, Jinxter, Impossamole, Rainbow Islands and others now actually do more than crash. Oh and I forgot Fairlight II now actually works. ---+++*** WIN95 GUI ***+++--- 1. Joystick enable/disable option added temp to mode menu. I'll leave it there until I get the preference sheet type things working. If you are experiencing a slowdown and you are using a joystick then try disabling it as PC joysticks can be notoriously slow to read. Also added enable/disable option into the ini file. 2. Anyone using a disc file in the emulator would have found that it logs all fdc accesses to a file called LOG.TXT. This now only happens if you have the LOG FDC RESULT option in the DEBUG menu checked. ---+++*** MTM.TXT ***+++--- 1. Reformatted this damn file so notepad etc could see it properly +----------------------------------------------------------------------------+ | Version 1.21a (23/Jun/97) | +----------------------------------------------------------------------------+ ---+++*** AMSTRAD CPC RANGE ***+++--- 1. Ooops got the joystick directions round the wrong way. ---+++*** WIN95 GUI ***+++--- 1. Full-screen mode code has had a drastic shakedown. Each machine now requests a certain video page size and depth and the code attempts to find the best match. If this match is larger than the requested size then a window the size that was requested is displayed on this page. The sizes requested are :- Standard Overscan Spectrum 320x200x8 320x240x8 Amstrad 320x200x8 400x300x8 Amstrad plus 320x200x16 400x300x16 2. Any portion of the video window not scanned by the display hardware is now set to the current border at the time the VSYNC occurs. This is really only relevant to the Amstrad. Changed in response to questions by Mr. Speccy. 3. Joysticks 0 and 1 are now only polled 50 times per second rather than on every access to thier hardware port. Not really what happens on these machines but if any game actually needs changes within 1/50 of a second then I'd be amazed. 4. Joysticks are now ignored if they are unplugged. ---+++*** Z80 ***+++--- 1. Looks like the DAA instruction is playing up again, time to reinvestigate. ---+++*** SPECTRUM RANGE ***+++--- 1. A few more tweaks to the cpu-rate conversion factor in the TZX handler +----------------------------------------------------------------------------+ | Version 1.20a (16/Jun/97) | +----------------------------------------------------------------------------+ ---+++*** SPECTRUM RANGE ***+++--- 1. PC Joystick now appears as kempston joystick. 2. Made a few fixes to the TZX code, TTRACER and some others now load fine. ---+++*** AMSTRAD CPC RANGE ***+++--- 1. PC Joystick now appears as JY1, supports button A and B. ---+++*** Z80 ***+++--- 1. Made some changes to the CP instruction, still not behaving but I am not very happy with the whole ADD/SUB/ADC/SBB/CP code generator section. +------------------------------------------------------------------------------+ | Version 1.19a (14/Jun/97) | +------------------------------------------------------------------------------+ ---+++*** SPECTRUM RANGE ***+++--- 1. Implimented baseline TZX. 2. Added TZX compatability list to top of MTM.TXT based on my own tests so far. 3. Changed spectrum overscan display from 320x200 to 320x240 as requested by Mr. Tomaz Kac. 4. Patched data returned from an undefined ula port (i.e. VR data) not sure if this is and acceptable implimentation. Fixed stall problem with Cobra may fix flickering problems on other games. 5. Partly integrated other joystick types and fuller/ts2068 ay chips. Nothing should be visible yet but hopefully in next rev. ---+++*** Z80 ***+++--- 1. Verified T-state timings for all instruction groups, also changed how refreshes are handled. ---+++*** WIN95 GUI ***+++--- 1. Changed how the file menu is laid out as it was getting to big. 2. Fixed accelerator keys (it helps if you use the right part of the MSG). 3. Changed windows border style to stop resizing. 4. Changed accelerator keys to be more in line with ZX32, no point in defining yet another (non-)standard layout for keys. 5. Only reverts from full-screen to GDI while a file window is open. +------------------------------------------------------------------------------+ | Version 1.18a (10/Jun/97) | +------------------------------------------------------------------------------+ ---+++*** WIN95 GUI ***+++--- 1. Integrated DirectInput to ease keyboard problems. 2. Removed DirectInput because its shit and its slow. 3. Fixed problems when task was put in background and it would never happily :-) return to the foreground when asked nicely. 4. Removed the minimize button as it was pi$$ing me off. 5. Added high_priority=0/1 to the [settings] section of the INI file, this will up the processed priority to give it more task time. +------------------------------------------------------------------------------+ | Version 1.17a (9/Jun/97) | +------------------------------------------------------------------------------+ ---+++*** SPECTRUM RANGE ***+++--- 1. Fixed flashing which I cocked up in v1.16a ---+++*** WIN95 GUI ***+++--- 1. The INI file is now local to the EXE rather than stuck in the WINDOWS dir. 2. Spectrum and Amstrad colours are now redefinable in the INI. +------------------------------------------------------------------------------+ | Version 1.16a (5/Jun/97) | +------------------------------------------------------------------------------+ ---+++*** Z80 ***+++--- 1. DAA was not operating correctly under all conditions. Example exact behavior on a real CPC and have hopefully fixed it. 2. All undocumented instructions I could find reference to have now been added. 3. The Z80 Cpu code generator now produces both 'C' and ASM so as a result the latest version now runs with an ASM cpu core. 4. NEG was simplified down to a table lookup to improve efficiency. 5. HALT well I really f#(<$d up here didn't I, in previous versions on entry to an interrupt when halted the address on the stack would be pointing at the HALT rather than the instruction following, now well fixed. ---+++*** PPI8255 ***+++--- 1. Changed the behavior of the internal input output gating, I'm still not happy with its operation though. Some games still refuse to accept input unless a vile kludge is in place, and some don't even work with the kludge. E.G. Gun fright/Firelord/Starglider. ---+++*** AY-38912 ***+++--- 1. Completely changed the operation of this device from an interrupt based mixer to a line based mixer. This was necessary for mixing in the Spectrum speaker and getting the CPC+ audio dma to be happy. You can now hear sample playback (cool). 2. Hardware enveloping is improved but still not right. ---+++*** FDC 765a ***+++--- 1. First five of the FDC commands are now implimented allowing you to read .DSK files for the CPC and Spectrum +3. If an undefined command is passed to the pseudo-controller it will terminate immedietaly. ---+++*** CRTC ***+++--- 1. Rewrote the main hsync/line counter code some more programs that use split screen modes and hardware splits now work. Some which previously worked now do not. This is the chip I am least happy with at the moment. 2. Added CPC+ palette handling and screen redraws. 3. Added CPC+ hardware sprites. 4. Added CPC+ scrolling and split screens. 5. Added CPC+ line based DMA/interrupts. ---+++*** AMSTRAD CPC RANGE ***+++--- ---+++*** SPECTRUM RANGE ***+++--- 1. Rewrote video display routines so each byte with attribute involves only a few table accesses and two long word writes. Should speed up display by a good deal. ---+++*** WIN95 GUI ***+++--- ---+++*** WIN95 AUDIO ***+++--- +------------------------------------------------------------------------------+ | Version 1.00a-1.15a | +------------------------------------------------------------------------------+ ---+++*** Text removed to protect the guilty ***+++---