You can split the necessary work into two groups:
- The file format itself, and the code to load and save it.
- The changes necessary to make use of higher limits or new features.
The initial plan, back in 2014/2015, was to implement the file format itself first, then gradually get rid of limits. However, that plan has flipped and we have done extensive work to already modify the internal structures (e.g. rides, entities, tile elements), converting to and from at load/save time. We have also introduced objects for terrain surfaces, edges and for stations (currently loaded automatically at the same slot where they were in RCT2). This has allowed us to test all these changes individually. Since the amount of work necessary proved a lot bigger than expected, this has turned out to be a good idea.
Refactor work that is still needed:
- The object system must use the new JSON identifiers throughout, except for legacy (.DAT) objects. OpenRCT2/OpenRCT2#13379 made a start with this.