summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2011-12-25 07:53:06 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2011-12-25 07:53:06 +0000
commit8b883bb7caf621bf002d0c06bf0ecc5fbe0da6db (patch)
tree7b7c9c11dd7fca011079ed01cb788eee8014d313 /src/lib/formats
parent8b958b7b7cb57c05ec01d81f0615cd20213a3cc1 (diff)
Sync with MESS (no whatsnew)
Diffstat (limited to 'src/lib/formats')
-rw-r--r--src/lib/formats/ipf_dsk.c18
-rw-r--r--src/lib/formats/ipf_dsk.h4
2 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/formats/ipf_dsk.c b/src/lib/formats/ipf_dsk.c
index 070de58bcfd..a7c1ee21ced 100644
--- a/src/lib/formats/ipf_dsk.c
+++ b/src/lib/formats/ipf_dsk.c
@@ -601,15 +601,21 @@ bool ipf_format::generate_gap_from_description(const UINT8 *&data, const UINT8 *
}
-bool ipf_format::generate_block_gap_1(UINT32 gap_cells, UINT32 &spos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context)
+bool ipf_format::generate_block_gap_1(UINT32 gap_cells, UINT32 &spos, UINT32 ipos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context)
{
- spos = 0;
+ if(ipos >= 16 && ipos < gap_cells-16)
+ spos = ipos;
+ else
+ spos = 0;
return generate_gap_from_description(data, dlimit, track, gap_cells, true, context);
}
-bool ipf_format::generate_block_gap_2(UINT32 gap_cells, UINT32 &spos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context)
+bool ipf_format::generate_block_gap_2(UINT32 gap_cells, UINT32 &spos, UINT32 ipos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context)
{
- spos = gap_cells;
+ if(ipos >= 16 && ipos < gap_cells-16)
+ spos = ipos;
+ else
+ spos = gap_cells;
return generate_gap_from_description(data, dlimit, track, gap_cells, false, context);
}
@@ -646,9 +652,9 @@ bool ipf_format::generate_block_gap(UINT32 gap_type, UINT32 gap_cells, UINT8 pat
case 0:
return generate_block_gap_0(gap_cells, pattern, spos, ipos, track, context);
case 1:
- return generate_block_gap_1(gap_cells, spos, data, dlimit, track, context);
+ return generate_block_gap_1(gap_cells, spos, ipos, data, dlimit, track, context);
case 2:
- return generate_block_gap_2(gap_cells, spos, data, dlimit, track, context);
+ return generate_block_gap_2(gap_cells, spos, ipos, data, dlimit, track, context);
case 3:
return generate_block_gap_3(gap_cells, spos, ipos, data, dlimit, track, context);
default:
diff --git a/src/lib/formats/ipf_dsk.h b/src/lib/formats/ipf_dsk.h
index 3f69e63a1c3..2cb58f0b18a 100644
--- a/src/lib/formats/ipf_dsk.h
+++ b/src/lib/formats/ipf_dsk.h
@@ -63,8 +63,8 @@ private:
bool gap_description_to_reserved_size(const UINT8 *&data, const UINT8 *dlimit, UINT32 &res_size);
bool generate_gap_from_description(const UINT8 *&data, const UINT8 *dlimit, UINT32 *track, UINT32 size, bool pre, bool &context);
bool generate_block_gap_0(UINT32 gap_cells, UINT8 pattern, UINT32 &spos, UINT32 ipos, UINT32 *track, bool &context);
- bool generate_block_gap_1(UINT32 gap_cells, UINT32 &spos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context);
- bool generate_block_gap_2(UINT32 gap_cells, UINT32 &spos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context);
+ bool generate_block_gap_1(UINT32 gap_cells, UINT32 &spos, UINT32 ipos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context);
+ bool generate_block_gap_2(UINT32 gap_cells, UINT32 &spos, UINT32 ipos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context);
bool generate_block_gap_3(UINT32 gap_cells, UINT32 &spos, UINT32 ipos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context);
bool generate_block_gap(UINT32 gap_type, UINT32 gap_cells, UINT8 pattern, UINT32 &spos, UINT32 ipos, const UINT8 *data, const UINT8 *dlimit, UINT32 *track, bool &context);