Jump to content


Most Liked Content


#855 Willy in 3D

Posted by ZedEighty on 22 November 2015 - 12:28 PM

Hallo Everyone! 

 

I was directed here by Stuart Brady on the Spectrum 4 Ever Facebook group. I've been dabbling with 3D printed models and have designed a few based on characters from Matthew Smiths' classics. After I posted some pics on FB Stuart suggested that you folks here may also like to see what I've made:

 

2015-11-18%2000.26.37_e1_zpslr04sezx.jpg

 

2015-11-18%2000.06.29_e1_zpsvmhd7pdu.jpg

 

2015-11-19%2020.35.25_e1_zpsrf4bthex.jpg

 

2015-11-19%2001.45.42_e1_zpsmwamcsuv.jpg

 

2015-11-19%2001.53.00_e1_zps6jgiepk3.jpg

 

The models are printed in laser-sintered nylon, and are about 4 cm tall. The non-white model parts have been dyed. I designed the 3D models myself, and had them printed by Shapeways.

 

David :-)




#6997 A total rewrite of JSW in 48k using Matthews core code

Posted by Norman Sword on 07 September 2017 - 02:21 PM

I have resurrected this file By Derrick.P.Rowson. Which was on a crashed hard drive. 

 

This is Not finished, and never will be due to a catastrophic failure of the hard drive.

This is a few weeks work and alas there was no backup of the program.

 

This version does not have any of the new logic playing sprites.

E.g. sprites that followed willy around both vertically and horizontally, and were free roaming around the screen.

The logic had enough sense to move the sprite wherever it needed.

 

 

This version was a development towards having the full Manic Miner + Jet Set Willy in 48k

 

 

 

This game has inbuilt options. (password protected)

Attached Files




#6988 Manic Miner by Software Projects + BUG-BYTE

Posted by Norman Sword on 06 September 2017 - 02:52 PM

This is a modified version of Matthews Manic Miner. The core code has been edited extensively.

 

All data was left intact from #b000 onwards, but is modified at run time to swap between the Bug-byte version and the Software projects version of Manic Miner.

 

The list of changes is very long. Most of these changes are not evident, some are very evident.

 

keys

 

1) change the style of jumping and movement

 

after cheat invoke

 

4)  Immortality

3)  Platform rebuild - when invoked the "9" key rebuilds the platforms

 

Holding down the "9" key and pressing

1) move back a cavern 

2) move forward a cavern

 

 

 

Attached Files




#6857 Some Manic Miner Remake

Posted by Ligan on 06 August 2017 - 10:18 PM

I'm just gonna drop this here. It's an edited version of the original MM, like MM3 and MM5, the graphics and enemies haven't been modified. Attached File  MMHARD.z80   24.16KB   176 downloads

 

Cavern Names :

1. The Pyramid Entrance

2. The Melting Iceberg

3. The Collapsed Plains

4. The Dried-Up Aquifer

5. The Plumbing Store

6. The Cloning Facility

7. The VAT

8. United Kongdom Customs

9. The Germopharmacy

10. The Apple Orchard

11. Finding the Perfect Insurance

12. The Pronce's Palace

13. And Down the Trash Chute...

14. Space Game Tutorial Level

15. The Art Gallery

16. 

17. The Factory

18. Ameobological Site

19. Localizing Ray Deflector

20. The Pharaoh Gravestone




#5402 JSW As Manufacturer (probably) intended .. kind of...

Posted by IRF on 10 December 2016 - 12:06 AM

Looks good!

 

Regarding moving Esmerelda, that shouldn't pose any problems in this specific case, as it's the only instance of a guardian of the same class in the game.  :)

 

However, in general, if you're changing the parameters of guardians then you have to be careful as it can affect other guardians of the same class elsewhere within the mansion.  :ph34r:




#5299 The AND instruction

Posted by SkoolKid on 12 November 2016 - 03:01 PM

