so ive spent days trolling this site and its links, and while i think i have *somewhat* of a grasp of the basic stuff...i think im still pretty far. I have proposed a project that is basically taking an old game, and hacking the assets already on the cart to produce something my own. I have a few questions that really need answering before I get into this:
#1 is it even possible to access the code on a cart, so that i can play with it? or do i need to take the asm found elsewhere and start with that? furthermore, could i take this code into nbasic and work with it?
#2 assuming i can eventually write a working game in nbasic, and use the compiler to generate an asm file, how can i get the game onto an actual cartridge to play in an NES? the asm files generated from the nbasic compilers do not look the same as those Ive found on the web, from cart games, etc. what's the deal?
thanks so much for your help
ok, in rereading that post i realized i forgot a couple things:
#3 came someone give a *concise* rundown of what all this business is about eprom vs eeprom vs flash, etc. ive seen alot about that willem programmer, and im about ready to spring for one, but people keep talking about all these peculiarities, like stuff about mappers, etc, the size of games etc. and im worried the willem programmer wont end up being the right thing
#4 ive also noticed there are lots of posts about the sizes of different games, for ex, smb being smaller than many others, is there any way to tell before hand which games will be more...manageable? what about megaman? zelda (legend of)?
thanks again, y'all are tha bomb!
hey i realize this stuff is probably totally boring, and stupid for many of you, but if someone could help me out I would really appreciate it.
thanks
If all you want to do is hack the assets on another cart, there are other forums for that. Google "rom hacking".
g-fighter wrote:
#1 is it even possible to access the code on a cart, so that i can play with it? or do i need to take the asm found elsewhere and start with that? furthermore, could i take this code into nbasic and work with it?
There is some NES disassemblers, and also FCEUltra and NESticle can trace code.
Quote:
#4 ive also noticed there are lots of posts about the sizes of different games, for ex, smb being smaller than many others, is there any way to tell before hand which games will be more...manageable? what about megaman? zelda (legend of)?
Read firebug's mapper doccument. It's obsolete for some mappers, but it gives a fair overview of what mapper and stuff is, and why games have different sizes.
I didn't get the others point exactly.
If you want to make your own game, you'll probably get more help here. It's just that hacking another game is pretty different in it's method and result. Compared to writing one from scratch it's harder a lot of ways, and easier in others.
1: nbasic won't help, you'll need to use assembly.
2/3: use Flash because it's cheap and easy to erase. The NES by itself can reprogram and erase it, that's what I do on my Squeedo devcart (which should be available soon, only bare PCBs are available for now). For other carts you'll normally need a seperate programmer and have to remove/swap chips etc., but the Willem programmer will work OK for that.
can anyone tell me how to get code off of a cart (or ROM)?? Can I do this without having to deal with something like a CopyNES?
Hmm, are you saying how to get code off a cart itself? well, I'm not really sure how to do that, but if it's a commercial game that's on the cart, you could find the ROM and dissassemble that. Dissassembling sucks, though, I hate it. I made a ROM, and dissassembled it, it looked nothing like the original source. Sorry, if that's not of any assistance...
i wanna hack nes roms too. i dont know where to start thought... i also have read over this site the past few days, and kinda just wanna remake old games. also does anybody know if theres any possibility of a visual programming environment for nes that exists or will exist... anyways, and if you can help me out, then it would be greatly appreciated. thanks
Try some of the programs on here:
http://www.zophar.net/utilities/neslevel.html
I had some fun with SMB Utility.
MY GOOOD !
I didn't even think that this kind of editors does exist !
It is fun, and it gives good ideas for any game programmers, so how thing are organized in an actual game.
Go download the FFhackster, I think it's by Disch, it's AWESOME! this inspires me to design my IDE for our very cool project, but it will work differently, like I explained in the thread we hijacked in the NES music section.
Celius wrote:
Go download the FFhackster, I think it's by Disch, it's AWESOME!.
I'm glad people still get use out of it ^^
Although I'm almost embarrassed of it nowadays. It's amazing how much I've learned since then.
Are you kidding? I just was so proud of my frickin' DOS program that shows you an exchange rate! I'm not good at C, But I'm getting better. The FFhackster is really cool, because it allows you to pretty much remake the game, except it will have the same engine and all. I am planning to make an IDE for my game that's not too complex. It's like yours, but instead of editing an already assembled ROM, it edits the asm file itself. Well, I'm actually comtemplating on how I'm going to do this. I am going to come up with my own map format, and I think I'm going to incbin that in my code. But the problem is, from an earlier topic, I learned that you can't really read bytes from an incbined file. Now that I think about it, I don't know if that's true too much. I would need to check for collision and what not, so I don't really know what I'm going to use. Bregalad, I have excellent news. I just started writing the save engine, and I was able to store the values of the timer (which I also got working properly, and the engine for the timer is something I will always be proud of, because I think it's excellent)into SRAM. However, it does not load properly in Nintendulator. It loads in FCEUXD ultra and NESSIE and whatnot, but not Nintendulator. That is dumb. So yeah, when you press save, it won't take you to the save screen yet, it will just store the values of the timer into $6000. And if you open it after you saved, the timer will be where you left off! cool huh? I think so. I'm just a little confused about how I'm doing collision. I have to read my three million year long thread about collision detection again. Any way, moving on, don't mean to highjack this thread...
Highhacking a thread isn't too bad, scince everyone agree... I think that a subject of discussion can eventually imply another.
Anyway, your IDE thing is rather good, if if would look like Dish's programm for FF1... It rocks by the way.
So after writing a specifing engine, have a programm to generate data instead of doing it manually is much more confortable... but sometimes you'll probably spend more time to write the IDE than you would by just making it manually. But for a such big project, it would really be worth it.
Reading data for a .inbin'ed file is of couse possible, except in NESHla where I had trouble to do it.
Do it like this :
Code:
MapData
.incbin "maps\map2.bin"
ldx #blahblah
lda MapData,X
;Or
ldy #<blahblahblah
lda #<MapData
sta PointerL
lda #>MapData
clc
adc #>blahblahblah
sta PointerH
lda [Pointer],Y
...etc
Just to give you some idea. But of couse, if you're gonna to have, let's say, 256 maps on your game... You'll probably have to include 256 different files, plus one to do all pointers and headers needed.
If you organize this with a decent system of repertories, it could be fair and pratical.
About the collision detection, you can simply do it as you like. The formula HRow*Hsize+VRow is basically the only thing you need to know. Organize your metatiles row by row, as in a book, and do any collision engine, that will read it with that formula.