Bwa-hahahaha!

Any developer realated stuff
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

Man, this gives me a headache.

How did Michael Cranford manage to code this game from scratch back in 1984-1985? The guy must've been a freakin' genius.

Sigh. :?
User avatar
dragonbait
Posts: 124
Joined: Tue May 15, 2007 12:21 am
Location: Under the Ruins of Yulash

Post by dragonbait »

Darendor wrote:Success.

Image

I dub our project "The Bard's Tale 8-Bit Builder Kit", version zero, alpha build.

Do you concur? 8)
That is some groovy kickin' 8 BitN' ya got goin' on there. I'd love to help out but coding mostly flies right over my head. I just read in awe and amazement. Keep going. 8)
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

A lot of trial and error and frustration.

I need to take some 6502 assembly courses or something.
User avatar
Horpner
Posts: 224
Joined: Thu Jan 08, 2009 11:53 pm
Location: New England
Contact:

Post by Horpner »

Darendor wrote:A lot of trial and error and frustration.

I need to take some 6502 assembly courses or something.
There's plenty of "free" books on 6502 assembly available to browse on-line. I haven't really cracked the books yet, though. I'm hoping a "perfect" one presents itself.
Death and drek? WTF?
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

Well, I need a brief break from all this. :?

Back in 24.
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

In case anyone out there is curious, here's my edited DUNGEON disk image for the C64 version of Tale Of The Unknown with the heavily edited Wine Cellar: http://www.mediafire.com/?jtmxojzkzdz
User avatar
burgerbecky
Posts: 9
Joined: Thu Jan 29, 2009 6:23 am
Location: Seattle, WA
Contact:

Code

Post by burgerbecky »

Darendor wrote:Man, this gives me a headache.

How did Michael Cranford manage to code this game from scratch back in 1984-1985? The guy must've been a freakin' genius.

Sigh. :?
He wasn't. I was the one who manage it all.

*
* AutoMap
*
LST OFF
TR ON
XC
XC
MX %00
REL

PUT 2/S/EQUATES

ENT AutoMap,MarkMap

EXT CLRWIN,SELECTOR,CHAR,RETURN,FONT
EXT DUNGPEEKMP,SETCOLOR,MODULE08
EXT AutoMapIndex,AutoMapBuf,LOBYTE

*
* Draw the overhead view
*

AutoMap LDA WHERE
BNE :Fine
JMP MODULE08
:Fine LDA NORTH
STA MNORTH
LDA EAST
STA MEAST
JSR CLRWIN ;Clear the text window
]A JSR DRAWMAP ;Draw the map
LDA #0
JSR SETCOLOR
JSR MOVE ;Scroll the screen
BCC ]A
RTS

*
* Scroll the map
*

MOVE JSR SELECTOR ;Get a key
HEX C080
DB $9B
DA KEXIT ;Abort
DB $8D
DA DOLAST
DB $88 ;Apple arrow keys
DA TLEFT
DB $95
DA TRIGHT
DB $8A
DA TDOWN
DB $8B
DA TUP
ASC "J" ;Apple IJKL keys
DA TLEFT
ASC "L"
DA TRIGHT
ASC "K"
DA TDOWN
ASC "I"
DA TUP
DB $FF

KEXIT SEC ;Abort
RTS

DOLAST LDA SHOWLAST
EOR #$8000
STA SHOWLAST ;Draw all dots
CLC
RTS

TLEFT DEC MEAST ;Move left
BPL TOK
INC MEAST
CLC
RTS

TRIGHT INC MEAST ;Move right
LDA MEAST
CMP #22
BLT TOK
DEC MEAST
TOK CLC
RTS

TUP INC MNORTH ;Move up
LDA MNORTH
CMP #22
BLT TOK
DEC MNORTH
CLC
RTS

TDOWN DEC MNORTH ;Move down
BPL TOK
INC MNORTH
CLC
RTS

*
* Draw the map
*

