Posted: Tue Jun 21, 2011 12:49 pm
I noticed that FCEUX 2.something seems to cut off the top eight pixels. I have to constantly remind myself about the overscan areas when developing with Nintendulator 
NES Development Forums
https://forums.nesdev.org/
Note to self: add an option to an emulator to render the safe area markers on top of the emulated image (FCEUX can already do this with LUA..).Bregalad wrote: In other words if you always have all scanlines visible like toku, you could end up putting important information in the edges by forgetting this could be hidded.
Ah, sure. I was just saying I don't like programs hiding things from me (the very first thing I do after installing Windows is configure it to display file extensions, hidden folders/files and system folders/files), so I configure my emulators to show all scanlines. But of course, I avoid placing important info too close to the edges.Bregalad wrote:What I meant is, for development purposes, you should ideally make the game looks "allright" both with all scanlines visible, and with all the scanlines that could be cropped, not visible.
They're not really inevitable... If you mask the top of the screen to hide scrolling glitches, and mask the left of the screen using the built-in PPU feature, you can have sprites enter/leave the screen smoothly in any direction.If you always have all borders masked, you would end up with sprites popping (which is in fact inevitable)
True... But with CNROM you can actually get away with 4KB of blank tiles if you make sprites and background use tiles from the same pattern table. Even if you use 8x16 sprites from both pattern tables you can temporarily set them to 8x8 to force them to fetch patterns from the blank pattern table, and after the masked area you can set them back to 8x16. 4KB of CHR-ROM is still a lot of what's available in CNROM, but it's a lot better than 8KB.Bregalad wrote:Of course if you use CNROM you won't be wasting 8KB of your 32kb CHR just for that
I did a little proof of concept about this as well: http://kkfos.aspekt.fi/downloads/status-bar.zip. The ROM is set to FME-7 but doesn't use IRQs or anything. It uses vertical mirroring. Still needs some tweaking to make it look better (and to actually have something in the status bar instead of blank tiles) but anyway I think it's a really nice little technique. It's great to be able to have glitch free multiway scrolling + status bar on simple configs such as UxROM!tokumaru wrote:I imagined using the first few scanlines of the frame to draw the status bar (since those scanlines are outside the safe area you wouldn't want any information there anyway) and then a sprite hit would indicate the end of the status bar. At that point you might need to blank a few more scanlines, in order to avoid vertical scrolling glitches. Please let us know if you code something like this!
I don't think your proof of concept proofs anything... It's likely way too much work to update the whole status bar every time your cross a tile horizontally (potentially every frame).thefox wrote: I did a little proof of concept about this as well: http://kkfos.aspekt.fi/downloads/status-bar.zip. The ROM is set to FME-7 but doesn't use IRQs or anything. It uses vertical mirroring. Still needs some tweaking to make it look better (and to actually have something in the status bar instead of blank tiles) but anyway I think it's a really nice little technique. It's great to be able to have glitch free multiway scrolling + status bar on simple configs such as UxROM!
The code already handles nametable crossing. I also made it better today so that it actually displays something meaningless (altho I forgot to update the attributes, so I need to find CPU time to write 8 more bytes). The extra blanking is not a problem for me.Bregalad wrote:I don't think your proof of concept proofs anything... It's likely way too much work to update the whole status bar every time your cross a tile horizontally (potentially every frame).
You'd say that if the status bar is small enough and if you blank extra lines this might become possible but then why not do it like Jungle Book instead, which seems more clever.
From what I can see, it's the same basic idea, but instead of redrawing the entire thing every frame it progressively draws stacked copies of the status bar as the vertical scroll changes. That way, even if he playfield overwrites one of the copies, at least one copy will be usable at any given time.thefox wrote:How does Jungle Book do it?
I came to the same conclusion after seeing your first demo. The main advantage is that you have to set the VRAM address fewer times.So you're right, moving the status bar vertically is better (CPU usage wise) than moving it horizontally, which I was doing in my example.
Looks great.For what it's worth, here's my latest attempt: