#name ^.Object.Getfiles
#type &ffd

#include <Bolmaster$Path>Sources.Structures
#include <Bolmaster$Path>Sources.Variables

;gets all of the necessary files, discarding old files
;if necessary.

LDR R0,[R12,#v.special]
LDR R1,[R12,#v.loadedspecial]
CMP R0,R1
BEQ dontload0
ADD R0,R12,#v.specialadr
BL checkdiscard
ADR R1,specialname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail
.dontload0

LDR R0,[R12,#v.master]
LDR R1,[R12,#v.loadedmaster]
CMP R0,R1
BEQ dontload1
MOV R0,#mastertab
SWI FastSpr_GetPointer
BL checkdiscard
ADR R1,mastername
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail
.dontload1

LDR R0,[R12,#v.backdrop]
LDR R1,[R12,#v.loadedbackdrop]
CMP R0,R1
BEQ dontload2
ADD R0,R12,#v.backdropadr
BL checkdiscard
ADR R1,backdropname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail


ADD R0,R12,#v.bmogtabadr
BL checkdiscard
ADR R1,bmogtabname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail

MOV R0,#backtab
SWI FastSpr_GetPointer
BL checkdiscard
ADR R1,backsprname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail

.dontload2

LDR R0,[R12,#v.level]
LDR R1,[R12,#v.loadedlevel]
CMP R0,R1
BEQ dontload3
ADD R0,R12,#v.leveladr
BL checkdiscard
ADR R1,levelsprname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail
.dontload3
LDR R0,[R12,#v.backpix]
LDR R1,[R12,#v.loadedbackpix]
CMP R0,R1
BEQ dontload4
ADD R0,R12,#v.backpixadr
BL checkdiscard
ADR R1,backpixname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail
.dontload4

LDR R0,[R12,#v.dalek]
LDR R1,[R12,#v.loadeddalek]
CMP R0,R1
BEQ dontload5
MOV R0,#dalektab
SWI FastSpr_GetPointer
BL checkdiscard
ADR R1,daleksprname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail
.dontload5

MOV R0,#explotab
SWI FastSpr_GetPointer
BL checkdiscard
ADR R1,explosprname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail
MOV R0,#bultab
SWI FastSpr_GetPointer
BL checkdiscard
ADR R1,bulsprname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail
MOV R0,#generaltab
SWI FastSpr_GetPointer
BL checkdiscard
ADR R1,generalsprname
ADR R2,levelpathname
SWI XAmnesia_LoadHammered
BVS loadfail

MOV R1,PC
BIC R1,R1,#1<<28
TEQP PC,R1
B end

.specialname
DCB "Code.Special",0
.mastername
DCB "Graphics.FSPMaster",0
.backdropname
DCB "Graphics.Backdrop",0
.backsprname
DCB "Graphics.FSPBackSpr",0
.backpixname
DCB "Graphics.BackPix",0
.bmogtabname
DCB "BMOG_Table",0
.levelsprname
DCB "Levelnet",0
.explosprname
DCB "Graphics.FSPExplo",0
.bulsprname
DCB "Graphics.FSPBullets",0
.generalsprname
DCB "Graphics.FSPGeneral",0
.daleksprname
DCB "Graphics.FSPNasties",0
.pathname
DCB "Bolmaster$Path",0
.levelpathname
DCB "BolmasterLevel$Path",0
ALIGN
.loadfail
MOV R1,PC
ORR R1,R1,#1<<28
TEQP PC,R1
B end

.checkdiscard
STMFD R13!,{R0-R1,R14}
MOV R1,R0
LDR R0,[R0]
CMP R0,#0
SWINE Amnesia_ReleaseBlock
MOV R0,#0
STR R0,[R1]
LDMFD R13!,{R0-R1,PC}
.end