DRAWMAP LDA #WINLEFT ;Home the text pointer
STA HORIZ
LDA #WINTOP
STA VERT
STZ MHEIGHT ;Height of maze
]B STZ MWIDTH
]A JSR DRAW1 ;Draw a cell
INC MWIDTH
LDA MWIDTH
CMP #16
BLT ]A
JSR RETURN
INC MHEIGHT
LDA MHEIGHT
CMP #11
BLT ]B
RTS

*
* Draw one box on the floor
*

DRAW1 LDX #8-2
LDA #0
]A STAL FONT,X ;Erase font character
DEX
DEX
BPL ]A

JSR NCALC ;Get map coord to scan
CPX #22 ;Off the map?
BLT :AAX ;Nope
]A BRL :DRAWBRICK ;Blank out cell

:AAX CPY #22 ;Off the map?
BGE ]A ;Blank it out
LDA #0 ;Disable X
CPX EAST ;Am I standing here?
BNE :AA
CPY NORTH
BNE :AA
LDA #$4000 ;Yep, X marks the spot!
:AA STA ORFLAG ;Enable X

JSR DUNGPEEKMP ;Get walls of cell
XBA ;Move to high bits
STA MLO ;Save in temp
JSR GetAutoBit
BIT #$55
BEQ :DODRAW ;Visible?

BIT SHOWLAST ;Show all normal spots
BPL :NORMAL
BIT #$AA
BEQ :NORMAL
LDA #$8000
TSB ORFLAG ;Place dot here
:NORMAL

*
* Draw the 4 walls
*

:CNTS STZ SCREENAD ;Start at side #0
]A LDA #0 ;No shape
ASL MLO
ROL
ASL MLO
ROL
TAX
LDA :BOXWALL,X ;Shape?
BIT #$80
BNE :X7 ;Nope, next wall please
AND #$FF
STA SCREENAD+2
LDA SCREENAD
ASL
ASL
ASL ;*8
ORA SCREENAD+2 ;Now I have index to proper shape
TAY
LDX #0
]B LDA :SHAPE,Y ;Draw shape
ORAL FONT,X
STAL FONT,X
INY
INY
INX
INX
CPX #8
BLT ]B
:X7 INC SCREENAD ;Next side
LDA SCREENAD ;All sides done?
CMP #4
BLT ]A

:DODRAW BIT ORFLAG ;Place X?
BVC :NORM
LDX #8-2
]A LDA :XSPOT,X ;You are here!
ORAL FONT,X
STAL FONT,X
DEX
DEX
BPL ]A
BRA :AAC

:NORM BPL :AAC ;Marker?
LDX #8-2
]A LDA :DOT,X ;Draw marker
ORAL FONT,X
STAL FONT,X
DEX
DEX
BPL ]A

:AAC LDA #4 ;Black on white
JSR SETCOLOR
LDA #$80 ;Draw special cell
JMP CHAR

:DRAWBRICK LDA #7 ;Gray on Gray
JSR SETCOLOR
LDA #$81 ;Brick pattern
JMP CHAR ;Draw the character

:BOXWALL HEX FF002040

:SHAPE HEX 8080808080808080 ;Wall
HEX 0101010101010101
HEX 00000000000000FF
HEX FF00000000000000

HEX 808000C0C0008080 ;Door
HEX 0101000303000101
HEX 00000000000018DB
HEX DB18000000000000

HEX 8080008080008080 ;Secret door
HEX 0101000101000101
HEX 00000000000000DB
HEX DB00000000000000

:DOT HEX 0000081C1C080000 ;Large dot
:XSPOT HEX 00663C18183C6600

*
* Center on the screen
*

NCALC LDA #10-4-1
SEC
SBC MHEIGHT
CLC
ADC MNORTH
TAY
LDA MEAST
SEC
SBC #9
CLC
ADC MWIDTH
TAX
RTS

MNORTH DS 2 ;North coord for internal use
MEAST DS 2 ;East coord
MWIDTH DS 2 ;X coord of drawn map
MHEIGHT DS 2 ;Y coord of drawn map
SHOWLAST DS 2 ;Draw a normal map
ORFLAG DS 2

*
* Get automap bits
*

GetAutoBit PHY ;Save north
PHX ;Save east
JSR CalcBit ;Get bit offsets
LDAL AutoMapBuf,X ;Get bits
AND AutoBits,Y ;Mask
PLX ;Restore east
PLY ;Restore north
RTS ;Exit

