From 846a117a5e0c61c7430016e4a633282c618caf4e Mon Sep 17 00:00:00 2001 From: Thomas Jentzsch Date: Sun, 11 Aug 2019 22:21:28 +0200 Subject: [PATCH] add start bank option to GameInfoDialog --- docs/graphics/options_gameinfo_emulation.png | Bin 4979 -> 5391 bytes docs/index.html | 18 ++++---- src/gui/GameInfoDialog.cxx | 41 ++++++++++++++++--- src/gui/GameInfoDialog.hxx | 2 + 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/docs/graphics/options_gameinfo_emulation.png b/docs/graphics/options_gameinfo_emulation.png index 21d44c22c2ce95c1a3115e23aea69dc984068902..711402e818e8a519d54495758e38de2d083584c2 100644 GIT binary patch delta 4055 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 delta 3547 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 diff --git a/docs/index.html b/docs/index.html index bd86b9fc7..3998489af 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3877,6 +3877,13 @@ Ms Pac-Man (Stella extended codes): + + + + + - - + + @@ -3910,11 +3915,6 @@ Ms Pac-Man (Stella extended codes): - - - - -
Cartridge.Name:Indicates the actual name of the game. When you save snapshots, + load/save state files, or use the ROM Audit Mode functionality, + this is the name that will be used for the respective file(s).
Cartridge.MD5: Indicates the MD5 checksum of the ROM image as a @@ -3899,10 +3906,8 @@ Ms Pac-Man (Stella extended codes):
Cartridge.Name:Indicates the actual name of the game. When you save snapshots, - load/save state files, or use the ROM Audit Mode functionality, - this is the name that will be used for the respective file(s).Cartridge.Rarity:Indicates how rare a cartridge is, based on the scale described on AtariAge.
Contains any special notes about playing the game.
Cartridge.Rarity:Indicates how rare a cartridge is, based on the scale described on AtariAge.

The name of the properties file is configurable through the diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 6971832f8..543355864 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -17,6 +17,7 @@ #include "Bankswitch.hxx" #include "Console.hxx" +#include "Cart.hxx" #include "MouseControl.hxx" #include "SaveKey.hxx" #include "Dialog.hxx" @@ -80,7 +81,7 @@ GameInfoDialog::GameInfoDialog( ypos = VBORDER; - t = new StaticTextWidget(myTab, font, HBORDER, ypos + 1, "Type (*) "); + t = new StaticTextWidget(myTab, font, HBORDER, ypos + 1, "Type (*) "); pwidth = font.getStringWidth("CM (SpectraVideo CompuMate)"); items.clear(); for(uInt32 i = 0; i < uInt32(Bankswitch::Type::NumSchemes); ++i) @@ -92,10 +93,18 @@ GameInfoDialog::GameInfoDialog( myTypeDetected = new StaticTextWidget(myTab, ifont, t->getRight() + 8, ypos, "CM (SpectraVideo CompuMate) detected"); - ypos += ifont.getLineHeight() + VGAP * 4; + ypos += ifont.getLineHeight() + VGAP; + + // Start bank + myStartBankLabel = new StaticTextWidget(myTab, font, HBORDER, ypos + 1, "Start bank (*) "); + items.clear(); + myStartBank = new PopUpWidget(myTab, font, myStartBankLabel->getRight(), ypos, + font.getStringWidth("AUTO"), lineHeight, items, "", 0, 0); + wid.push_back(myStartBank); + ypos += lineHeight + VGAP * 4; pwidth = font.getStringWidth("Auto-detect"); - t = new StaticTextWidget(myTab, font, HBORDER, ypos + 1, "TV format "); + t = new StaticTextWidget(myTab, font, HBORDER, ypos + 1, "TV format "); items.clear(); VarList::push_back(items, "Auto-detect", "AUTO"); VarList::push_back(items, "NTSC", "NTSC"); @@ -378,6 +387,28 @@ void GameInfoDialog::loadEmulationProperties(const Properties& props) else myTypeDetected->setLabel(""); + // Start bank + VariantList items; + + VarList::push_back(items, "Auto", "AUTO"); + if(instance().hasConsole()) + { + uInt16 numBanks = instance().console().cartridge().bankCount(); + + for(uInt16 i = 0; i < numBanks; ++i) + VarList::push_back(items, i, i); + myStartBank->setEnabled(true); + } + else + { + string startBank = props.get(PropType::Cart_StartBank); + + VarList::push_back(items, startBank, startBank); + myStartBank->setEnabled(false); + } + myStartBank->addItems(items); + myStartBank->setSelected(props.get(PropType::Cart_StartBank), "AUTO"); + myFormat->setSelected(props.get(PropType::Display_Format), "AUTO"); if(instance().hasConsole() && myFormat->getSelectedTag().toString() == "AUTO") { @@ -511,17 +542,17 @@ void GameInfoDialog::saveConfig() { // Emulation properties myGameProperties.set(PropType::Cart_Type, myBSType->getSelectedTag().toString()); + myGameProperties.set(PropType::Cart_StartBank, myStartBank->getSelectedTag().toString()); myGameProperties.set(PropType::Display_Format, myFormat->getSelectedTag().toString()); myGameProperties.set(PropType::Display_Phosphor, myPhosphor->getState() ? "YES" : "NO"); - myGameProperties.set(PropType::Display_PPBlend, myPPBlend->getValueLabel() == "Off" ? "0" : myPPBlend->getValueLabel()); myGameProperties.set(PropType::Cart_Sound, mySound->getState() ? "STEREO" : "MONO"); // Console properties + myGameProperties.set(PropType::Console_TVType, myTVTypeGroup->getSelected() ? "BW" : "COLOR"); myGameProperties.set(PropType::Console_LeftDiff, myLeftDiffGroup->getSelected() ? "B" : "A"); myGameProperties.set(PropType::Console_RightDiff, myRightDiffGroup->getSelected() ? "B" : "A"); - myGameProperties.set(PropType::Console_TVType, myTVTypeGroup->getSelected() ? "BW" : "COLOR"); // Controller properties myGameProperties.set(PropType::Controller_Left, myLeftPort->getSelectedTag().toString()); diff --git a/src/gui/GameInfoDialog.hxx b/src/gui/GameInfoDialog.hxx index c268ab8f1..d3e09795f 100644 --- a/src/gui/GameInfoDialog.hxx +++ b/src/gui/GameInfoDialog.hxx @@ -63,6 +63,8 @@ class GameInfoDialog : public Dialog, public CommandSender // Emulation properties PopUpWidget* myBSType; StaticTextWidget* myTypeDetected; + StaticTextWidget* myStartBankLabel; + PopUpWidget* myStartBank; PopUpWidget* myFormat; StaticTextWidget* myFormatDetected; CheckboxWidget* myPhosphor;