Is there any good reason (e.g. in terms of the effect on the Flags, perhaps?) why the original game engine uses an XOR command at #91FB, instead of an OR?

http://skoolkid.gith...y/asm/91BE.html

It's the instruction which merges a guardian's INK colour and BRIGHT value (Bits 0-2 and 6) with the PAPER colour (Bits 3-5) of its host cells.


No, there's particular reason to use XOR instead of OR here. As you've noted, there's no difference in the resulting value in the A register, and there's also no difference in the effect on the flags (which are not checked anyway).


#5007 Atari ST ( JSW )

Posted by SedricAndCharlie on 14 August 2016 - 10:22 AM

I wonder at what point Software Projects changed their mind and commissioned the Stephen McMaster MM/JSW games for the Amiga? Also this led me to reading about Boing! on the C64, the rejected Chris Lancaster conversion of JSW that was passed onto Bubble Bus Software and reworked to avoid copyright. Seems like Software Projects had a lot of odd stuff happening behind the scenes




#4947 Free space and code optimisation in "JSW"

Posted by IRF on 04 August 2016 - 10:35 AM

I'm probably missing the point here but why not just compress the entire code? I know people here are not a big fan of compression as it makes the code harder to read like with JSW2 for example but is that not because there is no decompressor available making editing a lot harder?

but what if you was the one doing all the compressing? might it be easier to edit the code then compress and decompress at will .. imagine the extra rooms and nasties you could cram in using the original JSW engine...

just a thought that's all


I suppose that's one option.

However, I've considered it a nice challenge to find 'efficiencies' in the existing code and therefore try and pack as much into the available space as possible, without compression.

And if nothing else, taking on the task has helped me get my head around how the Z80 machine code works. (I was clueless just a few months ago!!) :wacko:


#4751 JSW and MM Editors for other platforms

Posted by SedricAndCharlie on 02 July 2016 - 05:18 PM

I always wanted an editor either for the C64 version of JSWII (which for me was Jet Set Willy, as it was the one I grew up with) or for the Amiga version (which was the version I consoled myself with long after our C64 had died inside). To my knowledge neither exists, however




#4706 Free space and code optimisation in "JSW"

Posted by JohnElliott on 20 June 2016 - 06:41 PM

However, I've just had a look in JSWED, in the Game tab, and it looks like both of these boxes (as well as *all* of the other ones *except* for "Black Willy") *cannot* be either ticked or unticked - they are filled with blue, sort of. I'm not quite sure how to interpret this...

 

It means that at least one byte in a location touched by the patch is neither the original one from JSW, nor the modified one from the patch. So JSWED cannot safely apply or deapply the patch.




#4654 Complete List of bugs, quirks and anomalies

Posted by IRF on 13 June 2016 - 09:39 PM

Willy enters the 'toilet dash' as soon as he reaches the foot of the bed, regardless of whether he walks or jumps to reach that point.