AutoBits DA $C0,$30,$0C,$03

*
* Get bit offsets
*

CalcBit PHX ;Save east
LDA MODIN ;Get dungeon level
ASL ;Word pointer
TAX ;Put in X index
TYA ;Make Y coord a word pointer
ASL
TAY
CLC
PLA ;Get X coord
ADC LOBYTE,Y ;Mul by 22 for Y
CLC
ADCL AutoMapIndex,X ;Get base bit index for map
TAX ;Save bit offset
AND #3 ;Mask bits per byte
ASL
TAY ;Save in mask
TXA
LSR
LSR
TAX
RTS

*
* Mark the automap bits
*

MarkMap PHX ;Save indexs
PHY
PHA
JSR CalcBit ;Get address of automap
PLA
SEP #$20 ;8 bit mode
AND AutoBits,Y ;Mask
ORAL AutoMapBuf,X
STAL AutoMapBuf,X
REP #$20
PLY
PLX
RTS

SAV 2/L/AutoMap.l
Writer, programmer, and game geekette
Image
User avatar
Horpner
Posts: 224
Joined: Thu Jan 08, 2009 11:53 pm
Location: New England
Contact:

Re: Code

Post by Horpner »

burgerbecky wrote:
Darendor wrote:Man, this gives me a headache.

How did Michael Cranford manage to code this game from scratch back in 1984-1985? The guy must've been a freakin' genius.

Sigh. :?
He wasn't. I was the one who manage it all.
And some thanks you got, too! Heh, heh. "Animation packing" covers a whole lot of ground, I see. ;)

Many thanks for posting some real code. We will learn a lot from studying it. I hope I won't be a pesterance if I have a question or two.
Death and drek? WTF?
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

Thanks for your help Becky.
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Code

Post by Darendor »

Sorry to sound stupid, but, er, which routine is this for exactly? Can you take a second to explain it to us (well, me anyways)? :oops:

Thanks again.
burgerbecky wrote:
Darendor wrote:Man, this gives me a headache.

How did Michael Cranford manage to code this game from scratch back in 1984-1985? The guy must've been a freakin' genius.

Sigh. :?
He wasn't. I was the one who manage it all.

*
* AutoMap
*
LST OFF
TR ON
XC
XC
MX %00
REL

PUT 2/S/EQUATES

ENT AutoMap,MarkMap

EXT CLRWIN,SELECTOR,CHAR,RETURN,FONT
EXT DUNGPEEKMP,SETCOLOR,MODULE08
EXT AutoMapIndex,AutoMapBuf,LOBYTE

*
* Draw the overhead view
*

AutoMap LDA WHERE
BNE :Fine
JMP MODULE08
:Fine LDA NORTH
STA MNORTH
LDA EAST
STA MEAST
JSR CLRWIN ;Clear the text window
]A JSR DRAWMAP ;Draw the map
LDA #0
JSR SETCOLOR
JSR MOVE ;Scroll the screen
BCC ]A
RTS

*
* Scroll the map
*

MOVE JSR SELECTOR ;Get a key
HEX C080
DB $9B
DA KEXIT ;Abort
DB $8D
DA DOLAST
DB $88 ;Apple arrow keys
DA TLEFT
DB $95
DA TRIGHT
DB $8A
DA TDOWN
DB $8B
DA TUP
ASC "J" ;Apple IJKL keys
DA TLEFT
ASC "L"
DA TRIGHT
ASC "K"
DA TDOWN
ASC "I"
DA TUP
DB $FF

KEXIT SEC ;Abort
RTS

DOLAST LDA SHOWLAST
EOR #$8000
STA SHOWLAST ;Draw all dots
CLC
RTS

TLEFT DEC MEAST ;Move left
BPL TOK
INC MEAST
CLC
RTS

TRIGHT INC MEAST ;Move right
LDA MEAST
CMP #22
BLT TOK
DEC MEAST
TOK CLC
RTS

TUP INC MNORTH ;Move up
LDA MNORTH
CMP #22
BLT TOK
DEC MNORTH
CLC
RTS

