data/claims/dw3.yamlDragon Warrior III (retail ROM, read with zeromus/DragonWarrior3)
Game: Dragon Warrior III.
In Dragon Warrior III (the North American NES release), each step reads the area's encounter class: classes 0–2 first pass a roll of 16, 64, or 128 in 256 and then use a multiplier of 1, and classes 3–7 use 1, 2, 4, 8, or 16. The multiplier times the terrain's odds, capped at 100, is then compared with a random byte; the overworld's odds rise at night (grass 10 by day and 13 by night, forest 18 and 22, hills 25 and 31, and 4 and 5 aboard the ship, which uses terrain 0), and carrying the Golden Claw sets them to 100. dw3/encounter-rate
About: Dragon Warrior III Random encounter
Value
{
"classMultipliers": [
1,
1,
1,
1,
2,
4,
8,
16
],
"classPreRoll": [
16,
64,
128
],
"cap": 100,
"of": 256,
"day": {
"sea": 4,
"grass": 10,
"forest": 18,
"hills": 25
},
"night": {
"sea": 5,
"grass": 13,
"forest": 22,
"hills": 31
}
}0x39D-0x402 — bank 0 $838D-$83F2, the class roll, the day or night table, the Golden Claw, the cap, and the final rollDragon Warrior III (USA) · 0x638-0x63F — bank 0 $8628, the class table 16, 64, 128, 1, 2, 4, 8, 16Dragon Warrior III (USA) · 0x944-0x955 — bank 0 $8934 and $893D, the day and night odds by terrainDragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank00.inc#L606-L665sub_838D:
…
LDA byte_8628,X
CPX #3
…
LDA _random_encounter_overworld_probability_daytime_tbl,X
…
LDA _random_encounter_overworld_probability_nighttime_tbl,X
…
LDA #ITEM_GOLDEN_CLAW
…
CMP #$64 ; clamp u8[$4D] at #$64
…DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank00.inc#L1444-L1447_random_encounter_overworld_probability_daytime_tbl:
.BYTE 4, $F, $A, $F,$12,$19,$54,$12, $A
_random_encounter_overworld_probability_nighttime_tbl:
.BYTE 5,$13, $D,$13,$16,$1F,$54,$16, $ADragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/tile_ids.inc#L1-L5TILE_OVERWORLD_SAND = $01
TILE_OVERWORLD_GRASS = $02
TILE_OVERWORLD_SHRUBS = $03
TILE_OVERWORLD_FOREST = $04
TILE_OVERWORLD_HILLS = $05Dragon Warrior III (USA) · 0x2EC-0x309 — bank 0 $82DC-$82F9; on the ship ($2C = 1) the terrain index $4F is set to 0DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank00.inc#L500-L510 LDA _player_vehicle ; vehicle type
CMP #1
BEQ .check_encounter_ship ; branch for ship
…
.check_encounter_ship:
LDA #0
STA byte_4F ; meaning unsureChecked by claude-agent, 2026-10-21 — disassembled the retail ROM's bank 0 with da65 and read $838D-$83F2 and both tables against zeromus's listing, which has the same code at the same addresses; night is a world-map step count of $78 or moreCited by: Dragon Warrior III, Random encounter
In Dragon Warrior III (NA NES), a hero's attack takes , attack power less half the monster's defense; under 2 it deals 0 or 1, and otherwise , where is a bell-shaped roll centered on 128 clamped to 102–153, so 25/64 to 38/64 of . dw3/hero-damage
About: Dragon Warrior III Damage formula
Value
{
"defenseDivisor": 2,
"rollClamp": [
102,
153
],
"fraction": [
25,
38
],
"of": 64
}0x12CE9-0x12D3B — bank 4 $ACD9-$AD2B, attack less half of _enemy_DEF ($0520), the under-2 branch, the clamp, and the multiply and divideDragon Warrior III (USA) · 0x13A74-0x13AA8 — bank 4 $BA64-$BA98, the roll; 16 plus thirty-two 4-bit random numbers, less 128, drawn again until it fits in a byteDragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L7013-L7062sub_6ACD9:
…
JSR _sram_b0_s17_player_rATK_read
LSR byte_5A
ROR byte_59
…
CMP #2
BCC loc_6AD1F
…
CMP #$66
…
CMP #$99
…DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L9560-L9563sub_6BA64:
LDA #$F
STA byte_42
LDX #$20Checked by claude-agent, 2026-10-21 — disassembled the retail bank 4 with da65 and read $ACD9-$AD2B and $BA64-$BA98, where $59 holds _enemy_DEF from $B777; zeromus's comment calls the roll "seemingly completely in [0,255]", but $BA64 sums 32 masked bytes, so it clusters around 128Cited by: Damage formula, Dragon Warrior III
In Dragon Warrior III (NA NES), a hero lands "a tremendous hit" when a random byte falls below 4 (1 in 64), or below 32 (1 in 8) with the Sword of Destruction or the Demon Axe; a Fighter first gets a roll below its level. The hit deals attack power × (54 + a roll of 0–10) / 64, plus 1, ignoring defense. dw3/critical
About: Dragon Warrior III Critical hit
Value
{
"chance": [
4,
256
],
"higherCrit": [
32,
256
],
"fighter": "level/256",
"damage": [
54,
64
]
}0x1169F-0x116D8 — bank 4 $968F-$96C8, the Fighter's level roll and the 4-or-32 rollDragon Warrior III (USA) · 0x12DB4-0x12DC5 — bank 4 $ADA4-$ADB5, attack × (54 + a roll of 0–10) / 64Dragon Warrior III (USA) · 0x13166-0x13171 — bank 4 $B156, items $93 (Sword of Destruction) and $8F (Demon Axe) carry flag $02DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L3541-L3568loc_6968F:
…
CMP #CLASS_FIGHTER
BNE loc_696A2
JSR _rand_ex
CMP _players_level,X
…
LDX #4 ; normal chance of crit
LDA _attack_buff_flags
AND #ATTACK_BUFF_HIGHER_CRIT
…
LDX #$20 ; replacement odds for demon axe
…DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L7146-L7154sub_6ADA4:
LDA #$B
JSR _b4_sF_rand_mul_A
CLC
ADC #$36DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L7763-L7778byte_6B156:
.BYTE #ITEM_ESWORD_OF_DESTRUCTION
…
.BYTE #ITEM_EDEMON_AXE
…
byte_6B15D:
.BYTE #ATTACK_BUFF_HIGHER_CRIT
…
.BYTE (#ATTACK_BUFF_DEMON_AXE | #ATTACK_BUFF_HIGHER_CRIT)Checked by claude-agent, 2026-10-21 — read the retail bank 4 at $968F-$96C8, $ADA4, and the item table at $B156 (93 95 88 8F … 02 00 80 0A) against zeromus's listing and its constants (CLASS_FIGHTER $06, ATTACK_BUFF_HIGHER_CRIT $02)Cited by: Critical hit, Dragon Warrior III
Dragon Warrior III (NA NES) keeps Dragon Warrior II's critical-hit odds for most heroes, 1 in 64, and its 1 in 8 with the Sword of Destruction. dw3/keeps-dw2-critical
About: Dragon Warrior III Critical hit
CodeDragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing ·disassembly/bank04.inc#L3551-L3555 LDX #4 ; normal chance of crit
…
LDX #$20 ; replacement odds for demon axeDragon Warrior III (USA) · 0x1169F-0x116D8 — bank 4 $96A2 ldxDragon Warrior III (USA) · 0x13166-0x13171 — bank 4 $B156, item $93 (Sword of Destruction) carries flag $02, the higher oddsDragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L7763-L7775byte_6B156:
.BYTE #ITEM_ESWORD_OF_DESTRUCTION
…
byte_6B15D:
.BYTE #ATTACK_BUFF_HIGHER_CRITdq2: Disassembly of NES Dragon Warrior II · src/us/prg/bank4.asm#L6241-L6250B04_A5E3:
lda #$08
sta $A6
lda #$4C ; Item ID #$4C: Sword of Destruction (equipped)
…
lda #$40
sta $A6Checked by claude-agent, 2026-10-21 — 4 in 256 and 32 in 256 against Dragon Warrior II's rolls of 0–63 and 0–7 (dw2/tremendous-blow)Cited by: Critical hit, Dragon Warrior III
In Dragon Warrior III (NA NES), each round every hero and monster gets a key of a quarter of its agility plus a random share of the other three quarters, so from a quarter to all of it, and a selection sort sets the order from the highest key down. dw3/turn-order
About: Dragon Warrior III Turn order
CodeDragon Warrior III (USA) ·0x10193-0x10224 — bank 4 $8183-$8214, the keys for four heroes and eight monsters, the sort, and the randomizerDragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L242-L300sub_68183:
…
LDA _players_rAGI,Y
STA word_4
JSR _randomize_75_percent
…
JSR sub_6B73E ; load enemy's agility
…
;look for maximum unused agility in table at byte_54CDragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L333-L345_randomize_75_percent:
LDA word_4
LSR
LSR
STA word_4+1
LDA word_4
SEC
SBC word_4+1
JSR _b4_sF_rand_mul_A
CLC
ADC word_4+1Checked by claude-agent, 2026-10-21 — read the retail bank 4 at $8183-$8214 against zeromus's listing; _b4_sF_rand_mul_A ($ACA3) keeps the high byte of a random byte times its argumentCited by: Dragon Warrior III, Turn order
Dragon Warrior III (NA NES) changes Dragon Warrior II's round order: Dragon Warrior II adds a random byte (and a random 0 or 1) to half the agility, while Dragon Warrior III scales the agility itself by a random factor from a quarter to one. dw3/changes-dw2-turns
About: Dragon Warrior III Turn order
Codedq2: Disassembly of NES Dragon Warrior II ·src/us/prg/bank4.asm#L9274-L9283B04_B790:
lsr
sta $99
jsr B0F_C3AB
…
adc $99DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L333-L345_randomize_75_percent:
…
JSR _b4_sF_rand_mul_A
CLC
ADC word_4+1Dragon Warrior III (USA) · 0x10193-0x10224 — bank 4 $8201, the retail randomizerChecked by claude-agent, 2026-10-21 — read both key routines (dw2/turn-order, dw3/turn-order)Cited by: Dragon Warrior III, Turn order
In Dragon Warrior III (NA NES), running never works in a special battle; it always works when the party leader's level less a level the encounter setup stores at $5F (zeromus reads it as the enemies') is 10 or more, or when bit 3 of the battle-state byte $0566 is set, and otherwise it fails when a random byte is below 128, 128, 64, or 0 for the first, second, third, and fourth try, so the fourth try always escapes. dw3/run
About: Dragon Warrior III Fleeing
Value
{
"failBelow": [
128,
128,
64,
0
],
"of": 256,
"levelMargin": 10
}0xA6BB-0xA70C — bank 2 $A6AB-$A6FC, the checks, the failure counter, and the table 80 80 40 00DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank02.inc#L3309-L3353 LDA byte_6A6B
BNE loc_3A6D7
…
LDA byte_6A6A ; a level difference between player and enemy was stored in here
CMP #$A
BCS loc_3A6CC
LDA byte_566
AND #3
TAX
JSR _rand
CMP byte_3A6F9,X
BCC loc_3A6D7
…DragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank00.inc#L927-L933 LDA _players_level ; read the PARTY LEADER's LEVEL!
SEC
SBC word_5E+1 ; enemy's level was in there, I hope
…
STA byte_6A6ADragon Warrior III (USA) · 0x5C3-0x5D2 — bank 0 $85B3-$85C2, the leader's level ($0700) less $5F, floored at 0, stored at $6A6ADragonWarrior3: Dragon Warrior III Reverse Engineering & Reconstructing · disassembly/bank04.inc#L66-L72 LDA _battle_type_fight
STA byte_6A6BChecked by claude-agent, 2026-10-21 — read the retail bank 2 at $A6AB-$A6FC (the failure path adds 1 to the low two bits of $0566, which the battle setup clears) against zeromus's listing, and bank 0 $85B3 for $6A6A; what `_enemy_roster_get_levels` stores at $5F is unreadThe byte at $5F comes from _enemy_roster_get_levels, which the atlas hasn't read; zeromus's comment hopes it is the enemy's level.
Cited by: Dragon Warrior III, Fleeing