His getting stuck on the bed is caused by the bed's Conveyor action 'cancelling out' Willy's automatic urge to run rightwards (there's an XOR command involved).  The fact that the 'P' key doesn't release him from this predicament is probably a 'bug' (although Danny might disagree!).

I guess the pillow is a Fire cell because there were no other cell types available when Matt Smith designed the room!




#4605 Complete List of bugs, quirks and anomalies

Posted by Metalmickey on 08 June 2016 - 12:15 AM

Firstly, apologies if a similar topic like this has already been created elsewhere feel free to delete it if there is a better one, i did have a look around and couldn't really find anything like it so i thought i'd create a thread where everyone can contribute to the list of all known oddities found in the game.

 

Secondly this is not a request for help in working around these bugs, more really a point of reference and maybe a source of information for newcomers and those who didn't play the game so much and don't already know about them all and one single place where they can be looked up

 

I thought i might start with the most obvious and well documented ones the first four of which prevent the game from being completed:

 

'The Attic' - The most famous and destructive of them all which of course is triggered when Willy ventures into the attic. A rogue arrow causes all manner of destruction around his house and ultimately renders the game unplayable.

 

'Conservatory Roof' which features the booby-trapped item, or maybe it's just a little too closely guarded by a 'fire-cell' 

 

'The Banyan Tree' with what looks like an out of place earth-cell right of the trunk meaning that Willy cannot make his way upwards to the Bit Of Tree above

 

'First Landing' with the phantom object which is neither seen nor collectible.

 

The rest of these are comparatively harmless or can be avoided

such as...

 

'The Nightmare Room' featuring the ugly green blob which, when i first encountered it i thought it was a fire-cell and so i spent many a long afternoon trying to work out how to collect the object without hitting it... turns out that it was just a conveyor belt ... who knew?

 

'Cuckoo's Nest' with the somewhat disorientated saw that doesn't change direction when it comes back the other way

 

'Under The Roof' with the phantom 'fire-cells' that prevent Willy from dropping out of the bottom of the screen to the right of the tree trunk, interestingly enough this one was even left in the 'Nightmare Edition' ... maybe Mr Smith deliberately left it there... who knows?

 

'The Beach' and 'The Roof' both feature a rope that Willy can jump from and reappear at the bottom of the screen

 

'Rescue Esmeralda' has, in all probability, an unintentional secret passage to 'Ballroom East' when jumping from the conveyor belt at the top right of the screen

 

'The Watchtower' also has one which takes Willy all the way to the 'Off Licence'

 

'The Swimming Pool' has an object which Willy needs to make no effort whatsoever to collect, he merely needs to enter the room and it's his

 

'The Orangery' Here Willy has been endowed with a magnetic head when jumping up and hitting the ledge from the stairs at the bottom left of the screen - not so much a bug, more of a quirk

Apparently i never knew this but there is also a bug which means that the conveyors in rooms such as the West of Kitchen and Tool Shed are not drawn properly .. and the one in the Wine Cellar is not supposed to be there at all.

 

Finally there's that 'halo' effect where a nasty as a 'bright' blue background following it around, this is evident in 'I'm sure I've Seen This Before', the Emergency Generator and On A Branch Over The Drive

 

There's probably a few that i have missed, feel free to contribute!




#3557 'Guardian Aura' Bug Fix and miscellaneous other patches

Posted by IRF on 02 April 2016 - 12:30 PM

Further Update: I have also fixed the problem described here:

http://jswmm.co.uk/t...bug-fix/?p=7914

 

Update: for an optimised solution, see this post on page 3 of this thread:
http://jswmm.co.uk/t...-fix/#entry5587

 

******

Here is a patch for the bug that is seen in Jet Set Willy in non-Black rooms, if a Guardian is present that has a different Brightness setting to the Air cells in that room. e.g. The Flying Pig in Emergency Generator.

The following 'new' code should be added - I suggest you locate it between #96f4 and #970b:

7e e6 38 c2 f1 91 dd 7e 01 e6 0f c6 38 e6 47 4f 7e e6 38 a9 4f c3 fd 91

Then the existing code at #91ee to #91fc should be edited as follows (this is based on the suggested starting address for the new code listed above):

c3 f4 96 dd 7e 01 e6 07 4f 7e e6 78 a9 4f 00

(The last byte is a NOPped out spare byte in the guardian-drawing routine.)

The above patch is an amalgamation of two routines in the original Jet Set Willy code (one of which was previously unused, except in Manic Miner). It eliminates the 'Guardian Halo/Shadow' bug in non-Black rooms, whilst allowing a wider range of guardian colours (Bright and non-Bright) in rooms with Black screens).

N.B. There is a simpler fix for the Guardian Halo/Shadow Bug that uses fewer bytes, but it would limit the colour palette of guardians throughout the game. i.e. with the simpler fix in place, all guardians on a given screen must be either Bright or non-Bright - even on Black screens where the Guardian Halo/Shadow Bug doesn't manifest itself. So for example, you would no longer see a Bright Red AND a non-Bright Red Monk in The Forgotten Abbey.

