Lots of fixes and added features. I consider it, finally, not a beta release so it's now v1.0. Anyway, it must not be bug-free so let's see...
As before, you can find it here: AGD MSX Suite
The updates are the following:
Fixed: Sprite flicker bug (MSX freezes) due a byte boundary overrun. Table colltab must not cross a byte boundary to avoid this.
Added: Some cycles saved in plot pixel routine
Added: New command CRUMBLE
Fixed: Keyboard scanning back to 50fps to fix some positioning problems when controlling characters
Fixed: PSG initialization bug filling registers with illegal values
Fixed: Some optimization to the ayFX replayer routine
Fixed: PSG wrong reset sound when multichannel mode active (FX_MODE=1)
Fixed: Serious bug in the PSG dumping routine (PT3 specially affected)
Added: Support for Metablocks (2x2 characters map blocks)
Fixed: UNDOSPRITEMOVE support
Fixed: Sometimes player sprite was not initialized correctly when changing screen
Added: New command SPRITESOFF
Added: New distribution type: CAS (tape). Needs external tool mcp by Apoloval (Thanks Apoloval!)
Fixed: RAM/ROM slot routines changed to a more compatible ones (Thanks JAM!)
Added: Support of forced 50hz/60hz TV freqs
Added: 50hz/60hz TV freqs swappable with hotkey (SELECT)
Added: New command THRUST
Added: LZ compression (Pletter) instead RLE for map screens (gains around 30% per screen)
Added: New command SCREENON
Added: New command SCREENOFF
Added: Full ayFX control: SFX priority, fixed channel selection & dynamic sfx channels
Added: New memory models: 64KB RAM (dsk & cas) and 48KB ROM
Added: Some cycles saved in collision routines
Hope you enjoy this new release!.
It's a great improvement!
I have detected a bug in this version:
Collect Blocks doesn't turn visible again after restart the screen.
Thanks for the report!. Can you check if it happens only in this new release?
Oops, now I think I know what you mean.
If I'm not wrong (I don't have any original ZX use case to test collectables and I'm still trying to gather some info about this matter or trying to create an example by myself...), the original ZX engine doesn't restores collected blocks, think in a Pacman game, collected dots are never restored after player dies.
The original MSX release have a flaw and it always restored the blocks, seems that I've forgot to mention this in the changelog. Now it's "fixed"; but, dou you really have a use case where you need the collected blocks to respawn again after a restart?, if so, I can easily add a flag to switch between both behaviours.
EDIT: Tested by myself...I've created a little program and the ZX engine restores the collected block after a restart!. So, as I like the "pacman mode", I'll add an extra flag to control this.
I have been checking it again and it only happens in the new version. The collectables are still there after a restart, but they are not visible (I use a sound to check it).
I have tried using the REDRAW function and the collect blocks appears again. In the previous version they respawned using the RESTART function, so more than a bug i would say that is a different way to work.
Thanks for the good job. It is a very powerfull tool!
The collectables are still there after a restart, but they are not visible (I use a sound to check it).
Yes, that's not good, this so called "Pacman" mode is useless if there're invisible collectables. I need to rethink if there's a way to solve this problem and turn it into a real feature
I'm continuing with the test. I love the frequency change feature.
Mmm... i have tested compiling with -r 48 and it creates the rom perfectly but the DEFINEPALETTE funtion doesn't work in this mode. It works fine with 16 and 32Kb roms.
Thanks, you're right again!, a stupid bug and it's fixed now. I'm still working on the collectables behaviour, it's mostly working, but I need to test some more combinations...
Thanks to you for the great Job!
Uploaded a new release to fix the palette and collectable blocks issues. Additionally I've added the aformentioned "Pacman mode", where the collectable blocks are not respawned after a death or screen restart but they do when a new map screen is entered.
Let me know how it works for you...