--- BasiliskII/src/slot_rom.cpp 2001/06/27 19:03:35 1.5 +++ BasiliskII/src/slot_rom.cpp 2001/06/27 20:05:23 1.6 @@ -43,6 +43,19 @@ static uint8 srom[4096]; static uint32 p; +// Check whether a mode with the specified depth exists +static bool has_depth(video_depth depth) +{ + vector::const_iterator i = VideoModes.begin(), end = VideoModes.end(); + while (i != end) { + if (i->depth == depth) + return true; + ++i; + } + return false; +} + + /* * Construct slot declaration ROM and copy it into the Mac ROM (must be called after VideoInit()) */ @@ -322,35 +335,18 @@ bool InstallSlotROM(void) Offs(0x0b, minorLength); // Frame buffer length Offs(0x40, gammaDir); // Gamma directory Rsrc(0x7d, 6); // Video attributes: Default to color, built-in -#if 0 - Offs(0x80, vidMode1); // Video mode parameters for 1 bit - Offs(0x81, vidMode2); // Video mode parameters for 2 bit - Offs(0x82, vidMode4); // Video mode parameters for 4 bit - Offs(0x83, vidMode8); // Video mode parameters for 8 bit - Offs(0x84, vidMode16); // Video mode parameters for 16 bit - Offs(0x85, vidMode32); // Video mode parameters for 32 bit -#else - switch (VideoMonitor.mode.depth) { - case VDEPTH_1BIT: - Offs(0x80, vidMode1); // Video mode parameters - break; - case VDEPTH_2BIT: - Offs(0x80, vidMode2); // Video mode parameters - break; - case VDEPTH_4BIT: - Offs(0x80, vidMode4); // Video mode parameters - break; - case VDEPTH_8BIT: - Offs(0x80, vidMode8); // Video mode parameters - break; - case VDEPTH_16BIT: - Offs(0x80, vidMode16); // Video mode parameters - break; - case VDEPTH_32BIT: - Offs(0x80, vidMode32); // Video mode parameters - break; - } -#endif + if (has_depth(VDEPTH_1BIT)) + Offs(0x80, vidMode1); // Video mode parameters for 1 bit + if (has_depth(VDEPTH_2BIT)) + Offs(0x81, vidMode2); // Video mode parameters for 2 bit + if (has_depth(VDEPTH_4BIT)) + Offs(0x82, vidMode4); // Video mode parameters for 4 bit + if (has_depth(VDEPTH_8BIT)) + Offs(0x83, vidMode8); // Video mode parameters for 8 bit + if (has_depth(VDEPTH_16BIT)) + Offs(0x84, vidMode16); // Video mode parameters for 16 bit + if (has_depth(VDEPTH_32BIT)) + Offs(0x85, vidMode32); // Video mode parameters for 32 bit EndOfList(); // CPU sResource