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_WRITE 4
static uint8 x24c0x_data[256], x24c0x_state;
static uint8 x24c0x_addr, x24c0x_word, x24c0x_latch, x24c0x_bitcount;
static uint8 x24c0x_sda, x24c0x_scl, x24c0x_out, x24c0x_oe;
static uint8 x24c0x_data[512];
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" },
{ &x24c0x_word, 1, "WORD" },
{ &x24c0x_latch, 1, "LATC" },
{ &x24c0x_bitcount, 1, "BITC" },
{ &x24c0x_sda, 1, "SDA" },
{ &x24c0x_scl, 1, "SCL" },
{ &x24c0x_out, 1, "OUT" },
{ &x24c0x_oe, 1, "OE" },
{ &x24c0x_state, 1, "STAT" },
{ &x24c01_addr, 1, "ADDR" },
{ &x24c01_word, 1, "WORD" },
{ &x24c01_latch, 1, "LATC" },
{ &x24c01_bitcount, 1, "BITC" },
{ &x24c01_sda, 1, "SDA" },
{ &x24c01_scl, 1, "SCL" },
{ &x24c01_out, 1, "OUT" },
{ &x24c01_state, 1, "STAT" },
{ 0 }
};
static void x24c0x_init() {
x24c0x_addr = x24c0x_word = x24c0x_latch = x24c0x_bitcount = x24c0x_sda = x24c0x_scl = x24c0x_oe = 0;
x24c0x_state = X24C0X_STANDBY;
static SFORMAT x24c02StateRegs[] =
{
{ &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) {
uint8 sda = (data >> 6) & 1;
uint8 scl = (data >> 5) & 1;
x24c0x_oe = (data >> 7);
static void x24c02_init() {
x24c02_addr = x24c02_word = x24c02_latch = x24c02_bitcount = x24c02_sda = x24c02_scl = 0;
x24c02_state = X24C0X_STANDBY;
}
if(x24c0x_scl && scl) {
if(x24c0x_sda && !sda) { // START
x24c0x_state = X24C0X_ADDRESS;
x24c0x_bitcount = 0;
x24c0x_addr = 0;
} else if(!x24c0x_sda && sda) { //STOP
x24c0x_state = X24C0X_STANDBY;
static void x24c01_write(uint8 data) {
uint8 scl = (data >> 5) & 1;
uint8 sda = (data >> 6) & 1;
if(x24c01_scl && scl) {
if(x24c01_sda && !sda) { // START
x24c01_state = X24C0X_ADDRESS;
x24c01_bitcount = 0;
x24c01_addr = 0;
} else if(!x24c01_sda && sda) { //STOP
x24c01_state = X24C0X_STANDBY;
}
} else if(!x24c0x_scl && scl) { // RISING EDGE
switch(x24c0x_state) {
} else if(!x24c01_scl && scl) { // RISING EDGE
switch(x24c01_state) {
case X24C0X_ADDRESS:
if(x24c0x_bitcount < 7) {
x24c0x_addr <<= 1;
x24c0x_addr |= sda;
if(x24c01_bitcount < 7) {
x24c01_addr <<= 1;
x24c01_addr |= sda;
} else {
if(!x24c02) // X24C01 mode
x24c0x_word = x24c0x_addr;
if(sda) { // READ COMMAND
x24c0x_state = X24C0X_READ;
} else { // WRITE COMMAND
if(x24c02) // X24C02 mode
x24c0x_state = X24C0X_WORD;
else
x24c0x_state = X24C0X_WRITE;
x24c01_word = x24c01_addr;
if(sda) // READ COMMAND
x24c01_state = X24C0X_READ;
else // WRITE COMMAND
x24c01_state = X24C0X_WRITE;
}
}
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++;
x24c01_bitcount++;
break;
case X24C0X_READ:
if (x24c0x_bitcount == 8) { // ACK
x24c0x_out = 0;
x24c0x_latch = x24c0x_data[x24c0x_word];
x24c0x_bitcount = 0;
if (x24c01_bitcount == 8) { // ACK
x24c01_out = 0;
x24c01_latch = x24c0x_data[x24c01_word];
x24c01_bitcount = 0;
} else { // REAL OUTPUT
x24c0x_out = x24c0x_latch >> 7;
x24c0x_latch <<= 1;
x24c0x_bitcount++;
if(x24c0x_bitcount == 8) {
x24c0x_word++;
x24c0x_word &= 0xff;
x24c01_out = x24c01_latch >> 7;
x24c01_latch <<= 1;
x24c01_bitcount++;
if(x24c01_bitcount == 8) {
x24c01_word++;
x24c01_word &= 0xff;
}
}
break;
case X24C0X_WRITE:
if (x24c0x_bitcount == 8) { // ACK
x24c0x_out = 0;
x24c0x_latch = 0;
x24c0x_bitcount = 0;
if (x24c01_bitcount == 8) { // ACK
x24c01_out = 0;
x24c01_latch = 0;
x24c01_bitcount = 0;
} else { // REAL INPUT
x24c0x_latch <<= 1;
x24c0x_latch |= sda;
x24c0x_bitcount++;
if(x24c0x_bitcount == 8) {
x24c0x_data[x24c0x_word] = x24c0x_latch;
x24c0x_word++;
x24c0x_word &= 0xff;
x24c01_latch <<= 1;
x24c01_latch |= sda;
x24c01_bitcount++;
if(x24c01_bitcount == 8) {
x24c0x_data[x24c01_word] = x24c01_latch;
x24c01_word++;
x24c01_word &= 0xff;
}
}
break;
}
}
x24c0x_sda = sda;
x24c0x_scl = scl;
x24c01_sda = sda;
x24c01_scl = scl;
}
static uint8 x24c0x_read() {
return x24c0x_out << 4;
static void x24c02_write(uint8 data) {
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) {
if (is153) {
int base = (reg[0] & 1) << 4;
@ -174,12 +259,7 @@ static void Sync(void) {
setprg16(0x8000, reg[8]);
setprg16(0xC000, ~0);
}
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;
}
SyncMirror();
}
static DECLFW(BandaiWrite) {
@ -192,12 +272,15 @@ static DECLFW(BandaiWrite) {
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: x24c0x_write(V); break;
case 0x0D: if(x24c02) x24c02_write(V); else x24c01_write(V); break;
}
}
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) {
@ -213,11 +296,14 @@ static void BandaiIRQHook(int a) {
static void BandaiPower(void) {
IRQa = 0;
x24c0x_init();
if(x24c02)
x24c02_init();
else
x24c01_init();
Sync();
SetReadHandler(0x6000, 0x7FFF, BandaiRead);
SetReadHandler(0x8000, 0xFFFF, CartBR);
SetWriteHandler(0x6000, 0xFFFF, BandaiWrite);
SetWriteHandler(0x8000, 0xFFFF, BandaiWrite);
}
static void StateRestore(int version) {
@ -231,12 +317,12 @@ void Mapper16_Init(CartInfo *info) {
MapIRQHook = BandaiIRQHook;
info->battery = 1;
info->SaveGame[0] = x24c0x_data;
info->SaveGame[0] = x24c0x_data + 256;
info->SaveGameLen[0] = 256;
AddExState(x24c0x_data, 256, 0, "DATA");
AddExState(&x24c02StateRegs, ~0, 0, 0);
GameStateRestore = StateRestore;
AddExState(&x24c0xStateRegs, ~0, 0, 0);
AddExState(&StateRegs, ~0, 0, 0);
}
@ -250,9 +336,9 @@ void Mapper159_Init(CartInfo *info) {
info->SaveGame[0] = x24c0x_data;
info->SaveGameLen[0] = 128;
AddExState(x24c0x_data, 128, 0, "DATA");
AddExState(&x24c01StateRegs, ~0, 0, 0);
GameStateRestore = StateRestore;
AddExState(&x24c0xStateRegs, ~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++
for (j = 0; j < 32; j++) {
for (j = 0; j < 32; j++) { // delay before sending a code
BS(0x00);
}
@ -419,6 +505,26 @@ int FCEUI_DatachSet(const uint8 *rcode) {
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) {
BandaiIRQHook(a);
@ -436,7 +542,7 @@ static void BarcodeIRQHook(int a) {
}
static DECLFR(BarcodeRead) {
return BarcodeOut;
return (X.DB & 0xE7) | ((x24c02_out | x24c01_out) << 4) | BarcodeOut;
}
static void M157Power(void) {
@ -446,20 +552,29 @@ static void M157Power(void) {
BarcodeOut = 0;
BarcodeCycleCount = 0;
Sync();
x24c01_init();
x24c02_init();
BarcodeSync();
SetWriteHandler(0x6000, 0xFFFF, BandaiWrite);
SetReadHandler(0x6000, 0x7FFF, BarcodeRead);
SetReadHandler(0x8000, 0xFFFF, CartBR);
SetWriteHandler(0x8000, 0xFFFF, BarcodeWrite);
}
void Mapper157_Init(CartInfo *info) {
is153 = 1;
x24c02 = 1;
info->Power = M157Power;
MapIRQHook = BarcodeIRQHook;
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;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

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

View File

@ -921,7 +921,7 @@ inline void FCEUI_CreateCheatMap()
inline void FCEUI_RefreshCheatMap()
{
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);
}

View File

@ -342,7 +342,7 @@ enum EFCEUI
FCEUI_STOPMOVIE, FCEUI_RECORDMOVIE, FCEUI_PLAYMOVIE,
FCEUI_OPENGAME, FCEUI_CLOSEGAME,
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
};

View File

@ -246,6 +246,29 @@ INT_PTR CWin32InputBox::GetInteger(
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()
{
// Set the button captions

View File

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

View File

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

View File

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

View File

@ -50,10 +50,14 @@ END
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON3 ICON "res/taseditor-icon.ico"
IDI_ICON4 ICON "res/taseditor-icon32.ico"
ICON_1 ICON "res/ICON_1.ico"
ICON_2 ICON "res/ICON_2.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
@ -133,6 +137,7 @@ BEGIN
MENUITEM "&Eject/Insert Disk", MENU_EJECT_DISK
MENUITEM "&Switch Disk Side", MENU_SWITCH_DISK
MENUITEM "&Insert Coin", MENU_INSERT_COIN
MENUITEM "Input &Barcode", MENU_INPUT_BARCODE
MENUITEM SEPARATOR
POPUP "E&mulation Speed"
BEGIN
@ -1086,20 +1091,20 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,177,97,56,14
GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP
PUSHBUTTON "Up", 304, 40,36,30,12
PUSHBUTTON "Left", 306, 10,50,30,12
PUSHBUTTON "Right", 307, 70,50,30,12
PUSHBUTTON "Down", 305, 40,64,30,12
PUSHBUTTON "Select",302, 46,19,32,12
PUSHBUTTON "Start", 303, 82,19,32,12
PUSHBUTTON "Left", 301,140,50,30,12
PUSHBUTTON "Down", 300,170,64,30,12
PUSHBUTTON "Right", 308,200,50,30,12
PUSHBUTTON "Up", 309,170,36,30,12
PUSHBUTTON "L", 310, 10,19,32,12
PUSHBUTTON "R", 311,198,19,32,12
PUSHBUTTON "B", 312,126,19,32,12
PUSHBUTTON "A", 313,162,19,32,12
PUSHBUTTON "Up",304,40,36,30,12
PUSHBUTTON "Left",306,10,50,30,12
PUSHBUTTON "Right",307,70,50,30,12
PUSHBUTTON "Down",305,40,64,30,12
PUSHBUTTON "Select",302,46,19,32,12
PUSHBUTTON "Start",303,82,19,32,12
PUSHBUTTON "Left",301,140,50,30,12
PUSHBUTTON "Down",300,170,64,30,12
PUSHBUTTON "Right",308,200,50,30,12
PUSHBUTTON "Up",309,170,36,30,12
PUSHBUTTON "L",310,10,19,32,12
PUSHBUTTON "R",311,198,19,32,12
PUSHBUTTON "B",312,126,19,32,12
PUSHBUTTON "A",313,162,19,32,12
END
QUIZKINGDIALOG DIALOG 30, 123, 160, 74
@ -2859,109 +2864,213 @@ END
//
IDB_BITMAP0 BITMAP "res\\te_0.bmp"
IDB_BITMAP1 BITMAP "res\\te_1.bmp"
IDB_BITMAP2 BITMAP "res\\te_2.bmp"
IDB_BITMAP3 BITMAP "res\\te_3.bmp"
IDB_BITMAP4 BITMAP "res\\te_4.bmp"
IDB_BITMAP5 BITMAP "res\\te_5.bmp"
IDB_BITMAP6 BITMAP "res\\te_6.bmp"
IDB_BITMAP7 BITMAP "res\\te_7.bmp"
IDB_BITMAP8 BITMAP "res\\te_8.bmp"
IDB_BITMAP9 BITMAP "res\\te_9.bmp"
IDB_BITMAP10 BITMAP "res\\te_10.bmp"
IDB_BITMAP11 BITMAP "res\\te_11.bmp"
IDB_BITMAP12 BITMAP "res\\te_12.bmp"
IDB_BITMAP13 BITMAP "res\\te_13.bmp"
IDB_BITMAP14 BITMAP "res\\te_14.bmp"
IDB_BITMAP15 BITMAP "res\\te_15.bmp"
IDB_BITMAP16 BITMAP "res\\te_16.bmp"
IDB_BITMAP17 BITMAP "res\\te_17.bmp"
IDB_BITMAP18 BITMAP "res\\te_18.bmp"
IDB_BITMAP19 BITMAP "res\\te_19.bmp"
IDB_TE_ARROW BITMAP "res\\te_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_PIANO_0 BITMAP "res\\te_piano_0.bmp"
IDB_PIANO_1 BITMAP "res\\te_piano_1.bmp"
IDB_PIANO_2 BITMAP "res\\te_piano_2.bmp"
IDB_PIANO_3 BITMAP "res\\te_piano_3.bmp"
IDB_PIANO_4 BITMAP "res\\te_piano_4.bmp"
IDB_PIANO_5 BITMAP "res\\te_piano_5.bmp"
IDB_PIANO_6 BITMAP "res\\te_piano_6.bmp"
IDB_PIANO_7 BITMAP "res\\te_piano_7.bmp"
IDB_PIANO_8 BITMAP "res\\te_piano_8.bmp"
IDB_PIANO_9 BITMAP "res\\te_piano_9.bmp"
IDB_PIANO_10 BITMAP "res\\te_piano_10.bmp"
IDB_PIANO_11 BITMAP "res\\te_piano_11.bmp"
IDB_PIANO_12 BITMAP "res\\te_piano_12.bmp"
IDB_PIANO_13 BITMAP "res\\te_piano_13.bmp"
IDB_PIANO_14 BITMAP "res\\te_piano_14.bmp"
IDB_PIANO_15 BITMAP "res\\te_piano_15.bmp"
IDB_PIANO_16 BITMAP "res\\te_piano_16.bmp"
IDB_PIANO_17 BITMAP "res\\te_piano_17.bmp"
IDB_PIANO_18 BITMAP "res\\te_piano_18.bmp"
IDB_PIANO_19 BITMAP "res\\te_piano_19.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_2 BITMAP "res\\te_piano_2_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_5 BITMAP "res\\te_piano_5_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_8 BITMAP "res\\te_piano_8_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_11 BITMAP "res\\te_piano_11_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_14 BITMAP "res\\te_piano_14_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_17 BITMAP "res\\te_piano_17_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_LOSTPOS_0 BITMAP "res\\te_piano_0_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_3 BITMAP "res\\te_piano_3_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_6 BITMAP "res\\te_piano_6_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_9 BITMAP "res\\te_piano_9_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_12 BITMAP "res\\te_piano_12_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_15 BITMAP "res\\te_piano_15_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_18 BITMAP "res\\te_piano_18_lostpos.bmp"
IDB_PIANO_LOSTPOS_19 BITMAP "res\\te_piano_19_lostpos.bmp"
IDB_BITMAP_SELECTED0 BITMAP "res\\te_0_selected.bmp"
IDB_BITMAP_SELECTED1 BITMAP "res\\te_1_selected.bmp"
IDB_BITMAP_SELECTED2 BITMAP "res\\te_2_selected.bmp"
IDB_BITMAP_SELECTED3 BITMAP "res\\te_3_selected.bmp"
IDB_BITMAP_SELECTED4 BITMAP "res\\te_4_selected.bmp"
IDB_BITMAP_SELECTED5 BITMAP "res\\te_5_selected.bmp"
IDB_BITMAP_SELECTED6 BITMAP "res\\te_6_selected.bmp"
IDB_BITMAP_SELECTED7 BITMAP "res\\te_7_selected.bmp"
IDB_BITMAP_SELECTED8 BITMAP "res\\te_8_selected.bmp"
IDB_BITMAP_SELECTED9 BITMAP "res\\te_9_selected.bmp"
IDB_BITMAP_SELECTED10 BITMAP "res\\te_10_selected.bmp"
IDB_BITMAP_SELECTED11 BITMAP "res\\te_11_selected.bmp"
IDB_BITMAP_SELECTED12 BITMAP "res\\te_12_selected.bmp"
IDB_BITMAP_SELECTED13 BITMAP "res\\te_13_selected.bmp"
IDB_BITMAP_SELECTED14 BITMAP "res\\te_14_selected.bmp"
IDB_BITMAP_SELECTED15 BITMAP "res\\te_15_selected.bmp"
IDB_BITMAP_SELECTED16 BITMAP "res\\te_16_selected.bmp"
IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp"
IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp"
IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp"
IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////

View File

@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used for res.rc
// Used by res.rc
//
#define CLOSE_BUTTON 1
#define BUTTON_CLOSE 1
@ -867,6 +867,7 @@
#define IDC_BINARY 1317
#define IDC_GAME_GENIE_ADDR 1501
#define MENU_INESHEADEREDITOR 40001
#define MENU_INPUT_BARCODE 40004
#define MENU_NETWORK 40040
#define MENU_PALETTE 40041
#define MENU_SOUND 40042
@ -1163,7 +1164,7 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#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_SYMED_VALUE 101
#endif

View File

@ -148,6 +148,7 @@ int menuYoffset = 0;
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 fullscreenByDoubleclick = false;
uint8 BWorldData[1 + 13 + 1];
//Function Prototypes
void ChangeMenuItemText(int menuitem, string text); //Alters a menu item name
@ -381,6 +382,7 @@ void updateGameDependentMenus()
MENU_SWITCH_DISK,
MENU_EJECT_DISK,
MENU_RECORD_AVI,
MENU_INPUT_BARCODE,
MENU_STOP_AVI,
MENU_RECORD_WAV,
MENU_STOP_WAV,
@ -1930,6 +1932,22 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
case MENU_INSERT_COIN:
FCEUI_VSUniCoin();
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
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_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_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_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