TDOWN DEC MNORTH ;Move down
BPL TOK
INC MNORTH
CLC
RTS

*
* Draw the map
*

DRAWMAP LDA #WINLEFT ;Home the text pointer
STA HORIZ
LDA #WINTOP
STA VERT
STZ MHEIGHT ;Height of maze
]B STZ MWIDTH
]A JSR DRAW1 ;Draw a cell
INC MWIDTH
LDA MWIDTH
CMP #16
BLT ]A
JSR RETURN
INC MHEIGHT
LDA MHEIGHT
CMP #11
BLT ]B
RTS

*
* Draw one box on the floor
*

DRAW1 LDX #8-2
LDA #0
]A STAL FONT,X ;Erase font character
DEX
DEX
BPL ]A

JSR NCALC ;Get map coord to scan
CPX #22 ;Off the map?
BLT :AAX ;Nope
]A BRL :DRAWBRICK ;Blank out cell

:AAX CPY #22 ;Off the map?
BGE ]A ;Blank it out
LDA #0 ;Disable X
CPX EAST ;Am I standing here?
BNE :AA
CPY NORTH
BNE :AA
LDA #$4000 ;Yep, X marks the spot!
:AA STA ORFLAG ;Enable X

JSR DUNGPEEKMP ;Get walls of cell
XBA ;Move to high bits
STA MLO ;Save in temp
JSR GetAutoBit
BIT #$55
BEQ :DODRAW ;Visible?

BIT SHOWLAST ;Show all normal spots
BPL :NORMAL
BIT #$AA
BEQ :NORMAL
LDA #$8000
TSB ORFLAG ;Place dot here
:NORMAL

*
* Draw the 4 walls
*

:CNTS STZ SCREENAD ;Start at side #0
]A LDA #0 ;No shape
ASL MLO
ROL
ASL MLO
ROL
TAX
LDA :BOXWALL,X ;Shape?
BIT #$80
BNE :X7 ;Nope, next wall please
AND #$FF
STA SCREENAD+2
LDA SCREENAD
ASL
ASL
ASL ;*8
ORA SCREENAD+2 ;Now I have index to proper shape
TAY
LDX #0
]B LDA :SHAPE,Y ;Draw shape
ORAL FONT,X
STAL FONT,X
INY
INY
INX
INX
CPX #8
BLT ]B
:X7 INC SCREENAD ;Next side
LDA SCREENAD ;All sides done?
CMP #4
BLT ]A

:DODRAW BIT ORFLAG ;Place X?
BVC :NORM
LDX #8-2
]A LDA :XSPOT,X ;You are here!
ORAL FONT,X
STAL FONT,X
DEX
DEX
BPL ]A
BRA :AAC

:NORM BPL :AAC ;Marker?
LDX #8-2
]A LDA :DOT,X ;Draw marker
ORAL FONT,X
STAL FONT,X
DEX
DEX
BPL ]A

:AAC LDA #4 ;Black on white
JSR SETCOLOR
LDA #$80 ;Draw special cell
JMP CHAR

:DRAWBRICK LDA #7 ;Gray on Gray
JSR SETCOLOR
LDA #$81 ;Brick pattern
JMP CHAR ;Draw the character

:BOXWALL HEX FF002040

:SHAPE HEX 8080808080808080 ;Wall
HEX 0101010101010101
HEX 00000000000000FF
HEX FF00000000000000

HEX 808000C0C0008080 ;Door
HEX 0101000303000101
HEX 00000000000018DB
HEX DB18000000000000

HEX 8080008080008080 ;Secret door
HEX 0101000101000101
HEX 00000000000000DB
HEX DB00000000000000

:DOT HEX 0000081C1C080000 ;Large dot
:XSPOT HEX 00663C18183C6600

*
* Center on the screen
*

NCALC LDA #10-4-1
SEC
SBC MHEIGHT
CLC
ADC MNORTH
TAY
LDA MEAST
SEC
SBC #9
CLC
ADC MWIDTH
TAX
RTS

