GloriousCow wrote on 2024-02-19, 13:37:
superfury wrote on 2024-02-19, 08:09:Afaik it depends on the pixel mode.
During 8 pixel character clocks it MOD 7. So 8-F=0-7.
During 9 pixel character clocks 8=0, 0 […]
Show full quote
Afaik it depends on the pixel mode.
During 8 pixel character clocks it MOD 7. So 8-F=0-7.
During 9 pixel character clocks 8=0, 0-7=1-8. Above 8 is undocumented. I simply made it 0 there.
Perhaps it aliases 1-8 to 9+? You'd need to check real hardware on that.
Have you tried FantasyLand in UniPCemu?
I think I did once, but can't remember. I'll try when I have the time to try it.
I did try PGAME (https://pcem-emulator.co.uk/phpBB3/viewtopic.php?t=3089) on the VGA though (and got it running alongside Jazz Jackrabbit), which both use smooth scrolling on VGA 256-color modes.
Edit: Immediately on start-up, some odd character generator issues perhaps? Or odd/even/char height issues?
The attachment 1796-EGA_FLAND_Blinkstate1.png is no longer available
The attachment 1795-EGA_FLAND_Blinkstate2.png is no longer available
Edit: Hmm... Pressing any key to start the demo gives me a black screen for some reason?
I see that the VRAM plane 2 has actual correct fonts loaded at least.
The CRTC keeps getting a CRTC start address registers loaded with A5xx (A46D for example) values for some reason? And there's nothing to display there?
Edit: Oddly enough, that only displays the bottom overlayed part when I force it to 0?
Edit: Huh? Putting weird values into the start address causes the bottom window (the description parts that explains all within the scrolls) to be shifted left off the screen?
Edit: Weird. Forcing the top windows start to 0 still puts it at the bottom of the screen?
The row size is calculated at 190h it seems (that's in planar VRAM addresses)?
Edit: After reading some of the EGA documentation again, I noticed something. It isn't mentioned that the CRTC (3x1/3x3/3x5/3x7) index register is write-only (unlike all other index registers)? Is it actually readable on EGA?
Edit: Looking further, neither does the Sequencer index register mention that it isn't readable or write-only?
Edit: Hmmm... Perhaps some extra display types are needed to be emulated? UniPCemu defaults to EGA enhanced mode. So now I'll need to add the CGA-compatible EGA (on on on off) and CGA (off off off on), according to https://www.pcjs.org/software/pcx86/demo/ibm/ega/ ?
Edit: EGA normal mode added now at least fixes those interleaving empty lines?
The attachment 1797-EGA_FLAND_bootscreenfixed.png is no longer available
Edit: I see the blue cursor now, as well as the top of the overlay?
The attachment 1798-EGA_FLAND_unpopulated.png is no longer available
The map itself seems blank. Also the latter part of the overlay isn't rendered somehow? It's just the top bit of the 'scroll' on left and right borders?
Edit: Ah! It eventually displays the animations just fine?
The attachment 1800-EGALand_animations.png is no longer available
Most VRAM plane 0/1 rendered are filled with nothing (black) somehow though? But the 'cursor' animation is displayed.
Edit: OK. Compared to the pcjs emulator it's displaying the scrolls in it's entirety (PCJS seems to cut off the bottom 2 character rows containing the bottom of the scroll)?
The scroll (top window as the VGA calls it, the split window at address 0) seems to render fine now.
The display is configured for CGA 5153 mode now.
The map itself is still empty/blank (like it's black text etc. on black background, except for the cursor/eye) somehow? But I can see it's actually scrolling about, as I see the messages change in the top window and the cursor is obviously showing scrolling and 'recentering' (as good as that works in text mode) while doing so.
Perhaps some VRAM (the map itself to be exact) is being written to the wrong memory location somehow?
Edit: Hmmm... What if one of the maps isn't loaded into VRAM?
I have drive A and B mirrored by mounting the same disk image in read-only mode.
Edit: Hmmm...
But that didn’t completely solve all the problems. Just before FLAND.EXE begins its automated demo, it reads three 64K files (B:ATTR.MAP, B:CHAR.MAP, and A:SPEC.MAP) directly into planes 1, 0, and 3 of EGA RAM, and for some reason, the third file is loaded from drive A, which of course fails when a different disk is in that drive.
I have it mounted as both disks, but perhaps it's not working?
That's B:ATTR.MAP and B:CHAR.MAP to be exact?
Dumped state for a bit and looked at VRAM. Plane 0 is filled with 20h only it seems and plane 1 with 07h only? Plane 2 seems to have proper font data loaded at least.
Other than the top window's text etc. (everything that's in the scrolled window at the bottom of the screen), nothing seems to be loaded in planes 0 and 1? So ATTR.MAP and CHAR.MAP failed loading somehow?
I do have 2 floppy drives emulated, perhaps that's related?