mirror of https://github.com/mgba-emu/mgba.git
Qt: Flesh out BattleChip Gate UI
This commit is contained in:
parent
86b6f2e9cd
commit
7899e02db0
1
CHANGES
1
CHANGES
|
@ -1,6 +1,7 @@
|
||||||
0.8.0: (Future)
|
0.8.0: (Future)
|
||||||
Features:
|
Features:
|
||||||
- Improved logging configuration
|
- Improved logging configuration
|
||||||
|
- One-Player BattleChip Gate support
|
||||||
Bugfixes:
|
Bugfixes:
|
||||||
- GBA: All IRQs have 7 cycle delay (fixes mgba.io/i/539, mgba.io/i/1208)
|
- GBA: All IRQs have 7 cycle delay (fixes mgba.io/i/539, mgba.io/i/1208)
|
||||||
- GBA: Reset now reloads multiboot ROMs
|
- GBA: Reset now reloads multiboot ROMs
|
||||||
|
|
|
@ -0,0 +1,307 @@
|
||||||
|
Cannon
|
||||||
|
Hi Cannon
|
||||||
|
Mega Cannon
|
||||||
|
Air Shot
|
||||||
|
Blizzard
|
||||||
|
Heat Breath
|
||||||
|
Silence
|
||||||
|
Tornado
|
||||||
|
Wide Shot 1
|
||||||
|
Wide Shot 2
|
||||||
|
Wide Shot 3
|
||||||
|
Flame Line 1
|
||||||
|
Flame Line 2
|
||||||
|
Flame Line 3
|
||||||
|
Vulcan 1
|
||||||
|
Vulcan 2
|
||||||
|
Vulcan 3
|
||||||
|
Spreader
|
||||||
|
Heat Shot
|
||||||
|
Heat V
|
||||||
|
Heat Side
|
||||||
|
Bubbler
|
||||||
|
Bubble V
|
||||||
|
Bubble Side
|
||||||
|
Element Flare
|
||||||
|
Element Ice
|
||||||
|
Static
|
||||||
|
Life Sync
|
||||||
|
Mini Boomer
|
||||||
|
Energy Bomb
|
||||||
|
Mega Energy Bomb
|
||||||
|
Gun del Sol 1
|
||||||
|
Gun del Sol 2
|
||||||
|
Gun del Sol 3
|
||||||
|
Mag Bolt 1
|
||||||
|
Mag Bolt 2
|
||||||
|
Mag Bolt 3
|
||||||
|
Binder 1
|
||||||
|
Binder 2
|
||||||
|
Binder 3
|
||||||
|
Bug Bomb
|
||||||
|
Elec Shock
|
||||||
|
Wood Powder
|
||||||
|
Cannonball
|
||||||
|
Geyser
|
||||||
|
Geyser
|
||||||
|
Sand Ring
|
||||||
|
Sword
|
||||||
|
Wide Sword
|
||||||
|
Long Sword
|
||||||
|
Wide Blade
|
||||||
|
Long Blade
|
||||||
|
Wind Racket
|
||||||
|
Custom Sword
|
||||||
|
Variable Sword
|
||||||
|
Slasher
|
||||||
|
Thunderball 1
|
||||||
|
Thunderball 2
|
||||||
|
Thunderball 3
|
||||||
|
Counter 1
|
||||||
|
Counter 2
|
||||||
|
Counter 3
|
||||||
|
Air Hockey 1
|
||||||
|
Air Hockey 2
|
||||||
|
Air Hockey 3
|
||||||
|
Circle Gun 1
|
||||||
|
Circle Gun 2
|
||||||
|
Circle Gun 3
|
||||||
|
Twin Fang 1
|
||||||
|
Twin Fang 2
|
||||||
|
Twin Fang 3
|
||||||
|
White Web 1
|
||||||
|
White Web 2
|
||||||
|
White Web 3
|
||||||
|
Boomerang 1
|
||||||
|
Boomerang 2
|
||||||
|
Boomerang 3
|
||||||
|
Side Bamboo 1
|
||||||
|
Side Bamboo 2
|
||||||
|
Side Bamboo 3
|
||||||
|
Lance
|
||||||
|
Hole
|
||||||
|
Boy's Bomb 1
|
||||||
|
Boy's Bomb 2
|
||||||
|
Boy's Bomb 3
|
||||||
|
Guard 1
|
||||||
|
Guard 2
|
||||||
|
Guard 3
|
||||||
|
Magnum
|
||||||
|
Grab Gel
|
||||||
|
Snake
|
||||||
|
Time Bomb
|
||||||
|
Mine
|
||||||
|
Rock Cube
|
||||||
|
Fanfare
|
||||||
|
Discord
|
||||||
|
Timpani
|
||||||
|
VDoll
|
||||||
|
Big Hammer 1
|
||||||
|
Big Hammer 2
|
||||||
|
Big Hammer 3
|
||||||
|
Grab Revenge
|
||||||
|
Grab Banish
|
||||||
|
Geddon 1
|
||||||
|
Geddon 2
|
||||||
|
Geddon 3
|
||||||
|
Element Leaf
|
||||||
|
Color Point
|
||||||
|
Element Sand
|
||||||
|
Moko Rush 1
|
||||||
|
Moko Rush 2
|
||||||
|
Moko Rush 3
|
||||||
|
North Wind
|
||||||
|
Anti Fire
|
||||||
|
Anti Water
|
||||||
|
Anti Electric
|
||||||
|
Anti Wood
|
||||||
|
Anti Navi
|
||||||
|
Anti Damage
|
||||||
|
Anti Sword
|
||||||
|
Anti Recover
|
||||||
|
Copy Damage
|
||||||
|
Attack +10
|
||||||
|
Navi +20
|
||||||
|
Roll Arrow 1
|
||||||
|
Roll Arrow 2
|
||||||
|
Roll Arrow 3
|
||||||
|
Guts Punch 1
|
||||||
|
Guts Punch 2
|
||||||
|
Guts Punch 3
|
||||||
|
Propeller Bomb 1
|
||||||
|
Propeller Bomb 2
|
||||||
|
Propeller Bomb 3
|
||||||
|
Search Bomb 1
|
||||||
|
Search Bomb 2
|
||||||
|
Search Bomb 3
|
||||||
|
Meteors 1
|
||||||
|
Meteors 2
|
||||||
|
Meteors 3
|
||||||
|
Lightning 1
|
||||||
|
Lightning 2
|
||||||
|
Lightning 3
|
||||||
|
Hawk Cut 1
|
||||||
|
Hawk Cut 2
|
||||||
|
Hawk Cut 3
|
||||||
|
Number Ball 1
|
||||||
|
Number Ball 2
|
||||||
|
Number Ball 3
|
||||||
|
Metal Gear 1
|
||||||
|
Metal Gear 2
|
||||||
|
Metal Gear 3
|
||||||
|
Panel Shoot 1
|
||||||
|
Panel Shoot 2
|
||||||
|
Panel Shoot 3
|
||||||
|
Aqua Upper 1
|
||||||
|
Aqua Upper 2
|
||||||
|
Aqua Upper 3
|
||||||
|
Green Wood 1
|
||||||
|
Green Wood 2
|
||||||
|
Green Wood 3
|
||||||
|
Muramasa
|
||||||
|
Guardian
|
||||||
|
Anubis
|
||||||
|
Double Point
|
||||||
|
Full Custom
|
||||||
|
Shooting Star
|
||||||
|
Bug Chain
|
||||||
|
Jealousy
|
||||||
|
Element Dark
|
||||||
|
Black Wing
|
||||||
|
God Hammer
|
||||||
|
Dark Line
|
||||||
|
Neo Variable
|
||||||
|
Z Saber
|
||||||
|
Gun del Sol EX
|
||||||
|
Super Vulcan
|
||||||
|
Roll
|
||||||
|
Roll SP
|
||||||
|
Roll DS
|
||||||
|
GutsMan
|
||||||
|
GutsMan SP
|
||||||
|
GutsMan DS
|
||||||
|
WindMan
|
||||||
|
WindMan SP
|
||||||
|
WindMan DS
|
||||||
|
SearchMan
|
||||||
|
SearchMan SP
|
||||||
|
SearchMan DS
|
||||||
|
FireMan
|
||||||
|
FireMan SP
|
||||||
|
FireMan DS
|
||||||
|
ThunderMan
|
||||||
|
ThunderMan SP
|
||||||
|
ThunderMan DS
|
||||||
|
ProtoMan
|
||||||
|
ProtoMan SP
|
||||||
|
ProtoMan DS
|
||||||
|
NumberMan
|
||||||
|
NumberMan SP
|
||||||
|
NumberMan DS
|
||||||
|
MetalMan
|
||||||
|
MetalMan SP
|
||||||
|
MetalMan DS
|
||||||
|
JunkMan
|
||||||
|
JunkMan SP
|
||||||
|
JunkMan DS
|
||||||
|
AquaMan
|
||||||
|
AquaMan SP
|
||||||
|
AquaMan DS
|
||||||
|
WoodMan
|
||||||
|
WoodMan SP
|
||||||
|
WoodMan DS
|
||||||
|
TopMan
|
||||||
|
TopMan SP
|
||||||
|
TopMan DS
|
||||||
|
ShadeMan
|
||||||
|
ShadeMan SP
|
||||||
|
ShadeMan DS
|
||||||
|
BurnerMan
|
||||||
|
BurnerMan SP
|
||||||
|
BurnerMan DS
|
||||||
|
ColdMan
|
||||||
|
ColdMan SP
|
||||||
|
ColdMan DS
|
||||||
|
SparkMan
|
||||||
|
SparkMan SP
|
||||||
|
SparkMan DS
|
||||||
|
LaserMan
|
||||||
|
LaserMan SP
|
||||||
|
LaserMan DS
|
||||||
|
KendoMan
|
||||||
|
KendoMan SP
|
||||||
|
KendoMan DS
|
||||||
|
VideoMan
|
||||||
|
VideoMan SP
|
||||||
|
VideoMan DS
|
||||||
|
Marking
|
||||||
|
Cannon Mode
|
||||||
|
Cannonball Mode
|
||||||
|
Sword Mode
|
||||||
|
Fire Plus
|
||||||
|
Thunder Plus
|
||||||
|
Aqua Power
|
||||||
|
Wood Power
|
||||||
|
Black Weapon
|
||||||
|
Final Gun
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Bass
|
||||||
|
Delta Ray
|
||||||
|
Bug Curse
|
||||||
|
Red Sun
|
||||||
|
Bass Another
|
||||||
|
Holy Dream
|
||||||
|
Blue Moon
|
||||||
|
Bug Charge
|
||||||
|
|
||||||
|
|
||||||
|
Wind
|
||||||
|
Fan
|
||||||
|
Crack Out
|
||||||
|
Double Crack
|
||||||
|
Triple Crack
|
||||||
|
Recovery 10
|
||||||
|
Recovery 30
|
||||||
|
Recovery 50
|
||||||
|
Recovery 80
|
||||||
|
Recovery 120
|
||||||
|
Recovery 150
|
||||||
|
Recovery 200
|
||||||
|
Recovery 300
|
||||||
|
Repair
|
||||||
|
Panel Grab
|
||||||
|
Area Grab
|
||||||
|
Slow Gauge
|
||||||
|
Fast Gauge
|
||||||
|
Panel Return
|
||||||
|
Blinder
|
||||||
|
Pop Up
|
||||||
|
Invisible
|
||||||
|
Barrier
|
||||||
|
Barrier 100
|
||||||
|
Barrier 200
|
||||||
|
Holy Panel
|
||||||
|
|
||||||
|
Life Aura
|
||||||
|
Attack +30
|
||||||
|
Bug Fix
|
||||||
|
Sanctuary
|
||||||
|
Signal Red
|
||||||
|
Black Barrier
|
||||||
|
MegaMan Navi
|
||||||
|
Roll Navi
|
||||||
|
GutsMan Navi
|
||||||
|
WindMan Navi
|
||||||
|
SearchMan Navi
|
||||||
|
FireMan Navi
|
||||||
|
ThunderMan Navi
|
||||||
|
ProtoMan Navi
|
||||||
|
NumberMan Navi
|
||||||
|
MetalMan Navi
|
||||||
|
JunkMan Navi
|
||||||
|
AquaMan Navi
|
||||||
|
WoodMan Navi
|
|
@ -7,6 +7,9 @@
|
||||||
|
|
||||||
#include "CoreController.h"
|
#include "CoreController.h"
|
||||||
|
|
||||||
|
#include <QFile>
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
using namespace QGBA;
|
using namespace QGBA;
|
||||||
|
|
||||||
BattleChipView::BattleChipView(std::shared_ptr<CoreController> controller, QWidget* parent)
|
BattleChipView::BattleChipView(std::shared_ptr<CoreController> controller, QWidget* parent)
|
||||||
|
@ -16,21 +19,47 @@ BattleChipView::BattleChipView(std::shared_ptr<CoreController> controller, QWidg
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
|
|
||||||
connect(m_ui.chipId, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), m_ui.inserted, [this]() {
|
connect(m_ui.chipId, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), m_ui.inserted, [this]() {
|
||||||
m_ui.inserted->setChecked(Qt::Checked);
|
m_ui.inserted->setChecked(Qt::Unchecked);
|
||||||
insertChip(true);
|
|
||||||
});
|
});
|
||||||
|
connect(m_ui.chipId, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), m_ui.chipName, &QComboBox::setCurrentIndex);
|
||||||
|
connect(m_ui.chipName, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), m_ui.chipId, &QSpinBox::setValue);
|
||||||
|
|
||||||
connect(m_ui.inserted, &QAbstractButton::toggled, this, &BattleChipView::insertChip);
|
connect(m_ui.inserted, &QAbstractButton::toggled, this, &BattleChipView::insertChip);
|
||||||
connect(controller.get(), &CoreController::stopping, this, &QWidget::close);
|
connect(controller.get(), &CoreController::stopping, this, &QWidget::close);
|
||||||
|
|
||||||
|
setFlavor(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
BattleChipView::~BattleChipView() {
|
BattleChipView::~BattleChipView() {
|
||||||
m_controller->detachBattleChipGate();
|
m_controller->detachBattleChipGate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BattleChipView::setFlavor(int flavor) {
|
||||||
|
loadChipNames(flavor);
|
||||||
|
}
|
||||||
|
|
||||||
void BattleChipView::insertChip(bool inserted) {
|
void BattleChipView::insertChip(bool inserted) {
|
||||||
if (inserted) {
|
if (inserted) {
|
||||||
m_controller->setBattleChipId(m_ui.chipId->value());
|
m_controller->setBattleChipId(m_ui.chipId->value());
|
||||||
} else {
|
} else {
|
||||||
m_controller->setBattleChipId(0);
|
m_controller->setBattleChipId(0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BattleChipView::loadChipNames(int flavor) {
|
||||||
|
QStringList chipNames;
|
||||||
|
chipNames.append(tr("(None)"));
|
||||||
|
|
||||||
|
QFile file(QString(":/res/chip-names-%1.txt").arg(flavor));
|
||||||
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
||||||
|
while (true) {
|
||||||
|
QByteArray line = file.readLine();
|
||||||
|
if (line.isEmpty()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
chipNames.append(QString::fromUtf8(line).trimmed());
|
||||||
|
}
|
||||||
|
|
||||||
|
m_ui.chipName->clear();
|
||||||
|
m_ui.chipName->addItems(chipNames);
|
||||||
}
|
}
|
|
@ -25,9 +25,12 @@ public:
|
||||||
~BattleChipView();
|
~BattleChipView();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void setFlavor(int);
|
||||||
void insertChip(bool);
|
void insertChip(bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void loadChipNames(int);
|
||||||
|
|
||||||
Ui::BattleChipView m_ui;
|
Ui::BattleChipView m_ui;
|
||||||
|
|
||||||
std::shared_ptr<CoreController> m_controller;
|
std::shared_ptr<CoreController> m_controller;
|
||||||
|
|
|
@ -6,38 +6,45 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>217</width>
|
<width>426</width>
|
||||||
<height>100</height>
|
<height>152</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>BattleChip Gate</string>
|
<string>BattleChip Gate</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
<item row="1" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QCheckBox" name="inserted">
|
<widget class="QCheckBox" name="inserted">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Inserted</string>
|
<string>Inserted</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Chip ID</string>
|
<string>Chip ID</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="0">
|
||||||
<widget class="QSpinBox" name="chipId">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="minimum">
|
<property name="text">
|
||||||
<number>1</number>
|
<string>Chip Name</string>
|
||||||
</property>
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QSpinBox" name="chipId">
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>65535</number>
|
<number>65535</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="chipName"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|
|
@ -4,5 +4,6 @@
|
||||||
<file>../../../res/keymap.qpic</file>
|
<file>../../../res/keymap.qpic</file>
|
||||||
<file>../../../res/patrons.txt</file>
|
<file>../../../res/patrons.txt</file>
|
||||||
<file>../../../res/no-cam.png</file>
|
<file>../../../res/no-cam.png</file>
|
||||||
|
<file>../../../res/chip-names-4.txt</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
Loading…
Reference in New Issue