It is currently Mon Dec 10, 2018 9:15 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 56 posts ]  Go to page Previous  1, 2, 3, 4  Next
Author Message
PostPosted: Thu Oct 04, 2018 10:36 am 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7599
Location: Chexbres, VD, Switzerland
rainwarrior wrote:
You can search for MMC3 + CHR-RAM on bootgod's database.

The primary candidates here are Mega Man 4 and 6. I don't think either of this does any CHR bankswitching, but that's a research question that more or less requires playing through both games with a debugger open. (It could easily have been relevant for some animated nametable boss, for example.)

To be honest, most early/innacurate emus probably emulate a plain solid 8k of CHR-RAM when encountering any game with CHR-RAM, so they don't emulate the bankswitching. If MM4 or MM6 would have used this feature, it would have been discovered long ago simply by playing those games in old emulators.

For instance Romancia probably looks wrong in old emus for exactly that reason (I'm saying this from memory and this need to be verified).

However it's possible the games would use this by accident if some glitch is triggered or something, but I still think that's unlikely.


Top
 Profile  
 
PostPosted: Thu Oct 04, 2018 12:26 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 7006
Location: Canada
Yeah, my guess is also that they probably don't. Couldn't say about emulators, but FCEUX is definitely very ad-hoc about CHR-RAM, wouldn't trust it without a test. Kinda wonder whether it's even connected on the TGROM boards, but I don't feel like trying to trace that out from photos at the moment. (If DRW is interested they can do the research.)

Interestingly, all three US TGROM games do set up the banks explicitly, and with different code for each (not hugely different, but they're even storing from different registers, so it doesn't feel like an "MMC3 copy paste").

The Wiki TxROM page says that TGROM could have CHR RAM or ROM, but I only see RAM entries in bootgod's db?


Top
 Profile  
 
PostPosted: Thu Oct 04, 2018 1:08 pm 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 7802
Location: Seattle
Nintendo always connected the banking lines.

(Looking at http://bootgod.dyndns.org:7777/profile.php?id=1073 you can see CHR A11 leave the MMC3 and go via a series of traces and vias to the CHR RAM)


Top
 Profile  
 
PostPosted: Thu Oct 04, 2018 1:53 pm 
Offline

Joined: Sun Jun 12, 2011 12:06 pm
Posts: 446
Location: Poland
lidnariq wrote:
Nintendo always connected the banking lines.

(Looking at http://bootgod.dyndns.org:7777/profile.php?id=1073 you can see CHR A11 leave the MMC3 and go via a series of traces and vias to the CHR RAM)


Then cartidge pirates were unaware too, because in "Rockman 7-in-1" and "Rockman 6 in 1" (different manufacturers), which have MMC3 glob, CHR-ROM and CHR-RAM, A10-A12 of RAM is connected to PPU A10-A12.


Top
 Profile  
 
PostPosted: Thu Oct 04, 2018 2:54 pm 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 11010
Location: Rio de Janeiro - Brazil
For the majority of games (not that there are many CHR-RAM games using ASIC mappers, but still) that probably works, but it's wrong.


Top
 Profile  
 
PostPosted: Thu Oct 04, 2018 6:10 pm 
Offline
User avatar

Joined: Tue Jun 24, 2008 8:38 pm
Posts: 2119
Location: Fukuoka, Japan
I could be wrong but my guess would be the reason more than 8k was not used is maybe that it was not cost effective at the time? In 2018, it shouldn't be an issue so I think that unless the hardware doesn't support it (which is not the case) and you need a new mapper, I don't see why I you should avoid more than 8k. I would do if I really needed it on any project.

With more memory like 32k, you could buffer a lot of sprite in any way you want and make you life easier. I guess all kind of animation too. And if it doesn't work on current emulator then they are not emulating properly (the hardware can bank any chip, ram or rom, it should make not difference) and must be updated someday. I don't see any problem with that.


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 12:00 am 
Offline
User avatar

Joined: Sat Sep 07, 2013 2:59 pm
Posts: 1765
Banshaku wrote:
I could be wrong but my guess would be the reason more than 8k was not used is maybe that it was not cost effective at the time?

That's exactly the reason why I myself wouldn't do it if my plan is to create a game with authentic 80s to 90s hardware: If it wasn't cost-effective back then and was therefore never done, then I will not use it.

Software tricks are fine, like 8 KB bankswitching, even if nobody on MMC3 ever did this. Because this has nothing to do with limitations, but with a single person's creativity.

That's also the reason why I used sprite 0 and the sprite overflow flag for "City Trouble" to create parallax scrolling and a status bar, even though nobody ever used it like that: The techniques are there. A programmer from 1986 could have done this without asking Nintendo to produce special hardware.

But hardware constellations that didn't exist for various reasons (like putting a 32 KB RAM chip into the game due to costs): I would only do this if I tried to create a modern game on the NES, but not if my game is written in the spirit of old games.

So, if I ever created a game based on "Buffy the Vampire Slayer", then everything would be allowed because who knows what boards they would have had if the NES had still been strong in 1998.
But a 1991-style action adventure only gets hardware that was available and common in 1991.


And since 8 KB CHR RAM banking doesn't seem so great to me, I settled for regular MMC3 CHR ROM with many banks now (probably 128 KB if my calculations are correct).

_________________
Available now: My game "City Trouble".
Website: https://megacatstudios.com/products/city-trouble
Trailer: https://youtu.be/IYXpP59qSxA
Gameplay: https://youtu.be/Eee0yurkIW4
German Retro Gamer article: http://i67.tinypic.com/345o108.jpg


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 1:33 am 
Offline
User avatar

Joined: Fri Jan 24, 2014 9:05 am
Posts: 164
Location: Hungary
That makes sense, it's a way to assess how far people have come with reverse-engineering the hardware if you try to stick to the same limits on hardware as developer X, but you are still able to do more thanks to discoveries since then, and more time to spend on managing the available resources better. For example the first Mega Man game uses CHR-RAM (standard UNROM board) but the developers never thought about uploading tiles during VBlank for animation.

Sprite overflow was used by Bee 52, but I don't think a single commercially released game ever used the DMC IRQ for raster timing. Today, these are perfectly viable and documented ways of getting more out of a stock NES than many devs had a chance to back in the day. Sloppy documentation was a common thing for them, many stories have emerged where people did not use DPCM samples simply because they had no idea the 5th channel even existed.


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 5:07 am 
Online

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20851
Location: NE Indiana, USA (NTSC)
za909 wrote:
Sprite overflow was used by Bee 52, but I don't think a single commercially released game ever used the DMC IRQ for raster timing.

Not even Fire Hawk (unlicensed) and Time Lord (licensed)?


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 11:01 am 
Offline
User avatar

Joined: Sun Sep 19, 2004 9:28 pm
Posts: 3715
Location: Mountain View, CA
Re: above: https://wiki.nesdev.com/w/index.php/Tri ... late_games


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 12:42 pm 
Offline
User avatar

Joined: Sat Feb 16, 2013 11:52 am
Posts: 320
DRW wrote:
Banshaku wrote:
I could be wrong but my guess would be the reason more than 8k was not used is maybe that it was not cost effective at the time?

That's exactly the reason why I myself wouldn't do it if my plan is to create a game with authentic 80s to 90s hardware: If it wasn't cost-effective back then and was therefore never done, then I will not use it.

Software tricks are fine, like 8 KB bankswitching, even if nobody on MMC3 ever did this. Because this has nothing to do with limitations, but with a single person's creativity.

That's also the reason why I used sprite 0 and the sprite overflow flag for "City Trouble" to create parallax scrolling and a status bar, even though nobody ever used it like that: The techniques are there. A programmer from 1986 could have done this without asking Nintendo to produce special hardware.

But hardware constellations that didn't exist for various reasons (like putting a 32 KB RAM chip into the game due to costs): I would only do this if I tried to create a modern game on the NES, but not if my game is written in the spirit of old games.

So, if I ever created a game based on "Buffy the Vampire Slayer", then everything would be allowed because who knows what boards they would have had if the NES had still been strong in 1998.
But a 1991-style action adventure only gets hardware that was available and common in 1991.



To each his own, but I find that kind of self imposed limitations silly. There are much more effective ways to capture "the spirit of old games" than having technical guidelines which will restrict your output in ways only yourself will notice. The 2018 end user who is playing a NES game that was definitely made in 2018 and not 198X won't be able to tell the difference or care if you're using CHR-RAM or doing MMC1 CHR bankswitch or any other hardware aided technique, but he WILL notice its art style, game mechanics, etc.

_________________
This is a block of text that can be added to posts you make. There is a 255 character limit.


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 12:47 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 7006
Location: Canada
The difference in capabilities between 32k CHR-RAM and banked CHR-ROM are pretty academic. It's not really a significant difference, IMO. This is nothing like getting 8x8 attributes or stuff like that, it's more or less the same as we were already able to do in common NES games.

The more significant thing is whether crusty old emulators will support it, or possibly whether you want to build it with donor carts. Both of these could be an issue, depending on your priorities.

In terms of building the hardware, I think at some point the price of 32k SRAM became the same or lower than 8k, so even for carts that only needed 8k it was more sensible to use the 32k part anyway.


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 1:22 pm 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7599
Location: Chexbres, VD, Switzerland
DRW wrote:
That's exactly the reason why I myself wouldn't do it if my plan is to create a game with authentic 80s to 90s hardware: If it wasn't cost-effective back then and was therefore never done, then I will not use it.

Software tricks are fine, like 8 KB bankswitching, even if nobody on MMC3 ever did this. Because this has nothing to do with limitations, but with a single person's creativity.

[...]

But hardware constellations that didn't exist for various reasons (like putting a 32 KB RAM chip into the game due to costs): I would only do this if I tried to create a modern game on the NES, but not if my game is written in the spirit of old games.

Just to say I fully adhere to this philosophy, and I always try to do thing the good old way whenever possible. That's also why I'd use the smallest mapper that can do what I want to do when offered the option. If you don't want to stick to the old standard, there's no point in writing a game for the NES, you could just write it for modern hardware using retro audio and graphics.

I even go further as I'm even reluctant to use software tricks that wouldn't have been used back in the day, although if they are useful for a game I'd use them but only when there's no other option. In this particular case I'd only use bankswitching withing 8k of CHR-RAM if the effect I want to be done can only be done that way and cannot be mimicked with "normal" CHR-RAM updates.

Quote:
The difference in capabilities between 32k CHR-RAM and banked CHR-ROM are pretty academic. It's not really a significant difference, IMO. This is nothing like getting 8x8 attributes or stuff like that, it's more or less the same as we were already able to do in common NES games.

There's actually a huge difference in the sense that CHR-RAM is flexible and allows for special graphical effects unthinkable with CHR-ROM, such as making tiles disappear gradually. So if you can both do those "CHR-RAM only" effects and quickly bankswitch fresh tiles in for new animations, I mean it's borderline bypassing NES' technical limitations. I know the NES can do it but not with hardware commonly released with games back then.

The most beautiful hardware doing this is the board for Napoleon Senki, it was magnificently designed and uses 74xx series chips very cleverly to provide four name tables and advantages of both CHR-RAM and CHR-ROM. Unfortunately the game sucks very hard.


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 1:36 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 7006
Location: Canada
Bregalad wrote:
There's actually a huge difference in the sense that CHR-RAM is flexible and allows for special graphical effects unthinkable with CHR-ROM, such as making tiles disappear gradually. So if you can both do those "CHR-RAM only" effects and quickly bankswitch fresh tiles in for new animations, I mean it's borderline bypassing NES' technical limitations. I know the NES can do it but not with hardware commonly released with games back then.

CHR-RAM effects like gradually changing tiles was certainly done in some pretty common games. CHR-RAM was very common in general (25% of games in the database). We're just proposing the option to do both (or one or neither) on the same cart. This is just about the tiniest augmentation of "NES technical limitations" I could imagine.


Top
 Profile  
 
PostPosted: Fri Oct 05, 2018 2:03 pm 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 7802
Location: Seattle
Bregalad wrote:
I mean it's borderline bypassing NES' technical limitations. I know the NES can do it but not with hardware commonly released with games back then.
.... The entire point of what I've been pointing out is that that's exactly what was possible using "hardware commonly released with games back then".

Did TNROM and TGROM games use it? At least Megaman 4 and 6 clearly don't, because pirates didn't wire it up. But that doesn't mean it wasn't supported, and it's obnoxious to claim otherwise.

DRW's conclusion that he couldn't figure out how to usefully use bankswitching with just 8 KiB of CHR RAM, and therefore he'd rather use a larger CHR ROM? That's fine, that's a perfectly valid conclusion. But once one is using CHR RAM bankswitching is already there and you get it for free.


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

All times are UTC - 7 hours


Who is online

Users browsing this forum: Google [Bot], Nicole, Revenant and 2 guests


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