diff --git a/gameboy/graphics.lua b/gameboy/graphics.lua index 070cc8c..5726e6e 100644 --- a/gameboy/graphics.lua +++ b/gameboy/graphics.lua @@ -556,6 +556,10 @@ local function draw_sprites_into_scanline(scanline, bg_index) end graphics.draw_scanline = function(scanline) + if scanline < 0 or scanline > 143 then + print("Bad scanline: ", scanline) + return + end local bg_y = scanline + io.ram[ports.SCY] local bg_x = io.ram[ports.SCX] -- wrap the map in the Y direction diff --git a/gameboy/init.lua b/gameboy/init.lua index 5fc4995..760ba80 100644 --- a/gameboy/init.lua +++ b/gameboy/init.lua @@ -85,9 +85,9 @@ gameboy.run_until_vblank = function() end gameboy.run_until_hblank = function() - local old_scanline = gameboy.graphics.scanline() + local old_scanline = gameboy.io.ram[gameboy.io.ports.LY] local instructions = 0 - while old_scanline == gameboy.graphics.scanline() and instructions < 100000 do + while old_scanline == gameboy.io.ram[gameboy.io.ports.LY] and instructions < 100000 do gameboy.step() instructions = instructions + 1 end diff --git a/gameboy/rom_header.lua b/gameboy/rom_header.lua index 16987f5..c6f7570 100644 --- a/gameboy/rom_header.lua +++ b/gameboy/rom_header.lua @@ -40,9 +40,10 @@ rom_header.parse_cartridge_header = function(data) header.title = extract_string(data, 0x134, 0x143) header.manufacturer = extract_string(data, 0x13F, 0x142) - local cgb = bit32.band(data[0x143], 0x8) ~= 0 + local cgb = (bit32.band(data[0x143], 0x80) ~= 0) if cgb then header.color = true + header.title = extract_string(data, 0x134, 0x13E) else header.color = false end