; Draws interior objects for BS Zelda: Ancient Stone Tablets
; compiled with x112f

.detect on
.index 16
.mem 16

.org $A08100

; List
; 00 = Pot
; 02 = Chest
; 04 = Up-level stairs
; 06 = Up-level stairs (v2)
; 08 = Down-level stairs
; 0A = Down-level stairs (v2)
; 0C = Front-facing stairs
; 0E = Back-facing stairs
; 10 = Big chest
; 12 = Rupee
; 14 = Post
; 16 = Front-facing stairs (v2)
; 18 = Straight-up stairs
; 26 = Straight-down stairs
; 2E = Huge block


; Backup code
ASL A
TAY
PHA
LDX $02


; Determine BG layer (#1=7E4000-7F5FFF, #2=7E2000-7E3FFF)
LDA $04
CMP #$0002
TYA
BCS BG_Continue
ADC #$2000
BG_Continue:
CLC
ADC #$2000


Add_Pot:
CPX #$0000
BNE Add_Chest

TAX
LDA #$0D28
STA $7E0000,x
LDA #$4D28
STA $7E0002,x
LDA #$0D38
STA $7E0080,x
LDA #$4D38
STA $7E0082,x

BRL Resume_Flow


Add_Chest:
CPX #$0002
BNE Add_Upstairs

; Check for invisible chests
PHA
LDA $AE
AND #$00FF
CMP #$0027 ; Button
BEQ Invisible_Chest
CMP #$003E ; 4 Torches
BEQ Invisible_Chest
CMP #$0041 ; Tongue
BEQ Invisible_Chest
CMP #$0042 ; 2 Torches
BEQ Invisible_Chest
BRA Visible_Chest

Invisible_Chest:
PLA
BRA Resume_Chest

Visible_Chest:
PLA
TAX
LDA #$19E1
STA $7e0000,x
LDA #$59E1
STA $7e0002,x
LDA #$19F1
STA $7e0080,x
LDA #$59F1
STA $7e0082,x

Resume_Chest:
BRL Resume_Flow


Add_Upstairs:
CPX #$0004
BNE Add_Upstairs_2

TAX
LDA #$28B8
STA $7e0000,x
LDA #$289D
STA $7e0002,x
LDA #$689D
STA $7e0004,x
LDA #$68B8
STA $7e0006,x

LDA #$2808
STA $7e0080,x
LDA #$082E
STA $7e0082,x
LDA #$082F
STA $7e0084,x
LDA #$6808
STA $7e0086,x

LDA #$0818
STA $7e0100,x
LDA #$083E
STA $7e0102,x
LDA #$083F
STA $7e0104,x
LDA #$4818
STA $7e0106,x

BRL Resume_Flow


Add_Upstairs_2:
CPX #$0006
BNE Add_Downstairs

TAX
LDA #$28B8
STA $7e0000,x
LDA #$289D
STA $7e0002,x
LDA #$689D
STA $7e0004,x
LDA #$68B8
STA $7e0006,x

LDA #$2808
STA $7e0080,x
LDA #$082E
STA $7e0082,x
LDA #$082F
STA $7e0084,x
LDA #$6808
STA $7e0086,x

LDA #$0818
STA $7e0100,x
LDA #$083E
STA $7e0102,x
LDA #$083F
STA $7e0104,x
LDA #$4818
STA $7e0106,x

BRL Resume_Flow


Add_Downstairs:
CPX #$0008
BNE Add_Downstairs_2

TAX
LDA #$08B8
STA $7e0000,x
LDA #$28B9
STA $7e0002,x
LDA #$68B9
STA $7e0004,x
LDA #$68B8
STA $7e0006,x

LDA #$0808
STA $7e0080,x
LDA #$09EF
STA $7e0082,x
LDA #$09EF
STA $7e0084,x
LDA #$6808
STA $7e0086,x

LDA #$0818
STA $7e0100,x
LDA #$0819
STA $7e0102,x
LDA #$081A
STA $7e0104,x
LDA #$4818
STA $7e0106,x

BRL Resume_Flow


Add_Downstairs_2:
CPX #$000A
BNE Add_Frontstairs

TAX
LDA #$08B8
STA $7e0000,x
LDA #$28B9
STA $7e0002,x
LDA #$68B9
STA $7e0004,x
LDA #$68B8
STA $7e0006,x

LDA #$0808
STA $7e0080,x
LDA #$09EF
STA $7e0082,x
LDA #$09EF
STA $7e0084,x
LDA #$6808
STA $7e0086,x

LDA #$0818
STA $7e0100,x
LDA #$0819
STA $7e0102,x
LDA #$081A
STA $7e0104,x
LDA #$4818
STA $7e0106,x

BRL Resume_Flow


Add_Frontstairs:
CPX #$000C
BNE Add_Backstairs

TAX
LDA #$084D
STA $7e0000,x
LDA #$084E
STA $7e0002,x
LDA #$484E
STA $7e0004,x
LDA #$484D
STA $7e0006,x

LDA #$085D
STA $7e0080,x
LDA #$085E
STA $7e0082,x
LDA #$485E
STA $7e0084,x
LDA #$485D
STA $7e0086,x

LDA #$086D
STA $7e0100,x
LDA #$086E
STA $7e0102,x
LDA #$486E
STA $7e0104,x
LDA #$486D
STA $7e0106,x

LDA #$087D
STA $7e0180,x
LDA #$087E
STA $7e0182,x
LDA #$487E
STA $7e0184,x
LDA #$487D
STA $7e0186,x

BRL Resume_Flow


Add_Backstairs:
CPX #$000E
BNE Add_Bigchest

TAX
LDA #$887D
STA $7e0000,x
LDA #$887E
STA $7e0002,x
LDA #$C87E
STA $7e0004,x
LDA #$C87D
STA $7e0006,x

LDA #$886D
STA $7e0080,x
LDA #$886E
STA $7e0082,x
LDA #$C86E
STA $7e0084,x
LDA #$C86D
STA $7e0086,x

LDA #$885D
STA $7e0100,x
LDA #$885E
STA $7e0102,x
LDA #$C85E
STA $7e0104,x
LDA #$C85D
STA $7e0106,x

LDA #$884D
STA $7e0180,x
LDA #$884E
STA $7e0182,x
LDA #$C84E
STA $7e0184,x
LDA #$C84D
STA $7e0186,x

BRL Resume_Flow


Add_Bigchest:
CPX #$0010
BNE Add_Rupee

TAX
LDA #$1920
STA $7e0000,x
LDA #$1921
STA $7e0002,x
LDA #$5921
STA $7e0004,x
LDA #$5920
STA $7e0006,x

LDA #$1930
STA $7e0080,x
LDA #$1931
STA $7e0082,x
LDA #$5931
STA $7e0084,x
LDA #$5930
STA $7e0086,x

LDA #$1926
STA $7e0100,x
LDA #$1927
STA $7e0102,x
LDA #$5927
STA $7e0104,x
LDA #$5926
STA $7e0106,x

BRL Resume_Flow


Add_Rupee:
CPX #$0012
BNE Add_Post
BRL Resume_Flow


Add_Post:
CPX #$0014
BNE Add_Frontstairs_2

TAX
LDA #$19CD
STA $7e0000,x
LDA #$59CD
STA $7e0002,x
LDA #$19CE
STA $7e0080,x
LDA #$59CE
STA $7e0082,x

BRL Resume_Flow


Add_Frontstairs_2:
CPX #$0016
BNE Add_Straightup

TAX
LDA #$084D
STA $7e0000,x
LDA #$084E
STA $7e0002,x
LDA #$484E
STA $7e0004,x
LDA #$484D
STA $7e0006,x

LDA #$085D
STA $7e0080,x
LDA #$085E
STA $7e0082,x
LDA #$485E
STA $7e0084,x
LDA #$485D
STA $7e0086,x

LDA #$086D
STA $7e0100,x
LDA #$086E
STA $7e0102,x
LDA #$486E
STA $7e0104,x
LDA #$486D
STA $7e0106,x

LDA #$087D
STA $7e0180,x
LDA #$087E
STA $7e0182,x
LDA #$487E
STA $7e0184,x
LDA #$487D
STA $7e0186,x

BRL Resume_Flow


Add_Straightup:
CPX #$0018
BNE Add_Straightdown

TAX
LDA #$28B8
STA $7e0000,x
LDA #$289D
STA $7e0002,x
LDA #$689D
STA $7e0004,x
LDA #$68B8
STA $7e0006,x

LDA #$0808
STA $7e0080,x
LDA #$0807
STA $7e0082,x
LDA #$4807
STA $7e0084,x
LDA #$4808
STA $7e0086,x

LDA #$0818
STA $7e0100,x
LDA #$0817
STA $7e0102,x
LDA #$4817
STA $7e0104,x
LDA #$4818
STA $7e0106,x

BRL Resume_Flow


Add_Straightdown:
CPX #$0026
BNE Add_Hugeblock

TAX
LDA #$880D
STA $7e0000,x
LDA #$8816
STA $7e0002,x
LDA #$C816
STA $7e0004,x
LDA #$C80D
STA $7e0006,x

LDA #$8808
STA $7e0080,x
LDA #$89EF
STA $7e0082,x
LDA #$C9EF
STA $7e0084,x
LDA #$C808
STA $7e0086,x

LDA #$A8B5
STA $7e0100,x
LDA #$A8B6
STA $7e0102,x
LDA #$E8B6
STA $7e0104,x
LDA #$E8B5
STA $7e0106,x

BRL Resume_Flow


Add_Hugeblock:
CPX #$002E
BNE Add_Unknown

TAX
LDA #$0DE3
STA $7e0000,x
LDA #$0DE4
STA $7e0002,x
LDA #$4DE4
STA $7e0004,x
LDA #$4DE3
STA $7e0006,x

LDA #$0DF3
STA $7e0080,x
LDA #$0DF4
STA $7e0082,x
LDA #$4DF4
STA $7e0084,x
LDA #$4DF3
STA $7e0086,x

LDA #$8DF3
STA $7e0100,x
LDA #$8DF4
STA $7e0102,x
LDA #$CDF4
STA $7e0104,x
LDA #$CDF3
STA $7e0106,x

LDA #$8DE3
STA $7e0180,x
LDA #$8DE4
STA $7e0182,x
LDA #$CDE4
STA $7e0184,x
LDA #$CDE3
STA $7e0186,x

BRL Resume_Flow


Add_Unknown:
TAX
LDA #$0D28
STA $7E0000,x
LDA #$0D38
STA $7E0080,x

BRL Resume_Flow


Resume_Flow:
PLA
LDX $02
RTL