It is currently Fri Oct 20, 2017 8:25 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 26 posts ]  Go to page Previous  1, 2
Author Message
PostPosted: Wed Oct 19, 2016 8:43 pm 
Offline
Formerly 65024U

Joined: Sat Mar 27, 2010 12:57 pm
Posts: 2257
Yeah, they all showed initial boot state of the mapper like WRAM enabled, banks accessible, etc. Here's the ROM from archive, should be most recent AFAIK:


https://drive.google.com/open?id=0B1laU ... WxfMDg1MVk


It should give you the info you want. Turn power off for a little while, turn it on, and if it boots in random banks, it'll change. Like I said, IIRC MMC1B2 iss the only one I remember always booting in the last bank. MMC1 and MMC1A all boot randomly, if I remember correctly. If you want the source, I'll put it on Github.


Last edited by 3gengames on Fri Oct 21, 2016 11:10 am, edited 1 time in total.

Top
 Profile  
 
PostPosted: Thu Oct 20, 2016 2:05 am 
Offline

Joined: Tue Oct 06, 2015 10:16 am
Posts: 558
Thanks, will report back. Looks very useful, why not post it to a permanent location and link from the wiki?


Top
 Profile  
 
PostPosted: Thu Oct 20, 2016 8:46 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5728
Location: Canada
calima wrote:
Why not post it to a permanent location

This forum is a pretty good place to upload it.


Attachments:
MMC1Test.nes [256.02 KiB]
Downloaded 31 times
Top
 Profile  
 
PostPosted: Fri Oct 21, 2016 6:54 am 
Offline

Joined: Tue Oct 06, 2015 10:16 am
Posts: 558
It was a Retrostage board, and it consistently booted in 0f / the last bank.

Now I'm completely out of ideas. Why would a MMC1 ROM work in emulators but not in hw, if the init code is correctly reached?


Top
 Profile  
 
PostPosted: Fri Oct 21, 2016 9:30 am 
Offline
User avatar

Joined: Mon Jan 03, 2005 10:36 am
Posts: 2962
Location: Tampere, Finland
Have you made sure to initialize all mapper registers?

Is it possible that their MMC1 implementation is somehow incompatible? (There are some minor details that one might get wrong, like the ignoring of double-writes and the fact that only the address of the last write determines the target register. Whether this would be an issue depends on how your program uses MMC1, though.)

_________________
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: kkfos.aspekt.fi


Top
 Profile  
 
PostPosted: Fri Oct 21, 2016 11:12 am 
Offline
Formerly 65024U

Joined: Sat Mar 27, 2010 12:57 pm
Posts: 2257
Make sure the pointers for NMI and such in the last bank 0F point to the upper region and not the lower one? Maybe it's made to assume two boot banks in order and it is booting into the lower bank instead of the upper, which still fails. My test program there always boots to the upper bank and all the code is there, too.


Top
 Profile  
 
PostPosted: Fri Oct 21, 2016 11:38 am 
Offline

Joined: Tue Oct 06, 2015 10:16 am
Posts: 558
Yes, the init code is in the upper bank, starting at 0xFEDA.

This is the MMC1 part:
Code:
        ; MMC1 init
        lda     #$80
        sta     $8000
        lda     #$00

        sta     $e000
        sta     $e000
        sta     $e000
        sta     $e000
        sta     $e000

        sta     $8000
        sta     $8000
        sta     $8000
        sta     $8000
        sta     $8000


NMI shouldn't matter, since interrupts are disabled when in there.

edit: I wonder if Retrostage is a member here?

@3gengames
So the test ROM couldn't detect booting to an odd bank?


Top
 Profile  
 
PostPosted: Fri Oct 21, 2016 11:45 am 
Offline
User avatar

Joined: Fri Nov 19, 2004 7:35 pm
Posts: 3943
One last dumb idea:
NES consoles are finicky in general about cartridges. Clean it and blow on it?

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


Top
 Profile  
 
PostPosted: Fri Oct 21, 2016 12:00 pm 
Offline
Formerly 65024U

Joined: Sat Mar 27, 2010 12:57 pm
Posts: 2257
It will detect booting in an odd bank because the odd bank will appear in the last bank and be booted from. That's what the bank booted in will tell you, what bank appeared in the upper region at first.


Top
 Profile  
 
PostPosted: Fri Oct 21, 2016 2:39 pm 
Online

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19113
Location: NE Indiana, USA (NTSC)
Try burning an appropriately sized Holy Diver Batman ROM to the cart.

Also put this in the last 15 bytes of all banks (starting at base + $3FF1):
Code:
entry_fff1:
  sei
  lda #$FF
  sta entry_fff1+2
  jmp reset_handler
  .assert reset_handler >= $C000, error, "reset handler must be in the fixed bank"
  .addr nmi_handler, entry_fff1, irq_handler


"Why write $FF over $FF? I thought MMC1 didn't have bus conflicts."
It doesn't. I designed this code to work not only on MMC1 but also on AOROM, BNROM, and the mapper 180 variant of UNROM.


Top
 Profile  
 
PostPosted: Mon Oct 24, 2016 8:24 am 
Offline

Joined: Tue Oct 06, 2015 10:16 am
Posts: 558
Retrostage wrote:
My mapper is based off of the MMC1B, which during power-on will default to a 16Kb banking and PRG-RAM enabled state. $C000-$FFFF is fixed on power-up.


Mystery continues as time allows.


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

All times are UTC - 7 hours


Who is online

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