fef3de8bd9de03a101d5882ca14d0fcb52aa7e02
The previous `size != retro_serialize_size()` guard rejected any state whose serialized length didn't exactly match the current build's SFORMAT-derived size. That sounds defensive, but the file format already carries its own 16-byte header with an explicit `totalsize` and `ReadStateChunk()` already skips unknown chunk tags safely (size- bounded `memstream_seek` past the payload), so the outer check adds no parser safety - it just turns every SFORMAT change into a hard break of existing saves with no user recourse. This came up in the recent FDS audio rewrite for #560: the backport added/removed audio-register chunk tags, leaving pre-rewrite states 240 bytes smaller than the new core's expected size, and users with in-progress FDS games hit "unserialize FAIL" on first reload after updating the core. Accept any buffer that's at least the 16-byte header and at most 4x the current serialize size (a sanity cap against pathological input). ReadStateChunk does the actual work of validating each chunk's size against the header's totalsize, and the FCS magic in the header rejects non-fceumm states. Verified on Vs. Excitebike (Japan): - pre-rewrite state -> new core: load OK, audio plays normally - new-rewrite state -> new core: round-trip OK (same audio as before) - 15-byte input: rejected (< header size) - 4 MB input: rejected (> 4 * serialize_size)
FCE Ultra mappers modified
FCEU "mappers modified" is an unofficial build of FCEU Ultra by CaH4e3, which supports a lot of new mappers including some obscure mappers such as one for unlicensed NES ROM's.
Sequential targets Light Guns support added
Support for Sequential targets Light Guns has been added. "Gun Aux A" serves as light sensor logic input.
Description
Languages
C
97.7%
Python
2%
C++
0.2%