mirror of
https://github.com/antoinevignau/source.git
synced 2024-11-16 19:05:36 +00:00
92b66ae6ec
My 2018 disassembly to make it HDD installable
468 lines
8.3 KiB
ArmAsm
468 lines
8.3 KiB
ArmAsm
*
|
|
* Sword of Sodan: the game
|
|
*
|
|
* (c) 1989, Discovery Software
|
|
* (s) 2018, Brutal Deluxe Software
|
|
*
|
|
|
|
mx %00
|
|
TYP BIN
|
|
ORG $000800
|
|
lst off
|
|
|
|
*----------------------------
|
|
|
|
use START.E
|
|
|
|
ptrA000 = $A000 ; where FILEDATA is in bank 0
|
|
ptr025E38 = $025E3B ; where L5E38 jumps to
|
|
ptr025E88 = $025E8B ; where L5E88 jumps to
|
|
ptr028179 = $02817C ; where L8179 jumps to
|
|
|
|
*----------------------------
|
|
|
|
JMP L097C
|
|
jmpl L09F8 ; new pointer to loadFILE
|
|
jmpl saveSCORE ; AV 201806 - save score
|
|
|
|
L0803 DW $1400
|
|
L0805 DW $0000
|
|
L0807 DW $0000
|
|
L0809 DW $0000
|
|
L080B DW $0000
|
|
L080D DW $0000
|
|
L080F DW $0000
|
|
L0811 DW $0000
|
|
|
|
L0813 DB $00
|
|
L0814 DB $00
|
|
L0815 DB $00
|
|
L0816 DB $00
|
|
L0817 DB $00
|
|
L0818 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L0823 DB $00
|
|
DB $00
|
|
L0825 DB $00
|
|
DB $00
|
|
L0827 DB $00
|
|
DB $00
|
|
|
|
*----------------------------
|
|
|
|
L0829 STA L0811
|
|
STY L0807
|
|
STX L0809
|
|
SEP #$30
|
|
LDA #$C8
|
|
STA L08FA
|
|
REP #$30
|
|
LDA #$0003
|
|
STA L0813
|
|
LDA L0811
|
|
STA L0814
|
|
LDA #$1000
|
|
STA L0816
|
|
JSR L08F5
|
|
LDX L0818
|
|
STX L0823
|
|
SEP #$20
|
|
LDA #$D1
|
|
STA L08FA
|
|
REP #$30
|
|
LDA #$0002
|
|
STA L0813
|
|
LDA L0823
|
|
STA L0814
|
|
JSR L08F5
|
|
LDA L0815
|
|
STA L0825
|
|
STA L080D
|
|
LDA L0817
|
|
AND #$00FF
|
|
STA L0827
|
|
STA L080F
|
|
L0883 LDA L0825
|
|
CMP #$8000
|
|
BCC L0893
|
|
LDA #$8000
|
|
STA L080B
|
|
BRA L0899
|
|
L0893 LDA L0825
|
|
STA L080B
|
|
L0899 SEP #$30
|
|
LDA #$CA
|
|
STA L08FA
|
|
REP #$30
|
|
LDA #$0004
|
|
STA L0813
|
|
LDA L0823
|
|
STA L0814
|
|
LDA #$1400
|
|
STA L0815
|
|
LDA L080B
|
|
STA L0817
|
|
JSR L08F5
|
|
LDA L0807
|
|
CMP L0803
|
|
BNE L08CD
|
|
LDA L0809
|
|
CMP L0805
|
|
BEQ L08D0
|
|
L08CD JSR L0949
|
|
L08D0 LDA L0825
|
|
SEC
|
|
SBC L080B
|
|
STA L0825
|
|
BNE L0883
|
|
SEP #$30
|
|
LDA #$CC
|
|
STA L08FA
|
|
REP #$30
|
|
LDA #$0001
|
|
STA L0813
|
|
LDA L0823
|
|
STA L0814
|
|
JSR L08F5
|
|
RTS
|
|
|
|
L08F5 SEC
|
|
XCE
|
|
JSR PRODOS8
|
|
L08FA DB $00
|
|
DA L0813
|
|
|
|
PHP
|
|
CLC
|
|
XCE
|
|
PLP
|
|
REP #$30
|
|
BCC L0940
|
|
|
|
LDX L0811
|
|
LDA |$0003,X
|
|
JSL $025E38
|
|
LDA L0A90
|
|
SEC
|
|
SBC #$000A
|
|
STA L0A90
|
|
STZ $1C
|
|
STZ $1E
|
|
PLA
|
|
SEP #$30
|
|
LDA #$CC
|
|
STA L0938
|
|
REP #$30
|
|
LDA #$0001
|
|
STA L0813
|
|
LDA L0823
|
|
STA L0814
|
|
SEC
|
|
XCE
|
|
JSR PRODOS8
|
|
L0938 DB $00
|
|
DA L0813
|
|
CLC
|
|
XCE
|
|
REP #$30
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
L0940 BIT $D8
|
|
BPL L0948
|
|
JSL $025E88
|
|
L0948 RTS
|
|
|
|
*----------------------------
|
|
|
|
L0949 SEP #$30
|
|
LDA L0805
|
|
STA L0963+2
|
|
LDA L0809
|
|
STA L0963+1
|
|
REP #$30
|
|
LDA L080B
|
|
DEC
|
|
LDX L0803
|
|
LDY L0807
|
|
L0963 MVN $000000,$000000
|
|
PHK
|
|
PLB
|
|
LDA L0807
|
|
CLC
|
|
ADC L080B
|
|
STA L0807
|
|
LDA L0809
|
|
ADC #$0000
|
|
STA L0809
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
L097C SEC
|
|
XCE
|
|
JSR HOME
|
|
SEI
|
|
CLC
|
|
XCE
|
|
REP #$30
|
|
SEP #$30
|
|
PHB
|
|
LDA #$E1
|
|
PHA
|
|
PLB
|
|
LDA #$80
|
|
TSB CYAREG
|
|
LDA #$40
|
|
TSB NEWVIDEO
|
|
LDA #$30
|
|
TRB STATEREG
|
|
LDA #$0F
|
|
TRB CLOCKCTL
|
|
LDA #$F0
|
|
TRB TBCOLOR
|
|
PLB
|
|
REP #$30
|
|
PHA
|
|
PHP
|
|
SEP #$20
|
|
LDA #$1F
|
|
STAL $E1C035
|
|
REP #$20
|
|
PLP
|
|
PLA
|
|
LDA #$0000
|
|
LDX #$0000
|
|
L09BD STAL $E12000,X
|
|
INX
|
|
INX
|
|
BPL L09BD
|
|
LDA #$0001
|
|
LDY #$0000
|
|
JSL L09F8
|
|
SEP #$20
|
|
L09D1 LDAL $E1C019
|
|
BMI L09D1
|
|
L09D7 LDAL $E1C019
|
|
BPL L09D7
|
|
REP #$20
|
|
LDAL $E1C029
|
|
ORA #$0080
|
|
STAL $E1C029
|
|
LDA #$0000
|
|
LDY #$0000
|
|
JSL L09F8
|
|
JMPL ptr028179
|
|
|
|
*
|
|
* SAVE SCORE
|
|
*
|
|
|
|
saveSCORE
|
|
rtl
|
|
|
|
*
|
|
* LOAD FILE
|
|
*
|
|
* A= INDEX IN $A000
|
|
* Y= ENTRY INDEX FROM THE TARGET SOURCE POINTER
|
|
*
|
|
* A000 = (A010, A012...): THIS IS A
|
|
* A012 = (A0DE, A0F7...): THIS IS Y
|
|
|
|
L09F8 PHA
|
|
PHP
|
|
SEP #$20
|
|
LDA #$1F
|
|
STAL $E1C035
|
|
REP #$20
|
|
PLP
|
|
PLA
|
|
PHB
|
|
PHK
|
|
PLB
|
|
STZ $D8
|
|
PHA
|
|
LDX #$00FE
|
|
L0A0F LDA $00,X
|
|
STAL $010100,X
|
|
DEX
|
|
DEX
|
|
BPL L0A0F
|
|
PLA
|
|
PHY
|
|
ASL
|
|
TAY
|
|
LDA ptrA000,Y
|
|
STA $00
|
|
PLA ; WAS Y
|
|
ASL
|
|
TAY
|
|
LDA ($00),Y
|
|
STA $00
|
|
LDY #$0000
|
|
L0A2C LDA ($00),Y
|
|
CMP #$FFFF
|
|
BEQ L0A73
|
|
PHA
|
|
INY
|
|
INY
|
|
LDA ($00),Y
|
|
STA $18
|
|
PHA
|
|
INY
|
|
INY
|
|
LDA ($00),Y
|
|
STA $1A
|
|
TAX
|
|
INY
|
|
INY
|
|
LDA ($00),Y
|
|
STA $1C
|
|
INY
|
|
INY
|
|
LDA ($00),Y
|
|
STA $1E
|
|
INY
|
|
INY
|
|
STY L0A90
|
|
PLY
|
|
PLA
|
|
JSR L0829
|
|
LDA $1C
|
|
ORA $1E
|
|
BEQ L0A6E
|
|
LDA [$18]
|
|
CMP #$9000
|
|
BCC L0A66
|
|
DB $00 ; breaks if size > $9000
|
|
|
|
L0A66 INC $18
|
|
INC $18
|
|
JSL L0AC0
|
|
L0A6E LDY L0A90
|
|
BRA L0A2C
|
|
L0A73 LDX #$00FE
|
|
L0A76 LDAL $010100,X
|
|
STA $00,X
|
|
DEX
|
|
DEX
|
|
BPL L0A76
|
|
PLB
|
|
PHA
|
|
PHP
|
|
SEP #$20
|
|
LDA #$1F
|
|
STAL $E1C035
|
|
REP #$20
|
|
PLP
|
|
PLA
|
|
RTL
|
|
|
|
L0A90 DW $0000
|
|
|
|
*----------------------------
|
|
|
|
MX %11
|
|
|
|
L0A92 LDY #$00
|
|
STY $12
|
|
LDA #$00
|
|
L0A98 STA $1000,Y
|
|
INY
|
|
CPY #$80
|
|
BNE L0A98
|
|
L0AA0 LDA [$18]
|
|
REP #$30
|
|
INC $18
|
|
SEP #$30
|
|
PHA
|
|
STA [$1C]
|
|
REP #$30
|
|
INC $1C
|
|
DEC $20
|
|
SEP #$30
|
|
PLA
|
|
STA $1000,Y
|
|
INY
|
|
BNE L0AA0
|
|
RTS
|
|
|
|
L0ABB LDA #$00
|
|
STA $14
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
MX %00
|
|
|
|
L0AC0 PHB
|
|
PEA $0000
|
|
PLB
|
|
PLB
|
|
STA $20
|
|
SEP #$30
|
|
JSR L0A92
|
|
JSR L0ABB
|
|
L0AD0 LDA [$18]
|
|
REP #$30
|
|
INC $18
|
|
SEP #$30
|
|
TAX
|
|
BEQ L0AF9
|
|
LDA [$18]
|
|
REP #$30
|
|
INC $18
|
|
SEP #$30
|
|
TAY
|
|
L0AE4 LDA $1000,Y
|
|
STX $10
|
|
LDX $14
|
|
STA $1100,X
|
|
INX
|
|
STX $14
|
|
LDX $10
|
|
INY
|
|
DEX
|
|
BNE L0AE4
|
|
BRA L0B09
|
|
L0AF9 LDA [$18]
|
|
REP #$30
|
|
INC $18
|
|
SEP #$30
|
|
LDX $14
|
|
STA $1100,X
|
|
INX
|
|
STX $14
|
|
L0B09 LDX #$00
|
|
L0B0B LDA $1100,X
|
|
STA [$1C]
|
|
REP #$30
|
|
INC $1C
|
|
DEC $20
|
|
BEQ L0B2D
|
|
SEP #$30
|
|
LDY $12
|
|
STA $1000,Y
|
|
INY
|
|
STY $12
|
|
INX
|
|
CPX $14
|
|
BNE L0B0B
|
|
LDX #$00
|
|
STX $14
|
|
BRA L0AD0
|
|
L0B2D REP #$30
|
|
PLB
|
|
RTL
|