parent
578a10398a
commit
36deb4a060
|
@ -701,6 +701,7 @@ INLINE void renderline_textBG(GPU * gpu, u8 num, u8 * dst, u32 Y, u16 XBG, u16 Y
|
|||
u16 yoff;
|
||||
u16 x = 0;
|
||||
u16 xfin;
|
||||
u16 palette_size;
|
||||
|
||||
s8 line_dir = 1;
|
||||
u8 pt_xor = 0;
|
||||
|
@ -812,51 +813,26 @@ INLINE void renderline_textBG(GPU * gpu, u8 num, u8 * dst, u32 Y, u16 XBG, u16 Y
|
|||
}
|
||||
return;
|
||||
}
|
||||
if(!gpu->dispCnt.bits.ExBGxPalette_Enable) /* color: no extended palette */
|
||||
|
||||
palette_size=0; /* color: no extended palette */
|
||||
if(gpu->dispCnt.bits.ExBGxPalette_Enable) /* color: extended palette */
|
||||
{
|
||||
yoff = ((YBG&7)<<3);
|
||||
xfin = 8 - (xoff&7);
|
||||
for(x = 0; x < LG; xfin = min(x+8, LG))
|
||||
{
|
||||
tmp = (xoff & (lg-1))>>3;
|
||||
mapinfo = map + (tmp & 31) * 2;
|
||||
if(tmp > 31) mapinfo += 32*32*2;
|
||||
tileentry.val = T1ReadWord(mapinfo, 0);
|
||||
|
||||
line = (u8 * )tile + (tileentry.bits.TileNum*0x40) + ((tileentry.bits.VFlip) ? (7*8)-yoff : yoff);
|
||||
|
||||
if(tileentry.bits.HFlip)
|
||||
{
|
||||
line += (7 - (xoff&7));
|
||||
line_dir = -1;
|
||||
} else {
|
||||
line += (xoff&7);
|
||||
line_dir = 1;
|
||||
}
|
||||
for(; x < xfin; )
|
||||
{
|
||||
RENDERL((*line),0)
|
||||
line += line_dir;
|
||||
}
|
||||
}
|
||||
return;
|
||||
palette_size=0x100;
|
||||
pal = ARM9Mem.ExtPal[gpu->core][gpu->BGExtPalSlot[num]];
|
||||
if(!pal) return;
|
||||
}
|
||||
|
||||
/* color: extended palette */
|
||||
pal = ARM9Mem.ExtPal[gpu->core][gpu->BGExtPalSlot[num]];
|
||||
if(!pal) return;
|
||||
|
||||
yoff = ((YBG&7)<<3);
|
||||
xfin = 8 - (xoff&7);
|
||||
for(x = 0; x < LG; xfin = min(x+8, LG))
|
||||
{
|
||||
tmp = ((xoff&(lg-1))>>3);
|
||||
mapinfo = map + (tmp & 0x1F) * 2;
|
||||
if(tmp>31) mapinfo += 32 * 32 * 2;
|
||||
tmp = (xoff & (lg-1))>>3;
|
||||
mapinfo = map + (tmp & 31) * 2;
|
||||
if(tmp > 31) mapinfo += 32*32*2;
|
||||
tileentry.val = T1ReadWord(mapinfo, 0);
|
||||
|
||||
line = (u8 * )tile + (tileentry.bits.TileNum*0x40) + ((tileentry.bits.VFlip)? (7*8)-yoff : yoff);
|
||||
|
||||
line = (u8 * )tile + (tileentry.bits.TileNum*0x40) + ((tileentry.bits.VFlip) ? (7*8)-yoff : yoff);
|
||||
|
||||
if(tileentry.bits.HFlip)
|
||||
{
|
||||
line += (7 - (xoff&7));
|
||||
|
@ -867,7 +843,7 @@ INLINE void renderline_textBG(GPU * gpu, u8 num, u8 * dst, u32 Y, u16 XBG, u16 Y
|
|||
}
|
||||
for(; x < xfin; )
|
||||
{
|
||||
RENDERL((*line),0x100)
|
||||
RENDERL((*line),palette_size)
|
||||
line += line_dir;
|
||||
}
|
||||
}
|
||||
|
@ -933,19 +909,15 @@ void rot_BMP_map(GPU * gpu, int num, s32 auxX, s32 auxY, int lg, u8 * dst, u8 *
|
|||
|
||||
typedef void (*rot_fun)(GPU * gpu, int num, s32 auxX, s32 auxY, int lg, u8 * dst, u8 * map, u8 * tile, u8 * pal , int i, u16 H);
|
||||
|
||||
INLINE void apply_rot_fun(GPU * gpu, u8 num, u8 * dst, u16 H, s32 X, s32 Y, s16 PA, s16 PB, s16 PC, s16 PD, u16 LG, rot_fun fun, u8 * map, u8 * tile, u8 * pal)
|
||||
INLINE void rot_scale_op(GPU * gpu, u8 num, u8 * dst, u16 H, s32 X, s32 Y, s16 PA, s16 PB, s16 PC, s16 PD, u16 LG, s32 wh, s32 ht, BOOL wrap, rot_fun fun, u8 * map, u8 * tile, u8 * pal)
|
||||
{
|
||||
ROTOCOORD x, y;
|
||||
struct _BGxCNT bgCnt = gpu->bgCnt[num].bits;
|
||||
|
||||
s32 dx = (s32)PA;
|
||||
s32 dy = (s32)PC;
|
||||
s32 lg = gpu->BGSize[num][0];
|
||||
s32 ht = gpu->BGSize[num][1];
|
||||
u32 i;
|
||||
s32 auxX, auxY;
|
||||
|
||||
if (!map) return;
|
||||
x.val = X + (s32)PB*(s32)H;
|
||||
y.val = Y + (s32)PD*(s32)H;
|
||||
|
||||
|
@ -956,21 +928,30 @@ INLINE void apply_rot_fun(GPU * gpu, u8 num, u8 * dst, u16 H, s32 X, s32 Y, s16
|
|||
auxX = x.bits.Integer;
|
||||
auxY = y.bits.Integer;
|
||||
|
||||
if(bgCnt.PaletteSet_Wrap)
|
||||
if(wrap)
|
||||
{
|
||||
// wrap
|
||||
auxX = auxX & (lg-1);
|
||||
auxX = auxX & (wh-1);
|
||||
auxY = auxY & (ht-1);
|
||||
}
|
||||
|
||||
if ((auxX >= 0) && (auxX < lg) && (auxY >= 0) && (auxY < ht))
|
||||
fun(gpu, num, auxX, auxY, lg, dst, map, tile, pal, i, H);
|
||||
if ((auxX >= 0) && (auxX < wh) && (auxY >= 0) && (auxY < ht))
|
||||
fun(gpu, num, auxX, auxY, wh, dst, map, tile, pal, i, H);
|
||||
dst += 2;
|
||||
x.val += dx;
|
||||
y.val += dy;
|
||||
}
|
||||
}
|
||||
|
||||
INLINE void apply_rot_fun(GPU * gpu, u8 num, u8 * dst, u16 H, s32 X, s32 Y, s16 PA, s16 PB, s16 PC, s16 PD, u16 LG, rot_fun fun, u8 * map, u8 * tile, u8 * pal)
|
||||
{
|
||||
struct _BGxCNT bgCnt = gpu->bgCnt[num].bits;
|
||||
s32 wh = gpu->BGSize[num][0];
|
||||
s32 ht = gpu->BGSize[num][1];
|
||||
rot_scale_op(gpu, num, dst, H, X, Y, PA, PB, PC, PD, LG, wh, ht, bgCnt.PaletteSet_Wrap, fun, map, tile, pal);
|
||||
}
|
||||
|
||||
|
||||
INLINE void rotBG2(GPU * gpu, u8 num, u8 * dst, u16 H, s32 X, s32 Y, s16 PA, s16 PB, s16 PC, s16 PD, u16 LG) {
|
||||
u8 * map = gpu->BG_map_ram[num];
|
||||
u8 * tile = (u8 *)gpu->BG_tile_ram[num];
|
||||
|
@ -1102,6 +1083,7 @@ INLINE void render_sprite_BMP (GPU * gpu, u16 l, u8 * dst, u16 * src,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
INLINE void render_sprite_256 (GPU * gpu, u16 l, u8 * dst, u8 * src, u16 * pal,
|
||||
u8 * prioTab, u8 prio, int lg, int sprX, int x, int xdir) {
|
||||
int i; u8 palette_entry; u16 color;
|
||||
|
|
|
@ -103,6 +103,14 @@ typedef struct {
|
|||
|
||||
extern MMU_struct MMU;
|
||||
|
||||
|
||||
static void mmu_select_savetype(int type, int *bmemtype, u32 *bmemsize) {
|
||||
if (type<0 || type > 5) return;
|
||||
*bmemtype=save_types[type][0];
|
||||
*bmemsize=save_types[type][1];
|
||||
mc_realloc(&MMU.bupmem, *bmemtype, *bmemsize);
|
||||
}
|
||||
|
||||
void MMUInit(void);
|
||||
void MMUDeInit(void);
|
||||
|
||||
|
|
|
@ -152,6 +152,13 @@ void on_savestate8_activate (GtkMenuItem *m, gpointer d) { update_savestate(8);
|
|||
void on_savestate9_activate (GtkMenuItem *m, gpointer d) { update_savestate(9); }
|
||||
void on_savestate10_activate(GtkMenuItem *m, gpointer d) { update_savestate(10); }
|
||||
|
||||
void on_savetype1_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(1); }
|
||||
void on_savetype2_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(2); }
|
||||
void on_savetype3_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(3); }
|
||||
void on_savetype4_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(4); }
|
||||
void on_savetype5_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(5); }
|
||||
void on_savetype6_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(6); }
|
||||
|
||||
|
||||
/* MENU EMULATION ***** ***** ***** ***** */
|
||||
void on_menu_exec_activate (GtkMenuItem *menuitem, gpointer user_data) { desmume_resume(); }
|
||||
|
|
|
@ -49,6 +49,12 @@ G_MODULE_EXPORT void on_savestate8_activate (GtkMenuItem *, gpointer );
|
|||
G_MODULE_EXPORT void on_savestate9_activate (GtkMenuItem *, gpointer );
|
||||
G_MODULE_EXPORT void on_savestate10_activate(GtkMenuItem *, gpointer );
|
||||
|
||||
G_MODULE_EXPORT void on_savetype1_activate (GtkMenuItem *, gpointer );
|
||||
G_MODULE_EXPORT void on_savetype2_activate (GtkMenuItem *, gpointer );
|
||||
G_MODULE_EXPORT void on_savetype3_activate (GtkMenuItem *, gpointer );
|
||||
G_MODULE_EXPORT void on_savetype4_activate (GtkMenuItem *, gpointer );
|
||||
G_MODULE_EXPORT void on_savetype5_activate (GtkMenuItem *, gpointer );
|
||||
G_MODULE_EXPORT void on_savetype6_activate (GtkMenuItem *, gpointer );
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -33,10 +33,13 @@ int saveFS;
|
|||
gboolean on_wMainW_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) {
|
||||
u16 Key = lookup_key(event->keyval);
|
||||
if (event->keyval == keyboard_cfg[KEY_BOOST-1]) {
|
||||
Boost != Boost;
|
||||
saveFS=Frameskip;
|
||||
if (Boost) Frameskip = BoostFS;
|
||||
else Frameskip = saveFS;
|
||||
Boost = !Boost;
|
||||
if (Boost) {
|
||||
saveFS = Frameskip;
|
||||
Frameskip = BoostFS;
|
||||
} else {
|
||||
Frameskip = saveFS;
|
||||
}
|
||||
}
|
||||
ADD_KEY( Cur_Keypad, Key );
|
||||
if(desmume_running()) update_keypad(Cur_Keypad);
|
||||
|
|
|
@ -30,6 +30,8 @@ volatile BOOL execute = FALSE;
|
|||
BOOL click = FALSE;
|
||||
BOOL fini = FALSE;
|
||||
unsigned long glock = 0;
|
||||
int savetype=MC_TYPE_AUTODETECT;
|
||||
u32 savesize=1;
|
||||
|
||||
void desmume_mem_init();
|
||||
|
||||
|
@ -53,21 +55,28 @@ int desmume_open(const char *filename)
|
|||
{
|
||||
int i;
|
||||
clear_savestates();
|
||||
i = NDS_LoadROM(filename, MC_TYPE_AUTODETECT, 1);
|
||||
i = NDS_LoadROM(filename, savetype, savesize);
|
||||
return i;
|
||||
}
|
||||
|
||||
void desmume_savetype(int type) {
|
||||
mmu_select_savetype(type, &savetype, &savesize);
|
||||
}
|
||||
|
||||
|
||||
void desmume_pause()
|
||||
{
|
||||
execute = FALSE;
|
||||
SPU_Pause(1);
|
||||
}
|
||||
|
||||
void desmume_resume()
|
||||
{
|
||||
execute = TRUE;
|
||||
|
||||
if(!regMainLoop)
|
||||
g_idle_add_full(EMULOOP_PRIO, &EmuLoop, NULL, NULL); regMainLoop = TRUE;
|
||||
SPU_Pause(0);
|
||||
execute = TRUE;
|
||||
if(!regMainLoop)
|
||||
g_idle_add_full(EMULOOP_PRIO, &EmuLoop, NULL, NULL);
|
||||
regMainLoop = TRUE;
|
||||
}
|
||||
|
||||
void desmume_reset()
|
||||
|
@ -100,48 +109,12 @@ void desmume_cycle()
|
|||
SPU_Emulate();
|
||||
}
|
||||
|
||||
/////////////////////////////// TOOLS MANAGEMENT ///////////////////////////////
|
||||
#if 0
|
||||
//#include "dTool.h"
|
||||
|
||||
extern const dTool_t *dTools_list[];
|
||||
extern const int dTools_list_size;
|
||||
|
||||
BOOL *dTools_running;
|
||||
|
||||
void Start_dTool(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
int tool = GPOINTER_TO_INT(data);
|
||||
|
||||
if(dTools_running[tool]) return;
|
||||
|
||||
dTools_list[tool]->open(tool);
|
||||
dTools_running[tool] = TRUE;
|
||||
}
|
||||
|
||||
void dTool_CloseCallback(int tool)
|
||||
{
|
||||
dTools_running[tool] = FALSE;
|
||||
}
|
||||
|
||||
/////////////////////////////// MAIN EMULATOR LOOP ///////////////////////////////
|
||||
|
||||
|
||||
static inline void _updateDTools()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < dTools_list_size; i++)
|
||||
{
|
||||
if(dTools_running[i]) { dTools_list[i]->update(); }
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Uint32 fps, fps_SecStart, fps_FrameCount;
|
||||
static void Draw()
|
||||
{
|
||||
}
|
||||
|
||||
gboolean EmuLoop(gpointer data)
|
||||
{
|
||||
int i;
|
||||
|
@ -167,7 +140,6 @@ gboolean EmuLoop(gpointer data)
|
|||
|
||||
Draw();
|
||||
|
||||
// _updateDTools();
|
||||
notify_Tools();
|
||||
gtk_widget_queue_draw(pDrawingArea);
|
||||
gtk_widget_queue_draw(pDrawingArea2);
|
||||
|
|
|
@ -26,6 +26,7 @@ extern void desmume_init();
|
|||
extern void desmume_free();
|
||||
|
||||
extern int desmume_open(const char *filename);
|
||||
extern void desmume_savetype(int type);
|
||||
extern void desmume_pause();
|
||||
extern void desmume_resume();
|
||||
extern void desmume_reset();
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="resizable">False</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
<property name="icon">DeSmuME.xpm</property>
|
||||
<property name="decorated">True</property>
|
||||
|
@ -98,119 +98,100 @@
|
|||
<widget class="GtkMenu" id="load_state_menu">
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate1">
|
||||
<widget class="GtkMenuItem" id="loadstate1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 1</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<signal name="activate" handler="on_loadstate1_activate" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
|
||||
<accelerator key="F1" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate2">
|
||||
<widget class="GtkMenuItem" id="loadstate2">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 2</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate2_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F2" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate3">
|
||||
<widget class="GtkMenuItem" id="loadstate3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 3</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate3_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F3" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate4">
|
||||
<widget class="GtkMenuItem" id="loadstate4">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 4</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate4_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F4" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate5">
|
||||
<widget class="GtkMenuItem" id="loadstate5">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 5</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate5_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F5" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate6">
|
||||
<widget class="GtkMenuItem" id="loadstate6">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 6</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate6_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F6" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate7">
|
||||
<widget class="GtkMenuItem" id="loadstate7">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 7</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate7_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F7" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate8">
|
||||
<widget class="GtkMenuItem" id="loadstate8">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 8</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate8_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F8" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate9">
|
||||
<widget class="GtkMenuItem" id="loadstate9">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 9</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate9_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F9" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="loadstate10">
|
||||
<widget class="GtkMenuItem" id="loadstate10">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 10</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">loadstate1</property>
|
||||
<signal name="activate" handler="on_loadstate10_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F10" modifiers="0" signal="activate"/>
|
||||
</widget>
|
||||
|
@ -230,119 +211,100 @@
|
|||
<widget class="GtkMenu" id="save_state_menu">
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate1">
|
||||
<widget class="GtkMenuItem" id="savestate1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 1</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<signal name="activate" handler="on_savestate1_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F1" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate2">
|
||||
<widget class="GtkMenuItem" id="savestate2">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 2</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate2_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F2" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate3">
|
||||
<widget class="GtkMenuItem" id="savestate3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 3</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate3_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F3" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate4">
|
||||
<widget class="GtkMenuItem" id="savestate4">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 4</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate4_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F4" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate5">
|
||||
<widget class="GtkMenuItem" id="savestate5">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 5</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate5_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F5" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate6">
|
||||
<widget class="GtkMenuItem" id="savestate6">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 6</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate6_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F6" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate7">
|
||||
<widget class="GtkMenuItem" id="savestate7">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 7</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate7_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F7" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate8">
|
||||
<widget class="GtkMenuItem" id="savestate8">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 8</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate8_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F8" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate9">
|
||||
<widget class="GtkMenuItem" id="savestate9">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 9</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate9_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F9" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savestate10">
|
||||
<widget class="GtkMenuItem" id="savestate10">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">State 10</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savestate1</property>
|
||||
<signal name="activate" handler="on_savestate10_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
|
||||
<accelerator key="F10" modifiers="GDK_SHIFT_MASK" signal="activate"/>
|
||||
</widget>
|
||||
|
@ -351,6 +313,74 @@
|
|||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkSeparatorMenuItem" id="séparateur1">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savetype1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">TYPE: Auto (1B)</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="activate" handler="on_savetype1_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savetype2">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">TYPE: EEPROM1 (4KB)</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savetype1</property>
|
||||
<signal name="activate" handler="on_savetype2_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savetype3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">TYPE: EEPROM2 (64KB)</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savetype1</property>
|
||||
<signal name="activate" handler="on_savetype3_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savetype4">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">TYPE: EEPROM2 (512KB)</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">savetype1</property>
|
||||
<signal name="activate" handler="on_savetype4_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savetype5">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">TYPE: FLASH (256KB)</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="group">savetype1</property>
|
||||
<property name="active">False</property>
|
||||
<signal name="activate" handler="on_savetype5_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioMenuItem" id="savetype6">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">TYPE: FRAM (2MB)</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="group">savetype1</property>
|
||||
<property name="active">False</property>
|
||||
<signal name="activate" handler="on_savetype6_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
|
@ -394,7 +424,7 @@
|
|||
<signal name="activate" handler="on_menu_reset_activate" last_modification_time="Mon, 01 Jan 2007 16:40:47 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image96">
|
||||
<widget class="GtkImage" id="image116">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-refresh</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -431,7 +461,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">0</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="activate" handler="on_fs0_activate" last_modification_time="Tue, 02 Jan 2007 14:35:13 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
@ -529,7 +559,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">9</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">fs0</property>
|
||||
<signal name="activate" handler="on_fs9_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
|
||||
</widget>
|
||||
|
@ -553,7 +583,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">1x</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="activate" handler="on_size1x_activate" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
@ -574,7 +604,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">3x</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="group">size1x</property>
|
||||
<signal name="activate" handler="on_size3x_activate" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
|
||||
</widget>
|
||||
|
@ -605,7 +635,7 @@
|
|||
<signal name="activate" handler="on_menu_controls_activate" last_modification_time="Mon, 01 Jan 2007 16:53:11 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image97">
|
||||
<widget class="GtkImage" id="image117">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-preferences</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -626,7 +656,7 @@
|
|||
<signal name="activate" handler="on_menu_joy_controls_activate" last_modification_time="Fri, 12 Jan 2007 22:26:36 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image98">
|
||||
<widget class="GtkImage" id="image118">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-preferences</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -700,7 +730,7 @@
|
|||
<signal name="activate" handler="on_menu_IO_regs_activate" last_modification_time="Mon, 01 Jan 2007 16:53:11 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image99">
|
||||
<widget class="GtkImage" id="image119">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-properties</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -721,7 +751,7 @@
|
|||
<signal name="activate" handler="on_menu_memview_activate" last_modification_time="Fri, 12 Jan 2007 15:44:42 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image100">
|
||||
<widget class="GtkImage" id="image120">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-properties</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -742,7 +772,7 @@
|
|||
<signal name="activate" handler="on_menu_palview_activate" last_modification_time="Sun, 14 Jan 2007 10:34:32 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image101">
|
||||
<widget class="GtkImage" id="image121">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-properties</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
|
|
@ -146,7 +146,6 @@ void clear_savestate_menu(char * cb_name, u8 num)
|
|||
sprintf( text, "State %d (empty)", num);
|
||||
w = glade_xml_get_widget(xml, cb);
|
||||
set_menuitem_label( w, text );
|
||||
gtk_check_menu_item_set_active((GtkCheckMenuItem*)w, FALSE);
|
||||
}
|
||||
|
||||
void update_savestate_menu(char * cb_name, u8 num)
|
||||
|
|
|
@ -25,6 +25,15 @@ extern "C" {
|
|||
#define MC_SIZE_16MBITS 0x200000
|
||||
#define MC_SIZE_64MBITS 0x800000
|
||||
|
||||
static int save_types[6][2] = {
|
||||
{MC_TYPE_AUTODETECT,1},
|
||||
{MC_TYPE_EEPROM1,MC_SIZE_4KBITS},
|
||||
{MC_TYPE_EEPROM2,MC_SIZE_64KBITS},
|
||||
{MC_TYPE_EEPROM2,MC_SIZE_512KBITS},
|
||||
{MC_TYPE_FLASH,MC_SIZE_256KBITS},
|
||||
{MC_TYPE_FRAM,MC_SIZE_2MBITS}
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 com; /* persistent command actually handled */
|
||||
|
|
|
@ -34,6 +34,9 @@
|
|||
#include "../MMU.h"
|
||||
#include "../armcpu.h"
|
||||
#include "../NDSSystem.h"
|
||||
#include "../debug.h"
|
||||
#include "../saves.h"
|
||||
#include "../cflash.h"
|
||||
#include "resource.h"
|
||||
#include "memView.h"
|
||||
#include "disView.h"
|
||||
|
@ -42,10 +45,7 @@
|
|||
#include "palView.h"
|
||||
#include "tileView.h"
|
||||
#include "oamView.h"
|
||||
#include "../debug.h"
|
||||
#include "mapview.h"
|
||||
#include "../saves.h"
|
||||
#include "../cflash.h"
|
||||
#include "ConfigKeys.h"
|
||||
|
||||
#include "snddx.h"
|
||||
|
@ -1211,39 +1211,27 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
|||
|
||||
case IDC_SAVETYPE1:
|
||||
saver(MF_CHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED);
|
||||
backupmemorytype = MC_TYPE_AUTODETECT;
|
||||
backupmemorysize = 1;
|
||||
mc_realloc(&MMU.bupmem, backupmemorytype,backupmemorysize);
|
||||
mmu_select_savetype(0,&backupmemorytype,&backupmemorysize);
|
||||
return 0;
|
||||
case IDC_SAVETYPE2:
|
||||
saver(MF_UNCHECKED,MF_CHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED);
|
||||
backupmemorytype = MC_TYPE_EEPROM1;
|
||||
backupmemorysize = MC_SIZE_4KBITS;
|
||||
mc_realloc(&MMU.bupmem, backupmemorytype,backupmemorysize);
|
||||
mmu_select_savetype(1,&backupmemorytype,&backupmemorysize);
|
||||
return 0;
|
||||
case IDC_SAVETYPE3:
|
||||
saver(MF_UNCHECKED,MF_UNCHECKED,MF_CHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED);
|
||||
backupmemorytype = MC_TYPE_EEPROM2;
|
||||
backupmemorysize = MC_SIZE_64KBITS;
|
||||
mc_realloc(&MMU.bupmem, backupmemorytype,backupmemorysize);
|
||||
mmu_select_savetype(2,&backupmemorytype,&backupmemorysize);
|
||||
return 0;
|
||||
case IDC_SAVETYPE4:
|
||||
saver(MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_CHECKED,MF_UNCHECKED,MF_UNCHECKED);
|
||||
backupmemorytype = MC_TYPE_EEPROM2;
|
||||
backupmemorysize = MC_SIZE_512KBITS;
|
||||
mc_realloc(&MMU.bupmem, backupmemorytype,backupmemorysize);
|
||||
mmu_select_savetype(3,&backupmemorytype,&backupmemorysize);
|
||||
return 0;
|
||||
case IDC_SAVETYPE5:
|
||||
saver(MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_CHECKED,MF_UNCHECKED);
|
||||
backupmemorytype = MC_TYPE_FRAM;
|
||||
backupmemorysize = MC_SIZE_256KBITS;
|
||||
mc_realloc(&MMU.bupmem, backupmemorytype,backupmemorysize);
|
||||
mmu_select_savetype(4,&backupmemorytype,&backupmemorysize);
|
||||
return 0;
|
||||
case IDC_SAVETYPE6:
|
||||
saver(MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_UNCHECKED,MF_CHECKED);
|
||||
backupmemorytype = MC_TYPE_FLASH;
|
||||
backupmemorysize = MC_SIZE_2MBITS;
|
||||
mc_realloc(&MMU.bupmem, backupmemorytype,backupmemorysize);
|
||||
mmu_select_savetype(5,&backupmemorytype,&backupmemorysize);
|
||||
return 0;
|
||||
|
||||
case IDM_RESET:
|
||||
|
|
Loading…
Reference in New Issue