So, i'm new to the NES development culture, I got the basic jest of how to code in assembly, I installed nesicide, but the only thing that's keeping me from developing is an error in the ld65 compiler.
The compiling log says the point of error is from the linker config for ld65. Here's the code.
Here's the compiling log:
And here's the versions of programs I'm using
EDIT: I decided to move away from cc65 and decided to use nesasm3. So far i was able to follow up to Week 6 of Nerdy Nights. However i need help with one project. http://forums.nesdev.com/viewtopic.php?f=10&t=18647
The compiling log says the point of error is from the linker config for ld65. Here's the code.
Code:
MEMORY {
# First 28 bytes of the zero page are used by NES library
ZP: start = $28, size = $d8, type = rw, define = yes;
# INES Cartridge Header
HEADER: start = $0, size = $10, file = %O ,fill = yes;
# 2 16K ROM Banks
# - startup
# - code
# - rodata
# - data (load)
PRG: start = $8000, size = $3f00, file = %O ,fill = yes, define = yes;
# NROM256
# PRG: start = $8000, size = $7f00, file = %O ,fill = yes, define = yes;
# DPCM Samples at end of the ROM
DMC: start = $7f00, size = $fa, file = %O, fill = yes;
# NROM256
# DMC: start = $ff00, size = $fa, file = %O, fill = yes;
# Hardware Vectors at end of the ROM
VECTORS: start = $7ffa, size = $6, file = %O, fill = yes;
# NROM256
# VECTORS: start = $fffa, size = $6, file = %O, fill = yes;
# 1 8K CHR Bank
CHR: start = $0000, size = $2000, file = %O, fill = yes;
# standard 2K SRAM (-zeropage)
# $0100 famitone, palette, cpu stack
# $0200 oam buffer
# $0300..$800 ca65 stack
RAM: start = $0300, size = $0500, define = yes;
# Use this definition instead if you going to use extra 8K RAM
# RAM: start = $6000, size = $2000, define = yes;
}
SEGMENTS {
HEADER: load = HEADER, type = ro;
STARTUP: load = PRG, type = ro, define = yes;
LOWCODE: load = PRG, type = ro, optional = yes;
INIT: load = PRG, type = ro, define = yes, optional = yes;
CODE: load = PRG, type = ro, define = yes;
RODATA: load = PRG, type = ro, define = yes;
DATA: load = PRG, run = RAM, type = rw, define = yes;
VECTORS: load = VECTORS, type = rw;
SAMPLES: load = DMC, type = rw;
CHARS: load = CHR, type = rw;
BSS: load = RAM, type = bss, define = yes;
HEAP: load = RAM, type = bss, optional = yes;
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
CONDES: segment = INIT,
type = constructor,
label = __CONSTRUCTOR_TABLE__,
count = __CONSTRUCTOR_COUNT__;
CONDES: segment = RODATA,
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
CONDES: type = interruptor,
segment = RODATA,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}
SYMBOLS {
__STACKSIZE__ : type = weak, value = $0500;
}
# First 28 bytes of the zero page are used by NES library
ZP: start = $28, size = $d8, type = rw, define = yes;
# INES Cartridge Header
HEADER: start = $0, size = $10, file = %O ,fill = yes;
# 2 16K ROM Banks
# - startup
# - code
# - rodata
# - data (load)
PRG: start = $8000, size = $3f00, file = %O ,fill = yes, define = yes;
# NROM256
# PRG: start = $8000, size = $7f00, file = %O ,fill = yes, define = yes;
# DPCM Samples at end of the ROM
DMC: start = $7f00, size = $fa, file = %O, fill = yes;
# NROM256
# DMC: start = $ff00, size = $fa, file = %O, fill = yes;
# Hardware Vectors at end of the ROM
VECTORS: start = $7ffa, size = $6, file = %O, fill = yes;
# NROM256
# VECTORS: start = $fffa, size = $6, file = %O, fill = yes;
# 1 8K CHR Bank
CHR: start = $0000, size = $2000, file = %O, fill = yes;
# standard 2K SRAM (-zeropage)
# $0100 famitone, palette, cpu stack
# $0200 oam buffer
# $0300..$800 ca65 stack
RAM: start = $0300, size = $0500, define = yes;
# Use this definition instead if you going to use extra 8K RAM
# RAM: start = $6000, size = $2000, define = yes;
}
SEGMENTS {
HEADER: load = HEADER, type = ro;
STARTUP: load = PRG, type = ro, define = yes;
LOWCODE: load = PRG, type = ro, optional = yes;
INIT: load = PRG, type = ro, define = yes, optional = yes;
CODE: load = PRG, type = ro, define = yes;
RODATA: load = PRG, type = ro, define = yes;
DATA: load = PRG, run = RAM, type = rw, define = yes;
VECTORS: load = VECTORS, type = rw;
SAMPLES: load = DMC, type = rw;
CHARS: load = CHR, type = rw;
BSS: load = RAM, type = bss, define = yes;
HEAP: load = RAM, type = bss, optional = yes;
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
CONDES: segment = INIT,
type = constructor,
label = __CONSTRUCTOR_TABLE__,
count = __CONSTRUCTOR_COUNT__;
CONDES: segment = RODATA,
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
CONDES: type = interruptor,
segment = RODATA,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}
SYMBOLS {
__STACKSIZE__ : type = weak, value = $0500;
}
Here's the compiling log:
Code:
Project build started.
Building: CHR/newgame.chr
Constructing 'Bank 0':
Adding: chrrom.bin(8192 bytes)
Building: PRG/newgame.prg
make all
cl65 -C LINKER.cfg -Wl --dbgfile,newgame.dbg ./main.o -o PRG/newgame.prg
ld65: Error: LINKER.cfg(101): Block identifier expected, got 'VALUE'
make: *** [PRG/newgame.prg] Error 1
Build failed.
Building: CHR/newgame.chr
Constructing 'Bank 0':
Adding: chrrom.bin(8192 bytes)
Building: PRG/newgame.prg
make all
cl65 -C LINKER.cfg -Wl --dbgfile,newgame.dbg ./main.o -o PRG/newgame.prg
ld65: Error: LINKER.cfg(101): Block identifier expected, got 'VALUE'
make: *** [PRG/newgame.prg] Error 1
Build failed.
And here's the versions of programs I'm using
- NESICIDE Application version:
V1.007 RELEASE
NESICIDE Emulator Library version:
V1.003 RELEASE
Versions of external dependencies:
cc65:
cc65 V2.17 - Git 2cd4b51
ca65
ca65 V2.17 - Git 2cd4b51
ld65
ld65 V2.17 - Git 2cd4b51
make
GNU Make 3.81
EDIT: I decided to move away from cc65 and decided to use nesasm3. So far i was able to follow up to Week 6 of Nerdy Nights. However i need help with one project. http://forums.nesdev.com/viewtopic.php?f=10&t=18647