selfdelmer Posted September 26, 2025 Report Share Posted September 26, 2025 (edited) Please see the later replies below for a corrected version of the PDF Hi All, I've written a pdf that attempts to describe the original ZX Spectrum's Manic Miner movement and collision routines as written by Sir Matthew Smith. I hope this will be useful for those brave coders that attempt to recreate Willy's movement. If the pseudo code shown is implemented correctly, it should result in perfect Willy movement, including conveyor movement logic. This is the approach I took to when writing my implementation for Game Maker 2 and I think it worked quite well. A shout out goes to the excellent Skoolkit.ca manic miner page here that describes each assembly code step. A windows version of my Game Maker 2 version can be found here Any questions or corrections, please let me know. Regards, SDelmer. MM Movement and collision detection v01.pdf Edited October 2, 2025 by selfdelmer SymbolShift 1 Quote Link to comment Share on other sites More sharing options...
selfdelmer Posted September 27, 2025 Author Report Share Posted September 27, 2025 Please see a new version below, that includes a few grammatical corrections. MM movement and collision detection v02.pdf SymbolShift, JianYang and Jet Set Willie 2 1 Quote Link to comment Share on other sites More sharing options...
SymbolShift Posted October 1, 2025 Report Share Posted October 1, 2025 (edited) I think I've found an error in function 4... If AI=1, jump to 8 This seems to say, If Willy is jumping then Willy has landed, which makes no sense. I've looked at Skoolkit, and wonder if it should jump to 12 instead? (35670 - JP Z,35971) Edited October 1, 2025 by SymbolShift Quote Link to comment Share on other sites More sharing options...
SymbolShift Posted October 1, 2025 Report Share Posted October 1, 2025 In function 4, If the above line is set as 'jump to 8', then the jump stalls once JAC=13, and Willy falls the remainder of the jump. However, if it is set to 'jump to 12' then the jumps complete, but landing on any platforms is ignored. Can't seem to make it happy 😁 jetsetdanny 1 Quote Link to comment Share on other sites More sharing options...
SymbolShift Posted October 2, 2025 Report Share Posted October 2, 2025 Think I got this finally working. Had to change to 'If AI=1, jump to 12'. Willy was not landing on platforms because my cell detection was lagging, but got that fixed now 👍 Quote Link to comment Share on other sites More sharing options...
selfdelmer Posted October 2, 2025 Author Report Share Posted October 2, 2025 Great, thanks for checking. I'll check also, and update if required. SymbolShift 1 Quote Link to comment Share on other sites More sharing options...
selfdelmer Posted October 2, 2025 Author Report Share Posted October 2, 2025 Yes, jump to 8 was incorrect, it should have been jump to 12 as you suggested (well spotted), here's an updated version. MM movement and collision detection v03.pdf jetsetdanny and SymbolShift 1 1 Quote Link to comment Share on other sites More sharing options...
SymbolShift Posted October 7, 2025 Report Share Posted October 7, 2025 This has been super helpful, and I've now been able to replicate the original MM mechanics. I really appreciate the time you took to put this doc together! Regarding the movement mechanics of MM (and JSW), what are the best mechanics to use for a new game based on the originals? MM had symmetrical movement mechanics, but had issues with entering wall blocks in certain jump situations. JSW had non-symmetrical movement mechanics... moving right behaved like MM, but moving left disabled some wall detection to allow Willy to catch on the edge of ledges. The left movement avoided most of the 'entering wall block' situations (of the right movement), but the side-effect was he could walk through head height wall blocks. So pro's and con's existed for each movement direction. It appears that Matthew Smith's solution was to simply try and avoid those situations, rather than rewrite the movement mechanics. In 2018, I know IRF+NS rewrote the movement code to overcome most of these issues, but there is no skoolkit breakdown of those routines to assist. Should I use the original mechanics (warts and all) to be faithful to the originals? MM mechanics for a MM clone, and JSW mechanics for a JSW clone, or new mechanics altogether? My concern is that someone unfamiliar with the original mechanics quirks, could play my game and interpret them as bad programming. Maybe I just need to avoid those situations like MS did? Thanks. Quote Link to comment Share on other sites More sharing options...
selfdelmer Posted October 8, 2025 Author Report Share Posted October 8, 2025 Hi SymbolShift, Glad you found the document helpful, I hope others will also. My personal opinion would be to use the original mechanics warts and all. For me, if the movement is different it just feels like a totally different game. That isn't always a bad thing and if you get close to the original movement and also eradicate all bugs, then great. Regards. SymbolShift, JianYang and jetsetdanny 3 Quote Link to comment Share on other sites More sharing options...
Norman Sword Posted October 8, 2025 Report Share Posted October 8, 2025 See "altered reality" for corrected Willy movement. And it does not feel strange. Jet Set Willie, jetsetdanny and SymbolShift 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.