Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,434,795
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-19-24 06:13 AM
Guest: Register | Login

0 users currently in ROM Hacking | 3 guests | 2 bots

Main - ROM Hacking - Rom expanding New thread | New reply


born2party
Posted on 04-16-09 09:32 AM Link | Quote | ID: 105237


Level: 15

Posts: 28/35
EXP: 15849
Next: 535

Since: 04-04-08

Last post: 5246 days
Last view: 4845 days
I don't get it! I used Windhex32 to expand the rom so i could put in longer text on the translated version of Glory Heracles 2 nes and still got bad results of garbled or text from other parts of the game. I even tried dragon warrior nes and pratically the same results. I also went as far as adding the games line breaks and such to keep from over running on one line. "No luck!".

I'm well familiar with working with dragon warrior. Like a lot of other rom hackers,I've text changed, palette changed ,sprite changed and rearranged the games tiles. But never could figure out to expand one to add more text or w/e to it.

Any help would be highly appreciated


KP9000
Posted on 04-16-09 09:40 AM Link | Quote | ID: 105238


Boomboom

Level: 90

Posts: 789/1975
EXP: 6949364
Next: 239245

Since: 02-19-07

Last post: 3573 days
Last view: 3197 days


Well, I'm not sure how exactly it's done, but there's some ASM involved. You have to set up the game to accept the extra data it uses or else it'll totally ignore or point to somewhere else completely. You've got banks, ASM, and other stuff to worry about.

Again, not sure how it's done, but I bet someone's going to post here who might know the way to go about doing it...

____________________

smkdan
Posted on 04-16-09 10:24 AM Link | Quote | ID: 105240


Ninji
Level: 36

Posts: 211/238
EXP: 288481
Next: 19629

Since: 05-26-07

Last post: 4055 days
Last view: 4004 days
if you want to expand a NES ROM you have to be familiar with the mapper it uses and either modify the code/data that accesses banks to point to the new bank if that's what you need or patch the original code so that the game can actually switch to the new bank and make use of whatever data. if you don't know assembly then you won't get very far unless the data is laid out in an extremely friendly format, it's not as easy as expanding a SNES or genesis rom for example.

Jigglysaint
Posted on 04-17-09 09:55 PM Link | Quote | ID: 105398


Red Paragoomba
Level: 20

Posts: 42/62
EXP: 38517
Next: 3922

Since: 04-04-07

Last post: 4610 days
Last view: 2347 days
I found out recently that it's very easy to exapand a Gameboy rom. As for NES, I don't know. I do know that the main data bank is typically the last, but there are many games that have CHR ROM which is after the main program.

Kawa
Posted on 04-17-09 10:03 PM Link | Quote | ID: 105399


CHIKKN NI A BAAZZKIT!!!
80's Cheerilee is best pony
Level: 138

Posts: 1764/5344
EXP: 30927121
Next: 735860

Since: 02-20-07
From: The Netherlands

Last post: 4491 days
Last view: 2626 days
Posted by smkdan
it's not as easy as expanding a SNES or genesis rom for example.
Or GBA, up to 32 MiB. Not sure about larger than that though...

Still, smkdan's thing about mappers is correct.

*** Correct me if I'm wrong here ***

Simple games like Super Mario Bros 1 and the very very first NES games have only two chips: one PRG-ROM and one CHR-ROM. These contain all the program code and non-character data 512 tiles worth of character data respectively. These are saved as a single .NES file, with the header specifying how many of each. The NES itself can only read one of each.

Adding a memory mapper allows you to (among other effects specific to said mapper) switch in a different chip at will, usually with a certain divisor. For example, you could switch in up to four different program banks at a given time, or split the tileset into several pieces. This is how basic animated tilesets are done, actually. The better the mapper, usually, the bigger the divisor.

One thing they all share though is that the game must actually set certain registers to cause these bank switches. Different mappers have different registers and values.

____________________
Wife make lunch - Shampoo
Opera - give it a spin
Spare some of your free time?
<GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered
Kawa rocks — byuu

never-obsolete
Posted on 04-17-09 10:14 PM (rev. 3 of 04-17-09 10:17 PM) Link | Quote | ID: 105402


Rat
Level: 24

Posts: 46/96
EXP: 74453
Next: 3672

Since: 02-22-07
From: Phoenix, AZ

Last post: 2589 days
Last view: 2589 days
A trick I used in messing with Castlevania 2 was to have two banks of text. The first bank was the same as the original text and the second was all my new text. The new text had all its pointers have an address that was:

$0000 < addr < $8000

when the string routine read the pointer it checked if the msb was >= $80. If so, it went about its business as normal. If the msb < $80, it would be ORed with $80, the new bank swapped in, then it goes about its business.

The same effect could have been achieved by using the string id#, ...if greater the "x" swap banks, else not.

Also, did you update the header?

born2party
Posted on 04-18-09 04:45 AM Link | Quote | ID: 105424


Level: 15

Posts: 29/35
EXP: 15849
Next: 535

Since: 04-04-08

Last post: 5246 days
Last view: 4845 days
I googled and found some asm tutorials and even read the one here. I think i'm just gonna stick to the basics.

But thanks a lot for your responses!

Main - ROM Hacking - Rom expanding New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.021 seconds. (339KB of memory used)
MySQL - queries: 52, rows: 79/79, time: 0.016 seconds.