It is currently Fri Mar 24, 2017 3:15 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 38 posts ]  Go to page Previous  1, 2, 3  Next

How much does your TV display?
Entire screen is showing 56%  56%  [ 5 ]
Less or equal to 16 pixels clipped evenly between top and bottom 33%  33%  [ 3 ]
Less or equal to 16 pixels clipped unevenly between top and bottom 11%  11%  [ 1 ]
More than 16 pixels clipped evenly between top and bottom 0%  0%  [ 0 ]
More than 16 pixels clipped unevenly between top and bottom 0%  0%  [ 0 ]
Total votes : 9
Author Message
PostPosted: Fri Dec 16, 2016 2:22 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 17972
Location: NE Indiana, USA (NTSC)
The 239-line mode works. I think Tetris & Dr. Mario uses it, but I could be wrong. I know 240p Test Suite uses 224, 239, 448, and 478 line modes.

It's the Sega systems where the bigger-than-224-line mode was broken on NTSC.


Top
 Profile  
 
PostPosted: Fri Dec 16, 2016 2:36 pm 
Offline
User avatar

Joined: Sun Sep 19, 2004 9:28 pm
Posts: 3192
Location: Mountain View, CA, USA
I'm highly triggered by the lack of "as much as I set it to display via technician's/configuration mode" poll choice. ;-)


Top
 Profile  
 
PostPosted: Fri Dec 16, 2016 2:56 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 17972
Location: NE Indiana, USA (NTSC)
And I'm triggered by manufacturers making service mode instructions hard to find and not exposing picture size controls to the user the way CRT computer monitors used to.

But seriously, I think the intent was to check the box for what kind of overscan you see on a TV set as you received it, because most end users will be using TVs set as they received them.


Top
 Profile  
 
PostPosted: Fri Dec 16, 2016 3:24 pm 
Offline

Joined: Fri Jul 04, 2014 9:31 pm
Posts: 665
lidnariq wrote:
I'm really skeptical of Espozo's assertion that "many" or, for that matter, more than a tiny handful used forced blanking to reduce the vertical height from 224 scanlines.

There are quite a few games with suspicious black borders:

