22 #ifndef MACS2_AMIGA_DECODE_H 23 #define MACS2_AMIGA_DECODE_H 25 #include "common/array.h" 26 #include "common/scummsys.h" 27 #include "graphics/palette.h" 32 uint32 scriptOffset = 0;
33 uint32 stringOffset = 0;
34 uint32 slotOffsets[21];
35 uint32 extraOffset = 0;
36 uint32 bodyOffset = 12;
40 for (uint i = 0; i < 21; i++)
41 slotOffsets[i] = 0xFFFFFFFF;
46 uint16 frameCount = 0;
50 uint16 repeatCounter = 0;
52 uint16 headerHint = 0;
53 uint32 pixelOffset = 0;
54 uint32 headerSize = 0;
58 bool parseAmigaMxoo(
const byte *mxoo, uint32 mxooSize,
AmigaMxooInfo &out);
59 bool inspectAmigaAnimSlot(
const byte *mxoo, uint32 mxooSize, uint32 bodyRelativeOffset,
AmigaAnimSlotInfo &out);
60 void amiga12ToVga6(uint16 rgb, byte &r6, byte &g6, byte &b6);
61 byte remapAmigaCopperIndexToStableUi(byte color);
62 bool decodeAmigaPlanarFrame(
const byte *planar, uint16 width, uint16 height, uint16 frameIndex,
64 bool convertAmigaAnimSlotToDosBlob(
const byte *mxoo, uint32 mxooSize, uint32 bodyRelativeOffset,
67 bool extractAmigaStringBlock(
const byte *mxoo, uint32 mxooSize,
Common::Array<byte> &outStrings);
68 bool convertAmigaSimpleSpriteToDosBlob(
const byte *mxoo, uint32 mxooSize,
Common::Array<byte> &outBlob);
69 bool convertAmigaPortraitAtlasToDosBlob(
const byte *mxoo, uint32 mxooSize, uint32 bodyRelativeExtraOffset,
73 kAmigaSceneWidth = 320,
74 kAmigaSceneHeight = 200,
75 kAmigaScenePlanes = 6,
76 kAmigaSceneScreenSize = 54432,
77 kAmigaSceneCopperOffset = 0xBB80,
78 kAmigaSceneCopperSize = 0x1920,
79 kAmigaSceneCopperColorCount = 16,
80 kAmigaSceneCopperLineBytes = kAmigaSceneCopperColorCount * 2,
81 kAmigaSceneCopperBaseBytes = kAmigaSceneCopperLineBytes,
82 kAmigaScenePlaneBytes = 8000,
83 kAmigaColorRegisterCount = 32,
84 kAmigaEhbPaletteCount = 64,
87 kAmigaMxmmHeaderSize = 10,
88 kAmigaMxmmMinSize = kAmigaMxmmHeaderSize + 4,
90 kAmigaMxmmWordSize = 2,
91 kAmigaMxmmTrailerPreambleSize = kAmigaMxmmWordSize,
92 kAmigaMxmmPathfindingNodeCount = 16,
93 kAmigaMxmmPathfindingNodeSize = 10,
94 kAmigaMxmmPathfindingMaxAdj = 4,
95 kAmigaMxmmPathfindingNodeXOffset = 0,
96 kAmigaMxmmPathfindingNodeYOffset = 2,
97 kAmigaMxmmPathfindingNodeAdjOffset = 4,
98 kAmigaMxmmPathfindingNodeConnOffset = 8,
99 kAmigaMxmmPathfindingTableSize = kAmigaMxmmWordSize +
100 kAmigaMxmmPathfindingNodeCount * kAmigaMxmmPathfindingNodeSize,
101 kAmigaMxmmHotspotColorBytes = 0x20,
102 kAmigaMxmmHotspotTableSize = kAmigaMxmmWordSize + kAmigaMxmmHotspotColorBytes,
103 kAmigaMxmmWalkPaletteSize = 10,
104 kAmigaMxmmWalkDepthThresholdYOffset = 0,
105 kAmigaMxmmWalkDepthScaleFactorOffset = 2,
106 kAmigaMxmmWalkBaseSpeedPctOffset = 4,
107 kAmigaMxmmWalkScenePaletteModeOffset = 6,
108 kAmigaMxmmWalkPaletteDarkenPercentOffset = 8,
109 kAmigaMxmmPathfindingToHotspotOffset = kAmigaMxmmPathfindingTableSize + kAmigaMxmmTrailerPreambleSize,
110 kAmigaMxmmPathfindingToWalkOffset = kAmigaMxmmPathfindingToHotspotOffset + kAmigaMxmmHotspotTableSize,
111 kAmigaMxmmTrailerTablesSize = kAmigaMxmmTrailerPreambleSize + kAmigaMxmmPathfindingTableSize +
112 kAmigaMxmmTrailerPreambleSize + kAmigaMxmmHotspotTableSize +
113 kAmigaMxmmWalkPaletteSize,
115 kAmigaMxccVersionOffset = 4,
116 kAmigaMxccMarkerOffset = 5,
117 kAmigaMxccRowTableOffset = 0x0A,
118 kAmigaMxccRowDataOffset = kAmigaMxccRowTableOffset + kAmigaSceneHeight * 2
121 bool decodeAmigaMxmmSceneBackground(
const byte *mxmm, uint32 mxmmSize,
127 bool extractAmigaMxmmSceneScript(
const byte *mxmm, uint32 mxmmSize,
131 bool extractAmigaMxmmSceneWalkParams(
const byte *mxmm, uint32 mxmmSize,
132 uint16 &outWalkDepthThresholdY,
133 uint16 &outWalkDepthScaleFactor,
134 uint16 &outWalkBaseSpeedPct,
135 uint16 &outScenePaletteMode,
136 uint16 &outPaletteDarkenPercent);
141 byte adjacent[kAmigaMxmmPathfindingMaxAdj] = {};
142 uint16 numConnections = 0;
145 bool extractAmigaMxmmScenePathfinding(
const byte *mxmm, uint32 mxmmSize,
146 uint16 &outNumPoints,
149 bool extractAmigaMxmmSceneMaps(
const byte *mxmm, uint32 mxmmSize,
154 bool extractAmigaMxmmSceneHotspotColors(
const byte *mxmm, uint32 mxmmSize,
155 uint16 &outNumHotspots,
158 bool extractAmigaMxmmMxccHotspotMap(
const byte *mxmm, uint32 mxmmSize,
161 bool amigaMxmmHasMxaaOverlay(
const byte *mxmm, uint32 mxmmSize);
172 bool extractAmigaMxosPcm(
const byte *mxos, uint32 mxosSize,
Common::Array<byte> &outPcm, uint16 &outRateHz);
176 #endif // MACS2_AMIGA_DECODE_H Definition: amiga_decode.h:163
Definition: amiga_decode.h:138
Definition: amiga_decode.h:31
Definition: amiga_decode.h:45
Simple class for handling a palette data.
Definition: palette.h:61
Definition: actionbar.h:31