mirror of https://github.com/g012/l65.git
NES Hello World sample modified to define CHR data directly in source, like the VCS sample.
This commit is contained in:
parent
63fcde04ee
commit
08d1dd99ad
39
nes.l65
39
nes.l65
|
@ -274,7 +274,11 @@ end
|
||||||
local n0ne = function(x) return not x or x == 0 end
|
local n0ne = function(x) return not x or x == 0 end
|
||||||
local val0 = function(x) return x and x or 0 end
|
local val0 = function(x) return x and x or 0 end
|
||||||
|
|
||||||
-- https://wiki.nesdev.com/w/index.php/NROM
|
--[[
|
||||||
|
https://wiki.nesdev.com/w/index.php/NROM
|
||||||
|
4kB chrroms are created, unless t.onechrrom is set, in which case only one big chrrom
|
||||||
|
location is created instead.
|
||||||
|
]]
|
||||||
mappers.NROM = function(t)
|
mappers.NROM = function(t)
|
||||||
if not t then t = {} end
|
if not t then t = {} end
|
||||||
if not t.prgsize then t.prgsize = 16384 end
|
if not t.prgsize then t.prgsize = 16384 end
|
||||||
|
@ -285,14 +289,29 @@ mappers.NROM = function(t)
|
||||||
local prgstart = 0x10000 - t.prgsize
|
local prgstart = 0x10000 - t.prgsize
|
||||||
hdrrom = location{prgstart - 16, prgstart - 1, name='header'}
|
hdrrom = location{prgstart - 16, prgstart - 1, name='header'}
|
||||||
header(t)
|
header(t)
|
||||||
prgrom = location{prgstart, 0xffff, name='prgrom'}
|
prgrom0 = location{prgstart, 0xffff, name='prgrom'}
|
||||||
|
prgrom = prgrom0
|
||||||
section{"vectors", org=0xfffa} dc.w nmi, main, irq
|
section{"vectors", org=0xfffa} dc.w nmi, main, irq
|
||||||
if (t.chrsize > 0) then chrrom = location{0x10000, 0x10000 + 0x1fff, name='chrrom'} end
|
if (t.chrsize > 0) then
|
||||||
|
if t.onechrrom then
|
||||||
|
chrrom0 = location{0x10000, 0x10000 + 0x1fff, name='chrrom'}
|
||||||
|
else
|
||||||
|
for ci=0,1 do
|
||||||
|
local o = 0x10000 + ci*0x1000
|
||||||
|
_ENV['chrrom'..ci] = location{o, o+0xfff, name='chrrom'..ci}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
chrrom = chrrom0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
mappers[0] = mappers.NROM
|
mappers[0] = mappers.NROM
|
||||||
|
|
||||||
-- https://wiki.nesdev.com/w/index.php/UxROM
|
--[[
|
||||||
-- Has bus conflicts.
|
https://wiki.nesdev.com/w/index.php/UxROM
|
||||||
|
Has bus conflicts.
|
||||||
|
4kB chrroms are created, unless t.onechrrom is set, in which case only one big chrrom
|
||||||
|
location is created instead.
|
||||||
|
]]
|
||||||
mappers.UxROM = function(t)
|
mappers.UxROM = function(t)
|
||||||
if not t then t = {} end
|
if not t then t = {} end
|
||||||
t.mapperid = 2
|
t.mapperid = 2
|
||||||
|
@ -313,7 +332,15 @@ mappers.UxROM = function(t)
|
||||||
@@bankbytes -- for handling bus conflicts
|
@@bankbytes -- for handling bus conflicts
|
||||||
for i=0,bc-2 do byte(i) end
|
for i=0,bc-2 do byte(i) end
|
||||||
local chrstart = 0x8000 + bc*0x4000
|
local chrstart = 0x8000 + bc*0x4000
|
||||||
chrrom = location{chrstart, chrstart + 0x1fff, name='chrrom'}
|
if t.onechrrom then
|
||||||
|
chrrom0 = location{chrstart, chrstart + 0x1fff, name='chrrom'}
|
||||||
|
else
|
||||||
|
for ci=0,1 do
|
||||||
|
local o = chrstart + ci*0x1000
|
||||||
|
_ENV['chrrom'..ci] = location{o, o+0xfff, name='chrrom'..ci}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
chrrom = chrrom0
|
||||||
function switchprgrom(bankix)
|
function switchprgrom(bankix)
|
||||||
assert(bankix < bc-1)
|
assert(bankix < bc-1)
|
||||||
lda #bankix tax sta bankbytes,x
|
lda #bankix tax sta bankbytes,x
|
||||||
|
|
Binary file not shown.
|
@ -2,20 +2,44 @@ require'nes'
|
||||||
|
|
||||||
mappers.NROM()
|
mappers.NROM()
|
||||||
|
|
||||||
location(chrrom)
|
location(chrrom0)
|
||||||
|
|
||||||
do
|
local font = section{"font", org=chrrom0.start}
|
||||||
-- nes_ascii.chr: MIT License Copyright (c) 2016 Doug Fraker, www.nesdoug.com
|
dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -- <SPC>
|
||||||
local f = assert(io.open('nes_ascii.chr', 'rb'))
|
dc.b 0x38,0x38,0x2c,0x64,0x7e,0x46,0xce,0x00,0x38,0x38,0x2c,0x64,0x7e,0x46,0xce,0x00 -- A
|
||||||
local d = f:read('*a') f:close()
|
dc.b 0xfc,0x62,0x66,0x7c,0x62,0x66,0xfc,0x00,0xfc,0x62,0x66,0x7c,0x62,0x66,0xfc,0x00 -- B
|
||||||
@@chrdata byte(d)
|
dc.b 0x7c,0xe6,0xc2,0xc0,0xc0,0xe6,0x7c,0x00,0x7c,0xe6,0xc2,0xc0,0xc0,0xe6,0x7c,0x00 -- C
|
||||||
end
|
dc.b 0xfc,0x4e,0x46,0x46,0x46,0xce,0xfc,0x00,0xfc,0x4e,0x46,0x46,0x46,0xce,0xfc,0x00 -- D
|
||||||
|
dc.b 0xfe,0x66,0x60,0x7c,0x60,0x66,0xfe,0x00,0xfe,0x66,0x60,0x7c,0x60,0x66,0xfe,0x00 -- E
|
||||||
|
dc.b 0xfe,0x66,0x60,0x7c,0x60,0x60,0xf0,0x00,0xfe,0x66,0x60,0x7c,0x60,0x60,0xf0,0x00 -- F
|
||||||
|
dc.b 0x7c,0xe6,0xc0,0xce,0xc6,0xe6,0x7c,0x00,0x7c,0xe6,0xc0,0xce,0xc6,0xe6,0x7c,0x00 -- G
|
||||||
|
dc.b 0xee,0x66,0x66,0x7e,0x66,0x66,0xee,0x00,0xee,0x66,0x66,0x7e,0x66,0x66,0xee,0x00 -- H
|
||||||
|
dc.b 0x3c,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x3c,0x18,0x18,0x18,0x18,0x18,0x3c,0x00 -- I
|
||||||
|
dc.b 0x0e,0x06,0x06,0xc6,0xc6,0xce,0x7c,0x00,0x0e,0x06,0x06,0xc6,0xc6,0xce,0x7c,0x00 -- J
|
||||||
|
dc.b 0xce,0xdc,0xf8,0xf0,0xf8,0xdc,0xce,0x00,0xce,0xdc,0xf8,0xf0,0xf8,0xdc,0xce,0x00 -- K
|
||||||
|
dc.b 0xc0,0xc0,0xc0,0xc0,0xc6,0xc6,0xfe,0x00,0xc0,0xc0,0xc0,0xc0,0xc6,0xc6,0xfe,0x00 -- L
|
||||||
|
dc.b 0xc6,0xee,0xfe,0xd6,0xc6,0xc6,0xc6,0x00,0xc6,0xee,0xfe,0xd6,0xc6,0xc6,0xc6,0x00 -- M
|
||||||
|
dc.b 0xc6,0xe6,0xf6,0xde,0xce,0xc6,0xc6,0x00,0xc6,0xe6,0xf6,0xde,0xce,0xc6,0xc6,0x00 -- N
|
||||||
|
dc.b 0x7c,0xee,0xc6,0xc6,0xc6,0xee,0x7c,0x00,0x7c,0xee,0xc6,0xc6,0xc6,0xee,0x7c,0x00 -- O
|
||||||
|
dc.b 0xfc,0xc6,0xc6,0xc6,0xfc,0xc0,0xc0,0x00,0xfc,0xc6,0xc6,0xc6,0xfc,0xc0,0xc0,0x00 -- P
|
||||||
|
dc.b 0x7c,0xce,0xc6,0xc6,0xde,0xec,0x7e,0x00,0x7c,0xce,0xc6,0xc6,0xde,0xec,0x7e,0x00 -- Q
|
||||||
|
dc.b 0xfc,0x66,0x66,0x7c,0x58,0x6c,0xe6,0x00,0xfc,0x66,0x66,0x7c,0x58,0x6c,0xe6,0x00 -- R
|
||||||
|
dc.b 0x7c,0xc6,0xc0,0x7c,0x06,0xc6,0x7c,0x00,0x7c,0xc6,0xc0,0x7c,0x06,0xc6,0x7c,0x00 -- S
|
||||||
|
dc.b 0xfe,0x92,0x10,0x10,0x10,0x10,0x38,0x00,0xfe,0x92,0x10,0x10,0x10,0x10,0x38,0x00 -- T
|
||||||
|
dc.b 0xe6,0xe6,0xc2,0xc2,0xc2,0xe6,0x7c,0x00,0xe6,0xe6,0xc2,0xc2,0xc2,0xe6,0x7c,0x00 -- U
|
||||||
|
dc.b 0xc6,0xc6,0xc6,0x6c,0x6c,0x38,0x38,0x00,0xc6,0xc6,0xc6,0x6c,0x6c,0x38,0x38,0x00 -- V
|
||||||
|
dc.b 0xc6,0xc6,0xd6,0xfe,0xee,0xc6,0x82,0x00,0xc6,0xc6,0xd6,0xfe,0xee,0xc6,0x82,0x00 -- W
|
||||||
|
dc.b 0x86,0xcc,0x78,0x30,0x78,0xcc,0x86,0x00,0x86,0xcc,0x78,0x30,0x78,0xcc,0x86,0x00 -- X
|
||||||
|
dc.b 0xc6,0xc6,0x6c,0x38,0x18,0x18,0x38,0x00,0xc6,0xc6,0x6c,0x38,0x18,0x18,0x38,0x00 -- Y
|
||||||
|
dc.b 0x7e,0xce,0x98,0x30,0x62,0xe6,0xfc,0x00,0x7e,0xce,0x98,0x30,0x62,0xe6,0xfc,0x00 -- Z
|
||||||
|
|
||||||
location(prgrom)
|
location(prgrom)
|
||||||
@@nmi rti
|
@@nmi rti
|
||||||
@@irq rti
|
@@irq rti
|
||||||
|
|
||||||
local hello = "Hello World!"
|
local font_start = (font.org - chrrom0.start) // 16
|
||||||
|
charset(" abcdefghijklmnopqrstuvwxyz", \x(x+font_start))
|
||||||
|
local hello = "hello world"
|
||||||
@@text byte(hello)
|
@@text byte(hello)
|
||||||
|
|
||||||
@@main
|
@@main
|
||||||
|
@ -29,8 +53,8 @@ local hello = "Hello World!"
|
||||||
ldy #0 @_loadtxt lda text,y sta PPUDATA iny cpy ##hello bne _loadtxt
|
ldy #0 @_loadtxt lda text,y sta PPUDATA iny cpy ##hello bne _loadtxt
|
||||||
-- reset scroll position
|
-- reset scroll position
|
||||||
ppu_addr(0) sta BGSCROL sta BGSCROL
|
ppu_addr(0) sta BGSCROL sta BGSCROL
|
||||||
-- turn screen on
|
-- show BG
|
||||||
lda #0x90 sta PPUCTRL lda #0x1e sta PPUMASK
|
lda #0x0a sta PPUMASK
|
||||||
-- idle
|
-- idle
|
||||||
@_loop jmp _loop
|
@_loop jmp _loop
|
||||||
|
|
||||||
|
|
2
vcs.l65
2
vcs.l65
|
@ -375,7 +375,7 @@ mappers.X07 = function()
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Image converters
|
-- Data converters
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
image_scan = function(img, opt)
|
image_scan = function(img, opt)
|
||||||
|
|
Loading…
Reference in New Issue