============================================================================== Ddd 13-Mar-2000 (áeta 31) version 0.2.4 ============================================================================== úI've changed my DJGPP from v2.02 into V2.03 (GCC version is now 2.952). Everything seems OK... úVGA 320x200 mode is now a 50 Hz mode (which seems to work in any monitor). In 50 Hz mode now everything moves VERY smoothly (anyway there isn't VSYNC still, because then SB sound gets unsynchronized). Thanks to Ra£l G¢mez for tweaking the standard VGA 320x200 mode. úSB-Mixing added... Sounds nicely !!! PSG, keyclick, save sound, and both "PCM's" (1 and 4 bits) are there... ALL KIND of melodies are clearly recognisable... Anyway, SCC waves are still square-waves, so I'll have to change it in the future... Thanks to Ra£l G¢mez for sharing many afternoons of SB-Code tracing here and there, with my SB 128 PCI and his (crappy) SB 64 PCI! ;)) Anyway I still LOVE how the GUS sounds, it kicks the CRAPPY SB's in their asses... Having both the IW/GUS-PnP and the SB 128 plugged at the same time in my PC is somewhat terrible now: I can launch Winamp and Sonique at the same time!! Is this cool or what ?!?! (Anyway, it's REAL useless also !! :)) But launching Winamp with the GUS (SUPERB SOUND), and MSKISS with the SB 128 PCI at the same time REALLY ROCKS!!! Anyway, there are still some problems: in NO-Sound mode (or GUS mode), when you quit MSKISS, the PC might get locked in some rare cases. The solution is easy: PRESS TWICE CTRL+ALT+END and Allegro will finish MSKISS cleanly. I don't know why this happens. Another problem is that Arkanoid and some other HALT-Loop-Based Main-Menu games (Thexder, etc...) don't sound at all or they sound jerky... I have some problems in my MSX-IRQ-Engine (for example, HALT opcode locks the whole debugger when tracing with F7/F8!! CTRL+ALT+END to unlock...) úMegarom Mapper #2 detector corrected. (Kings Valley 2 (MSX1 and MSX2)), Pennantlers 2, etc...) úChanged the directory layout for many needed files... (BIOS, DSKS, STAS, etc...) úRewritten the STA loader (Press F9), and the DSK Browser (Press F8)... Now I have many ideas that will allow me to improve other parts of the MSKISS interface still more!! (I HAVE SOME PROBLEMS WITH ".." DIRECTORY SOMETIMES AND I HAVE A SEVER LACK OF TIME TO FIX IT... SORRY) úVRAM R/W ADDRESS is now correctly treated. (Teenage Mutant Hero Turtles) ú"-ifreq" command line parameter no longer exists. Now you have to type -pal or -ntsc to force a specific VDP frequency. If you omit the -pal or -ntsc parameters the VDP freq will be the default one depending on the BIOS used. Note that MSX2, MSX2+ and MSX Turbo-R could change their VDP freq anytime, so maybe even you could be forcing -pal frequency (for example) the BIOS-es of these MSX models will surelly change to NTSC mode by themselves... úLine-by-Line renderer added... to enable it, just type -linerender at the DOS command line of MSKISS, or enable the "linerender 1" parameter in MSKISS.ini... (VIDEOMODE 1 WILL BE FORCED WITH THIS RENDERER !!!!) THIS IS A HIGHLY EXPERIMENTAL MODE, and it's there only for the curious people... IT'S STILL SLOOOOOOOOOOW... Try Metal Limit demo disks (Rhapsody Part II), Peach Up 8 Disk 1 (Mirror Maze intro), and MANY other COOOOOL pieces of code... Aleste, Xevious, Ashguine, Undeadline want to work MUCH better (specially in MSX-2 mode)... Doing color 1,2,3:color2,3,4 from BASIC now works as expected! :). There are NOT sprites though... only screen 0,1,2,3,4,5,6,7 and 8 work minimally ok... úSlight bug corrected with sprites mode 2 and color 0, (aleste, aleste gaiden, xevious, firebird doors, solid snake crawling) but still not happy... I think I'll have to emulate CC bit (and so, sprite collisions, argh!!) úChanged my ALLEGRO 2.0 into ALLEGRO 3.12 (Argh... I'm REALLY scared !!) Now joystick support has gone because allegro 3.12 treats it differently... I can notice a bit slowdown maybe ?! BTW now I've remmaped the MSX keyboard, and the PC extended numeric keyboard acts like in a MSX-2, now listening to Martos SCC Disk is wonderful! :)) úChanged a lot of macros in my Z80 and now it's faster... úMassive rewritting of the IRQ engine to start treating H-Interrupts. Golvellius 2 now works, Super Cooks also, F1-spirit 3d, etc... aleste, xevious, The normal screen renderer isn't still updated line-by-line though... MANY bugs corrected also, like circus charlie, Thing Bounces Back, Head over Heels... Anyway Vampire Killer intro still resets MSKISS in 50 Hz mode... I WILL HIGHLY WELCOME ALL KIND OF INFO ABOUT THE DIFFERENT NUMBER OF LINES OF EVERY MSX MODEL, THE NUMBER OF T-PERIODS OF EACH LINE, ETC... BTW, Emuleca now detects MSKISS as an emulator again... I hope to fix it again... úCrappy support for Screen offset register (VDP[18] horizontal 4 bits). Now M_limit demo disks, "Sd-Snatcher bullet hits" and many other pieces of code work better. Anyway this feature of the VDP WILL be rewritten, as now I've implemented it in a crappy way... úTRUE inlining of many functions that dramatically needed it... Now screen 0, 1, 2, 3 and 4 renderers are REAL FAST... úI've rewritten the V9938 logical operations engine... Now I've inlined them in the VDP code, so they're FASTER and 100% correct compared with the old engine... úVDP command 10 (LMCM) tried, but not 100% OK (Aleste-2, Majutushi, ...) úVDP command 15 (HMMC) DIX and DIY bits support added (Aleste, Aleste-2) úTried VDP command 11 (LMMC) rare behaviour (Cracked Rastan-Saga loader Scroll), but I'm not 100% happy... Try BrMSX or a REAL MSX to see the real effect. úFULL support for LINE VDP operation (I've rewritten it from scratch implementing ALL orientations and logical operations...) Now "Ultimate.dsk", "F1-spirit 3d", "Burai" intro, "wanderers from ys" demo... don't hang your PC dangerously anymore... úIf I read from VDP port 99 and the VDP was waiting for the second byte, now the VDP resets its status, and waits for the 1st byte again... (Disc Station #0, #1, etc...) úVDP command 13 (HMMM) limits fixed again. úScreen 8 sprites color corrected... Columns sprites seem OK now... ú32KB Kanji BIOS mapping corrected in MSX2+ and MSX Turbo-R modes... úScreen 5 interlaced corrected (CALL KANJI3 uses Screen 5 interlaced). Screen 12 interlaced corrected also. (Thanks to Sergio Yukio and the NICE AMOUNT of programs he has sent to me for testing Screen 12! :) úMSX-DOS-2.2 mapper added... I don't know if msxdos-2 support is correct (I think that it does NOT work because MANY patches are needed)...I don't know the exact behaviour of a MSX under MSX-DOS 2... at least many things seem right... RECOMMENDED TEST: Boot MSKISS in MSX2+ or MSX Turbo-R modes loading msxdos22.rom as cartridge #1, go to BASIC, type "CALL KANJI2", and return to DOS-2 with "CALL SYSTEM". IS THIS COOL OR WHAT!!!?!?!?!! :))) (If you have a original MSXDOS 2.2 Disk, just type "KMODE 2" to achieve the same result...) úChanged the FM-Pac BIOS used in TURBO-R mode... Now it's always detected... úMegarom Mapper #0 corrected... Megaram Support is 100% perfect now, "Game Master 2" works perfectly with ALL Konami megaroms, "Firebird + King Kong 2 + F4" combo works, etc... úHydlide 2 sram properly ignored... Now it doesn't make MSKISS crash... SRAM implementation will come in the future (I hope...) úSCC implementation changed. Now it's perfectly autodetected by MANY programs because the wave-forms of the channels act like RAM. But now I've had to change "Solid Snake" mapping from type #0 to type #2 (as it should be). úIf you want to use a .DSK file and DISK.ROM is not present in the BIOS directory, the emulator won't boot, and an error message will pop up. úScreen 4 corrected, and so, readded... "Ninja Kun" and "OutRun" work perfectly now... "Pennantlers" and "Space Manbow" (with -videomode 1) run not bad... ú"-frame" command line parameter corrected... Now you can specify more command line parameters after "-frame"... Thanks to Ryan Novak (Author of MSKFE (MSKISS Front-End)) for the report... ============================================================================== Tue 7-Sep-1999 (áeta 30) version 0.2.3 ============================================================================== úVDP command 06 (SRCH) implemented, but seems not to be working... (!?) úVDP command 11 (LMMC) logical operations rewritten from scratch, and many bugs they had, have been corrected. Now "Wanderers from Ys" demo (FROM STOP GAME MEGADEMO DISK!! NOT THE GAME ITSELF !!!) Screen 6 part works perfectly. Some "Majutusi" kanjis in the game appear with the right background (black), Master of Monsters menu now appears ok, etc... úFirst tests with interlaced display... Uncle Brazil intro (Abyss Logo) works, Some "Alice Soft" demos in DS #22 and #19 work also, Unknown Reality promo also shows interlaced logos properly, "Short" (NOP) demo also seems to do nice things in Screen 8, "Wanderers from Ys" demo (FROM STOP GAME MEGADEMO DISK AGAIN!!) also seems to have some Screen 6 interlaced texts, etc... (I have NOTHING MORE TO TEST ! :( úMore filtering of strange values of NX,NY,DX,DY,SX,SY registers in some VDP commands... Intros of Disc Station #1, #2, #3, #4, #5, #6, #28 work now... Columns no longer flickers and is near perfect... Tetris graphics are OK now... Aleste Gaiden intro works better, Zanac-EX boots perfectly now, SD-Snatcher graphics are 100% perfect now, Rune Worth intro is 100% perfect now, AND "USAS", "KING KONG 2" AND "GOEMON" SPRITES ARE FINALLY VISIBLE! (argh!) úEnhanced support for bit 5 of VDP status register 2. Now MSX logo appears with the correct speed in MSX-2 mode (still a bit slower maybe). Anyway, Dragon Slayer VI intro now seems to run at the correct speed... úFixed VDP Command 14 (YMMM) when DIY=1. Now Xak 2 intro is 100% perfect, and Emerald Dragon game works better (but still not perfect...) úFixed VDP[8] bit 5 behaviour when setting the palette. I was treating TP bit backwards !! Now "Contra" Konami logo appears with the right background color... Anyway I still have some problems with this VDP bit and some flicker when changing the palette... úFixed indirect setting of the VDP[1] and VDP[2] registers. Fixed also VDP command 12 (LMMV) when NX=0. Now finally ALL Screen mode switches work and clear the screen properly... Snatcher seems to work perfect now... I've discovered also a bug in YAWARA music player, which goes to Screen 5 when you launch it in MSX-2 mode in Screen 0 (width 80)... I was thinking that MSKISS was buggy ! :) úFixed VDP[0x0E] register behaviour. Now the VDP address changes also when this register is set before the 0-14 lower bits. Now aleste 2 main menu finally works... úFixed a bit megarom mappers 0 and 5("Druid", "Elslid", "Sungma" and "Gall Force" work again). úAND and TAND logical operations fixed in some VDP commands (I hope)... Now Rune Worth intro, Tetris intro, Burai intro (HOPEFULLY AGAIN!!), and some others work better... úZ80: Rewritten from scratch OUTI/OUTR/INI/INIR/OUTD/OTDR/IND/INDR ED opcodes to fix MANY flag bugs they had... Now "Record of Lodoss War" works... ============================================================================== Fri 23-Jul-1999 (áeta 29) version 0.2.2 ============================================================================== úVDP operation 7 (LINE) was causing the well known SD-Snatcher BUG !!!! I only had to filter SX,SY,DX,DY,NX,NY in a different way, and SD-Snatcher is 100% playable now! (even it still has some minor graphic glitches... :)) úVDP operation 9 (LMMM) NX,NY,DX,DY,SX,SY limits fixed, now "Uncle Brazil" intro works again... úVDP operation 14 (Y direction transfers between VRAM) implemented. Now Solid Snake main character sprite is OK, Randar 3 main character sprite works also, Gorby Pipeline tiles are visible now (I think...), Puyo Puyo doesn't flicker anymore and it's 100% playable now, Penguin Wars 2 doesn't flicker neither, Fray intro is 100% perfect and the game doesn't flicker, (in general TONS of flicker problems I was having have gone now), etc... úSlightly corrected sprites and VDP[23] register interaction... Firebird is now much more playable! :) ============================================================================== Mon 5-Jul-1999 (áeta 28) version 0.2.1 ============================================================================== úSILLY bug using C Macros fixed. Now disk writings ***FINALLY*** work. BTW, "LIKE" (This Brazilian windowish enviroment for MSX-1) works again... úRewritten from scratch (AGAIN! :) the memory system... Now MANY things are REALLY fast in MSKISS. For example, the Z80 is now twice faster (or maybe more!). It's like a beast :)... Also, when running a megarom cartridge, or messing with the memory mapper, there are no more memcpy's, and so megarom games may be up to 5 times faster! MANY memory mapper bugs have been also corrected, and so, Nemesis 1 SCC (KGC3) and R-Type (360KB disk) DO work! "NOP's Unknown Reality" promo seems to boot and wants to do something, Snatcher and SD-Snatcher kinda work! (at least, as "bad" as in fMSX, i.e. you CAN'T buy anything... :( Now ALL kind of cracked games FINALLY seem to work... But there's a bad point: Support for 0x0000 ROM's has gone... I hope to re-add it soon... Reset key inside debugger ('R') does NOT work properly neither in some cases... úFixed the return value of IN A,(0xBA). Now Xak 1 and 3 boot perfectly. (Xak 3 needs **NOT** TO PRESS CONTROL KEY when booting!!!) úThe BIOS of the MSX2+ now BOOTS (!!!), but just nothing more... If MSX2 support is still not perfect, what could I say about MSX2+ support!? It's REALLY FAR from perfect !! There's even some kind of pathetic and REALLY SLOW Screen 12 renderer though!! :) This renderer is still very primitive and needs that the VESA 2.0 640x480x32K videomode is present in your system (VESA 2.0 native or SDD)... I might use the 320x480x32K videomode, but some videocards don't have it (Hi Arnaud! ;), and the speed up is NOT noticeable because the YJK->RGB conversion algorithm is a HEAVY one, and is the big CPU consumer, compared with the HI_color VESA 2.0 dumper... If the HI_Color mode is not detected, or you use the -videomode 0 or -videomode 1 command line parameters, a crappy conversion to 256 colors will be done... I suppose it's better than nothing... Now you can try F1-Spirit 3D Special (Demo screen), Master of Monsters, both disks of Super Laydock Special, Quinpl Intro, Nyancle Racing intro, Star Ship Rendez-Vous (Special Stage Michelle), Golvellius-2 (Intro Screen), some Disc Station magazines and many other games in MSX2+ mode! úBTW, The BIOS of a MSX Turbo R ALSO BOOTS!!!! But nothing more... Just like the BIOS of the MSX2+... There is _____NO_____ support for the R800 CPU!!!! It's some kind of experimental mode only... úMORE V-9938 commands added, as well as some of them rewritten, and so LOTS of bugs have been fixed. I wasn't checking for strange combinations of SX, SY, DX, DY, NX, NY, DIX and DIY values which caused strange writings "outside" the VRAM, so chunks of the Z80 MEM were being overwritten with strange data. Now I ALWAYS write inside the VRAM, and so, "Uncle BR" intro works much better now! There are also TONS of other pieces of code that work better (Columns, Burai intro, Aleste, Contra/Gryzor, Famicle Parodic II, Fray, Xak, etc...). úVDP[23] register (Vertical Offset), correctly handled for ALL screen modes (5,6,7 and 8), with much better sprites support also. Just a bit more work needed. úFaster Screen 5, 6 and 7 rendering. (screen 8 was already fast! :) úFixed some bugs of my autodetecting VESA 2.0 routines... Now VESA 2.0 works perfectly with Diamond Stealth (and probably some other) video cards... Thanks to Arnaud de Klerk (TFH/Fony) for some reports... BTW: For the moment, my VESA 2.0 routines are still crap, and Matrox videocards are (hopefully) NOT supported... These cards should be eradicated from this world... They are a BIG source of problems... Anyway I'll try to add support for these cards in the future... Please, don't mail me telling me that Matrox videocards don't show proper VESA 2.0 videomodes... I know it! úHorizontal/vertical LINE vdp-operation added/corrected for screen 6, as well as pset vdp-operation corrected for ALL msx2 screen modes (5, 6, 7 and 8). Now MSX logo appears correctly when booting in MSX-2 mode. Line-Command logical operations are still not implemented though... úPSG Bars graph added for Hi-Resolution modes. úRewritten entirely the pathetic ROM loader. Now it's not so pathetic, because the ROM list is ordered alphabetically and you can go straight to the ROM you want (or almost) with a keypress. I don't know if I've also fixed some stability problems the ROM loader had in certain PC's... Anyway, unless I rewrite it from scratch, I'm probably going to remove it soon... úSupport for KANJI128.ROM and KANJI256.ROM in MSX2+ and MSX Turbo-R mode... Anyway, I don't know if it's already working... At least Burai intro seems to show the correct kanji's... úMANY fields of the MSX 2 Clock-IC implemented. Now MSKISS boots perfectly in msx-2 mode. Thanks to Arnaud de Klerk (TFH/Fony) for the hint! ;) úMinor fixes in the display of some of the Z80 ED-opcodes of the debugger. úVDP timing corrected. Now if you read from the VDP without waiting for 30 cycles after you set the VRAM address, then you will read crap, just like in a REAL MSX. Now EMULECA.BIN program (a REAL MSX vs. MSX EMULATOR detector) detects a REAL MSX with MSKISS!! (Thanks to Ricardo Bittencourt for providing emuleca.bin program on his web...) ú"Slight general" sped-up of the whole emulator. Now I code the "for" loops in a different way... The sped-up IS NOT impressive, but it's MUCH better than nothing... úGeneral bug-fixing/rewriting/code-cleaning of many parts of the emulator like the V9938, some I/O ports, some IRQ stuff, etc... ============================================================================== Mon 22-Feb-1999 (áeta 27) version 0.2.0 ============================================================================== úRewritten entirely the memory system. Now MSKISS can handle extended slots, without any slowdown. This IS necessary for MSX-2 emulation. úMSX2 emulation support. Now, more BIOS are necessary: MSX2.ROM and MSX2EXT.ROM for European mode, and JAPMSX2.ROM and JAPMSX2X.ROM for Japanese mode. úDISK.ROM is now loaded into slot 3, subslot 1. úScreen 5, 6, 7 and 8 renderers implemented. Still far from perfect though. They are slow as hell also! :) Screen 4 is still specially buggy. úRemoved 512x384 VESA 2.0 videomode and added 640x480 VESA 2.0 videomode. This is specially useful for Screen 6 and 7. úSome V-9938 commands implemented, (many of them partially though). Many KONAMI MSX2 games work somewhat OK! (Even Solid Snake!! :) Many other games, like Aleste 2 intro, Uranai, some parts of Disk Station magazines, and MANY others are perfectly recognizable... Others, may make MSKISS crash with a "protection fault" error... úV-9938 Offset register implemented for Screen 5. Sprites are (still) not correctly handled when VDP[23] is not 0. Hinotori is now very nice, as well as "King Kong 2" items screen, Pennantlers intro, etc... úV-9938 Palette registers implemented also. úExtended sprites implemented for Screen 5 (Still far from perfect though...) úChanged the noise sample. Now it's a full amplitude, random period square wave like the PSG "noise wave". Still not perfect, but I think that now it sounds a bit more realistic. Only for GUS mode though. úFixed Megarom detector for many new MSX-2 "working" games. úZ80: Fixed EI opcode. Now ZANAC, GODZILLA and YAWARA Music Player work in MSX-2 mode! :) úAdded the ability to exit to a DOS-Shell. You have to press CTRL+D from the debugger screen. Is it useful? I don't even know, but it's there! :) I don't know also if it's safe to do it, so YOU'RE WARNED: I'M NOT RESPONSIBLE FOR ANY LOSS OR DAMAGE THIS FEATURE CAN CAUSE. DON'T EXECUTE "BIG" DOS PROGRAMS WHEN YOU'RE UNDER THIS DOS-SHELL!!! JUST USE IT TO RUN "SIMPLE" DOS PROGRAMS LIKE "4DOS 'list'", "MS-DOS EDIT", etc... Make sure also that when you type "exit", you're in the same directory where MSKISS.EXE resides. If someone detects that this feature is, or may be dangerous, tell me please! (is05562@salleURL.edu) úDifferent disk images are NOW supported within the same MSKISS sesion. If a certain game asks you to change the disk image, you can do it if you enter into the debbugger and press the 'D' key, then MSKISS will ask you to enter a disk image name. After that, press 'S' key to resume emulation. Make sure that the image you type in exists, because if not, the emulator WON'T change the disk image. úVersion number raised from 0.1.0 to 0.2.0... I think that MSX-2 emulation deserves it! :) ------------------------------------------------------------------------------ Sat 12-Dec-1998 (áeta 26) (Today, 12 Dec, is my birthday!!! Now I'm 23! :) ------------------------------------------------------------------------------ úFirst tests with MSX-2 VDP (V9938)... Just logging VDP operations... úHALT Opcode rewritten. Now the main loop timing is still faster and more accurate than ever. Now, Thing Bounces Back intro doesn't get locked in a DI/HALT neither... úScreen 3 renderer strongly corrected/rewritten (A bit more of work needed, but not very important...). Now "Rappio" (Another COOOOL Bandwagon MSX-1 demo), works 100% OK. What a pity, because I thought that I had found the remaining Z80 bugs I think I have, but no: it was a screen 3 renderer bug... argh! úCorrected a small bug in the MegaROM mapper. "Nergooli" works now. úWeird behaviour added... Some games make MSKISS crash when you enter into the debugger with F10... (?) It's a random bug, as it only appears sometimes... One known game that suffers from this, is FEUD. (?) úALT+F9 now loads a BRMSX.STA file 99% correctly. (in MSX1 mode only !!) úALT+F12 now saves a 99% valid BRMSX.STA file. (in MSX1 mode only !!) úInterface: ROM loader corrected. I wasn't freeing the last loaded Cartridge when loading a new one. Anyway, still not perfect and/or crashes on certain machines (?) úZ80: Added MOST of the dummy ED opcodes (mainly for Mappy). Now I also change to 80x25 text mode before printing "Invalid opcode". The emulator no longer hangs the whole PC (!) when the invalid opcode arrived in VESA 2.0 videomodes. úZ80: MUCH faster way to handle R register (in theory), but NO speed up is noticeable (!?). Anyway, thanks to Ra£l G¢mez for the brilliant idea... ============================================================================== Mon 26-Oct-1998 (áeta 25) version 0.1.0 ============================================================================== úMega-RAM 256 KB primitive support added. Execrom works OK, even it detects 768KB (!), but I've actually implemented 256KB only. úZ80: BIT opcode corrected. Now PV flag is correctly updated. (ZEXALL still fails though... BIT opcode is a DIFFICULT one...) úOptimized and corrected SEVERELLY IN/OUT functions. MSKISS is again faster. (And now it finally asks for date when booting disk.rom! :) úDisabled Pathetic-BIN-loader. (I needed those keys! :) ú16x16 and 8x8 sprites (without zoom) renderer optimized. Slight speed up achieved... ú"-jap" mode now starts MSKISS in 60 Hz ú'R' key inside debugger (Warm Reset) fixed. Now Warm Resetting MSKISS is as safe and solid as a rock. úAdded the ability to change the frame skip rate. You have to press 'F' inside the debugger. úAdded the ability to change the SCC/PSG balance, to correctly emulate the different mixings that some real MSX's had (Philips=110% (?), Sony=95% (?), Toshiba=80% (?), ... ). You have to press 'L' inside the debugger. úVolume Control added. (For GUS only. Press F6 and F7) úVDP is now 99% compatible with a REAL MSX-1 VDP. 99% of the RARE and undocumented features are now implemented (Try "Atselous" demo with MSKISS). I hope that the 1% undocumented features will be soon implemented. úSimple ROM loader from inside the debugger added... Press F10 to enter into the debugger, and then press F3 to enter into the ROM loader... It's still not perfect, but it's there... It's better that nothing... I suppose I'll have to improve it soon. If you have problems, use the DOS command line to load roms... úNow PSG and SCC sound have 8-bits resolution, instead of 4-bits. (GUS only). SCC is now also a 10% louder than PSG, and I think that now it sounds better... úFaster Megarom Mapper #0 and SCC handling. úBug corrected in PSG noise channel 1 (GUS only). úEnvelopes are now showed in the PSG_Bars. úKey '+' of the num-pad mapped. úAdded ed71 and ed70 opcodes (in f,(c) and out (c),0), but no one seems to use them... úImproved debugger... Well, in fact, TOTALLY REWRITTEN debugger. úOptimized still more SCREEN 0,1,2 and 3 renderers. More speed gained again. úBASIC cartridges support added... ("Ligue-se ao Expert" now works). úOptimized main loop of the CPU. So MSKISS is again faster. úIRQ bug fixed... Zanac intro now works perfectly... (TONS AND TONS of thanks Ricardo Bittencourt for the tip). úFirst tests with screen 5... Arkanoid 2 intro screen works (with a MSX1 BIOS instead of the MSX 2 one!!! Anyway this is TOTALLY USELESS in a MSX1 ! :) úSlowness problems disappeared as the exe has started to grow... The cache now acts OK (! :) So I've included again zoomed sprites, adlib support, etc... úBTW, adlib support is now MUCH better. ============================================================================== Mon 14-Sep-1998 (áeta 24) version 0.0.9 ============================================================================== /*/*/* /* /*úZoomed sprites added. (Mainly for "Coaster" and "Fantasm Soldier"... I don't /* know any other game that uses them :) /* /* BUT DISABLED because big slowness appears in MSKISS :( !!! /* /*/*/* úOriginal FM-Pac (64 KB) mapper added... For the moment, it's somewhat "useless" but it's already there... S-Ram is still NOT emulated though... First tests with VOLUME of FM-Pac channels... (I'm totally lost ! :)) BTW, PSG Volume bars now show FM-Pac Volume also. (And different instruments are shown with different colors also! :) úPSG registers 1,3 and 5 properly masked... úSound corrected... I was writing to the GUS in some parts of the sound code without knowing if there was a GUS detected. úVESA 2.0 Routines now correctly coded. MSKISS should work PERFECTLY over Hardware VESA 2.0 implementations, and not only SDD 5.3 . Anyway 512x384 video mode is still not finished, and border colors are "uncontrolled"... úSB-Digital detector added. It still doesn't sound though... /*/*/* /* /*úPrimitive Adlib/SB-FM support... Sounds as bad as hell, but I suppose it's /* normal :)) Hard work needed, but I suppose it won't sound much better... /* /* DISABLED!!!!! /* /*/*/* úWeird behaviour added... MSKISS acts SLOOOOWLY if I link the adlib.o file into the exe (!?!?) So I've disabled adlib/SB-FM support for the moment... úMinor corrections to SCC pitch. úSlightly corrected the GUS noise-freq table... Still more work needed, but now it's near perfect... I've also modified the GUS handling of the noise channels to avoid flanger (I was using THE SAME GUS DRAM region for the 3 noise channels and now I use 3 separate regions for each one of them). úMSKISS is again BRUTALLY faster that before, because I've inlined the whole Z80 into the main loop of the emulator, instead of using the Z80 via function calls. Now -frame 3 gives 95% speed even in my 486 Dx2 66... And PCM sound pitch sounds much better, so it was that my Z80 was still slow ! :) But PCM (1 and 4 bits) is NOT OK in fast computers, because I'm still not synchronizing it, and I doubt I'll be able to do it with my GUS (sigh :( /*/*/* /* /*úEnvelopes generator corrected. Now envelopes work even when the tone /* generators (bits 0,1 and 2 of PSG register 7) are 1 (disabled). /* /*úPCM corrected. Time Curb, Oh-shit, Star-Wars, Fuzzball and some other /* remaining PCM games that didn't sound, now sound very well. I was treating /* bits 0,1 and 2 of PSG register 7 not OK. I was treating them according to /* "official" docs. But now I treat them according to "unofficial" docs :) /* /* BOTH FEATURES DISABLED TEMPORALLY (clicks and beeps appear) /* /*/*/*/ ------------------------------------------------------------------------------ Mon 13-Jul-1998 (áeta 23) ------------------------------------------------------------------------------ úKeyclick (and PCM 1 bit) corrected. Now Cobra's Arc voice can be heard (anyway it is unrecognizable :)) The PCM (1 and 4 bits ) is still downpitched... The output of the cassete can also be heard now... Of course, thanks to Ricardo Bittencourt for sending me the correct and accurate description of the 0xAA and 0xAB ports. úVESA 2.0 320x480 and 512x384 video modes added... 512x384 is not finished, (Notice that there ISN'T border color), but it's already working... úSprites Renderer bug corrected. Now, ALMOST ALL sprite problems MSKISS had, have gone... (Goonies skulls, track field 1 & 2, desolator, ...). It wasn't a Z80 bug (! :). Anyway, "survivor" still shows garbled sprites in the intro screen, so there could exist some remaining bugs... úThe screen is now updated line-by-line (to help vesa2 routines) and for future MSX2 video engine. There ISN'T a noticeable slowdown. ú …ƒ„ key added (Num Lock). Code key (or "kana key" in japanese/korean bios), also added (END key). 'Minus' key and '5' key, both in the numeric pad, also added. (Interesting for SCC-Test disks...) úAdded support for MSXHAN.ROM. So, from now, Korean mode needs these 2 files: KORMSX.ROM and MSXHAN.ROM úDisk routines fixed. Now KGC1(A) and KGC2 don't hang the emulator (and the whole PC heavily) anymore. (Knightmare SCC music is SOOOOOOOOOOOOO GOOD ! :) úPSG bars added... Not spectacular, but effective... Anyway, envelopes and 4 bit PCM are still not properly showed. úTiming adjusted in the ED opcodes of the Z80... The cycle tables were included in the .c file, but they were being ignored (!)... I changed ".h" files a bit... Now LDIR substracts 21+2 cycles and 16+2 cycles (I was previously substracting only 5+2 and 0+2 cycles)... ú4 bits PCM added via GUS... Aleste2 voice, bosconian, readwav (from Ricardo Bittencourt), Valkyr, Eggerland 2, and MANY other samples are clearly recognized... Of course, the sound IS NOW updated whenever there is a writing to the sound ports, and not every 1/50 or 1/60 sec. This also "fixes" the sound and music in MSX 2 games, which previously sounded really bad... Anyway, there are still some PCM samples not sounding, like Oh-Shit, Cobra's Arc, Fuzzball, StarWars... úEnvelopes added... Boxing, nemesis2 drums, Dunk shot intro, Bubble Bobble music, Survivor... start to sound VERY well... Anyway it still needs a lot of work and fine tuning, specially short envelopes ("ping pong" ball sounds "too long"... Majutusi dices at start don't sound very well also...) Thanks to Ra£l G¢mez for adjusting some "envelope increment tables" with the official formula, not with trial and error like I was doing... (he just had better docs than me :) ============================================================================== Mon 29-Jun-1998 (áeta 22) version 0.0.8 ============================================================================== úPSG and SCC sound is now finally 99% perfect... Now ALL notes are played with the perfect pitch, (specially VERY high ones... There are now some very low tones which sound "bad", but much better than before). The initialization routines I was using were pure crap... Of course, a hello here goes to Ra£l G¢mez for bearing me while spending a whole afternoon in my house retouching the GUS routines used in our emulators (MSKISS and R80) (Como nos lo pasamos de bien, eh ? Cuando encontramos los errores, casi no nos lo cre¡amos. Ahora nuestros emuladores se oyen BRUTALMENTE... (con una GUS, claro :))) úkeyclick and 1 bit PCM sound added... Anyway, it still seems FAR from perfect but at least Super Laydock starting voice is recognizable... If you have a fast computer (or you render every 40 frames, for example), the sound will be very clear... Anyway, some remaining timing problems make the PCM sounds somewhat "down-pitched"... Try also "Auf Wiedersehen Monty" and you'll hear how the main character walks... úScreen 3 perfectly adjusted now... Now "Anime Girls" brazilian demo works perfectly... úIRQ bug corrected in the main loop... Those games which worked VERY SLOWLY, work perfectly now, like galaga, namco minigolf, pacman, Valkyr... Besides, another effect appears, which is that zanac logo finally appears NOT OK (like it should be... BrMsX and fMSX show this logo wrongly also, so my IRQ engine is at least as good as theirs :)) úADC16 finally, finally, finally corrected (I hope! :) It was a C-Macro problem, very hard to find... Now I've rewritten from scratch the ADC16 opcode and it finally works. Now Hyper Sports 3 "Triple Jump" works perfectly, as well as pippols, pingpong, desolator, Konami Billiards (this game had NEVER worked before :)... "Thexder" also is able to get to the second stage (Finally! :)... "Aspar" FINALLY works... úScreen 2 renderer optimized... Some games work faster, some games act just like in previous versions... Some games may even act slower, but I've not found any of these... If I find that many of them act slowly, I can change back to the old renderer... úMegaROM type detector fixed... Now "Eggerland Mystery 2" and "Fantasm Soldier" are correctly detected... (Ascii 16 and Ascii 8) úNew keys inside the debugger: 'V' key, shows the VRAM from inside the debugger. 'R' key makes a Warm_Reset of MSKISS (The RAM is NOT deleted)... Anyway 'R' key works strangely sometimes... úPCX dumper disabled temporally... ------------------------------------------------------------------------------ Mon 22-Jun-1998 (áeta 21) ------------------------------------------------------------------------------ úToshiba HX-20 palete mode added... Just type the "-hx20pal" parameter and you'll see how my REAL MSX looks like :) úSlow Mode pixel added... If the pixel on the left of the screen turns on, then the emulator is working slower than a real MSX... Increase the frameskip rate to avoid this, and to make MSKISS "work fresher". (but then the graphics won't be so smoothly updated...) úScreen 2 renderer fixed to correctly handle "Thing Bounces Back" and "Like" ("Like" is a windowish environement for MSX). Anyway this patch-bug-fix may produce secondary effects on untested games... úMegaROM type detector is now MUCH stronger... In fact, ALL MSX1 ROMS I have, are perfectly detected now... MSX 2 ones are more difficult to detect, and some of them fail (Andorogynus, for example... Anyway, the copy I have also fails with fMSX even trying ALL rom mappers with it). The problem is that some MSX2 ROMS don't use the easy 4000/6000/8000/6800/7000/7800/etc... addresses, but I'm working also with them for future implementations... The autodetection may slow MSKISS at boot time, but I think that it is better to autodetect the ROMS than having to type the "-rom", "-roma", "-romb" or whatever parameters... Please, mail me if you find ROMS not correctly autodetected... Suspicious ROMS may be type 5 and 4 ones... úMore megarom mapper types implemented: types 4 (ASCII 8KB) and 5 (ASCII 16KB) plus the already working 0 type (Generic Konami Megarom with or without SCC). Now almost 99.9999% of the MSX1 ROMS work... úScreen 3 support re-added again, now 100% working I think... (At least demonia intro, and some fast BASIC test programs made by me, work perfectly) úMegarom Mapper bug corrected. Now Demonia works again... (I don't know when it started not to work... Let's see the history file... A ha! In version 0.0.7 I added "Slight speed up in megarom mapper", and that's why demonia stopped to work... :)). úADD16/ADC16/SBC16 C flag corrected... Now Konami's Football is playable again, F1 Spirit accelerator responds OK at the beggining and you can finish a race, Hyper Sports II "Weight Lift" works OK again, Hyper Sports III "triple jump" works better, GOODY (bins) seems fully playable, Nemesis II inside-the-boss stages are fully playable, Konami's Golf is fully playable now........ But the GOOOOOD news is that MSX-DISKS BOOT NOW !!!! :))))) I CAN'T BELIEVE IT !!! :))) FINALLY!!! Of course TONS of thanks to Ricardo Bittencourt for BrMSX debugger... It REALLY helped me a lot in finding these bugs... Anyway, some small bugs remain in the Z80, as Hyper Sports III Triple Jump is somewhat funny now (you can jump 77 meters and so... :) Desolator has stopped to work also :( Even having changed C flag, ZEXDOC/ZEXALL still say OK, so ZEXDOC/ZEXALL seem not to be as useful as they did... úTERRIBLE bug corrected... (I was abusing of CUT+PASTE in the RES,SET and BIT opcodes... :))) RES and SET may need a fetch of the data from memory, then the operation is executed, and then the data may be written back to memory... BUT 'BIT' DOESN'T NEED IT, OF COURSE ! :) I was writing back the operand to memory when performing a 'BIT' and then megarom mapper could act RANDOMLY... Now Nemesis 3 is FULLY playable, as well as Maze of Galious... (Finally :) úConfiguration file MSKISS.INI added. Now many useful parameters can be specified there, and then you'll save a lot of command line lenght... It could be somewhat buggy, but if you don't do weird things, it works very well... úI've just upgraded my DJGPP (2.00 to 2.01) and GCC (from 2.7.1 to 2.8.1) I'm scared... Let's pray... BANG! Oh, no, it crashes! hmm... let's see... it seems that gcc-2.81 doesn't like some of my nice C-macros :( Ok then, let's change 2 of them, expanding their code by hand... (5 minutes later)... OK. Now MSKISS works exactly in the same way than with gcc 2.7.1, but the fetch of the opcodes in the DDCB and FCCB cases should be somewhat slower... I think I can notice a VERY slight slowdown :( BTW also, the EXE produced by gcc is now 20 KB larger, even after compressing it with DJP :( úNoise channel disabled temporally until I understand better how 7th PSG register works... úSCC changed to enable readings of the waveform, and so, scc detection should work... but NO, it doesn't work... :( úTracing Master System roms (with my recently created Master System emulator, SISSTEM :), I've discovered a bug in OTDR... I was inc-ing hl when I should dec-it... but the only game which works better again is desolator... úPCX dumper with ALT+F11 via allegro... anyway, it makes the emulator exit to DOS in mode 13h (!?), and what is worst, uncompressed/compressed exe grows in 100/30 KB (!!!!!!!!!!!!!!!!!!!) úDebugger can now be invoked whenever you press F10 in the middle of a game, and not only at boot time. Anyway, sometimes this feature isn' very useable, as it stops the emulation in "strange places" and you must set a breakpoint to go to a given place. There are also some minor cosmetic changes, like DI/EI status and so on... (iff1 and iff2 flags are still not implemented, and I show a 0). Now you can also write the status of MSKISS into a debug directory pressing the 'A' key, just like in BrMSX. (Notice that this debug info are NOT "savegames" like BrMSX .STA files, but useful info for debugging purposes only...) ============================================================================== Mon 4-May-1998 (áeta 20) Version 0.0.7 ============================================================================== úSlight bug in sprites renderer corrected... úSlight speed up in megarom mapper... úI've touched something in the megarom mapper (I DON'T KNOW WHAT!!! :) and now Super Laydock and Hydlide 3 seem to work "100%" !! :) úFirst tests with memory mapper in RAM slot (Slot 3)... The technique is exactly the same as in megarom mapper: LOTS of memcpy's. So when the ram mapper is used too much, the emulator gets slow... So this will be another t hing to change in the future... At least, it seems to work, as KGC_3_SCC, KGC_4_SCC and KGC_Special_SCC_MSX1_games (Sean Young's SCC modified versions) DO work with SCC sound pressing '1' or '2' key, and forcing SCC detection. (Well, all games work except SCC-Nemesis1, because it needs 128 KB of memory, but I think that twinbee also needs 128 KB and it works with -mapram 8 parameter so maybe weird things still happen with SCC-Nemesis1...) Anyway, as GUS routines are PURE crap, SCC sounds horrible... A new parameter is available then, which is "-mapram N"... You can select how many 16KB pages will be mapped via memory mapper... úBRMSX State files are now loadable... (Feature added in 2 minutes :) Thanks to Ricardo Bittencourt for explaining me the (easy) .STA format...Now you can load a .STA file from inside MSKISS... Anyway, as I only want to use it to test the Z80, the only 3 loadable .STA's are: PRELIM.STA , ZEXDOC.STA and ZEXALL.STA. They contain the state of BRMSX just before running these 3 .COM's from MSXDOS: ZEXDOC.COM, ZEXALL.COM and PRELIM.COM , so it's only useful for internal debugging use... Besides, I'm ignoring some fields of .STA files, like megarom selectors, and some others, so megarom save-states won't work...In the future, general use of this feature will be added... Press ALT+F6 to load PRELIM.STA Press ALT+F7 to load ZEXDOC.STA Press ALT+F8 to load ZEXALL.STA Anyway, RAM must be in SLOT 2 for BRMSX compatibility, so for the moment, this is a feature to be added... So the .STA loader is useful for me, for internal use only... Unless you know how to tweak .STA files to work with MSKISS, this feature is somewhat useless in the official release. (theorically you're reading now the official docs, not the beta ones, so RAM is in slot 3) úAs a result of testing ZEXDOC/ZEXALL, almost ALL opcodes have been finally added, as well as VERY FEW bugs have been detected (Now the hard work is fixing them, as I'm sure the most important are in the LOOOOOOOOOOOOOOONG aluop a, which takes 3:20 hours in my 486 Dx2 66 to be executed(!) and when it finishes it vomits: CRC error (argh !) úNEG bug corrected... but not sure, as ZEXDOC/ZEXALL still complaints all the time even being sure I'm implementing NEG OK...(?) Anyway, even with this small fix, no new games work better... (1 day later) NEG totally rewritten... now zexall says OK... thanks to Ricardo Bittencourt for letting me the format of the lookup up table he used... It seems it was the cause for nemesis3 not working properly (Anyway depending on the ship you select, it starts more-less-OK or it still starts with the screen very grabled...) "Break in" also seems to work now... Thing Bounces Back enemies now act randomly... úDAA mega-table (which I "stole" from marat's z80) changed in run time to correctly handle bits 5 and 3... Now zexall says OK úI had a bug in the type of a temporal variable which made a lot of useful C macros I defined, not work properly, so they were still function calls... Now, with the bug removed, ALL memory references are finally C Macros... The remaining opcodes which still made use of function calls were ALL JR's... So, once I substituted ALL of them, the emulator works MUCH faster... Due to this speed boost, I've changed the default frame-skip rate from 4 to 3. úKOR mode enabled... You need kormsx.rom and you also need to start MSKISS with the "-kor" parameter... úsupport for 0x0000-boot cartridges (with some help from Ricardo Bittencourt)... úLDI(r)/LDD(r) emulated 100% perfect (zexall finally says OK)... Anyway correct handling of bits 5 and 3 makes the emulation of this opcodes somewhat slower. (Not much, anyway, as I haven't detected a significant slowdown...) ============================================================================== Tue 14-Apr-1998 (áeta 19) Version 0.0.6 ============================================================================== úHEAVY bug in Megarom Mapper routines corrected (It wasn't a Z80 bug ! :). Now when 1st cartridge is a MEGA-ROM cartridge and 2nd Cartridge is anything else, MSKISS acts normally... So ALL cartridge combinations DO work now... BTW, from now, Megarom Mapper works also with SLOT 2 (FIREBIRD + KING KONG 2 start as it's supposed: KING KONG 2 takes control and you can save inside the game... OF COURSE, AS THEY ARE MSX 2 GAMES THEY CAN'T BE PLAYED!!!! YOU CAN ONLY HEAR THEIR MUSIC!!!!) BTW, the DISK.ROM "bug" MSKISS had when in MEGAROM mode, has also gone, so "-nodisk" parameter is somewhat useless now... (Anyway, as it doesn't hurt, I haven't removed it :) úFirst serious disk support (although pathetic :)... BIOS read/write sectors function (4010) works partially (it only reads...) Some Konami game collections DO work FULLY!!!!!! :) I'm so happy, because I NEVER had a disk drive when I had my MSX, and I didn't know if what I was doing would work "OK" so fast... BTW also, BASIC "files" works, but loading data still does NOT work! :( úJoystick routines corrected... I was reading from BOTH joystick ports at the same time !!! :) Salamander was VERY FUNNY to play !! :) Now Port A is chosen by default... If you want Port B support, type the "-joyb" parameter... Joystick support can also be disabled with the "-nojoy" parameter... úCorrected a slight bug in the Screen 0 renderer. úPathetic ASCII 8KB Megarom Type detector added... Now I think that ASCII 8KB megaroms should work... Anyway, lack of test with this kind of megaroms (I only have "Super Laydock"), makes this detector not very good... (Although Super Laydock works now MUCH BETTER than before...) úBug in Konami Megarom mapper detected, but don't know where... I think this is the reason why NEMESIS3 works so bad... I think Nemesis 3 doesn't write to the "standard" ROM addresses (!?!) ------------------------------------------------------------------------------ Thu 9-Apr-1998 (áeta 18) ------------------------------------------------------------------------------ úMy D: drive FAT became a total mess, and so I LOST the WHOLE MSKISS project, my WHOLE DJGPP, my WHOLE "emul" directory (!!!!), and MANY MANY things... I'm sure it's because the "nice" W95 I just installed a week ago... Luckily I had many backups of the áeta 16 in a diskette, and a friend of mine backuped many nice things of my HD just a few weeks ago (like the ones above :), so I've restarted the work from áeta 16, re-adding most of the features of áeta 17... úJoystick support for port A added... (via ALLEGRO of course :) Thanks to Ra£l G¢mez for telling me that he added it very easily in its SPECTRUM emulator, and he suggested me to add it to MSKISS... I didn't even tried to read allegro docs to know how to start (as I don't have a joystick... BTW, thanks to my neighbour for lending me his joystick to make tests...:) It was REALLY easy, but I'm sooo lazy!!!! :) BTW: size of uncompressed MSKISS.EXE has grown in 30KB!!! I'm currently compressing it with DJP, but even with this, MSKISS is now 8KB larger than without joystick support! ú5th sprite ocultation added! And it is NOT as slow as I thought!... :) Try "Goonies", "Antarctic Adventure", "Penguin Adventure", "Parodius intro" and some others to see "useful sprites ocultation"... Try "Nemesis", "Nemesis 2", "Nemesis 3", "Knightmare", "Salamander", "Twinbee" and many others to see how KONAMI programmers (almost-gods? :) implemented "controlled flickering"... úScreen 2 and Screen 1 renderers totally rewritten using a totally different technique based in look-up tables of longs... This method is MUCH faster than the typical shift and draw... Thanks of course to Ricardo Bittencourt for the hint... (Anyway, I was starting to do some tests with simmilar ideas of my own, so credits for Ricardo are not 100%, but 60% this time! :) úYou can now load 2 cartridges... Anyway, as my Z80 is still buggy, MSKISS may act randomly when 2 ROMS are inserted... úAspect ratio of 320x200 mode pixels changed as in 320x240 mode... Now, even being in pure mode 0x13, pixels are square... úChanged the virtual screen size (now is 320x256 again) to get more speed and to treat correctly sprites that disappear from the left/right... Screen 3 renderer temporally disabled... úPrimitive speed limiter added... Anyway, if you want to run MSKISS without this speed limitation (to perform speed tests, or whatever) try "-topspeed" parameter and MSKISS will try to run as crazy... BTW: to implement the speed limiter I have to do a VERY WEIRD thing...I have to do a "fclose(ftmp)" in the "while" I use to wait for the next frame (!!!!!)... If leave this "while" empty, or I fill it with "easy" statements, the emulator and my whole PC hangs HEAVILY(?!?!!!) I don't know the reason of that, so any help will be apreciated... Anyway, the normal user will see how MSKISS acts normally and transparently. (In theory, of course... If someone detects some kind of disk problem because of this crap, please e-mail me urgently... Anyway, I haven't detected any backside effect at home...) NOTE: I've just discovered that this effect happens ONLY with my PC !!!!! In the PC of a friend of mine, the speed limiter works perfectly without having to do this paranoid "fclose(ftmp)"... He doesn't have a GUS and this could be a reason, but anyway if I try it at home with "-nosound", it still hangs... (!?) úCrappy tests with DISK routines re-added again (the ones from áeta 17)... úAdded a new MRead_MemoryW macro to read a whole word directly from the MSX memory... Anyway I think I CAN'T notice a significative speed up... (MRead_MemoryW macro idea, courtesy of Ricardo Bittencourt :) BTW desolator has started to do weird things... it could be because I've started to mess also with PPI Ports (!?)...Anyway I doubt this could be the reason, I'm sure I could have added a new Z80 bug because of bad use of macros... úAdded "-jap" parameter. If JAPMSX.ROM is present in the current directory, it will be loaded instead of the "international BIOS" MSX.ROM... Some games act differently under a japanese MSX... (Penguin Adventure, Nemesis 1,2 and 3, Salamander, Payload, King's valley2 (msx1), Maze of galious, Game Master 2...) Even BASIC is somewhat different... JAPMSX.ROM is intended to be a BIOS image of a japanese MSX1. Thanks a lot to KSH for providing me with some japanese BIOS to make these additional tests... úCorrected a bug in the handling of PSG registers 8,9 and 10... Now "PLAY" works inside BASIC, as well as Payload music inside the game... (Anyway there are still some high notes sounding randomly...) Of course, this bug was fixed thanks to Ricardo Bittencourt (Yes: it certainly seems he knows a lot about MSX! :)... úBRUTAL speed up due to the massive substitution of Read_Memory function by 3 new macros (different macros from áeta 17)... Anyway the speed up could be still better when I solve some problems with some macros that don't work with "easy" Z80 instructions like LD R8,MR16 or the simple JR's... úFinally I decided to expand by hand these macros that caused problems when GCC preprocessor expanded them ... The speed up is now IMPRESSIVE, so I had to add the very necessary speed limiter... ============================================================================== Mon 30-Mar-1998 (áeta 17) Version 0.0.5 ============================================================================== úDivided the Read_Memory function into 2 macros: Read_Opcode() and Read_Memory(). Doing this, the fetch of the operands is BRUTALLY faster... Don't try -frame 40 even on slow computers like mine (486 Dx2 66) as it now works very fast! :) úFirst tests with DISK routines... (Not much really... I'm olny detecting the BIOS traps, and so...) úMore illegal opcodes added. úMINOR Z80 optimizations... ------------------------------------------------------------------------------ Wed 25-Mar-1998 (áeta 16) ------------------------------------------------------------------------------ úLD SP,(nn) corrected. Now "Galaga", "Bosconian", ZEXDOC.ROM (thanks to god! :), "Payload", "Oh shit" (bins), "El misterio del Nilo" (bins), "Gunfright" (bins & rom), etc... DO work perfectly... "Pitfall II" (bins) works OK, but as sprite collisions are still not implemented, you are invulnerable and you can't get any diamond... "Thing bounces back" (bins) doesn't hang any more (Anyway the screen is still grabled. BTW, the screen is grabled DIFFERENTLY than in brmsx and fmsx :) úZ80_Read_Memory and Z80_Write_Memory routines totally rewritten as well as the OUT(0xA8) subcase. Now all of them are a bit faster, so the whole emulator works slightly faster... BTW: the debugger works BRUTALLY faster now... úMany GUS routines totally rewritten and now high notes sound with the correct pitch...(well, almost, because VERY VERY VERY high notes, still sound bad...) A bad effect also has appeared... this effect is that the square waves I play, don't sound as "sweet" as they did before... Now they sound sharp and crisp... ú"-ifreq" parameter added... Now you can change the frequency of VDP interrupts. úScreen 3 support partially added... Anyway it's still crappy/buggy because I don't have many games to test it. Demonia intro works more or less OK now... úAdded the emulation of the 7th bit of the sprite 4th attribute to make sprites appear 32 pixels shifted to the left. Now MR_Chin appears correctly from the right, ZANAC works perfectly, and Hyper sports 3 curling works OK also... úVDP bug fixed... When the autoincrement of the VDP arrived to 0x3FFF, it reached the 0x4000 value, when it should wrap to 0x0000... Now those Im0 Konami games (1985) work again... Of course: TONS of thanks to Ricardo Bittencourt (as always :) úMinor HALT correction/speedup. ("Auf wiedersehen monty", "arkanoid" and "thexder (intro)" are now BRUTALLY faster, even in my 486 Dx2 66) úSome more (illegal) opcodes added. úMore "bin blocks" are now loadable (up to 6)... Press CTRL+F6,CTRL+F7, ... , CTRL+F11 (except CTRL+F10) ============================================================================== Fri 13-Mar-1998 (áeta 15) Version 0.0.4 ============================================================================== úYES!! Arf, arf... Finally! The well-known IRQ bug MSKISS had, (namco games weren't working at all, as well as "zanac" and some others) has been removed! Anyway, galaga and bosconian still don't work, as well as some others like Payload have stopped to work... I pray it's because of a Z80 bug, and not to remaining IRQ bugs... úHALT finally corrected. When the interrupt after the HALT ended and the code returned to the main routine, it returned to the HALT again, and then an infinite LOOP started.(!) Now I only have to return to PC+1 when the interrupt makes the "RETI", and then the HALT becomes ignored (as it's supposed to be). New games working because of that: Arkanoid, Green Beret (blergh :) and Thexder -> (Chexder ?)... úFINALLY corrected H and C flags of ADD8/ADC8/SUB8/SBC8... Now basic arithmetic operations work 99.9 % of the times... úSome sprite bugs corrected. úMore opcodes added. úAdded a PATHETIC method to load "BLOAD-able bin blocks"... If you have a game which is made of .bin's (BLOAD-able blocks), you can identify these bin blocks and rename them this way: first block -> "bin1", second block -> "bin2", etc... You can define up to 4 bin blocks to be in the same directory of MSKISS... OK then... You have to enter into BASIC, and when the OK prompt is there, press CTRL+F6 to load (and execute) "bin1", CTRL+F7 to load (and execute) "bin2", etc... If the game didn't need some special pokes to load and the bin blocks were loaded as BLOAD"cas:",r from inside BASIC, the game will boot... Of course only "easy" games will work, but hey, this is much better than nothing, while I implement disk support... Note: 10% of the times you try to load blocks with this method, MSKISS will probably be attending a IRQ and then, BASIC may hang, so better luck next time... Make a reset, and start from 1st block again... ============================================================================== Mon 9-Mar-1998 (áeta 14) Version 0.0.3 ============================================================================== úADC16/SBC16 totally rewritten... Arf... Now ZEXDOC says OK when testing these two opcodes :) úStrange bug added... Im0 games (Konami 1985) don't work at all... Besides A LOT of games add wrongly big numbers... I should revise DAA now that ADC16/SBC16 seem to work... úI wasn't substracting the extra number of cycles required when the conditions of the conditional JR's were true... Anyway timing problems didn't seem to be causing trouble at this point... úEli Zaretskii solved me the main problem I had when compiling z80.c, so I can compile it with -O3 !!! :) He told me to use a larger stack for cc1.exe and it worked! DJGPP FAQ's were a bit unclear at this point, as I thought stack size had to do with free mem CWSDPMI.EXE provides, but it didn't... I'm still a newbee to DJGPP :) Anyway the speed gained here wasn't as much as I wanted :( As I already suspected I have to speed up video routines, not the Z80... Try running MSKISS with -frame 40 and you will see (better if you hear) the difference... úLDIR/LDDR again implemented as a bunch of LDI/LDD 's instead of executing it at once... I think I'm implementing it finally OK... úAdded a pseudo "16 KB ROM type detector"... I determine the execution address of the ROM and if it is above 0x8000 and cart-size is below 16384, then I load the ROM from 0x8000 instead of 0x4000... This method is PATHETIC but it seems to work... Rollerball and MR_chin DO work now... úTotally rewritten the memory system... No more memcpy's when working in NO-Megarom mode (16 / 32 KB ROMS) Anyway now it's slower than before... Also halved the number of memcpy's of the megarom mapper, so when running a megarom cartridge, MSKISS is now MUCH faster. The combination of both the slow down and the sped up is a more constant speed... (slightly slower than before though) úSlight sped up of the screen 2 renderer... úDAA finally stolen -- what a shame from my part :( -- from Marat Fayzullin's Z80... Anyway my emulator still adds/subs wrong ! :( So I even could have been implementing my DAA OK, and I destroyed it (sniff !) I could come back to my DAA when I find the remaining add/sub bugs... úIf DISK.ROM is present it will be loaded... Anyway if you want to play megarom games you MUST disable it with the -nodisk parameter (!). I have no idea of what can be causing this... :( I'm also patching BIOS.ROM and DISK.ROM where needed with "ED FE C9" for future implementation of disk/tape routines... úFirst tests with SCC... But as I'm programming the GUS wrongly, it sometimes sounds horribly... It seems that the GUS pointers-to-samples need some kind of initialization before they get to the correct values... Or maybe the way I'm programming the GUS creates problems with VERY SMALL loops (32 bytes or so) and high frequences... úIRQ handling bug corrected... When interrupts were disabled, an interrupt could arrive... Ok... I was simply ignoring these IRQ's... But it seems that I souldn't have ignored them, because when an EI arrives, this pending interrupt (interrupts maybe?) need to be attended... A lot of new games work/go faster now... The bad thing is that "Zanac" doesn't work now ! :( BIG THANKS (of course ;) to Ricardo Bittencourt for the tip... úHeavy VRAM bug finally fixed!!! I wasn't selecting the VRAM address when I was doing a VRAM read. As I only checked bit6 of the VRAM when writing, I didn't realize that this bit didn't need to be set when a VRAM read was going to be done... Now "everything" works "perfectly"... ALL games FULLY work now (except the ones which suffer from the still left z80 bugs). Now finally BASIC is FULLY usable !! :) ú8x8 Sprites added... Some bugs are still there, though... úWhen screen output was disabled, I didn't "cleared" the screen, and screen mode switches were "instant". Now that I "clear" the screen, when screen output is disabled, these mode switches work like in a real MSX. -------------------------------------------------------------------------------- Thu 12-Feb-1998 (áeta 13) -------------------------------------------------------------------------------- úSome missing opcodes added... (Anyway there are some of them missing, because I like to see WHEN games make MSKISS crash when demanding a certain opcode... I have a very weird taste ;) úLDIR/LDDR now made at once without checking interrupts in the middle of the intermediate LDI/LDD 's... I'm not sure if I'm doing well... úI've started to run ZEX under MSKISS... (At least a ROM port made by Ricardo Bittencourt) As I already knew, ADC16/SBC16 fail... ============================================================================== Mon 9-Feb-1998 (áeta 12) Version 0.0.2 ============================================================================== úRotation flags rewritten... Anyway some of them must be still wrong as MANY games suffer from bad mirroring tiles... Or maybe it's a totally different bug... úSCC writings ignored, so there is no more general-protection-fault error when running megaroms... (except Nemesis 3) BIG slowdown due to the way I'm implementing megarom mapper... úTried to add Auto frame feature... But the results were chaotic, so I've added a simple frame skipper... Anyway, with "-frame 1", VERY VERY VERY fast computers (Pentium II or so) still may run the emulator too fast... Buy a cheaper computer if you have this problem :) or try to run something CPU consuming in the background of W95 and launch a DOS-BOX with MSKISS... úNoise channel added, but frequency is still incorrect. úAdded command line parameters úRicardo Bittencourt told me to add +1 to ALL cycle tables of the Z80 because the MSX is supposed to have a extra state compared to the SPECTRUM... I did it, and the resulting speed seems to be more realistic... or not, I don't know... ============================================================================== Fri 6-Feb-1998 (áeta 11) FIRST official release. Version 0.0.1 ============================================================================== úFirst implementation of Mega-ROM mapper (Konami 8KB only). I succeded at first try (!) it wasn't so difficult... Anyway some Mega-ROM still make MSKISS exit with a general protection fault error... I'll have to revise the routines then... BTW I'm doing it the hard way (TONS of memcpy's), but at least it works... When it works 100% I'll change to a faster method instead of the big amount of memcpy()'s I currently do... úMinor Z80 bugfixing. úMSKISS.DOC created. -------------------------------------------------------------------------------- Thu 5-Feb-1998 (áeta 10) -------------------------------------------------------------------------------- úI wasn't implementing interrupt modes 0 and 2 in the main loop of the z80 (!) so, if the code changed to these two interrupt modes, interrupts were ignored (! :) Luckily in the MSX, im0 and im1 modes do the same thing: a RST 38h. im2 mode isn't also that difficult ... For the moment all of them seem to work... (well at least im0 and im1 modes. I don't have any piece of code containing a im2 interrupt) New games working because of this: pingpong, skyjaguar, yie-ar-kungfu 1, and some other... úMinor changes in some Z80 flags... úAdded '-ffast-math' optimization parameter to GCC when compiling all the .c files of the emulator... I think I can notice a little speed up because of that... (Maybe is my imagination also :) úSound isn't as good as I thought, mainly when the GUS tries to play high notes. Anyway, only 10% of the notes sent to the PSG are very high, so music and sound effects on games are still VERY recognisable... I suppose I'll have to change the way the GUS generates sound... úVESA 2.0 512x384 linear video mode detection added. Still not used, though... úLDIR,CPIR,etc were done step by step, not at once, so an interrupt could occur in the middle of a transfer and I don't know what could have happened... Now I do it "the right way" (?), but no new games seem to work... úFirst attempts to implement Mega-ROM mapper, but without success... The only thing I do is load the whole Mega-ROM into a malloc-ated zone and I copy its firsts 32 KB into the 4000-BFFF zone... As it's normal, the emulator hangs... -------------------------------------------------------------------------------- Wed 4-Feb-1998 (áeta 9) -------------------------------------------------------------------------------- úWhoaaaarrrrggggh!!!! I wasn't implementing the joystick, so PSG register 14 was all the time 0x00... This meant that MSKISS was detecting ALL buttons of the joystick and the triggers pressed all the time, and so, the space bar and the cursor keys didn't work inside games... Now I only have to force a 0xFF in the 14th register of the PSG and then, the keyboard can respond !!!!! :) The bad thing is that there isn't joystick support for the moment, but in a future I can add this feature... úV flag definitely corrected in some opcodes... Some of them are missing though... -------------------------------------------------------------------------------- Tue 3-Feb-1998 (áeta 8) -------------------------------------------------------------------------------- úFinally! I think I'm implementing DAA 99% correctly... Now arithmetic operations fail because I don't implement h flag correctly in some operations, but now antarctic adventure is 98% playable... Corrected h-flag in add,adc,sub, sbc and cp opcodes... úI CAN compile again z80.c with -O1... Someone seems to be joking with me :) -------------------------------------------------------------------------------- Mon 2-Feb-1998 (áeta 7) -------------------------------------------------------------------------------- úColor base and char generator addresses of screen 2 now correctly calculated (I think)... Non-Konami games are correct now. I was adapting the color table according to Konami games but trial and error have permited me calculate how color address works in screen2 for ALL games... PORTAR.DOC and Sean Young's VDP1.HTM seemed to be inaccurate describing this... úSprites added, even 208 and 209 "Y" coordinate. There could be some bugs though... There is no 5th sprite ocultation... Changed the VGA-Dump routine to handle correctly sprites getting out of the boundaries of the screen. Now knightmare "black balls" appear correctly from the upper zone of the screen. úI can't compile z80.c again with -O1 -O2 or -O3 because gcc tries to inline a lot of functions, and even I force gcc not to inline them, it still hangs because of that (I think)... There could be even more -f flags which can make gcc hang... This seems to be a sad problem... -------------------------------------------------------------------------------- Thu 29-Jan-1998 (áeta 6) -------------------------------------------------------------------------------- úKeyboard support partially added... Anyway something weird still happens... Space key and some other keys are still NOT detected (!%$#@) or seem to be pressed all the time... úGREAT speed boost due to the fact that now I render the screen to a TEMP buffer and then I dump this Buffer to the VGA instead of dumping pixel by pixel to the VGA. úMinor Z80 flag corrections... úHALT is now implemented this way: "PC=PC-1" It seems to work as the old implementation, but I think that it's a "more legal way" to implement it... ------------------------------------------------------------------------------ Wed 28-Jan-1998 (áeta 5) ------------------------------------------------------------------------------ úCorrected some opcodes, mainly h and v flags, but it still needs a lot of work. úDAA Added. Anyway I think it works badly because h and v flags are still incorrectly updated in the Z80 code. úGUS sound added !!!!!!!!! Even some melodies are recognisable. Anyway the sound renderer is VERY buggy and crappy and needs A LOT of work. But for now it's better than nothing :) And hey! it's the third main recompilation I do! :) ... (1 hour later :) ... PSG sound (square waves) is near perfect!!!! Now almost every song is recognisable. Noise channel isn't still emulated but I have ideas... SCC is still far from being emulated because I don't emulate Mega-ROM mapper. When I emulate Mega-ROM mapper SCC sound should be as easy as PSG sound... úTried to add keyboard support but weird things happen... I don't understand why I'm not succesful on that, because I think I know how to handle keyboard :( úI've discovered that I can compile z80.c from outside RHIDE with -O1, and my PC doesn't hang. A bit of speed gained here. Anyway -O2 and -O3 still makes gcc hang... ------------------------------------------------------------------------------ Mon 26-Jan-1998 (áeta 4) ------------------------------------------------------------------------------ úA lot of SHIFT/ROTATIONS Flags corrected. Now "Road fighter" and "Knightmare" work better. úAdded color 0/border. úSplited the sources in various files to compile some of them with -O3. For the moment, if I try to compile z80.c with -O1 -O2 or -O3 DJGPP/RHIDE hangs. The result has been a significant speed boost. ------------------------------------------------------------------------------ Sun 25-Jan-1998 (áeta 3) ------------------------------------------------------------------------------ úMost Z80 opcodes implemented úSome opcodes still missing, like DAA, so Antarctic adventure, hyper rally, synthesizer and some others act strangely... úI implement HALT putting a 0 in the counter, and then an interrupt occurs, but I don't know if this method is valid... At least it seems to work... úSome opcodes are still buggy mainly H and V flags úScreen 0 and 1 color added. Slight sped up also. úScreen 2 color corrected. úNo sprites úNo sound úNo keyboard (Anyway Konami's demos are nice to see :) ------------------------------------------------------------------------------ Sat 24-Jan-1998 (áeta 2) ------------------------------------------------------------------------------ úZ80 Opcodes heavily revised and corrected. First games start to work. úPrimitive Screen 2 renderer ------------------------------------------------------------------------------ Fri 23-Jan-1998 (áeta 1) ------------------------------------------------------------------------------ úMSX BOOTS! sniff :~) It displays "MSX system version 1.0..." message at boot and starts basic. MSKISS was born. úPrimitive Screen 0 renderer úPrimitive Screen 1 renderer ------------------------------------------------------------------------------ From October 1997 to Early January 1998 (áeta 0) (never released) ------------------------------------------------------------------------------ úZ80 Engine and debugger implemented from scratch with the help of Marat Fayzullin's document: "HOW-TO Make an emulator" ______________________________________________________________________________ Isaac Santaolalla Sol¢rzano is05562@salleURL.edu http://www.salleURL.edu/~is05562/msx_ing.html http://www.salleURL.edu/~is05562/mskiss.zip ______________________________________________________________________________ SYDMMRFNQQFSFRUHNZSDNDSHUWFKKTDNOSDUDTSJLBQFLFQJSYDMMRFNQQFSFRUHNZSDNDSHUWFKK6 ______________________________________________________________________________