MNORTH DS 2 ;North coord for internal use
MEAST DS 2 ;East coord
MWIDTH DS 2 ;X coord of drawn map
MHEIGHT DS 2 ;Y coord of drawn map
SHOWLAST DS 2 ;Draw a normal map
ORFLAG DS 2

*
* Get automap bits
*

GetAutoBit PHY ;Save north
PHX ;Save east
JSR CalcBit ;Get bit offsets
LDAL AutoMapBuf,X ;Get bits
AND AutoBits,Y ;Mask
PLX ;Restore east
PLY ;Restore north
RTS ;Exit

AutoBits DA $C0,$30,$0C,$03

*
* Get bit offsets
*

CalcBit PHX ;Save east
LDA MODIN ;Get dungeon level
ASL ;Word pointer
TAX ;Put in X index
TYA ;Make Y coord a word pointer
ASL
TAY
CLC
PLA ;Get X coord
ADC LOBYTE,Y ;Mul by 22 for Y
CLC
ADCL AutoMapIndex,X ;Get base bit index for map
TAX ;Save bit offset
AND #3 ;Mask bits per byte
ASL
TAY ;Save in mask
TXA
LSR
LSR
TAX
RTS

*
* Mark the automap bits
*

MarkMap PHX ;Save indexs
PHY
PHA
JSR CalcBit ;Get address of automap
PLA
SEP #$20 ;8 bit mode
AND AutoBits,Y ;Mask
ORAL AutoMapBuf,X
STAL AutoMapBuf,X
REP #$20
PLY
PLX
RTS

SAV 2/L/AutoMap.l
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

Since at some point we want to shift our focus to the engine for Destiny Knight instead of TOTU, I went ahead and deciphered a few memory locations.

After much studying of the frozen screen when the game resets to BASIC from the C64 version, I've figured out the memory locations for output such as the text area, where the images are drawn and the caption.

Screen dimensions

