Seiken Densetsu 3 / Secret of Mana 2
RAM Map
Address | Description |
---|---|
7E1C10 |
Current Music |
7E6018 |
Last Level |
7E6028 |
Current Level |
7E8700-7E897F |
Solidity Set L1 |
7E8980-7E8BFF |
Solidity Set L2 |
7FCCF2 |
Monster HP Current |
7FE32C |
Music For Loaded Game |
7FEDF2 |
HP Current |
7FEE02 |
HP Max |
7FFA13 |
Monster Index |
7FFEEC |
Current Level |
ROM Map
Address | Description |
---|---|
C05297-C052C6 |
Decompression Assembly (World Map Graphics, instructions are stored to RAM and executed there) |
C052C7-C0537B |
Decompression Routine (World Map Graphics) |
C0EA03-C0FA42 |
Dialogue Script-Related |
C0EA70 |
Read Event Script Pointer |
C0EA87 |
Read Event Script Bank |
C239CA-C23CB8 |
Decompression Routine (Graphic Sets) |
C2418D-C2437A |
Decompression Routine (Tilesets) |
C243DA-C2441C |
Decompression Routine (Solidity Sets) |
C24527-C24876 |
Decompression Routine (Tilemaps) |
C2AAF0-C2AC03 |
Decompression Routine (World Map Tilemap) |
C403A0 |
Read Action Script Opcode |
C42F5D-C4C4CD |
Dialogue Script-Related Routines |
C49561 |
Load "Closed Garden" Track for Load Game Menu |
C51E90-C51F2A |
BRR Sample Pointers (52 samples, 3 bytes each) |
C51F2B-C52064 |
BRR Sample Relative Volumes, Pitches |
C52065-C52148 |
SPC Data Pointers (70 SPCs, 3 bytes each) |
C53FC9-C735D9 |
SPC Data |
C73903-C9A6DE |
BRR Sample Data |
CA0000-CA7FFF |
World Map Sub-Map Graphics (Uncompressed) |
CAFA00-CAFFFF |
Cursor Graphics (Uncompressed) |
CB040A-CB0B09 |
Palette Set Pointers (7 pointers each = 14 bytes each) (bank $CD ) |
CB0B0A-CB49DB |
Tilemap Offsets, Dynamic Data (from 01,00 of location data @ CB73DC ) |
CB49DC-CB73DB |
Exit Fields |
CB73DC-CB9F5F |
Location Data |
CB9F60-CBFFBF |
Exit Field Index Packs |
CBD9D2-CBE1C3 |
Tilemaps (Compressed) |
CBFFC0-CBFFFF |
Priority Sets |
CC0000-CC05FF |
Monster Pack Collection |
CC0600-CC09FF |
Monster Packs |
CC0A00-CC0CFF |
Monster Packs |
CC0D00-CC0FFF |
NPC Packs (256 items, 3 bytes each) |
CC1000-CC1899 |
Graphics Packs |
CC189A-CC6161 |
Solidity Sets (Compressed) |
CC6162-CCE20D |
NPC Maps (Dynamic Lengths) |
CC67F4-CC6820 |
NPC Map for Location 0018 (Rabite Forest from Castle City Jad) |
CC6811 |
Level of first 3 Monsters |
CCE20E-CCF600 |
Tilemaps (Compressed) |
CCFC00-CCFC79 |
Animation String Pointers |
CCFC7A-CCFFFF |
Animation Strings |
CD0000-CD00D7 |
Tileset L1 Pointers (72 items, 3 bytes each) |
CD00D8-CD01AF |
Tileset L2 Pointers (72 items, 3 bytes each) |
CD01B0-CD023F |
Solidity Set L1 Pointers (bank $CC )(72 items, 2 bytes each) |
CD0240-CD02CF |
Solidity Set L2 Pointers (bank $CC )(72 items, 2 bytes each) |
CD02D0-CD060B |
Graphics Pointers (276 items, 3 bytes each) |
CD0750-CD0A3C |
Tileset Packs |
CD0A3D-CD3550 |
Sprite Palettes |
CD1EB7 |
Kevin's Palette |
CD3551-CDA314 |
Palette Sets |
CDBFDF-CDC9A7 |
Tilemaps (Compressed) |
CE0000-CFD284 |
Tilesets (Compressed) |
CFD720-CFE5AB |
Tilemaps (Compressed) |
D10000-D111FF |
Monster Stats |
D12A40-D12B83 |
Sprite Mold Pointers |
D133D0-D1393F |
Monster Base HPs |
D134F2 |
Werewolf Base HP |
D1F5E0-...... |
Monster XPs |
D1F61C |
Dark Battum XP |
D22D92-D2F817 |
Dialogue Script-Related |
D30A13-D3F301 |
Dialogue Script-Related |
D50000-D72FFF |
Mold Packs and Mold Data for Sprites |
D52581-D525.. |
Mold Pack for Kevin (2 bytes each) |
D7C400-D7D5FF |
Sprite Graphics, Magic, etc. (Uncompressed) |
D7DC00-D7E1FF |
Graphics, Kevin, Wolf Head (Uncompressed) |
D7F600-D7FA.. |
Numeral Graphics, etc. (Uncompressed) |
D80000-E3DFFF |
Sprite Graphics (Uncompressed) |
E60000-E7CBFF |
Magic, Attack Effect Graphics (Uncompressed) |
E80000-E801FF |
Pointers to World Map Tilemap Chunks |
E80200-E803FF |
Pointers to Holy Land Tilemap Chunks |
E80400-E88947 |
World Map Tilemap Chunks (Compressed) |
E88948-E8A598 |
Holy Land Tilemap Chunks (Compressed) |
E8B000-E8BD83 |
Tilemaps (Compressed) |
E8E800-E8EFFF |
World Map Mini-Map (Uncompressed) |
E8F000-E8FFFF |
Battle Numerals, Symbols (2BPP, Uncompressed) |
E90000-E90001 |
Pointer to Holy Land Animated GFX |
E90002-E90003 |
Pointer to World Map Animated GFX |
E90004-E9291E |
World Map GFX (Compressed) |
E9291F-E92E9B |
Holy Land Animated GFX (Compressed) |
E92E9C-...... |
World Map Animated GFX (Compressed) |
E96080-...... |
World Map Palettes |
EA0000-EFFFFF |
Tilemaps (Compressed) |
F00000-F6FFFF |
Location Graphics (Compressed) |
F70000-F77FFF |
Animated Graphics (Uncompressed) |
F7E8C4-F7FC8F |
Item Effect Graphics (Uncompressed) |
F7FC90-F7FFFF |
Tilemaps (Compressed) |
F80000-F811FF |
Event Scripts |
F81200-F869FF |
Dialogue Script-Related |
F90200-F9B1F0 |
Dialogue Script-Related |
F94000-F95FFF |
Title Screen BG Clouds (Uncompressed) |
F96D36 |
Event Scripts: Karl attacks Kevin |
FAB1F1-FAFFFF |
Dialogue Script-Related |
FB0000-FBECA1 |
Event Scripts |
FC0000-FCAE88 |
Tilemaps (Compressed) |
FCF500-FD41FF |
Uncompressed Graphics |
FE2E00-FE4DFF |
Event Script Pointers |
FE2F00-FE8F7B |
Letter Characters, Symbols (Uncompressed) |
FE4E00-FE55FF |
Event Script Bank Indexes (+ $F8 ) |
FEA6F5-...... |
Title Screen FG Graphics (Compressed) |
FEFA60-...... |
Title Screen BG Graphics (Compressed) |
Data Structures
Tilemap Offsets
3 bytes per offset, a string is terminated by FF
2 string are read: 1st for tilemap L1, 2nd for tilemap L2
1st pointer of a string points to the compressed tilemap, the rest are unknown
Exit Fields
(4 bytes per field
00 dest X coord
01 dest Y coord
d6-d7 facing direction
03,02 destination
Location Data
By location index @ 7E6028, 1114 items, 10 bytes each
01,00 tilemap pack (+ $CB0000 = dynamic data, terminated by FF)
02 map pack (* 7 + $CD0750)
03 palette set
04
05
07,06 exit field index pack (+ $CB0000)
09,08 NPC map pointer (+ $CC0000)
Exit Field Index Packs
2 bytes per pointer, packs are dynamic size
some pointers: & 0x7FF * 2 + $CB49DC = offset of exit field
...yet others (& 0x7FF) look like actual location indexes?
Priority Sets
4 bytes each
00 d0-d4 Enable Mosaic
01 d0-d4 Enable Mainscreen
02 d0-d4 Enable Subscreen
03 d0-d4 Color Math
d6 Half Intensity
d7 Minus Subscreen
Monster Pack Collection
256 items, 6 bytes each
* 4 + $CC0600 = monster pack
Monster Packs
CC0600-CC09FF
: 256 items, 4 bytes each
* 3 + $CC0A00/CC0D00 = monster/NPC pack
CC0A00-CC0CFF
: 256 items, 3 bytes each
Graphics Packs
Dynamic, each string terminated by FFFF
* 3 + $CD02D0 = offset of pointer
Solidity Sets
Compressed, 2 bytes per tile
00 d0 SE Quadrant
d1 SW Quadrant
d2 NE Quadrant
d3 NW Quadrant
d4 N Edge Blocked
d5 Can Slide Against
d6 W Edge Blocked
01 d7 Exit Trigger Enabled
Animation Strings
00 d6,7 if clear, 4-byte length
d6 unknown, 3-byte length if set
d7 unknown, 1-byte length if set
if d6/d7 clear: & 0x0F * 0x80 = offset of VRAM to draw to
01,02 unknown if 00,d6/d7 set
03,02 if d6/d7 clear: + $F70000 = offset of animation graphics
Tileset Packs
107 items, 7 bytes each
00 Tileset L1 (* 2 + $CD01B0 = offset of pointer)
01 Tileset L2 (* 2 + $CD01B0 = offset of pointer)
02 Scrolling L2
d0-d2 Speed
d3 Enable Scrolling
03 & 0x0F = Priority Set
04 Animation Index
* 2 + CCFC00 = pointer's offset
06,05 Graphics Pack (bank $CC)
Palette Sets
180 bytes each, 6 palettes per set, 30 bytes per palette
Monster Stats
128 items, 36 bytes each
00 sprite
01 palette
04-02 pointer to action script
Sprite Mold Pointers
2 bytes each, 162 items total
* 4 + $D50000 = offset of mold pack
Duran, Kevin, Hawk, Angela, Carlie, Lise (the rest are NPCs)
Monster Base HPs
696 items, 2 bytes each
(level - 1) * 14
Monster XPs
3 bytes each
00 ?
01 ?
02 ?
Data Tables
Monsters
There's a total of 128 monsters.
Index | Set | Name |
---|---|---|
00 |
Monster | Shell Hunter |
01 |
Monster | Myconid |
02 |
Monster | Darth Matango |
03 |
Monster | Goblin |
04 |
Monster | Goblin Lord |
05 |
Monster | Beast Master |
06 |
Monster | Poron |
07 |
Monster | Porobin Hood |
08 |
Monster | Porobin Leader |
09 |
Monster | Duck Soldier |
0A |
Monster | Duck General |
0B |
Monster | Armor Knight |
0C |
Monster | Silver Knight |
0D |
Monster | Sword Master |
0E |
Monster | Dark Lord |
0F |
Monster | Ninja |
10 |
Monster | Ninja Master |
11 |
Monster | Night Blade |
12 |
Monster | Gal Bee |
13 |
Monster | Lady Bee |
14 |
Monster | Queen Bee |
15 |
Monster | Magician |
16 |
Monster | Wizard |
17 |
Monster | High Wizard |
18 |
Monster | Dark Priest |
19 |
Monster | Necro-mancer |
1A |
Monster | Evil Shaman |
1B |
Monster | Slime |
1C |
Monster | Slime Prince |
1D |
Monster | Grell |
1E |
Monster | Grell Mage |
1F |
Monster | Shape-shifter |
20 |
Monster | Shadow-zero |
21 |
Monster | Rabite |
22 |
Monster | Rabilion |
23 |
Monster | King Rabite |
24 |
Monster | Great Rabite |
25 |
Monster | Molebear |
26 |
Monster | Needlion |
27 |
Monster | Pakkun Lizard |
28 |
Monster | Pakkun Dragon |
29 |
Monster | Firedrake |
2A |
Monster | Basilisk |
2B |
Monster | Machine Golem |
2C |
Monster | Guardian |
2D |
Monster | Death Machine |
2E |
Monster | Ogre Box |
2F |
Monster | Kaiser Mimic |
30 |
Monster | Unicorn Head |
31 |
Monster | Gold Unicorn |
32 |
Monster | Evil Sword |
33 |
Monster | Element Sword |
34 |
Monster | Assassin Bug |
35 |
Monster | Ruster Bug |
36 |
Monster | Mega Crawler |
37 |
Monster | Giga Crawler |
38 |
Monster | Cocka-trice |
39 |
Monster | Needle-bird |
3A |
Monster | Cockabird |
3B |
Monster | Werewolf |
3C |
Monster | Black Fang |
3D |
Monster | Silver Wolf |
3E |
Monster | Bloody Wolf |
3F |
Monster | Wolf Devil |
40 |
Monster | Harpy |
41 |
Monster | Siren |
42 |
Monster | Bound Wolf |
43 |
Monster | Kerberos |
44 |
Monster | Bulette |
45 |
Monster | Gold Bulette |
46 |
Monster | Specter |
47 |
Monster | Ghost |
48 |
Monster | Poto |
49 |
Monster | Mama Poto |
4A |
Monster | Papa Poto |
4B |
Monster | Petit Dragon |
4C |
Monster | Frost Dragon |
4D |
Monster | Petit Tiamat |
4E |
Monster | Dragon Zombie |
4F |
Monster | Chibi-Devil |
50 |
Monster | Gremlin |
51 |
Monster | Lesser Demon |
52 |
Monster | Great Demon |
53 |
Monster | Pakkun Baby |
54 |
Monster | Pakkuri Baby |
55 |
Monster | Zombie |
56 |
Monster | Ghoul |
57 |
Monster | Carmilla |
58 |
Monster | Carmilla Queen |
59 |
Monster | Sahagin |
5A |
Monster | Petit Poseidon |
5B |
Monster | Sea Serpent |
5C |
Monster | Sea Dragon |
5D |
Monster | Battum |
5E |
Monster | Dark Battum |
5F |
Monster | Boulder |
60 |
Monster | Power Boulder |
61 |
Bosses | Machine Golems |
62 |
Bosses | Genova |
63 |
Bosses | Bill and Ben |
64 |
Bosses | Full Metal Hagger |
65 |
Bosses | Jewel Eater |
66 |
Bosses | Tzenker |
67 |
Bosses | Gorva |
68 |
Bosses | Black Rabite |
69 |
Bosses | Lugar |
6A |
Bosses | (unknown) |
6B |
Bosses | Gildervine |
6C |
Bosses | Beast King |
6D |
Bosses | Flamekhan |
6E |
Bosses | Queen of Reason |
6F |
Bosses | Koren |
70 |
Bosses | Deathjester |
71 |
Bosses | Jagan |
72 |
Bosses | Bigeau |
73 |
Bosses | Darkshine Knight |
74 |
Bosses | Heath |
75 |
Bosses | God-Beast Fiegmund |
76 |
Bosses | God-Beast Xan Bie |
77 |
Bosses | God-Beast Land Umber |
78 |
Bosses | God-Beast Dangaard |
79 |
Bosses | God-Beast Lightgazer |
7A |
Bosses | God-Beast Zable-Fahr |
7B |
Bosses | God-Beast Dolan |
7C |
Bosses | God-Beast Mispolm |
7D |
Bosses | Dragon Emperor |
7E |
Bosses | Dark Lich |
7F |
Bosses | Archdemon |
00 |
NPC Set | Ninja Master |
01 |
NPC Set | Night Blade |
02 |
NPC Set | Gal Bee |
03 |
NPC Set | Lady Bee |
04 |
NPC Set | Queen Bee |
05 |
NPC Set | Magician |
06 |
NPC Set | Wizard |
07 |
NPC Set | High Wizard |
08 |
NPC Set | Dark Priest |
09 |
NPC Set | Necromancer |
0A |
NPC Set | Evil Shaman |
0B |
NPC Set | Slime |
0C |
NPC Set | Slime Prince |
0D |
NPC Set | Grell |
0E |
NPC Set | Grell Mage |
0F |
NPC Set | Shape-Shifter |
10 |
NPC Set | Rabite |
11 |
NPC Set | Battum |
12 |
NPC Set | Bound Wolf |
13 |
NPC Set | Battum, Zombie |
14 |
NPC Set | Battum, Molebear |
15 |
NPC Set | Molebear |
16 |
NPC Set | Rabite, Myconid |
17 |
NPC Set | Magician, Machine Golem |
18 |
NPC Set | Assassin Bug, Poron |
19 |
NPC Set | Assassin Bug, Gal Bee |
1A |
NPC Set | Assassin Bug, Gal Bee |
1B |
NPC Set | Rabilion |
1C |
NPC Set | Needle Bird, Chibi-Devil |
1D |
NPC Set | Chibi-Devil, Harpy |
1E |
NPC Set | Harpy, Armor Knight |
1F |
NPC Set | Chibi-Devil, Evil Sword |
00 mem addr (+ $7E2F00)
01 compare value @ mem addr, skip NPC if not within range
d0-3 max value
d4-7 min value
02 NPC pack
03 NPC type
d0-3 if == 15, monster(s)
d7 enable event trigger?
05,04 event script pointer
if not monster(s)...
06 X coord
07 Y coord
08 sprite index
else...
06 level of monsters
07,08 X,Y coord of 1st monster
09,0A X,Y coord of 2nd monster
0B,0C X,Y coord of 3rd monster
2nd and 3rd monsters are optional; terminated by 0xFF
LEVEL 18 (Rabite Forest, from CCJ)
32 03 10
8F 00 0E
01
04 08
8D 0D
49 1F
32 03 10
8F 00 0E
01
88 2C
FF terminate npc string
32
4F d0-3
d4-7
16 NPC set (* 6 + $CC0000 = NPC set)
8F d0-3
d4-7
00 0E
08 level of monsters
04 08 X,Y coord of NPC 0
8D 0D X,Y coord of NPC 1
49 1F X,Y coord of NPC 2
32 4F 16
8F 00 0E
08 level of monsters
88 2C X,Y coord of NPC 3
FF terminate npc string
FF terminate map string
LEVEL 811 (Castle City Jad, Weapon/Armor)
38 mem addr (+ $7E2F00)
00 d0-3 if mem addr >=, skip NPC
d4-7 if mem addr <, skip NPC
if d0-3 < d4-7, branch to $C27AE4
else skip NPC
9B NPC set
A0 NPC type
if & 0x0F == 0x0F, monster (else, non-monster)
d4
d5
d6
d7 enable event trigger
60 81 event pointer
47 07 X,Y coord of NPC 0
13 sprite index (in set)
38
2F
9B NPC set
A0
87 89 event pointer
47 07 X,Y coord of NPC 1
13 sprite index (in set)
20
1F 80
A0 50 41
0B 09
22
FF
$D104A4 Rabite (36 bytes)
00 sprite ($1A = Rabite)
01 palette ($21 = Rabite)
04-02 action script
00 1
01 1
02 1
03 1
04 2
05 1
06 1
07 1
08 1
09 1
0A 1
0B 1
0C 1
0D 2
0E 1
0F 1
10 2
11 2
12 2
13 2
14 3
15 4 jump to address (3,2,1)
16 2
17 4 jump to address (3,2)
18 2
19 2
1A 2
1B 2
1C 2
1D 2
1E 2
1F 2
20-2F 1
30-3F 1
40 2
41 2
42 2
43 2
44 2
45 2
46 2
47 2
48-4F 2 load script from pointer @ beg. of banks $D2-D9 resp.
50-5F 2 branching commands: 1,0 & 0xFFF = branch (signed)
60-6F 2 branching commands: 1,0 & 0xFFF = branch (signed)
70-7F 2
80 2
81 2
82 2
83 2
84-8F 1
90-EF 1
F0 2
F1 2
F2 2
F3 2
F4 2
F5 2
F6 2
F7 2
F8 1
F9 1
FA 1
FB 1
FC 1
FD 1
FE 1
FF 1
$D25799 Rabite action script
04 00
15 DD E1 D2 pointer to address ($D2E1DD)
FD
F8
18 36
15 74 57 D2 pointer to address ($D25774)
E2
42 CF
15 2E 39 D3 pointer to address ($D3392E)
FD
05
0A
04 00
16 05 84
17 02 02 00
C2
57 06
00
C2
57 D8
57 10
05
CC
40 88
0D 02
DC
70 0A
15 6A 56 D2 pointer to address ($D2566A)
CD
40 F6
0D 03
F9
50 00
05
0A
05 d5-7 HP
07 d0-4
08 d0-6
09 attack script
0A d0-6
0B d0-6
0C d0-6
0D d0-6
0E d0-6
0F d0-6
10
11
12
13
14
15
11 Night Blade 13 11 F5 42 D2 A0 00 1E 01 00 01 A8 B9 B4 D4 D4 FA 00 00 10 00 20 00 00 00 21 00 00 00 00 00 00 00 10 03 03
16 Wizard 15 16 0E 46 D2 A0 00 1E A3 32 00 AE 05 BA CB E3 FC 00 00 00 3F 00 00 00 00 21 00 00 00 00 00 00 00 10 03 03
21 Rabite 1A 21 99 57 D2 A0 00 5A D1 E4 89 B0 E2 D5 E3 E3 FD 00 00 00 00 00 40 00 00 21 00 00 00 00 00 00 00 10 03 03
Levels
Number(s) | Name |
---|---|
0011 | Lakeshore Village Astoria |
0016 | Lakeshore Village Astoria |
0017 | Sub-zero Snowfield |
0018 - 0020 | Rabite Forest |
0021 - 0023 | Rabite Forest |
0031 - 0042 | Cave of the Waterfalls |
0043 | (between HCW and CotW) |
0044 - 0051 | Holy City Wendel + houses |
0053 | Castle City Jad |
0054 | Corobokkle Forest |
0055 - 0063 | Castle City Jad houses |
0064 | (between CCJ and RF) |
0066 | (seashore) |
0102 - 0124 | Labyrinth of Ice Walls |
0143 - 0162 | Valley of Flames |
0222 - 0231 | Gemstone Valley Dorian |
0327 | Beast Kingdom, from Moonlight Forest |
0400 - .... | Beast Kingdom Castle |
0451 - 0472 | Molebear Highlands |
0494 - 0503 | Golden Road |
0549 - 0559 | Sub-zero Snowfield |
0560 - 0567 | Desert of Scorching Heat |
0644 - 0649 | Lampflower Forest |
0662 - 0673 | Lampflower Forest |
0677 - 0699 | Moonlight Forest |
0860 - 0883 | Jungle of Illusion |
0958 - 0978 | Forest of Wonder |
1059 - 1098 | Dragon's Hole |
Molds
D5283F
24 & 0x0F = chunk count
d4
d5
d6
d7
32
each byte (or word if lower nibble clear) is a chunk
3E d0 load NW tile
d1 load NE tile
d2 load SW tile
d3 load SE tile
d4
d5
d6,7 mirror,invert
00 40 00 lower nibble clear, ie. same as last chunk
01 d6,7 mirror,invert
2F d6,7 mirror,invert
4A d6,7 mirror,invert
F0 X pos of sprite from screen center (-10 here)
F0 Y pos of sprite from screen center (-10 here)
48 d0-3 N shift of 2nd chunk pair (8px here)
d4-7 W shift of 2nd chunk pair (4px here)
80 01 & 0xFFE0 = offset of graphics, 1st chunk
E0 1E
C0 01 & 0xFFE0 = offset of graphics, 2nd chunk
21 1F
C1 04 & 0xFFE0 = offset of graphics, 3rd chunk
20 1F
C0 04 & 0xFFE0 = offset of graphics, 4th chunk
SRAM Format
Open your saveram file in your hex editor. Seiken Densetsu 3 has three save logs; each one takes up 0x800
bytes. The first 0x70
bytes, from 00 to 6F, are a kind of header -- it's the info that appears on the save / load screen, and has no effect on your actual game.
All addresses in this document will be for log 1; if you want to hack log 2, add 0x800
; if you want to hack log 3, add 0x1000
. For example, maximum MP for character 1, log 1 is at 0x1FF
. Max MP for character 1, log 2 is at 0x9FF
. Speaking of maximum MP, let's hack that right now, so you can get the hang of hacking Remember, values are always in reverse byte order.
SRAM Checksum
A checksum is the sum of all bytes in a file (or a certain part of it) that's used to check for file integrity. When you save your game, Seiken Densetsu 3 adds up all the bytes in your save log and writes that 2-byte sum at the end of your save log. When you come back to the game, it adds up all the bytes in the save log again and compares that to the stored checksum. If those two sums don't match, Seiken Densetsu 3 assumes that the save log is corrupt (maybe the battery failed or something) or doesn't exist.
This is a problem when you want to hack your saved game, because if you change the data without changing the checksum appropriately, Seiken Densetsu 3 will think the log is corrupt, and you'll get the dreaded "No Save File." When you're making only small changes, like you did in the Quick Start section, it's easy to fix the checksum, but if you make a lot of big changes, it'll be a lot easier to just recalculate the checksum. Hex Workshop has an easy way to do this. If you're using something else, it's up to you to figure out.
To calculate the checksum we will simply add all the bytes, excluding the last 2, in a log together, a simple Checksum 16. Select the proper block of data. The first 0x70
bytes of each save log are a kind of header and aren't included in the checksum. Start at 0x70
and select all the way down through 0x7FD
. This is a total of 0x78E
bytes for log 1. If this is a working save log you're looking at, the checksum you've calculated will be the same as the 2-byte value at 0x7FE
of your saveram.
After you finish making all your changes to your save file, you need to fix the checksum before you can play it. Follow the above procedure. Take the value you've calculated and write it over the old checksum at 0x7FE
.
General Stats
I don't know exactly where each character's data block begins and ends. For the first character, the first value I know is current HP at 0x172-0x173
, and the last value I know is maximum MP at 0x1FF-0x200
. I do know that each character's data takes up 0xFF
bytes.
Important: All these following addresses will be for the first character's data. If you want to hack the second character's data, add 0xFF
to the address. If you want to hack the third character, add 0x1FE
. For instance, character one's current HP is at 0x172-0x173
; character two's is at 0x271-0x272
, and character three's is at 0x370-0x371
.
Attack, Evade, Defense and Magic Defense are determined by your stats and equipment, so any changes to these won't be permanent.
Group | Offset | Length | Description |
---|---|---|---|
Character 1 Stats | 0x0172 | 0x02 | Current HP |
Character 1 Stats | 0x0174 | 0x02 | Current MP |
Character 1 Stats | 0x0176 | 0x01 | Strength |
Character 1 Stats | 0x0177 | 0x01 | Agility |
Character 1 Stats | 0x0178 | 0x01 | Vitality |
Character 1 Stats | 0x0179 | 0x01 | Intelligence |
Character 1 Stats | 0x017A | 0x01 | Spirit |
Character 1 Stats | 0x017B | 0x01 | Luck |
Character 1 Stats | 0x017C | 0x02 | Total Experience / 50000 |
Character 1 Stats | 0x017E | 0x02 | Remainder of (Total Experience / 50000) |
Character 1 Class | 0x0185 | 0x01 | Counter Gauge Maximum (04, 07, or 09) |
Character 1 Stats | 0x0186 | 0x02 | Experience for Next Level / 50000 |
Character 1 Stats | 0x0188 | 0x02 | Remainder of (Exp. for Next Level / 50000) |
Character 1 Stats | 0x018A | 0x01 | Experience Level |
Character 1 Class | 0x018C | 0x01 | Class Family (Base Class) |
Character 1 Class | 0x018D | 0x01 | Class Changes |
Character 1 Class | 0x018E | 0x01 | Light-Dark Scale |
Character 1 Equipment | 0x018F | 0x01 | Weapon |
Character 1 Equipment | 0x0190 | 0x01 | Helmet |
Character 1 Equipment | 0x0191 | 0x01 | Armor |
Character 1 Equipment | 0x0192 | 0x01 | Ring |
Character 1 Equipment | 0x0193 | 0x01 | Shield |
Character 1 Stats | 0x01A7 | 0x02 | Attack Power |
Character 1 Stats | 0x01AE | 0x01 | Evade Rate |
Character 1 Stats | 0x01AF | 0x02 | Defense Power |
Character 1 Stats | 0x01B1 | 0x02 | Magic Defense Power |
Character 1 Equipment | 0x01B5 | 0x06 | Spare Weapons |
Character 1 Equipment | 0x01C5 | 0x06 | Spare Helmets |
Character 1 Equipment | 0x01CD | 0x06 | Spare Armor |
Character 1 Equipment | 0x01D5 | 0x06 | Spare Rings |
Character 1 Equipment | 0x01DD | 0x06 | Spare Shields |
Character 1 Magic | 0x01E5 | 0x0B | Spells |
Character 1 Magic | 0x01F1 | 0x0B | Spell Targeting Values |
Character 1 Stats | 0x01FD | 0x02 | Max HP |
Character 1 Stats | 0x01FF | 0x02 | Max MP |
Party Data: Miscellaneous | 0x0491 | 0x02 | Luck |
Party Data: Item Ring | 0x0756 | 0x09 | Items |
Party Data: Item Ring | 0x0760 | 0x09 | Item Quantities |
Party Data: Storage | 0x06A5 | 0x66 | Item-by-Item Quantities |
Equipment
Weapons
A value of 0x00
is Nothing. 0x01-0x1E
are Swords. 0x1F-0x2A
are cool-looking "Nothing" swords with varying attack power. Each character's weapons take up 0x2A
values: 0x01
is the first sword, 0x2B
is the first glove, 0x55
is the first dagger, 0x7F
is the first rod, 0xA9
is the first flail, and 0xD3
is the first spear. Sorry, no matter what weapon a character is equipped with, they'll look and fight the same as ever.
Armor, Helmets, Rings & Shields
0x00
is Nothing. 0x01-0x48
are helmets; each character takes up 0x0C
values. 0x49-0x7E
are rings; each character takes up 0x09
values. 0x7F-0xF6
are armor; each character takes up 0x14
values. 0xF7-0xFF
are all shields! (I wonder if they're all available in the actual game.) Notice that you can put any armor type in any spot, which can lead to strange stats.
Magic
Group | Code | Spell |
---|---|---|
Character Spells: Earth | 0x00 |
(No Spell) |
Character Spells: Earth | 0x01 |
Diamond Missile |
Character Spells: Earth | 0x02 |
Earthquake |
Character Spells: Earth | 0x03 |
Stone Cloud |
Character Spells: Earth | 0x04 |
Protect Up |
Character Spells: Earth | 0x05 |
Speed Down |
Character Spells: Earth | 0x06 |
Diamond Saber |
Character Spells: Air | 0x07 |
(Air Spell) |
Character Spells: Air | 0x08 |
(Air Spell) |
Character Spells: Air | 0x09 |
(Air Spell) |
Character Spells: Air | 0x0A |
(Air Spell) |
Character Spells: Air | 0x0B |
(Air Spell) |
Character Spells: Air | 0x0C |
(Air Spell) |
Character Spells: Water | 0x0D |
(Water Spell) |
Character Spells: Water | 0x0E |
(Water Spell) |
Character Spells: Water | 0x0F |
(Water Spell) |
Character Spells: Water | 0x10 |
(Water Spell) |
Character Spells: Water | 0x11 |
(Water Spell) |
Character Spells: Water | 0x12 |
(Water Spell) |
Character Spells: Fire | 0x13 |
(Fire Spell) |
Character Spells: Fire | 0x14 |
(Fire Spell) |
Character Spells: Fire | 0x15 |
(Fire Spell) |
Character Spells: Fire | 0x16 |
(Fire Spell) |
Character Spells: Fire | 0x17 |
(Fire Spell) |
Character Spells: Fire | 0x18 |
(Fire Spell) |
Character Spells: Dark | 0x19 |
(Dark Spell) |
Character Spells: Dark | 0x1A |
(Dark Spell) |
Character Spells: Dark | 0x1B |
(Dark Spell) |
Character Spells: Dark | 0x1C |
(Dark Spell) |
Character Spells: Dark | 0x1D |
(Dark Spell) |
Character Spells: Dark | 0x1E |
(Dark Spell) |
Character Spells: Light | 0x1F |
(Light Spell) |
Character Spells: Light | 0x20 |
(Light Spell) |
Character Spells: Light | 0x21 |
(Light Spell) |
Character Spells: Light | 0x22 |
(Light Spell) |
Character Spells: Light | 0x23 |
(Light Spell) |
Character Spells: Light | 0x24 |
(Light Spell) |
Character Spells: Moon | 0x25 |
(Moon Spell) |
Character Spells: Moon | 0x26 |
(Moon Spell) |
Character Spells: Moon | 0x27 |
(Moon Spell) |
Character Spells: Moon | 0x28 |
(Moon Spell) |
Character Spells: Moon | 0x29 |
(Moon Spell) |
Character Spells: Moon | 0x2A |
(Moon Spell) |
Character Spells: Tree | 0x2B |
(Tree Spell) |
Character Spells: Tree | 0x2C |
(Tree Spell) |
Character Spells: Tree | 0x2D |
(Tree Spell) |
Character Spells: Tree | 0x2E |
(Tree Spell) |
Character Spells: Tree | 0x2F |
(Tree Spell) |
Character Spells: Tree | 0x30 |
(Tree Spell) |
0x31 |
Detect | |
Assorted Spells and Techniques | 0x32 |
|
Assorted Spells and Techniques | 0x33 |
|
Assorted Spells and Techniques | 0x34 |
|
Assorted Spells and Techniques | 0x35 |
|
Assorted Spells and Techniques | 0x36 |
|
Assorted Spells and Techniques | 0x37 |
|
Assorted Spells and Techniques | 0x38 |
|
Assorted Spells and Techniques | 0x39 |
|
Assorted Spells and Techniques | 0x3A |
|
Assorted Spells and Techniques | 0x3B |
|
Assorted Spells and Techniques | 0x3C |
|
Assorted Spells and Techniques | 0x3D |
|
Assorted Spells and Techniques | 0x3E |
|
Assorted Spells and Techniques | 0x3F |
|
Assorted Spells and Techniques | 0x40 |
|
Assorted Spells and Techniques | 0x41 |
|
Assorted Spells and Techniques | 0x42 |
|
Assorted Spells and Techniques | 0x43 |
|
Assorted Spells and Techniques | 0x44 |
|
Assorted Spells and Techniques | 0x45 |
|
Assorted Spells and Techniques | 0x46 |
|
Assorted Spells and Techniques | 0x47 |
|
Assorted Spells and Techniques | 0x48 |
|
Assorted Spells and Techniques | 0x49 |
|
Assorted Spells and Techniques | 0x4A |
|
Assorted Spells and Techniques | 0x4B |
|
Assorted Spells and Techniques | 0x4C |
|
Assorted Spells and Techniques | 0x4D |
|
Assorted Spells and Techniques | 0x4E |
|
Assorted Spells and Techniques | 0x4F |
|
Second / Third Level Power Attacks | 0x50 |
|
Second / Third Level Power Attacks | 0x51 |
|
Second / Third Level Power Attacks | 0x52 |
|
Second / Third Level Power Attacks | 0x53 |
|
Second / Third Level Power Attacks | 0x54 |
|
Second / Third Level Power Attacks | 0x55 |
|
Second / Third Level Power Attacks | 0x56 |
|
Second / Third Level Power Attacks | 0x57 |
|
Second / Third Level Power Attacks | 0x58 |
|
Second / Third Level Power Attacks | 0x59 |
|
Second / Third Level Power Attacks | 0x5A |
|
Second / Third Level Power Attacks | 0x5B |
|
Second / Third Level Power Attacks | 0x5C |
|
Second / Third Level Power Attacks | 0x5D |
|
Second / Third Level Power Attacks | 0x5E |
|
Second / Third Level Power Attacks | 0x5F |
|
Second / Third Level Power Attacks | 0x60 |
|
Second / Third Level Power Attacks | 0x61 |
|
Second / Third Level Power Attacks | 0x62 |
|
Second / Third Level Power Attacks | 0x63 |
|
Second / Third Level Power Attacks | 0x64 |
|
Second / Third Level Power Attacks | 0x65 |
|
Second / Third Level Power Attacks | 0x66 |
|
Second / Third Level Power Attacks | 0x67 |
|
Second / Third Level Power Attacks | 0x68 |
|
Second / Third Level Power Attacks | 0x69 |
|
Second / Third Level Power Attacks | 0x6A |
|
Second / Third Level Power Attacks | 0x6B |
|
Second / Third Level Power Attacks | 0x6C |
|
Second / Third Level Power Attacks | 0x6D |
|
Second / Third Level Power Attacks | 0x6E |
|
Second / Third Level Power Attacks | 0x6F |
|
Second / Third Level Power Attacks | 0x70 |
|
Second / Third Level Power Attacks | 0x71 |
|
Second / Third Level Power Attacks | 0x72 |
|
Second / Third Level Power Attacks | 0x73 |
|
Second / Third Level Power Attacks | 0x74 |
|
Second / Third Level Power Attacks | 0x75 |
|
Second / Third Level Power Attacks | 0x76 |
|
Second / Third Level Power Attacks | 0x77 |
|
Second / Third Level Power Attacks | 0x78 |
|
Second / Third Level Power Attacks | 0x79 |
|
Thrown Weapons | 0x7A |
|
Thrown Weapons | 0x7B |
|
Thrown Weapons | 0x7C |
|
Thrown Weapons | 0x7D |
|
Thrown Weapons | 0x7E |
|
Thrown Weapons | 0x7F |
|
Thrown Weapons | 0x80 |
|
Thrown Weapons | 0x81 |
|
Thrown Weapons | 0x82 |
|
Thrown Weapons | 0x83 |
|
Enemies' Special Attacks | 0x84 |
|
Enemies' Special Attacks | 0x85 |
|
Enemies' Special Attacks | 0x86 |
|
Enemies' Special Attacks | 0x87 |
|
Enemies' Special Attacks | 0x88 |
|
Enemies' Special Attacks | 0x89 |
|
Enemies' Special Attacks | 0x8A |
|
Enemies' Special Attacks | 0x8B |
|
Enemies' Special Attacks | 0x8C |
|
Enemies' Special Attacks | 0x8D |
|
Enemies' Special Attacks | 0x8E |
|
Enemies' Special Attacks | 0x8F |
|
Enemies' Special Attacks | 0x90 |
|
Enemies' Special Attacks | 0x91 |
|
Enemies' Special Attacks | 0x92 |
|
Enemies' Special Attacks | 0x93 |
Black Rain |
Enemies' Special Attacks | 0x94 |
|
Enemies' Special Attacks | 0x95 |
|
Enemies' Special Attacks | 0x96 |
|
Enemies' Special Attacks | 0x97 |
|
Enemies' Special Attacks | 0x98 |
|
Enemies' Special Attacks | 0x99 |
|
Enemies' Special Attacks | 0x9A |
|
Enemies' Special Attacks | 0x9B |
Hyper Cannon |
Enemies' Special Attacks | 0x9C |
Hell Southern Cross |
Enemies' Special Attacks | 0x9D |
|
Enemies' Special Attacks | 0x9E |
|
Enemies' Special Attacks | 0x9F |
|
Enemies' Special Attacks | 0xA0 |
|
Enemies' Special Attacks | 0xA1 |
|
Enemies' Special Attacks | 0xA2 |
|
Enemies' Special Attacks | 0xA3 |
Mr. Death God |
Enemies' Special Attacks | 0xA4 |
|
Enemies' Special Attacks | 0xA5 |
|
Enemies' Special Attacks | 0xA6 |
|
Enemies' Special Attacks | 0xA7 |
|
Enemies' Special Attacks | 0xA8 |
|
Enemies' Special Attacks | 0xA9 |
|
Enemies' Special Attacks | 0xAA |
|
Enemies' Special Attacks | 0xAB |
|
Enemies' Special Attacks | 0xAC |
|
Enemies' Special Attacks | 0xAD |
|
Enemies' Special Attacks | 0xAE |
|
"magicXX's" | 0xAF |
Visual Effects for Bosses Dying |
"magicXX's" | 0xB0 |
Visual Effects for Bosses Dying |
"magicXX's" | 0xB1 |
Visual Effects for Bosses Dying |
"magicXX's" | 0xB2 |
Visual Effects for Bosses Dying |
"magicXX's" | 0xB3 |
Visual Effects for Bosses Dying |
"magicXX's" | 0xB4 |
Visual Effects for Bosses Dying |
"magicXX's" | 0xB5 |
Visual Effects for Bosses Dying |
Enemies' Special Attacks | 0xB6 |
|
Enemies' Special Attacks | 0xB7 |
|
Enemies' Special Attacks | 0xB8 |
|
Enemies' Special Attacks | 0xB9 |
Spiral Moon |
Enemies' Special Attacks | 0xBA |
|
Enemies' Special Attacks | 0xBB |
|
Enemies' Special Attacks | 0xBC |
|
Enemies' Special Attacks | 0xBD |
|
Enemies' Special Attacks | 0xBE |
|
Enemies' Special Attacks | 0xBF |
|
Enemies' Special Attacks | 0xC0 |
|
Enemies' Special Attacks | 0xC1 |
|
Enemies' Special Attacks | 0xC2 |
|
Enemies' Special Attacks | 0xC3 |
|
Enemies' Special Attacks | 0xC4 |
|
Enemies' Special Attacks | 0xC5 |
|
Enemies' Special Attacks | 0xC6 |
|
Enemies' Special Attacks | 0xC7 |
|
Enemies' Special Attacks | 0xC8 |
|
Enemies' Special Attacks | 0xC9 |
|
Enemies' Special Attacks | 0xCA |
|
Enemies' Special Attacks | 0xCB |
|
Enemies' Special Attacks | 0xCC |
|
Enemies' Special Attacks | 0xCD |
|
Enemies' Special Attacks | 0xCE |
|
Enemies' Special Attacks | 0xCF |
Flare |
SBD's | 0xD0 |
|
SBD's | 0xD1 |
|
SBD's | 0xD2 |
|
SBD's | 0xD3 |
|
Enemies' Special Attacks | 0xD4 |
|
Enemies' Special Attacks | 0xD5 |
|
Enemies' Special Attacks | 0xD6 |
|
Enemies' Special Attacks | 0xD7 |
|
Enemies' Special Attacks | 0xD8 |
|
Enemies' Special Attacks | 0xD9 |
|
Enemies' Special Attacks | 0xDA |
|
SBD's | 0xDB |
|
SBD's | 0xDC |
|
SBD's | 0xDD |
|
SBD's | 0xDE |
|
SBD's | 0xDD |
|
SBD's | 0xE0 |
|
SBD's | 0xE1 |
|
SBD's | 0xE2 |
|
SBD's | 0xE3 |
|
SBD's | 0xE4 |
|
SBD's | 0xE5 |
|
SBD's | 0xE6 |
|
SBD's | 0xE7 |
Leave Area |
SBD's | 0xE8 |
Call Flammie |
SBD's | 0xE9 |
|
SBD's | 0xEA |
|
SBD's | 0xEB |
|
SBD's | 0xEC |
|
SBD's | 0xED |
|
SBD's | 0xEE |
|
SBD's | 0xEF |
|
SBD's | 0xF0 |
|
SBD's | 0xF1 |
|
SBD's | 0xF2 |
|
SBD's | 0xF3 |
|
SBD's | 0xF4 |
|
SBD's | 0xF5 |
|
SBD's | 0xF6 |
|
SBD's | 0xF7 |
|
SBD's | 0xF8 |
|
SBD's | 0xF9 |
|
SBD's | 0xFA |
|
SBD's | 0xFB |
|
SBD's | 0xFC |
|
SBD's | 0xFD |
|
SBD's | 0xFE |
|
SBD's | 0xFF |
Detect was apparently dummied out and has no description or effect. Second and Third Level Power Attacks you can "cast" for 0 MP, though be warned that if the "wrong" character uses an attack, it'll look funny at best, and crash the game at worst. Enemies' Special Attacks (and trap effects, etc.); like character techs, they don't consume any MP. Most "SBD's" are just visual effects.
Spell Targeting has a valid range between 0x01
and 0x04
: 01 is One, 02 is All, 03 is One/All, and 04 is caster (for ally-targeted spells) or last ally targeted (for enemy-targeted spells).
Class
Class family is a value from 00 to 05, with 00 being the Fighter classes, 01 being the Grappler classes, and so on. Class changes is 00 for the base class, 01 for a second-level class, and 02 for a third-level class. Light-dark scale can range between 00 and 03, with 00 being light-light and 03 being dark-dark.
Class Family | Code | Class Name | Tech Attack |
---|---|---|---|
Fighter | 00 00 00 |
Fighter | |
Fighter | 00 01 00 |
Knight | 3-Step Cut |
Fighter | 00 01 01 |
Gladiator | Whirlwind Sword |
Fighter | 00 02 00 |
Paladin | Flashing Sword |
Fighter | 00 02 01 |
Lord | Magic Circle |
Fighter | 00 02 02 |
Swordmaster | Vacuum Blade |
Fighter | 00 02 03 |
Duelist | Eruption Sword |
Grappler | 01 00 00 |
Grappler | |
Grappler | 01 01 00 |
Monk | Whirlwind Kick, Tornado Throw |
Grappler | 01 01 01 |
Bashkar | Water-Moon Slice, Bastard Slam |
Grappler | 01 02 00 |
God Hand | Byakko Shockwave, Stardust Bomb |
Grappler | 01 02 01 |
Warrior Monk | Genbu 100-Kick, Blow Impact |
Grappler | 01 02 02 |
Dervish | Suzaku Sky Dance, Veritubach |
Grappler | 01 02 03 |
Death Hand | Seiryuu Death Fist, Dead Crush |
Thief | 02 00 00 |
Thief | |
Thief | 02 01 00 |
Ranger | Flying Swallow Toss |
Thief | 02 01 01 |
Ninja | Silhouette Slice |
Thief | 02 02 00 |
Wanderer | Dance of Roses |
Thief | 02 02 01 |
Rogue | Thousand Slice |
Thief | 02 02 02 |
Nightblade | Split-Image Slice |
Magician | 03 00 00 |
Magician | |
Magician | 03 01 00 |
Sorceress | Pink Typhoon |
Magician | 03 01 01 |
Delvar | Star Attack |
Magician | 03 02 00 |
Grand Divina | Spiral Rod |
Magician | 03 02 01 |
Archmage | Dancing Rod |
Magician | 03 02 02 |
Rune Master | 10 Tons |
Magician | 03 02 03 |
Magus | Hot Shot |
Cleric | 04 00 00 |
Cleric | |
Cleric | 04 01 00 |
Priestess | Jump |
Cleric | 04 01 01 |
Enchantress | Dash |
Cleric | 04 02 00 |
Bishop | ChopChop |
Cleric | 04 02 01 |
Sage | BoomBoom |
Cleric | 04 02 02 |
Necromancer | Craaaazy |
Cleric | 04 02 03 |
Evil Shaman | HugeHuge |
Amazoness | 05 00 00 |
Amazoness | |
Amazoness | 05 01 00 |
Valkyrie | Vacuum Surge Spear |
Amazoness | 05 01 01 |
Rune Maiden | Flying Heaven Spear |
Amazoness | 05 02 00 |
Vanadis | Light Ball Spear |
Amazoness | 05 02 01 |
Star Lancer | Falling Star |
Amazoness | 05 02 02 |
Dragon Master | Dragon Fang Spear |
Amazoness | 05 02 03 |
Fenrir Knight | Hundred Flower Dance |
Party Data
Item Ring
0x00
is Nothing. 0x01-0x18
are third-level class items. 0x19-0x1E
are seeds. 0x1F-0x4E
are magic items; these are arranged just like the spells they correspond to. 0x4F-0x52
are thrown weapons. 0x53-0x59
are recovery items. 0x5A-0x66
are special items, quest items, and dummied items (including 5A
Magical Rope and 60
Dreamsee Herb). 0x67
on are Nothings.
Storage
This long list corresponds to the values that are used on your item ring. That is, 0x6A5
is how many Nothings you have in storage, 0x6A6
is how many Paladin Proofs, etc. A value of 0x00
means you don't have that item in storage, obviously. If you set all of these values to 0x01
, you'll have one of every item in storage.
Notes
- Mode7 GFX are drawn in 8BPP linear format
- World Map Tilemaps are drawn on 8x8 tile basis
Information mostly from giangurgolo. SRAM Format originally written by Jair from the Vale, expanded up and corrected by various others.