Super Mario Kart
Wolfenstein 3D
Out Of This World
Star Ocean (during combat)
Final Fight 1/2/3
Street Fighter 2/Turbo/Super/Alpha 2
Every Super FX game (yes, even Yoshi's Island)
probably more I'm forgetting or unaware of
...not to mention Unholy Night...

I'm pretty sure most games use the default screen height, but it's hardly unknown for games with large sprites or extensive software rendering to need (or at least look like they need) a little more space...


Top
 Profile  
 
PostPosted: Fri Dec 16, 2016 6:10 pm 
Offline
User avatar

Joined: Sun Sep 19, 2004 9:28 pm
Posts: 3192
Location: Mountain View, CA, USA
I can't speak for any other games than Final Fight (the original) -- and that's because I actually took the time to examine it.

The game sets forced blank ($2100=$8f) at scanlines 214 and 225. It clears forced blank ($2100=$0f) at scanline 18. I checked with a screenshot: scanlines 0-18 are blanked out (black), as are scanlines 214 through 224. Thus, you only get scanlines 19 through 213 displaying anything.

I simply set a write breakpoint on $2100 (thankfully the debugger is smart enough to know 2100 means "in/for any bank"). Couple frames just to demonstrate:

Code:
Breakpoint 0 hit (31).
0088c7 sta $2100     [002100] A:008f X:0006 Y:0050 S:1fe4 D:0000 DB:00 NvMxdIzc V:214 H:319 F:26
Breakpoint 0 hit (32).
0088c7 sta $2100     [002100] A:008f X:0004 Y:0040 S:1fe6 D:0000 DB:00 NvMxdIzc V:225 H:193 F:26
Breakpoint 0 hit (33).
008817 sta $002100   [002100] A:000f X:0002 Y:30a4 S:1e24 D:0000 DB:00 nvMxdIzc V: 18 H:298 F:27
Breakpoint 0 hit (34).
0088c7 sta $2100     [002100] A:008f X:0006 Y:0010 S:1fe4 D:0000 DB:00 NvMxdIzc V:214 H:310 F:27
Breakpoint 0 hit (35).
0088c7 sta $2100     [002100] A:008f X:0004 Y:0000 S:1fe6 D:0000 DB:00 NVMxdIzc V:225 H:197 F:27
Breakpoint 0 hit (36).
008817 sta $002100   [002100] A:000f X:0002 Y:30a4 S:1e24 D:0000 DB:00 nvMxdIzc V: 18 H:293 F:28

Here's the relevant code for both points. $88c2-88c7 says it all -- Capcom sets this intentionally.

Code:
0088c2 lda $00e8
0088c5 ora #$80
0088c7 sta $2100

008813 lda $0000e8
008817 sta $002100

And for fun, I decided to nop out the ora #$80 just to see what the effect was. I expected bad graphical corruption. Result: backgrounds were fine, barring the very bottom (looks like more or less what I'd expect), but also sprites were basically MIA (all invisible/non-rendered). Going through things frame by frame, I could see the player and enemies basically "undrawing" a frame at a time (hard to put into words). I've attached a screenshot of the full results of that. I should've tried forcing rendering on ($2100=$0f) at scanline 0 or scanline 1, just to see what the results were at the top of the screen. I imagine just more corruption.

I get the strong impression they did this because they truly did need the extra CPU time for general processing.


Attachments:
File comment: With forced blanking disabled (NOP'd out)
Final Fight (U)-20161216-170802.png
Final Fight (U)-20161216-170802.png [ 14.05 KiB | Viewed 803 times ]
File comment: Normal screenshot of game (to denote scanline locations)
Final Fight (U)-20161216-165136.png
Final Fight (U)-20161216-165136.png [ 20.27 KiB | Viewed 803 times ]
Top
 Profile  
 
PostPosted: Fri Dec 16, 2016 6:25 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2012
Street Fighter 2 uses the bottom bar to update OAM, so Final Fight probably does the same.


Top
 Profile  
 
PostPosted: Sat Dec 17, 2016 1:23 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2012
Which games get passed the DMA limit through alternating DMA priorities?

-DKC
-DKC 2
-DKC 3
-Alisha's Adventure (my game)


Top
 Profile  
 
PostPosted: Sat Dec 17, 2016 1:50 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 17972
Location: NE Indiana, USA (NTSC)
Haunted: Halloween '85 gets past the NES's counterpart of the DMA limit by double-buffering all six actors' sprite cels. When a frame of animation is displayed, it guesses the next frame based on that frame. Then each actor's CHR RAM uploader is active for one or two frames, transferring 128 bytes per frame, until the next frame is ready. In predictable cases, such as a run cycle or subsequent frames of an attack combo, this completely hides lag. Though some actions are less predictable, such as the player jumping or skidding or the first frame of an attack combo, the fact that all other sprites' cels are predicted means you end up with only one extra frame of lag most of the time.


Top
 Profile  
 
PostPosted: Sun Dec 18, 2016 8:41 am 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2012
I wish they did the DKC trick for beat'mups. They would've had 2 players and 6 enemies with little to no force blank.


Top
 Profile  
 
PostPosted: Sun Dec 18, 2016 9:40 am 
Offline

Joined: Thu Aug 28, 2008 1:17 am
Posts: 591
psycopathicteen wrote:
I wish they did the DKC trick for beat'mups. They would've had 2 players and 6 enemies with little to no force blank.

Assuming you limited each character to 2k, you'd have nothing left in the sprite segments of vram for anything else (items on the ground, weapons, etc).

_________________
__________________________
http://pcedev.wordpress.com


Top
 Profile  
 
PostPosted: Sun Dec 18, 2016 10:25 am 
Offline
User avatar

Joined: Mon Sep 15, 2014 4:35 pm
Posts: 2892
Location: Nacogdoches, Texas
That's why you need to do my glorious cpu-hungry dynamic vram allocation scheme. :lol: I find people having problems fitting all the sprite data into 16KB when they're using 8x8 and 16x16 sprites to be a little ridiculous. I mean, shoot, every sprite could have its own 16x616 slot, although that would be terrible for uploading tile data.


Top
 Profile  
 
PostPosted: Sun Dec 18, 2016 11:04 am 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2012
Espozo wrote:
I mean, shoot, every sprite could have its own 16x616 slot, although that would be terrible for uploading tile data.


In that case, you would use the "peeing on the registers" technique.

Code:
macro dma(n) {
txs                                               //stack points to $4305
pei ({dma_bank}+{n})                            //high byte is dma legnth
pei ({dma_address}+{n})
ldy.b {dma_destination}+{n}
sty $2116
sta $420b                                      //a = $01
}


Top
 Profile  
 
PostPosted: Mon Dec 19, 2016 9:54 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2012
Just played around with 240 line mode and it does work for NTSC, just not for every emulator.

If you want to make a game using 256x240 mode, just make sure you do a good job hiding 32x32 sprites. Either make them pop off the top and bottom of the screen, turn them into a pair of 16x16 sprites, hide them behind a status bar, or simply not use 32x32 sprites.


Top
 Profile  
 
PostPosted: Mon Dec 19, 2016 10:20 pm 
Offline
User avatar

Joined: Mon Sep 15, 2014 4:35 pm
Posts: 2892
Location: Nacogdoches, Texas
Goes to show how widely it was used... Surprisingly, of all emulators, I remember ZSNES having it. That's what I used to use before I knew better. I had a giant list of ROMs I got, and I randomly went clicking around (which is actually how I discovered R-Type III) and saw this crappy James Bond Jr. game, and the window expanded vertically a little (224 to 240) when it loaded. I guess the reason this wasn't really used is because the amount of bandwidth with 224 rows is already bad enough, and whatever you're going to gain is going to be off-screen. Now that I think about it, NES games are cut off more than SNES games on my TV. It cuts off the top 8, and then the bottom 24 pixels if I remember correctly.


Top
 Profile  
 
PostPosted: Tue Dec 20, 2016 10:10 am 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2012
With 240 mode, you only have about 3.5kB of DMA total, with OAM about 3kB left, and for a lot of small sprite updates only 2kB. I guess, if you have 12 characters, about 1kB in size, animated at 10fps, you can just make it. Or if you're using larger, less flexible slot sizes, at 15fps. I know that if I change the limit in Alisha's Adventure, from 4kB to 2kB, some sprite animation would even get stuck because some of the animation frames are bigger than 2kB, and would have to be trimmed/optimized to fit.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 38 posts ]  Go to page Previous  1, 2, 3  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group