Using AOROM to make a 2 in 1 multicart of NROM games

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems.

Moderator: Moderators

User avatar
Sivak
Posts: 316
Joined: Tue Jul 17, 2007 9:04 am
Location: Somewhere
Contact:

Post by Sivak »

Hey again. I finally took some time to look into this and I'm using the following method:

Basically, the code I copy to RAM are these instructions:

Code: Select all

.bank 3
.org $F000
LDA selectedBank
TAX
STA bankID, X
JMP $FFE0          ;$FFE0 is a spot of empty space in both games where I simply put the instruction JMP RESET, which is where the standard game reset routine is.
I just store the above code all at the beginning of $0600 and then JSR $0600. That works, but I just wanted to ask if that looked bug-free or if I might be missing something.

My question was regarding:

Code: Select all

.bank 3
.org $FFE0
;LDX #$00       ; you don't get a bus conflict if you
;STX RESET + 1  ; overwrite the immediate operand
JMP RESET      ;I guess I could also have done JMP $8000
When I have the LDX #0, and STX RESET + 1, that causes freezing and the games never load. But with those two lines commented out, the game loads fine. I also have both games' reset vectors point to a new routine (called RESET2) that simply forces bank 0 to be loaded and that works fine too.

So my question is: Are those two lines I've got commented out vital or is there no concern?
User avatar
Hamtaro126
Posts: 786
Joined: Thu Jan 19, 2006 5:08 pm

Post by Hamtaro126 »

I wish someone made a 1-screen mirroring version of SMB1, That would really help

I attempted the above, But the code for the SMB1 renderer wasn't doing any of it right.
User avatar
Dwedit
Posts: 4470
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Post by Dwedit »

Or just abandon AOROM and use BxROM, GNROM or MMC1 instead.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
BMF54123
Posts: 410
Joined: Mon Aug 28, 2006 2:52 am
Contact:

Post by BMF54123 »

Hamtaro126 wrote:I attempted the above, But the code for the SMB1 renderer wasn't doing any of it right.
Probably because it was never designed to work with one-screen mirroring.
Celius
Posts: 2159
Joined: Sun Jun 05, 2005 2:04 pm
Location: Minneapolis, Minnesota, United States
Contact:

Post by Celius »

Yeah, I'm pretty sure that SMB1 updates WAY off screen, so any attempt to do that with one screen mirroring will result in it updating right on screen.
tepples
Posts: 22345
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

Celius wrote:Yeah, I'm pretty sure that SMB1 updates WAY off screen
So do a lot of vertically mirrored games, such as Contra.

I'm with Dwedit: just use BNROM. If you have a bunch of A*ROM boards, you can rewire them to BNROM by cutting the trace to CIRAM A10 and running a wire from CIRAM A10 to PPU A10 or PPU A11.
Post Reply