|Main index||Jet Set Willy II: Index||About author|
Steve Wetherill contacted the author in February 2006:
Hello — I came across your JSW2 game pages today, quite a nostalgia trip. The Jet Set Willy 2 game originated from the Amstrad CPC version of JSW, which I developed with Derrick Rowson while @ Software Projects all those years ago. JSW was the second game I coded professionally, having done the Manic Miner port to CPC again with Derrick previously. Derrick and I added all those additional screens (when compared to the original JSW) mainly because we were having a blast doing it. I left Software Projects to go and work at Odin Computer Graphics, and Derrick ported the Amstrad code back to the Spectrum after I left, whereupon it was released as JSW2.
Thanks for the trip down memory lane — certainly a blast from the past!
Steve Wetherill, who is contactable via stevewetherill.com, answered a question about the camel in ]:
It is a large version of a camel sprite that appears in some of the lower rooms. The camel, and various other enemies, were taken from the demo that I sent to Software Projects when I was applying for the job there the year before. Programmer art, indeed. So really, it was just a variation on Hero Worship, which is another large sprite.
and another question about why Willy can’t be played in the Oh $#!+!The Central Cavern!:
As I recall, the idea we had was that Willy was in some sort of recurring nightmare, which is why the Central Cavern is in there. I believe we considered making it playable, but there was some issue with the way the data worked that made it a bit tricky and then we were under a lot of pressure to finish the game. It was meant to be just a fun little bonus — I am not even certain that the powers that be @ Software Projects knew about the ending.
I will take a look at the map again and see what other notes I can share. One thing is that on the Amstrad, the Cartography room, as well as being a fun little screen in the game, was actually used by Derrick and I as a debug mode. We have a cheat code, that went: “EMMRAIDNAPRRRTT” (which is actually the initials to the words in a nursery rhyme), followed by either the ESC key or perhaps another key or two. [Editor’s note: the obvious question was asked: “Well, it was Derrick’s notion. But it is a kids counting rhyme, like: Eeny Meeny Macka Racka Air I Domi Nacka Alla Packa Rumpa Racka Rum Tum Tush. Or something like that. Quite possible that I got it wrong, it being nonsense (to me at least).”] This enabled a cheat which would take you to the cartography room at any time upon the press of a key. Once there, instead of controlling Willy, you had a cursor and you could select which room to go to (all rooms were filled in). You would use the cursor keys (or joystick?) to select the room, which would take you to the room, and once there you again used the cursor to move Willy around the room to set his starting location. It is in the shipping game, and it was funny to see various hacks on the CPC that added primitive room select modes, when all the time a really cool one was already in the game! I am guessing that it is not in the Spectrum game, but who knows … :)
before sending lots of notes:
Here are some notes. Before I get into this, I want to make it clear that none of our additions for “JSW2” would have been possible without the original brilliant work by Matthew Smith, so nothing here is intended to detract from his efforts.
So here goes, some notes as per your map sections. Clearly, many of the screens were added to fill “gaps” in the original. I think we needed this so that the cartography room would make sense, so it may be that the gap filling was a later rather than earlier addition to the game, though other screens may have been added for different reasons. It was quite easy to physically make the new maps, since Derrick had written a cool map editor.
1. The Sewers.
This whole section is “inspired” by Holt Road. Holt Road was the street in Birkenhead where I lived while working for Software Projects. [Editor’s note: streetmap.co.uk; multimap.com; pictures of Matthew Smith et al in the terraced house in Holt Road.] I shared the place with Stuart Fotheringham (SP artist), and Marc Dawson (now Marc Wilding — SP C64 coder) [Editor’s note: believed to be contactable via Acclaim Studios Manchester] was a frequent guest. I think the reason these screens are so sewer-centric was due to an upsetting blocked drain incident that occurred when we were living there…
As you can see, Holt Road is one of the screens — those blocks on the lower right are two chairs and a sofa, in case it wasn’t obvious. The three screens to the right constitute the living room, a bedroom, and Downstairs. It doesn’t really make any sense, though the barrels in the living room may mean something to somebody. Holt Road was a rather steep hill, hence the Mega Hill. The downstairs has the water element probably due to aforementioned drain incident.
The sewer arches also bear some resemblance to the train station where I used to catch the train from Birkenhead to Liverpool (to the SP office) every day.
2. The West Map
The changes here were to do with the boat sailing to a desert island. There was some rumor that the original JSW game did something like that so we thought we’d add it.
I think the cheat screen was originally added to detect possible screen change cheat pokes, I don’t recall if we really used it though. The idea was if you cheated you could get to that screen, and so if you had been to that screen, then you obviously cheated. Something like that.
I am not sure if the Deserted Isle screen behaves the same as the Amstrad version; there, the middle tree collapses into the ground when the timer counts down AFAIK. (I really should fire up the game and play it I guess … this is all from memory). [Editor’s note: it is the same.]
3. Central Map
Trip Switch was for the boat and island sequence. Pretty standard room.
Willy's lookout is just a connecting room, note however that there are some birds in there. Those are more sprites from the demo I sent to Software Projects. Also, the birds represent Wonga; Wonga was the coding alter ego of Marc Wilding, and also the name of his budgie. So those birds represent Wonga the Budgie.
Wonga'S Spillage Tray is now obviously the bottom of Wonga’s bird cage, and so the stuff at the bottom is obviously, budgie spillage.
Continuing the theme, there is Willy's Bird Bath.
Seedy Hole is another reference to Holt Road (which is where Wonga, the budgie, resided), and so this was Wonga’s bird seed.
The Zoo is what some people called the programming offices @ Software Projects. There’s my camel sprite in there.
Decapitare was definitely Derrick’s idea. We have a few screens that use the counterbalanced “things on pulleys”.
Pit Gear On, In T' Rat Hole and Down T' Pit were references to Manic Miner, but also reflected the facts that i) I am from Yorkshire (so I was “OK” with the dialect aspect), and ii) I worked for a time for the “National Coal Board”, and in fact did my “Basic Underground Training” at various “Pits” around Barnsley, S. Yorks. Rat Hole is what some of the miners would call the mines. I was tempted to write “Call T' Mines” there, oh boy.
We liked the idea of a deep well down there, hence the repeating Well screen. Derrick wanted to call the bottom one Dinking Vater ?.
Hero Worship and ] are variations on a theme. We figured that if there can be a giant elephant, there can be other loony screens just there.
Macaroni Ted was indeed a reference to Technician Ted. That game came out when we were finishing JSW CPC — it bore an uncanny resemblance to Manic Miner of course; it did have cool music though.
Dumb Waiter was just a pun on the waiter sprites and the lifts that are in there.
In the Belfry, we went ahead and placed a hunchback sprite. Seemed in-keeping.
The Rocket Room facilitates the journey to the USS Enterprise section.
4. Space Map
This is (hopefully) obviously the Starship Enterprise, kinda.
There are various screens in here that explore Star Trek themes. We took some of the high level things that occur on every Star Trek episode, lifts, phasers, teleports, the star drive etc and built rooms around them. And Tribbles. These rooms feature various sprites pulled from my SP demo plus a couple of new ones.
I’ve mentioned the extended role of the Cartography Room previously, on the CPC version.
Foot Room is an homage to the ending of Manic Miner, when you lose all your lives.
5. Teleport Zone.
Well, this section is a planet, such as might be seen on a Star Trek episode.
Loony Jet Set was a nod to Jet Pac.
Eggoids was a nod to Lunar Jet Man (one of my all-time favorite games, bloody difficult though).
In the new screens contained in the Space Map and the Teleport Zones, we were really having fun pushing the combinations of block types in (hopefully) interesting ways, along with a few new ideas. I think Matthew Smith’s original screens were generally much more aesthetically pleasing (although I should note that the new screens were designed for the Amstrad and I am not sure the colors came across to the Spectrum version perfectly), however, neither Derrick nor myself are really artists, and art resources @ SP were scant, so we made the most of what we had. Really, this extra stuff was meant to be an interesting bonus, it was not meant to replace the original game, just to give players some new stuff to play with. At no time did we (coders) imagine this as a sequel in any way. We were just having fun with it, as countless others have done since (in terms of mods, etc). Effectively, were were the first JSW modders. :) Having said that, as I recall, we basically rewrote the game from scratch for the Amstrad (same with Manic Miner). We did have access to the original source code at a certain point, but I believe that we created Manic Miner CPC without the original source (in fact, Derrick had written a very nifty disassembler/hex editor and we used that to figure out the original game). When it came time to do JSW, I think initially we still did not have any source code, so we set out to disassemble that game too. I am pretty sure that this is correct, because it took forever to get the stairs (ramps) to work the same way as the Spectrum version. That sounds goofy now, since both Derrick and I were employed full time by Software Projects; I don’t really recall the specific reasoning. In any case, it was this new codebase that was ported back to the Spectrum for JSW2.
I think the colors are not as solid (attribute clash) on JSW2 vs JSW due to the different screen update systems. Matthew’s original code uses a full “off-screen” copy of both the screen pixel bits, and the attribute color bytes. Each frame is composed in these hidden buffers, and then once all updates are done, the screen is copied to the visible screen. In fact, there may be two copies of the screens sitting around in memory. When it came time to fit the expanded CPC game into memory on the smaller Spectrum, there would not have been room to do this (plus, the CPC codebase does not use that method either — it uses a raster-avoiding method). So, the result is that the attributes for moving objects can tend to fight with each other sometimes. It is only a minor detail of trivia, but worth noting.
Incidentally, in terms of any differences in spelling of room names between the original game/CPC version to the Speccy JSW2, that may be because the room names are compressed on the Spectrum JSW2 (and not on the CPC). This was presumably to save space (and fit into 48K); accordingly, there was probably a “re-typing” of names at some point, possibly leading to errors. [Editor’s note: explaining both Wonga'S Spillage Tray and We must peform a Quirkafleeg.]
Also see the additional comment by Steve Wetherill on 25th October 2010.
On 24th October 2010 Derrick P. Rowson wrote to the author.
Since you seem to to be in a better position than many people to appreciate this information, I will divulge answers that have perplexed you.
In the game JSW2 you ask the question:— why are some blocks missing in the Cartography Room?
… I checked the source code to see if the data was corrupt. IT IS NOT. The rooms are not listed. I checked the assembler part and verified that it was not a result of overflow, the rooms in question were allocated numbers that if doubled would overflow quite easily. The code that handles that part will not overflow. So I checked out the one part that you do not have any access to and that is my mind.
You are correct in assuming that the Secret passage is missing because of its inherent ambiguity about its position, another reason it is missing is because it’s meant to be secret. [Editor’s note: I should have thought of that.]
Without A Limb never counted as a real room, it contains no data and is only accessed by a death jump.
The lower rooms Well and Dinking Vater ? were missed out for the exact reason you mentioned. [Editor’s note: because they are below the bottom of the playable screen of the Cartography Room.]
But the above is NOT the reason WHY… The purpose of the Cartography Room is a means to edit the game as it was being written. From the point of game development there was no point in being able to go to these rooms and play them. They all had only one access point. And once the room had been accessed from another room, there was no need to access them again. In all other rooms there was a need to access and play from any point and the editor Cartography Room gave us that access.
It boils down to there being no reason to play them once the data for the room is written. Unlike all other rooms that need to be played from various starting positions. I coded in the blocks appearing routine as a puzzle to the end user.
I hope you find this information useful.
A subsequent email added a little more:
I am amazed at your speed of completion of this game. Steve and I played every room to check if they were possible to play. So we have played all the rooms and know that some can be a bit tricky. For example the Garden which is a simple room. It took me a long time to perfect the sequence of jumps needed to pass through it. To finish this game using the Cartography Room we used thousands of lives. And I personally thought no one would finish the game without some form of cheating.
Anyway best regards and a personal thank you for the information you have passed on to me. I now know more about some aspects of this game than I did when I wrote it.
An emulator, with saving of the state of the emulated machine, is indeed cheating. And finally:
The bulk of what Steve says is true … with this one exception:— We never had access to any source code from Mathew for any of his programs at any time, whether before, during or after the game was written.
In response to Derrick’s correction above, Steve Wetherill sent the following on 25th October 2010:
With regard to Derrick’s comment on having access to source code, I can believe that it was never provided. Re-reading my comments, it might appear that I am saying that certain things (i.e., the stairs) required the original source code. That is not what I was saying — they were just hard to get perfect without the source.
On 10th August 2013 Derrick P. Rowson again wrote to the author.
Errors, omissions and corrections.
1) The Sewers.
The Sewers were not inspired by Holt Road. Their inspiration was just Victorian sewers. The layout of the screens shows that above the cold store is the swimming pool. I concluded that in order to empty the pool would need a drainage system going to the river. e.g. the sewage system. The first few screen were already drawn by me before Steve saw them. He then mentioned they reminded him of HOLT ROAD and thus the addition of Holt road. Since I had never visited Holt road and was not actually aware of the train station nearby, I can conclusively state that Holt road was not the inspiration.
2) The West Map.
The primary aim of cheat was to Physically separate the bow from the deserted Isle. I concluded that since the only way to access this screen would be to cheat, the name should follow that logic.
3) Central Map.
Dumb waiter is a reference to Wacky waiters by Eugene Evans.
Well. the (room)name repeats 3 times to say "well, well, well" before your pending demise. Dinking Vater? was a reflection on the changing environment of Willy's house. It seemed to be appropriate to me to have a pseudo german influence, to reflect great engineering, but with no real purpose.
4) Space map.
The cartography room was a result of having to test each and every room repeatedly. At the start of development, the game was played to get to a room to test. Later on the the start room would be changed to be nearer to where I wanted to be. I decided one day whilst on my own yet again to restructure a whole section of code. This change starts with the activation of special event code 7. Which was activated by typing in EMMRAIDNAPRRRTT and pressing Escape. That brought up the cartography room, which allowed the start room and position to be changed at any time. People who have disassembled the game have commented that special event code 7 is not used. As stated above it was reserved for the cheat mode.
4a) the spectrum version of this game does not have the facility built into the game, memory constraints meant it needed to be deleted. (extra copy buffers where needed)
4b) When I rewrote the various Amstrad versions of the game, I added an additional two letters to the cheat code. Making the OFFICIAL cheat code to be "HIEMMRAIDNAPRRRTT". This cheat code works on both JSW1 and JSW2 on the Amstrad.
4c) Hackers and crackers have destroyed the way the cartography room works on most of the versions I have seen recently. By not understanding what the data for the cartography does, they have allowed this data to be corrupted or even removed. This means on all the Amstrad versions I have played on emulators the cheat code cannot find and draw the proper rooms. (shame)
[Editor’s note: in reply to the obvious question, “The empty heading was indicative that I had looked at that heading and was not prepared to say anything. e.g. I was indicating I had not missed it out.”]
5 Teleport zone.
Other comments. At the outset of writing JSW I had decided to change its layout in order to fix the known bugs in the mapping of the game. What I find curious after twenty five years is the assumption that the game was expanded because of the supposed extra memory of the Amstrad compared to the Spectrum. Here is why
Amstrad Spectrum Available RAM 64k 48k Screen usage 16k 7k Graphics 8*8 pixels (2bit planes) 8*8 pixels + attribute byte Graphic cell usage 256*16 = 4k 256*9=2.25k Sprites 16*16 (2 bit planes) 16*16 (1 bit plane) Sprite usage 89*32= 2.7k 9*16=1.4k Before code or room data is written available memory is 64k-(16k+4k+2.7K)
(please note figures and calculations are very rough and not accurate. their purpose is a guide to typical memory usage.)
The above shows that the Amstrad does not have vast memory reserves to extend the game. The reason it could be expanded was my decision to compress data from the outset. And that is why it was possible for me to conclude that it would be feasible to move back from the Amstrad to the spectrum with this game. In the end I had about 3 bytes of memory left, and that was after all the changes in logic and mapping that needed to be done. In fact most of the game running data is stored on the screen under the lower black portions of the screen.
"ATTRIBUTE CLASH" ?????
spellllling errrrors The room names along with nearly all the code was extensively modified. The resulting source code became very difficult to read due to the amount on compression. I have copied some of the room names out from one of my assembly source code listings to give an example.07052 db 8,"Back",15,160 07062 db 11,"Back doo",242 07071 db 11,17,71,50 07082 db 10,2,10,160 07106 db 5,"Above ",1,2,10,160 07197 db 10,"macaroni Te","d"+128 07306 db 9,16,"lookou",244 07392 db 6,"wonga",39,"S Spillage Tra",249 07402 db 7,16,"bird bat",232 07571 db 9,"ship",39,"s Compute","r"+128
The listing I am copying this from runs to 9825 lines of code and data. Which printed out to 187 pages of text. So yes I made a typing mistake.
Following some discussion no longer on this page, on 22th August 2013 Derrick P. Rowson wrote again.
The screen on JSW2 is updated from a copy screen just as in JSW1.
In JSW1 the screen has two copy-screens. The first contains only the graphics which it copies to the copy-screen2. Then copy-screen2 has the ropes/sprites etc. drawn onto it. Finally copy-screen2 is copied to the physical screen.
In JSW2 there is one copy-screen. All updates are performed on the copy-screen and then copied to the physical screen. The updates on the copy-screen are done using xor to remove the rope/ sprites and xor to replace the new rope/sprites on the copy-screen. Once all updates have taken place, the copy-screen is copied to the physical screen in exactly the same manor as Mathew and with exactly the same result regarding colour updates.
Also comment dated 24th August 2013 on Steve Wetherill’s blog, and the following day’s comment about the music of the Amstrad version.
The author thanks Steve Wetherill and Derrick P. Rowson for these comments. Of course, comment from Matthew Smith would be greatly welcomed.
There are more room-specific comments in the recommended route.
Julian D. A. Wiseman
February 2006, and subsequent correspondence
|Main index||Top||About author|