It is currently Mon Aug 13, 2018 11:45 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 27 posts ]  Go to page Previous  1, 2
Author Message
PostPosted: Wed Jan 24, 2018 11:07 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20400
Location: NE Indiana, USA (NTSC)
It depends on which games you're trying to collect onto a cartridge, and what mappers they use.

Most multicarts have a mapper specialized to the task of switching among several independent games. Occasionally, a sufficiently flexible mapper designed for one game can be used to switch among a few games that don't themselves need much mapper support, such as GNROM (#66), Color Dreams (#11), BNROM, or MMC1 (#1) for NROM games. A few mappers allow combining smaller games with minimal changes to each individual game, such as BNROM or AOROM where only the bank number table needs to be patched. But if the games expect mapper support, especially if they expect different types of mapper, a multicart mapper has to emulate the game's mapper while doing the job of switching among them. Occasionally, games are patched to use a different mapper in order to make them compatible, such as the Mega Man 1-6 multicarts that change the first two games from UNROM and MMC1 respectively to MMC3.

Emulator users say "mapper" to refer to the whole circuit board (except the ROMs and CIC) because the behavior of the mapper ASIC (MMC, VRC, FME-7, etc.) dominates the description of the board's overall behavior.


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 12:34 pm 
Offline

Joined: Tue Jan 23, 2018 7:33 am
Posts: 11
I see, there is a list somewhere to check which game use which mapper ??

Anyway, my first step would be to create a hello world and run it with fceu ;) then I will try to launch a game with it, and after that I will try to update it into a menu to let choose which game to start between two.

While am I on a emulator, do I have to care about mappers ?


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 12:39 pm 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1693
Location: Gothenburg, Sweden
Quote:
I see, there is a list somewhere to check which game use which mapper ??


yes, http://bootgod.dyndns.org:7777/


Quote:
While am I on a emulator, do I have to care about mappers ?


yes, you need to tell the emulator which mapper/pcb to emulate. this is done with the information you put in the header.
for more information, read these articles:

https://wiki.nesdev.com/w/index.php/INES
https://wiki.nesdev.com/w/index.php/NES_2.0


When burning or writing ROM images to actual ROM chips, the header must be removed first. It is for emulators only.

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 1:29 pm 
Offline

Joined: Tue Jan 23, 2018 7:33 am
Posts: 11
Thanks you very much, I will look at this :)

I wonder what I have to do to "add" a game to my main program that would be the menu ? do I just combine the target rom bin without the header and then make a jump ?


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 1:45 pm 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1693
Location: Gothenburg, Sweden
This depends a bit on which assembler/compiler you're using, but for something like the cc65 suite (a 65xx dev toolchain many prefer) it will be something like this

-in the linker config file you need to create, you define segments. Here you can structure your linked objects so that you control which object goes where in new total multi-ROM.
-let's assume that for each bank, you have one linking object, and each linking object in turn holds the ROM image of a game.
-each game is an already assembled or compiled binary, so this step is done for us (just sometimes you need to hex edit them sometimes, like tepples explained, which is a whole skillset on its own)
-simply use the .incbin directive for each ROM file in its due place which will embed the game ROM binaries into your source as-is at assembly time.

If any of this is unclear, i suggest reading cc65:s online reference and experimenting a bit to find out what's what.

Though eventually, your newly acquired skills and knowledge base just *might* make you lose interest in your original project and make you want to make applications and games of your own. ^^

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 1:52 pm 
Offline

Joined: Tue Jan 23, 2018 7:33 am
Posts: 11
thanks a lot, I will begin with that :)

in theory, if my project work on emulator, Ill just have to get a catdridge with the same chips that being emulated to run my rom ?


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 1:54 pm 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1693
Location: Gothenburg, Sweden
oh and the reason i recommend cc65 is not just because it is popular, but because the .incbin directive (and linker) is extremely powerful compared to other free assemblers. You can split, patch and concatenate binaries however you want.

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 2:00 pm 
Offline

