With the urge to play Arduventure on a 2.4" OLED display with SSD1309 controller and the source not coming out for quite a while. I looked into hacking the hexfile and succeeded
The OLED initalisation code contains a command Charge pump enable (0x8D, 0x14) that isn’t supported by SSD1309 displays and causes the left and right halves of the display to be flipped. This command is replaced by two No OPeration commands (0xE3). Conveniently the command is at the end of a line record in the hex file so it is directly folowed by a checksum byte (0xBD). By replacing the command with two NOPs, the checksum changes to 0x98
This is pretty cool it means loaders like ProjectABE could potentially on the fly patch games for other displays before uploading without the need to recompile.
I didnt do a thorough comparison. but the main difference between the ssd1306 and ssd1309 is that the ssdd1306 has an internal charge pump and the ssd1309 does not.The charge pump command is what causes the problem.