mirror of
https://github.com/a2geek/jewel-of-kaldun.git
synced 2025-03-21 14:29:33 +00:00
376 lines
10 KiB
ArmAsm
Executable File
376 lines
10 KiB
ArmAsm
Executable File
********************************
|
|
* Draw CASTLE1, CASTLE2, and *
|
|
* lower the drawbridge for *
|
|
* castle #1. *
|
|
* Uses: GENERAL.MAC *
|
|
********************************
|
|
|
|
********************************
|
|
* Draw King Aradeas' castle *
|
|
********************************
|
|
|
|
CASTLE1 ENT
|
|
LDX #5
|
|
JSR HCOLOR ; HCOLOR = 5
|
|
MOVB #159;EY ; set starting points:
|
|
NILW EX ; HPLOT 0,? TO 0,159
|
|
NILW SX
|
|
MOVB #5;CTR0
|
|
:0 JSR PARAPET1 ; draw 5 sets of parapets
|
|
DEC CTR0
|
|
BNE :0
|
|
MOVB #10;SY ; draw a bar 10 pixels wide
|
|
JSR PARAPET0 ; !
|
|
MOVB #0;SY ; !
|
|
JSR PARAPET0 ; !
|
|
MOVB #10;SY ; !
|
|
JSR PARAPET0 ; finished tower
|
|
MOVW #90;SX ; prepare for sloped left
|
|
MOVW #90;EX ; side of tower
|
|
MOVB #0;SY
|
|
MOVB #20;EY
|
|
JSR SLOPDOWN
|
|
MOVW #130;SX ; prepare for sloped right
|
|
MOVW #130;EX ; side of tower
|
|
MOVB #0;SY
|
|
JSR SLOPUP
|
|
LDX #7 ; HCOLOR = 7
|
|
JSR HCOLOR
|
|
MOVB #40;SY ; and prepare for drawing the
|
|
NILW SX ; outline of castle
|
|
MOVW #10;EX
|
|
MOVB #40;EY
|
|
MOVB #5;CTR0
|
|
:1 JSR OUTLINE1 ; draw outline of parapets
|
|
DEC CTR0
|
|
BNE :1
|
|
MOVW #100;SX ; begin outlining the tower
|
|
MOVB #159;SY
|
|
MOVW #100;EX
|
|
MOVB #30;EY
|
|
JSR DRAWLINE
|
|
MOVW #90;EX
|
|
MOVB #20;EY
|
|
JSR LINETO
|
|
MOVB #0;EY
|
|
JSR LINETO
|
|
MOVB #0;SY
|
|
MOVW #90;SX
|
|
MOVW #100;EX
|
|
MOVB #2;CTR0
|
|
:4 JSR OUTLINE1 ; now outlining upper parapets
|
|
DEC CTR0 ; of the tower
|
|
BNE :4
|
|
MOVW #140;EX ; and finish off the tower.
|
|
JSR LINETO
|
|
MOVB #20;EY
|
|
JSR LINETO
|
|
MOVW #130;EX
|
|
MOVB #31;EY
|
|
JSR LINETO
|
|
MOVB #159;EY
|
|
JSR LINETO
|
|
NILW SX ; draw the bottom line.
|
|
MOVB #159;SY
|
|
MOVW #279;EX
|
|
JSR DRAWLINE
|
|
RTS
|
|
|
|
********************************
|
|
* Draw the Castle of Kaldun. *
|
|
********************************
|
|
|
|
CASTLE2 LDX #5
|
|
JSR HCOLOR
|
|
MOVB #159;EY
|
|
MOVW #80;EX
|
|
MOVB #70;SY
|
|
MOVW #80;SX
|
|
JSR PARAPET0
|
|
MOVB #60;SY
|
|
JSR PARAPET0
|
|
MOVB #70;SY
|
|
JSR PARAPET0
|
|
MOVB #100;SY
|
|
JSR PARAPET0
|
|
JSR PARAPET0
|
|
MOVB #5;CTR0
|
|
:0 JSR PARAPET2
|
|
DEC CTR0
|
|
BNE :0
|
|
MOVW #70;SX
|
|
MOVW #70;EX
|
|
MOVB #60;SY
|
|
MOVB #80;EY
|
|
JSR SLOPDOWN
|
|
MOVB #90;EY
|
|
MOVW #110;SX
|
|
MOVW #110;EX
|
|
JSR SLOPUP
|
|
LDX #7
|
|
JSR HCOLOR
|
|
MOVB #159;SY
|
|
MOVB #159;EY
|
|
NILW SX
|
|
MOVW #279;EX
|
|
JSR DRAWLINE
|
|
MOVW #45;SX
|
|
MOVB #125;EY
|
|
MOVW #80;EX
|
|
JSR DRAWLINE
|
|
MOVB #159;SY
|
|
MOVW #80;SX
|
|
MOVW #80;EX
|
|
MOVB #90;EY
|
|
JSR DRAWLINE
|
|
MOVW #70;EX
|
|
MOVB #80;EY
|
|
JSR LINETO
|
|
MOVB #60;EY
|
|
JSR LINETO
|
|
MOVW #70;SX
|
|
MOVB #60;SY
|
|
MOVW #80;EX
|
|
JSR OUTLINE1
|
|
JSR OUTLINE1
|
|
MOVW #120;EX
|
|
JSR LINETO
|
|
MOVB #80;EY
|
|
JSR LINETO
|
|
MOVW #110;EX
|
|
MOVB #90;EY
|
|
JSR LINETO
|
|
MOVB #100;EY
|
|
JSR LINETO
|
|
MOVW #130;EX
|
|
JSR LINETO
|
|
MOVW #130;SX
|
|
MOVB #100;SY
|
|
MOVW #130;EX
|
|
MOVB #90;EY
|
|
MOVB #5;CTR0
|
|
:1 JSR OUTLINE2
|
|
DEC CTR0
|
|
BNE :1
|
|
MOVW #80;SX
|
|
MOVB #155;SY
|
|
MOVW #279;EX
|
|
MOVB #155;EY
|
|
MOVB #11;CTR0
|
|
:2 JSR LAYERS2
|
|
DEC CTR0
|
|
BNE :2
|
|
MOVW #110;EX
|
|
JSR LAYERS2
|
|
JSR LAYERS2
|
|
JSR LAYERS2
|
|
MOVW #75;SX
|
|
MOVW #115;EX
|
|
JSR LAYERS2
|
|
MOVW #70;SX
|
|
MOVW #120;EX
|
|
JSR LAYERS2
|
|
JSR LAYERS2
|
|
MOVW #80;SX
|
|
MOVB #81;SY
|
|
MOVW #80;EX
|
|
MOVB #84;EY
|
|
JSR BRICKS2
|
|
MOVW #90;SX
|
|
MOVB #76;SY
|
|
MOVW #90;EX
|
|
MOVB #79;EY
|
|
JSR BRICKS2
|
|
MOVW #100;SX
|
|
MOVB #81;SY
|
|
MOVW #100;EX
|
|
MOVB #84;EY
|
|
JSR BRICKS2
|
|
MOVW #110;SX
|
|
MOVB #76;SY
|
|
MOVW #110;EX
|
|
MOVB #79;EY
|
|
JSR DRAWLINE
|
|
MOVB #9;CTR0
|
|
:3 MOVB #106;SY
|
|
MOVB #109;EY
|
|
JSR BRICKS2
|
|
ADDW SX;#10;SX
|
|
MOVW SX;EX
|
|
MOVB #111;SY
|
|
MOVB #114;EY
|
|
JSR BRICKS2
|
|
ADDW SX;#10;SX
|
|
MOVW SX;EX
|
|
DEC CTR0
|
|
BNE :3
|
|
RTS
|
|
|
|
********************************
|
|
* General subroutines used by *
|
|
* castle drawing routines. *
|
|
********************************
|
|
|
|
BRICKS2 JSR DRAWLINE
|
|
ADDB SY;#10;SY
|
|
ADDB EY;#10;EY
|
|
LDA EY
|
|
CMP #160
|
|
BLT BRICKS2
|
|
RTS
|
|
|
|
LAYERS2 JSR DRAWLINE
|
|
SUBB SY;#5;SY
|
|
SUBB EY;#5;EY
|
|
RTS
|
|
|
|
OUTLINE2 JSR DRAWLINE
|
|
SUBB SY;#10;SY ; SY=SY-10
|
|
ADDW EX;#20;EX ; EX=EX+20
|
|
JSR DRAWLINE
|
|
ADDW SX;#20;SX ; SX=SX+20
|
|
ADDB EY;#10;EY ; EY=EY+10
|
|
JSR DRAWLINE
|
|
ADDB SY;#10;SY ; SY=SY+10
|
|
ADDW EX;#9;EX ; EX=EX+9 (not off page..)
|
|
JSR DRAWLINE
|
|
ADDW EX;#1;EX ; EX=EX+1 (correct ^^^)
|
|
ADDW SX;#10;SX ; SX=SX+10
|
|
SUBB EY;#10;EY ; EY=EY-10
|
|
RTS
|
|
|
|
OUTLINE1 JSR DRAWLINE
|
|
ADDB #10;SX;SX ; SX=SX+10
|
|
ADDB #10;EY;EY ; EY=EY+10
|
|
JSR DRAWLINE
|
|
ADDB #10;SY;SY ; SY=SY+10
|
|
ADDB #10;EX;EX ; EX=EX+10
|
|
JSR DRAWLINE
|
|
ADDB #10;SX;SX ; SX=SX+10
|
|
SUBB EY;#10;EY ; EY=EY-10
|
|
JSR DRAWLINE
|
|
SUBB SY;#10;SY ; SY=SY-10
|
|
ADDB #10;EX;EX ; EX=EX+10
|
|
RTS
|
|
|
|
DRAWLINE ENT
|
|
LDA SY ; draws a hi-res line
|
|
LDX SX ; using the AppleSoft
|
|
LDY SX+1 ; routines:
|
|
JSR HPOSN ; HPLOT SX,SY TO EX,EY
|
|
LINETO LDY EY
|
|
LDA EX
|
|
LDX EX+1
|
|
JSR HPLOTTO
|
|
RTS
|
|
|
|
PARAPET1 MOVB #40;SY ; draw the high part of
|
|
JSR PARAPET0 ; a parapet and then the
|
|
MOVB #50;SY ; low part of it.
|
|
JMP PARAPET0 ; (King Aradeas' castle)
|
|
|
|
PARAPET2 MOVB #90;SY ; draw parapets for
|
|
JSR PARAPET0 ; Kalduns' castle.
|
|
JSR PARAPET0
|
|
MOVB #100;SY
|
|
|
|
PARAPET0 MOVB #10;CTR1 ; draw a block of 10 lines
|
|
:0 JSR DRAWLINE ; (vertical)
|
|
JSR INCX
|
|
DEC CTR1
|
|
BNE :0
|
|
RTS
|
|
|
|
SLOPDOWN MOVB #10;CTR0
|
|
:0 JSR DRAWLINE
|
|
JSR INCX
|
|
INC EY
|
|
DEC CTR0
|
|
BNE :0
|
|
RTS
|
|
|
|
SLOPUP MOVB #10;CTR0
|
|
:0 JSR DRAWLINE
|
|
JSR INCX
|
|
DEC EY
|
|
DEC CTR0
|
|
BNE :0
|
|
RTS
|
|
|
|
INCX INC SX ; increase both
|
|
BNE :0 ; SX and EX by one.
|
|
INC SX+1
|
|
:0 INC EX
|
|
BNE :1
|
|
INC EX+1
|
|
:1 RTS
|
|
|
|
********************************
|
|
* Variables used by the Castle *
|
|
* drawing routines. *
|
|
********************************
|
|
|
|
SX ENT
|
|
HEX 0000
|
|
SY ENT
|
|
HEX 00
|
|
EX ENT
|
|
HEX 0000
|
|
EY ENT
|
|
HEX 00
|
|
CTR0 HEX 00
|
|
CTR1 HEX 00
|
|
|
|
********************************
|
|
* Lower King Aradeas' *
|
|
* drawbridge: *
|
|
********************************
|
|
|
|
DRAWBRID MOVB #0;CTR0
|
|
NILW SX
|
|
NILW EX
|
|
MOVB #131;SX
|
|
:0 LDX #7
|
|
JSR DISPLAYB
|
|
LDA #100
|
|
JSR MONWAIT
|
|
LDX #4
|
|
JSR DISPLAYB
|
|
INC CTR0
|
|
LDA CTR0
|
|
CMP #27
|
|
BLT :0
|
|
DEC CTR0 ; fall through to Display
|
|
LDX #7 ; Bridge routine...
|
|
|
|
DISPLAYB JSR HCOLOR
|
|
MOVB #159;SY
|
|
LDY CTR0
|
|
MOVB BRIDGEX,Y;EX
|
|
MOVB BRIDGEY,Y;EY
|
|
JSR DRAWLINE
|
|
MOVB #120;SY
|
|
LDY CTR0
|
|
MOVB CHAINX,Y;EX
|
|
MOVB CHAINY,Y;EY
|
|
JSR DRAWLINE
|
|
RTS
|
|
|
|
********************************
|
|
* Drawbridge points: *
|
|
********************************
|
|
|
|
BRIDGEX DFB 131,133,136,139,142,145,148,151,154
|
|
DFB 156,159,161,163,166,168,170,171,173
|
|
DFB 175,176,177,178,179,180,180,180,180
|
|
BRIDGEY DFB 109,109,109,109,110,111,112,113,114
|
|
DFB 116,117,119,121,123,125,127,130,132
|
|
DFB 135,138,140,143,146,149,152,155,159
|
|
CHAINX DFB 131,133,135,138,140,142,145,147,149
|
|
DFB 151,153,155,157,159,160,162,163,165
|
|
DFB 166,167,168,169,169,170,170,170,170
|
|
CHAINY DFB 119,119,119,119,120,120,121,122,123
|
|
DFB 124,125,127,128,130,132,134,136,138
|
|
DFB 140,142,144,146,149,151,153,156,159
|
|
|