Popular Post Tezz Posted October 5, 2019 Popular Post Share Posted October 5, 2019 (edited) Hi all, In celebration of the 35th anniversary of Jet Set Willy this year, I've written a new definitive conversion of the game for the A8 from scratch featuring hi-res colour, 50/60Hz sprite/screen updates, bug fixes, the Rob Hubbard music and an accurate conversion of the sound effects. Back in February after taking a hiatus from A8 programming for a year, I was reading an issue of Retro Gamer magazine where they'd mentioned that Matthew Smith would be attending Play Expo here in Manchester in May. Inspired by the opportunity to meet Matthew in person I started to look into the technicalities of rewriting everything and developing a full colour recreation of the game as I did previously with Manic Miner. I didn't have any prior intention of creating a new conversion of JSW with other projects awaiting continuation but as I looked into it I thought why not surpass my previous effort with MM and so before long I'd started working on the game fully. I thought rewriting all of the procedures for the char based method would be a fun challenge and I certainly thoroughly enjoyed working on it over the months, particularily the realtime drawn rope. I spent considerable time planning and working on the implementation of the colouring for each room to ensure that the interupts and mid scan changes (where nessasary) were as optimal and minimal as possible. Whilst carefully designing all the room implementations with various trials and itterations I concluded that there were several that benefited from non-inverted colour ordering so I adapted all of my procedures to deal with both inverted and non-inverted rooms to achive the goal. I gave extra consideration to the "Entrance to Hades" death room. The colouring of the original game dictated that the large guardian sprite was dark but of course Miner Willy is always White in the game so this was another room that I decided I was able to work around things with non-inverted colour ordering and writing a special procedure specifically to calculate a sprite overlay for Miner Willy. With the design of the room I made it possible to free the missiles to utilise color3 with the 5th player for that purpose. You'll rarely ever see this room but in persuit of ensuring I did everything as best as possible I continued to make sure that all aspects of this classic were well represented in the final game. I've included the Rob Hubbard music from the A8's commercial release and the sound effects have been recreated to be accurate to the original Spectrum game. Developing the missing sound effects with Manic Miner was something I intended to come back to so that MM would be complete so I made sure to solve them whilst working on JSW. The original Spectrum beeper effects use short CPU hogging loops during runtime which resume again after a continuing pass of the game code to give that famous stuttered effect. With my version of the game being developed for single frame 50/60Hz, that wasn't an option so after contemplated a solution I considered making use of a POKEY timer to precisely cut the volume after a specified duration to accurately replicate the same effect. After discussions with both Avery and Lyren (many thanks to them) including integrating the keyboard IRQ into the procedure I had a working solution to implement. When I was initially mulling things over I wasn't sure whether it would be possible within the XLs stock 64Kb RAM as JSW is 3 times the size of MM with 60 rooms and with more developed procedures. JSW is also a free roaming game so I'd need to have additional buffers for the switch between the rooms. With the carefully written optimised interrupts, the RAM used for the 60 JSW rooms were within target and with everything else written there's unused RAM remaining from our usable 62kb even with the inclusion of the music. Many fixes have been implemented (or rather acknowledged and corrected) so the game is now presented more closely to how Matthew had originally intended. Firstly the official fixes released by Software Projects: There were four critical bugs with the released game which prevented completion. These were eventually addressed by Software Projects and these fixes have all been taken care of with this new A8 version. The most famous bug of all in JSW was the Attic bug, this was caused by an incorrect y-coordinate of an arrow definition, one of the bytes is an index into a table of screen buffer addresses and should always be an even number, but the value of the byte was 213 making the arrow procedure overwrite and corrupt several rooms making them impossible to navigate. The official fix corrected the arrow y-coordinate. One item on the far right in "Conservatory Roof" was also uncollectable as a nasty was blocking it, the official fix removed the nasty. In The Banyan Tree it was impossible to access the room above (A bit of tree) from the right-hand side which is nessasary as you need to access "Conservatory Roof" to collect the items via the ledge on the lower left in Under the Roof. the official fix replaced a wall tile with a floor allowing you to pass. There was an invisible item in "First Landing" which was also unreachable. As you need to collect all the items this meant that the game could never be completed. The official fix moved the item to The Hall where it still remained invisible. I've taken the liberty of giving the item there a definition of a shield for the A8. Other less obvious bugs: The conveyors in "West of Kitchen", "The Nightmare Room", "The Wine Cellar" and, "Tool Shed" were all actually corrupted. This was caused by a bug in the room rendering code. If a graphic data byte for one of the room tiles matched the attribute byte of the conveyor tile to be drawn, the Z80 CPIR instruction exits early leaving HL pointing at the wrong address and therefore rendering a corrupted conveyor. Additionally with "The Nightmare Room" the attribute byte for the conveyor was shifted by one byte back making it appear flashing green/cyan rather than the correct red definition. The conveyors are now presented in all of those rooms as originally intended by Matthew. Furthermore in "The Nightmare Room" with the byte shifted back it fixes the definition of the ramp which previously had a gap at the bottom. The same bug in the code causing the CPIR instruction to exit early also caused the nasties down the right hand side of "A bit of tree" to be corrupted. I decided to leave that one alone as it doesn't affect the game and I'd rather it stay the same not to make unessasary changes and keep the game as it's remembered. The item in the Swimming Pool was automatically collected as soon as Willy entered the room. This bug does not occur in the new A8 release. Contradictary to the scrolling title screen message that Willy must collect all the items before midnight, The original game ended abruptly at 1am regardless. This has been fixed in the new A8 release. Using the Spectrum map created by Pavros in 2012, I've created my own map with screenshots of all of the 60 rooms which is attached below. Key presses during gameplay: H - Toggle between music and sound effects (Your last status will also be remembered when starting a new game) A - Pause Attached is my initial v1.0 release which is PAL only for the moment, I'll get around to the nessasary ammendments for NTSC machines. You should be able to load from any device, I've attached an ATR with the executable autobooting on a DOS2.5 image. I hope you enjoy playing through the game. Tezz Edit: 17th November 2019: the original attachments have now been replaced with the final PAL, NTSC and hybrid compliant release. jsw2019.xex jsw2019.atr Edited November 17, 2019 by Tezz Final PAL/NTSC release attached 57 21 Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.