In order to handle the self-assign case, string::operator= moves the string, which may copy the string in reverse. The MGBA string register does not allow this I believe. In order to avoid this, it now uses a raw character buffer and is copied using string_view::copy. string_view::copy will always copy the string forward.