aboutsummaryrefslogtreecommitdiff
path: root/engines/adl
diff options
context:
space:
mode:
authorAlyssa Milburn2016-04-08 21:31:47 +0200
committerWalter van Niftrik2016-06-06 20:35:49 +0200
commit7dc5f636f8ebbff1ce46cad818f1e241017f83b0 (patch)
tree41a776db6590756fdeca357460551e35d570d866 /engines/adl
parentae405707cc398af3afbd7c5c00723eec2a5538f7 (diff)
downloadscummvm-rg350-7dc5f636f8ebbff1ce46cad818f1e241017f83b0.tar.gz
scummvm-rg350-7dc5f636f8ebbff1ce46cad818f1e241017f83b0.tar.bz2
scummvm-rg350-7dc5f636f8ebbff1ce46cad818f1e241017f83b0.zip
ADL: Map DOS 3.3 NIB to logical sectors
Diffstat (limited to 'engines/adl')
-rw-r--r--engines/adl/disk.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/engines/adl/disk.cpp b/engines/adl/disk.cpp
index a9c7a5922e..214f76aeae 100644
--- a/engines/adl/disk.cpp
+++ b/engines/adl/disk.cpp
@@ -166,6 +166,11 @@ bool DiskImage_NIB::open(const Common::String &filename) {
byte *output = diskImage + (track * _sectorsPerTrack + sector) * _bytesPerSector;
if (newStyle) {
+ // We hardcode the DOS 3.3 mapping here. TODO: Do we also need raw/prodos?
+ int raw2dos[16] = { 0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15 };
+ sector = raw2dos[sector];
+ output = diskImage + (track * _sectorsPerTrack + sector) * _bytesPerSector;
+
// 6-and-2 uses 342 on-disk bytes
byte inbuffer[342];
_f->read(inbuffer, 342);