Note also that the way the alternative guardian-drawing routine (a remnant from the Manic Miner code) is implemented, avoids the following bug from occurring:

http://skoolkit.ca/d...#attributeCrash

So the above fix really provides the 'best of both worlds'!




#3137 Pokes for Fixing the Cell Graphics Bug in JSW

Posted by IRF on 25 February 2016 - 11:51 AM

I thought it would be good to have a standalone topic for easy reference, containing the Pokes in Hex (EDIT: and in Decimal) that fix the Cell Graphics Bug.  The credit for most of these goes to Stuart Brady (AKA Zub), although I had a bit of input into fixing the ramp/conveyor pixel patterns and conveyor attribute byte in The Nightmare Room.

 

I'm not sure if this should be in the 'Remakes' section of the forum or elsewhere; I can relocated it if necessary.  However, I thought this might be the best place as it is highly advisable for anyone developing a game/remake using the JSW game engine to apply these Pokes, to prevent their intended cell graphics from being corrupted in an erratic manner!

 

The Cell Graphics Bug fix (a generic patch to the game engine) is achieved using the following sixteen Pokes:

 

POKE 8d54, 06

POKE 8d55, 06

POKE 8d56, cd

POKE 8d57, bb

POKE 8d58, 93

POKE 8d59, 59

 

POKE 93bb, 11

POKE 93bc, 08

POKE 93bd, 00

POKE 93be, be

POKE 93bf, 23

POKE 93c0, c8

POKE 93c1, 19

POKE 93c2, 10

POKE 93c3, fa

POKE 93c4, c9

 

EDIT: The above, in decimal:

 

POKE 36180, 6

POKE 36181, 6

POKE 36182, 205

POKE 36183, 187

POKE 36184, 147

POKE 36185, 89

 

POKE 37819, 17

POKE 37820, 8

POKE 37821, 0

POKE 37822, 190

POKE 37823, 35

POKE 37824, 200

POKE 37825, 25

POKE 37826, 16

POKE 37827, 250

POKE 37828, 201

 

An additional fix, specific to The Nightmare Room (where we believe Matthew Smith's intended attribute byte for the conveyor was misplaced in the code, as the bottom pixel row of the ramp cells; this had a knock-on effect on the colour scheme and pixel pattern of the conveyor, even with the Cell Graphics Bug fix in place), can be achieved using the following five Pokes:

 

POKE ddcc, ff

POKE ddcd, 02

POKE ddce, a5

POKE ddcf, ff

POKE ddd0, 5a

 

EDIT: The above, in decimal:

 

POKE 56780, 255

POKE 56781, 2

POKE 56782, 165

POKE 56783, 255

POKE 56784, 90




#2 Welcome

Posted by Spider on 09 August 2014 - 06:17 PM

Welcome! :)

 

This site is not intended to take any traffic away from other existing sites, its simply a place we have to discuss the range JetSet Willy and Manic Miner games along with editing them to make more games. Its fair to say these games have stood the test of time very well even now.

 

Although primarily aimed at the Spectrum versions, we welcome contributions and thoughts on other platform variants of these games too, both standard and edited.

 

Feedback (both good and bad) and suggestions are always appreciated, simply start a new topic in this area (News/Feedback) if you have any suggestions.




#7749 A total rewrite of JSW in 48k using Matthews core code

Posted by Norman Sword on 26 October 2017 - 01:13 PM

