From e1f3abda4f2dcb54407f947f5319fe740ee13ebc Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 9 Dec 2020 20:55:08 +0100 Subject: [PATCH] fixed MDM single bank ROM crash (fixes #743) --- src/debugger/gui/CartMDMWidget.cxx | 25 +++++++++++++++---------- src/debugger/gui/CartTVBoyWidget.cxx | 21 +++++++++++++-------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/debugger/gui/CartMDMWidget.cxx b/src/debugger/gui/CartMDMWidget.cxx index a3509cb34..3b1084aee 100644 --- a/src/debugger/gui/CartMDMWidget.cxx +++ b/src/debugger/gui/CartMDMWidget.cxx @@ -46,22 +46,27 @@ string CartridgeMDMWidget::description() void CartridgeMDMWidget::bankSelect(int& ypos) { CartridgeEnhancedWidget::bankSelect(ypos); - int xpos = myBankWidgets[0]->getRight() + 20; - ypos = myBankWidgets[0]->getTop(); + if(myCart.romBankCount() > 1) + { + int xpos = myBankWidgets[0]->getRight() + 20; + ypos = myBankWidgets[0]->getTop(); - myBankDisabled = new CheckboxWidget(_boss, _font, xpos, ypos + 1, - "Bankswitching is locked/disabled", - kBankDisabled); - myBankDisabled->setTarget(this); - addFocusWidget(myBankDisabled); + myBankDisabled = new CheckboxWidget(_boss, _font, xpos, ypos + 1, + "Bankswitching is locked/disabled", + kBankDisabled); + myBankDisabled->setTarget(this); + addFocusWidget(myBankDisabled); + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeMDMWidget::loadConfig() { - myBankWidgets[0]->setEnabled(!myCartMDM.myBankingDisabled); - myBankDisabled->setState(myCartMDM.myBankingDisabled); - + if(myBankWidgets != nullptr) + { + myBankWidgets[0]->setEnabled(!myCartMDM.myBankingDisabled); + myBankDisabled->setState(myCartMDM.myBankingDisabled); + } CartridgeEnhancedWidget::loadConfig(); } diff --git a/src/debugger/gui/CartTVBoyWidget.cxx b/src/debugger/gui/CartTVBoyWidget.cxx index 5012642ba..891a39b38 100644 --- a/src/debugger/gui/CartTVBoyWidget.cxx +++ b/src/debugger/gui/CartTVBoyWidget.cxx @@ -46,22 +46,27 @@ string CartridgeTVBoyWidget::description() void CartridgeTVBoyWidget::bankSelect(int& ypos) { CartridgeEnhancedWidget::bankSelect(ypos); - int xpos = myBankWidgets[0]->getRight() + _font.getMaxCharWidth() * 4; - ypos = myBankWidgets[0]->getTop(); + if(myCart.romBankCount() > 1) + { + int xpos = myBankWidgets[0]->getRight() + _font.getMaxCharWidth() * 4; + ypos = myBankWidgets[0]->getTop(); - myBankLocked = new CheckboxWidget(_boss, _font, xpos, ypos + 1, + myBankLocked = new CheckboxWidget(_boss, _font, xpos, ypos + 1, "Bankswitching is locked", kBankLocked); - myBankLocked->setTarget(this); - addFocusWidget(myBankLocked); + myBankLocked->setTarget(this); + addFocusWidget(myBankLocked); + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeTVBoyWidget::loadConfig() { - myBankWidgets[0]->setEnabled(!myCartTVBoy.myBankingDisabled); - myBankLocked->setState(myCartTVBoy.myBankingDisabled); - + if(myBankWidgets != nullptr) + { + myBankWidgets[0]->setEnabled(!myCartTVBoy.myBankingDisabled); + myBankLocked->setState(myCartTVBoy.myBankingDisabled); + } CartridgeEnhancedWidget::loadConfig(); }