I had thought a topic such as this (bug fixes and the like) deserve their own topics for ease of use for people that are looking purely for the fixes (not to mention fixes in general are a larger deal than disassembling)
Okay, well I finally have the means to fix the Arrow Glitch. Just yesterday I was disassembling the Attack Routines and saw references to Arrows. For our purposes here is the relevant information...
03/C972 38 SEC A:0001 X:0008 Y:0000 P:envMxdiZc - Set Carry Flag.
$03/C973 BD DC 32 LDA $32DC,x[$7E:32E4] A:0001 X:0008 Y:0000 P:envMxdiZC - Load A from Right Hand Quantity.
$03/C976 E9 01 SBC #$01 A:0032 X:0008 Y:0000 P:envMxdizC - -1 to A. (-1 Arrow)
$03/C978 D0 0E BNE $0E [$C988] A:0031 X:0008 Y:0000 P:envMxdizC - If not 00 branch to 03C988.
----------------------------------------------------------------------------------------------------------
$03/C97A A5 CD LDA $CD [$00:00CD] A:0000 X:0008 Y:0000 P:envMxdiZC - Load A from CD.
$03/C97C AA TAX A:0001 X:0008 Y:0000 P:envMxdizC - Transfer A to X.
$03/C97D BD DC 38 LDA $38DC,x[$7E:38DD] A:0001 X:0001 Y:0000 P:envMxdizC - Load A from 7E38DD.
$03/C980 1A INC A A:0000 X:0001 Y:0000 P:envMxdiZC - +1 to A.
$03/C981 05 AB ORA $AB [$00:00AB] A:0001 X:0001 Y:0000 P:envMxdizC - Check it against address AB.
$03/C983 9D DC 38 STA $38DC,x[$7E:38DD] A:0001 X:0001 Y:0000 P:envMxdizC - Store A in 7E38DD. (This will make the game realize next turn to decrement the arrow and quantity to 0)
$03/C986 80 03 BRA $03 [$C98B] A:0001 X:0001 Y:0000 P:envMxdizC - Branch to 03C98B
As can be seen the game goes Out Of Its Way to keep that +1 Arrow in the quantity (this is likely to prevent a reset-byte glitch which would make it 255 Arrows) . But they never had to take this path in the first place. When a character's turn starts the game checks if a 01 Arrow has been used and if it has it erases both Arrow and Quantity in a separate location (7E32XX section). Then it adds 1 to the value at 7E38DX (Dependent on Slot) and if that is 1 erases Arrow and Quantity. A more efficient way to do this would have just been to write a JSR to the erasing value at 03A848. The only problem with this is that the game read the Empty Hand after the damage but before the graphics processing so you will be attacking with Fists, dealing appropriate Weapon Damage, but that's the only glitch associated with this and a lot less gamebreaking if someone wanted to make a Saga Style mod where all weapons have "durability". I'll take a small graphical glitch over that nonsense anyday
To make this work correctly change...
$03/C97A A5 CD LDA $CD [$00:00CD] A:0000 X:0008 Y:0000 P:envMxdiZC - Load A from CD.
$03/C97C AA TAX A:0001 X:0008 Y:0000 P:envMxdizC - Transfer A to X.
To...
$03/C97A 20 48 A8 JSR $A848 [$03:A848] A:0000 X:0008 Y:0000 P:envMxdiZC - Jump to Subroutine - Arrow/Quantity Erasing Routine.
The rest of that "wait and see" routine past the 00 Arrow check above is unnecessary if this is taken into account. And can be modified to include anything the hacker would like.
While it's not perfect. It's better than what is in place currently, I would say.