Joined: Tue Jan 23, 2018 7:33 am
Posts: 11
FrankenGraphics wrote:
oh and the reason i recommend cc65 is not just because it is popular, but because the .incbin directive (and linker) is extremely powerful compared to other free assemblers. You can split, patch and concatenate binaries however you want.


Ok :) I read a tutorial yesterday to create a hello world and is not complicated. I wonder if it could be easier with a C compiler ?


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 2:05 pm 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1693
Location: Gothenburg, Sweden
For something like a menu and loader, yeah you don't need to worry about efficiency (and yet some games have been done with C). Whether you prefer 6502 assembly or C is up to you just as long as you mind the consoles' architecture and the layout of your cartridge. cc65 suite can do both (it is so named after the cc65 C compiler, though many are just using the ca65 assembler)

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 2:18 pm 
Offline
User avatar

Joined: Fri May 08, 2015 7:17 pm
Posts: 2192
Location: DIGDUG
I refer to this list a lot, even if it isn't 100% accurate.

http://tuxnes.sourceforge.net/nesmapper.txt


Also, it's not as simple as "jump to the right bank."

Let's say you combined a bunch of NROM games, and a menu. You would still need to modify each of the games "reset code" or you might never make it back to the menu.

Plus getting from zero to a working menu is a huge task with a steep learning curve.

_________________
nesdoug.com -- blog/tutorial on programming for the NES


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 2:48 pm 
Offline

Joined: Tue Jan 23, 2018 7:33 am
Posts: 11
Ok :) well I am used to programming, modern language I admit, but im sure I will eventually do something nice :)

do you have a tool to recommend me to use for graphics ? I would like something that we can set the palette of Nes so I can expect the same image quality with same color when it show on screen. I didn't have the chance to read about graphics for the Nes, I know I have to implement everything, if I want to write hello word on screen, I will have to create sprites with letters. What is the graphic file format to use with the compiler ?


Top
 Profile  
 
PostPosted: Wed Jan 24, 2018 3:11 pm 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1693
Location: Gothenburg, Sweden
One ring to rule them all:
Shiru's NES Screen Tool (aka NESST).
https://shiru.untergrund.net/

The palette definition is a little off but it doesn't matter. Personally i do hardware tests on a PAL unit which looks a bit different too. The data is 1:1 with what the PPU expects, which is all that matters except in rare corner cases. Moreover, your tv/monitor will filter the output sideways anyway.

Quote:
I will have to create sprites with letters.

You're better off using the background layer rather than the sprite layer, since you can't display any more than 8 sprites (each 8 pixels wide) on any single scanline.
Reading up on the graphics thouroughly is something you'll eventually have to do, too.

the PPU has its own format for things which isn't anything like a modern picture format. It is tile compression based (this is generally called "text mode" in computer speak) in a double sense (pixels and colours, separately), indexed colour mode, with a structure specific for the NES. Sprites are a whole other affair on its own, though it shares some few similarities with the bg layer structure.

Lastly.. if you want your thumbnails to look good (i imagine this is part of the point), let alone resemble the games they're depicting, beside practicing pixel art you'll need to scale the technique of layering sprites over and under the bg layer (requires good knowledge of the PPU plus some experience using various tools, which may range from NESST, to a programmers' notepad, use or development of scripts, and other graphics tools, like photoshop or GIMP). Not trying to discourage or anything, it's just so you'll have a good idea of what's ahead of you before you dive down the rabbit hole because all i can promise is it will take time (anything good takes time though). :wink: I don't think we've covered half of it yet. So.. just make sure the time you trade trades something you'll find worthwhile back.

Some recent forum leads on layering techniques can be found here and here.

_________________
http://www.frankengraphics.com - personal NES blog


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

All times are UTC - 7 hours


Who is online

Users browsing this forum: Google [Bot] and 2 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