diff options
author | 2011-12-25 07:53:06 +0000 | |
---|---|---|
committer | 2011-12-25 07:53:06 +0000 | |
commit | 8b883bb7caf621bf002d0c06bf0ecc5fbe0da6db (patch) | |
tree | 7b7c9c11dd7fca011079ed01cb788eee8014d313 /src/lib/formats | |
parent | 8b958b7b7cb57c05ec01d81f0615cd20213a3cc1 (diff) |
Sync with MESS (no whatsnew)
Diffstat (limited to 'src/lib/formats')
-rw-r--r-- | src/lib/formats/ipf_dsk.c | 18 | ||||
-rw-r--r-- | src/lib/formats/ipf_dsk.h | 4 |
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); |