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

Any discussions related to the creation of new hardware or software for the ZX80 or ZX81
Post Reply
Crayon21
Posts: 348
Joined: Sun Nov 04, 2018 2:33 am

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

Post 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
Attachments
Dungeon Designer.p
(769 Bytes) Downloaded 97 times
In Heck, there are two options for perpetual torment:

Eat the Puckerberry and suffer for eternity:
drink nothing but a cocktail of The Last Dab and Mexican Cake blended and served with
habanero slices
:twisted:
User avatar
BarryN
Posts: 151
Joined: Thu Nov 09, 2017 11:34 pm

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

Post 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?
Crayon21
Posts: 348
Joined: Sun Nov 04, 2018 2:33 am

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

Post 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
In Heck, there are two options for perpetual torment:

Eat the Puckerberry and suffer for eternity:
drink nothing but a cocktail of The Last Dab and Mexican Cake blended and served with
habanero slices
:twisted:
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

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

Post 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...
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
Crayon21
Posts: 348
Joined: Sun Nov 04, 2018 2:33 am

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

Post by Crayon21 »

it's been saved as b81 but the site won't accept it. ideas?
In Heck, there are two options for perpetual torment:

Eat the Puckerberry and suffer for eternity:
drink nothing but a cocktail of The Last Dab and Mexican Cake blended and served with
habanero slices
:twisted:
Lardo Boffin
Posts: 2160
Joined: Sat Nov 26, 2016 2:42 am

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

Post by Lardo Boffin »

You can rename the file extension to get the site to accept it (but make it obvious you have!)
ZX80
ZX81 iss 1 (bugged ROM, kludge fix, normal, rebuilt)
TS 1000 iss 3, ZXPand AY and +, ZX8-CCB, ZX-KDLX & ChromaSCART
Tatung 81 + Wespi
TS 1500 & 2000
Spectrum 16k (iss 1 s/n 862)
Spectrum 48ks plus a DIVMMC future and SPECTRA
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

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

Post 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
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

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

Post 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 ! )
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
Crayon21
Posts: 348
Joined: Sun Nov 04, 2018 2:33 am

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

Post 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
In Heck, there are two options for perpetual torment:

Eat the Puckerberry and suffer for eternity:
drink nothing but a cocktail of The Last Dab and Mexican Cake blended and served with
habanero slices
:twisted:
Post Reply