To Byuu, About BSNES (BankSwitching related)
Moderator: Moderators
Forum rules
- For making cartridges of your Super NES games, see Reproduction.
- Hamtaro126
- Posts: 786
- Joined: Thu Jan 19, 2006 5:08 pm
To Byuu, About BSNES (BankSwitching related)
I would like to see NES-Style BankSwitching for use (like 20-in-1 for SNES for example), Only in configurable sets of 32k, 16k, 8k, and 4k.
Also I want to map range set to $7E0000-$7FFFFF, where we must select between RAM and ROM, If you can Implent this in BSNES, This will make things easier.
Please, And Thank you for a good emulator!
Also I want to map range set to $7E0000-$7FFFFF, where we must select between RAM and ROM, If you can Implent this in BSNES, This will make things easier.
Please, And Thank you for a good emulator!
AKA SmilyMZX/AtariHacker.
> I would like to see NES-Style BankSwitching for use (like 20-in-1 for SNES for example), Only in configurable sets of 32k, 16k, 8k, and 4k.
Best you have now is S-DD1. You can map up to 256MB into 1MB blocks. Note that real hardware is almost certainly limited to 8MB, but I can't confirm from the software level like I can that SPC7110 can only support 8MB.
If you want more, you'll have to make it yourself. It's actually really easy, but I don't want to keep making fake chips without majorly compelling reasons.
> Also I want to map range set to $7E0000-$7FFFFF, where we must select between RAM and ROM
Impossible. Cartridges already respond in that range, but the SNES CPU ignores them and uses WRAM automatically. You cannot override it.
Best you have now is S-DD1. You can map up to 256MB into 1MB blocks. Note that real hardware is almost certainly limited to 8MB, but I can't confirm from the software level like I can that SPC7110 can only support 8MB.
If you want more, you'll have to make it yourself. It's actually really easy, but I don't want to keep making fake chips without majorly compelling reasons.
> Also I want to map range set to $7E0000-$7FFFFF, where we must select between RAM and ROM
Impossible. Cartridges already respond in that range, but the SNES CPU ignores them and uses WRAM automatically. You cannot override it.
-
psycopathicteen
- Posts: 3001
- Joined: Wed May 19, 2010 6:12 pm
- Hamtaro126
- Posts: 786
- Joined: Thu Jan 19, 2006 5:08 pm
I haven't traced official multicarts such as Super Mario All-Stars + Super Mario World, but can't each game just get its own set of program and data banks, with the NMI and IRQ vectors pointed somewhere in page $000100? Or is there something about Super NES programming that requires games to have code specifically in $008000-$00FFFF?
If you literally can't make something without 4K bank mapping, you might want to rethink what you're trying to do. 1MB bank mapping should work just fine for nearly all uses. I mean there were about 2,500 unique SNES games made with no mapping at all, after all :P
SNES gives you up to 12MB of ROM/RAM address space, not limited like NES to 32K.
SNES gives you up to 12MB of ROM/RAM address space, not limited like NES to 32K.
Just to confirm: this is correct. The upper 8 bits of the full 24-bit effective address when using DP is $00. In English: you can set D to $0000 to $FFFF, and thus the address will always be $00/0000 to $00/FFFF. See pages 46 and 94 onward for validation.tepples wrote:True, at least based on what I remember from the Apple IIGS that used the 65816. TAD (or TCD) transfers a 16-bit value in A to the direct page base pointer D. The upper bits of D are always treated as $00. But that's still up to 32 direct pages minus what you're using for stack.
And if you say "well that sucks, what a crappy processor", I will repeatedly smash your balls with a hammer. :P Spoiled kids today...
I will admit that DP's DBR forced to $00 made full 16MB range open bus testing ... fun.
Can't do < 512-byte granularity this way. (Yes, I know that code does it at 1024-byte granularity.)
Code: Select all
//MDR: unmapped region
//x = addr
//y = addr + $0300
lda $0300,x; cmp #$03; bne {+}
lda $0000,y; cmp #$00; bne {+}
lda #$01; jsl usart1_write; rts; +- Hamtaro126
- Posts: 786
- Joined: Thu Jan 19, 2006 5:08 pm
I did not say that the processor is crap, but CA65 is not really great to set up for SNES, WLA is shit but everyone still uses it, and no offence, BASS is harder than XKAS as it is not in the original syntax.
I still can use CA65, just can be hard for SNES code!
About the Bank Problem: Some games tend to not work when converting source to NES to SNES.
Let's say I have disassembled Hebereke all the way (Not true for now) and I need to port it to use SNES code, Only One Problem, It depends on FME7 or MMC3 as the mapper, Otherwise it will not work!
I still can use CA65, just can be hard for SNES code!
About the Bank Problem: Some games tend to not work when converting source to NES to SNES.
Let's say I have disassembled Hebereke all the way (Not true for now) and I need to port it to use SNES code, Only One Problem, It depends on FME7 or MMC3 as the mapper, Otherwise it will not work!
AKA SmilyMZX/AtariHacker.
-
psycopathicteen
- Posts: 3001
- Joined: Wed May 19, 2010 6:12 pm