Page 1 of 1
Working with multiple banks
Posted: Sat Jul 09, 2016 1:29 am
by AzimuthFE
I recently switched from XKAS to WLADX (thanks for the tip Revenant!). I am having trouble with the .BANK directive. I have a bunch of stuff in the first bank using
. However when I try to put stuff in the second bank with
nothing is put there in assembly i.e. from $10000 to the end of file is completely empty. I have searched all over but can't find a single WLA asm file online that uses multiple banks; I'm starting to think I am the only person suffering with this problem.
I have provided the asm file (scrollsnes.asm). If anyone could look at it and provide insight I would be very grateful.
Re: Working with multiple banks
Posted: Sat Jul 09, 2016 5:20 am
by Ramsis
AzimuthFE wrote:I have searched all over but can't find a single WLA asm file online that uses multiple banks
Here's the first
example that comes to mind.
AzimuthFE wrote:I have provided the asm file (scrollsnes.asm). If anyone could look at it and provide insight I would be very grateful.
Your mistake is using
.ASM and
.ENDASM in the wrong fashion. Whatever you put after
.ENDASM will be completely ignored by WLA, just as if it was commented out. (The
.ASM directive, on the other hand, tells WLA to continue assembling your code/directives. IOW,
.ENDASM equals
/*, and
.ASM equals
*/).
Also, your
.DB and
.INCBIN directives need dots.
This is how your file (scrollsnes.asm) should look like so WLA assembles it just fine:
Code: Select all
.SNESHEADER
ID "ABCD"
NAME "SCROLLTEST"
HIROM
FASTROM
CARTRIDGETYPE $02
ROMSIZE $0c
SRAMSIZE $03
COUNTRY $00
LICENSEECODE $00
VERSION $00
.ENDSNES
.SNESNATIVEVECTOR
COP $8000
BRK $8000
ABORT $8000
NMI $8000
UNUSED $0000
IRQ $8000
.ENDNATIVEVECTOR
.SNESEMUVECTOR
COP $8000
UNUSED $0000
ABORT $8000
NMI $8000
RESET reset
IRQBRK $8000
.ENDEMUVECTOR
.ENUM $0000
INIDISP db
OBSEL db
OAMADD: dw
OAMDATA db
BGMODE db
MOSAIC db
BG1SC db
BG2SC db
BG3SC db
BG4SC db
BG12NBA db
BG34NBA db
BG1HOFS: dw
BG1VOFS: dw
BG2HOFS: dw
BG2VOFS: dw
BG3HOFS: dw
BG3VOFS: dw
BG4HOFS: dw
BG4VOFS: dw
VMAIN db
VMADD: dw
VMDATA: dw
M7SEL db
m7a db
m7b db
m7c db
m7d db
m7x db
m7y db
CGADD db
CGDATA db
W12SEL db
W34SEL db
WOBJSEL db
WH0 db
WH1 db
WH2 db
WH3 db
WBGLOG db
WOBJLOG db
TM db
TS db
TMW db
TSW db
CGWSEL db
CDADSUB db
COLDATA db
SETINI db
MPYL db
MPYM db
MPYH db
SLHV db
OAMDATAREAD db
VMDATAREAD: dw
CGDATAREAD db
OPHCT db
OPHCV db
STAT77 db
STAT78 db
APUI00 db
APUI01 db
APUI02 db
APUI03 db
WMDATA db
WMADDL db
WMADDM db
WMADDH db
NMITIMEN db
WRIO db
WRMPYA db
WRMPYH db
WRDIVL db
WRDIVH db
WRDIVB db
HTIMEL db
HTIMEH db
VTIMEL db
VTIMEH db
MDMAEN db
HDMAEN db
MEMSEL db
RDNMI db
TIMEUP db
HVBJOY db
RDIO db
RDDIVL db
RDDIVH db
RDMPYL db
RDMPYH db
JOY1: dw
JOY2: dw
JOY3: dw
JOY4: dw
.ENDE
.ENUM $0100
ROM_CPY_PTR ds 3
.ENDE
.MEMORYMAP ; Tell WLA that the SNES has ROM at locations 0000-$FFFF in every bank
SLOTSIZE $10000 ; and that this area is $10000 bytes in size.
DEFAULTSLOT 0 ; There is only a single slot in SNES, other consoles
SLOT 0 $0000 ; may have more slots per bank.
.ENDME
.ROMBANKSIZE $10000 ; Every ROM bank is 64 KBytes in size, also necessary.
.ROMBANKS $40 ; 32Mbit -- Tell WLA to use 64 ROM banks.
.DEFINE HEADER_OFF $8000
.BANK 0
.ORG $8000
reset:
sei
clc
xce
sep #$30
lda #$8f
sta $2100
stz $2101
ldx #$05
firstinit:
stz $2100,x
inx
cpx #$0d
bne firstinit
secondinit:
stz $2100,x
stz $2100,x
inx
cpx #$15
bne secondinit
lda #$80
sta $2115
stz $2116
stz $2117
stz $211a
lda #$01
stz $211b
sta $211b
stz $211e
sta $211e
stz $211c
stz $211c
stz $211d
stz $211d
stz $211f
stz $211f
stz $2120
stz $2120
ldx #$21
thirdinit:
stz $2100,x
inx
cpx #$30
bne thirdinit
lda #$30
sta $2130
stz $2131
lda #$e0
sta $2132
stz $2133
stz $4200
lda #$ff
sta $4201
lda #$02
fourthinit
stz $4200,x
inx
cpx #$0e
bne fourthinit
.BANK 1 SLOT 0
.ORG $8000
.db $41
openinggraphics:
.INCBIN "scrsnes/genersnes"
openingmeta:
.INCBIN "scrsnes/metatiles"
openingmetamap:
.INCBIN "scrsnes/metatilemap"
Note that I completely deleted the unnecessary
.ENDASM/.ASM directives.

Re: Working with multiple banks
Posted: Mon Jul 11, 2016 11:56 am
by AzimuthFE
Sorry for the late reply. I really appreciate you taking the time to look at it. I'm sorry it wasn't something more taxing. I just had it in my mind that "asm goes in asm directive". Anyway, it works now so thanks again.