It is currently Sat Nov 18, 2017 10:47 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 8 posts ] 
Author Message
PostPosted: Mon Aug 22, 2016 11:22 am 
Offline
User avatar

Joined: Mon Apr 04, 2011 11:49 am
Posts: 1919
Location: WhereverIparkIt, USA
The discrete logic board design I created all those years ago which apparently belongs in the repro section of the forum even though it was created specifically for publishing homebrews.. is being made use of for a couple upcoming releases. Roth is working on a new game which is to be the first to make use of the four-screen mirroring feature I made available with the boards. I'm here to help formally define the mapper to be properly emulated as it's now being made use of for game development and would benefit Roth's development efforts to have emu support.

The mapper follows 95% of the current UNROM-512 mapper 30 definition. The identical parts include PRG-ROM flash save operation, mapper register definition, and 32KB banked CHR-RAM. The only variation is the creation of 4 screen mirroring support by making use of what were two unused OR gates of the '32 chip which was already on the circuit board for PRG-ROM banking. I just recently made updates to the wiki to fully define how the board's CHR-RAM is mapped and used so that definition could be used to add emulator support to FCEUX. I made the assumption that the logical decision for mapper assignment would be a variant of mapper 30.

I had imagined that a sub mapper wouldn't even need to be used as the header's four-screen mirroring flag could simply be used to denote this variant. Upon editing the wiki I noticed that the 4 screen flag is apparently being used to denote when the 1screen option is in use. To me this seems directly contradictory to the ideology of why NES 2.0 was created but oh well...

I wanted to post here to ask for the community to decide how to disambiguate mirroring options which I'm making available for what I had guessed would fit within the original mapper definition. Apparently there was discussion on the IRC to give this 4 screen variant it's own mapper number 270. Personally I don't understand the logic of assigning a new mapper number when NES 2.0 has been defined as it is, and any emu which desires to support this mapper must also support NES 2.0 headers. But I'd rather not get to deep into the politics that are mapper definitions as I don't feel I have a dog in the fight. I'm just looking to start the conversation so the powers that be can make a decision and standardize this 'new' hardware configuration for emulator purposes.

My apologies on preemptively editing the wiki, that seemed like the most logical place to document the design. I can remove my edit and place it somewhere else if need be, or if anyone feels the need to undo my changes themselves I won't be offended.

_________________
If you're gonna play the Game Boy, you gotta learn to play it right. -Kenny Rogers


Last edited by infiniteneslives on Tue Aug 30, 2016 11:13 pm, edited 1 time in total.

Top
 Profile  
 
PostPosted: Mon Aug 22, 2016 11:46 am 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5822
Location: Canada
I'd probably suggest just making a new mapper for it, rather than trying to combine it with the existing mapper 30. There are literally thousands of new mapper numbers to choose from with iNES 2, and I think you already require iNES 2 because of the CHR-RAM size anyway.

IMO:
  • Submappers are for disambiguating existing mappers that were allocated before iNES 2. Not applicable here.
  • The four screen bit is legacy iNES 1 stuff, and really shouldn't be used to disambiguate between 2 incompatible mapper implementations like this. I think practically speaking in some cases it's more like metadata, additional info about the game.

Then again, there's a lot of permuations of this board. Flashable or not. Single screen or fixed (and now 4-screen). Maybe submappers are appropriate after all?

As for adding the mapper definitions to the Wiki or FCEUX. I suggest the same process for any proposed mapper:
  • 1. Release a game or other useful ROM that needs the new mapper.
  • 2. Make a test ROM that can be used to verify that it works.
  • 3. Document it and propose the change, and await commentary and/or implementers to take it up.

Some people might be willing to skip step 1 on faith that a game is eventually going to come out for it. The main question this is supposed to answer is: "Why should I implement this mapper?"

As for the Wiki, the documentation is fine on the same page as the other UNROM-512 mapper. (Plenty of articles group more than one iNES mapper on the same page.)


