This commit is contained in:
Matthew Budd 2020-07-25 19:40:50 -04:00
commit 91ac62e998
11 changed files with 420 additions and 135 deletions

View File

@ -48,120 +48,205 @@ static SFORMAT StateRegs[] =
#define X24C0X_READ 3 #define X24C0X_READ 3
#define X24C0X_WRITE 4 #define X24C0X_WRITE 4
static uint8 x24c0x_data[256], x24c0x_state; static uint8 x24c0x_data[512];
static uint8 x24c0x_addr, x24c0x_word, x24c0x_latch, x24c0x_bitcount;
static uint8 x24c0x_sda, x24c0x_scl, x24c0x_out, x24c0x_oe;
static SFORMAT x24c0xStateRegs[] = static uint8 x24c01_state;
static uint8 x24c01_addr, x24c01_word, x24c01_latch, x24c01_bitcount;
static uint8 x24c01_sda, x24c01_scl, x24c01_out;
static uint8 x24c02_state;
static uint8 x24c02_addr, x24c02_word, x24c02_latch, x24c02_bitcount;
static uint8 x24c02_sda, x24c02_scl, x24c02_out;
static SFORMAT x24c01StateRegs[] =
{ {
{ &x24c0x_addr, 1, "ADDR" }, { &x24c01_addr, 1, "ADDR" },
{ &x24c0x_word, 1, "WORD" }, { &x24c01_word, 1, "WORD" },
{ &x24c0x_latch, 1, "LATC" }, { &x24c01_latch, 1, "LATC" },
{ &x24c0x_bitcount, 1, "BITC" }, { &x24c01_bitcount, 1, "BITC" },
{ &x24c0x_sda, 1, "SDA" }, { &x24c01_sda, 1, "SDA" },
{ &x24c0x_scl, 1, "SCL" }, { &x24c01_scl, 1, "SCL" },
{ &x24c0x_out, 1, "OUT" }, { &x24c01_out, 1, "OUT" },
{ &x24c0x_oe, 1, "OE" }, { &x24c01_state, 1, "STAT" },
{ &x24c0x_state, 1, "STAT" },
{ 0 } { 0 }
}; };
static void x24c0x_init() { static SFORMAT x24c02StateRegs[] =
x24c0x_addr = x24c0x_word = x24c0x_latch = x24c0x_bitcount = x24c0x_sda = x24c0x_scl = x24c0x_oe = 0; {
x24c0x_state = X24C0X_STANDBY; { &x24c02_addr, 1, "ADDR" },
{ &x24c02_word, 1, "WORD" },
{ &x24c02_latch, 1, "LATC" },
{ &x24c02_bitcount, 1, "BITC" },
{ &x24c02_sda, 1, "SDA" },
{ &x24c02_scl, 1, "SCL" },
{ &x24c02_out, 1, "OUT" },
{ &x24c02_state, 1, "STAT" },
{ 0 }
};
static void x24c01_init() {
x24c01_addr = x24c01_word = x24c01_latch = x24c01_bitcount = x24c01_sda = x24c01_scl = 0;
x24c01_state = X24C0X_STANDBY;
} }
static void x24c0x_write(uint8 data) { static void x24c02_init() {
uint8 sda = (data >> 6) & 1; x24c02_addr = x24c02_word = x24c02_latch = x24c02_bitcount = x24c02_sda = x24c02_scl = 0;
x24c02_state = X24C0X_STANDBY;
}
static void x24c01_write(uint8 data) {
uint8 scl = (data >> 5) & 1; uint8 scl = (data >> 5) & 1;
x24c0x_oe = (data >> 7); uint8 sda = (data >> 6) & 1;
if(x24c0x_scl && scl) { if(x24c01_scl && scl) {
if(x24c0x_sda && !sda) { // START if(x24c01_sda && !sda) { // START
x24c0x_state = X24C0X_ADDRESS; x24c01_state = X24C0X_ADDRESS;
x24c0x_bitcount = 0; x24c01_bitcount = 0;
x24c0x_addr = 0; x24c01_addr = 0;
} else if(!x24c0x_sda && sda) { //STOP } else if(!x24c01_sda && sda) { //STOP
x24c0x_state = X24C0X_STANDBY; x24c01_state = X24C0X_STANDBY;
} }
} else if(!x24c0x_scl && scl) { // RISING EDGE } else if(!x24c01_scl && scl) { // RISING EDGE
switch(x24c0x_state) { switch(x24c01_state) {
case X24C0X_ADDRESS: case X24C0X_ADDRESS:
if(x24c0x_bitcount < 7) { if(x24c01_bitcount < 7) {
x24c0x_addr <<= 1; x24c01_addr <<= 1;
x24c0x_addr |= sda; x24c01_addr |= sda;
} else { } else {
if(!x24c02) // X24C01 mode x24c01_word = x24c01_addr;
x24c0x_word = x24c0x_addr; if(sda) // READ COMMAND
if(sda) { // READ COMMAND x24c01_state = X24C0X_READ;
x24c0x_state = X24C0X_READ; else // WRITE COMMAND
} else { // WRITE COMMAND x24c01_state = X24C0X_WRITE;
if(x24c02) // X24C02 mode
x24c0x_state = X24C0X_WORD;
else
x24c0x_state = X24C0X_WRITE;
} }
} x24c01_bitcount++;
x24c0x_bitcount++;
break;
case X24C0X_WORD:
if(x24c0x_bitcount == 8) { // ACK
x24c0x_word = 0;
x24c0x_out = 0;
} else { // WORD ADDRESS INPUT
x24c0x_word <<= 1;
x24c0x_word |= sda;
if(x24c0x_bitcount == 16) { // END OF ADDRESS INPUT
x24c0x_bitcount = 7;
x24c0x_state = X24C0X_WRITE;
}
}
x24c0x_bitcount++;
break; break;
case X24C0X_READ: case X24C0X_READ:
if (x24c0x_bitcount == 8) { // ACK if (x24c01_bitcount == 8) { // ACK
x24c0x_out = 0; x24c01_out = 0;
x24c0x_latch = x24c0x_data[x24c0x_word]; x24c01_latch = x24c0x_data[x24c01_word];
x24c0x_bitcount = 0; x24c01_bitcount = 0;
} else { // REAL OUTPUT } else { // REAL OUTPUT
x24c0x_out = x24c0x_latch >> 7; x24c01_out = x24c01_latch >> 7;
x24c0x_latch <<= 1; x24c01_latch <<= 1;
x24c0x_bitcount++; x24c01_bitcount++;
if(x24c0x_bitcount == 8) { if(x24c01_bitcount == 8) {
x24c0x_word++; x24c01_word++;
x24c0x_word &= 0xff; x24c01_word &= 0xff;
} }
} }
break; break;
case X24C0X_WRITE: case X24C0X_WRITE:
if (x24c0x_bitcount == 8) { // ACK if (x24c01_bitcount == 8) { // ACK
x24c0x_out = 0; x24c01_out = 0;
x24c0x_latch = 0; x24c01_latch = 0;
x24c0x_bitcount = 0; x24c01_bitcount = 0;
} else { // REAL INPUT } else { // REAL INPUT
x24c0x_latch <<= 1; x24c01_latch <<= 1;
x24c0x_latch |= sda; x24c01_latch |= sda;
x24c0x_bitcount++; x24c01_bitcount++;
if(x24c0x_bitcount == 8) { if(x24c01_bitcount == 8) {
x24c0x_data[x24c0x_word] = x24c0x_latch; x24c0x_data[x24c01_word] = x24c01_latch;
x24c0x_word++; x24c01_word++;
x24c0x_word &= 0xff; x24c01_word &= 0xff;
} }
} }
break; break;
} }
} }
x24c0x_sda = sda; x24c01_sda = sda;
x24c0x_scl = scl; x24c01_scl = scl;
} }
static uint8 x24c0x_read() { static void x24c02_write(uint8 data) {
return x24c0x_out << 4; uint8 scl = (data >> 5) & 1;
uint8 sda = (data >> 6) & 1;
if (x24c02_scl && scl) {
if (x24c02_sda && !sda) { // START
x24c02_state = X24C0X_ADDRESS;
x24c02_bitcount = 0;
x24c02_addr = 0;
} else if (!x24c02_sda && sda) { //STOP
x24c02_state = X24C0X_STANDBY;
}
} else if (!x24c02_scl && scl) { // RISING EDGE
switch (x24c02_state) {
case X24C0X_ADDRESS:
if (x24c02_bitcount < 7) {
x24c02_addr <<= 1;
x24c02_addr |= sda;
} else {
if (sda) // READ COMMAND
x24c02_state = X24C0X_READ;
else // WRITE COMMAND
x24c02_state = X24C0X_WORD;
}
x24c02_bitcount++;
break;
case X24C0X_WORD:
if (x24c02_bitcount == 8) { // ACK
x24c02_word = 0;
x24c02_out = 0;
} else { // WORD ADDRESS INPUT
x24c02_word <<= 1;
x24c02_word |= sda;
if (x24c02_bitcount == 16) {// END OF ADDRESS INPUT
x24c02_bitcount = 7;
x24c02_state = X24C0X_WRITE;
}
}
x24c02_bitcount++;
break;
case X24C0X_READ:
if (x24c02_bitcount == 8) { // ACK
x24c02_out = 0;
x24c02_latch = x24c0x_data[x24c02_word|0x100];
x24c02_bitcount = 0;
} else { // REAL OUTPUT
x24c02_out = x24c02_latch >> 7;
x24c02_latch <<= 1;
x24c02_bitcount++;
if (x24c02_bitcount == 8) {
x24c02_word++;
x24c02_word &= 0xff;
}
}
break;
case X24C0X_WRITE:
if (x24c02_bitcount == 8) { // ACK
x24c02_out = 0;
x24c02_latch = 0;
x24c02_bitcount = 0;
} else { // REAL INPUT
x24c02_latch <<= 1;
x24c02_latch |= sda;
x24c02_bitcount++;
if (x24c02_bitcount == 8) {
x24c0x_data[x24c02_word|0x100] = x24c02_latch;
x24c02_word++;
x24c02_word &= 0xff;
}
}
break;
}
}
x24c02_sda = sda;
x24c02_scl = scl;
} }
// //
static void SyncMirror(void) {
switch (reg[9] & 3) {
case 0: setmirror(MI_V); break;
case 1: setmirror(MI_H); break;
case 2: setmirror(MI_0); break;
case 3: setmirror(MI_1); break;
}
}
static void Sync(void) { static void Sync(void) {
if (is153) { if (is153) {
int base = (reg[0] & 1) << 4; int base = (reg[0] & 1) << 4;
@ -174,12 +259,7 @@ static void Sync(void) {
setprg16(0x8000, reg[8]); setprg16(0x8000, reg[8]);
setprg16(0xC000, ~0); setprg16(0xC000, ~0);
} }
switch (reg[9] & 3) { SyncMirror();
case 0: setmirror(MI_V); break;
case 1: setmirror(MI_H); break;
case 2: setmirror(MI_0); break;
case 3: setmirror(MI_1); break;
}
} }
static DECLFW(BandaiWrite) { static DECLFW(BandaiWrite) {
@ -192,12 +272,15 @@ static DECLFW(BandaiWrite) {
case 0x0A: X6502_IRQEnd(FCEU_IQEXT); IRQa = V & 1; IRQCount = IRQLatch; break; case 0x0A: X6502_IRQEnd(FCEU_IQEXT); IRQa = V & 1; IRQCount = IRQLatch; break;
case 0x0B: IRQLatch &= 0xFF00; IRQLatch |= V; break; case 0x0B: IRQLatch &= 0xFF00; IRQLatch |= V; break;
case 0x0C: IRQLatch &= 0xFF; IRQLatch |= V << 8; break; case 0x0C: IRQLatch &= 0xFF; IRQLatch |= V << 8; break;
case 0x0D: x24c0x_write(V); break; case 0x0D: if(x24c02) x24c02_write(V); else x24c01_write(V); break;
} }
} }
static DECLFR(BandaiRead) { static DECLFR(BandaiRead) {
return (X.DB & 0xEF) | x24c0x_read(); if(x24c02)
return (X.DB & 0xEF) | (x24c02_out << 4);
else
return (X.DB & 0xEF) | (x24c01_out << 4);
} }
static void BandaiIRQHook(int a) { static void BandaiIRQHook(int a) {
@ -213,11 +296,14 @@ static void BandaiIRQHook(int a) {
static void BandaiPower(void) { static void BandaiPower(void) {
IRQa = 0; IRQa = 0;
x24c0x_init(); if(x24c02)
x24c02_init();
else
x24c01_init();
Sync(); Sync();
SetReadHandler(0x6000, 0x7FFF, BandaiRead); SetReadHandler(0x6000, 0x7FFF, BandaiRead);
SetReadHandler(0x8000, 0xFFFF, CartBR); SetReadHandler(0x8000, 0xFFFF, CartBR);
SetWriteHandler(0x6000, 0xFFFF, BandaiWrite); SetWriteHandler(0x8000, 0xFFFF, BandaiWrite);
} }
static void StateRestore(int version) { static void StateRestore(int version) {
@ -231,12 +317,12 @@ void Mapper16_Init(CartInfo *info) {
MapIRQHook = BandaiIRQHook; MapIRQHook = BandaiIRQHook;
info->battery = 1; info->battery = 1;
info->SaveGame[0] = x24c0x_data; info->SaveGame[0] = x24c0x_data + 256;
info->SaveGameLen[0] = 256; info->SaveGameLen[0] = 256;
AddExState(x24c0x_data, 256, 0, "DATA"); AddExState(x24c0x_data, 256, 0, "DATA");
AddExState(&x24c02StateRegs, ~0, 0, 0);
GameStateRestore = StateRestore; GameStateRestore = StateRestore;
AddExState(&x24c0xStateRegs, ~0, 0, 0);
AddExState(&StateRegs, ~0, 0, 0); AddExState(&StateRegs, ~0, 0, 0);
} }
@ -250,9 +336,9 @@ void Mapper159_Init(CartInfo *info) {
info->SaveGame[0] = x24c0x_data; info->SaveGame[0] = x24c0x_data;
info->SaveGameLen[0] = 128; info->SaveGameLen[0] = 128;
AddExState(x24c0x_data, 128, 0, "DATA"); AddExState(x24c0x_data, 128, 0, "DATA");
AddExState(&x24c01StateRegs, ~0, 0, 0);
GameStateRestore = StateRestore; GameStateRestore = StateRestore;
AddExState(&x24c0xStateRegs, ~0, 0, 0);
AddExState(&StateRegs, ~0, 0, 0); AddExState(&StateRegs, ~0, 0, 0);
} }
@ -343,7 +429,7 @@ int FCEUI_DatachSet(const uint8 *rcode) {
#define BS(x) BarcodeData[tmp_p] = x; tmp_p++ #define BS(x) BarcodeData[tmp_p] = x; tmp_p++
for (j = 0; j < 32; j++) { for (j = 0; j < 32; j++) { // delay before sending a code
BS(0x00); BS(0x00);
} }
@ -419,6 +505,26 @@ int FCEUI_DatachSet(const uint8 *rcode) {
return(1); return(1);
} }
static void BarcodeSync(void) {
setchr8(0);
setprg16(0x8000, (reg[8] & 0x0F));
setprg16(0xC000, 0x0F);
SyncMirror();
}
static DECLFW(BarcodeWrite) {
A &= 0x0F;
switch (A) {
case 0x00: reg[0] = (V & 8) << 2; x24c01_write(reg[0xD] | reg[0]); break; // extra EEPROM x24C01 used in Battle Rush mini-cart
case 0x08:
case 0x09: reg[A] = V; BarcodeSync(); break;
case 0x0A: X6502_IRQEnd(FCEU_IQEXT); IRQa = V & 1; IRQCount = IRQLatch; break;
case 0x0B: IRQLatch &= 0xFF00; IRQLatch |= V; break;
case 0x0C: IRQLatch &= 0xFF; IRQLatch |= V << 8; break;
case 0x0D: reg[0xD] = V & (~0x20); x24c01_write(reg[0xD] | reg[0]); x24c02_write(V); break;
}
}
static void BarcodeIRQHook(int a) { static void BarcodeIRQHook(int a) {
BandaiIRQHook(a); BandaiIRQHook(a);
@ -436,7 +542,7 @@ static void BarcodeIRQHook(int a) {
} }
static DECLFR(BarcodeRead) { static DECLFR(BarcodeRead) {
return BarcodeOut; return (X.DB & 0xE7) | ((x24c02_out | x24c01_out) << 4) | BarcodeOut;
} }
static void M157Power(void) { static void M157Power(void) {
@ -446,20 +552,29 @@ static void M157Power(void) {
BarcodeOut = 0; BarcodeOut = 0;
BarcodeCycleCount = 0; BarcodeCycleCount = 0;
Sync(); x24c01_init();
x24c02_init();
BarcodeSync();
SetWriteHandler(0x6000, 0xFFFF, BandaiWrite);
SetReadHandler(0x6000, 0x7FFF, BarcodeRead); SetReadHandler(0x6000, 0x7FFF, BarcodeRead);
SetReadHandler(0x8000, 0xFFFF, CartBR); SetReadHandler(0x8000, 0xFFFF, CartBR);
SetWriteHandler(0x8000, 0xFFFF, BarcodeWrite);
} }
void Mapper157_Init(CartInfo *info) { void Mapper157_Init(CartInfo *info) {
is153 = 1; x24c02 = 1;
info->Power = M157Power; info->Power = M157Power;
MapIRQHook = BarcodeIRQHook; MapIRQHook = BarcodeIRQHook;
GameInfo->cspecial = SIS_DATACH; GameInfo->cspecial = SIS_DATACH;
info->battery = 1;
info->SaveGame[0] = x24c0x_data;
info->SaveGameLen[0] = 512;
AddExState(x24c0x_data, 512, 0, "DATA");
AddExState(&x24c01StateRegs, ~0, 0, 0);
AddExState(&x24c02StateRegs, ~0, 0, 0);
GameStateRestore = StateRestore;
GameStateRestore = StateRestore; GameStateRestore = StateRestore;
AddExState(&StateRegs, ~0, 0, 0); AddExState(&StateRegs, ~0, 0, 0);
} }

View File

@ -52,7 +52,9 @@ static void MMC1CHR(void) {
static void MMC1PRG(void) { static void MMC1PRG(void) {
uint8 offs_16banks = DRegs[1] & 0x10; uint8 offs_16banks = DRegs[1] & 0x10;
uint8 prg_reg = DRegs[3] & 0xF; uint8 prg_reg = DRegs[3] & 0xF;
setprg8r(0x10, 0x6000, DRegs[1] & 3); setprg8r(0x10, 0x6000, DRegs[1] & 3);
switch (DRegs[0] & 0xC) { switch (DRegs[0] & 0xC) {
case 0xC: case 0xC:
setprg16(0x8000, (prg_reg + offs_16banks)); setprg16(0x8000, (prg_reg + offs_16banks));
@ -96,13 +98,13 @@ static DECLFW(MMC1_write) {
Buffer |= (V & 1) << (BufferShift++); Buffer |= (V & 1) << (BufferShift++);
if (BufferShift == 5) { if (BufferShift == 5) {
FCEU_printf("MMC1 REG%d:%02x (PC %04x)\n", n, Buffer, X.PC);
DRegs[n] = Buffer; DRegs[n] = Buffer;
// FCEU_printf("MMC1 REG%d:%02x\n", n, Buffer);
BufferShift = Buffer = 0; BufferShift = Buffer = 0;
switch (n) { switch (n) {
case 0: MMC1MIRROR(); // break; case 0: MMC1MIRROR();
case 1: // break; case 1:
// case 2: MMC1CHR(); break; case 2:
case 3: MMC1PRG(); break; case 3: MMC1PRG(); break;
} }
} }
@ -151,13 +153,13 @@ static DECLFW(FNC_cmd_write) {
break; break;
} }
case 0x40C0: { case 0x40C0: {
// FCEU_printf("FNS W %04x:%02x\n", A, V); FCEU_printf("FNS W %04x:%02x (PC %04x)\n", A, V, X.PC);
r40C0 = V; r40C0 = V;
MMC1CHR(); MMC1CHR();
break; break;
} }
// default: default:
// FCEU_printf("FNS W %04x:%02x\n", A, V); FCEU_printf("FNS W %04x:%02x (PC %04x)\n", A, V, X.PC);
} }
} }
@ -169,23 +171,32 @@ static DECLFR(FNC_stat_read) {
IRQa = 0; IRQa = 0;
return ret; return ret;
} }
case 0x40AC: { // NMI/IRQ state reset (lookalike)
return 0;
}
case 0x40B0: { case 0x40B0: {
kanji_pos = 0; kanji_pos = 0;
return 0; return 0;
} }
case 0x40C0: { case 0x40C0: {
// FCEU_printf("FNS R %04x\n", A); FCEU_printf("FNS R %04x (PC %04x)\n", A, X.PC);
int ret = r40C0; int ret = r40C0;
r40C0 &= 0; r40C0 &= 0;
return ret; return ret;
} }
default: { default: {
// FCEU_printf("FNS R %04x\n", A); FCEU_printf("FNS R %04x (PC %04x)\n", A, X.PC);
return 0xff; return 0xff;
} }
} }
} }
static DECLFR(FNC_cart_i2c_read) {
FCEU_printf("I2C R %04x (PC %04x)\n", A, X.PC);
return 0;
}
static DECLFR(FNC_kanji_read) { static DECLFR(FNC_kanji_read) {
int32 ofs = ((A & 0xFFF) << 5) + kanji_pos; int32 ofs = ((A & 0xFFF) << 5) + kanji_pos;
kanji_pos++; kanji_pos++;
@ -217,8 +228,9 @@ static void FNS_Power(void) {
SetReadHandler(0x4080, 0x40FF, FNC_stat_read); SetReadHandler(0x4080, 0x40FF, FNC_stat_read);
SetReadHandler(0x5000, 0x5FFF, FNC_kanji_read); SetReadHandler(0x5000, 0x5FFF, FNC_kanji_read);
SetReadHandler(0x6000, 0x7FFF, MAWRAM); SetReadHandler(0x6000, 0x6000, FNC_cart_i2c_read);
SetWriteHandler(0x6000, 0x7FFF, MBWRAM); SetReadHandler(0x6001, 0x7FFF, CartBR);
SetWriteHandler(0x6000, 0x7FFF, CartBW);
FCEU_CheatAddRAM(8, 0x6000, WRAM); FCEU_CheatAddRAM(8, 0x6000, WRAM);
MMC1CMReset(); MMC1CMReset();

View File

@ -921,7 +921,7 @@ inline void FCEUI_CreateCheatMap()
inline void FCEUI_RefreshCheatMap() inline void FCEUI_RefreshCheatMap()
{ {
memset(cheatMap, 0, CHEATMAP_SIZE); memset(cheatMap, 0, CHEATMAP_SIZE);
for (int i = 0; i < numsubcheats; ++i) for (uint32 i = 0; i < numsubcheats; ++i)
FCEUI_SetCheatMapByte(SubCheats[i].addr, true); FCEUI_SetCheatMapByte(SubCheats[i].addr, true);
} }

View File

@ -342,7 +342,7 @@ enum EFCEUI
FCEUI_STOPMOVIE, FCEUI_RECORDMOVIE, FCEUI_PLAYMOVIE, FCEUI_STOPMOVIE, FCEUI_RECORDMOVIE, FCEUI_PLAYMOVIE,
FCEUI_OPENGAME, FCEUI_CLOSEGAME, FCEUI_OPENGAME, FCEUI_CLOSEGAME,
FCEUI_TASEDITOR, FCEUI_TASEDITOR,
FCEUI_RESET, FCEUI_POWER, FCEUI_PLAYFROMBEGINNING, FCEUI_EJECT_DISK, FCEUI_SWITCH_DISK, FCEUI_INSERT_COIN, FCEUI_RESET, FCEUI_POWER, FCEUI_PLAYFROMBEGINNING, FCEUI_EJECT_DISK, FCEUI_SWITCH_DISK, FCEUI_INSERT_COIN, FCEUI_INPUT_BARCODE,
FCEUI_TOGGLERECORDINGMOVIE, FCEUI_TRUNCATEMOVIE, FCEUI_INSERT1FRAME, FCEUI_DELETE1FRAME FCEUI_TOGGLERECORDINGMOVIE, FCEUI_TRUNCATEMOVIE, FCEUI_INSERT1FRAME, FCEUI_DELETE1FRAME
}; };

View File

@ -246,6 +246,29 @@ INT_PTR CWin32InputBox::GetInteger(
return ret; return ret;
} }
INT_PTR CWin32InputBox::GetString(
LPCTSTR szTitle,
LPCTSTR szPrompt,
CHAR* result,
HWND hwndParent)
{
WIN32INPUTBOX_PARAM param;
char szResult[32+1];
sprintf(szResult, "");
param.szTitle = szTitle;
param.szPrompt = szPrompt;
param.szResult = szResult;
param.nResultSize = sizeof(szResult);
param.bMultiline = false;
param.hwndOwner = hwndParent;
INT_PTR ret = InputBoxEx(&param);
if (ret == IDOK)
sprintf(result, "%s", szResult);
return ret;
}
void CWin32InputBox::InitDialog() void CWin32InputBox::InitDialog()
{ {
// Set the button captions // Set the button captions

View File

@ -99,6 +99,12 @@ public:
LPCTSTR szPrompt, LPCTSTR szPrompt,
int& result, int& result,
HWND hwndParent = 0); HWND hwndParent = 0);
static INT_PTR GetString(
LPCTSTR szTitle,
LPCTSTR szPrompt,
CHAR* result,
HWND hwndParent = 0);
}; };
#endif #endif

