How to start modding?

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,373
Country
United Kingdom
Homebrew and game modding are two fairly separate fields. The skills of each may cross over, especially as you go for older and older systems, but they are different.


Homebrew on a vaguely modern PC is just code writing. Learn to code ( http://programming-motherfucker.com/ https://www.youtube.com/view_play_list?p=6B940F08B9773B9F ), learn some things about games ( https://docs.google.com/document/d/1iNSQIyNpVGHeak6isbP6AHdHD50gs8MNXF1GCf08efg/pub?embedded=true http://hciweb.usask.ca/uploads/332-.../mitpress.mit.edu/books/characteristics-games ), and I assume you have played enough games in your time to know general things (if not I quite like these guys for this sort of thing https://www.youtube.com/playlist?list=PLD03FB084B11A0454 )... and you are good to go. You can probably tailor your learning experiences towards things if it is just games you want to do -- hardcore database knowledge not being of amazing use in most games, though where it is (usually online multiplayer RPGs/strategy) then it is vital.

Homebrew will vary between systems. Older systems were all programmed in their respective assembly languages, or something like Basic for the home minicomputers. You might get something like ZZT of SCUMM in some cases but those are interpreters so approach those as such.
To do anything "real" on those you will have to play to that (see game modding below as they will probably have most of the resources you want here).
For the GBA and PS1 on up you will be able to use C and maybe even C++, though even those will benefit from some assembly knowledge. For the DS on up there are even interpreted languages that will do good things (the DS has a fairly extensive lua community). https://devkitpro.org/ does many things, other consoles you will have to look at each. Minor exception for stuff like the xbox where the official toolchains/SDKs were leaked and worked to compile code -- much homebrew there was made for them, and while open source/legal ones were eventually made the official stuff can still be nicer for some.
You might find a proof of concept C compiler for the SNES but it is proof of concept rather than anything you will want to do real work with.

Game modding.

There is usually a split between PC game modding and modding everything else.

PC game modding
Many PC devs will release level editors, script editors and such for their games, and in the case of certain games they may be able to messed with at their very heart (see something like Civilisation Python https://strategywiki.org/wiki/Civilization_IV/Python_Tutorial ). This can allow very extensive modification to happen and will usually be the focus of such things. Occasionally this happens as the games age as well and devs release code or people remake them ( https://osgameclones.com/ ).

Other devs won't release anything and will see people have to make their own, or even hack the things in the first place.

If tools are released it usually means things get to a very high level, quite quickly



While I know the above from general computing/AI design knowledge I don't know that I have ever seen people really play at that level in console ROM hacking (more on that in a bit), though some of the rarer pokemon hacks (trying to filter out the "I changed the starter pokemon" hacks from the ones that might do something useful is hard at times) start down that path with their challenge runs. This is probably the only area of this hacking or homebrew stuff that you will not have to fairly extensive knowledge of things more commonly seen in coders or electrical engineering types.

Anyway check if the game you want to edit has a community, otherwise
https://www.moddb.com/
It is a bit old these days and there are others but it will get you started, or at least find where you want to go for it if you root around nfos and search for the names of things.

Old school PC hacking means learning old school PC approaches, assembly and such. Seems to be enjoying something of a resurgence of late but I am going to leave you to the joys of having to set jumpers for IRQ lines on your own time. Before I leave that though then a favourite article
http://macgateway.com/featured-articles/sound-card-history/

Also because I am not sure where else to put it
http://bogost.com/games/a_television_simulator/

Everything else
Everything else usually breaks down again between consoles/handhelds, old style minicomputer (think Amiga), arcade, and android/ios/windows phone. With the possible exception of the phone/tablet stuff it tends to be known as ROM hacking, occasionally ISO hacking as not all systems use ROMs per se.

Arcade stuff means MAME and MESS source code provides most of your documentation. https://github.com/mamedev/mame/tree/master/src/devices , for some of the rarer consoles it also provides some good info.

Consoles/handhelds are also broken down one more time into the popular and not so popular -- NES, SNES, Megadrive, PS1, GB/GBC, GBA, DS and possibly 3ds all having extensive tools, documentation and people out there in the world with serious knowledge, N64, PSP, Saturn, Master System, PS2, Dreamcast and such a bit less but you will still find a lot if you look. Newer devices sometimes but they are usually a bit different as nobody has (or few have capable machines for) easy emulation, much less easy debugging emulation, available so it limits some of the techniques the previous stuff saw. As a lot of the newer consoles also saw PC releases of the same games and often were essentially PCs there is some in from that approach ( http://wiki.xentax.com/index.php/Game_File_Format_Central being a good link, other things like https://wikivisually.com/wiki/ADX_(file_format) might as well be here too) You will probably find more people capable with the Wii and Wii U than you will the gamecube (even GBAtemp somewhat ignored the gamecube when it was active), though you can get that done as well.

For the older popular consoles the main English speaking hub for such things is http://www.romhacking.net/

For the GBA and DS I will pimp my own docs here
https://gbatemp.net/threads/gbatemp-rom-hacking-documentation-project-new-2016-edition-out.73394/

Everything else (ataris, C64, vic20, amstrad, bbc micro...) as well as less popular stuff like the Jaguar, SG-1000, TG16/PCE, Intellivision, Magnavox, Philips CDi, MSX... will probably see you have to piece together your own documentation from old hardware guides and emulator source code. Minor exception for the Amiga where there are plenty of people knowledgeable about the device and have tools able to parse the ADF format common there. I don't see much Amiga ROM hacking per se but you do have that leg up.

Addons for those all vary -- FDS (the famicom disk system, Japanese NES addon) has a fair few people and as the only actually successful addon to really ever happen, 32x and segaCD fewer but I would not be surprised to find someone, the N64 is already fairly limited so the N64DD is not going to be easy to find people that know about it. Stuff like the prototype PS1-SNES thing even less so.

Exception to a lot of the above. There are certain franchises for which there are either a lot of hackers or a handful of dedicated hackers. The forums, wikis and such for each of those will be where you get a lot of good info for those games specifically. Though I will say in a few cases (usually the bigger ones rather than games known by virtue of a few dedicated people) there are some odd approaches used and favoured, and they can be a bit insular and both miss out on some good developments and not share tools they modded back to the general hacking community.
The obvious start is pokemon which often has games disassembled and completely documented, and extensive tools made to alter it (even by those with limited technical skills). Many sites exist for this but https://www.pokecommunity.com/forumdisplay.php?&f=289 is probably a good start.
Other popular franchises as far as English language hacking include
Fire Emblem ( http://www.feshrine.net/ and https://serenesforest.net/forums/index.php?/topic/52076-fire-emblem-hacking-essentials/ and many others), Advance Wars ( http://forums.warsworldnews.com/ ), Mario Kart (all forms though the SNES is a bit lacking here, http://wiki.tockdom.com/wiki/Main_Page ), certain other kart racers (Lego and Crash Bandicoot most notably, though a lot of work there is to port the levels into Mario Kart), Smash Brothers has a bit but they have their own culture a lot of the time, Chrono Trigger once had a lot but Square Enix legal issues and drama have knocked that somewhat, Golden Sun, Fire Pro Wrestling is one of the dedicated fanbase things, Final Fantasy (mainline and tactics rather than the other spinoffs), Sonic platformer, Inazuma Eleven to an extent, Mario Platformer (bit of a split between 2d and 3d camps but that is mainly tools and separate forums), a few play with older/2d bomberman (though I have seen some tackle the 3d N64 efforts), megaman platformers and RPGs have their fans (again a bit of a split between the game styles, even between the battle network and star force things but eh), Phoenix Wright has a bit though the PC case making things took the shine off that somewhat,

The Japanese don't do as much ROM hacking, save for Mario Stuff, but they often have some interesting tools. The Chinese are prolific (back on the DS I saw Japanese games get translated into Chinese by hackers before the English release hit, and we were down to weeks at this point rather than months) and have a history going to back to what were then known as bootleg arcade machines. Brazil has a fairly intense hacking scene as well, not sure what the main site is these days though. Other Asian/Oriental languages often have their own things but that is mostly translation (for obvious reasons). Arabic is rising up in the world. Surprisingly I have not seen much out of India.

I should also note cheat making in this. Any ROM hacker worth their salt will be able to make cheats (if you know how a system works and can control it then you can make cheats for it) but in my experience they are unlikely to spend their days making them. As such cheat making is kept somewhat apart from game modding and homebrew, though will be known to all in those. https://doc.kodewerx.org/ is a good start there, though if in the future the domain dies (cheat making types seem to excel in drama) do a search for enhacklopedia.

I am less familiar with the day to day Android and IOS stuff. You can debug on your device, emulate them fairly well, have tools to pull the executables apart and generally see what goes.


Anyway general approach is first find out if the system (or game) has a file system. As a general rule if it did not come on a floppy disc, CD, DVD or PC and is the GBA or older then probably does not. This has advantages and disadvantages -- advantage is tracing is usually a lot less fiddly but at the same time you don't have files you can eliminate and names/extensions/sizes you can look at. Homebrew might be an exception (certainly is for the GBA - http://pineight.com/gba/#gbfs ).
If it did come with a file system then you will probably want to find a tool to parse it. Such things are usually kept fairly close to emulators, emulator discussion boards and ROM hacking forums for any given device. Older ones will do it straight up but newer ones might need keys you find separately, or even in some cases the original system to decode the file. If you are going to spend any time playing with the PS1 then good luck with that one -- there were no standards per se ( https://scenerules.org/ ) and every software house making CD ripping software would do different things (never officially supporting it but... supporting it never the less) so you have a half a hundred formats to play with (Nero's NRG, standard ISO, bin+cue, clonecd, cdrwin and dozens more) so you will probably want to get a paid for tool like ultraiso or magic iso, and then have fun dealing with those you share it to that either get an old school scene rip or make their own. Oh and many an old tool for the PS1 era might be in a lovely winace archive so have fun there. By similar token the Wii had a bunch of formats and some lesser sources for such things might not have stuck with the standard iso format -- https://wit.wiimm.de/ and https://gbatemp.net/threads/new-wii-unscrubber-swiit.511181/ should be able to sort things there though.

Also of note. Most arcade systems had maybe 30 games released in their lifetime, frequently fewer than 10. This means the mame documentation often takes the game level approach to things and will detail where in the ROM the graphics, sound, levels... are kept for its purposes. For most consoles this is not viable as you will easily be in the hundreds, if not thousands.

Once you have that sorted you either get to debug things or find things other ways. Most older systems will keep graphics in formats close to what the hardware will ultimately use. This means so called tile editors/tile viewers are useful (if you just want the graphics then most emulators will have tile viewers so go with that, even modern PC often have 3d grabbers as it goes to the graphics card) -- here you set either the system format (many systems are different enough that you can have a dropdown to select them) you want or the tile format you want (something like tileggd being a good example of this) and scroll through the files until you find something.
A system might have compression that is known and can be searched for. Same for music. I already mentioned general known file formats.
Text has methods that can be used to find things. Probably the most powerful for European languages (it can be done for Japanese and such but it is harder) is something called relative search (as C follows B which follows A most devs will make their text encoding that http://www.asciitable.com/ and that feature one can abuse to find text regardless of encoding (if it is a relative encoding then the word CAB is going to be a value, value -2, value -1 regardless of whether A is encoded as 08h or 80h).
Corruption is also fun. What does this file do? No idea so corrupt it and play the game. Whatever is now broken is most likely what that file does.

Debugging is debugging. You take your emulator, disassembler or whatever. Find the code the processor runs and figure out what it is doing from that. It is hard thing, usually the final thing most new hackers learn (not always, and there are lighter techniques that can be learned more easily -- tracing being a good one https://www.romhacking.net/documents/361/ , but usually is the last one). Depending upon the system you might have to first do this to get through any blocks the original devs put up to try to prevent people wanting to do all this (or maybe make cheats for their game, still stops modders though).

Anyway enough waffle from me for now. I could probably talk at length about any one aspect of that and already feel I should have trimmed some stuff, and probably put some other links in there for some things (especially the franchises with their own dedicated communities) but I will leave it for now.
 

Taleweaver

Storywriter
Member
Joined
Dec 23, 2009
Messages
8,690
Trophies
2
Age
43
Location
Belgium
XP
8,094
Country
Belgium
*looks at @FAST6191 's response :blink:*

Wow. That's the longest reply I've ever seen someone give to a straight-up question. Well...not counting that one time I asked a philosopher at a party 'why are you here?' and got back a three day reply*. :P But either way: congrats, mate!

*note: may not have really happened (credit @terry Pratchett)
Always wanted to homebrew or mod games, but how do i do?
Erm...Fast already gave a pretty lengthy explanation. I'll just say "you might want to explain yourself a bit more".

For one: I can't tell if you want to FIND mods for a given game, or that you want to CREATE some yourself. 'homebrew' is, as the name suggests, 'something made from home'. In regards to modifications (mods), they refer to alterations of games that are made by enthusiasts of the game. So of course, Fast replies with a lengthy introduction on how to create mods from home.

So...if you want to find mods to specific games, let us know. Of course contributors to this thread will google as well, but things might be complicated, depending on the game.

If it's about a guide to creating mods yourself...then I'd start with something simple on a very basic open source game. Even the simplest games (and I'm talking like tic-tac-toe games, here) can seem complex if you're not used to coding. Because of course you'll need to learn the language in which the game was written. Start with very simple changes (like...changing the background. Or the playing music file), and see how far you can push things without breaking the game (like...can you increase the speed the pac-man ghosts travel around? Can you make it so the scores of the bonus items increase with each bonus item you've eaten earlier?).

From there on...I dunno. I don't know enough of this to say whether rom hacking (meaning: altering a game without the source code to guide you) or using a commercial game that is relatively easy to mod. For example: the earlier UT games came with an editor that allowed for relatively easy writing of mod's and "mutators", which are basically the sort of mini-modifications that change only a small fragment of the gameplay. These could be used without breaking the game in any way (at worst, your mutator could crash the game. But then you just had to select not to use this mutator before starting a game). I know that in that specific case, there was a whole mountain of information (and even video's) on how to make these. But I can't really name recent examples.
 

akaishi

Active Member
Newcomer
Joined
Dec 17, 2018
Messages
26
Trophies
0
Age
27
Location
Portugal
XP
252
Country
Brazil
Answering specifically for how to mod a game... sometimes you'll need to do a rom hacking if the game that you want to mod doesn't have an official mod system.
It could be hard and will required much time, because each console and each game in a console have a different behaviour, a different way to do something, then need a specific work to do a rom hacking for this game. When you are doing a rom hacking, you need to try to understand how "someone" did it, why... and with very poor informations. Many times the only informations that you have is a very confuse assembly.
Also, exists many rom hacking. Maybe you want to change de graphic, or change the music, or create a new level. And for each "type" of rom hacking will need a different work, a different study.

I recommend you begin to learn rom hacking in an old system, like a GBA, because it will be easer than in a new console. The community had a more time to document and to study GBA than Switch, for example. And the architecture for an old console is very simpler than an actual console, then is easier to understand.

[I'm writing a tutorial step by step about how to do a reverse engineering in a GBA game. Maybe it will be useful for you.](https://gbatemp.net/threads/tutorial-reverse-engineering-step-by-step-in-klonoa-game.532112/) It is really a fun project to do in a free time.

A nice example about a tool that the community did with a rom hacking is the Advance Map. A map editor for Pokemon's GBA game.
If the game that you want to mod is/was very popular, maybe already have nice tools (but to make your own tools is very fun =P)
 
Last edited by akaishi,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    NinStar @ NinStar: I always thought that capcom shuffled the games in these collection, but apparently they are all...