A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | Useful Links | |||||
2 | Mesen | Debug emulator - most complex (for experts) | ||||
3 | Fceux | Debug emulator - a good starting point | ||||
4 | Decimal to Hex Converter | This will come in handy | ||||
5 | Hex editing with FCEUX: | |||||
6 | To hex edit with FCEUX, open the rom in the emulator and select "debug" from the top menu | |||||
7 | Next, select "Hex Editor" from the dropdown menu | |||||
8 | Finally, select "ROM file" from the View dropdown menu | |||||
9 | ||||||
10 | ||||||
11 | ||||||
12 | ||||||
13 | ||||||
14 | ||||||
15 | ||||||
16 | When you find an address you want to change, you'll need to find the corresponding value next | |||||
17 | Let's say, for example, you want to change the palette of map 1. You'll note that the range of addresses for map palettes is 0x36BE2-0x36CA1 | |||||
18 | The addresses on the left don't have the 6th's digit, however. That digit actually represents the column that you'll look for | |||||
19 | So for 0x36BE2, that would correspond to the highlighted value below (60). From there, type in the new value you want to replace 60 | |||||
20 | ||||||
21 | ||||||
22 | ||||||
23 | ||||||
24 | ||||||
25 | ||||||
26 | ||||||
27 | ||||||
28 | ||||||
29 | ||||||
30 | ||||||
31 | ||||||
32 | For most of these, it will take some trial and error to determine which values correspond with which aspect of the game you want to change | |||||
33 | For instance, the map palettes range from 0x36BE2-0x36CA1, but these constitute each map, as well as the various objects in each map (water, dirt, etc.) | |||||
34 | With a tiny bit of trial and error, it should be easy to edit what you need to edit using the corresponding address ranges | |||||
35 | ||||||
36 | Set a certain amount of lives (not infinite) | |||||
37 | 0x308E1 | Default life count address | ||||
38 | 0x3D2D6 | Life count after game over address | ||||
39 | Notes: | |||||
40 | You need to change both of these addressed in order for the lives to be correct | |||||
41 | For quick reference: 19 in hex = 25 lives. 32 in hex = 50 lives, 5A = 90 lives | |||||
42 | ||||||
43 | Edit the map palettes | |||||
44 | 0x36BE2-0x36CA1 | Range of world map palettes | ||||
45 | 0x1842D-0x18435 | Corresponding map palette | ||||
46 | Notes: | |||||
47 | For '0x1842D-0x18435' -> this constitutes which map uses which palette. Change w3's value to w7 if you want to make it use w7's palette values | |||||
48 | It's very important to note that you NEED to change this to prevent w1 and w3 from using the same palettes | |||||
49 | Tutorial on hex editing map palettes | |||||
50 | ||||||
51 | Edit the warp zone | |||||
52 | 0x1630A-0x16312 (0x9) | Y-Position Per World | ||||
53 | 0x1631C-0x16324 (0x9) | X-Position Per World | ||||
54 | 0x15194-0x151AF (0x1C) | World Number Sprites in Warp Zone | ||||
55 | Notes: | |||||
56 | Tutorial on editing the warp zone | |||||
57 | ||||||
58 | Edit the map music | |||||
59 | 0x143CA-143D1 | Map music (main) | ||||
60 | 0x3C424-3C42C | Map music (start of game) | ||||
61 | Notes: | |||||
62 | Both addresses should be edited for each map in order to play the correct music | |||||
63 | Tutorial on editing the map music |