You have used "packed records" nearly for every record. But the original libretro.h barely uses packed structs. You will not notice any issues, except you are loading a core, where (for example) a sub-system-info struct contains 2 roms. As the packed record only has 31 bytes but the non-packed core (compiled in C++) 32, the alignment is not correct and will cause an exception.
Your record = 31 bytes
TRetro_subsystem_info = packed record
...
end;
Original libretro c++ header = 32 bytes
struct retro_subsystem_rom_info {
...
}
You have used "packed records" nearly for every record. But the original libretro.h barely uses packed structs. You will not notice any issues, except you are loading a core, where (for example) a sub-system-info struct contains 2 roms. As the packed record only has 31 bytes but the non-packed core (compiled in C++) 32, the alignment is not correct and will cause an exception.
Your record = 31 bytes
Original libretro c++ header = 32 bytes