Hey, I've been looking over your code today, and was able to modify the engine to load new maps without using labels. Here's what I got:
Code:
::DC6
:ClrHome
:8→A
:4→B
:8→C
:8→D
:2→H
:{8,16→dim([A]
:Fill(0,[A]
:"Wθ~→Str2
:While 1
:prgmZMAP9
:{1→L3
:Repeat 7.5=abs(A-8.5) or 3.5=abs(B-4.5
:Output(B,A,"π
:Repeat Ans
:getKey→K
:End
:If max(K={24,25,26,34
:Then
:(K-23)-7(K=34→H
:Output(B,A,"
:A-(K=24)+(K=26→Z
:B+(K=34)-(K=25
:If not(max(L3=[A](Ans,Z
:Then
:Ans→B
:Z→A
:Output(B,A,"π
:End
:End
:End
:End
All the code works perfectly. I also (because you hadn't ever posted your version of ZMAP9) made my own ZMAP9 program that has 4 or 5 rooms in it, compiled in strings, in RLE format. Here's my version of ZMAP9:
Code:
:ClrHome
:D-(A=1)+(A=16→D
:C-(B=1)+(B=8→C
:"W0
:If C=7 and D=8
:"M112B1C03120111011101110111011N01110111011101110113021C0912081
:If C=8 and D=6
:"41102330A110239011121120239011402390114023902130239041102390512391
:If C=8 and D=7
:"A12041D031B011202160111011I011A01110116011D0J1
:If C=8 and D=8
:"6120B11211409190113011W011B06190L1
:Ans→Str1
:A+14(A=1)-14(A=16→A
:B+6(B=1)-6(B=8→B
:1→H
:1→I
:Output(B,A,"π
:Fill(0,[A]
:If Str1≠"W0
:Then
:For(E,1,length(Str1),2
:inString("12",sub(Str1,E+1,1→G
:inString("123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",sub(Str1,E,1→F
:If G
:Then
:For(F,1,F
:G→[A](H,I
:Output(H,I,sub(Str2,Ans,1
:I+1→I
:H+(I=17→H
:I-16(I=17→I
:End
:Else
:For(F,1,F
:I+1→I
:H+(I=17→H
:I-16(I=17→I
:End
:End
:End
:End
:getKey
I haven't played LoZ in a while so the few maps there are, were all based off of memory, so just play along like it's all correct.