In order to conserve bytes, could those 32 consecutive LDI commands be placed within a sub-loop? (With the shadow register A' used for the count.)

Or would doing that effectively undo the speed increase that you achieved when you wrote out the LDIR loops?

 

The ldir block move of data takes 22-T-states to move a single byte of data. When the LDIR is used to move say 4096 bytes of data it takes 4096*22 T-states (90112) T-states in total.

 

Using a long line of 32 LDI's changes the timing to around 16 T-states per byte. Note this is per byte.

 

There is an overhead of  dec "A" every 32 bytes and the JR every 32 bytes, this extra overhead is around 16-t-states.

But for every 32 bytes you have saved the difference between LDIR (22) and LDI (16) which is 6 T-states times 32. = 192 t-states

 

The saving per 32 bytes is 192 T-states (minus) the loop over head of 16 T-states. so a saving of 176 T-states for every move of 32 bytes.

 

Going back to the initial 4096 bytes moved with LDIR taking 90112 T-states. This is replaced by a repeating loop over the Block LDI code. In this case it will loop 128 times giving an overall saving of 128*176 T-states. or =22528 T-states . The call and the ret to the routine are insignificant compared to these figures. 

 

block move 32 bytes using LDIR =32*22 T-states=704 T-states

 

block move using a long line of LDI= 32*16+16 =528 T-states

 

 

LDIR of 4096 bytes=90112 T-states

LDI of 4096 byes =128*528 T-states =67584 T-states      a saving of 22528 T-states.

 

Enough time saving in the one loop to execute around another two  thousand op-codes

 

Since every game loop:-

 

It copies the master Att screen to the working Att screen

it copies the working Att screen to the real Att_screen

it copies the Master screen to the working screen

It copies the working screen to the real screen.

 

The game moves every loop an enormous amount of data.

 

The jagged finger code for screen copy that I use, incorporates the block move into its code.

 

Getting back to the original statement can I use some sort of sub loop?

Short answer is No .

We are dealing with tiny timing differences that accumulate into big differences due to the number of times they are executed

 

32LDI's in line was a compromise between speed and size. It also happens to be the amount of data in one raster line, so I settled on that figure just for that reason.

 

It is not unknown for games to use a vastly larger piece of code to try and improve the speed even more. But then we start to move into the realms of using Stack copy and the associated amount of memory that uses.

 

LDI is simple, easy to slot in, and does a major change in speed. 

 

 

( since the figures listed above do not tally, there are mistakes in the arithmetic. This should not distract from the overall message conveyed)

 

(edited yet again to get the figures on the arithmetic to match)




#6197 Free space and code optimisation in "JSW"

Posted by Spider on 17 April 2017 - 01:36 PM

You can use contended memory for storage as long as its not time critical. :) It just means those memory 'read/write' have to "wait their turn" as the ULA will have priority over the processor.

 

This mainly why things like high-speed loaders and screen 'effects' (special effects not LDIR'ing colour changes etc) usually live at an address > 32767

 

This is why things like the 'main loop' are not in contended memory. But you could use it for anything else really like object counters or routines. It may be worth trying the effects of it at < 32767 if in doubt and its easy to do.

 

Random note: Spin allows you to disable this, if 'testing' ensure its enabled so it behaves like a real machine. Tools > Options > Hardware > Emulation > 'Memory Contention' , I do not see this option in Spectaculator but I did not search too closely.

 

The effects can differ I think between a 48K (or 16K!) machine and one of the 128's too, but I'm not 100% sure on this fact.




#5374 [File] Jet Set Willy: The Nightmare Edition

Posted by Spider on 04 December 2016 - 01:48 PM

I never actually saw the youtube video :blush: I was referring (my post the other day) to the text and things present. Just watched the video now I see what you mean. :)




#4995 Free space and code optimisation in "JSW"

Posted by Spider on 10 August 2016 - 12:44 PM

any idea why when compressed down to 18K you couldn't get it to work?

This is JSW1. It does work. But you have to uncompress it before running the code. The compression in this case is just to reduce the 'saved' file size down. :)




#4636 Free space and code optimisation in "JSW"

Posted by JohnElliott on 12 June 2016 - 07:56 PM

From the start of the source file:

; Adjacent Ropes patch (second try)
;
; Change all IX+9 references to IX+6
; Change all IX+11 (bit 0) references to IX+0 (bit 5)
;