View File

@ -106,8 +106,6 @@ static uint32 FTrainerData=0;
static uint8 TopRiderData=0; static uint8 TopRiderData=0;
static uint32 FamiNetSysData = 0; static uint32 FamiNetSysData = 0;
static uint8 BWorldData[1+13+1];
static void UpdateFKB(void); static void UpdateFKB(void);
static void UpdateSuborKB(void); static void UpdateSuborKB(void);
void UpdateGamepad(void); void UpdateGamepad(void);

View File

@ -1,5 +1,5 @@
#ifndef WIN_INPUT_H #ifndef WIN_INPUT_H
#define WIN_INPU_H #define WIN_INPUT_H
#include "dinput.h" #include "dinput.h"
@ -30,6 +30,8 @@ extern LPDIRECTINPUT7 lpDI;
extern int InputType[3]; extern int InputType[3];
//extern int UsrInputType[3]; //extern int UsrInputType[3];
extern int cidisabled; extern int cidisabled;
extern uint8 BWorldData[1 + 13 + 1];
#ifndef _aosdfjk02fmasf #ifndef _aosdfjk02fmasf
#define _aosdfjk02fmasf #define _aosdfjk02fmasf

View File

@ -50,10 +50,14 @@ END
// Icon with lowest ID value placed first to ensure application icon // Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems. // remains consistent on all systems.
IDI_ICON3 ICON "res/taseditor-icon.ico" IDI_ICON3 ICON "res/taseditor-icon.ico"
IDI_ICON4 ICON "res/taseditor-icon32.ico" IDI_ICON4 ICON "res/taseditor-icon32.ico"
ICON_1 ICON "res/ICON_1.ico" ICON_1 ICON "res/ICON_1.ico"
ICON_2 ICON "res/ICON_2.ico" ICON_2 ICON "res/ICON_2.ico"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Menu // Menu
@ -133,6 +137,7 @@ BEGIN
MENUITEM "&Eject/Insert Disk", MENU_EJECT_DISK MENUITEM "&Eject/Insert Disk", MENU_EJECT_DISK
MENUITEM "&Switch Disk Side", MENU_SWITCH_DISK MENUITEM "&Switch Disk Side", MENU_SWITCH_DISK
MENUITEM "&Insert Coin", MENU_INSERT_COIN MENUITEM "&Insert Coin", MENU_INSERT_COIN
MENUITEM "Input &Barcode", MENU_INPUT_BARCODE
MENUITEM SEPARATOR MENUITEM SEPARATOR
POPUP "E&mulation Speed" POPUP "E&mulation Speed"
BEGIN BEGIN
@ -2859,109 +2864,213 @@ END
// //
IDB_BITMAP0 BITMAP "res\\te_0.bmp" IDB_BITMAP0 BITMAP "res\\te_0.bmp"
IDB_BITMAP1 BITMAP "res\\te_1.bmp" IDB_BITMAP1 BITMAP "res\\te_1.bmp"
IDB_BITMAP2 BITMAP "res\\te_2.bmp" IDB_BITMAP2 BITMAP "res\\te_2.bmp"
IDB_BITMAP3 BITMAP "res\\te_3.bmp" IDB_BITMAP3 BITMAP "res\\te_3.bmp"
IDB_BITMAP4 BITMAP "res\\te_4.bmp" IDB_BITMAP4 BITMAP "res\\te_4.bmp"
IDB_BITMAP5 BITMAP "res\\te_5.bmp" IDB_BITMAP5 BITMAP "res\\te_5.bmp"
IDB_BITMAP6 BITMAP "res\\te_6.bmp" IDB_BITMAP6 BITMAP "res\\te_6.bmp"
IDB_BITMAP7 BITMAP "res\\te_7.bmp" IDB_BITMAP7 BITMAP "res\\te_7.bmp"
IDB_BITMAP8 BITMAP "res\\te_8.bmp" IDB_BITMAP8 BITMAP "res\\te_8.bmp"
IDB_BITMAP9 BITMAP "res\\te_9.bmp" IDB_BITMAP9 BITMAP "res\\te_9.bmp"
IDB_BITMAP10 BITMAP "res\\te_10.bmp" IDB_BITMAP10 BITMAP "res\\te_10.bmp"
IDB_BITMAP11 BITMAP "res\\te_11.bmp" IDB_BITMAP11 BITMAP "res\\te_11.bmp"
IDB_BITMAP12 BITMAP "res\\te_12.bmp" IDB_BITMAP12 BITMAP "res\\te_12.bmp"
IDB_BITMAP13 BITMAP "res\\te_13.bmp" IDB_BITMAP13 BITMAP "res\\te_13.bmp"
IDB_BITMAP14 BITMAP "res\\te_14.bmp" IDB_BITMAP14 BITMAP "res\\te_14.bmp"
IDB_BITMAP15 BITMAP "res\\te_15.bmp" IDB_BITMAP15 BITMAP "res\\te_15.bmp"
IDB_BITMAP16 BITMAP "res\\te_16.bmp" IDB_BITMAP16 BITMAP "res\\te_16.bmp"
IDB_BITMAP17 BITMAP "res\\te_17.bmp" IDB_BITMAP17 BITMAP "res\\te_17.bmp"
IDB_BITMAP18 BITMAP "res\\te_18.bmp" IDB_BITMAP18 BITMAP "res\\te_18.bmp"
IDB_BITMAP19 BITMAP "res\\te_19.bmp" IDB_BITMAP19 BITMAP "res\\te_19.bmp"
IDB_TE_ARROW BITMAP "res\\te_arrow.bmp" IDB_TE_ARROW BITMAP "res\\te_arrow.bmp"
IDB_TE_GREEN_ARROW BITMAP "res\\te_green_arrow.bmp" IDB_TE_GREEN_ARROW BITMAP "res\\te_green_arrow.bmp"
IDB_TE_GREEN_BLUE_ARROW BITMAP "res\\te_green_blue_arrow.bmp" IDB_TE_GREEN_BLUE_ARROW BITMAP "res\\te_green_blue_arrow.bmp"
IDB_PIANO_0 BITMAP "res\\te_piano_0.bmp" IDB_PIANO_0 BITMAP "res\\te_piano_0.bmp"
IDB_PIANO_1 BITMAP "res\\te_piano_1.bmp" IDB_PIANO_1 BITMAP "res\\te_piano_1.bmp"
IDB_PIANO_2 BITMAP "res\\te_piano_2.bmp" IDB_PIANO_2 BITMAP "res\\te_piano_2.bmp"
IDB_PIANO_3 BITMAP "res\\te_piano_3.bmp" IDB_PIANO_3 BITMAP "res\\te_piano_3.bmp"
IDB_PIANO_4 BITMAP "res\\te_piano_4.bmp" IDB_PIANO_4 BITMAP "res\\te_piano_4.bmp"
IDB_PIANO_5 BITMAP "res\\te_piano_5.bmp" IDB_PIANO_5 BITMAP "res\\te_piano_5.bmp"
IDB_PIANO_6 BITMAP "res\\te_piano_6.bmp" IDB_PIANO_6 BITMAP "res\\te_piano_6.bmp"
IDB_PIANO_7 BITMAP "res\\te_piano_7.bmp" IDB_PIANO_7 BITMAP "res\\te_piano_7.bmp"
IDB_PIANO_8 BITMAP "res\\te_piano_8.bmp" IDB_PIANO_8 BITMAP "res\\te_piano_8.bmp"
IDB_PIANO_9 BITMAP "res\\te_piano_9.bmp" IDB_PIANO_9 BITMAP "res\\te_piano_9.bmp"
IDB_PIANO_10 BITMAP "res\\te_piano_10.bmp" IDB_PIANO_10 BITMAP "res\\te_piano_10.bmp"
IDB_PIANO_11 BITMAP "res\\te_piano_11.bmp" IDB_PIANO_11 BITMAP "res\\te_piano_11.bmp"
IDB_PIANO_12 BITMAP "res\\te_piano_12.bmp" IDB_PIANO_12 BITMAP "res\\te_piano_12.bmp"
IDB_PIANO_13 BITMAP "res\\te_piano_13.bmp" IDB_PIANO_13 BITMAP "res\\te_piano_13.bmp"
IDB_PIANO_14 BITMAP "res\\te_piano_14.bmp" IDB_PIANO_14 BITMAP "res\\te_piano_14.bmp"
IDB_PIANO_15 BITMAP "res\\te_piano_15.bmp" IDB_PIANO_15 BITMAP "res\\te_piano_15.bmp"
IDB_PIANO_16 BITMAP "res\\te_piano_16.bmp" IDB_PIANO_16 BITMAP "res\\te_piano_16.bmp"
IDB_PIANO_17 BITMAP "res\\te_piano_17.bmp" IDB_PIANO_17 BITMAP "res\\te_piano_17.bmp"
IDB_PIANO_18 BITMAP "res\\te_piano_18.bmp" IDB_PIANO_18 BITMAP "res\\te_piano_18.bmp"
IDB_PIANO_19 BITMAP "res\\te_piano_19.bmp" IDB_PIANO_19 BITMAP "res\\te_piano_19.bmp"
IDB_PIANO_PLAYBACK_0 BITMAP "res\\te_piano_0_playback.bmp" IDB_PIANO_PLAYBACK_0 BITMAP "res\\te_piano_0_playback.bmp"
IDB_PIANO_PLAYBACK_1 BITMAP "res\\te_piano_1_playback.bmp" IDB_PIANO_PLAYBACK_1 BITMAP "res\\te_piano_1_playback.bmp"
IDB_PIANO_PLAYBACK_2 BITMAP "res\\te_piano_2_playback.bmp" IDB_PIANO_PLAYBACK_2 BITMAP "res\\te_piano_2_playback.bmp"
IDB_PIANO_PLAYBACK_3 BITMAP "res\\te_piano_3_playback.bmp" IDB_PIANO_PLAYBACK_3 BITMAP "res\\te_piano_3_playback.bmp"
IDB_PIANO_PLAYBACK_4 BITMAP "res\\te_piano_4_playback.bmp" IDB_PIANO_PLAYBACK_4 BITMAP "res\\te_piano_4_playback.bmp"
IDB_PIANO_PLAYBACK_5 BITMAP "res\\te_piano_5_playback.bmp" IDB_PIANO_PLAYBACK_5 BITMAP "res\\te_piano_5_playback.bmp"
IDB_PIANO_PLAYBACK_6 BITMAP "res\\te_piano_6_playback.bmp" IDB_PIANO_PLAYBACK_6 BITMAP "res\\te_piano_6_playback.bmp"
IDB_PIANO_PLAYBACK_7 BITMAP "res\\te_piano_7_playback.bmp" IDB_PIANO_PLAYBACK_7 BITMAP "res\\te_piano_7_playback.bmp"
IDB_PIANO_PLAYBACK_8 BITMAP "res\\te_piano_8_playback.bmp" IDB_PIANO_PLAYBACK_8 BITMAP "res\\te_piano_8_playback.bmp"
IDB_PIANO_PLAYBACK_9 BITMAP "res\\te_piano_9_playback.bmp" IDB_PIANO_PLAYBACK_9 BITMAP "res\\te_piano_9_playback.bmp"
IDB_PIANO_PLAYBACK_10 BITMAP "res\\te_piano_10_playback.bmp" IDB_PIANO_PLAYBACK_10 BITMAP "res\\te_piano_10_playback.bmp"
IDB_PIANO_PLAYBACK_11 BITMAP "res\\te_piano_11_playback.bmp" IDB_PIANO_PLAYBACK_11 BITMAP "res\\te_piano_11_playback.bmp"
IDB_PIANO_PLAYBACK_12 BITMAP "res\\te_piano_12_playback.bmp" IDB_PIANO_PLAYBACK_12 BITMAP "res\\te_piano_12_playback.bmp"
IDB_PIANO_PLAYBACK_13 BITMAP "res\\te_piano_13_playback.bmp" IDB_PIANO_PLAYBACK_13 BITMAP "res\\te_piano_13_playback.bmp"
IDB_PIANO_PLAYBACK_14 BITMAP "res\\te_piano_14_playback.bmp" IDB_PIANO_PLAYBACK_14 BITMAP "res\\te_piano_14_playback.bmp"
IDB_PIANO_PLAYBACK_15 BITMAP "res\\te_piano_15_playback.bmp" IDB_PIANO_PLAYBACK_15 BITMAP "res\\te_piano_15_playback.bmp"
IDB_PIANO_PLAYBACK_16 BITMAP "res\\te_piano_16_playback.bmp" IDB_PIANO_PLAYBACK_16 BITMAP "res\\te_piano_16_playback.bmp"
IDB_PIANO_PLAYBACK_17 BITMAP "res\\te_piano_17_playback.bmp" IDB_PIANO_PLAYBACK_17 BITMAP "res\\te_piano_17_playback.bmp"
IDB_PIANO_PLAYBACK_18 BITMAP "res\\te_piano_18_playback.bmp" IDB_PIANO_PLAYBACK_18 BITMAP "res\\te_piano_18_playback.bmp"
IDB_PIANO_PLAYBACK_19 BITMAP "res\\te_piano_19_playback.bmp" IDB_PIANO_PLAYBACK_19 BITMAP "res\\te_piano_19_playback.bmp"
IDB_PIANO_LOSTPOS_0 BITMAP "res\\te_piano_0_lostpos.bmp" IDB_PIANO_LOSTPOS_0 BITMAP "res\\te_piano_0_lostpos.bmp"
IDB_PIANO_LOSTPOS_1 BITMAP "res\\te_piano_1_lostpos.bmp" IDB_PIANO_LOSTPOS_1 BITMAP "res\\te_piano_1_lostpos.bmp"
IDB_PIANO_LOSTPOS_2 BITMAP "res\\te_piano_2_lostpos.bmp" IDB_PIANO_LOSTPOS_2 BITMAP "res\\te_piano_2_lostpos.bmp"
IDB_PIANO_LOSTPOS_3 BITMAP "res\\te_piano_3_lostpos.bmp" IDB_PIANO_LOSTPOS_3 BITMAP "res\\te_piano_3_lostpos.bmp"
IDB_PIANO_LOSTPOS_4 BITMAP "res\\te_piano_4_lostpos.bmp" IDB_PIANO_LOSTPOS_4 BITMAP "res\\te_piano_4_lostpos.bmp"
IDB_PIANO_LOSTPOS_5 BITMAP "res\\te_piano_5_lostpos.bmp" IDB_PIANO_LOSTPOS_5 BITMAP "res\\te_piano_5_lostpos.bmp"
IDB_PIANO_LOSTPOS_6 BITMAP "res\\te_piano_6_lostpos.bmp" IDB_PIANO_LOSTPOS_6 BITMAP "res\\te_piano_6_lostpos.bmp"
IDB_PIANO_LOSTPOS_7 BITMAP "res\\te_piano_7_lostpos.bmp" IDB_PIANO_LOSTPOS_7 BITMAP "res\\te_piano_7_lostpos.bmp"
IDB_PIANO_LOSTPOS_8 BITMAP "res\\te_piano_8_lostpos.bmp" IDB_PIANO_LOSTPOS_8 BITMAP "res\\te_piano_8_lostpos.bmp"
IDB_PIANO_LOSTPOS_9 BITMAP "res\\te_piano_9_lostpos.bmp" IDB_PIANO_LOSTPOS_9 BITMAP "res\\te_piano_9_lostpos.bmp"
IDB_PIANO_LOSTPOS_10 BITMAP "res\\te_piano_10_lostpos.bmp" IDB_PIANO_LOSTPOS_10 BITMAP "res\\te_piano_10_lostpos.bmp"
IDB_PIANO_LOSTPOS_11 BITMAP "res\\te_piano_11_lostpos.bmp" IDB_PIANO_LOSTPOS_11 BITMAP "res\\te_piano_11_lostpos.bmp"
IDB_PIANO_LOSTPOS_12 BITMAP "res\\te_piano_12_lostpos.bmp" IDB_PIANO_LOSTPOS_12 BITMAP "res\\te_piano_12_lostpos.bmp"
IDB_PIANO_LOSTPOS_13 BITMAP "res\\te_piano_13_lostpos.bmp" IDB_PIANO_LOSTPOS_13 BITMAP "res\\te_piano_13_lostpos.bmp"
IDB_PIANO_LOSTPOS_14 BITMAP "res\\te_piano_14_lostpos.bmp" IDB_PIANO_LOSTPOS_14 BITMAP "res\\te_piano_14_lostpos.bmp"
IDB_PIANO_LOSTPOS_15 BITMAP "res\\te_piano_15_lostpos.bmp" IDB_PIANO_LOSTPOS_15 BITMAP "res\\te_piano_15_lostpos.bmp"
IDB_PIANO_LOSTPOS_16 BITMAP "res\\te_piano_16_lostpos.bmp" IDB_PIANO_LOSTPOS_16 BITMAP "res\\te_piano_16_lostpos.bmp"
IDB_PIANO_LOSTPOS_17 BITMAP "res\\te_piano_17_lostpos.bmp" IDB_PIANO_LOSTPOS_17 BITMAP "res\\te_piano_17_lostpos.bmp"
IDB_PIANO_LOSTPOS_18 BITMAP "res\\te_piano_18_lostpos.bmp" IDB_PIANO_LOSTPOS_18 BITMAP "res\\te_piano_18_lostpos.bmp"
IDB_PIANO_LOSTPOS_19 BITMAP "res\\te_piano_19_lostpos.bmp" IDB_PIANO_LOSTPOS_19 BITMAP "res\\te_piano_19_lostpos.bmp"
IDB_BITMAP_SELECTED0 BITMAP "res\\te_0_selected.bmp" IDB_BITMAP_SELECTED0 BITMAP "res\\te_0_selected.bmp"
IDB_BITMAP_SELECTED1 BITMAP "res\\te_1_selected.bmp" IDB_BITMAP_SELECTED1 BITMAP "res\\te_1_selected.bmp"
IDB_BITMAP_SELECTED2 BITMAP "res\\te_2_selected.bmp" IDB_BITMAP_SELECTED2 BITMAP "res\\te_2_selected.bmp"
IDB_BITMAP_SELECTED3 BITMAP "res\\te_3_selected.bmp" IDB_BITMAP_SELECTED3 BITMAP "res\\te_3_selected.bmp"
IDB_BITMAP_SELECTED4 BITMAP "res\\te_4_selected.bmp" IDB_BITMAP_SELECTED4 BITMAP "res\\te_4_selected.bmp"
IDB_BITMAP_SELECTED5 BITMAP "res\\te_5_selected.bmp" IDB_BITMAP_SELECTED5 BITMAP "res\\te_5_selected.bmp"
IDB_BITMAP_SELECTED6 BITMAP "res\\te_6_selected.bmp" IDB_BITMAP_SELECTED6 BITMAP "res\\te_6_selected.bmp"
IDB_BITMAP_SELECTED7 BITMAP "res\\te_7_selected.bmp" IDB_BITMAP_SELECTED7 BITMAP "res\\te_7_selected.bmp"
IDB_BITMAP_SELECTED8 BITMAP "res\\te_8_selected.bmp" IDB_BITMAP_SELECTED8 BITMAP "res\\te_8_selected.bmp"
IDB_BITMAP_SELECTED9 BITMAP "res\\te_9_selected.bmp" IDB_BITMAP_SELECTED9 BITMAP "res\\te_9_selected.bmp"
IDB_BITMAP_SELECTED10 BITMAP "res\\te_10_selected.bmp" IDB_BITMAP_SELECTED10 BITMAP "res\\te_10_selected.bmp"
IDB_BITMAP_SELECTED11 BITMAP "res\\te_11_selected.bmp" IDB_BITMAP_SELECTED11 BITMAP "res\\te_11_selected.bmp"
IDB_BITMAP_SELECTED12 BITMAP "res\\te_12_selected.bmp" IDB_BITMAP_SELECTED12 BITMAP "res\\te_12_selected.bmp"
IDB_BITMAP_SELECTED13 BITMAP "res\\te_13_selected.bmp" IDB_BITMAP_SELECTED13 BITMAP "res\\te_13_selected.bmp"
IDB_BITMAP_SELECTED14 BITMAP "res\\te_14_selected.bmp" IDB_BITMAP_SELECTED14 BITMAP "res\\te_14_selected.bmp"
IDB_BITMAP_SELECTED15 BITMAP "res\\te_15_selected.bmp" IDB_BITMAP_SELECTED15 BITMAP "res\\te_15_selected.bmp"
IDB_BITMAP_SELECTED16 BITMAP "res\\te_16_selected.bmp" IDB_BITMAP_SELECTED16 BITMAP "res\\te_16_selected.bmp"
IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp"
IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp"
IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp"
IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
#endif // English (United States) resources #endif // English (United States) resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////

