I've been recently toying around with making an Atari 2600 dev cart with bankswitching with the help from Bregalad and the folks from AtariAge (who tried to explain me what resistors and capacitor are for), and that has got me thinking about circuits and logic a lot. For some reason that made me want to try some modifications on NES carts.
I like UxROM a lot because of it's simplicity. Recently Memblers talked about adding more PRG ROM banks to it, something we could do by adding another '161 chip. We'd need another '32 as well, because of the extra address lines. That' simple enough.
Something I always wanted that I've never seen in discrete logic mappers is mirroring control. I don't know why it's not common, because I gave some thought to it and seems simple enough. Considering M to be the mirroring layout bit (0 = vertical, 1 = horizontal), also to be stored on the '161, the following formula appears to work well: CIRAM A10 = (CHR A10 AND NOT M) OR (CHR A11 AND M).
The OR could be done with the new '32, but another chip would be needed for the ANDs and the NOT. Since we'll have these new chips, we don't need to settle for just vertical/horizontal, we can even add 1-screen/2-screen selection!
If instead of sending the result from the previous operation directly to CIRAM A10, we call it R and the new mirroring type selection T (0 = 2-screen, 1 = 1-screen), the following formula can be used: CIRAM A10 = (R AND NOT T) OR (M AND T). This will make M go straight to CIRAM A10. The same OR, AND and NOT ICs from before can be used.
The final combinations for mirroring would be the following:
00 2-screen, vertical mirroring;
01 2-screen, horizontal mirroring;
10 1-screen, $2000;
11 1-screen, $2400;
Another thing I'd like to do is get rid of bus conflicts. From the pinouts I've seen, it appears to be a very simple procedure that can be done with a single NOR IC. Maybe there are even some free gates in this IC to handle the 2 NOTs necessary for the mirroring.
Does this look like an interesting idea? I don't know if the implementation is as simple as it seems, because my knowledge of electronics is very limited, so you tell me. I'd really enjoy these few improvements over UxROM.
In fact, I've been thinking of all sorts of mapper features that could be made with discrete logic, but I'm not very good with hardware. Do you guys have any ideas on how to implement more complex things such as CHR bankswitching in small chunks, scanline/cycle counters, extra RAM, 4-screen and things like that? I'd be very interested in creating carts with combinations of those features, as long as it doesn't end as a monstrosity of ICs (at least not one that could harm the NES in any way).
I like UxROM a lot because of it's simplicity. Recently Memblers talked about adding more PRG ROM banks to it, something we could do by adding another '161 chip. We'd need another '32 as well, because of the extra address lines. That' simple enough.
Something I always wanted that I've never seen in discrete logic mappers is mirroring control. I don't know why it's not common, because I gave some thought to it and seems simple enough. Considering M to be the mirroring layout bit (0 = vertical, 1 = horizontal), also to be stored on the '161, the following formula appears to work well: CIRAM A10 = (CHR A10 AND NOT M) OR (CHR A11 AND M).
The OR could be done with the new '32, but another chip would be needed for the ANDs and the NOT. Since we'll have these new chips, we don't need to settle for just vertical/horizontal, we can even add 1-screen/2-screen selection!
If instead of sending the result from the previous operation directly to CIRAM A10, we call it R and the new mirroring type selection T (0 = 2-screen, 1 = 1-screen), the following formula can be used: CIRAM A10 = (R AND NOT T) OR (M AND T). This will make M go straight to CIRAM A10. The same OR, AND and NOT ICs from before can be used.
The final combinations for mirroring would be the following:
00 2-screen, vertical mirroring;
01 2-screen, horizontal mirroring;
10 1-screen, $2000;
11 1-screen, $2400;
Another thing I'd like to do is get rid of bus conflicts. From the pinouts I've seen, it appears to be a very simple procedure that can be done with a single NOR IC. Maybe there are even some free gates in this IC to handle the 2 NOTs necessary for the mirroring.
Does this look like an interesting idea? I don't know if the implementation is as simple as it seems, because my knowledge of electronics is very limited, so you tell me. I'd really enjoy these few improvements over UxROM.
In fact, I've been thinking of all sorts of mapper features that could be made with discrete logic, but I'm not very good with hardware. Do you guys have any ideas on how to implement more complex things such as CHR bankswitching in small chunks, scanline/cycle counters, extra RAM, 4-screen and things like that? I'd be very interested in creating carts with combinations of those features, as long as it doesn't end as a monstrosity of ICs (at least not one that could harm the NES in any way).