1st row: 1st character = northwest corner of image display box
1st row: 2nd-14th characters = north line of image display box
1st row: 15th character = northeast corner of image display box
1st row: 16th character = blank?
1st row: 17th-19th character = top half of "Light" sprite
1st row: 20th character = blank?
1st row: 21st-23rd character = top half of "Carpet" sprite
1st row: 24th character = blank?
1st row: 25th-27th character = top half of "MACO" sprite
1st row: 28th character = blank?
1st row: 29th-31st character = top half of "Eye" sprite
1st row: 32nd character = blank?
1st row: 33rd-35th character = top half of "Shield" sprite
1st row: 36th character = blank?
1st row: 37th-39th character = top half of ??? sprite (unused)
1st row: 40th character = blank?
2nd row: 1st character forms part of west vertical line of image display box
2nd row: 2nd character is blank (permanently?)
2nd row: 3rd-13th character contains image
2nd row: 14th character is blank (permanently)
2nd row: 15th character forms part of east vertical line of image display box
2nd row: 16th character = blank?
2nd row: 17th-19th character = bottom half of "Light" sprite
2nd row: 20th character = blank?
2nd row: 21st-23rd character = bottom half of "Carpet" sprite
2nd row: 24th character = blank?
2nd row: 25th-27th character = bottom half of "MACO" sprite
2nd row: 28th character = blank?
2nd row: 29th-31st character = bottom half of "Eye" sprite
2nd row: 32nd character = blank?
2nd row: 33rd-35th character = bottom half of "Shield" sprite
2nd row: 36th character = blank?
2nd row: 37th-39th character = bottom half of ??? sprite (unused)
2nd row: 40th character - blank?
3rd row: 1st character forms part of west vertical line of image display box
3rd row: 2nd character is blank (permanently?)
3rd row: 3rd-13th character contains image
3rd row: 14th character is blank (permanently?)
3rd row: 15th character forms part of east vertical line of image display box
3rd row: 16th character forms blue/white/black 'upper left' corner of text box
3rd row: 17th-39th character = top blue/white/black edge of text box
3rd row: 40th character forms blue/white/black 'upper right' corner of text box
4th row: 1st character forms part of west vertical line of image display box
4th row: 2nd character is blank (permanently?)
4th row: 3rd-13th character contains image
4th row: 14th character is blank (permanently?)
4th row: 15th character forms part of east vertical line of image display box
4th row: 16th character forms blue/white/black left edge of text box
4th row: 17th-39th character forms white background of text box (text display starts at 17th character)
4th row: 40th character forms blue/white/black right edge of text box
5th row: 1st character forms part of west vertical line of image display box
5th row: 2nd character is blank (permanently?)
5th row: 3rd-13th character contains image
5th row: 14th character is blank (permanently?)
5th row: 15th character forms part of east vertical line of image display box
5th row: 16th character forms blue/white/black left edge of text box
5th row: 17th-39th character forms white background of text box
5th row: 40th character forms blue/white/black right edge of text box
6th row: 1st character forms part of west vertical line of image display box
6th row: 2nd character is blank (permanently?)
6th row: 3rd-13th character contains image
6th row: 14th character is blank (permanently?)
6th row: 15th character forms part of east vertical line of image display box
6th row: 16th character forms blue/white/black left edge of text box
6th row: 17th-39th character forms white background of text box
6th row: 40th character forms blue/white/black right edge of text box
7th row: 1st character forms part of west vertical line of image display box
7th row: 2nd character is blank (permanently?)
7th row: 3rd-13th character contains image
7th row: 14th character is blank (permanently?)
7th row: 15th character forms part of east vertical line of image display box
7th row: 16th character forms blue/white/black left edge of text box
7th row: 17th-39th character forms white background of text box
7th row: 40th character forms blue/white/black right edge of text box
8th row: 1st character forms part of west vertical line of image display box
8th row: 2nd character is blank (permanently?)
8th row: 3rd-13th character contains image
8th row: 14th character is blank (permanently?)
8th row: 15th character forms part of east vertical line of image display box
8th row: 16th character forms blue/white/black left edge of text box
8th row: 17th-39th character forms white background of text box
8th row: 40th character forms blue/white/black right edge of text box
9th row: 1st character forms part of west vertical line of image display box
9th row: 2nd character is blank (permanently?)
9th row: 3rd-13th character contains image
9th row: 14th character is blank (permanently?)
9th row: 15th character forms part of east vertical line of image display box
9th row: 16th character forms blue/white/black left edge of text box
9th row: 17th-39th character forms white background of text box
9th row: 40th character forms blue/white/black right edge of text box
10th row: 1st character forms part of west vertical line of image display box
10th row: 2nd character is blank (permanently?)
10th row: 3rd-13th character contains image
10th row: 14th character is blank (permanently?)
10th row: 15th character forms part of east vertical line of image display box
10th row: 16th character forms blue/white/black left edge of text box
10th row: 17th-39th character forms white background of text box
10th row: 40th character forms blue/white/black right edge of text box
11th row: 1st character forms part of west vertical line of image display box
11th row: 2nd character is blank (permanently?)
11th row: 3rd-13th character contains image
11th row: 14th character is blank (permanently?)
11th row: 15th character forms part of east vertical line of image display box
11th row: 16th character forms blue/white/black left edge of text box
11th row: 17th-39th character forms white background of text box
11th row: 40th character forms blue/white/black right edge of text box
12th row: 1st character forms part of west vertical line of image display box
12th row: 2nd character is blank (permanently?)
12th row: 3rd-13th character contains image
12th row: 14th character is blank (permanently?)
12th row: 15th character forms part of east vertical line of image display box
12th row: 16th character forms blue/white/black left edge of text box
12th row: 17th-39th character forms white background of text box
12th row: 40th character forms blue/white/black right edge of text box
13th row: 1st character forms southwest corner of image display box
13th row: 2nd-14th character forms south edge of image display box
13th row: 15th character forms southeast corner of image display box
13th row: 16th character forms blue/white/black left edge of text box
13th row: 17th-39th character forms white background of text box
13th row: 40th character forms blue/white/black right edge of text box
14th row: 1st character forms northwest purple corner of caption box
14th row: 2nd-14th character forms north purple line of caption box
14th row: 15th character forms northeast purple corner of caption box
14th row: 16th character forms blue/white/black left edge of text box
14th row: 17th-39th character forms white background of text box
14th row: 40th character forms blue/white/black right edge of text box
15th row: 1st character forms west purple edge of caption box
15th row: 2nd-14th character forms caption text area
15th row: 15th character forms east purple edge of caption box
15th row: 16th character forms blue/white/black right edge of text box
15th row: 17th-39th character forms white background of text box (text display ends at 39th character)
15th row: 40th character forms blue/white/black right edge of text box
16th row: 1st character forms southwest purple corner of caption box
16th row: 2nd-14th character forms south purple line of caption box
16th row: 15 character forms southeast purple corner of caption box
16th row: 16th character forms blue/white/black southwest corner of text box
16th row: 17th-39th character forms blue/white/black/south edge of text box
16th row: 40th character forms blue/white/black southeast corner of text box
17th row: 1st-2nd character = blank
17th row: 3rd-16th character contains text: "Character Name"
17th row: 17th character = blank
17th row: 18th-19th character contains text: "AC"
17th row: 20th-21st character = blank
17th row: 22nd-24th character contains text: "Hit"
17th row: 25th character = blank
17th row: 26th-28th character contains text: "Pts"
17th row: 29th-30th character = blank
17th row: 31th-33rd character contains text: "Spl"
17th row: 34th character = blank
17th row: 35th-37th character contains text: "Pts"
17th row: 38th character = blank
17th row: 39th-40th character contains text: "Cl"
18th row: 1st character contains text: "0"
18th row: 2nd character = blank
18th row: 3rd-16th character contains text: [name of character in rank #0, unused characters left blank]
18th row: 17th character = blank
18th row: 18th-19th character contains text: [AC of character in rank #0]
18th row: 20th character = blank
18th row: 21st-24th character contains text: [total hitpoints of character in rank #1, overwritten if affected by something]
18th row: 25th-28th character contains text: [current # hitpoints of character in rank #0]
18th row: 29th character = blank
18th row: 30th-33rd character contains text: [total spellpoints of character in rank #0]
18th row: 34th-37th character contains text: [current # spellpoints of character in rank #0]
18th row: 38th character = blank
18th row: 39th-40th character contains text: [class of character in rank #0]
19th row: 1st character contains text: "1"
19th row: 2nd character = blank
19th row: 3rd-16th character contains text: [name of character in rank #1, unused characters left blank]
19th row: 17th character = blank
19th row: 18th-19th character contains text: [AC of character in rank #1]
19th row: 20th character = blank
19th row: 21st-24th character contains text: [total hitpoints of character in rank #1, overwritten if affected by something]
19th row: 25th-28th character contains text: [current # hitpoints of character in rank #1]
19th row: 29th character = blank
19th row: 30th-33rd character contains text: [total spellpoints of character in rank #1]
19th row: 34th-37th character contains text: [current # spellpoints of character in rank #1]
19th row: 38th character = blank
19th row: 39th-40th character contains text: [class of character in rank #1]
20th row: 1st character contains text: "2"
20th row: 2nd character = blank
20th row: 3rd-16th character contains text: [name of character in rank #2, unused characters left blank]
20th row: 17th character = blank
20th row: 18th-19th character contains text: [AC of character in rank #2]
20th row: 20th character = blank
20th row: 21st-24th character contains text: [total hitpoints of character in rank #2, overwritten if affected by something]
20th row: 25th-28th character contains text: [current # hitpoints of character in rank #2]
20th row: 29th character = blank
20th row: 30th-33rd character contains text: [total spellpoints of character in rank #2]
20th row: 34th-37th character contains text: [current # spellpoints of character in rank #2]
20th row: 38th character = blank
20th row: 39th-40th character contains text: [class of character in rank #2]
21st row: 1st character contains text: "3"
21st row: 2nd character = blank
21st row: 3rd-16th character contains text: [name of character in rank #3, unused characters left blank]
21st row: 17th character = blank
21st row: 18th-19th character contains text: [AC of character in rank #3]
21st row: 20th character = blank
21st row: 21st-24th character contains text: [total hitpoints of character in rank #3, overwritten if affected by something]
21st row: 25th-28th character contains text: [current # hitpoints of character in rank #3]
21st row: 29th character = blank
21st row: 30th-33rd character contains text: [total spellpoints of character in rank #3]
21st row: 34th-37th character contains text: [current # spellpoints of character in rank #3]
21st row: 38th character = blank
21st row: 39th-40th character contains text: [class of character in rank #3]
22nd row: 1st character contains text: "4"
22nd row: 2nd character = blank
22nd row: 3rd-16th character contains text: [name of character in rank #4, unused characters left blank]
22nd row: 17th character = blank
22nd row: 18th-19th character contains text: [AC of character in rank #4]
22nd row: 20th character = blank
22nd row: 21st-24th character contains text: [total hitpoints of character in rank #4, overwritten if affected by something]
22nd row: 25th-28th character contains text: [current # hitpoints of character in rank #4]
22nd row: 29th character = blank
22nd row: 30th-33rd character contains text: [total spellpoints of character in rank #4]
22nd row: 34th-37th character contains text: [current # spellpoints of character in rank #4]
22nd row: 38th character = blank
22nd row: 39th-40th character contains text: [class of character in rank #4]
23rd row: 1st character contains text: "5"
23rd row: 2nd character = blank
23rd row: 3rd-16th character contains text: [name of character in rank #5, unused characters left blank]
23rd row: 17th character = blank
23rd row: 18th-19th character contains text: [AC of character in rank #5]
23rd row: 20th character = blank
23rd row: 21st-24th character contains text: [total hitpoints of character in rank #5, overwritten if affected by something]
23rd row: 25th-28th character contains text: [current # hitpoints of character in rank #5]
23rd row: 29th character = blank
23rd row: 30th-33rd character contains text: [total spellpoints of character in rank #5]
23rd row: 34th-37th character contains text: [current # spellpoints of character in rank #5]
23rd row: 38th character = blank
23rd row: 39th-40th character contains text: [class of character in rank #5]
24th row: 1st character contains text: "6"
24th row: 2nd character = blank
24th row: 3rd-16th character contains text: [name of character in rank #6, unused characters left blank]
24th row: 17th character = blank
24th row: 18th-19th character contains text: [AC of character in rank #6]
24th row: 20th character = blank
24th row: 21st-24th character contains text: [total hitpoints of character in rank #6, overwritten if affected by something]
24th row: 25th-28th character contains text: [current # hitpoints of character in rank #6]
24th row: 29th character = blank
24th row: 30th-33rd character contains text: [total spellpoints of character in rank #6]
24th row: 34th-37th character contains text: [current # spellpoints of character in rank #6]
24th row: 38th character = blank
24th row: 39th-40th character contains text: [class of character in rank #6]
25th row: all characters blank

Image display:
$042a-$0434
$0452-$045c
$047a-$0484
$04a2-$04ac
$04ca-$04d4
$04f2-$04fc
$051a-$0524
$0542-$054c
$056a-$0574
$0592-$059c
$05ba-$05c4

Text display:
$0488-$049e
$04b0-$04c6
$04d8-$04ee
$0500-$0516
$0528-$053e
$0550-$0566
$0578-$058e
$05a0-$05b6
$05c8-$05de
$05f0-$0606
$0618-$062e
$0640-$0656

Caption display: $0609-$0614
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

Horpner, please check your private messages when you have a moment.
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

Horpner, you mentioned something about writing the new dungeon code to the disk directly. Since we have the addresses for the Wine Cellar on disk, wouldn't it be a matter of just simply writing to the addresses on disk directly to effect the change?
User avatar
Horpner
Posts: 224
Joined: Thu Jan 08, 2009 11:53 pm
Location: New England
Contact:

Post by Horpner »

Yes, that will work.

I'm hoping something less dependent on the configuration of the dungeon disk can be worked out, to allow more flexibility.
Death and drek? WTF?
User avatar
Darendor
Posts: 1503
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Post by Darendor »

Horpner wrote:Yes, that will work.

I'm hoping something less dependent on the configuration of the dungeon disk can be worked out, to allow more flexibility.
I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I got it I---

Yeah, Block-Read and Block-Write. By this time tomorrow I should have something done up. Interested?
Post Reply