|
Joined: May 2004
Posts: 1,772 Likes: 34
Very Senior Member
|
Very Senior Member
Joined: May 2004
Posts: 1,772 Likes: 34 |
The outputs of the 6845 can be used to drive a screen (it will generate HS/VS signals) but often they're further processed by something else, which is actually in charge of the screen and is responsible for the real HS/VS signals generated. For example, on the Amstrad CPC, the Gate Array assumes this role (for HS at least, can't remember VS)
In such cases it's up to the other hardware if it actually uses these signals directly, or further manipulate them / selectively ignore them in certain situations. In that sense the outputs of the 6845 can become more like a suggestion, with the signals often having additional delay before they're passed on to the display. I think you can also entirely ignore the 6845 HS/VS in some cases, and just use externally generated HS/VS signals as long as your timings are reasonable.
That's how a lot of the more abusive tricks end up working on real hardware (many are also very fussy about the specific CRTC model as some allow readback of certain registers that tricks rely on, while others don't)
Last edited by Haze; 11/22/24 01:41 PM.
|
|
|
|
Joined: Apr 2012
Posts: 344 Likes: 63
Senior Member
|
OP
Senior Member
Joined: Apr 2012
Posts: 344 Likes: 63 |
The screen device is already flawed when it comes to the timings based on visible area. If you need accurate timing for sync signals, etc. you really need to generate them from the CRTC device itself. Does the 6845 device provide vertical blanking and/or sync signals independent of the screen device? The 6845 does provide good HS and VS signals, we're not using any timings from screen_device. It's the fact that screen_device controls screen updates and this is now updating non visible areas of the bitmap (no way of avoiding this), and both the screen and mc6845 base their timers assuming they only cover the visible area, so they're out of sync. Should I be using screen->reset_origin() to ensure they're in sync? Giving the screen the option to display border would negate these issues as it would still be aware of the visible area to update, rather than the intended bitmap size, and would also still provide System Information dialog with active area size.
BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
|
|
|
|
Joined: Feb 2004
Posts: 2,603 Likes: 307
Very Senior Member
|
Very Senior Member
Joined: Feb 2004
Posts: 2,603 Likes: 307 |
You can’t make the screen device’s “visible area” mean anything other than the size of the visible portion of the output bitmap, or all hell will break loose. Far too many things depend on that all the way through MAME’s render stack and in external scripts.
The 6845 getting out of sync with the screen device is annoying. I really need to fix that properly, but it requires a chunk of time at once because I can’t leave it broken while fighting other fires.
|
|
|
|
Joined: Apr 2012
Posts: 344 Likes: 63
Senior Member
|
OP
Senior Member
Joined: Apr 2012
Posts: 344 Likes: 63 |
You can’t make the screen device’s “visible area” mean anything other than the size of the visible portion of the output bitmap, or all hell will break loose. Far too many things depend on that all the way through MAME’s render stack and in external scripts. Agree 100%, the 6845 set_show_border_area(true) option simply cannot work for anything that depends on any timings. So are there any other suggestions for creating a bitmap larger than the defined visible area, or we stuck with stretching games to fill the screen for now? (See Boffin and E-Type screenshots earlier in thread, both define a visible area considerably smaller than the actual screen)
BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
|
|
|
|
Joined: Feb 2004
Posts: 2,603 Likes: 307
Very Senior Member
|
Very Senior Member
Joined: Feb 2004
Posts: 2,603 Likes: 307 |
You’re still thinking about it the wrong way – the fix isn’t to allow the screen device to display something larger than its defined visible area. It’s to fix things so the 6845 doesn’t drift from the screen device.
It’s possible to fix, but it requires major surgery to the 6845, which is risky due to the number of things that depend on it. I’m not too keen on trying to help someone else do it, because it ended in disaster last time I tried to help someone work on the 6845. Apparently considering more than one use case is a bit much to expect.
|
|
|
|
Joined: Mar 2001
Posts: 17,234 Likes: 259
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,234 Likes: 259 |
Right. 6845 tricks like 8088 MPH didn't make sense to me when I thought of the 6845 as the source of truth. But they make perfect sense when you realize the monitor is.
|
|
|
|
Joined: Aug 2009
Posts: 1,261 Likes: 192
Very Senior Member
|
Very Senior Member
Joined: Aug 2009
Posts: 1,261 Likes: 192 |
It’s possible to fix, but it requires major surgery to the 6845, which is risky due to the number of things that depend on it. I’m not too keen on trying to help someone else do it, because it ended in disaster last time I tried to help someone work on the 6845. Apparently considering more than one use case is a bit much to expect. As I've said multiple times, our 6845 core does too much, and it doesn't make sense to try fixing it and pretend it won't break for anything else. It needs a separate core, picking up any of the heavyweights and start working there.
|
|
|
|
Joined: Mar 2001
Posts: 17,234 Likes: 259
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,234 Likes: 259 |
Yeah, an "n6845" to use OG terminology. Make it do the heavy hitters (8088 MPH, the BBC stuff, the Amstrad stuff) and then all the simple cases should port right over.
|
|
|
2 members (R. Belmont, 1 invisible),
205
guests, and
1
robot. |
Key:
Admin,
Global Mod,
Mod
|
|
Forums9
Topics9,328
Posts122,128
Members5,074
|
Most Online1,283 Dec 21st, 2022
|
|
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!
|
|
|
|