I've been working on updating my TileMap application, which lets you see the whole game map as you play. I already supported the original JSW and JSW2+ games, but they use hard-coded map layouts. I've long wanted to add more general support for custom JSW games, which requires working out a 2D map layout from the game data. That turned out to be a much harder problem than expected so it never got finished.
I've come to the conclusion that it may not be possible to automatically generate a perfect layout for all games. The only information you have is the room exit data, which must have all 4 exits defined, even if only some are used. The remaining entries usually point back to themselves, or are set to some dummy value, which will usually be an existing room number. In some cases they point to unused rooms from the original JSW, which then become part of the map layout. Examining the room data for navigable exits might help fix some of these, but there are cases where blocks disappear in late game to allow access. That's not even thinking about exotic loops and overlaps that some games have.
I've settled on an approach that seems to give "good enough" results for non-overlapping maps. The rules also keep the original JSW map rooms aligned to the east wall, leaving a gap in the middle. In more complex cases it attempts to place problem rooms near (and aligned to) where they should be, but it will always place them somewhere. It's far from perfect (as you'll see below) but it seems a reasonable compromise solution for now. In some cases I'm not even sure what the correct layout should look like! Are the Pavero maps considered to be correct?
TileMap also requires game code hooks to react to some game events. JSW mods that change only the data should just work. I've found that most game engine changes use the same code in a different location, or minor variations. I was able to get all the JSW48 games working over a couple of evenings, and extra incompatible games should only take about 10 mins each now. JSW Central has been a great source of information to get this done :)
To show the current progress I've built a test web version of my development code, with just the JSW48 games available. It should work on modern desktop browsers, though the final release will be regular desktop apps. Double-click to start, Esc to return to the selection screen. Home centres on current room, End shows full map. Drag/zoom with the mouse. F1-F4 give 1-4x scaling, avoiding scaling artefacts.
If there's community interest/help I could allow custom overrides of the map layouts to fix issues. It would likely allow exporting the generated layout for manual editing, rather than having it created from scratch. Any other thoughts are most welcome.