Page 1 of 1

A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sat Oct 23, 2021 5:07 am
by Crayon21
This comes in two flavors: A full basic listing and a Machine code variant (which i will get to eventually).

The idea came about because there is no way for one unfamiliar with machine code to draw on screen (we don't use lightpens or graph paper anymore so you see the issue). This program asks for a starting position and an ending position, gives you a pre drawn graphic and you go from there. As there is no way to highlight just where in memory you can draw from, my program aims to make it easier. Runs in 2k.

Example:
Starting position: 3
Ending position: 12
Graphic shows at 3 and 12 so you know where to start. Pretty cool huh?

the rem portion is for later implementation, when i am better accustomed to the hardware

hopefully it works. I saved it twice, checked the tape, saved again and made a backup

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sat Oct 23, 2021 6:18 am
by BarryN
Crayon21 wrote: Sat Oct 23, 2021 5:07 am This comes in two flavors: A full basic listing and a Machine code variant (which i will get to eventually).

The idea came about because there is no way for one unfamiliar with machine code to draw on screen (we don't use lightpens or graph paper anymore so you see the issue). This program asks for a starting position and an ending position, gives you a pre drawn graphic and you go from there. As there is no way to highlight just where in memory you can draw from, my program aims to make it easier. Runs in 2k.

Example:
Starting position: 3
Ending position: 12
Graphic shows at 3 and 12 so you know where to start. Pretty cool huh?

the rem portion is for later implementation, when i am better accustomed to the hardware

hopefully it works. I saved it twice, checked the tape, saved again and made a backup
It loads and runs but how do I use it?

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sun Oct 24, 2021 12:32 am
by Crayon21
Enter a coordinate for X (left to right)
and enter a coordinate for Y (up and down)
so say 16 and 23 would be 16 up and 23 down. From there, you can mark the coordinates on paper or in a text editor. It maps the whole screen so you have an easier time.

So if you were to plot 18,23, a dot would appear 18 up and 23 down.

1. select either mode 1 or 2 (plain text or graphical)
2. input coordinates for x and y
3. make a note and draw what you want using print at

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sun Oct 24, 2021 1:46 am
by XavSnap
Crayon,
Something's wrong with the ASM routine:

LD A,$21
LD x,$21
(???)
POP HL
LD (HL),88

You had to assemble the mnemonics to run it in a REM ! /// Again…///
Cap0112.jpg
Give us the paper listing...

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sun Oct 24, 2021 5:47 am
by Crayon21
it's been saved as b81 but the site won't accept it. ideas?

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sun Oct 24, 2021 9:37 am
by Lardo Boffin
You can rename the file extension to get the site to accept it (but make it obvious you have!)

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sun Oct 24, 2021 7:35 pm
by XavSnap
Well… well… well…

I planed to add a new Basic function: Vline and Hline.

You Had to create a string value a$(x,4)
Where:
a$(x,1)=Y
a$(x,2)=X
a$(x,3)=Length + H/V flag (bit7=V) ( 0 to 128 chars )
a$(x,4)=Character code.

To display the screen:
8000 CLS
8010 LET A$(1,1)=CHR$ USR 16514
(You can use all strings value names, the CHR$ 128 is the "RETURN" ASM flag.)

Asm codes:

Code: Select all

;------- TASM ASM mnemonics. -------
; Compile this file using:
; Set TASMOPTS = -b
; tasm -80 ThisCode.tas MyBinary.BIN
;-----------------------------------
; Zx81 Program name: VB81 XuR 

#define ORG  .org       ; TASM cross-assembler definitions
#define equ  .equ
;-----------------------------------
FAST	equ	$0F23
SLOW	equ	$0F2B
CURSEUR	.equ	$08F5
EXTERR equ $005B ; Basic Break function ! Ignore line instructions.

.ORG 16514

PutByte:
	LD HL,($4012) ; Get Dest value.
	LD A,(HL)
	LD ($4021),A
	DEC HL
Nxtval:
	INC HL
	LD A,(HL)	; Get first value 
	BIT 7,A	; to test the variable
	JR NZ,ExitVals	; b7=1 >exit (End of array)
	LD B,A	; Get X value.
	INC HL
	LD A,(HL)
	LD C,A	; Get Y value.
	LD ($407B),BC
	PUSH HL
	CALL CURSEUR	; Set The PRINT AT D_File DEST
	POP HL
	INC HL
	LD A,(HL)	; Set Horzontal or Vertical way..
	BIT 7,A
	LD B,A
	JR NZ,DrawV
DrawH:
	INC HL
	LD A,(HL)
LoopH:	
	RST 10h
	DJNZ LoopH
	JR Nxtval
DrawV:
	RES 7,B	; Reset the way flag.
	INC HL
	LD A,(HL)
LoopV:	
	PUSH BC
	LD BC,($407B)
	PUSH HL
	CALL CURSEUR	; Set The PRINT AT D_File DEST
	POP HL
	POP BC
	LD A,(HL)
	RST 10h
	INC (IY+124)
	DJNZ LoopV
	JR Nxtval
ExitVals:
	LD B,0
	LD A,($4021)
	LD C,A
	RET
.end
Basic listing:

Code: Select all

    10  REM [HEX:\
2A,12,40,7E,32,21,40,2B,\
23,7E,CB,7F,20,33,47,23,\
7E,4F,ED,43,7B,40,E5,CD,\
F5,08,E1,23,7E,CB,7F,47,\
20,07,23,7E,D7,10,FD,18,\
DF,CB,B8,23,7E,C5,ED,4B,\
7B,40,E5,CD,F5,08,E1,C1,\
7E,D7,FD,34,7C,10,EE,18,\
C7,06,00,3A,21,40,4F,C9 ]

    20 DIM A$(10,4)
    22 LET V=1
    25 FAST 
    30 FOR A=1 TO 10
    40 LET A$(A)=CHR$ 128
    50 NEXT A
    51 PRINT "DUNGEON DESIGNER"
    52 PRINT "THIS WILL HELP YOU DESIGN YOUR OWN DUNGEONS FOR YOUR OWN USE"
    60 SLOW 
    70 PRINT "THEN SELECT A THE FIRST CHAR."
    75 PRINT AT 17,0;"VALUE ";V
    80 PRINT AT 18,0;"X= <N/L>"
    81 INPUT X
    85 PRINT AT 18,0;"Y"
    86 INPUT Y
    90 PRINT AT 18,0;"H OR V: "
    95 INPUT H$
   100 PRINT AT 18,0;"LENGHT:"
   105 INPUT N
   110 PRINT AT 18,0;"CHARACTER:"
   115 INPUT C$
   120 LET A$(V)=CHR$ Y+CHR$ X+CHR$ (N+(128 AND H$="V"))+C$
   150 PRINT AT 19,0;"PRESS s TO DISPLAY THE SCREEEN","n TO CONTINUE OR q TO QUIT","SAvE DATAS.","d ERASE LAST"
   160 INPUT R$
   170 IF R$="S" THEN GOSUB 8000
   180 IF R$="N" THEN GOTO 300
   190 IF R$="Q" THEN STOP
   195 IF R$="V" THEN GOTO 9000
   196 IF R$="D" THEN LET V=V-1
   197 IF R$="D" THEN GOTO 75
   200 GOTO 160
   300 LET V=V+1
   400 CLS 
   500 GOTO 75
  8000 CLS 
  8010 LET A$(1,1)=CHR$ USR 16514
  8020 RETURN 
  9000 SAVE "DONJON"
  9999 GOTO 150

Demo:
example…
X= Y= MoveTo=H/V Length
0 0 H 32
31 1 V 20
0 1 V 20
0 20 H 32
...
DONJON.P
(1.95 KiB) Downloaded 102 times
Cap0114.jpg
Cap0115.jpg

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Sun Oct 24, 2021 11:50 pm
by XavSnap
On this demo, you can create several levels in a A$ string…
DIM A$(20,4)
LET A$(5,1)=128
LET A$(9,1)=128
LET A$(14,1)=128
LET A$(20,1)=128

first level:
LET A$(1,1)=CHR$ USR 16514
Will display the 1 to 4 values

LET A$(6,1)=CHR$ USR 16514
Will display the 6 to 8 values

(…)

LET A$(15,1)=CHR$ USR 16514
Will display the values between 15 to 20.

LET A$(1,1)=CHR$ USR 16514
LET A$(15,1)=CHR$ USR 16514
Will add two screens...

Just BREAK the program, type LET V=V+1 and GOTO150 to jump the LET A$(x,1)=128 flag.

:ugeek:
15 PRINT "THEN SELECT A MODE"
16 PRINT "MODE 1 ALLOWS FOR 320X200"
17 PRINT "MODE 2 ALLOWS FOR 160X100"
Just forget it !

32x22 is better…
(Add POKE 16442,4 to print on the line #22 and #23, each time you want to use them, a CLS clear this value ! )

Re: A tool to help with dungeon creation for the ZX81:Dungeon Designer

Posted: Mon Oct 25, 2021 12:41 am
by Crayon21
Damn my short memory, i'd never be able to remember all the commands needed for this nor their use. that extends to asm