o irq button to bsnes menu
o trigger irq from bsnes engine o add visual feedback in snes poc
This commit is contained in:
parent
5dd4904f9c
commit
8929a96e6e
@ -14,6 +14,8 @@
|
||||
; Main Code
|
||||
;============================================================================
|
||||
|
||||
.EQU PalNum $0000 ; Use some RAM
|
||||
|
||||
.BANK 0 SLOT 0
|
||||
.ORG 0
|
||||
.SECTION "MainCode"
|
||||
@ -46,17 +48,17 @@ Start_do:
|
||||
; Setup Video modes and other stuff, then turn on the screen
|
||||
jsr SetupVideo
|
||||
|
||||
sei
|
||||
cop
|
||||
prints "Init done"
|
||||
stz $3001
|
||||
|
||||
cop
|
||||
|
||||
lda #$81
|
||||
sta $4200
|
||||
|
||||
Infinity:
|
||||
lda PalNum
|
||||
clc
|
||||
adc #$01
|
||||
and #$ff ; If > palette starting color > 24 (00011100), make 0
|
||||
sta PalNum
|
||||
jmp Infinity ; bwa hahahahaha
|
||||
|
||||
|
||||
@ -111,6 +113,10 @@ NMIHandler:
|
||||
rti
|
||||
|
||||
IRQHandler:
|
||||
stz $2121
|
||||
lda PalNum
|
||||
sta $2122
|
||||
sta $2122
|
||||
prints "IRQHandler"
|
||||
rti
|
||||
|
||||
|
||||
@ -64,6 +64,10 @@ void SNES::term() {
|
||||
snesinterface.term();
|
||||
}
|
||||
|
||||
void SNES::irq() {
|
||||
cpu.triggerIRQ();
|
||||
}
|
||||
|
||||
void SNES::power() {
|
||||
snes_region = max(0, min(2, snes.config.region));
|
||||
snes_expansion = max(0, min(1, snes.config.expansion_port));
|
||||
|
||||
@ -60,6 +60,7 @@ public:
|
||||
virtual void term();
|
||||
virtual void power();
|
||||
virtual void reset();
|
||||
virtual void irq();
|
||||
|
||||
virtual void frame();
|
||||
virtual void scanline();
|
||||
|
||||
@ -12,6 +12,7 @@ void MainWindow::setup() {
|
||||
system_power_off = system_power->addAction("Off");
|
||||
system_power_off->setCheckable(true);
|
||||
system_reset = system->addAction("&Reset");
|
||||
system_irq = system->addAction("&Irq");
|
||||
system->addSeparator();
|
||||
system_port1 = system->addMenu("Controller Port 1");
|
||||
system_port1_none = system_port1->addAction("&None");
|
||||
@ -150,6 +151,7 @@ void MainWindow::setup() {
|
||||
connect(system_power_on, SIGNAL(triggered()), this, SLOT(powerOn()));
|
||||
connect(system_power_off, SIGNAL(triggered()), this, SLOT(powerOff()));
|
||||
connect(system_reset, SIGNAL(triggered()), this, SLOT(reset()));
|
||||
connect(system_irq, SIGNAL(triggered()), this, SLOT(irq()));
|
||||
connect(system_port1_none, SIGNAL(triggered()), this, SLOT(setPort1None()));
|
||||
connect(system_port1_joypad, SIGNAL(triggered()), this, SLOT(setPort1Joypad()));
|
||||
connect(system_port1_multitap, SIGNAL(triggered()), this, SLOT(setPort1Multitap()));
|
||||
@ -251,6 +253,7 @@ void MainWindow::loadCartridge() {
|
||||
void MainWindow::powerOn() { utility.modifySystemState(Utility::PowerOn); }
|
||||
void MainWindow::powerOff() { utility.modifySystemState(Utility::PowerOff); }
|
||||
void MainWindow::reset() { utility.modifySystemState(Utility::Reset); }
|
||||
void MainWindow::irq() { utility.modifySystemState(Utility::Irq); }
|
||||
|
||||
void MainWindow::setPort1None() { snes.config.controller_port1 = SNES::Input::DeviceNone; utility.updateControllers(); syncUi(); }
|
||||
void MainWindow::setPort1Joypad() { snes.config.controller_port1 = SNES::Input::DeviceJoypad; utility.updateControllers(); syncUi(); }
|
||||
|
||||
@ -25,6 +25,7 @@ public:
|
||||
QAction *system_power_on;
|
||||
QAction *system_power_off;
|
||||
QAction *system_reset;
|
||||
QAction *system_irq;
|
||||
QMenu *system_port1;
|
||||
QAction *system_port1_none;
|
||||
QAction *system_port1_joypad;
|
||||
@ -86,6 +87,7 @@ public slots:
|
||||
void powerOn();
|
||||
void powerOff();
|
||||
void reset();
|
||||
void irq();
|
||||
void setPort1None();
|
||||
void setPort1Joypad();
|
||||
void setPort1Multitap();
|
||||
|
||||
@ -54,6 +54,7 @@ public:
|
||||
string loadCartridge;
|
||||
string pauseEmulation;
|
||||
string resetSystem;
|
||||
string triggerIrq;
|
||||
string powerCycleSystem;
|
||||
string lowerSpeed;
|
||||
string raiseSpeed;
|
||||
@ -204,6 +205,7 @@ public:
|
||||
attach(input.uiGeneral.loadCartridge = "none", "input.uiGeneral.loadCartridge");
|
||||
attach(input.uiGeneral.pauseEmulation = "keyboard00.pause", "input.uiGeneral.pauseEmulation");
|
||||
attach(input.uiGeneral.resetSystem = "none", "input.uiGeneral.resetSystem");
|
||||
attach(input.uiGeneral.triggerIrq = "none", "input.uiGeneral.triggerIrq");
|
||||
attach(input.uiGeneral.powerCycleSystem = "none", "input.uiGeneral.powerCycleSystem");
|
||||
attach(input.uiGeneral.lowerSpeed = "keyboard00.divide", "input.uiGeneral.lowerSpeed");
|
||||
attach(input.uiGeneral.raiseSpeed = "keyboard00.multiply", "input.uiGeneral.raiseSpeed");
|
||||
|
||||
@ -154,6 +154,15 @@ void Utility::modifySystemState(system_state_t state) {
|
||||
|
||||
showMessage("System was reset.");
|
||||
} break;
|
||||
|
||||
case Irq: {
|
||||
if(cartridge.loaded() == false || application.power == false) break;
|
||||
|
||||
application.pause = false;
|
||||
snes.irq();
|
||||
|
||||
showMessage("Irq was send.");
|
||||
} break;
|
||||
}
|
||||
|
||||
winMain->syncUi();
|
||||
|
||||
@ -26,7 +26,7 @@ public:
|
||||
bool loadCartridgeSufamiTurbo(const char*, const char *, const char*);
|
||||
void unloadCartridge();
|
||||
|
||||
enum system_state_t { LoadCartridge, UnloadCartridge, PowerOn, PowerOff, PowerCycle, Reset };
|
||||
enum system_state_t { LoadCartridge, UnloadCartridge, PowerOn, PowerOff, PowerCycle, Reset, Irq };
|
||||
void modifySystemState(system_state_t state);
|
||||
|
||||
//window.cpp
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user