Previous Thread
Next Thread
Print Thread
Page 21 of 120 1 2 19 20 21 22 23 119 120
Kale #52772 08/16/09 05:31 PM
Joined: Jun 2008
Posts: 205
B
Senior Member
Offline
Senior Member
B
Joined: Jun 2008
Posts: 205
Quote
Most wind up doubling everything up to that point, and from then on as well. No idea what byuu does, so he might have a better way than what the old emulators did.

What I do is render each line at whatever the current resolution is, and store its width into a buffer: unsigned lineWidth[480];
I also keep a flag: bool frameHasHires |= (thisLineWidth == 512);

In that way, my filters have the choice of either up-sampling each 256-width line to 512-width, or rendering each different section of the screen in different blocks.

The main problem is handling software filters like HQ2x. If you up-sample a 256-width screen to 512-width, you won't be able to properly HQ2x filter the screen. Games like Secret of Mana 2 will act screwy when your filtering drops every time a text box appears. The lineWidth buffer will allow you to work around that, but will require heroic efforts in writing said filters. For bsnes, only the NTSC filter supports it fully.

Quote
(ie, as well as you'll get without a dot-based PPU)

If you're really ready to cry, I suspect that it's possible to change between lores and hires in the middle of a scanline. So any width between 256 and 512 should be theoretically possible.

I plan to forcefully always render at 512-width for my dot-based PPU. Indeed, the two modes are very similar on the SNES. It just changes how the main and sub screens blend together.

Kale #52773 08/16/09 05:47 PM
Joined: Dec 2005
Posts: 330
A
AWJ Offline
Senior Member
Offline
Senior Member
A
Joined: Dec 2005
Posts: 330
Wouldn't it be simpler just to render 512 horizontal pixels all the time? It's not like MESS cares about supporting kiddie filters. How big a speed penalty for non-hires games would this entail?

AWJ #52774 08/16/09 05:49 PM
Joined: Mar 2001
Posts: 17,215
Likes: 234
R
Very Senior Member
Offline
Very Senior Member
R
Joined: Mar 2001
Posts: 17,215
Likes: 234
That's pretty much what MESS already does for a lot of systems. On the Apple IIgs I always render 640+border and pixel-double 320 mode, for instance, and it's fine.

Joined: Jun 2008
Posts: 205
B
Senior Member
Offline
Senior Member
B
Joined: Jun 2008
Posts: 205
The speed penalty depends upon how fast MESS already is, or will be. For bsnes, it wouldn't even be noticeable because everything else is so slow already :P

It's just that SNES users are quite picky about having their NTSC or HQ2x filters. It's easy to say you don't care, but you can't very well test every last game ever made yourself. You'll need to get some hardcore fans to help you with that.

byuu #52777 08/16/09 06:57 PM
Joined: May 2009
Posts: 2,214
Likes: 382
J
Very Senior Member
Offline
Very Senior Member
J
Joined: May 2009
Posts: 2,214
Likes: 382
Originally Posted by byuu
It's just that SNES users are quite picky about having their NTSC or HQ2x filters. It's easy to say you don't care, but you can't very well test every last game ever made yourself. You'll need to get some hardcore fans to help you with that.

I guess it sucks to be us, then. smile

MESS and MAME ostensibly use an "If you build it, they will come" mentality - once a driver is considered relatively complete, eventually someone will wander by and try his or her favorite obscure game. And since that person will be trying MAME or MESS, that person is typically smart enough to track down the right forums and report the bug. It's slower, and more appealing to the lazy.

Kale #52778 08/16/09 06:59 PM
Joined: Dec 2005
Posts: 330
A
AWJ Offline
Senior Member
Offline
Senior Member
A
Joined: Dec 2005
Posts: 330
The NTSC filter would apply just fine to a doubled 512-wide image, wouldn't it? It'd just be (considerably) slower.

AWJ #52779 08/16/09 07:25 PM
Joined: Jan 2006
Posts: 3,691
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,691
filters (except Blargg's NTSC one) suck because they make the result different from what I was able to see on the real thing.

if I want super-smooth edges and blurs, I'd play a PC first person shooter, not an old SNES game with any HQnx filter wink

that said, it would be great to try to create a generic NTSC filter which could be overlayed to MESS systems supposed to be connected to a TV

Joined: Aug 2009
Posts: 1,250
Likes: 171
Kale Online Sleepy OP
Very Senior Member
OP Online Sleepy
Very Senior Member
Joined: Aug 2009
Posts: 1,250
Likes: 171
I don't like the "double everything to 512" approach...unless proven otherwise, in the end Seiken Densetsu 3 is running with HRES=256 and the other test cases runs at HRES=512, so the CRTC is presumably doing some post-processing with the internal framebuffer and trigger the internal 256/512 switch caused by modes 5/6 at vblank time. It works for now for either MESS and for BSNES, but imho it's definitely something that requires tests on real HW if possible (for example by quickly switching between mode 1/5 on a single screen and see if there's or not a noticeable flicker on the resulting screen).

Kale #52781 08/16/09 08:53 PM
Joined: Mar 2001
Posts: 17,215
Likes: 234
R
Very Senior Member
Offline
Very Senior Member
R
Joined: Mar 2001
Posts: 17,215
Likes: 234
Also there's a difference between having users help test and deciding to become a slower version of zsnes. You can have users without letting them dictate your design. (I'm still somewhat horrified that bsnes has add-on chips now given how much byuu used to argue against them).

Kale #52782 08/16/09 08:55 PM
Joined: Jun 2008
Posts: 205
B
Senior Member
Offline
Senior Member
B
Joined: Jun 2008
Posts: 205
Not sure what you mean. Hires can definitely be toggled mid-frame with no flickering. It just varies how long each color is fed to the display.

Same for pseudo-hires. It's quite possible to use two BG layers in mode 0 to make a 512x480 screen =)

Interlace on the other hand, while it can be toggled at any time and takes immediate effect on PPU addressing, obviously cannot take effect immediately on the TV. It caches the interlace setting somewhere and will apply it consistently to the entire screen. Not sure if it does it every single frame or every other frame, though. Too hard to tell.

Page 21 of 120 1 2 19 20 21 22 23 119 120

Link Copied to Clipboard
Who's Online Now
4 members (ameath, Kale, robcfg, 1 invisible), 519 guests, and 1 robot.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,320
Posts121,930
Members5,074
Most Online1,283
Dec 21st, 2022
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Forum hosted by www.retrogamesformac.com