|
Side Notes
|
Bugs
Hit Probability
A part of the Hit Probability code is bugged:
73C1 LDY #Character.vigor
73C3 LDA (pTarget),Y
73C5 AND #00111111b
73C7 CMP #3
73C9 BCS $73D1 ; if (targetVigor <= 2) {
73CB LDA #10 ; AddAtoProbToHit (10);
73CD JSR AddAtoProbToHit ; }
73D0 LDY #Character.field_F ;
73D2 LDA (pTarget),Y ; A = target.field_F
73D4 TAX , X = target.field_F
73D5 AND #00000100b ; A = target.State (bit #3 of field_F)
[...]
73DE TXA ; A = target.field_F
73DF AND #00000011b ; A = target.Stance (bit #1 and #2 of field_F)
At address $73C9, if the target Vigor Value is >= 3, the code branch to $73D1 (instead of $73D0). In this case, the executed code is:
73C9 BCS $73D1
73D1 ASO $C4B1 ; A = ? (($C4B1) << 1) || A
73D4 TAX ; X = ?
73D5 AND #00000100b ; A = ? target.State (bit #3 of field_F)
[...]
73DE TXA ; A = X
73DF AND #00000011b ; A = ? target.Stance (bit #1 and #2 of field_F)
Program never hangs, but the result is unpredictable for the State and the Stance value (It seems the memory address $C4B1 always holds the value 6).
Dropping Armor
The possibility to Drop the Armor is implemented in the game, but disabled. I don't know if it's intentional, but to enable this functionality, the address $A4C1 must be pocked with the value $8A (replace TAX with TXA).
"YOUR WORN ARMOR IS DISCARDED AND YOUR FULL DEXTERITY IS RESTORED."
Stance
I don't know if this is a bug, but I'm surprised of the values for the To Be Hit modifier between Stop (-1) and Defend (0). I think it should be inversed, because like this, it's better to move and Stop than to Defend at all…
TODO
- Hacks
- Finalize some parts.
- Artificial Intelligence of non player characters.
|
|
|