This is the only time it is possible for a character to have zero hit points outside of battle. Without resting, the Hero will go into subsequent battles alive, but with zero hit points. There do not seem to be any detriments to the bug. He will die normally if attacked, and his hit points will be set to one after battle. This bug is more of an oddity, than a hardship on the player.
During these events, code written for the purpose should have been used, so that the hit point value cannot become zero. Below is the relevant fragment of the multi-purpose routine, taken from the main executable.
TEXT:800730E4 lhu $v0, 0x872($v1) TEXT:800730E8 nop TEXT:800730EC div $v0, $a1 .... TEXT:80073114 TEXT:80073114 loc_80073114: # CODE XREF: MngCharaStat+F8j TEXT:80073114 # MngCharaStat+100j TEXT:80073114 mflo $v0 TEXT:80073118 j loc_8007320C TEXT:8007311C sh $v0, 0x872($v1)
Most of this routine involves finding the address of the character, and checking for exceptions like Divide By Zero. Those sections of the code have been removed.
The code that calls it is located in /CDROM/020_ARB/VB18.BIN.
RAM:8010DCA0 li $v1, 0x80073008 RAM:8010DCA8 li $a0, 3 RAM:8010DCAC li $a1, 2 RAM:8010DCB0 sw $v1, dword_8015B238 RAM:8010DCB4 move $s1, $v0 RAM:8010DCB8 li $a2, 1 RAM:8010DCBC jalr $v1 RAM:8010DCC0 addiu $a3, $sp, 0x10
; Suikoden II Eilie Script Fix ; Written by Pyriel .psx .createfile eilie_fix.bin, 0x8010DCA0 .align 4 eilie_fix: lui v1, 0x8007 lhu a0, 0x9896(v1) ;load hero's current HP addu s1, zero, v0 ;preserved from previous code srl a0, a0, 1 ;shift hit points right by 1 (divide by 2) bne a0, zero, store ;if hit points not zero, store nop addiu a0, zero, 1 ;set to 1 if zero nop store: sh a0, 0x9896(v1) .close