Jet Set Willy Room Specification ================================ 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 00 | R O O M | 1F +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ 60 | B L O C K S | 7F +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 80 | R O O M N A M E | 9F +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ A0 |A: background |A: floor |A: wall |A: nasty : BF +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ C0 : nasty |A: slope |A: conveyor | conv | slope |B|-| DF +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ E0 |-| object | exits |W|---| guardians | FF +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F Room layout ----------- 000-127 &00-&7F: Room blocks Each byte specifies four room blocks, starting at the top-lefthand corner of the screen. Each byte encodes the blocks as %aabbccdd encoding the blocks aa,bb,cc,dd from left to right. Each block can be 00, 01, 10 or 11 representing Background, Floor, Wall and Nasty. Room name --------- 128-159 &80-&9F: Room name in ASCII The original JSW engine indexes into the character table in ROM. Consequently characters<&20 will display the contents of &3C00-&3CFF, solid blocks in the default Spectrum ROM. Characters>&7F will read character matrices from the screen at &4000-&47FF. Some JSW engines allow extra characters. Character definitions --------------------- 160-168 &A0-&A8: Background attribute, bitmap - block 00 169-177 &A9-&B1: Floor attribute, bitmap - block 01 178-186 &B2-&BA: Wall attribute, bitmap - block 10 187-195 &BB-&C3: Nasty attribute, bitmap - block 11 196-204 &C4-&CC: Slope attribute, bitmap 205-213 &CD-&D5: Conveyor attribute, bitmap Slope & conveyor definitions ---------------------------- 214 &D6 : Conveyor direction: 0=left, 1=right, 2=off, 3=sticky 215-216 &D7-&D8: Conveyor start position = &5E00+row*32+col 217 &D9 : Conveyor length 218 &DA : Slope direction: 0=left, 1=right 219-220 &DB-&DC: Slope start position = &5E00+row*32+col 221 &DD : Slope length Other info ---------- 222 &DE : b2-b0: Border b7-b3: spare Geoff Mode: b7-b6: Number and type of sprites to use for Willy 00=lower four sprites 01=upper four sprites 10=all eight sprites, facing forward 11=all eight sprites, facing backwards jsw128: b7=1 : SuperJump ON for this room 223 &DF : spare Geoff Mode: lives sprite subpage jsw128: guardian class table 224 &E0 : spare Geoff Mode: lives sprite page Object ------ 225-232 &E1-&E8: Object bitmap Room exits ---------- 233 &E9 : Room left 234 &EA : Room right 235 &EB : Room up 236 &EC : Room down 237 &ED : spare Geoff Mode: Willy sprite page jsw128: if b7=1, Willy Sprite page 238-239 &EE-&EF: spare Geoff Mode: patch vector, called every tick if <>&0000 Guardians --------- 240-255 &F0-&FF: Guardian table, two bytes per guardian, terminated with &FF in the first byte. Version History --------------- 1.00 18-Mar-1985 Original version. 1.10 25-Nov-2002 Added Geoff Mode and jsw128.