It is currently Tue Dec 11, 2018 10:36 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 104 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 7  Next
Author Message
PostPosted: Thu Jul 19, 2018 4:45 pm 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 11011
Location: Rio de Janeiro - Brazil
Fisher wrote:
Do you mean something similar to the "almighthy" Hydron?

I should've imagined that something like this existed here in Brazil, where all kinds of Famiclones coexisted, some with 60-pin cartridge connectors and other with 72-pin ones (and some even had both).


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 12:04 am 
Offline
User avatar

Joined: Thu May 31, 2018 11:12 am
Posts: 153
Location: Bristol, England
I thought it was to do with the controller? How do flashcarts affect that?


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 12:31 am 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1786
Location: Gothenburg, Sweden
controllers go through the data lines, which are naturally connected to a lot of things, including cartridges.

edit: citing nesdev wiki instead*:
Quote:
When the CPU attempts to read from an address which has no devices active, the result is open bus behavior. The value that results from a read in such a region is undefined, but on specific hardware predictable results may appear.

Clone versions of the hardware, and flash cartridges like the PowerPak or Everdrive may differ in their open bus behavior from a standard NES.


Lastly, tepples wrote earlier that PowerPak is using pullup resistors.


* https://wiki.nesdev.com/w/index.php/Open_bus_behavior

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 1:00 am 
Offline
Site Admin
User avatar

Joined: Mon Sep 20, 2004 6:04 am
Posts: 3596
Location: Indianapolis
orlaisadog wrote:
I thought it was to do with the controller? How do flashcarts affect that?


All external data that the CPU can read and write, including the controller ports and cartridge, are all physically connected together sharing the same 8-bit data bus. External hardware will only output data when you access within a certain address range, otherwise they'll be in a high-impedance state (AKA tri-state, or hi-z), which allows other hardware to output data on the bus. When you read the controller port, it doesn't actually use all 8-bits, those unused bits are not forced to 1 or 0 state. What will happen with those unused bits is it will see the last value that was output on the bus (this is known as open-bus behaviour). Normally then, reading $4016 means the last thing on the data bus was the high byte of the address, $40. If the PowerPak then had resistors on the data bus pulling the unused (undriven) bits to '1', then the CPU will surely be seeing a value other than $40.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 1:31 am 
Offline
User avatar

Joined: Thu Sep 15, 2016 6:29 am
Posts: 825
Location: Denmark (PAL)
I'm really curious here. What's the purpose of testing wether a game is run on an NES or a Famicom? And does it make a difference (to you) if said Famicom is a classic model, a Twin Famicom, or an AV Famicom?


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 4:48 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20853
Location: NE Indiana, USA (NTSC)
Three possibilities:
  • If your game contains both English and Japanese text, you might want to have the menu default to Japanese when running on a console sold in a Japanese-speaking country or to English when running on a console sold in an English-speaking country.
  • If your game is running on a console without player 2 Select and Start buttons, you might want to display a workaround for the missing buttons without cluttering the display on consoles that do have the buttons.
  • If your game is running on a console with a DA15 port and supports controllers other than the standard controllers, you might want to optimize controller detection for the protocol that those controllers use, which often differs from the one that NES expansion controllers use. The Famicom versions of the Power Pad and Arkanoid controller, for example, behave differently.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 4:59 am 
Offline
User avatar

Joined: Thu Sep 15, 2016 6:29 am
Posts: 825
Location: Denmark (PAL)
#1 was my initial thought, but this is completely a marketing issue, and the normal approach would be to make a Famicom cart that defaults to Japanese, and an NES one that defaults to English. If you're running an NES cart on a Famicom using an adapter there's probably a good chance you aren't even in Japan.

#2 and #3 are relatively valid reasons and a good example of why I asked, as both facilitate more direct solutions that makes sense in the context. For example, if you are able to detect inputs inputs on the DA15 port, I would dynamically change this implied setting that prioritizes reading inputs from it at the moment I detect that it has been used.

