INST flood fill change so that vertical conduction is only prevented for 1px wire crossings. Needs thorough testing

Fixes #129 , and prevents INST diodes when using a 2px vertical crossing a
1px horizontal.
This commit is contained in:
jacksonmj 2013-04-30 22:29:52 +01:00
parent b83043e2a6
commit 526e93204a

View File

@ -602,9 +602,9 @@ int Simulation::FloodINST(int x, int y, int fullc, int cm)
{
if ((pmap[y-1][x]&0xFF)==cm && !parts[pmap[y-1][x]>>8].life)
{
if (x==x1 || x==x2 || y>=YRES-CELL-1 || !PMAP_CMP_CONDUCTIVE(pmap[y+1][x], cm))
if (x==x1 || x==x2 || y>=YRES-CELL-1 || !PMAP_CMP_CONDUCTIVE(pmap[y+1][x], cm) || PMAP_CMP_CONDUCTIVE(pmap[y+1][x+1], cm) || PMAP_CMP_CONDUCTIVE(pmap[y+1][x-1], cm))
{
// if at the end of a horizontal section, or if it's a T junction
// if at the end of a horizontal section, or if it's a T junction or not a 1px wire crossing
coord_stack[coord_stack_size][0] = x;
coord_stack[coord_stack_size][1] = y-1;
coord_stack_size++;
@ -641,9 +641,9 @@ int Simulation::FloodINST(int x, int y, int fullc, int cm)
{
if ((pmap[y+1][x]&0xFF)==cm && !parts[pmap[y+1][x]>>8].life)
{
if (x==x1 || x==x2 || y<0 || !PMAP_CMP_CONDUCTIVE(pmap[y-1][x], cm))
if (x==x1 || x==x2 || y<0 || !PMAP_CMP_CONDUCTIVE(pmap[y-1][x], cm) || PMAP_CMP_CONDUCTIVE(pmap[y-1][x+1], cm) || PMAP_CMP_CONDUCTIVE(pmap[y-1][x-1], cm))
{
// if at the end of a horizontal section, or if it's a T junction
// if at the end of a horizontal section, or if it's a T junction or not a 1px wire crossing
coord_stack[coord_stack_size][0] = x;
coord_stack[coord_stack_size][1] = y+1;
coord_stack_size++;