Skip to content

Game Engine v0.114

Pre-release
Pre-release

Choose a tag to compare

@MrMadguy64 MrMadguy64 released this 21 Dec 12:38
· 9 commits to main since this release
ae7404c

New features:

  1. EGA.drv: CGA/HGC dynamic modes support backported from VGA.drv.
  2. EGA/VGA.drv: 1bpp Mono modes implemented (not sure, why they haven't been already).
  3. EGA/VGA.drv: 2bpp Mono modes implemented. Mostly for testing purposes. They don't work as expected now. I'm not sure, if it's my fault or poor implementation in emulators again. Emulators seem to completely bypass AC and DAC settings, that doesn't look right.

Changes:

  1. EGA/VGA.drv: Addressing handling is more explicit now. We avoid some hardcoding now - code size decreased.
  2. EGA/VGA.drv: Banking handling improved. We avoid some hardcoding now - code size decreased.
  3. EGA/VGA.drv: Memory size handling improved. Driver tries to avoid 64Kb modes, if possible. Previously 64Kb modes were chosen by default for dynamic modes, as modes, that were providing the largest amount of VRAM.

Warning!!!: 64Kb modes still aren't implemented properly in emulators! This problem affects text modes too!

Fixes:

  1. EGA/VGA.drv: Palette is set in all modes now to avoid problems with dynamic modes. For example: CGA modes are 200-lines modes, so they have CGA palette by default. Dynamic mode support means, that they can be modified to have 350 lines, that switches monitor to EGA mode, where CGA palette causes wrong colors.
  2. EGA/VGA.drv: Several small bugs.

P.S. This is actually...BIG RELEASE. It isn't fully tested due to MASSIVE amount of changes. So, sorry for possible bugs. This is how it happens sometimes. Task was - to just backport CGA/HGC changes from VGA.drv. Easy peasy, yeah? But I encountered unexpected problems with memory size handling. And then things started rolling. I overhauled many things to make them more explicit instead of keeping separated pieces of info in different places. Overall we are not far from forming modes fully dynamically. Such changes decrease size of code more and more due to removal of hardcoding. It isn't noticeable now, cuz many new things are added at the same time.