There's probably a good all-encompassing term for this approach that I don't know of, but it's similar to when designing responsive websites that work on multiple devices, instead of detecting if the client is using a mobile phone, and then adjust the layout to look better on one, you want to to approach the more direct issue, and just react to the resolution that the client is running at, and adjust to that.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 5:27 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20853
Location: NE Indiana, USA (NTSC)
I think it was called object detection vs. user agent sniffing.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 6:33 am 
Offline
User avatar

Joined: Mon Dec 29, 2014 1:46 pm
Posts: 823
Location: New York, NY
I've often wondered if it's possible to programmatically tell the difference the NES-001 (the Front Loader) and the NES-101 (the Top Loader) or at least if a heuristic exists that might statistically be able to guess the environment correctly most of the time.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 7:50 am 
Offline
User avatar

Joined: Thu May 31, 2018 11:12 am
Posts: 153
Location: Bristol, England
Most of the time? Just assume it's a normal NES, which is most common! Simple!


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 8:07 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20853
Location: NE Indiana, USA (NTSC)
NES-001 vs. NES-101 is easy: NES-001 drives $4016 D2 low, while NES-101 leaves $4016 D2 as open bus. The same io_db-precharging method can detect it.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 8:20 am 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 7007
Location: Canada
What is your hypothetical distribution situation where you are mass distributing cartridges all over the world but don't know where/whom you are sending them to?

If you're making and selling carts, there's not much reason they couldn't specify which language they'd like for the ROM at this point too. Nobody's making mask ROMs, there's no compelling reason why you would have to use the same ROM across different form factor of carts.

If you're releasing a ROM... just release two and let the user pick?

Or a simple menu on power-on is pretty inoffensive. (Infogrames did this with a 5-language release of Asterix, for example.) It's just 2 extra button presses. You could even skip it on reset with a RAM signature, if you needed a quicker reset.


With all those options... I really don't even understand why you'd want to do this by detecting the console type. Have already mentioned clones, which you'd need detection stats for each clone you want to account for. If played in an emulator, NES and Famicom emulators typically don't even have a setting to distinguish NES from Famicom, and most probably wouldn't properly emulate the stuff for this detection routine anyway. Nowadays clones are very common, but also it's common for people to have Famicom in English speaking countries and vice versa. Similarly lots of people have an NTSC NES in Europe. We're long past the days where this was uncommon.

Why do you want to go to all this trouble to make a decision about language for someone else, whom you know nothing about other than maybe what specific brand of console they used? It's intentionally picking one of the least reliable options you could for this.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 8:30 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20853
Location: NE Indiana, USA (NTSC)
On a Famicom, you probably don't want to display "Press player 2 Start to join in" or "Connect two Zappers for more fun!" because the console isn't wired to support them.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 8:43 am 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 7007
Location: Canada
tepples wrote:
On a Famicom, you probably don't want to display "Press player 2 Start to join in" or "Connect two Zappers for more fun!" because the console isn't wired to support them.

So you're making a game cart that's intended to run in both NES and Famicom release but you've decided to choose the one button that doesn't exist on the Famicom to select 2 player mode? Why would you do that? With all the design options in the world, you choose the one that doesn't work on one of the systems you support instead of one that works on both.

Two zappers is its own bizarre left field thing, but sure I'm bored let's go down this hole: don't hide the existence of this feature from the user. Lots of people have access to other consoles besides the one they're playing on. Maybe they have friends, maybe they own more than one, etc. If you hide this because their current system can't handle it, they'll probably never think to try it elsewhere, and might miss out on this thing that they would have had a lot of fun with, even if only on rare occasions. Even worse, misdetection will hide the feature on systems that would support it. I don't think this is any good at all.

...and I'm not saying there's no utility at all in detecting it. Maybe there's a good case (allpads.nes seems a pretty good case), but I don't think these two are. My main point was that language choice very much isn't a good fit for this. There really are better options.


Top
 Profile  
 
PostPosted: Fri Jul 20, 2018 9:36 am 
Offline
User avatar

Joined: Thu May 31, 2018 11:12 am
Posts: 153
Location: Bristol, England
I was just wondering and it might be useful to someone (me?)


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

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users 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