How to make a rom hack nes how to#
The main problem is how to store local variables and function parameters, which are essentially the same thing. It’s remarkable what developers managed to do with such limited audio hardware.Ĭ's concept of function calls is difficult to map to the capabilities of the 6502. I even had to move the sound effect for when a player moves their cursor to another audio channel because it was too obvious when it overrode another sound effect, let alone part of the music. This was a lot trickier than I thought it would be, and involved making changes to both the music and the sound effects until everything stopped sounding terrible. Sound effects are essentially hacked into the music playback engine, and briefly override the less important parts of the music to make their sounds.
Much like with the graphics, I wrote a tool that imported the MIDI files, converted them into a simple compressed format that lived in code, and then wrote my own playback engine that hardcoded the logic for his instruments. He ended up creating a simplified version of the game’s music using his usual tools, exported it as a MIDI file, and then made some instruments in FamiTracker to go with it. There are tools especially made for creating music for NES games, but it seemed cruel to make Matthew learn and use one for a single project. The main uses of this ended up being the players' EXA cursors (so that we could use more grays and have them “hold” a block drawn behind them in the background) and most of the text (so that we could perfectly align it and use brighter colors). We ended up making both the red and purple blocks use the same pink highlight color, which allowed us to store some grays in the other palettes to draw the UI frame (palettes 2 and 3) and lock blocks (palette 1).įor small graphics that needed different colors or did not align neatly to the background grid we were able to use sprites, so long as we didn’t run over the per-scanline (8) or per-screen (64) limits. The hardest part was figuring out how to have 5 different color blocks with only 4 palettes. The blocks in HACK*MATCH are large, so it was easy to make them 16x16 and give each block its own color palette.
Making a block-based action puzzle like HACK*MATCH on the NES is almost certainly going to require drawing all the blocks as the background (rather than having them be sprites).
How to make a rom hack nes plus#
Shortly after we ported SHENZHEN SOLITAIRE to MS-DOS, I started working on a version of HACK*MATCH for the Sega Saturn.