mirror of
https://github.com/safiire/n65.git
synced 2024-12-13 06:29:16 +00:00
Some updates but assemblying programs with multiple banks, or more prog and char sections is messed up
This commit is contained in:
parent
a52ead091e
commit
d10709e0b0
@ -195,38 +195,36 @@ module Assembler6502
|
|||||||
|
|
||||||
|
|
||||||
####
|
####
|
||||||
## Another try at using the header to decide which segments
|
## This is all crap, I must research how banks and mappers work
|
||||||
## go into the final ROM image, and which order.
|
#def assemble_new_crap
|
||||||
## This does not work, it needs to know about banks.
|
# virtual_memory = assemble_in_virtual_memory
|
||||||
def assemble_new_crap
|
|
||||||
virtual_memory = assemble_in_virtual_memory
|
|
||||||
|
|
||||||
## First we need to be sure we have an iNES header
|
# ## First we need to be sure we have an iNES header
|
||||||
fail(INESHeaderNotFound) if @ines_header.nil?
|
# fail(INESHeaderNotFound) if @ines_header.nil?
|
||||||
|
|
||||||
## Now, we should decide how big the ROM image will be.
|
# ## Now, we should decide how big the ROM image will be.
|
||||||
## And reserve memory build the image in
|
# ## And reserve memory build the image in
|
||||||
nes_rom_size = MemorySpace::INESHeaderSize
|
# nes_rom_size = MemorySpace::INESHeaderSize
|
||||||
nes_rom_size += @ines_header.prog * MemorySpace::ProgROMSize
|
# nes_rom_size += @ines_header.prog * MemorySpace::ProgROMSize
|
||||||
nes_rom_size += @ines_header.char * MemorySpace::CharROMSize
|
# nes_rom_size += @ines_header.char * MemorySpace::CharROMSize
|
||||||
nes_rom = MemorySpace.new(nes_rom_size)
|
# nes_rom = MemorySpace.new(nes_rom_size)
|
||||||
puts "ROM will be #{nes_rom_size} bytes"
|
# puts "ROM will be #{nes_rom_size} bytes"
|
||||||
|
|
||||||
## Write the ines header to the ROM
|
# ## Write the ines header to the ROM
|
||||||
nes_rom.write(0x0, @ines_header.emit_bytes)
|
# nes_rom.write(0x0, @ines_header.emit_bytes)
|
||||||
puts "Wrote 16 byte ines header"
|
# puts "Wrote 16 byte ines header"
|
||||||
|
|
||||||
## If prog rom is >= 1 write the 16kb chunk from 0x8000
|
# ## If prog rom is >= 1 write the 16kb chunk from 0x8000
|
||||||
if @ines_header.prog >= 1
|
# if @ines_header.prog >= 1
|
||||||
nes_rom.write(0x10, virtual_memory.read(0x8000, MemorySpace::ProgROMSize))
|
# nes_rom.write(0x10, virtual_memory.read(0x8000, MemorySpace::ProgROMSize))
|
||||||
puts "Wrote 16KB byte prog rom 1"
|
# puts "Wrote 16KB byte prog rom 1"
|
||||||
end
|
# end
|
||||||
|
|
||||||
## If prog rom is == 2 write the 16kb chunk from 0xC000
|
# ## If prog rom is == 2 write the 16kb chunk from 0xC000
|
||||||
#if @ines_header.prog == 2
|
# #if @ines_header.prog == 2
|
||||||
#nes_rom.write(0x10 + 0x4000, virtual_memory.read(0xC000, MemorySpace::ProgROMSize))
|
# #nes_rom.write(0x10 + 0x4000, virtual_memory.read(0xC000, MemorySpace::ProgROMSize))
|
||||||
#puts "Wrote 16KB byte prog rom 2"
|
# #puts "Wrote 16KB byte prog rom 2"
|
||||||
#end
|
# #end
|
||||||
#fail("Can only have 2 prog rom slots") if @ines_header.prog > 2
|
#fail("Can only have 2 prog rom slots") if @ines_header.prog > 2
|
||||||
|
|
||||||
## If char rom is >= 1 write the 8kb chunk from 0x0000
|
## If char rom is >= 1 write the 8kb chunk from 0x0000
|
||||||
@ -243,8 +241,8 @@ module Assembler6502
|
|||||||
#puts "Wrote 8KB byte char rom 2"
|
#puts "Wrote 8KB byte char rom 2"
|
||||||
#end
|
#end
|
||||||
|
|
||||||
nes_rom.emit_bytes
|
#nes_rom.emit_bytes
|
||||||
end
|
#end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user