Nice improvements! On leaving towns you could try forcing better encounter by letting random npc movements use the RNG. Or hex-edit a change to the last fight so you don't have to replay the town sequence. The best way is to have some lua code that plays over and over again, but that takes time to program.
The light hack script syncs so far, you can use it in the encode. Here is a version with no special hacks:
Download SwordOfVermilionLight.luaLanguage: lua
function turnOnLights()
memory.writebyte(0xFFC560, 0xFF);
memory.writeword(0xFFC562, 0x0800);
end;
function turnOffLights()
memory.writebyte(0xFFC560, 0x00);
memory.writeword(0xFFC562, 0x0000);
end;
wasInDungeon = (memory.readbyte(0xFFC551) == 0xFF);
while (true) do
nowInDungeon = (memory.readbyte(0xFFC551) == 0xFF);
if nowInDungeon and not wasInDungeon then
turnOnLights();
end;
wasInDungeon = nowInDungeon;
gens.frameadvance()
end;