mirror of
https://github.com/antoinevignau/source.git
synced 2024-11-15 13:05:18 +00:00
0498bcc0c9
of a couple of (working) disassemblies
694 lines
13 KiB
ArmAsm
694 lines
13 KiB
ArmAsm
*
|
|
* Ultima II: The Revenge of the Enchanteress
|
|
*
|
|
* (c) 1982, Sierra On-Line
|
|
* (s) 2020, John Disam
|
|
*
|
|
|
|
TYP BIN
|
|
ORG $8900
|
|
MX %11
|
|
LST OFF
|
|
|
|
*----------------------------
|
|
|
|
KBD EQU $C000
|
|
KBDSTROBE EQU $C010
|
|
SPKR EQU $C030
|
|
TXTCLR EQU $C050
|
|
HIRES EQU $C057
|
|
WAIT EQU $FCA8
|
|
PRBYTE EQU $FDDA
|
|
COUT EQU $FDED
|
|
|
|
*----------------------------
|
|
|
|
L8900 JSR L8C01
|
|
LDA HIRES
|
|
LDA TXTCLR
|
|
LDA #$80
|
|
STA $1F80
|
|
LDA #$40
|
|
STA $1F81
|
|
LDX $4E37
|
|
LDA L8E28,X
|
|
STA $1F89
|
|
LDA L8E32,X
|
|
STA $1F8A
|
|
LDA L8E3C,X
|
|
STA $1F8B
|
|
SED
|
|
LDA $4EAF
|
|
SEC
|
|
SBC #$01
|
|
STA $4EAF
|
|
CLD
|
|
LDA #$28
|
|
STA $21
|
|
LDX #$1E
|
|
LDY #$14
|
|
JSR $458A
|
|
JSR $402C
|
|
ASC " FUEL="00
|
|
LDX #$1E
|
|
LDY #$15
|
|
JSR $458A
|
|
JSR $402C
|
|
ASC " XENO="00
|
|
LDX #$1E
|
|
LDY #$16
|
|
JSR $458A
|
|
JSR $402C
|
|
ASC " YAKO="00
|
|
LDX #$1E
|
|
LDY #$17
|
|
JSR $458A
|
|
JSR $402C
|
|
ASC " ZABO="00
|
|
LDA #$20
|
|
STA $21
|
|
JSR L8DE4
|
|
JSR L8C18
|
|
JSR L8C92
|
|
LDA $4E2C
|
|
CMP #$05
|
|
BCS L89AF
|
|
JSR $402C
|
|
ASC 8D
|
|
ASC "YOU HAVE EXPLODED!"8D8D00
|
|
L89AC JMP L89AC
|
|
|
|
L89AF JSR L8DE4
|
|
JSR $402C
|
|
ASC "CMD: "00
|
|
L89BB JSR L8A66
|
|
LDA KBD
|
|
BPL L89BB
|
|
BIT KBDSTROBE
|
|
CMP #$88
|
|
BNE L89CD
|
|
JMP L8A00
|
|
|
|
L89CD CMP #$95
|
|
BNE L89D4
|
|
JMP L8A19
|
|
|
|
L89D4 CMP #$8D
|
|
BNE L89DB
|
|
JMP L8A33
|
|
|
|
L89DB CMP #$AF ; /
|
|
BNE L89E2
|
|
JMP L8A4D
|
|
|
|
L89E2 CMP #$C8 ; H
|
|
BNE L89E9
|
|
JMP L8D20
|
|
|
|
L89E9 CMP #$CC ; L
|
|
BNE L89F0
|
|
JMP L8F8B
|
|
|
|
L89F0 JSR L8BA7
|
|
LDA #$80
|
|
STA $1F80
|
|
LDA #$40
|
|
STA $1F81
|
|
JMP L89BB
|
|
|
|
L8A00 JSR $402C
|
|
ASC "LEFT"8D00
|
|
JSR L8BA7
|
|
LDA #$20
|
|
STA $1F80
|
|
LDA #$40
|
|
STA $1F81
|
|
JMP L89AF
|
|
|
|
L8A19 JSR $402C
|
|
ASC "RIGHT"8D00
|
|
JSR L8BA7
|
|
LDA #$DF
|
|
STA $1F80
|
|
LDA #$40
|
|
STA $1F81
|
|
JMP L89AF
|
|
|
|
L8A33 JSR $402C
|
|
ASC "CLIMB"8D00
|
|
JSR L8BA7
|
|
LDA #$10
|
|
STA $1F81
|
|
LDA #$80
|
|
STA $1F80
|
|
JMP L89AF
|
|
|
|
L8A4D JSR $402C
|
|
ASC "DIVE"8D00
|
|
JSR L8BA7
|
|
LDA #$6F
|
|
STA $1F81
|
|
LDA #$80
|
|
STA $1F80
|
|
JMP L89AF
|
|
|
|
L8A66 JSR L8C38
|
|
LDY #$00
|
|
L8A6B LDA $1F00,Y
|
|
STA $1F82
|
|
SEC
|
|
SBC $1F80
|
|
BCS L8A90
|
|
EOR #$FF
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
TAX
|
|
LDA $1F82
|
|
SEC
|
|
SBC L8B51,X
|
|
BCS L8A8A
|
|
JMP L8B20
|
|
|
|
L8A8A STA $1F84
|
|
JMP L8AA4
|
|
|
|
L8A90 LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
TAX
|
|
LDA $1F82
|
|
CLC
|
|
ADC L8B51,X
|
|
STA $1F84
|
|
BCC L8AA4
|
|
JMP L8B20
|
|
|
|
L8AA4 LDA $1F40,Y
|
|
STA $1F83
|
|
SEC
|
|
SBC $1F81
|
|
BCS L8AC6
|
|
EOR #$FF
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
TAX
|
|
LDA $1F83
|
|
SEC
|
|
SBC L8B61,X
|
|
STA $1F85
|
|
BPL L8AD7
|
|
JMP L8B20
|
|
|
|
L8AC6 LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
TAX
|
|
LDA $1F83
|
|
CLC
|
|
ADC L8B61,X
|
|
BMI L8B20
|
|
STA $1F85
|
|
L8AD7 STY $1F88
|
|
LDA $1F86
|
|
BEQ L8AEC
|
|
LDA $1F82
|
|
STA $60
|
|
LDA $1F83
|
|
STA $61
|
|
JSR L8B87
|
|
L8AEC LDY $1F88
|
|
LDA $1F84
|
|
STA $60
|
|
STA $1F00,Y
|
|
LDA $1F85
|
|
STA $61
|
|
STA $1F40,Y
|
|
JSR L8B69
|
|
LDY $1F88
|
|
INY
|
|
CPY #$40
|
|
BEQ L8B17
|
|
LDA $1F86
|
|
CMP #$02
|
|
BCS L8B14
|
|
BIT SPKR
|
|
L8B14 JMP L8A6B
|
|
|
|
L8B17 LDA $1F86
|
|
BEQ L8B1F
|
|
JSR WAIT
|
|
L8B1F RTS
|
|
|
|
L8B20 BIT SPKR
|
|
LDA $1F00,Y
|
|
STA $1F82
|
|
LDA $1F40,Y
|
|
STA $1F83
|
|
JSR L8B43
|
|
STA $1F84
|
|
JSR L8B43
|
|
AND #$7F
|
|
STA $1F85
|
|
BIT SPKR
|
|
JMP L8AD7
|
|
|
|
L8B43 CLC
|
|
LDA $4E
|
|
ADC #$09
|
|
ADC $4F
|
|
LDX $4E
|
|
STA $4E
|
|
STX $4F
|
|
RTS
|
|
|
|
L8B51 HEX 0102030405060708090A0B0C0D0E0F10
|
|
L8B61 HEX 0102030405060708
|
|
|
|
L8B69 LDA $61
|
|
CLC
|
|
ADC #$10
|
|
TAY
|
|
LDA $472C,Y
|
|
STA $FE
|
|
LDA $47EC,Y
|
|
STA $FF
|
|
LDX $60
|
|
LDY $48AC,X
|
|
INY
|
|
LDA $49CB,X
|
|
ORA ($FE),Y
|
|
STA ($FE),Y
|
|
RTS
|
|
|
|
L8B87 LDA $61
|
|
CLC
|
|
ADC #$10
|
|
TAY
|
|
LDA $472C,Y
|
|
STA $FE
|
|
LDA $47EC,Y
|
|
STA $FF
|
|
LDX $60
|
|
LDY $48AC,X
|
|
INY
|
|
LDA $49CB,X
|
|
EOR #$FF
|
|
AND ($FE),Y
|
|
STA ($FE),Y
|
|
RTS
|
|
|
|
L8BA7 LDA $1F80
|
|
STA $60
|
|
LDA $1F81
|
|
SEC
|
|
SBC #$03
|
|
STA $61
|
|
JSR L8B87
|
|
INC $61
|
|
JSR L8B87
|
|
INC $61
|
|
JSR L8B87
|
|
INC $61
|
|
JSR L8B87
|
|
INC $61
|
|
JSR L8B87
|
|
INC $61
|
|
JSR L8B87
|
|
INC $61
|
|
JSR L8B87
|
|
LDA $1F80
|
|
SEC
|
|
SBC #$03
|
|
STA $60
|
|
LDA $1F81
|
|
STA $61
|
|
JSR L8B87
|
|
INC $60
|
|
JSR L8B87
|
|
INC $60
|
|
JSR L8B87
|
|
INC $60
|
|
INC $60
|
|
JSR L8B87
|
|
INC $60
|
|
JSR L8B87
|
|
INC $60
|
|
JSR L8B87
|
|
RTS
|
|
|
|
L8C01 LDA #$20
|
|
STA $FD
|
|
LDA #$00
|
|
TAY
|
|
STA $FC
|
|
L8C0A STA ($FC),Y
|
|
INY
|
|
BNE L8C0A
|
|
INC $FD
|
|
LDX $FD
|
|
CPX #$40
|
|
BCC L8C0A
|
|
RTS
|
|
|
|
L8C18 JSR L8C2F
|
|
LDY #$3F
|
|
L8C1D JSR L8B43
|
|
STA $1F00,Y
|
|
JSR L8B43
|
|
AND #$7F
|
|
STA $1F40,Y
|
|
DEY
|
|
BPL L8C1D
|
|
RTS
|
|
|
|
L8C2F LDA #$3B
|
|
STA $4E
|
|
LDA #$67
|
|
STA $4F
|
|
RTS
|
|
|
|
L8C38 LDA $1F80
|
|
STA $60
|
|
LDA $1F81
|
|
SEC
|
|
SBC #$03
|
|
STA $61
|
|
JSR L8B69
|
|
INC $61
|
|
JSR L8B69
|
|
INC $61
|
|
JSR L8B69
|
|
INC $61
|
|
JSR L8B69
|
|
INC $61
|
|
JSR L8B69
|
|
INC $61
|
|
JSR L8B69
|
|
INC $61
|
|
JSR L8B69
|
|
LDA $1F80
|
|
SEC
|
|
SBC #$03
|
|
STA $60
|
|
LDA $1F81
|
|
STA $61
|
|
JSR L8B69
|
|
INC $60
|
|
JSR L8B69
|
|
INC $60
|
|
JSR L8B69
|
|
INC $60
|
|
INC $60
|
|
JSR L8B69
|
|
INC $60
|
|
JSR L8B69
|
|
INC $60
|
|
JSR L8B69
|
|
RTS
|
|
|
|
L8C92 JSR $402C
|
|
ASC "HYPERWARP ENGAGED!"8D00
|
|
LDA #$80
|
|
STA $1F87
|
|
LDA #$00
|
|
STA $1F86
|
|
JSR L8C2F
|
|
L8CB6 JSR L8A66
|
|
DEC $1F87
|
|
BNE L8CB6
|
|
LDA #$80
|
|
STA $1F87
|
|
LDA #$01
|
|
STA $1F86
|
|
JSR L8DE4
|
|
JSR L8C2F
|
|
L8CCE JSR L8A66
|
|
DEC $1F87
|
|
BNE L8CCE
|
|
INC $1F86
|
|
L8CD9 JSR L8A66
|
|
INC $1F86
|
|
INC $1F86
|
|
BPL L8CD9
|
|
LDA $4EAF
|
|
LSR
|
|
BCC L8D1C
|
|
LSR
|
|
BCC L8D1C
|
|
STA $4F
|
|
JSR $402C
|
|
ASC "SHIP OFF COURSE!"8D00
|
|
JSR L8B43
|
|
AND #$07
|
|
STA $1F89
|
|
JSR L8B43
|
|
AND #$07
|
|
STA $1F8A
|
|
JSR L8B43
|
|
AND #$07
|
|
STA $1F8B
|
|
L8D1C JSR L8E46
|
|
RTS
|
|
|
|
L8D20 LDA $4EAF
|
|
BNE L8D36
|
|
JSR $402C
|
|
ASC "NO FUEL!"878D00
|
|
JMP L89AF
|
|
|
|
L8D36 SED
|
|
SEC
|
|
SBC #$01
|
|
STA $4EAF
|
|
CLD
|
|
JSR L8BA7
|
|
LDA #$80
|
|
STA $1F80
|
|
LDA #$40
|
|
STA $1F81
|
|
JSR $402C
|
|
ASC "HYPERWARP TO:"8D
|
|
ASC "XENO="00
|
|
JSR L8DCA
|
|
STA $1F89
|
|
JSR $402C
|
|
ASC " YAKO="00
|
|
JSR L8DCA
|
|
STA $1F8A
|
|
JSR $402C
|
|
ASC " ZABO="00
|
|
JSR L8DCA
|
|
STA $1F8B
|
|
JSR $402C
|
|
ASC 8D
|
|
ASC "PREPARE FOR HYPERWARP!"8D00
|
|
JSR L8C2F
|
|
L8DA7 JSR L8A66
|
|
DEC $1F86
|
|
LDA $1F86
|
|
CMP #$02
|
|
BNE L8DA7
|
|
LDA #$40
|
|
STA $1F87
|
|
JSR L8C2F
|
|
L8DBC JSR L8A66
|
|
DEC $1F87
|
|
BNE L8DBC
|
|
JSR L8C92
|
|
JMP L89AF
|
|
|
|
L8DCA JSR L8A66
|
|
LDA KBD
|
|
CMP #$B0
|
|
BCC L8DCA
|
|
CMP #$BA
|
|
BCS L8DCA
|
|
BIT KBDSTROBE
|
|
PHA
|
|
JSR COUT
|
|
PLA
|
|
SEC
|
|
SBC #$B0
|
|
RTS
|
|
|
|
L8DE4 LDA #$28
|
|
STA $21
|
|
LDX #$25
|
|
LDY #$14
|
|
JSR $458A
|
|
LDA $4EAF
|
|
JSR PRBYTE
|
|
LDX #$25
|
|
LDY #$15
|
|
JSR $458A
|
|
LDA $1F89
|
|
JSR PRBYTE
|
|
LDX #$25
|
|
LDY #$16
|
|
JSR $458A
|
|
LDA $1F8A
|
|
JSR PRBYTE
|
|
LDX #$25
|
|
LDY #$17
|
|
JSR $458A
|
|
LDA $1F8B
|
|
JSR PRBYTE
|
|
LDA #$20
|
|
STA $21
|
|
LDX #$00
|
|
LDY #$17
|
|
JSR $458A
|
|
RTS
|
|
|
|
* PLANET COORDINATES
|
|
|
|
L8E28 HEX 06050306010209040009
|
|
L8E32 HEX 06040302030804000109
|
|
L8E3C HEX 06050403040506050409
|
|
|
|
L8E46 LDA $1F89
|
|
CMP #$04
|
|
BNE L8E78
|
|
LDA $1F8A
|
|
CMP #$04
|
|
BNE L8E78
|
|
LDA $1F8B
|
|
CMP #$04
|
|
BNE L8E78
|
|
JSR $402C
|
|
ASC 8D8D
|
|
ASC "YOU HIT THE SUN!"8D00
|
|
JSR L8C01
|
|
L8E75 JMP L8E75
|
|
|
|
L8E78 LDX #$09
|
|
L8E7A LDA L8E28,X
|
|
CMP $1F89
|
|
BNE L8E92
|
|
LDA L8E32,X
|
|
CMP $1F8A
|
|
BNE L8E92
|
|
LDA L8E3C,X
|
|
CMP $1F8B
|
|
BEQ L8EB8
|
|
L8E92 DEX
|
|
BPL L8E7A
|
|
JSR $402C
|
|
ASC "YOU ARE IN DEEP SPACE."8D00
|
|
LDA #$0A
|
|
STA $4E37
|
|
JMP L8F8A
|
|
|
|
L8EB8 TXA
|
|
STA $4E37
|
|
JSR $402C
|
|
ASC "YOU ARE ORBITING "00
|
|
LDA $4E37
|
|
CMP #$00
|
|
BEQ L8EFB
|
|
CMP #$01
|
|
BEQ L8F09
|
|
CMP #$02
|
|
BEQ L8F19
|
|
CMP #$03
|
|
BEQ L8F27
|
|
CMP #$04
|
|
BEQ L8F34
|
|
CMP #$05
|
|
BEQ L8F44
|
|
CMP #$06
|
|
BEQ L8F53
|
|
CMP #$07
|
|
BEQ L8F62
|
|
CMP #$08
|
|
BEQ L8F72
|
|
JMP L8F80
|
|
|
|
L8EFB JSR $402C
|
|
ASC "EARTH."8D00
|
|
JMP L8F8A
|
|
|
|
L8F09 JSR $402C
|
|
ASC "MERCURY."8D00
|
|
JMP L8F8A
|
|
|
|
L8F19 JSR $402C
|
|
ASC "VENUS."8D00
|
|
JMP L8F8A
|
|
|
|
L8F27 JSR $402C
|
|
ASC "MARS."8D00
|
|
JMP L8F8A
|
|
|
|
L8F34 JSR $402C
|
|
ASC "JUPITER."8D00
|
|
JMP L8F8A
|
|
|
|
L8F44 JSR $402C
|
|
ASC "SATURN."8D00
|
|
JMP L8F8A
|
|
|
|
L8F53 JSR $402C
|
|
ASC "URANUS."8D00
|
|
JMP L8F8A
|
|
|
|
L8F62 JSR $402C
|
|
ASC "NEPTUNE."8D00
|
|
JMP L8F8A
|
|
|
|
L8F72 JSR $402C
|
|
ASC "PLUTO."8D00
|
|
JMP L8F8A
|
|
|
|
L8F80 JSR $402C
|
|
ASC "X."8D00
|
|
JMP L8F8A
|
|
L8F8A RTS
|
|
|
|
L8F8B JSR L8BA7
|
|
LDA #$80
|
|
STA $1F80
|
|
LDA #$40
|
|
STA $1F81
|
|
JSR $402C
|
|
ASC "LANDING REQUESTED!"8D00
|
|
JSR L8E46
|
|
LDA $4E37
|
|
CMP #$0A
|
|
BNE L8FD0
|
|
JSR $402C
|
|
ASC "REQUEST DENIED!"8D00
|
|
JMP L89AF
|
|
|
|
L8FD0 CMP #$00
|
|
BNE L9002
|
|
JSR $402C
|
|
ASC "(INSERT PLAYER DISK)"8D00
|
|
L8FED JSR L8A66
|
|
LDA KBD
|
|
CMP #$9B
|
|
BNE L8FED
|
|
LDA #$00
|
|
STA $4E14
|
|
LDA #$04
|
|
STA $4E13
|
|
RTS
|
|
|
|
L9002 JSR $402C
|
|
ASC "(INSERT GALACTIC DISK)"8D00
|
|
L901D JSR L8A66
|
|
LDA KBD
|
|
CMP #$9B
|
|
BNE L901D
|
|
LDA #$00
|
|
STA $4E14
|
|
LDA $4E37
|
|
STA $4E13
|
|
RTS
|