obo
Member-
Posts
5 -
Joined
obo's Achievements
Newbie (1/3)
8
Reputation
-
jetsetdanny reacted to a post in a topic:
TileMap 2.x
-
@jetsetdanny Jet Set Lemmy runs fine in TileMap, but the map layout definitely needs some fixing. The music in bank 4 means some junk rooms are added by the room scanner, but they can be removed using a layout override. If you want to try the whole process (which should be the same for any new JSW game): Load the tape image into your favourite Spectrum emulator. Save a SNA snapshot of the game to C:\Users\YourUser\Documents\TileMap\games\JSW128\Jet Set Lemmy.sna Ensure the snapshot name is how you want it to appear in the game browser. Save a 256x192 screenshot of the game to C:\Users\YourUser\Documents\TileMap\thumbnails\JSW128\Jet Set Lemmy.png Start TileMap and browse to the JSW128 section to find it, since it's using the JSW128 engine. Hold Shift as you double-click the game to start, which saves a map layout. Open C:\Users\YourUser\Documents\TileMap\layouts\JSW128\Jet Set Lemmy.txt to see the room layout Make fixes -- in this case you definitely want to remove the two bottom-most blocks of rooms with numbers >= 0x80 Make any fixes to the layout too, moving rooms around as necessary. In TileMap, return to the game selection and re-open the game (no need to restart the whole app) Verify the map layout is correct, repeat until happy. Take care with the layout files as the format is very strict. If it contains any format errors or duplicate room numbers the override layout will be silently ignored, and the default/detected map layout will be used instead. If the layout feature is used by others I'll improve error reporting, rather than relying on it just stopping in my debugger. The infinite lives and infinite time patches are detected at runtime, and if found they're available on the pause menu. For this game both were successfully detected from the standard JSW128 code. If any of the other code patches aren't compatible it'll show the missing patch details, and refuse to run the game. In that case I can extend the patch support to fix it. I'd be happy to accept new games and layout files, if I haven't already added them. If Pasmo hasn't mapped the games it'll take more time, unless someone involved in the development knows what the game should look like. 🙂
-
obo reacted to a post in a topic:
TileMap 2.x
-
JianYang reacted to a post in a topic:
TileMap 2.x
-
The good news is that JSW128 and JSW64 support was easier than expected, so I've managed to squeeze it into the next release. The room data being held in the extra 128K banks was much easier to scan, and operand values from the code let me know the size of each room. The rest was much the same as for JSW48 support, with generally only a single hook point due to the standardised game engine code. Across the 3 engines that makes 119 runnable JSW snapshots. Windows, macOS, and Linux desktop versions are now available from: https://simonowen.com/spectrum/tilemap/
-
obo reacted to a post in a topic:
[File] pyramid.tap
-
jetsetdanny reacted to a post in a topic:
[File] pyramid.tap
-
jetsetdanny reacted to a post in a topic:
TileMap 2.x
-
Apologies if this isn't the right place to report this. I've noticed some minor creature collision issues in Willy does the Great Pyramid, where Willy will lose a life if he lingers for too long in certain rooms. The rooms I've seen it happen in are: "word association football": the green ball hits the centre of the stairs after about 54 seconds. "so much for aesthetics": the horizontal creature hits the eye after about around 2 minutes and 51 seconds. "Right at the bottom": the right-hand yellow creature touches the top red creature after about 4 minutes and 15 seconds. I only noticed it because playing the game in TileMap keeps all rooms visible for extended periods. Though there's nothing specific to the app that should cause this problem. The YouTube walkthrough only has Willy in the first room for 25 seconds and 15 seconds, which is shorter than needed to see it happen in the fastest case.
-
UncleWan reacted to a post in a topic:
TileMap 2.x
-
Thanks for the feedback! I've made some extra improvements and have updated the web version with the changes. I added a layout override mechanism and have corrected the layouts for many games to match the Pavero maps. In some cases it was just tweaking a room or two, but in complex maps a lot of the map was different. Madam Blavskja's Carnival Macabre still needs a bit of work to place some extra rooms. Willy does the Great Pyramid now looks fantastic, with a special half tile offset applied to align the pyramid edges. The code hooks used to create the map illusion are fairly light, so all special code (including Patch Vectors) will run as normal. There were only a couple of cases I needed extra handling, such as the Doppelganger room in ZX Willy the Bug Slayer, where the extra sprite was initially inside a fire block. In most cases I just need to find a few code locations of interest, like when the game starts and ends, when the room is being drawn, and the start and current room number locations. I just check a few addresses for each and find what I need, but if new games move code around I can add an extra location to check. I also check the OR/XOR/ADD opcode used to convert the room number to a room data high byte, used by a few games. The original JSW support has some special tweaks to make the gameplay more seamless. They include preserving the position of creatures in neighbouring rooms, and positioning Willy a bit closer to the screen edges on entry. I've not applied these to the JSW48 games as it relies on knowing the position and size of room state information, which may well have changed. It wasn't applied to JSW2 either due to the lifts, but it could work for the rest of the state. TileMap only supports 48K games at the moment so I'm limited to the JSW48 games set. Once I've added 128K support I should be able to look at adding JSW64 and JSW128 games too, which should require a similar approach. That won't happen until after the next desktop release though, which shouldn't be too far away now. If you spot any map/gameplay issues then please shout and I'll take a look.
-
obo reacted to a post in a topic:
TileMap 2.x
-
obo reacted to a post in a topic:
TileMap 2.x
-
UncleWan reacted to a post in a topic:
TileMap 2.x
-
jetsetdanny reacted to a post in a topic:
TileMap 2.x
-
JianYang reacted to a post in a topic:
TileMap 2.x
-
obo started following TileMap 2.x
-
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.