Posted: Sat Jul 17, 2010 12:11 pm
That or Bootgod's database, or even the board table that Tennessee CV used to maintain.
NES Development Forums
https://forums.nesdev.org/
How about changing the game Mapper? If I can convert MMC3 to UNROM, is there any change to use a UNROM board?tokumaru wrote: If the game used a simpler discrete logic mapper (such as CNROM or UNROM), it would be possible to build it from standard logic chips you can buy anywhere, but the connector would still be an issue.
That would require reprogramming most of the game.FARID wrote:I want change Mapper 4 (MMC3/TLROM) to Mapper 2 (UNROM)
Well, it doesn't really work like that. Mapper conversion is something you consider when the mappers involved are similar and share common features, or when the mapper you are converting to is a superset (it has all the features and more) of the mapper you are converting from.FARID wrote:I want change Mapper 4 (MMC3/TLROM) to Mapper 2 (UNROM)
I am ready to reprogram this game offset by offset. just tell me where I have to start.tokumaru wrote:Well, it doesn't really work like that. Mapper conversion is something you consider when the mappers involved are similar and share common features, or when the mapper you are converting to is a superset (it has all the features and more) of the mapper you are converting from.FARID wrote:I want change Mapper 4 (MMC3/TLROM) to Mapper 2 (UNROM)
UNROM however lacks most of the features an MMC3 has, and if the game uses the MMC3 it most likely does make use of such features. There's just no way you can make this conversion, unless you completely reprogram the game, like tepples said. And even then there might be some things that couldn't be done without the MMC3.
I don't know what you mean by "offset by offset", but maybe you didn't understand what I meant by "reprogram the whole game" either.FARID wrote:I am ready to reprogram this game offset by offset. just tell me where I have to start.
On the other hand, compare the conversion of Contra (魂斗羅) to UNROM for North American release. But then Konami had it easy, with full source code and all.tokumaru wrote:To make this game run on an UNROM cart you'd have to make a new game similar to the original one as much as possible. And you're of course not going to do that.
Game Boy to NES (or vice versa in the case of Super Mario Bros. Deluxe) is a bit harder, as you actually would have to rewrite the whole thing, not just disassemble, document, make some architectural refactoring, and reassemble. For example, Game Boy has an 8080-family CPU while NES has a 6502. Game Boy prefers updates in hblank, while NES prefers them in vblank.It's pretty much the same as converting a Gameboy game to the NES, it can't be done, you have to make a new game.
It really depends on what mapper features are used. If an MMC3 game doesn't use the scanline counter and doesn't require lots of CHR-ROM bankswitching, it might convert somewhat easily to UNROM. That's hardly the case though, most MMC3 games I'm aware of make full use of the hardware.tepples wrote:On the other hand, compare the conversion of Contra (魂斗羅) to UNROM for North American release. But then Konami had it easy, with full source code and all.
As far as I had learned, assembly is a very powerful language. It is possible to do everything with it. But unfortunately it is very complex and changing the source code is very time consuming. For example adding one byte is enough to mess up the whole game. Because of this matter hackers usually use DTE instead of expanding ROM to insert more text in the game.tokumaru wrote: I don't know what you mean by "offset by offset", but maybe you didn't understand what I meant by "reprogram the whole game" either.
It doesn't seem impossible, it IS impossible and nobody who knows anything about NES programming will tell you differently.FARID wrote:I want to give it a try even if it seems impossible.
Except for Rare and Codemasters, which routinely pushed discrete mappers to their limits. But I wouldn't recommend trying a complex mapper hack like this until you have a finished game under your belt.tokumaru wrote:If everything was possible with any mapper, like you seem to believe, there would be only one mapper, don't you agree? Why would they invent a new ones?
Yeah, but that's part of the point... If you design a game for the discrete mappers from the beginning you can do a lot, which is why a game similar to this soccer game can probably be coded from the ground up for UNROM, but a game engineered for the MMC3 is a completely different story.tepples wrote:Except for Rare and Codemasters, which routinely pushed discrete mappers to their limits.
A notable difference is that UNROM provides no IRQ, while MMC3 does. So for example with MMC3 the game might tell the IRQ to trigger at line 200 (out of the 240 on screen, 262 in total). The IRQ code would run automatically at that time. Without an IRQ, the CPU will have to wait for precisely that time. This affects the timing a lot for the obvious reason (CPU usage), but also because you'll use the NMI interrupt to base the timing, and the game needs to use that also (for vblank). Using the sprite #0 hit helps out here, but it also involves having the CPU wait and you only get 1 screen location, where MMC3 can be re-used and trigger on any scanline. The DPCM IRQ trick demonstrated recently might be helpful.FARID wrote: So my question is what are the steps for this project?
I know fully learning and understanding assembly language is an important step. But I want to know what the other steps are.
Please introduce me some resources.
I want to give it a try even if it seems impossible.