View File

@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}} //{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file. // Microsoft Visual C++ generated include file.
// Used for res.rc // Used by res.rc
// //
#define CLOSE_BUTTON 1 #define CLOSE_BUTTON 1
#define BUTTON_CLOSE 1 #define BUTTON_CLOSE 1
@ -867,6 +867,7 @@
#define IDC_BINARY 1317 #define IDC_BINARY 1317
#define IDC_GAME_GENIE_ADDR 1501 #define IDC_GAME_GENIE_ADDR 1501
#define MENU_INESHEADEREDITOR 40001 #define MENU_INESHEADEREDITOR 40001
#define MENU_INPUT_BARCODE 40004
#define MENU_NETWORK 40040 #define MENU_NETWORK 40040
#define MENU_PALETTE 40041 #define MENU_PALETTE 40041
#define MENU_SOUND 40042 #define MENU_SOUND 40042
@ -1163,7 +1164,7 @@
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 306 #define _APS_NEXT_RESOURCE_VALUE 306
#define _APS_NEXT_COMMAND_VALUE 40002 #define _APS_NEXT_COMMAND_VALUE 40005
#define _APS_NEXT_CONTROL_VALUE 1101 #define _APS_NEXT_CONTROL_VALUE 1101
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif

View File

@ -148,6 +148,7 @@ int menuYoffset = 0;
bool wasPausedByCheats = false; //For unpausing the emulator if paused by the cheats dialog bool wasPausedByCheats = false; //For unpausing the emulator if paused by the cheats dialog
bool rightClickEnabled = true; //If set to false, the right click context menu will be disabled. bool rightClickEnabled = true; //If set to false, the right click context menu will be disabled.
bool fullscreenByDoubleclick = false; bool fullscreenByDoubleclick = false;
uint8 BWorldData[1 + 13 + 1];
//Function Prototypes //Function Prototypes
void ChangeMenuItemText(int menuitem, string text); //Alters a menu item name void ChangeMenuItemText(int menuitem, string text); //Alters a menu item name
@ -381,6 +382,7 @@ void updateGameDependentMenus()
MENU_SWITCH_DISK, MENU_SWITCH_DISK,
MENU_EJECT_DISK, MENU_EJECT_DISK,
MENU_RECORD_AVI, MENU_RECORD_AVI,
MENU_INPUT_BARCODE,
MENU_STOP_AVI, MENU_STOP_AVI,
MENU_RECORD_WAV, MENU_RECORD_WAV,
MENU_STOP_WAV, MENU_STOP_WAV,
@ -1930,6 +1932,22 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
case MENU_INSERT_COIN: case MENU_INSERT_COIN:
FCEUI_VSUniCoin(); FCEUI_VSUniCoin();
break; break;
case MENU_INPUT_BARCODE:
char bbuf[32 + 1];
if ((CWin32InputBox::GetString("Input Barcode", "Enter 13-digit decimal number.", bbuf, hWnd) == IDOK)) {
if (strlen(bbuf) == 13) {
if (InputType[2] == SIFC_BWORLD) {
strcpy((char *)&BWorldData[1], (char *)bbuf);
BWorldData[0] = 1;
}
else
FCEUI_DatachSet((uint8 *)bbuf);
FCEU_DispMessage("Barcode entered: %s", 0, bbuf);
}
else
FCEU_DispMessage("Wrong Barcode!", 0);
}
break;
//Emulation submenu //Emulation submenu
case ID_NES_PAUSE: case ID_NES_PAUSE:
@ -2521,6 +2539,7 @@ adelikat: Outsourced this to a remappable hotkey
EnableMenuItem(fceumenu,MENU_EJECT_DISK,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_EJECT_DISK)?MF_ENABLED:MF_GRAYED)); EnableMenuItem(fceumenu,MENU_EJECT_DISK,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_EJECT_DISK)?MF_ENABLED:MF_GRAYED));
EnableMenuItem(fceumenu,MENU_SWITCH_DISK,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_SWITCH_DISK)?MF_ENABLED:MF_GRAYED)); EnableMenuItem(fceumenu,MENU_SWITCH_DISK,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_SWITCH_DISK)?MF_ENABLED:MF_GRAYED));
EnableMenuItem(fceumenu,MENU_INSERT_COIN,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_INSERT_COIN)?MF_ENABLED:MF_GRAYED)); EnableMenuItem(fceumenu,MENU_INSERT_COIN,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_INSERT_COIN)?MF_ENABLED:MF_GRAYED));
EnableMenuItem(fceumenu,MENU_INPUT_BARCODE,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_INPUT_BARCODE)?MF_ENABLED:MF_GRAYED));
EnableMenuItem(fceumenu,MENU_TASEDITOR,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_TASEDITOR)?MF_ENABLED:MF_GRAYED)); EnableMenuItem(fceumenu,MENU_TASEDITOR,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_TASEDITOR)?MF_ENABLED:MF_GRAYED));
EnableMenuItem(fceumenu,MENU_CLOSE_FILE,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_CLOSEGAME) && GameInfo ?MF_ENABLED:MF_GRAYED)); EnableMenuItem(fceumenu,MENU_CLOSE_FILE,MF_BYCOMMAND | (FCEU_IsValidUI(FCEUI_CLOSEGAME) && GameInfo ?MF_ENABLED:MF_GRAYED));
EnableMenuItem(fceumenu,MENU_RECENT_FILES,MF_BYCOMMAND | ((FCEU_IsValidUI(FCEUI_OPENGAME) && HasRecentFiles()) ?MF_ENABLED:MF_GRAYED)); //adelikat - added && recent_files, otherwise this line prevents recent from ever being gray when TAS Editor is not engaged EnableMenuItem(fceumenu,MENU_RECENT_FILES,MF_BYCOMMAND | ((FCEU_IsValidUI(FCEUI_OPENGAME) && HasRecentFiles()) ?MF_ENABLED:MF_GRAYED)); //adelikat - added && recent_files, otherwise this line prevents recent from ever being gray when TAS Editor is not engaged