> DefRoom 1.22  25-May-94 V1.00  02-Aug-97 V1.20 (: 2W&86: Obj% &301,Buf% &100,ctrl% 20,data% 127,Sprite% 7,Icon% 31:X%=ctrl%:Y%=X%256 <-Room0%=&8000:rom0%=4:rom1%=5:Room1%=&8000 F3 Room1%=FNalloc(&4000):IFRoom1%=0:Room1%=&8000 P2OSGBPB=&FFD1:in%=0:out%=0:rm%=-1:blk%=0:*FX4,1 Zasm: err:end: d?3"Jet Set Willy Room Editor"''4"(C)1989-97 J.G.Harston" n''':Help x" 23;9,7;0;0;0; 23;4,38;0;0;0; $ 23;10,&60;0;0;0;23;7,31;0;0;0;  23,136,255,0,0,0,0,0,0,0 , 23,137,128,128,128,128,128,128,128,128 23,138,16,0,16,0,16,0,16,0 , 23,139,255,128,128,128,128,128,128,128 %A%=016:32,A%);""::40,"") 4x%=0:y%=0:Blk: err:end: A%=(200):clr1 menu:end: : 1ݤalloc(L%):A%-1:-A%-512>L%:A%L%:=A% =0 : #ݤerr:0,22);::CloseAll:=-1 : CloseAll in%:A%=in%:in%=0:#A% out%:A%=out%:out%=0:#A% " ,: 6end:*FX4 @: J: T4ݤmenu:y%>16:x%=8:y%>21:x%=21:y%=23:y%=0:x%=0 ^.x%,y%);:A$=:y%<17:A$=13:x%=0:A$=138 hA$>135 A$<140:Move:=0 rBy%<16:"1234",A$):33,blk%*2+1)" "9" ";:blk%=A$-1:Blk:=0 |"y%<16:" 0"+135,A$):Put:=0 y%=16:Name:=0 y%>16 y%<22:Exit:=0 y%=22:Border:=0 A$>"_":A$=(A$-32) "EDOQHLSR*",A$)=0:=0 % IF A$="M" Copy to another room? & IF A$="W" Swap with another room  IF A$="C" PROCConvs  IF A$="G" PROCGuardian A$="E":EdChar:=0 A$="O":AddObj:=0 A$="D":DelObj:=0 A$="R":Room:=0 Win:A$="Q":= A$="H"::Help:A%= A$="*":Oscli:=0 &A$="L":Load:=0 0A$="S":Save :12,26:Info:=0 D: N*Blk:33,blk%*2+1)">"9"<"x%,y%);: X: b/Put:Ad%=Buf%+x%4+y%*8:By%=3*4^(3-(x%3)) lC?Ad%=(?Ad% By%)(blk%*By%3):128+blk%:x%=(x%+1)31:x%=0:13 v : 8Move:y%>17 y%<22:6,y%)d(Buf%?(y%-18+233),3); mv:xt%=-1:  mv:A$=137:x%=(x%+1)31: A$=136:x%=(x%-1)31: A$=138:y%=y%+1-(y%=16): A$=139:y%=(y%-1)(y%>0):  : Name:A%=A$:rm%<0: KA%>31 A%<128:Buf%?(x%+128)=A%:A%-12*(A%=127):x%=(x%+1)31:x%=0:13  : WRoom:6,22)3;0,22)"Room= ";:8,8,8:""A$:A$="":6,21);d(rm%,3);x%,y%);:  PutR:rm%=A$:GetR 8copy(&A3FF+&10000*rom1%,Obj%,513):Disp:x%=0:y%=0:  : *Disp:rm%<0: 4A%=07:23,128+A%:B%=07 >(Buf%?(161+A%*9+B%-1*(A%=7)):::30 H;A%=0127:B%=Buf%?A%:C%=03:128+(B%64):B%=(B%*4)&FF R:(A%7)=7: \:PrN(Buf%+128,):A%=01 f@slope(A%,Buf%?(214+4*A%),Buf%!(215+4*A%),Buf%?(217+4*A%)): p>A%=240:Buf%?A%<>255:Sprite(Buf%?A%,Buf%?(A%+1)):A%=A%+2 z.Buf%?A%=255 A%>255:Objects:Info:Chars !19,0,c(Buf%?160 8),0,0,0: ݤc(A%)=(A%2+4*(A%1))7 "ݤd(A%,N%)=" "+A%,N%) >ݤo0(A%,N%)=½(48+A%64)+(48+(A%&38)8)+(48+(A%7)),N%) Bݤfile(A%,A$):$data%=A$:?X%=data%:X%?1=data%256:=(&FFDD)&FF : *slope(Type%,Dir%,Ad%,Num%):Num%<1: "sx%=Ad%31:sy%=(Ad%&1E0)32: Dsx%,sy%);(133-A%);:sx%=sx%+2*(Dir%(1-Type%))-1:sy%=sy%-Type% 2Num%=Num%-1:Num%<1 sx%>31 sx%<0 sy%<0: : .PrN(A%,F%):C%=031:B%=A%?C%:B%>32:F%= 1F%:B%>31 B%<128:B%-12*(B%=127) F%:32 <1 >39:C%=32 :>6:(40-);  $: .8ݤr(R%):R%=R%255:R%<64:=Room0%+256*R%+rom0%*&10000 8,R%<128:=Room1%+256*(R%-64)+rom1%*&10000 B =&7F00 L: VGetR:rm%<0: `copy(r(rm%),Buf%,256): jPutR:rm%<0: tcopy(Buf%,r(rm%),256): ~: copy(Src%,Dst%,Len%) >!&70=Src%:!&72=Dst%:!&74=Len%:?&76=Src%&10000+Dst%&10000  mc%: : asm:mc%50:a%=01 AP%=mc%:[OPT a%*2:\ &70/1=>src, &72/3=>dst, &74/5=len, &76=rom "LDA &F4:PHA:LDA &76:JSR SetRom  LDY #0:LDA &75:BEQ ZeroPages  .loop (LDA (&70),Y:STA (&72),Y:INY:BNE loop $INC &71:INC &73:DEC &75:BNE loop .ZeroPages LDA &74:BEQ ZeroBytes  .ZeroPageLp LDA (&70),Y:STA (&72),Y:INY DEC &74:BNE ZeroPageLp (.ZeroBytes 2PLA < .SetRom FSTA &F4:STA &FE30:RTS P]: Z: d(Objects:ObjN%=0: A%=?Obj%+1 256 n`((Obj%?A%)63)=rm%:(Obj%?(A%+256))31,Obj%?(A%+256)32-8*(Obj%?A%>127))"";:ObjN%=ObjN%+1 x: : BSprite(Num%,Psn%):copy(&A000+8*Num%+rom1%*&10000,Sprite%,8) ,Sprite%?2=Psn%:Num%=?Sprite%7:Num%=0: &Num%=3:z%=010:16,z%)138;:: Num%=4:: Arrows @ic%=(((Sprite%?1 Sprite%?0) Sprite%?2)&E0)+256*Sprite%?5 "Sprite%?2 31,Sprite%?316); $copy(ic%,Icon%+&10000*rom1%,32) 6:33,C%*2);"BkGnd:Wall: Floor:Nasty:Slope:Conv.:******Objct:",C%*6+1,6);34,C%*2+1);(128+C%);:C%<6:9;9;o0(Buf%?(160+C%*9),3); @: J: TEExit:A$=13:xt%>-1:Buf%?(y%-18+233)=xt%:xt%=-1:PrExit(y%-18) ^A$=13:y%=y%+1: hA$<"0" A$>"9": r8xt%=(A$+10*(xt%(xt%>-1)))255:6,y%);d(xt%,3);: |: 0Border:A$=13:xt%>-1:Buf%?222=xt%:xt%=-1 A$=13:y%=0:x%=0: A$<"0" A$>"9": 9xt%=(A$+10*(xt%(xt%>-1)))255:19,y%);d(xt%,3);: : !AddObj:?Obj%=0 rm%>127: RA%=?Obj%:Obj%?A%=rm%+16*(y%8):Obj%?(A%+256)=x%+32*y%:?Obj%=A%-1:ObjN%=ObjN%+1 8copy(Obj%,&A3FF+&10000*rom1%,513):"";8;:InfoB: : -DelObj:?Obj%=255 rm%>127 ObjN%=0:  Num%=?Obj%: A%=Num%+1 256 ((Obj%?A%)63)=rm%:((Obj%?A%)128)=(y%8)*16:Obj%?(A%+256)=((x%+32*y%)255):Obj%?A%=Obj%?(?Obj%+1):Obj%?(A%+256)=Obj%?(?Obj%+257):?Obj%=?Obj%+1:ObjN%=ObjN%-1:32,8 1:copy(Obj%,&A3FF+&10000*rom1%,513):InfoB: : *Help:"JSW Room editor instructions" 8'"1,2,3,4 Select room blocks"'"R : Select new room" &'"H : Help C : Conveyors/Slopes" 0"S : Save L : Load" : D: Nclr:0,23);79;:30: Xclr1:0,23);39;:30: b!Win:28,0,24,39,18,31,0,5: l: v3Load:"Rooms file to load: "f$:f$<>"":LoadR 213:"Objects file to load: "f$:f$<>"":LoadO 12,26:Disp: "LoadR:"Load rooms to : "st% >"Link room exits? "lk$:lk$,1)="y" lk$,1)="Y":lk$="Y" "PutR:in%=(f$):in%=0:ErrO: "?X%=in%:A%=4:r%=st%::13;r%; 6X%!1=Buf%:X%!5=256: OSGBPB:copy(Buf%,r(r%),256) lk$="Y":LinkRooms &r%=r%+1:#in%:#in%:in%=0:GetR: *LinkRooms:!data%=Buf%!233:lk%=0 3 ddata%?lk%<>r%:copy(r(data%?lk%),Buf%,256):Buf%?(233+(lk%1))=r%:copy(Buf%,r(data%?lk%),256) : $LoadO:in%=(f$):in%=0:ErrO: ,?X%=in%:A%=4:X%!1=Obj%:X%!5=513: OSGBPB  4#in%:in%=0:copy(Obj%,&A3FF+&10000*rom1%,513): :  3Save:"Rooms file to save: "f$:f$<>"":SaveR *213:"Objects file to save: "f$:f$<>"":SaveO 4 >9SaveR:"Save room start: "st%:"Save room end: "en% Hd(st%<64 en%>63) (st%>191 en%<192):0,23);"Must be continuous in 0-63 or 192-255";:A%=: R$PutR:out%=(f$):out%=0:ErrO: \)?X%=out%:A%=2: r%=st% en%:13;r%; f:copy(r(r%),Buf%,256):X%!1=Buf%:X%!5=256: OSGBPB:r% p9#out%:out%=0:GetR:SetAd(f$,((st%&C0)&300)*256): z&SaveO:out%=(f$):out%=0:ErrO: ©(&A3FF+&10000*rom1%,Obj%,513) ;?X%=out%:A%=2:X%!1=Obj%:X%!5=513: OSGBPB:#out%:out%=0 SetAd(f$,&3A3FF): : BSetAd(A$,B%):X%!2=B%:A%=file(2,A$):X%!6=B%:A%=file(3,A$): %ErrO:"Can't open file";:A%=: : Oscli: A$:Win::*FX4 ;"*"A$:A$:":";:A$=:13+"LlSs*",A$):A$="*":127 CA$<>"*"::A$="L" A$="l":Load: A$="S" A$="s":Save: 12,26:"FX4,1":Info: : EdChar:rm%=-1: 30,23);"Edit char: "c$:clr:c$<"1" c$>"7": 728,0,16,31,0,12:C%=c$:xo%=Buf%+152+C%*9-10*(C%=7) 1yc%=0 7:1,1+yc%);:A%=xo%?yc%: xc%=0 7 $*A%=A%*2:(A%256):135:32:128 139 .%:""d(xo%?yc%,4)::" "8,"") 8-xc%=0:yc%=0:C%<7:'" Attr="o0(xo%?-1,3) Bp1+xc%,1+yc%);:A$=:A$>135 A$<140:xc%=(xc%-(A$=137)+(A$=136))7:yc%=(yc%-(A$=138)+(A$=139))7:0 L" 012A"+13,A$):A$="A"A$="a":C%<7:6,11);3;8;8;8;:""f$:f$<>"":f$="00"+f$,3):xo%?-1=64*f$,1)+8*f$,2,1)+f$,1) V&A$="A":C%<7:6,11)o0(xo%?-1,3) `1A$=" ":A$=(49+((xo%?yc% (2^(7-xc%)))<>0)) j2A$="0":xo%?yc%=xo%?yc% (2^(7-xc%)):139,8 t9A$="1":xo%?yc%=xo%?yc% (2^(7-xc%)):135:32,8:128 ~710,1+yc%);d(xo%?yc%,4):A$=13:PutR:26:Disp: