mirror of
https://github.com/antoinevignau/source.git
synced 2024-11-15 13:05:18 +00:00
0498bcc0c9
of a couple of (working) disassemblies
2806 lines
55 KiB
ArmAsm
2806 lines
55 KiB
ArmAsm
*
|
|
* Swashbuckler
|
|
* (c) Stephenson
|
|
* (s) 2018, Brutal Deluxe Software
|
|
*
|
|
* This is the $0800..$1FFF area
|
|
* Called from T3 & T4 by previous stage
|
|
* A lot of unused areas here!
|
|
*
|
|
|
|
mx %11
|
|
org $0800
|
|
lst off
|
|
dsk swashbuckler
|
|
|
|
*----------------------------
|
|
|
|
* Zero page
|
|
* $4E: random value
|
|
* $E3: bit 7 - 0: HGR1, 1: HGR2
|
|
* bit 6 - 0: left, 1: right (direction of player)
|
|
* $E9:
|
|
* $EB: sprite index
|
|
* $EC: which HGR page is active
|
|
* bit 7 - 0: HGR1, 1: HGR2
|
|
* $ED: X-position (in bytes) of the player
|
|
* $F9: X start
|
|
* $FA: ?offset
|
|
* $FB: sprite width in bytes
|
|
* $FC: Y start
|
|
* $FD: Y end
|
|
* $FE: key pressed
|
|
|
|
zpRANDOM = $4E
|
|
zpHPLAYER = $E3
|
|
zpHGRACTIVE = $EC
|
|
zpXPLAYER = $ED
|
|
zpXSCREEN = $F9
|
|
zpSPRWIDTH = $FB
|
|
zpYBEGIN = $FC
|
|
zpYEND = $FD
|
|
zpKEY = $FE
|
|
|
|
*----------------------------
|
|
|
|
KBD EQU $C000
|
|
KBDSTROBE EQU $C010
|
|
SPKR EQU $C030
|
|
TXTCLR EQU $C050
|
|
TXTSET EQU $C051
|
|
MIXCLR EQU $C052
|
|
TXTPAGE1 EQU $C054
|
|
TXTPAGE2 EQU $C055
|
|
HIRES EQU $C057
|
|
VTAB EQU $FC22
|
|
HOME EQU $FC58
|
|
WAIT EQU $FCA8
|
|
CROUT EQU $FD8E
|
|
COUT EQU $FDED
|
|
|
|
*----------------------------
|
|
|
|
ptrLINEH HEX 0004080C1014181C0004080C1014181C
|
|
HEX 0105090D1115191D0105090D1115191D
|
|
HEX 02060A0E12161A1E02060A0E12161A1E
|
|
HEX 03070B0F13171B1F03070B0F13171B1F
|
|
HEX 0004080C1014181C0004080C1014181C
|
|
HEX 0105090D1115191D0105090D1115191D
|
|
HEX 02060A0E12161A1E02060A0E12161A1E
|
|
HEX 03070B0F13171B1F03070B0F13171B1F
|
|
HEX 0004080C1014181C0004080C1014181C
|
|
HEX 0105090D1115191D0105090D1115191D
|
|
HEX 02060A0E12161A1E02060A0E12161A1E
|
|
HEX 03070B0F13171B1F03070B0F13171B1F
|
|
|
|
*----------
|
|
|
|
saveX DB $FF ; save X
|
|
saveY DB $FF ; save Y
|
|
sprWIDTH DB $00 ; width of a sprite in bytes
|
|
pageHGR DB $40 ; 20 or 40: HGR page
|
|
charFONT DB $33 ; this is the char index we have to print
|
|
|
|
*--- X of sprites on screen
|
|
|
|
L08D0 DB $1D ; player
|
|
L08D1 DB $02 ; foe 1
|
|
L08D2 DB $1E ; foe 2
|
|
L08D3 DB $00 ; foe 3
|
|
L08D4 DB $09 ; foe 4
|
|
L08D7 DB $0B
|
|
L08D8 DB $10
|
|
L08D9 DB $0C
|
|
L08DA DB $12
|
|
L08DE DB $12
|
|
|
|
*----------
|
|
|
|
ptrLINEL HEX 00000000000000008080808080808080
|
|
HEX 00000000000000008080808080808080
|
|
HEX 00000000000000008080808080808080
|
|
HEX 00000000000000008080808080808080
|
|
HEX 2828282828282828A8A8A8A8A8A8A8A8
|
|
HEX 2828282828282828A8A8A8A8A8A8A8A8
|
|
HEX 2828282828282828A8A8A8A8A8A8A8A8
|
|
HEX 2828282828282828A8A8A8A8A8A8A8A8
|
|
HEX 5050505050505050D0D0D0D0D0D0D0D0
|
|
HEX 5050505050505050D0D0D0D0D0D0D0D0
|
|
HEX 5050505050505050D0D0D0D0D0D0D0D0
|
|
HEX 5050505050505050D0D0D0D0D0D0D0D0
|
|
|
|
*----------
|
|
|
|
theSCORE HEX 1A00 ; score
|
|
theLIVES DB $03 ; lives
|
|
|
|
L09C3 DB $80
|
|
L09C4 DB $C0
|
|
L09C5 DB $0C
|
|
L09C7 DB $00
|
|
L09C8 DB $D2
|
|
L09C9 DB $01
|
|
L09CA DB $00
|
|
L09CB DB $00
|
|
L09CD DB $80
|
|
L09CE DB $00
|
|
L09CF DB $00
|
|
L09D0 DB $00
|
|
L09D1 DB $19
|
|
L09D2 DB $1F
|
|
L09D3 DB $21
|
|
L09D4 DB $FE ; index of sprite 5
|
|
L09D5 DB $0E
|
|
L09D6 DB $C0
|
|
L09D7 DB $35
|
|
L09D8 DB $19
|
|
L09D9 DB $06
|
|
L09DA DB $00
|
|
L09DB DB $84
|
|
saveHPLAYER DB $C0
|
|
L09DD DB $0C
|
|
fgPLAY DB $FF ; true: game on, false: game over
|
|
L09DF DB $00
|
|
|
|
*----------
|
|
|
|
drawSPRITE1 LDA #$20 ; draw HGR1
|
|
STA pageHGR
|
|
bne L0A0D
|
|
|
|
drawSPRITE2 LDA #$40 ; draw HGR2
|
|
STA pageHGR
|
|
|
|
L0A0D STX saveX
|
|
STY saveY
|
|
|
|
LDY zpYBEGIN ; from line Y
|
|
L0A15 LDA ptrLINEH,Y
|
|
CLC
|
|
ADC pageHGR
|
|
STA L0A35+2
|
|
STA L0A38+2
|
|
LDA ptrLINEL,Y
|
|
STA L0A35+1
|
|
STA L0A38+1
|
|
LDA zpSPRWIDTH
|
|
STA sprWIDTH
|
|
LDX zpXSCREEN
|
|
L0A32 LDA $6CD7
|
|
L0A35 ORA $5DA8,X
|
|
L0A38 STA $5DA8,X
|
|
INC L0A32+1
|
|
BNE L0A43
|
|
INC L0A32+2
|
|
L0A43 INX
|
|
DEC sprWIDTH
|
|
BNE L0A32
|
|
INY
|
|
CPY zpYEND ; to end line
|
|
BNE L0A15
|
|
LDX saveX
|
|
LDY saveY
|
|
RTS
|
|
|
|
*---------- Draw a sprite on screen
|
|
|
|
drawSPRITE STA $EB ; sprite index
|
|
ASL
|
|
TAY
|
|
LDA tblSPRITES,Y
|
|
STA L0A71+1 ; get the pointer to its structure
|
|
CLC
|
|
ADC #$04
|
|
STA L0A32+1 ; and to its data
|
|
INY
|
|
LDA tblSPRITES,Y
|
|
STA L0A71+2
|
|
STA L0A32+2
|
|
LDY #$03 ; copy its structure
|
|
L0A71 LDA $6C5B,Y
|
|
STA |$00FA,Y
|
|
DEY
|
|
BPL L0A71
|
|
SEC
|
|
LDA zpXSCREEN ; offset on screen
|
|
SBC $FA ; width in bytes
|
|
STA zpXSCREEN ; save it
|
|
BIT zpHPLAYER ; which HGR page?
|
|
BPL L0A8B
|
|
jmp drawSPRITE2
|
|
L0A8B jmp drawSPRITE1
|
|
|
|
*----------
|
|
|
|
L0A8F STA $EF ; save sprite
|
|
JSR L0B43
|
|
|
|
BIT zpHGRACTIVE ; which page is active?
|
|
BMI L0AB3 ; page 2, so draw on page 1
|
|
|
|
LDA #$80 ; we're on page 1
|
|
ORA zpHGRACTIVE ; next is page 2
|
|
STA zpHGRACTIVE
|
|
LDA TXTPAGE1 ; show HGR1
|
|
LDA #$80 ; draw on HGR2
|
|
ORA zpHPLAYER
|
|
STA zpHPLAYER
|
|
JSR clearHGR2 ; clear HGR2
|
|
JSR L0ACC ; redraw sprites
|
|
LDA TXTPAGE2 ; and show the page
|
|
rts
|
|
|
|
L0AB3 LDA zpHGRACTIVE ; we're on page 2
|
|
AND #$7F ; next is page 1
|
|
STA zpHGRACTIVE
|
|
LDA TXTPAGE2 ; show HGR2
|
|
LDA zpHPLAYER ; draw on HGR1
|
|
AND #$7F
|
|
STA zpHPLAYER
|
|
JSR clearHGR1 ; clear HGR1
|
|
JSR L0ACC ; redraw sprites
|
|
LDA TXTPAGE1 ; and show the page
|
|
L0ACB RTS
|
|
|
|
*---------- Draw all sprites?
|
|
|
|
L0ACC JSR L0C0C
|
|
JSR L1000 ; draw sprite 1
|
|
JSR L1013 ; draw sprite 2
|
|
JSR L1026 ; draw sprite 3
|
|
JSR L1039 ; draw sprite 4
|
|
jmp L104C ; draw sprite 5
|
|
|
|
*---------- Init game
|
|
|
|
initALL LDA #$03
|
|
STA theLIVES
|
|
LDA #$00
|
|
STA theSCORE
|
|
STA theSCORE+1
|
|
STA L09CB
|
|
STA L09DF
|
|
STA L09C5
|
|
STA L09D5
|
|
STA L09C4
|
|
STA L09D6
|
|
STA L08D1
|
|
STA L08D3
|
|
STA |$00E9
|
|
STA L09CD
|
|
STA L09CE
|
|
STA L09CF
|
|
STA L09D0
|
|
LDA #$1F
|
|
STA L08D0
|
|
STA L08D2
|
|
LDA #$FF
|
|
STA L09C3
|
|
LDA TXTCLR
|
|
LDA MIXCLR
|
|
LDA HIRES
|
|
LDA TXTPAGE1
|
|
LDA #$40 ; player looks right
|
|
STA zpHPLAYER
|
|
LDA #$08 ; sprite for player
|
|
STA $E8
|
|
LDA #$11 ; x-offset for player
|
|
STA zpXPLAYER
|
|
LDA #$1F
|
|
STA L09D2
|
|
LDA #$21
|
|
STA L09D3
|
|
RTS
|
|
|
|
*---------- Check x-position of player
|
|
|
|
L0B43 LDA #$04
|
|
CMP zpXPLAYER
|
|
BCC L0B4F
|
|
LDA #$05
|
|
STA zpXPLAYER
|
|
BNE L0B59
|
|
L0B4F LDA #$1C
|
|
CMP zpXPLAYER
|
|
BCS L0B59
|
|
LDA #$1C
|
|
STA zpXPLAYER
|
|
L0B59 SEC
|
|
LDA L08D0
|
|
SBC zpXPLAYER
|
|
STA L08D7
|
|
SEC
|
|
LDA zpXPLAYER
|
|
SBC L08D1
|
|
STA L08D8
|
|
SEC
|
|
LDA L08D2
|
|
SBC zpXPLAYER
|
|
STA L08D9
|
|
SEC
|
|
LDA zpXPLAYER
|
|
SBC L08D3
|
|
STA L08DA
|
|
LDA #$02
|
|
CMP L08D7
|
|
BCC L0B90
|
|
INC L08D0
|
|
LDA L08D0
|
|
CMP #$1E
|
|
BCC L0B90
|
|
DEC zpXPLAYER
|
|
L0B90 LDA L08D0
|
|
CMP #$07
|
|
BCS L0B9F
|
|
LDA #$07
|
|
STA L08D0
|
|
JMP L0BAB
|
|
|
|
L0B9F LDA L08D0
|
|
CMP #$1E
|
|
BCC L0BAB
|
|
LDA #$1E
|
|
STA L08D0
|
|
L0BAB LDA #$02
|
|
CMP L08D8
|
|
BCC L0BB9
|
|
DEC L08D1
|
|
BNE L0BB9
|
|
INC zpXPLAYER
|
|
L0BB9 LDA L08D1
|
|
BMI L0BC2
|
|
CMP #$01
|
|
BCS L0BC5
|
|
L0BC2 INC L08D1
|
|
L0BC5 LDA L08D1
|
|
BMI L0BC2
|
|
JMP L0BD1
|
|
|
|
L0BD1 LDA #$02
|
|
CMP L08D9
|
|
BCC L0BE4
|
|
INC L08D2
|
|
LDA L08D2
|
|
CMP #$1E
|
|
BCC L0BE4
|
|
DEC zpXPLAYER
|
|
L0BE4 LDA L08D2
|
|
CMP #$07
|
|
BCS L0BF3
|
|
LDA #$07
|
|
STA L08D2
|
|
JMP L0BFF
|
|
|
|
L0BF3 LDA L08D2
|
|
CMP #$1E
|
|
BCC L0BFF
|
|
LDA #$1E
|
|
STA L08D2
|
|
L0BFF LDA L08D3
|
|
CMP #$21
|
|
BCC L0C0B
|
|
LDA #$21
|
|
STA L08D3
|
|
L0C0B RTS
|
|
|
|
L0C0C LDA zpXPLAYER
|
|
STA zpXSCREEN
|
|
LDA $E8
|
|
jmp drawSPRITE
|
|
|
|
*---------- Handle keypress
|
|
|
|
doKEYPRESS BIT KBD
|
|
BPL L0C69
|
|
L0C1B LDA KBD
|
|
STA zpKEY
|
|
LDA #$00
|
|
STA KBDSTROBE
|
|
STA L09CB
|
|
LDA zpKEY
|
|
CMP #"S" ; Switch direction
|
|
BNE L0C4A
|
|
BIT zpHPLAYER ; bit 6?
|
|
BVC L0C3D ; is left turned?
|
|
LDA zpHPLAYER ; no, turned right
|
|
AND #$BF ; %1011_1111
|
|
STA zpHPLAYER ; now looks left
|
|
LDA #$01 ; sprite 1
|
|
JMP L0C45
|
|
|
|
L0C3D LDA zpHPLAYER ; force bit 6
|
|
ORA #$40 ; now looks right
|
|
STA zpHPLAYER
|
|
LDA #$08 ; sprite 8
|
|
L0C45 STA $E8
|
|
JSR L0A8F ; draw next frame
|
|
|
|
* BUG: keyboard value is not restored
|
|
|
|
lda zpKEY
|
|
|
|
L0C4A CMP #$C1 ; A
|
|
BEQ L0CAE
|
|
CMP #$C4 ; D
|
|
BEQ L0C7C
|
|
CMP #$C9 ; I
|
|
BEQ L0C72
|
|
CMP #$CA ; J
|
|
BEQ L0C75
|
|
CMP #$CB ; K
|
|
BEQ L0C78
|
|
CMP #$CC ; L
|
|
BEQ L0C6C
|
|
CMP #$CD ; M
|
|
BEQ L0C6F
|
|
L0C66 JSR L0A8F
|
|
L0C69 INC zpRANDOM ; randomize
|
|
RTS
|
|
|
|
L0C6C JMP L0D16
|
|
L0C6F JMP L0D45
|
|
L0C72 JMP L0CE0
|
|
L0C75 JMP L0CF2
|
|
L0C78 JMP L0D04
|
|
|
|
L0C7C BIT zpHPLAYER ; bit 6?
|
|
BVC L0C97 ; player looks left?
|
|
LDA #$09 ; right
|
|
STA $E8
|
|
JSR L0A8F
|
|
INC zpXPLAYER
|
|
LDA #$0D
|
|
STA $E8
|
|
JSR L0A8F
|
|
LDA #$08
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0C97 LDA #$07 ; left
|
|
STA $E8
|
|
JSR L0A8F
|
|
INC zpXPLAYER
|
|
LDA #$06
|
|
STA $E8
|
|
JSR L0A8F
|
|
LDA #$01
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
*--- A - Move player to the left
|
|
|
|
L0CAE BIT zpHPLAYER ; bit 6?
|
|
BVC L0CC9 ; not set
|
|
LDA #$0D
|
|
STA $E8
|
|
JSR L0A8F ; au repos
|
|
DEC zpXPLAYER ; x--
|
|
LDA #$09
|
|
STA $E8
|
|
JSR L0A8F ;
|
|
LDA #$08
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0CC9 LDA #$06
|
|
STA $E8
|
|
JSR L0A8F
|
|
DEC zpXPLAYER
|
|
LDA #$07
|
|
STA $E8
|
|
JSR L0A8F
|
|
LDA #$01
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0CE0 BIT zpHPLAYER ; bit 6?
|
|
BVC L0CEB ; not set
|
|
LDA #$0E
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0CEB LDA #$02
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0CF2 BIT zpHPLAYER
|
|
BVC L0CFD
|
|
LDA #$0C
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0CFD LDA #$03
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0D04 BIT zpHPLAYER
|
|
BVC L0D0F
|
|
LDA #$08
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0D0F LDA #$01
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
*----------
|
|
|
|
L0D16 LDA L09C3
|
|
BNE L0D25
|
|
LDY #$5A
|
|
STY $50
|
|
JSR L0303 ; beep
|
|
JMP L0CF2
|
|
|
|
L0D25 BIT zpHPLAYER
|
|
BVC L0D37
|
|
LDA #$09
|
|
STA $E8
|
|
JSR L0A8F
|
|
LDA #$0A
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0D37 LDA #$07
|
|
STA $E8
|
|
JSR L0A8F
|
|
LDA #$04
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0D45 BIT zpHPLAYER
|
|
BVC L0D50
|
|
LDA #$0B
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
L0D50 LDA #$05
|
|
STA $E8
|
|
JMP L0C66
|
|
|
|
*---------- Clear HGR1
|
|
|
|
clearHGR1 LDA #$00
|
|
LDX #$27
|
|
L0E04 STA $2028,X
|
|
STA $2428,X
|
|
STA $2828,X
|
|
STA $2C28,X
|
|
STA $3028,X
|
|
STA $3428,X
|
|
STA $3828,X
|
|
STA $3C28,X
|
|
STA $20A8,X
|
|
STA $24A8,X
|
|
STA $28A8,X
|
|
STA $2CA8,X
|
|
STA $30A8,X
|
|
STA $34A8,X
|
|
STA $38A8,X
|
|
STA $3CA8,X
|
|
STA $2128,X
|
|
STA $2528,X
|
|
STA $2928,X
|
|
STA $2D28,X
|
|
STA $3128,X
|
|
STA $3528,X
|
|
STA $3928,X
|
|
STA $3D28,X
|
|
STA $21A8,X
|
|
STA $25A8,X
|
|
STA $29A8,X
|
|
STA $2DA8,X
|
|
STA $31A8,X
|
|
STA $35A8,X
|
|
STA $39A8,X
|
|
STA $3DA8,X
|
|
STA $2228,X
|
|
STA $2628,X
|
|
STA $2A28,X
|
|
STA $2E28,X
|
|
STA $3228,X
|
|
STA $3628,X
|
|
STA $3A28,X
|
|
STA $3E28,X
|
|
STA $22A8,X
|
|
STA $26A8,X
|
|
STA $2AA8,X
|
|
STA $2EA8,X
|
|
STA $32A8,X
|
|
STA $36A8,X
|
|
STA $3AA8,X
|
|
STA $3EA8,X
|
|
STA $2328,X
|
|
STA $2728,X
|
|
STA $2B28,X
|
|
STA $2F28,X
|
|
STA $3328,X
|
|
STA $3728,X
|
|
STA $3B28,X
|
|
STA $3F28,X
|
|
STA $23A8,X
|
|
STA $27A8,X
|
|
STA $2BA8,X
|
|
STA $2FA8,X
|
|
STA $33A8,X
|
|
STA $37A8,X
|
|
STA $3BA8,X
|
|
STA $3FA8,X
|
|
DEX
|
|
BPL L0EC8
|
|
RTS
|
|
L0EC8 JMP L0E04
|
|
|
|
*---------- Clear HGR2
|
|
|
|
clearHGR2 LDA #$00
|
|
LDX #$27
|
|
L0F04 STA $4028,X
|
|
STA $4428,X
|
|
STA $4828,X
|
|
STA $4C28,X
|
|
STA $5028,X
|
|
STA $5428,X
|
|
STA $5828,X
|
|
STA $5C28,X
|
|
STA $40A8,X
|
|
STA $44A8,X
|
|
STA $48A8,X
|
|
STA $4CA8,X
|
|
STA $50A8,X
|
|
STA $54A8,X
|
|
STA $58A8,X
|
|
STA $5CA8,X
|
|
STA $4128,X
|
|
STA $4528,X
|
|
STA $4928,X
|
|
STA $4D28,X
|
|
STA $5128,X
|
|
STA $5528,X
|
|
STA $5928,X
|
|
STA $5D28,X
|
|
STA $41A8,X
|
|
STA $45A8,X
|
|
STA $49A8,X
|
|
STA $4DA8,X
|
|
STA $51A8,X
|
|
STA $55A8,X
|
|
STA $59A8,X
|
|
STA $5DA8,X
|
|
STA $4228,X
|
|
STA $4628,X
|
|
STA $4A28,X
|
|
STA $4E28,X
|
|
STA $5228,X
|
|
STA $5628,X
|
|
STA $5A28,X
|
|
STA $5E28,X
|
|
STA $42A8,X
|
|
STA $46A8,X
|
|
STA $4AA8,X
|
|
STA $4EA8,X
|
|
STA $52A8,X
|
|
STA $56A8,X
|
|
STA $5AA8,X
|
|
STA $5EA8,X
|
|
STA $4328,X
|
|
STA $4728,X
|
|
STA $4B28,X
|
|
STA $4F28,X
|
|
STA $5328,X
|
|
STA $5728,X
|
|
STA $5B28,X
|
|
STA $5F28,X
|
|
STA $43A8,X
|
|
STA $47A8,X
|
|
STA $4BA8,X
|
|
STA $4FA8,X
|
|
STA $53A8,X
|
|
STA $57A8,X
|
|
STA $5BA8,X
|
|
STA $5FA8,X
|
|
DEX
|
|
BPL L0FC8
|
|
RTS
|
|
L0FC8 JMP L0F04
|
|
|
|
*---------- Draw all sprites
|
|
|
|
L1000 LDA L08D0
|
|
L1003 STA zpXSCREEN
|
|
LDA L08DE
|
|
BIT |$00E9
|
|
BMI L100F
|
|
LDA #$10
|
|
L100F jmp drawSPRITE
|
|
|
|
L1013 LDA L08D1
|
|
STA zpXSCREEN
|
|
LDA L09D1
|
|
BIT L09CD
|
|
BMI L1022
|
|
LDA #$10
|
|
L1022 jmp drawSPRITE
|
|
|
|
L1026 LDA L08D2
|
|
STA zpXSCREEN
|
|
LDA L09D2
|
|
BIT L09CE
|
|
BMI L1035
|
|
LDA #$10
|
|
L1035 jmp drawSPRITE
|
|
|
|
L1039 LDA L08D3
|
|
STA zpXSCREEN
|
|
LDA L09D3
|
|
BIT L09CF
|
|
BMI L1048
|
|
LDA #$10
|
|
L1048 jmp drawSPRITE
|
|
|
|
L104C LDA L08D4
|
|
STA zpXSCREEN
|
|
LDA L09D4
|
|
BIT L09D0
|
|
BMI L105B
|
|
LDA #$10
|
|
L105B jmp drawSPRITE
|
|
|
|
*----------
|
|
|
|
L105F BIT |$00E9
|
|
BPL L10E1
|
|
BVC L106E
|
|
LDA #$17
|
|
STA L08DE
|
|
JMP L10E1
|
|
L106E JMP L15DA
|
|
|
|
L1071 BIT L09C4
|
|
BMI L10AB
|
|
LDA L09C5
|
|
CMP #$05
|
|
BCS L1091
|
|
LDY zpRANDOM
|
|
LDA L1D00,Y
|
|
CMP #$30
|
|
BCS L10AE
|
|
L1086 LDA #$80
|
|
ORA L09C4
|
|
STA L09C4
|
|
JMP L10A1
|
|
|
|
L1091 LDY zpRANDOM
|
|
LDA L1D00,Y
|
|
CMP #$20
|
|
BCC L10AE
|
|
CMP #$40
|
|
BCC L1086
|
|
JMP L10AE
|
|
|
|
L10A1 BIT |$00E9
|
|
BPL L10E1
|
|
BIT L09C4
|
|
BPL L10AE
|
|
L10AB JMP L1209
|
|
|
|
L10AE LDY zpRANDOM
|
|
LDA L1D00,Y
|
|
STA $EB ; sprite
|
|
AND #$07
|
|
TAY
|
|
LDA L1E00,Y
|
|
STA L08DE
|
|
LDA $EB
|
|
CMP #$E6
|
|
BCS L10CB
|
|
CMP #$64
|
|
BCC L10D6
|
|
JMP L10DE
|
|
|
|
L10CB INC L08D0
|
|
LDA #$11
|
|
STA L08DE
|
|
JMP L10DE
|
|
|
|
L10D6 DEC L08D0
|
|
LDA #$11
|
|
STA L08DE
|
|
L10DE jmp L0A8F
|
|
|
|
L10E1 RTS
|
|
|
|
*----------
|
|
|
|
L10E2 BIT zpHPLAYER
|
|
BVC L10F9
|
|
JSR L165D
|
|
LDA $E8
|
|
CMP #$0A
|
|
BEQ L10FF
|
|
CMP #$0C
|
|
BEQ L10F6
|
|
rts ; JMP L1208
|
|
L10F6 JMP L1167
|
|
|
|
L10F9 JSR L1680
|
|
JMP L138B
|
|
|
|
L10FF BIT |$00E9
|
|
BPL L114C
|
|
BVS L114C
|
|
LDA L08D7
|
|
CMP #$0D
|
|
BCS L114C
|
|
LDA L08DE
|
|
CMP #$11
|
|
BEQ L1164
|
|
LDA #$09
|
|
CMP L08D7
|
|
BCC L114C
|
|
L111B LDA #$16
|
|
STA L08DE
|
|
INC L09C5
|
|
JSR L0A8F
|
|
JSR L11C7
|
|
JSR L11D1
|
|
JSR L11F1 ; check next level
|
|
LDA #$17
|
|
STA L08DE
|
|
LDA #$0E
|
|
STA $E8
|
|
JSR L0A8F
|
|
LDA |$00E9
|
|
ORA #$40
|
|
STA |$00E9
|
|
JSR L11FE
|
|
JSR L11E1
|
|
jmp L114F
|
|
L114C rts ; JMP L1208
|
|
|
|
L114F NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
LDA theSCORE
|
|
CMP #$17
|
|
BNE L115D
|
|
INC theLIVES ; new lives
|
|
L115D jmp L1854
|
|
|
|
L1164 JMP L1186
|
|
|
|
L1167 BIT |$00E9
|
|
BPL L114C
|
|
BVS L114C
|
|
LDA L08D7
|
|
CMP #$0A
|
|
BCS L114C
|
|
LDA L08DE
|
|
CMP #$11
|
|
BEQ L1186
|
|
LDA #$05
|
|
CMP L08D7
|
|
BCC L114C
|
|
JMP L111B
|
|
|
|
L1186 LDX #$3C
|
|
STX $50
|
|
JSR L0303
|
|
INC zpRANDOM
|
|
INC L09CB
|
|
INC L08D0
|
|
LDA L09CB
|
|
CMP #$01
|
|
BEQ L11C4
|
|
LDA #$08
|
|
CMP L09C5
|
|
BCS L11C4
|
|
DEC L08D0
|
|
JSR L1261
|
|
JSR L0A8F
|
|
L11AC BIT KBD
|
|
BMI L11C1
|
|
JSR L143B
|
|
INC zpRANDOM
|
|
BNE L11AC
|
|
DEC L08D0
|
|
JSR L1261
|
|
JSR L0A8F
|
|
L11C1 JMP L0C1B
|
|
L11C4 rts ; JMP L1208
|
|
|
|
*---------- Ennemy is killed
|
|
|
|
L11C7 LDA #$96
|
|
STA $50
|
|
LDX #$64
|
|
jmp L0303
|
|
|
|
*---------- Wait
|
|
|
|
L11D1 LDA #$05
|
|
STA L09CA
|
|
L11D6 LDA #$FF
|
|
JSR WAIT
|
|
DEC L09CA
|
|
BNE L11D6
|
|
RTS
|
|
|
|
*---------- Wait
|
|
|
|
L11E1 LDA #$02
|
|
STA L09CA
|
|
L11E6 LDA #$FF
|
|
JSR WAIT
|
|
DEC L09CA
|
|
BNE L11E6
|
|
RTS
|
|
|
|
L11F1 CLC
|
|
INC theSCORE
|
|
BCC L11FA
|
|
INC theSCORE+1
|
|
L11FA JMP L1B76 ; next level
|
|
|
|
*---------- Play sound
|
|
|
|
L11FE LDA #$1E
|
|
STA $50
|
|
LDY #$1E
|
|
jmp L0303
|
|
|
|
L1209 BIT L09C4
|
|
BVS L121E
|
|
LDA #$40
|
|
ORA L09C4
|
|
STA L09C4
|
|
JSR L1252
|
|
LDA #$08
|
|
STA L09C9
|
|
L121E DEC L09C9
|
|
BNE L122E
|
|
LDA #$BF
|
|
AND L09C4
|
|
STA L09C4
|
|
JMP L10AE
|
|
|
|
L122E LDY L09C7
|
|
LDA L1E80,Y
|
|
STA L09C8
|
|
AND #$1F
|
|
STA L08DE
|
|
BIT L09C8
|
|
BPL L124C
|
|
BVC L1249
|
|
DEC L08D0
|
|
JMP L124C
|
|
|
|
L1249 INC L08D0
|
|
L124C DEC L09C7
|
|
JMP L10DE
|
|
|
|
L1252 LDY zpRANDOM
|
|
LDA L1D00,Y
|
|
AND #$07
|
|
TAY
|
|
LDA L1E40,Y
|
|
STA L09C7
|
|
RTS
|
|
|
|
*----------
|
|
|
|
L1261 BIT |$00E9
|
|
BPL L1280
|
|
BVS L1280
|
|
LDA L08DE
|
|
CMP #$11
|
|
BNE L1272
|
|
JMP L1281
|
|
|
|
L1272 CMP #$13
|
|
BNE L1279
|
|
JMP L12D6 ; is player hit?
|
|
|
|
L1279 CMP #$14
|
|
BNE L1280
|
|
JMP L131D
|
|
L1280 RTS
|
|
|
|
L1281 LDA L08D7
|
|
CMP #$04
|
|
BCC L12D0
|
|
CMP #$06
|
|
BCS L129A
|
|
LDA $E8
|
|
CMP #$0A
|
|
BEQ L12D0 ; I'm hit!
|
|
CMP #$08
|
|
BEQ L12D3
|
|
CMP #$0C
|
|
BEQ L12D3
|
|
L129A LDA L08D7
|
|
CMP #$07
|
|
BCS L12AF
|
|
LDA $E8
|
|
CMP #$08
|
|
BEQ L12D3
|
|
CMP #$0A
|
|
BEQ L12D3
|
|
CMP #$0C
|
|
BEQ L12D3
|
|
L12AF LDA L08D7
|
|
CMP #$0A
|
|
BCS L12C0
|
|
LDA $E8
|
|
CMP #$0A
|
|
BEQ L1333
|
|
CMP #$0C
|
|
BEQ L1333
|
|
L12C0 LDA L08D7
|
|
CMP #$0E
|
|
BCS L1280
|
|
LDA $E8
|
|
CMP #$0A
|
|
BNE L1280
|
|
JMP L1333
|
|
|
|
L12D0 JMP playerHIT ; player is hit!
|
|
L12D3 JMP L1333
|
|
|
|
L12D6 LDA L08D7
|
|
CMP #$03
|
|
BCS L12E6
|
|
LDA $E8
|
|
CMP #$0E
|
|
BEQ L12E6
|
|
JMP playerHIT ; player is hit!
|
|
|
|
L12E6 LDA L08D7
|
|
CMP #$04
|
|
BCS L12FA
|
|
LDA $E8
|
|
CMP #$08
|
|
BCS L12FA
|
|
CMP #$04
|
|
BEQ L12FA
|
|
JMP playerHIT
|
|
|
|
L12FA LDA L08D7
|
|
CMP #$05
|
|
BCS L130A
|
|
LDA $E8
|
|
CMP #$0E
|
|
BNE L130A
|
|
JMP L1333
|
|
|
|
L130A LDA L08D7
|
|
CMP #$06
|
|
BCS L131A
|
|
LDA $E8
|
|
CMP #$0A
|
|
BNE L131A
|
|
JMP playerHIT
|
|
L131A JMP L1280
|
|
|
|
L131D LDA L08D7
|
|
CMP #$05
|
|
BCS L1330
|
|
LDA #$00
|
|
STA L09C3
|
|
LDX #$5A
|
|
STX $50
|
|
JSR L0303
|
|
L1330 JMP L1280
|
|
|
|
L1333 LDX #$3C
|
|
STX $50
|
|
JSR L0303
|
|
INC L08D0
|
|
JMP L1280
|
|
|
|
*---------- Player is hit
|
|
|
|
playerHIT LDA #$0F ; show sprite HIT
|
|
STA $E8
|
|
JSR L0A8F
|
|
JSR L1381 ; play sound
|
|
JSR L11D1 ; wait
|
|
LDA #$00 ; show sprite DEAD
|
|
STA $E8
|
|
STA L09DF
|
|
JSR L0A8F
|
|
JSR L11FE ; play sound
|
|
LDA #$80
|
|
STA L09C3
|
|
JSR L11E1 ; wait
|
|
JSR L136B ; go die
|
|
JSR showALL
|
|
JMP L180D
|
|
|
|
L136B DEC theLIVES ; lives--
|
|
BEQ L1374
|
|
NOP
|
|
NOP
|
|
NOP
|
|
RTS
|
|
|
|
L1374 LDX #$FF ; i'm dead
|
|
STX $50
|
|
JSR L0303
|
|
LDA #$00 ; game over
|
|
STA fgPLAY
|
|
RTS
|
|
|
|
L1381 LDA #$28 ; ouch sound
|
|
STA $50
|
|
LDX #$C8
|
|
JSR L0303
|
|
RTS
|
|
|
|
L138B BIT L09CD
|
|
BPL L13FC
|
|
BVS L13FC
|
|
LDA $E8
|
|
CMP #$04
|
|
BNE L13A9
|
|
LDA L08D8
|
|
CMP #$09
|
|
BCS L13A2
|
|
JMP L1402
|
|
|
|
L13A2 CMP #$0C
|
|
BCS L13FC
|
|
JMP L13BB
|
|
|
|
L13A9 CMP #$03
|
|
BNE L13FC
|
|
LDA L08D8
|
|
CMP #$06
|
|
BCS L13B7
|
|
JMP L1402
|
|
|
|
L13B7 CMP #$07
|
|
BCS L1433
|
|
L13BB LDX #$3C
|
|
STX $50
|
|
JSR L0303
|
|
INC zpRANDOM
|
|
INC L09CB
|
|
DEC L08D1
|
|
LDA L09CB
|
|
CMP #$01
|
|
BEQ L13FF
|
|
LDA #$08
|
|
CMP L09C5
|
|
BCS L13FF
|
|
INC L08D1
|
|
JSR L14E4
|
|
JSR L0A8F
|
|
L13E1 BIT KBD
|
|
BMI L13F6
|
|
JSR L143B
|
|
INC zpRANDOM
|
|
BNE L13E1
|
|
INC L08D1
|
|
JSR L14E4
|
|
JSR L0A8F
|
|
L13F6 JMP L0C1B
|
|
JMP L1437
|
|
L13FC JMP L1433
|
|
L13FF JMP L1433
|
|
|
|
L1402 LDA #$1D
|
|
STA L09D1
|
|
INC L09D5
|
|
JSR L0A8F
|
|
JSR L11C7
|
|
JSR L11D1
|
|
JSR L11F1 ; check next level
|
|
LDA #$1E
|
|
STA L09D1
|
|
LDA #$02
|
|
STA $E8
|
|
JSR L0A8F
|
|
LDA L09CD
|
|
ORA #$40
|
|
STA L09CD
|
|
JSR L11FE
|
|
JSR L11E1
|
|
jmp L114F
|
|
L1433 RTS
|
|
|
|
L1437 NOP
|
|
NOP
|
|
NOP
|
|
RTS
|
|
|
|
L143B JSR L1454
|
|
JSR L14E4
|
|
JSR L14A5
|
|
JSR L1537
|
|
NOP
|
|
NOP
|
|
NOP
|
|
JSR L154A
|
|
JSR L14E0
|
|
jmp L157B
|
|
|
|
*----------
|
|
|
|
L1454 BIT L09CD
|
|
BPL L14A4
|
|
BVC L1463
|
|
LDA #$1E
|
|
STA L09D1
|
|
JMP L14A4
|
|
L1463 JMP L161C
|
|
|
|
L1466 BIT L09D6
|
|
BPL L146E
|
|
JMP L157F
|
|
|
|
L146E LDY zpRANDOM
|
|
LDA L1D00,Y
|
|
STA $EB
|
|
AND #$07
|
|
ORA #$08
|
|
TAY
|
|
LDA L1E00,Y
|
|
STA L09D1
|
|
LDA $EB
|
|
CMP #$5A
|
|
BCS L148D
|
|
LDA #$80
|
|
STA L09D6
|
|
LDA $EB
|
|
L148D CMP #$E6
|
|
BCS L1498
|
|
CMP #$50
|
|
BCS L149E
|
|
JMP L14A1
|
|
|
|
L1498 INC L08D1
|
|
JMP L14A1
|
|
|
|
L149E DEC L08D1
|
|
L14A1 jmp L0A8F
|
|
|
|
L14A4 RTS
|
|
|
|
*----------
|
|
|
|
L14A5 BIT L09CE
|
|
BPL L14C1
|
|
LDA L09D2
|
|
CMP #$1F
|
|
BEQ L14B9
|
|
LDA #$1F
|
|
STA L09D2
|
|
JMP L14C1
|
|
|
|
L14B9 LDA #$20
|
|
STA L09D2
|
|
DEC L08D2
|
|
L14C1 RTS
|
|
|
|
L14C2 BIT L09CF
|
|
BPL L14DE
|
|
LDA L09D3
|
|
CMP #$21
|
|
BEQ L14D6
|
|
LDA #$21
|
|
STA L09D3
|
|
JMP L14DE
|
|
|
|
L14D6 LDA #$22
|
|
STA L09D3
|
|
INC L08D3
|
|
L14DE RTS
|
|
|
|
L14E0 NOP
|
|
NOP
|
|
NOP
|
|
RTS
|
|
|
|
*----------
|
|
|
|
L14E4 BIT L09CD
|
|
BPL L1519
|
|
BVS L1519
|
|
LDA L09D1
|
|
CMP #$1B
|
|
BNE L14F5
|
|
JMP L151A
|
|
|
|
L14F5 CMP #$1C
|
|
BEQ L1524
|
|
LDA L08D8
|
|
CMP #$04
|
|
BCC L1534
|
|
L1500 CMP #$09 ; difficulty?
|
|
BCS L1519
|
|
LDA $E8
|
|
CMP #$08
|
|
BCS L1519
|
|
CMP #$02
|
|
BEQ L1519
|
|
CMP #$05
|
|
BEQ L1519
|
|
L1512 LDX #$3C
|
|
STX $50
|
|
jmp L0303
|
|
|
|
L1519 RTS
|
|
|
|
L151A LDA L08D8
|
|
CMP #$05
|
|
BCC L1534
|
|
JMP L1519
|
|
|
|
L1524 LDA L08D8
|
|
CMP #$05
|
|
BCS L1519
|
|
LDA $E8
|
|
CMP #$05
|
|
BEQ L1512
|
|
JMP L1534
|
|
L1534 JMP playerHIT
|
|
|
|
*----------
|
|
|
|
L1537 BIT L09CE
|
|
BPL L1546
|
|
LDA #$05
|
|
CMP L08D9
|
|
BCC L1546
|
|
JMP playerHIT
|
|
L1546 RTS
|
|
|
|
*----------
|
|
|
|
L154A BIT L09CF
|
|
BPL L1577
|
|
LDA #$04
|
|
CMP L08DA
|
|
BCC L1577
|
|
LDA #$00
|
|
STA L09C3
|
|
LDX #$5A
|
|
STX $50
|
|
JSR L0303
|
|
LDA #$00
|
|
STA L09CF
|
|
STA L08D3
|
|
INC L09DF
|
|
LDA L09DF
|
|
CMP #$04
|
|
BCC L1577
|
|
JMP playerHIT
|
|
|
|
L1577 RTS
|
|
|
|
L157B NOP
|
|
NOP
|
|
NOP
|
|
RTS
|
|
|
|
L157F NOP
|
|
NOP
|
|
NOP
|
|
BIT L09D6
|
|
BVS L1597
|
|
LDA #$40
|
|
ORA L09D6
|
|
STA L09D6
|
|
JSR L15CB
|
|
LDA #$08
|
|
STA L09D9
|
|
L1597 DEC L09D9
|
|
BNE L15A7
|
|
LDA #$BF
|
|
AND L09D6
|
|
STA L09D6
|
|
JMP L146E
|
|
|
|
L15A7 LDY L09D7
|
|
LDA L1E80,Y
|
|
STA L09D8
|
|
AND #$1F
|
|
STA L09D1
|
|
BIT L09D8
|
|
BPL L15C5
|
|
BVC L15C2
|
|
INC L08D1
|
|
JMP L15C5
|
|
|
|
L15C2 DEC L08D1
|
|
L15C5 DEC L09D7
|
|
JMP L14A1
|
|
|
|
L15CB LDY zpRANDOM
|
|
LDA L1D00,Y
|
|
AND #$07
|
|
TAY
|
|
LDA L1E48,Y
|
|
STA L09D7
|
|
RTS
|
|
|
|
L15DA BIT L09DA
|
|
BMI L1606
|
|
LDA L09C5
|
|
CMP #$20
|
|
BCS L1615
|
|
CMP #$0C
|
|
BCS L15FE
|
|
CMP #$02
|
|
BCS L15F6
|
|
LDA #$86
|
|
STA L09DA
|
|
JMP L1618
|
|
|
|
L15F6 LDA #$84
|
|
STA L09DA
|
|
JMP L1618
|
|
|
|
L15FE LDA #$82
|
|
STA L09DA
|
|
JMP L1618
|
|
|
|
L1606 DEC L09DA
|
|
LDA #$80
|
|
CMP L09DA
|
|
BNE L1618
|
|
LDA #$00
|
|
STA L09DA
|
|
L1615 JMP L1071
|
|
L1618 JMP L10DE
|
|
|
|
L161C BIT L09DB
|
|
BMI L1648
|
|
LDA L09D5
|
|
CMP #$19
|
|
BCS L1657
|
|
CMP #$08
|
|
BCS L1638
|
|
CMP #$02
|
|
BCS L1640
|
|
LDA #$86
|
|
STA L09DB
|
|
JMP L165A
|
|
|
|
L1638 LDA #$84
|
|
STA L09DB
|
|
JMP L165A
|
|
|
|
L1640 LDA #$82
|
|
STA L09DB
|
|
JMP L165A
|
|
|
|
L1648 DEC L09DB
|
|
LDA #$80
|
|
CMP L09DB
|
|
BNE L165A
|
|
LDA #$00
|
|
STA L09DB
|
|
L1657 JMP L1466
|
|
L165A JMP L14A1
|
|
|
|
L165D BIT L09CE
|
|
BPL L167F
|
|
LDA $E8
|
|
CMP #$0B
|
|
BNE L167F
|
|
LDA #$06
|
|
CMP L08D9
|
|
BCC L167F
|
|
JSR L11C7
|
|
JSR L11F1 ; check next level
|
|
LDA #$00
|
|
STA L09CE
|
|
LDA #$23
|
|
STA L08D2
|
|
L167F RTS
|
|
|
|
L1680 BIT L09CF
|
|
BPL L169D
|
|
LDA $E8
|
|
CMP #$05
|
|
BNE L169D
|
|
LDA #$05
|
|
CMP L08DA
|
|
BCC L169D
|
|
JSR L11C7
|
|
LDA #$00
|
|
STA L09CF
|
|
STA L08D3
|
|
L169D RTS
|
|
|
|
*---------- Pointer to sprites
|
|
* The first 4 bytes are copied to $FA..$FD
|
|
|
|
tblSPRITES DA $7B06 ; 00 player is dead
|
|
DA $6000 ; 01 player left
|
|
DA $6184 ; 02 "
|
|
DA $6348 ; 03 "
|
|
DA $655B ; 04 "
|
|
DA $67CF ; 05 "
|
|
DA $6953 ; 06 "
|
|
DA $6AD7 ; 07 "
|
|
DA $6C5B ; 08 player right
|
|
DA $6DEE ; 09 "
|
|
DA $6F72 ; 0A "
|
|
DA $7246 ; 0B "
|
|
DA $73CA ; 0C "
|
|
DA $763E ; 0D "
|
|
DA $77BE ; 0E "
|
|
DA $7982 ; 0F " is wounded
|
|
DA $7C10 ; 10 empty
|
|
DA $8000 ; 11 foe right
|
|
DA $81E4 ; 12 "
|
|
DA $8418 ; 13 "
|
|
DA $864C ; 14 "
|
|
DA $8830 ; 15 "
|
|
DA $8A14 ; 16 "
|
|
DA $8C48 ; 17 " is dead
|
|
DA $8D3D ; 18 foe left
|
|
DA $8F0E ; 19 "
|
|
DA $90DF ; 1A "
|
|
DA $92B0 ; 1B "
|
|
DA $9480 ; 1C "
|
|
DA $9666 ; 1D "
|
|
DA $97DB ; 1E " is dead
|
|
DA $9858 ; 1F animal right
|
|
DA $98EC ; 20 "
|
|
DA $9980 ; 21 animal left
|
|
DA $9A14 ; 22 "
|
|
DA $9AA8 ; The rest is... nothing
|
|
|
|
*----------
|
|
|
|
playGAME JSR initALL ; init all
|
|
LDA #$FF
|
|
STA fgPLAY ; game is active
|
|
LDA #$80
|
|
STA |$00E9
|
|
|
|
L180D LDA #$00
|
|
STA L08D1
|
|
STA L09CE
|
|
STA L09CF
|
|
STA L08D3
|
|
LDA #$20
|
|
STA L08D0
|
|
STA L08D2
|
|
LDA #$10 ; x-pos of player
|
|
STA zpXPLAYER
|
|
|
|
*--- The main game loop
|
|
|
|
L1827 JSR doKEYPRESS
|
|
JSR L105F
|
|
JSR L19D5
|
|
JSR L1454 ;
|
|
JSR L14A5 ;
|
|
JSR L14C2 ;
|
|
JSR L10E2 ;
|
|
JSR L1261 ;
|
|
JSR L14E4 ;
|
|
JSR L1537 ;
|
|
JSR L154A ;
|
|
LDA fgPLAY ; am I dead
|
|
BNE L1827 ; for real?
|
|
RTS ; yes!
|
|
|
|
*----------
|
|
|
|
L1854 NOP
|
|
LDA theSCORE+1
|
|
BEQ L185D
|
|
JMP L18C8
|
|
|
|
L185D LDA theSCORE
|
|
CMP #$02
|
|
BCS L188A
|
|
AND #$01
|
|
BEQ L1878
|
|
LDA #$00
|
|
STA L08D1
|
|
STA |$00E9
|
|
LDA #$80
|
|
STA L09CD
|
|
JMP L18C3
|
|
|
|
L1878 LDA #$20
|
|
STA L08D0
|
|
LDA #$00
|
|
STA L09CD
|
|
LDA #$80
|
|
STA |$00E9
|
|
JMP L18C3
|
|
|
|
L188A BIT |$00E9
|
|
BPL L1891
|
|
BVC L18C4
|
|
L1891 BIT L09CD
|
|
BPL L1898
|
|
BVC L18C4
|
|
L1898 LDA #$80
|
|
STA |$00E9
|
|
STA L09CD
|
|
JMP L1A78
|
|
|
|
*----------
|
|
|
|
L18B3 LDA #$00
|
|
STA L08D1
|
|
LDA #$20
|
|
STA L08D0
|
|
JMP L18C3
|
|
JMP L18C8
|
|
|
|
L18C3 NOP
|
|
L18C4 jmp L0A8F
|
|
|
|
L18C8 LDA #$3C
|
|
STA L09DD
|
|
jmp L1A04
|
|
|
|
*---------- Calculate offset of font char
|
|
|
|
calcFOFFSET STX saveX
|
|
STY saveY
|
|
|
|
LDA #<theFONT
|
|
STA L1939+1
|
|
LDA #>theFONT
|
|
STA L1939+2
|
|
LDX #$20 ; space
|
|
L18EC CPX charFONT ; the char
|
|
BEQ L1904
|
|
INX
|
|
CLC
|
|
LDA #$08 ; offset+8
|
|
ADC L1939+1
|
|
STA L1939+1
|
|
BCC L1900
|
|
INC L1939+2
|
|
L1900 CPX #$7E ; last char
|
|
BNE L18EC
|
|
L1904 LDX saveX
|
|
LDY saveY
|
|
RTS
|
|
|
|
*---------- Draw a char
|
|
|
|
printCHAR1 LDA #$20 ; on HGR1
|
|
STA pageHGR
|
|
bne L1918
|
|
|
|
printCHAR2 LDA #$40 ; or HGR2
|
|
STA pageHGR
|
|
|
|
*---------- Draw a char on screen
|
|
|
|
L1918 STX saveX
|
|
STY saveY
|
|
LDY zpYBEGIN ; Y start
|
|
CLC
|
|
LDA #$08
|
|
ADC zpYBEGIN
|
|
STA zpYEND ; Y end
|
|
LDX zpXSCREEN
|
|
L1929 LDA ptrLINEH,Y
|
|
CLC
|
|
ADC pageHGR
|
|
STA L193C+2
|
|
LDA ptrLINEL,Y
|
|
STA L193C+1
|
|
L1939 LDA theFONT
|
|
L193C STA $5E50,X
|
|
INC L1939+1
|
|
BNE L1947
|
|
INC L1939+2
|
|
L1947 INY
|
|
CPY zpYEND ; the end?
|
|
BNE L1929
|
|
LDX saveX ; restore
|
|
LDY saveY
|
|
RTS
|
|
|
|
*---------- Print C string
|
|
|
|
printCSTR STA L195B+1
|
|
STY L195B+2
|
|
|
|
LDX #$00
|
|
L195B LDA |$009F,X ; get a char
|
|
BEQ L1988
|
|
STA charFONT ; the char
|
|
JSR calcFOFFSET ; calc offset in font
|
|
BIT zpHPLAYER ; which page to draw?
|
|
BPL L1970
|
|
JSR printCHAR2 ; HGR2
|
|
JMP L1973
|
|
L1970 JSR printCHAR1 ; HGR1
|
|
|
|
L1973 INC zpXSCREEN ; next X
|
|
LDA zpXSCREEN
|
|
CMP #$28
|
|
BNE L1985
|
|
LDA #$00 ; next Y
|
|
STA zpXSCREEN
|
|
LDA #$08
|
|
ADC zpYBEGIN
|
|
STA zpYBEGIN
|
|
L1985 INX
|
|
BNE L195B
|
|
L1988 RTS
|
|
|
|
*---------- Show score and lives
|
|
|
|
showALL LDA zpHPLAYER
|
|
STA saveHPLAYER
|
|
AND #$7F
|
|
STA zpHPLAYER
|
|
JSR showSCORE
|
|
JSR showLIVES
|
|
LDA zpHPLAYER
|
|
ORA #$80
|
|
STA zpHPLAYER
|
|
JSR showSCORE
|
|
JSR showLIVES
|
|
LDA saveHPLAYER
|
|
STA zpHPLAYER
|
|
RTS
|
|
|
|
*----------
|
|
|
|
showSCORE LDA #$0E
|
|
STA zpXSCREEN
|
|
LDA #$A0
|
|
STA zpYBEGIN
|
|
LDA theSCORE
|
|
STA $9F
|
|
LDA theSCORE+1
|
|
STA $9E
|
|
LDA #$90
|
|
STA $9D
|
|
LDA #$00
|
|
STA $A0
|
|
STA $A1
|
|
STA $A2
|
|
JSR $ED34 ; convert fac
|
|
jmp printCSTR ; print score
|
|
|
|
*----------
|
|
|
|
L19CF JMP L1A68
|
|
L19D2 JMP L1A6E
|
|
|
|
*----------
|
|
|
|
L19D5 LDA L09C5
|
|
CMP #$05
|
|
BEQ L19CF
|
|
CMP #$0D
|
|
BEQ L19CF
|
|
CMP #$16
|
|
BEQ L19CF
|
|
LDA L09D5
|
|
CMP #$06
|
|
BEQ L19D2
|
|
CMP #$0B
|
|
BEQ L19D2
|
|
CMP #$13
|
|
BEQ L19D2
|
|
CMP #$17
|
|
BEQ L19D2
|
|
LDA theSCORE
|
|
CMP #$13
|
|
BCC L1A47
|
|
AND #$01
|
|
BNE L1A47
|
|
LDA #$0C
|
|
L1A04 STA L09DD
|
|
LDY zpRANDOM
|
|
LDA L1D00,Y
|
|
CMP L09DD
|
|
BNE L1A14
|
|
JMP L1A22
|
|
|
|
L1A14 CMP #$27
|
|
BNE L1A1B
|
|
JMP L1A36
|
|
|
|
L1A1B CMP #$54
|
|
BNE L1A47
|
|
JMP L1A36
|
|
|
|
L1A22 LDA #$80
|
|
STA L09CE
|
|
LDA #$21
|
|
STA L08D2
|
|
LDX #$6E
|
|
STX $50
|
|
JSR L0303
|
|
JMP L1A47
|
|
|
|
L1A36 LDA #$80
|
|
STA L09CF
|
|
LDA #$00
|
|
STA L08D3
|
|
LDX #$B4
|
|
STX $50
|
|
JSR L0303
|
|
L1A47 RTS
|
|
|
|
*----------
|
|
|
|
showLIVES CLC
|
|
LDA theLIVES
|
|
BPL L1A50
|
|
LDA #$00
|
|
L1A50 ADC #$30
|
|
STA $9F
|
|
LDA #$22
|
|
STA zpXSCREEN
|
|
LDA #$A0
|
|
STA zpYBEGIN
|
|
LDA #$00
|
|
STA $A0
|
|
LDA #$9F
|
|
LDY #$00
|
|
jmp printCSTR ; print lives
|
|
|
|
L1A68 INC L09C5
|
|
JMP L1A36
|
|
|
|
L1A6E INC L09D5
|
|
JMP L1A22
|
|
|
|
*----------
|
|
|
|
L1A78 LDA L09C5
|
|
CMP #$05
|
|
BCC L1AB9
|
|
CMP #$08
|
|
BCC L1A92
|
|
CMP #$0C
|
|
BCC L1A98
|
|
CMP #$10
|
|
BCC L1A9E
|
|
CMP #$14
|
|
BCC L1AA4
|
|
JMP L1AAA
|
|
|
|
L1A92 INC L08D0
|
|
DEC L08D1
|
|
L1A98 INC L08D0
|
|
DEC L08D1
|
|
L1A9E INC L08D0
|
|
DEC L08D1
|
|
L1AA4 INC L08D0
|
|
DEC L08D1
|
|
L1AAA INC L08D0
|
|
DEC L08D1
|
|
INC L08D0
|
|
DEC L08D1
|
|
JMP L1ABC
|
|
L1AB9 JMP L18B3
|
|
|
|
L1ABC JSR L0B43
|
|
JMP L18C3
|
|
|
|
*---------- Entry point
|
|
|
|
L1B00 LDA #$00
|
|
STA L0328
|
|
STA L031E ; S0
|
|
LDA #$03
|
|
STA L031D ; T3
|
|
LDA #$08
|
|
STA L0328+1 ; $0800..$0FFF
|
|
LDA #$07
|
|
STA L031F ; until S7
|
|
L1B17 JSR L033D ; read TS
|
|
INC L031E
|
|
INC L0328+1
|
|
LDA L031E
|
|
CMP L031F
|
|
BNE L1B17
|
|
JSR L033D ; read T3/S7
|
|
|
|
LDA #$09 ; Load T9-A
|
|
LDX #$00 ; $6000..$7FFF
|
|
LDY #$60
|
|
JSR L0366
|
|
|
|
*---------- Main loop
|
|
|
|
L1B34 LDA #$0F ; Load TF-10
|
|
LDX #$00 ; $8000..$8FFF
|
|
LDY #$80
|
|
JSR L0366
|
|
|
|
LDA #$15 ; Load T15-16
|
|
LDX #$00 ; $2000..$3FFF
|
|
LDY #$20
|
|
JSR L0366
|
|
|
|
JSR L1CAC ; clear text line 23
|
|
|
|
L1B49 BIT KBD
|
|
BPL L1B49
|
|
LDA #$00
|
|
STA KBDSTROBE
|
|
JSR L1CB7 ; show score
|
|
JSR playGAME ; play
|
|
|
|
* if we're back here, the player is dead
|
|
|
|
JSR HOME ; clear text
|
|
|
|
LDA #$03 ; Load T3/SC
|
|
STA L031D ; $4000..$40FF
|
|
LDA #$0C
|
|
STA L031E
|
|
LDA #<L4000
|
|
STA L0328
|
|
LDA #>L4000
|
|
STA L0328+1
|
|
JSR L033D
|
|
JMP L4000 ; and jump
|
|
|
|
*----------
|
|
|
|
L1B76 LDA theSCORE
|
|
CMP #$15 ; harder, new foes
|
|
BEQ L1B9C
|
|
CMP #$21 ; new image, new foes
|
|
BEQ L1BA6
|
|
CMP #$2B ; new foes
|
|
BEQ L1BB0
|
|
CMP #$36 ; new image, new foes
|
|
BEQ L1BB5
|
|
CMP #$3E ; new foes
|
|
BEQ L1BBF
|
|
CMP #$4A ; new foes
|
|
BEQ L1BC4
|
|
CMP #$53 ; new foes
|
|
BEQ L1BC9
|
|
CMP #$62 ; new foes
|
|
BEQ L1BCE
|
|
JMP showALL
|
|
|
|
L1B9C LDA #$09
|
|
STA L1500+1 ; more difficult
|
|
LDA #$0B
|
|
JMP loadSPRFOE
|
|
|
|
L1BA6 LDA #$13
|
|
JSR loadIMAGE
|
|
LDA #$1F
|
|
JMP loadSPRFOE
|
|
|
|
L1BB0 LDA #$1B
|
|
JMP loadSPRFOE
|
|
|
|
L1BB5 LDA #$05
|
|
JSR loadIMAGE
|
|
LDA #$0B
|
|
JMP loadSPRFOE
|
|
|
|
L1BBF LDA #$17
|
|
JMP loadSPRFOE
|
|
|
|
L1BC4 LDA #$21
|
|
JMP loadSPRFOE
|
|
|
|
L1BC9 LDA #$19
|
|
JMP loadSPRFOE
|
|
|
|
L1BCE LDA #$0D
|
|
JMP loadSPRFOE
|
|
|
|
*---------- Load foe sprite data
|
|
|
|
loadSPRFOE LDX #$00
|
|
LDY #$80
|
|
JSR L0366
|
|
JMP L180D
|
|
|
|
*---------- Load new background image
|
|
|
|
loadIMAGE STA TXTPAGE2
|
|
LDX #$00
|
|
LDY #$20
|
|
JSR L0366
|
|
JSR blitHGR
|
|
jmp showALL
|
|
|
|
*---------- Copy HGR1 onto HGR2
|
|
|
|
blitHGR CLC
|
|
L1C81 LDX #$00
|
|
L1C83 LDA $2000,X
|
|
L1C86 STA $4000,X
|
|
INX
|
|
BNE L1C83
|
|
INC L1C83+2
|
|
INC L1C86+2
|
|
LDA L1C83+2
|
|
CMP #$40
|
|
BNE L1C81
|
|
LDA #$20
|
|
STA L1C83+2
|
|
LDA #$40
|
|
STA L1C86+2
|
|
LDA #$00
|
|
STA L1C83+1
|
|
STA L1C86+1
|
|
RTS
|
|
|
|
*---------- Clear last line of text
|
|
|
|
L1CAC LDX #$27
|
|
LDA #$A0
|
|
L1CB0 STA $07D0,X
|
|
DEX
|
|
BPL L1CB0
|
|
RTS
|
|
|
|
*---------- Init game
|
|
|
|
L1CB7 LDA #$00 ; Max score is 3
|
|
STA theSCORE
|
|
STA theSCORE+1
|
|
LDA #$03
|
|
STA theLIVES
|
|
JSR showALL ; show it
|
|
JSR blitHGR ; copy HGR
|
|
LDA #$05
|
|
STA L1500+1 ; difficulty
|
|
RTS
|
|
|
|
*---------- Table to sprite index
|
|
|
|
L1D00 DB $41
|
|
DB $2B
|
|
DB $9A
|
|
DB $A1
|
|
DB $43
|
|
DB $37
|
|
DB $F7
|
|
DB $86
|
|
DB $3A
|
|
DB $5E
|
|
DB $C8
|
|
DB $A5
|
|
DB $8E
|
|
DB $A2
|
|
DB $C1
|
|
DB $1C
|
|
DB $B9
|
|
DB $14
|
|
DB $33
|
|
DB $BF
|
|
DB $A9
|
|
DB $75
|
|
DB $13
|
|
DB $72
|
|
DB $42
|
|
DB $1D
|
|
DB $C7
|
|
DB $CF
|
|
DB $C4
|
|
DB $3D
|
|
DB $95
|
|
DB $27
|
|
DB $80
|
|
DB $84
|
|
DB $F2
|
|
DB $CE
|
|
DB $99
|
|
DB $A6
|
|
DB $FB
|
|
DB $7C
|
|
DB $2A
|
|
DB $CA
|
|
DB $AF
|
|
DB $16
|
|
DB $FA
|
|
DB $AD
|
|
DB $40
|
|
DB $4E
|
|
DB $35
|
|
DB $68
|
|
DB $E2
|
|
DB $46
|
|
DB $AC
|
|
DB $07
|
|
DB $23
|
|
DB $02
|
|
DB $6E
|
|
DB $B6
|
|
DB $F3
|
|
DB $85
|
|
DB $63
|
|
DB $0A
|
|
DB $52
|
|
DB $D0
|
|
DB $9D
|
|
DB $74
|
|
DB $C2
|
|
DB $DA
|
|
DB $2D
|
|
DB $71
|
|
DB $0B
|
|
DB $88
|
|
DB $D9
|
|
DB $9C
|
|
DB $8C
|
|
DB $20
|
|
DB $67
|
|
DB $83
|
|
DB $79
|
|
DB $2C
|
|
DB $5B
|
|
DB $B3
|
|
DB $4C
|
|
DB $62
|
|
DB $DD
|
|
DB $F4
|
|
DB $6D
|
|
DB $87
|
|
DB $59
|
|
DB $C5
|
|
DB $F1
|
|
DB $F5
|
|
DB $81
|
|
DB $7F
|
|
DB $3B
|
|
DB $C9
|
|
DB $66
|
|
DB $BC
|
|
DB $12
|
|
DB $57
|
|
DB $10
|
|
DB $53
|
|
DB $E8
|
|
DB $09
|
|
DB $AA
|
|
DB $21
|
|
DB $49
|
|
DB $C0
|
|
DB $8B
|
|
DB $2E
|
|
DB $9E
|
|
DB $6B
|
|
DB $45
|
|
DB $A3
|
|
DB $82
|
|
DB $00
|
|
DB $6F
|
|
DB $C6
|
|
DB $6A
|
|
DB $AB
|
|
DB $03
|
|
DB $15
|
|
DB $58
|
|
DB $06
|
|
DB $08
|
|
DB $E4
|
|
DB $DC
|
|
DB $78
|
|
DB $ED
|
|
DB $D5
|
|
DB $FE
|
|
DB $9F
|
|
DB $A7
|
|
DB $0E
|
|
DB $FC
|
|
DB $BD
|
|
DB $FF
|
|
DB $0C
|
|
DB $B0
|
|
DB $B7
|
|
DB $4D
|
|
DB $D6
|
|
DB $0D
|
|
DB $D8
|
|
DB $B2
|
|
DB $32
|
|
DB $EF
|
|
DB $DE
|
|
DB $5F
|
|
DB $F8
|
|
DB $69
|
|
DB $7D
|
|
DB $7B
|
|
DB $BA
|
|
DB $B4
|
|
DB $6C
|
|
DB $48
|
|
DB $92
|
|
DB $EC
|
|
DB $E9
|
|
DB $BE
|
|
DB $28
|
|
DB $E7
|
|
DB $FD
|
|
DB $17
|
|
DB $7A
|
|
DB $11
|
|
DB $8A
|
|
DB $56
|
|
DB $22
|
|
DB $04
|
|
DB $C3
|
|
DB $8D
|
|
DB $34
|
|
DB $F6
|
|
DB $2F
|
|
DB $01
|
|
DB $26
|
|
DB $29
|
|
DB $24
|
|
DB $7E
|
|
DB $30
|
|
DB $5A
|
|
DB $76
|
|
DB $EB
|
|
DB $E1
|
|
DB $60
|
|
DB $61
|
|
DB $96
|
|
DB $3F
|
|
DB $4B
|
|
DB $77
|
|
DB $B1
|
|
DB $F9
|
|
DB $D4
|
|
DB $E6
|
|
DB $D1
|
|
DB $90
|
|
DB $3C
|
|
DB $94
|
|
DB $97
|
|
DB $E3
|
|
DB $93
|
|
DB $50
|
|
DB $05
|
|
DB $5C
|
|
DB $89
|
|
DB $EE
|
|
DB $DF
|
|
DB $51
|
|
DB $73
|
|
DB $D3
|
|
DB $36
|
|
DB $1F
|
|
DB $D2
|
|
DB $39
|
|
DB $F0
|
|
DB $E0
|
|
DB $B8
|
|
DB $25
|
|
DB $BB
|
|
DB $8F
|
|
DB $B5
|
|
DB $DB
|
|
DB $0F
|
|
DB $38
|
|
DB $D7
|
|
DB $3E
|
|
DB $4A
|
|
DB $64
|
|
DB $CB
|
|
DB $91
|
|
DB $A8
|
|
DB $55
|
|
DB $54
|
|
DB $CC
|
|
DB $A4
|
|
DB $65
|
|
DB $1E
|
|
DB $4F
|
|
DB $1A
|
|
DB $5D
|
|
DB $47
|
|
DB $A0
|
|
DB $1B
|
|
DB $9B
|
|
DB $98
|
|
DB $CD
|
|
DB $31
|
|
DB $E5
|
|
DB $70
|
|
DB $18
|
|
DB $AE
|
|
DB $EA
|
|
DB $44
|
|
DB $00
|
|
|
|
*----------
|
|
|
|
L1E00 DB $11
|
|
DB $12
|
|
DB $13
|
|
DB $14
|
|
DB $15
|
|
DB $11
|
|
DB $12
|
|
DB $11
|
|
DB $18
|
|
DB $19
|
|
DB $1A
|
|
DB $1B
|
|
DB $18
|
|
DB $1A
|
|
DB $19
|
|
DB $1B
|
|
DB $1F
|
|
DB $1E
|
|
DB $1F
|
|
DB $1E
|
|
DB $1F
|
|
DB $1E
|
|
DB $1F
|
|
DB $1E
|
|
DB $1D
|
|
DB $1E
|
|
DB $1F
|
|
DB $1E
|
|
DB $1F
|
|
DB $1E
|
|
DB $1F
|
|
DB $1E
|
|
DB $1F
|
|
DB $1D
|
|
DB $1F
|
|
DB $B5
|
|
DB $00
|
|
DB $85
|
|
DB $00
|
|
DB $B5
|
|
DB $01
|
|
DB $85
|
|
DB $01
|
|
DB $4C
|
|
DB $91
|
|
DB $1D
|
|
DB $A5
|
|
DB $00
|
|
DB $95
|
|
DB $00
|
|
DB $A5
|
|
DB $01
|
|
DB $95
|
|
DB $01
|
|
DB $4C
|
|
DB $91
|
|
DB $1D
|
|
DB $A5
|
|
DB $00
|
|
DB $81
|
|
DB $00
|
|
DB $A0
|
|
DB $00
|
|
DB $84
|
|
|
|
L1E40 DB $07 ; 00-2F
|
|
DB $0F
|
|
DB $17
|
|
DB $1F
|
|
DB $27
|
|
DB $2F
|
|
DB $07
|
|
DB $1F
|
|
|
|
L1E48 DB $37 ; 37-5F
|
|
DB $3F
|
|
DB $47
|
|
DB $4F
|
|
DB $57
|
|
DB $5F
|
|
DB $37
|
|
DB $3F
|
|
|
|
*---
|
|
|
|
L1E80 DB $D3 ; The table
|
|
DB $D2 ; ends at $1E80+$5F
|
|
DB $D1 ; ...$1EDF
|
|
DB $D1
|
|
DB $D2
|
|
DB $D1
|
|
DB $D1
|
|
DB $D1
|
|
DB $93
|
|
DB $94
|
|
DB $93
|
|
DB $92
|
|
DB $91
|
|
DB $91
|
|
DB $91
|
|
DB $91
|
|
DB $11
|
|
DB $D1
|
|
DB $D1
|
|
DB $D1
|
|
DB $92
|
|
DB $94
|
|
DB $93
|
|
DB $91
|
|
DB $11
|
|
DB $D1
|
|
DB $D1
|
|
DB $D1
|
|
DB $D1
|
|
DB $D1
|
|
DB $D1
|
|
DB $12
|
|
DB $D2
|
|
DB $D1
|
|
DB $D2
|
|
DB $D1
|
|
DB $D2
|
|
DB $D1
|
|
DB $D2
|
|
DB $D1
|
|
DB $D1
|
|
DB $D1
|
|
DB $92
|
|
DB $91
|
|
DB $91
|
|
DB $D1
|
|
DB $D2
|
|
DB $D1
|
|
DB $19
|
|
DB $18
|
|
DB $DA
|
|
DB $19
|
|
DB $18
|
|
DB $DA
|
|
DB $19
|
|
DB $DB
|
|
DB $98
|
|
DB $18
|
|
DB $19
|
|
DB $9A
|
|
DB $DB
|
|
DB $DB
|
|
DB $DB
|
|
DB $DB
|
|
DB $DA
|
|
DB $18
|
|
DB $DA
|
|
DB $19
|
|
DB $18
|
|
DB $18
|
|
DB $DB
|
|
DB $DB
|
|
DB $18
|
|
DB $D8
|
|
DB $1A
|
|
DB $19
|
|
DB $D8
|
|
DB $DB
|
|
DB $19
|
|
DB $DB
|
|
DB $DB
|
|
DB $DB
|
|
DB $DB
|
|
DB $DB
|
|
DB $DB
|
|
DB $D8
|
|
DB $1A
|
|
DB $19
|
|
DB $9B
|
|
DB $1C
|
|
DB $9B
|
|
DB $19
|
|
DB $1A
|
|
DB $18
|
|
DB $99
|
|
DB $18
|
|
DB $01
|
|
DB $F5
|
|
DB $01
|
|
DB $99
|
|
DB $01
|
|
DB $00
|
|
DB $98
|
|
DB $69
|
|
DB $00
|
|
DB $85
|
|
DB $1D
|
|
DB $4C
|
|
DB $91
|
|
DB $1D
|
|
DB $A5
|
|
DB $00
|
|
DB $75
|
|
DB $00
|
|
DB $85
|
|
DB $00
|
|
DB $A5
|
|
DB $01
|
|
DB $75
|
|
DB $01
|
|
DB $A0
|
|
DB $00
|
|
DB $99
|
|
DB $01
|
|
DB $00
|
|
DB $98
|
|
DB $69
|
|
DB $7F
|
|
|
|
*---------- The font
|
|
|
|
theFONT DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $08
|
|
DB $08
|
|
DB $08
|
|
DB $08
|
|
DB $08
|
|
DB $00
|
|
DB $08
|
|
DB $00
|
|
DB $14
|
|
DB $14
|
|
DB $14
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $28
|
|
DB $94
|
|
DB $7E
|
|
DB $14
|
|
DB $BF
|
|
DB $8A
|
|
DB $0A
|
|
DB $00
|
|
DB $08
|
|
DB $3C
|
|
DB $0A
|
|
DB $1C
|
|
DB $28
|
|
DB $1E
|
|
DB $08
|
|
DB $00
|
|
DB $06
|
|
DB $26
|
|
DB $10
|
|
DB $08
|
|
DB $04
|
|
DB $32
|
|
DB $30
|
|
DB $00
|
|
DB $04
|
|
DB $0A
|
|
DB $0A
|
|
DB $04
|
|
DB $2A
|
|
DB $12
|
|
DB $2C
|
|
DB $00
|
|
DB $08
|
|
DB $08
|
|
DB $08
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $08
|
|
DB $04
|
|
DB $02
|
|
DB $02
|
|
DB $02
|
|
DB $04
|
|
DB $08
|
|
DB $00
|
|
DB $08
|
|
DB $10
|
|
DB $20
|
|
DB $20
|
|
DB $20
|
|
DB $10
|
|
DB $08
|
|
DB $00
|
|
DB $08
|
|
DB $2A
|
|
DB $1C
|
|
DB $08
|
|
DB $1C
|
|
DB $2A
|
|
DB $08
|
|
DB $00
|
|
DB $00
|
|
DB $08
|
|
DB $08
|
|
DB $3E
|
|
DB $08
|
|
DB $08
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $8C
|
|
DB $88
|
|
DB $84
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $3E
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $8C
|
|
DB $00
|
|
DB $00
|
|
DB $20
|
|
DB $10
|
|
DB $08
|
|
DB $04
|
|
DB $02
|
|
DB $00
|
|
DB $00
|
|
DB $8C
|
|
DB $92
|
|
DB $22
|
|
DB $22
|
|
DB $22
|
|
DB $92
|
|
DB $8C
|
|
DB $00
|
|
DB $08
|
|
DB $0C
|
|
DB $08
|
|
DB $08
|
|
DB $08
|
|
DB $08
|
|
DB $1C
|
|
DB $00
|
|
DB $1C
|
|
DB $22
|
|
DB $20
|
|
DB $10
|
|
DB $84
|
|
DB $82
|
|
DB $3E
|
|
DB $00
|
|
DB $3E
|
|
DB $90
|
|
DB $10
|
|
DB $18
|
|
DB $20
|
|
DB $22
|
|
DB $1C
|
|
DB $00
|
|
DB $10
|
|
DB $18
|
|
DB $14
|
|
DB $12
|
|
DB $3E
|
|
DB $10
|
|
DB $10
|
|
DB $00
|
|
DB $3E
|
|
DB $02
|
|
DB $1E
|
|
DB $20
|
|
DB $20
|
|
DB $22
|
|
DB $1C
|
|
DB $00
|
|
DB $18
|
|
DB $04
|
|
DB $82
|
|
DB $1E
|
|
DB $22
|
|
DB $22
|
|
DB $1C
|
|
DB $00
|
|
DB $3E
|
|
DB $90
|
|
DB $10
|
|
DB $88
|
|
DB $08
|
|
DB $84
|
|
DB $04
|
|
DB $00
|
|
DB $1C
|
|
DB $22
|
|
DB $22
|
|
DB $1C
|
|
DB $22
|
|
DB $22
|
|
DB $1C
|
|
DB $00
|
|
DB $1C
|
|
DB $22
|
|
DB $22
|
|
DB $3C
|
|
DB $90
|
|
DB $10
|
|
DB $0C
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $8C
|
|
DB $00
|
|
DB $00
|
|
DB $8C
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $8C
|
|
DB $00
|
|
DB $00
|
|
DB $8C
|
|
DB $88
|
|
DB $84
|
|
DB $10
|
|
DB $08
|
|
DB $04
|
|
DB $02
|
|
DB $04
|
|
DB $08
|
|
DB $10
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $3E
|
|
DB $00
|
|
DB $3E
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $04
|
|
DB $08
|
|
DB $10
|
|
DB $20
|
|
DB $10
|
|
DB $08
|
|
DB $04
|
|
DB $00
|
|
DB $1C
|
|
DB $22
|
|
DB $90
|
|
DB $88
|
|
DB $08
|
|
DB $00
|
|
DB $08
|
|
DB $00
|
|
|
|
*----------------------------
|
|
|
|
put SB.0300
|
|
put SB.4000
|
|
|
|
*---------- End of code
|