Top
 Profile  
 
PostPosted: Mon Aug 22, 2016 1:33 pm 
Offline
User avatar

Joined: Fri Nov 19, 2004 7:35 pm
Posts: 3950
There's always the old "four screen" iNES 1.0 flag.

_________________
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!


Top
 Profile  
 
PostPosted: Mon Aug 22, 2016 1:42 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5822
Location: Canada
Dwedit wrote:
There's always the old "four screen" iNES 1.0 flag.

That's the same in iNES 1 and 2. The problem isn't that you can't specify 4-screen, it's that there was never a flag for 1-screen; there's 1 bit for horizontal/vertical and 1 bit for 4-screen.

Unfortunately what happened is people took to using the 4-screen flag to mean "4-screen or 1-screen", so it's often set for 1-screen games.

...and in this specific case we are trying to disambiguate between 4-screen and 1-screen. (Doh!)

Also, I forgot to mention that at least 1 game using the Sealie UNROM-512 board uses fixed 2-screen mapping. (Battle Kid 2 uses horizontal mirroring.) BK2 is compatible with extended mapper 2, at least, but we could potentially have games on that board using the mapper 30 CHR banking or flashable ROM.

Not sure if Owlia counts too... I presume this uses INL's variant of the Sealie board, though it also appears to be mapper 2 compatible.


Top
 Profile  
 
PostPosted: Mon Aug 22, 2016 6:04 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5822
Location: Canada
As an alternative, there are actually 4 possible mirroring configurations:
Code:
iNES byte 6

  7......0
  ========
A ----0--0  horizontal mirroring
B ----0--1  vertical mirroring
C ----1--0  4-screen (horizontal but ignored)
D ----1--1  4-screen (vertical but ignored)

It might not be too late to specify that if the header is iNES 2, then case D would specify instead "1-screen". That by itself would be enough to cover all current mirroring variations of the board.

This can't retroactively be applied to iNES 1 (and I have no idea how often the H/V bit is set when the 4-screen bit is also set), but since iNES 2 is still a new thing, it seems like a plausible extension.

With such an extension, the only permutation of the board left flashable vs. non-flashable, though maybe even that would be covered by the iNES 2 battery backed PRG RAM fields. Since there's no place for regular WRAM on this board and the flashable ROM is really a substitute for that, it seems that this data would be sufficient.

Similarly, the CHR banking bit only applies if CHR-RAM is bigger than 8k, so this too is covered by the iNES 2 header.

So... I mean, I guess you could do everything this board does with iNES 2 with that one case added to the nametable mirroring flags? Anyhow, just another way to solve it, potentially. Could use input/comments from others.


Top
 Profile  
 
PostPosted: Mon Aug 22, 2016 11:47 pm 
Offline
User avatar

Joined: Sat Jul 12, 2014 3:04 pm
Posts: 946
4scr&vert = 1scr? Seconded. (This also means we could drop Major League's submapper.)
infiniteneslives wrote:
The discrete logic board design I created all those years ago which apparently belongs in the repro section of the forum even though it was created specifically for publishing homebrews..

That's a link to edit the post, which we can't. You want this. (Also, the topic does say "dev/repro" board…)


Top
 Profile  
 
PostPosted: Tue Aug 23, 2016 11:39 am 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5822
Location: Canada
Myask wrote:
(This also means we could drop Major League's submapper.)

According to the submappers page, it's not just the mirroring that's different, so I don't think we could.


Top
 Profile  
 
PostPosted: Tue Aug 23, 2016 8:36 pm 
Offline
User avatar

Joined: Sat Jul 12, 2014 3:04 pm
Posts: 946
Whoops, right, it ignores all writes to $9000, which also fixes the PRG bankmode. Lemme double-check if my Verilog 020s1 draft has that…didn't, fixed.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC - 7 hours


Who is online

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