I was playing through the Japanese version and noticed sometimes the npcs blow themselves up. I decided to make a script:
Download bombermangb.luaLanguage: lua
memory.usememorydomain("System Bus")
local screen_width = 180
local screen_height = 144
local read8 = memory.read_u8
client.SetGameExtraPadding(0,0,screen_width,screen_height)
console.clear()
local address = {
camx = 0xC366,
camy = 0xC367,
npc1x = 0xC106,
npc1y = 0xC109,
npc2x = 0xC206,
npc2y = 0xC209,
npc3x = 0xC306,
npc3y = 0xC309,
bomb1_timer = 0xDC05,
map_start = 0xDD00,
map_start2 = 0xDE00
}
local colors = {
[0] = "darkpink", --walkable
[1] = "red", --wall
[2] = "silver", --breakable
[3] = "yellow", --bomb
[4] = "purple", --fire blast
[5] = "green", --explosion from bomb
[6] = "gray", --
[7] = "orange", --teleporter 1
[8] = "brown", --teleporter 2
[9] = "DARKGREEN", --teleporter 3
[10] = "LIGHTGREEN", --teleporter 4
[11] = "GOLD", --
[12] = "CYAN", --up arrow
[13] = "PINK", --Smiley Fire; firepower?
[14] = "DEEPPINK", --bomb; extra bomb
[15] = "DARKRED", --skull
[21] = "white", --left arrow
[22] = "white", --right arrow
[23] = "white", --down arrow
[25] = "DARKRED" --powerup on fire
}
while true do
-- for i = 0, 16 do
-- for j = 0, 16 do
-- gui.drawRectangle(0+16*i-read8(address.camx), 0+16*j-read8(address.camy), 16, 16, "red")
-- end
-- end
local camx = read8(address.camx)
local camy = read8(address.camy)
gui.pixelText(read8(address.npc1x)-8, read8(address.npc1y)-8, "NPC1")
gui.drawRectangle(read8(address.npc1x)-8, read8(address.npc1y)-8, 16,16,"red")
gui.pixelText(read8(address.npc2x)-8, read8(address.npc2y)-8, "NPC2")
gui.drawRectangle(read8(address.npc2x)-8, read8(address.npc2y)-8, 16,16,"red")
gui.pixelText(read8(address.npc3x)-8, read8(address.npc3y)-8, "NPC3")
gui.drawRectangle(read8(address.npc3x)-8, read8(address.npc3y)-8, 16,16,"red")
for i = 0, 15 do
for j = 0, 15 do
local tile2 = read8(address.map_start2+ j + (i*16))
local tile1 = read8(address.map_start+ j + (i*16))
gui.drawRectangle(0+16*j-camx, 0+16*i-camy, 16, 16, colors[tile2])
if tile2 > 2 then
gui.pixelText(0+16*j-camx, 0+16*i-camy, tile2)
end
if tile1 > 2 then
gui.pixelText(0+16*j-camx, 0+16*i-camy, tile1)
end
-- console.log(bizstring.hex(address.map_start+ j + (i*16)))
end
end
emu.frameadvance()
end
Just posting it here in case anyone finds something useful.
Stage ID is C3F0, with 31 being the final stage.
There's an existing thread for Bomberman GB as well, but that's also a different game, so I decided to use this thread.
Edit: If they blew up off screen, they won't die.
https://tasvideos.org/UserFiles/Info/638548905365916192
At the last input, make it 1 frame earlier would've allowed the npc to survive their explosion.
C3E3, C3E4 seems to be RNG.
It rerolls every frame at the start menu, but not during game for either pausing nor in between stages.