Io per la 0.148 ci avevo provato e mi sembra funzionare.
Ma io non ci capisco una cippa di programmazione e l'ho fatto solo come esperimento per provare a capire se ci capivo qualcosa.
Purtroppo ho tenuto l'eseguibile ma non mi ricordo più se la diff che avevo creato studiando il sorgente del mameuifx e la diff per i nag screen è questa o questa era solo una delle tante prove:
Codice: Seleziona tutto
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/emuopts.c C:\mingw\mingw64-w32\mame_original/src/emu/emuopts.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/emuopts.c Fri Jan 11 17:38:25 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/emuopts.c Sat Feb 16 11:29:02 2013
***************
*** 82,88 ****
{ OPTION_SNAPSHOT_DIRECTORY, "snap", OPTION_STRING, "directory to save screenshots" },
{ OPTION_DIFF_DIRECTORY, "diff", OPTION_STRING, "directory to save hard drive image difference files" },
{ OPTION_COMMENT_DIRECTORY, "comments", OPTION_STRING, "directory to save debugger comments" },
! { OPTION_HISCORE_DIRECTORY, "hi", OPTION_STRING, "directory to save high scores" },
// state/playback options
{ NULL, NULL, OPTION_HEADER, "CORE STATE/PLAYBACK OPTIONS" },
--- 82,91 ----
{ OPTION_SNAPSHOT_DIRECTORY, "snap", OPTION_STRING, "directory to save screenshots" },
{ OPTION_DIFF_DIRECTORY, "diff", OPTION_STRING, "directory to save hard drive image difference files" },
{ OPTION_COMMENT_DIRECTORY, "comments", OPTION_STRING, "directory to save debugger comments" },
!
! // MKCHAMP - ADDING CFG OPTION TO SPECIFY HISCORE DIRECTORY..."hi" BY DEFAULT
! { NULL, NULL, OPTION_HEADER, "CORE OUTPUT DIRECTORY OPTIONS" },
! { OPTION_HISCORE_DIRECTORY, "hi", OPTION_STRING, "directory to save hiscores" },
// state/playback options
{ NULL, NULL, OPTION_HEADER, "CORE STATE/PLAYBACK OPTIONS" },
***************
*** 196,204 ****
{ OPTION_SKIP_GAMEINFO, "0", OPTION_BOOLEAN, "skip displaying the information screen at startup" },
{ OPTION_UI_FONT, "default", OPTION_STRING, "specify a font to use" },
{ OPTION_RAMSIZE ";ram", NULL, OPTION_STRING, "size of RAM (if supported by driver)" },
{ OPTION_CONFIRM_QUIT, "1", OPTION_BOOLEAN, "display confirm quit screen on exit" },
{ OPTION_UI_MOUSE, "0", OPTION_BOOLEAN, "display ui mouse cursor" },
! { OPTION_HISCORE, "1", OPTION_BOOLEAN, "enable hiscore subsystem" },
{ NULL }
};
--- 197,209 ----
{ OPTION_SKIP_GAMEINFO, "0", OPTION_BOOLEAN, "skip displaying the information screen at startup" },
{ OPTION_UI_FONT, "default", OPTION_STRING, "specify a font to use" },
{ OPTION_RAMSIZE ";ram", NULL, OPTION_STRING, "size of RAM (if supported by driver)" },
{ OPTION_CONFIRM_QUIT, "0", OPTION_BOOLEAN, "display confirm quit screen on exit" },
{ OPTION_UI_MOUSE, "0", OPTION_BOOLEAN, "display ui mouse cursor" },
! // MKChamp Hiscore Diff options
! { NULL, NULL, OPTION_HEADER, "CORE MKChamp OPTIONS" },
! { OPTION_DISABLE_HISCORE_PATCH, "0", OPTION_BOOLEAN, "disable hiscore saving" },
! { OPTION_DISABLE_NAGSCREEN_PATCH, "0", OPTION_BOOLEAN, "disable suppression of nagscreens" },
! { OPTION_DISABLE_LOADING_PATCH, "0", OPTION_BOOLEAN, "disable suppression of loading screens /white box" },
{ NULL }
};
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/emuopts.h C:\mingw\mingw64-w32\mame_original/src/emu/emuopts.h
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/emuopts.h Fri Jan 11 17:40:26 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/emuopts.h Sat Feb 16 11:29:02 2013
***************
*** 201,207 ****
#define OPTION_CONFIRM_QUIT "confirm_quit"
#define OPTION_UI_MOUSE "ui_mouse"
#define OPTION_HISCORE "hiscore"
//**************************************************************************
--- 200,210 ----
#define OPTION_CONFIRM_QUIT "confirm_quit"
#define OPTION_UI_MOUSE "ui_mouse"
#define OPTION_HISCORE "hiscore"
+ /* MKChamp Hiscore Diff Options */
+ #define OPTION_DISABLE_HISCORE_PATCH "disable_hiscore_patch"
+ #define OPTION_DISABLE_NAGSCREEN_PATCH "disable_nagscreen_patch"
+ #define OPTION_DISABLE_LOADING_PATCH "disable_loading_patch"
//**************************************************************************
***************
*** 356,365 ****
bool skip_gameinfo() const { return bool_value(OPTION_SKIP_GAMEINFO); }
const char *ui_font() const { return value(OPTION_UI_FONT); }
const char *ram_size() const { return value(OPTION_RAMSIZE); }
bool confirm_quit() const { return bool_value(OPTION_CONFIRM_QUIT); }
bool ui_mouse() const { return bool_value(OPTION_UI_MOUSE); }
- bool hiscore() const { return bool_value(OPTION_HISCORE); }
// device-specific options
const char *device_option(device_image_interface &image);
--- 359,372 ----
bool skip_gameinfo() const { return bool_value(OPTION_SKIP_GAMEINFO); }
const char *ui_font() const { return value(OPTION_UI_FONT); }
const char *ram_size() const { return value(OPTION_RAMSIZE); }
+
+ // MKChamp Hiscore Diff options
+ bool disable_hiscore_patch() const { return bool_value(OPTION_DISABLE_HISCORE_PATCH); }
+ bool disable_nagscreen_patch() const { return bool_value(OPTION_DISABLE_NAGSCREEN_PATCH); }
+ bool disable_loading_patch() const { return bool_value(OPTION_DISABLE_LOADING_PATCH); }
bool confirm_quit() const { return bool_value(OPTION_CONFIRM_QUIT); }
bool ui_mouse() const { return bool_value(OPTION_UI_MOUSE); }
// device-specific options
const char *device_option(device_image_interface &image);
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/machine.c C:\mingw\mingw64-w32\mame_original/src/emu/machine.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/machine.c Fri Jan 11 17:46:04 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/machine.c Sat Feb 16 11:29:02 2013
***************
*** 133,138 ****
--- 133,140 ----
// running_machine - constructor
//-------------------------------------------------
+ int cpunum;
+
running_machine::running_machine(const machine_config &_config, osd_interface &osd, bool exit_to_game_select)
: firstcpu(NULL),
primary_screen(NULL),
***************
*** 196,207 ****
}
screen_device_iterator screeniter(root_device());
primary_screen = screeniter.first();
!
! // hiscore
! cpu[0] = firstcpu;
! for (int cpunum = 1; cpunum < ARRAY_LENGTH(cpu) && cpu[cpunum - 1] != NULL; cpunum++)
cpu[cpunum] = cpu[cpunum - 1]->next();
-
// fetch core options
if (options().debug())
debug_flags = (DEBUG_FLAG_ENABLED | DEBUG_FLAG_CALL_HOOK) | (options().debug_internal() ? 0 : DEBUG_FLAG_OSD_ENABLED);
--- 198,207 ----
}
screen_device_iterator screeniter(root_device());
primary_screen = screeniter.first();
! //MKCHAMP--initialize the cpu for hiscore
! cpu[0] = firstcpu;
! for (cpunum = 1; cpunum < ARRAY_LENGTH(cpu) && cpu[cpunum - 1] != NULL; cpunum++)
cpu[cpunum] = cpu[cpunum - 1]->next();
// fetch core options
if (options().debug())
debug_flags = (DEBUG_FLAG_ENABLED | DEBUG_FLAG_CALL_HOOK) | (options().debug_internal() ? 0 : DEBUG_FLAG_OSD_ENABLED);
***************
*** 328,336 ****
// set up the cheat engine
m_cheat = auto_alloc(*this, cheat_manager(*this));
! // initialize the hiscore system
! if (options().hiscore())
! hiscore_init(*this);
// disallow save state registrations starting here
m_save.allow_registration(false);
--- 328,336 ----
// set up the cheat engine
m_cheat = auto_alloc(*this, cheat_manager(*this));
! //MKCHAMP - INITIALIZING THE HISCORE ENGINE
! if (! options().disable_hiscore_patch())
! hiscore_init(*this);
// disallow save state registrations starting here
m_save.allow_registration(false);
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/mame.c C:\mingw\mingw64-w32\mame_original/src/emu/mame.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/mame.c Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/mame.c Sat Feb 16 11:29:02 2013
***************
*** 79,84 ****
--- 79,86 ----
#include "debugger.h"
#include "render.h"
#include "cheat.h"
+ //MKCHAMP - ADDING HEADER FILE HISCORE FOR INCLUSION
+ #include "hiscore.h"
#include "ui.h"
#include "uiinput.h"
#include "crsshair.h"
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/profiler.c C:\mingw\mingw64-w32\mame_original/src/emu/profiler.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/profiler.c Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/profiler.c Sat Feb 16 11:29:02 2013
***************
*** 185,190 ****
--- 185,192 ----
{ PROFILER_BLIT, "OSD Blitting" },
{ PROFILER_SOUND, "Sound Generation" },
{ PROFILER_TIMER_CALLBACK, "Timer Callbacks" },
+ //MKCHAMP - INCLUDING THE HISCORE ENGINE TO THE PROFILER
+ { PROFILER_HISCORE, "Hiscore" },
{ PROFILER_INPUT, "Input Processing" },
{ PROFILER_MOVIE_REC, "Movie Recording" },
{ PROFILER_LOGERROR, "Error Logging" },
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/profiler.h C:\mingw\mingw64-w32\mame_original/src/emu/profiler.h
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/profiler.h Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/profiler.h Sat Feb 16 11:29:02 2013
***************
*** 80,85 ****
--- 80,87 ----
PROFILER_BLIT,
PROFILER_SOUND,
PROFILER_TIMER_CALLBACK,
+ //MKCHAMP - INCLUDING THE HISCORE ENGINE TO THE PROFILER
+ PROFILER_HISCORE,
PROFILER_INPUT, // input.c and inptport.c
PROFILER_MOVIE_REC, // movie recording
PROFILER_LOGERROR, // logerror
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/render.c C:\mingw\mingw64-w32\mame_original/src/emu/render.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/render.c Fri Jan 11 17:47:44 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/render.c Fri Jan 11 08:32:46 2013
***************
*** 1205,1288 ****
void render_target::compute_visible_area(INT32 target_width, INT32 target_height, float target_pixel_aspect, int target_orientation, INT32 &visible_width, INT32 &visible_height)
{
! if (m_manager.machine().options().cleanstretch())
! {
! float width = 0, height = 0;
! float scale = 0, aspect = 0;
!
! // scan the current view for all screens
! for (item_layer layer = ITEM_LAYER_FIRST; layer < ITEM_LAYER_MAX; layer++)
!
! // iterate over items in the layer
! for (layout_view::item *curitem = m_curview->first_item(layer); curitem != NULL; curitem = curitem->next())
! if (curitem->screen() != NULL)
! {
! // use a hard-coded default visible area for vector screens
! screen_device *screen = curitem->screen();
! const rectangle vectorvis(0, 639, 0, 479);
! const rectangle &visarea = (screen->screen_type() == SCREEN_TYPE_VECTOR) ? vectorvis : screen->visible_area();
! aspect = (float)visarea.width()/visarea.height();
! }
width = m_curview->effective_aspect(m_layerconfig);
height = 1.0f;
-
- if (aspect <= 1.2f)
- set_view(1); // pixel_aspect
- else
- set_view(0); // standard
if (target_orientation & ORIENTATION_SWAP_XY)
! width *= 4.0f/3.0f;
! else
! height *= 3.0f/4.0f;
if (width / height > (float)target_width / (float)target_height)
scale = (float)target_width / width;
else
scale = (float)target_height / height;
-
- visible_width = render_round_nearest(width * scale);
- visible_height = render_round_nearest(height * scale);
}
else
{
! float width, height;
! float scale;
!
! // constrained case
! if (target_pixel_aspect != 0.0f)
! {
! // start with the aspect ratio of the square pixel layout
! width = m_curview->effective_aspect(m_layerconfig);
! height = 1.0f;
!
! // first apply target orientation
! if (target_orientation & ORIENTATION_SWAP_XY)
! FSWAP(width, height);
!
! // apply the target pixel aspect ratio
! height *= target_pixel_aspect;
!
! // based on the height/width ratio of the source and target, compute the scale factor
! if (width / height > (float)target_width / (float)target_height)
! scale = (float)target_width / width;
! else
! scale = (float)target_height / height;
! }
!
! // stretch-to-fit case
! else
! {
! width = (float)target_width;
! height = (float)target_height;
! scale = 1.0f;
! }
!
! // set the final width/height
! visible_width = render_round_nearest(width * scale);
! visible_height = render_round_nearest(height * scale);
}
}
--- 1205,1245 ----
void render_target::compute_visible_area(INT32 target_width, INT32 target_height, float target_pixel_aspect, int target_orientation, INT32 &visible_width, INT32 &visible_height)
{
! float width, height;
! float scale;
+ // constrained case
+ if (target_pixel_aspect != 0.0f)
+ {
+ // start with the aspect ratio of the square pixel layout
width = m_curview->effective_aspect(m_layerconfig);
height = 1.0f;
+ // first apply target orientation
if (target_orientation & ORIENTATION_SWAP_XY)
! FSWAP(width, height);
+ // apply the target pixel aspect ratio
+ height *= target_pixel_aspect;
+
+ // based on the height/width ratio of the source and target, compute the scale factor
if (width / height > (float)target_width / (float)target_height)
scale = (float)target_width / width;
else
scale = (float)target_height / height;
}
+
+ // stretch-to-fit case
else
{
! width = (float)target_width;
! height = (float)target_height;
! scale = 1.0f;
}
+
+ // set the final width/height
+ visible_width = render_round_nearest(width * scale);
+ visible_height = render_round_nearest(height * scale);
}
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/romload.c C:\mingw\mingw64-w32\mame_original/src/emu/romload.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/romload.c Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/romload.c Sat Feb 16 11:29:02 2013
***************
*** 471,476 ****
--- 471,480 ----
// 2010-04, FP - FIXME: in MESS, load_software_part_region sometimes calls this with romstotalsize = 0!
// as a temp workaround, I added a check for romstotalsize !=0.
+ //MKCHAMP - DISABLING WHOLE SUB ROUTINE TO ELIMINATE LOADING MESSAGES
+ //REMOVING ALWAYS
+ //if (!options_get_bool(mame_options(), OPTION_DISABLE_LOADING_PATCH))
+ return;
if (name != NULL && romdata->romstotalsize)
sprintf(buffer, "Loading (%d%%)", (UINT32)(100 * (UINT64)romdata->romsloadedsize / (UINT64)romdata->romstotalsize));
else
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/ui.c C:\mingw\mingw64-w32\mame_original/src/emu/ui.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/ui.c Fri Jan 11 17:48:12 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/ui.c Sat Feb 16 11:29:02 2013
***************
*** 336,346 ****
--- 336,352 ----
switch (state)
{
case 0:
+ //MKCHAMP - BREAKING OUT SO DISCLAIMERS AREN'T SHOWN
+ if (! machine.options().disable_nagscreen_patch())
+ break;
if (show_disclaimer && disclaimer_string(machine, messagebox_text).len() > 0)
ui_set_handler(handler_messagebox_ok, 0);
break;
case 1:
+ //MKCHAMP - BREAKING OUT SO WARNINGS AREN'T SHOWN
+ if (! machine.options().disable_nagscreen_patch())
+ break;
if (show_warnings && warnings_string(machine, messagebox_text).len() > 0)
{
ui_set_handler(handler_messagebox_ok, 0);
***************
*** 352,357 ****
--- 358,366 ----
break;
case 2:
+ //MKCHAMP - BREAKING OUT SO GAME INFO ISN'T SHOWN
+ if (! machine.options().disable_nagscreen_patch())
+ break;
if (show_gameinfo && game_info_astring(machine, messagebox_text).len() > 0)
ui_set_handler(handler_messagebox_anykey, 0);
break;
***************
*** 362,373 ****
while (machine.input().poll_switches() != INPUT_CODE_INVALID) ;
/* loop while we have a handler */
! while (ui_handler_callback != handler_ingame && !machine.scheduled_event_pending() && !ui_menu::stack_has_special_main_menu())
! machine.video().frame_update();
/* clear the handler and force an update */
ui_set_handler(handler_ingame, 0);
! machine.video().frame_update();
}
/* if we're the empty driver, force the menus on */
--- 371,388 ----
while (machine.input().poll_switches() != INPUT_CODE_INVALID) ;
/* loop while we have a handler */
! //MKChamp Disabling of whitebox
! if (machine.options().disable_nagscreen_patch())
! {
! while (ui_handler_callback != handler_ingame && !machine.scheduled_event_pending() && !ui_menu::stack_has_special_main_menu())
! machine.video().frame_update();
! }
/* clear the handler and force an update */
ui_set_handler(handler_ingame, 0);
! //MKChamp Disabling of whitebox
! if (machine.options().disable_nagscreen_patch())
! machine.video().frame_update();
}
/* if we're the empty driver, force the menus on */
***************
*** 389,402 ****
osd_ticks_t curtime = osd_ticks();
/* copy in the new text */
! messagebox_text.cpy(text);
! messagebox_backcolor = UI_BACKGROUND_COLOR;
/* don't update more than 4 times/second */
if (force || (curtime - lastupdatetime) > osd_ticks_per_second() / 4)
{
lastupdatetime = curtime;
! machine.video().frame_update();
}
}
--- 404,425 ----
osd_ticks_t curtime = osd_ticks();
/* copy in the new text */
! //MKCHAMP -- DISABLE IS NOT DISABLED :-)
! if (machine.options().disable_nagscreen_patch())
! {
! messagebox_text.cpy(text);
! messagebox_backcolor = UI_BACKGROUND_COLOR;
! }
/* don't update more than 4 times/second */
if (force || (curtime - lastupdatetime) > osd_ticks_per_second() / 4)
{
lastupdatetime = curtime;
! //MKCHAMP - CALLING NEW SUB CALLED video_frame_update_hi SO WHITE BOX DOES NOT SHOW BUT REFRESHSPEED IS STILL CALCULATED
! if (! machine.options().disable_loading_patch())
! machine.video().frame_update_hi();
! else
! machine.video().frame_update();
}
}
***************
*** 1754,1760 ****
{
void *param = (void *)&exec->device();
string.printf("Overclock CPU %s", exec->device().tag());
! *tailptr = slider_alloc(machine, string, 10, 1000, 4000, 50, slider_overclock, param);
tailptr = &(*tailptr)->next;
}
}
--- 1777,1783 ----
{
void *param = (void *)&exec->device();
string.printf("Overclock CPU %s", exec->device().tag());
! *tailptr = slider_alloc(machine, string, 10, 1000, 2000, 1, slider_overclock, param);
tailptr = &(*tailptr)->next;
}
}
***************
*** 1773,1779 ****
if (machine.options().cheat())
{
string.printf("%s Refresh Rate", slider_get_screen_desc(*screen));
! *tailptr = slider_alloc(machine, string, -33000, 0, 33000, 1000, slider_refresh, param);
tailptr = &(*tailptr)->next;
}
--- 1796,1802 ----
if (machine.options().cheat())
{
string.printf("%s Refresh Rate", slider_get_screen_desc(*screen));
! *tailptr = slider_alloc(machine, string, -10000, 0, 10000, 1000, slider_refresh, param);
tailptr = &(*tailptr)->next;
}
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/ui.h C:\mingw\mingw64-w32\mame_original/src/emu/ui.h
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/ui.h Fri Jan 11 17:48:38 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/ui.h Fri Jan 11 08:32:46 2013
***************
*** 34,60 ****
#define UI_BOX_TB_BORDER (UI_TARGET_FONT_HEIGHT * 0.25f)
/* handy colors */
! #define ARGB_WHITE MAKE_ARGB(0xff,0xff,0xff,0xff)
! #define ARGB_BLACK MAKE_ARGB(0xff,0x00,0x00,0x00)
! #define UI_BORDER_COLOR MAKE_ARGB(0xff,0x00,0x00,0x00)
! #define UI_BACKGROUND_COLOR MAKE_ARGB(0xef,0xcc,0xcc,0xcc)
! #define UI_GFXVIEWER_BG_COLOR MAKE_ARGB(0xef,0x00,0x00,0x00)
! #define UI_GREEN_COLOR MAKE_ARGB(0xef,0x00,0xff,0x00)
! #define UI_YELLOW_COLOR MAKE_ARGB(0xef,0xff,0xff,0x00)
! #define UI_RED_COLOR MAKE_ARGB(0xef,0xff,0x00,0x00)
! #define UI_UNAVAILABLE_COLOR MAKE_ARGB(0xff,0x40,0x40,0x40)
! #define UI_TEXT_COLOR MAKE_ARGB(0xff,0x00,0x00,0x00)
! #define UI_TEXT_BG_COLOR MAKE_ARGB(0xef,0xcc,0xcc,0xcc)
! #define UI_SUBITEM_COLOR MAKE_ARGB(0xff,0x00,0x00,0xff)
! #define UI_CLONE_COLOR MAKE_ARGB(0xff,0x00,0x33,0xff)
! #define UI_SELECTED_COLOR MAKE_ARGB(0xff,0xff,0xff,0x00)
! #define UI_SELECTED_BG_COLOR MAKE_ARGB(0xef,0x00,0x66,0xff)
! #define UI_MOUSEOVER_COLOR MAKE_ARGB(0xff,0xff,0xff,0x80)
! #define UI_MOUSEOVER_BG_COLOR MAKE_ARGB(0xef,0x00,0x99,0xff)
! #define UI_MOUSEDOWN_COLOR MAKE_ARGB(0xff,0xff,0xff,0x00)
! #define UI_MOUSEDOWN_BG_COLOR MAKE_ARGB(0xef,0x00,0x66,0xff)
! #define UI_DIPSW_COLOR MAKE_ARGB(0xef,0x66,0x66,0x66)
! #define UI_SLIDER_COLOR MAKE_ARGB(0xef,0x00,0xff,0x00)
/* cancel return value for a UI handler */
#define UI_HANDLER_CANCEL ((UINT32)~0)
--- 34,60 ----
#define UI_BOX_TB_BORDER (UI_TARGET_FONT_HEIGHT * 0.25f)
/* handy colors */
! #define ARGB_WHITE MAKE_ARGB(0xff,0xff,0xff,0xff)
! #define ARGB_BLACK MAKE_ARGB(0xff,0x00,0x00,0x00)
! #define UI_BORDER_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff)
! #define UI_BACKGROUND_COLOR MAKE_ARGB(0xef,0x10,0x10,0x30)
! #define UI_GFXVIEWER_BG_COLOR MAKE_ARGB(0xef,0x10,0x10,0x30)
! #define UI_GREEN_COLOR MAKE_ARGB(0xef,0x10,0x60,0x10)
! #define UI_YELLOW_COLOR MAKE_ARGB(0xef,0x60,0x60,0x10)
! #define UI_RED_COLOR MAKE_ARGB(0xf0,0x60,0x10,0x10)
! #define UI_UNAVAILABLE_COLOR MAKE_ARGB(0xff,0x40,0x40,0x40)
! #define UI_TEXT_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff)
! #define UI_TEXT_BG_COLOR MAKE_ARGB(0xef,0x00,0x00,0x00)
! #define UI_SUBITEM_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff)
! #define UI_CLONE_COLOR MAKE_ARGB(0xff,0x80,0x80,0x80)
! #define UI_SELECTED_COLOR MAKE_ARGB(0xff,0xff,0xff,0x00)
! #define UI_SELECTED_BG_COLOR MAKE_ARGB(0xef,0x80,0x80,0x00)
! #define UI_MOUSEOVER_COLOR MAKE_ARGB(0xff,0xff,0xff,0x80)
! #define UI_MOUSEOVER_BG_COLOR MAKE_ARGB(0x70,0x40,0x40,0x00)
! #define UI_MOUSEDOWN_COLOR MAKE_ARGB(0xff,0xff,0xff,0x80)
! #define UI_MOUSEDOWN_BG_COLOR MAKE_ARGB(0xb0,0x60,0x60,0x00)
! #define UI_DIPSW_COLOR MAKE_ARGB(0xff,0xff,0xff,0x00)
! #define UI_SLIDER_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff)
/* cancel return value for a UI handler */
#define UI_HANDLER_CANCEL ((UINT32)~0)
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/video.c C:\mingw\mingw64-w32\mame_original/src/emu/video.c
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/video.c Fri Jan 11 17:49:58 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/video.c Sat Feb 16 11:29:02 2013
***************
*** 502,507 ****
--- 502,568 ----
m_movie_frame = 0;
}
+ /*-------------------------------------------------
+ MKCHAMP - BELOW IS THE NEW SUB CALLED FROM UI.C. ONLY DIFFERENCE BETWEEN THIS SUB AND
+ frame_update IS IT CALLS NEW SUB CALLED update_hi INSTEAD OF update (located
+ in osd/windows/video.c)
+ -------------------------------------------------*/
+
+ void video_manager::frame_update_hi(bool debug)
+ {
+ // only render sound and video if we're in the running phase
+ int phase = machine().phase();
+ bool skipped_it = m_skipping_this_frame;
+ if (phase == MACHINE_PHASE_RUNNING && (!machine().paused() || machine().options().update_in_pause()))
+ {
+ bool anything_changed = finish_screen_updates();
+
+ // if none of the screens changed and we haven't skipped too many frames in a row,
+ // mark this frame as skipped to prevent throttling; this helps for games that
+ // don't update their screen at the monitor refresh rate
+ if (!anything_changed && !m_auto_frameskip && m_frameskip_level == 0 && m_empty_skip_count++ < 3)
+ skipped_it = true;
+ else
+ m_empty_skip_count = 0;
+ }
+
+ // draw the user interface
+ ui_update_and_render(machine(), &machine().render().ui_container());
+
+ // update the internal render debugger
+ debugint_update_during_game(machine());
+
+ // if we're throttling, synchronize before rendering
+ attotime current_time = machine().time();
+ if (!debug && !skipped_it && effective_throttle())
+ update_throttle(current_time);
+
+ // ask the OSD to update
+ g_profiler.start(PROFILER_BLIT);
+ machine().osd().update_hi(!debug && skipped_it);
+ g_profiler.stop();
+
+ // perform tasks for this frame
+ if (!debug)
+ machine().call_notifiers(MACHINE_NOTIFY_FRAME);
+
+ // update frameskipping
+ if (!debug)
+ update_frameskip();
+
+ // update speed computations
+ if (!debug && !skipped_it)
+ recompute_speed(current_time);
+
+ // call the end-of-frame callback
+ if (phase == MACHINE_PHASE_RUNNING)
+ {
+ // reset partial updates if we're paused or if the debugger is active
+ if (machine().primary_screen != NULL && (machine().paused() || debug || debugger_within_instruction_hook(machine())))
+ machine().primary_screen->reset_partial_updates();
+ }
+ }
+
//-------------------------------------------------
// add_sound_to_recording - add sound to a movie
***************
*** 1008,1015 ****
osd_ticks_t tps = osd_ticks_per_second();
m_speed_percent = delta_emutime.as_double() * (double)tps / (double)delta_realtime;
- machine().speed_percent = speed_percent();
-
// remember the last times
m_speed_last_realtime = realtime;
m_speed_last_emutime = emutime;
--- 1069,1074 ----
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/emu/video.h C:\mingw\mingw64-w32\mame_original/src/emu/video.h
*** C:\mingw\mingw64-w32\mame_modificato/src/emu/video.h Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/emu/video.h Sat Feb 16 11:29:02 2013
***************
*** 103,108 ****
--- 103,111 ----
// render a frame
void frame_update(bool debug = false);
+
+ // MKCHAMP - DECLARING THE NEW video_frame_update_hi SUB
+ void frame_update_hi(bool debug = false);
// current speed helpers
astring &speed_text(astring &string);
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/lib/util/astring.c C:\mingw\mingw64-w32\mame_original/src/lib/util/astring.c
*** C:\mingw\mingw64-w32\mame_modificato/src/lib/util/astring.c Thu Aug 23 02:44:00 2012
--- C:\mingw\mingw64-w32\mame_original/src/lib/util/astring.c Sat Aug 18 12:02:48 2012
***************
*** 75,97 ****
return true;
// allocate a new buffer with some slop
! int alloclen = length + 1;
! alloclen += (alloclen < 262144) ? alloclen : 262144;;
!
! // memory alignment, in bytes (must be power of 2)
! alloclen += 8 - (alloclen % 8);
!
char *newbuf = new char[alloclen];
// swap in the new buffer and free the old one
char *oldbuf = (m_text == m_smallbuf) ? NULL : m_text;
!
! memcpy(newbuf, m_text, m_alloclen);
! m_text = newbuf;
m_alloclen = alloclen;
!
! if (oldbuf)
! delete[] oldbuf;
return true;
}
--- 75,89 ----
return true;
// allocate a new buffer with some slop
! int alloclen = length + 256;
char *newbuf = new char[alloclen];
// swap in the new buffer and free the old one
char *oldbuf = (m_text == m_smallbuf) ? NULL : m_text;
! m_text = strcpy(newbuf, m_text);
! m_len = strlen(m_text);
m_alloclen = alloclen;
! delete[] oldbuf;
return true;
}
***************
*** 453,459 ****
if (*src != ch)
*dst++ = *src;
*dst = 0;
! m_len = dst - m_text;
return *this;
}
--- 445,451 ----
if (*src != ch)
*dst++ = *src;
*dst = 0;
! m_len = strlen(m_text);
return *this;
}
***************
*** 508,522 ****
{
// first remove stuff from the end
for (char *ptr = m_text + len() - 1; ptr >= m_text && (!(*ptr & 0x80) && isspace(UINT8(*ptr))); ptr--)
- {
- m_len--;
*ptr = 0;
- }
// then count how much to remove from the beginning
char *ptr;
for (ptr = m_text; *ptr != 0 && (!(*ptr & 0x80) && isspace(UINT8(*ptr))); ptr++) ;
if (ptr > m_text)
substr(ptr - m_text);
return *this;
}
--- 500,512 ----
{
// first remove stuff from the end
for (char *ptr = m_text + len() - 1; ptr >= m_text && (!(*ptr & 0x80) && isspace(UINT8(*ptr))); ptr--)
*ptr = 0;
// then count how much to remove from the beginning
char *ptr;
for (ptr = m_text; *ptr != 0 && (!(*ptr & 0x80) && isspace(UINT8(*ptr))); ptr++) ;
if (ptr > m_text)
substr(ptr - m_text);
+ m_len = strlen(m_text);
return *this;
}
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/mame/machine/cps2crpt.c C:\mingw\mingw64-w32\mame_original/src/mame/machine/cps2crpt.c
*** C:\mingw\mingw64-w32\mame_modificato/src/mame/machine/cps2crpt.c Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/mame/machine/cps2crpt.c Sat Feb 16 11:29:02 2013
***************
*** 111,116 ****
--- 111,117 ----
*******************************************************************************/
#include "emu.h"
+ #include "emuopts.h"
#include "cpu/m68000/m68000.h"
#include "ui.h"
#include "includes/cps1.h"
***************
*** 672,680 ****
if ((i & 0xff) == 0)
{
! char loadingMessage[256]; // for displaying with UI
! sprintf(loadingMessage, "Decrypting %d%%", i*100/0x10000);
! ui_set_startup_text(machine, loadingMessage,FALSE);
}
--- 673,685 ----
if ((i & 0xff) == 0)
{
! //MKCHAMP - DISABLING THE DECRYPING MESSAGE
! if (machine.options().disable_loading_patch())
! {
! char loadingMessage[256]; // for displaying with UI
! sprintf(loadingMessage, "Decrypting %d%%", i*100/0x10000);
! ui_set_startup_text(machine, loadingMessage,FALSE);
! }
}
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/osd/osdepend.c C:\mingw\mingw64-w32\mame_original/src/osd/osdepend.c
*** C:\mingw\mingw64-w32\mame_modificato/src/osd/osdepend.c Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/osd/osdepend.c Sat Feb 16 11:29:02 2013
***************
*** 115,120 ****
--- 115,136 ----
//
}
+ //-------------------------------------------------
+ // MKChamp update_hi - periodic system update
+ //-------------------------------------------------
+
+ void osd_interface::update_hi(bool skip_redraw)
+ {
+ //
+ // This method is called periodically to flush video updates to the
+ // screen, and also to allow the OSD a chance to update other systems
+ // on a regular basis. In general this will be called at the frame
+ // rate of the system being run; however, it may be called at more
+ // irregular intervals in some circumstances (e.g., multi-screen games
+ // or games with asynchronous updates).
+ //
+ }
+
//-------------------------------------------------
// init_debugger - perform debugger-specific
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/osd/osdepend.h C:\mingw\mingw64-w32\mame_original/src/osd/osdepend.h
*** C:\mingw\mingw64-w32\mame_modificato/src/osd/osdepend.h Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/osd/osdepend.h Sat Feb 16 11:29:02 2013
***************
*** 93,98 ****
--- 93,101 ----
// video overridables
virtual void *get_slider_list();
+
+ //MKCHAMP - DECLARING THE NEW osd_update_hi SUB
+ virtual void update_hi(bool skip_redraw);
private:
// internal state
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/video.c C:\mingw\mingw64-w32\mame_original/src/osd/windows/video.c
*** C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/video.c Thu Dec 15 15:10:46 2011
--- C:\mingw\mingw64-w32\mame_original/src/osd/windows/video.c Sat Feb 16 11:29:02 2013
***************
*** 226,231 ****
--- 226,253 ----
check_osd_inputs(machine());
}
+ //============================================================
+ // MKCHAMP - BELOW IS THE NEW SUB CALLED FROM emu/video.c. ONLY
+ // DIFFERENCE BETWEEN THIS SUB AND osd_update IS IT CALLS NEW SUB CALLED winwindow_video_window_update_hi
+ // INSTEAD OF winwindow_video_window_update (located in osd/windows/window.c)
+ //============================================================
+
+ void windows_osd_interface::update_hi(bool skip_redraw)
+ {
+ // ping the watchdog on each update
+ winmain_watchdog_ping();
+
+ // if we're not skipping this redraw, update all windows
+ if (!skip_redraw)
+ for (win_window_info *window = win_window_list; window != NULL; window = window->next)
+ winwindow_video_window_update_hi(window);
+
+ // poll the joystick values here
+ winwindow_process_events(machine(), TRUE);
+ wininput_poll(machine());
+ check_osd_inputs(machine());
+ }
+
//============================================================
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/window.c C:\mingw\mingw64-w32\mame_original/src/osd/windows/window.c
*** C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/window.c Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/osd/windows/window.c Sat Feb 16 11:29:02 2013
***************
*** 825,830 ****
--- 825,909 ----
mtlog_add("winwindow_video_window_update: end");
}
+ //============================================================
+ // MKCHAMP - LAST OF THE NEW SUB CHAIN. FOR THOSE FOLLOWING, THE PATH IS:
+ // emu/ui.c->ui_set_startup_text CALLS emu/video.c->video_frame_update_hi WHICH CALLS
+ // osd/windows/video.c->osd_update_hi WHICH CALLS THIS SUB.
+ // THE ONLY DIFFERENCE BETWEEN THIS SUB AND winwindow_video_window_update IS IT DOES NOT
+ // perform PostMessage(window->hwnd, WM_USER_REDRAW, 0, (LPARAM)primlist) OR
+ // SendMessage(window->hwnd, WM_USER_REDRAW, 0, (LPARAM)primlist)
+ // ALL THIS DOES IS ALLOW MAME TO PROPERLY RUN TO CALCULATE THE REFRESHSPEED/ETC. WITHOUT
+ // GIVING THE WHITE BOX THAT SEEMS TO ANNOY SOME PEOPLE!
+ //============================================================
+
+ void winwindow_video_window_update_hi(win_window_info *window)
+ {
+ int targetview, targetorient;
+ render_layer_config targetlayerconfig;
+
+ assert(GetCurrentThreadId() == main_threadid);
+
+ mtlog_add("winwindow_video_window_update: begin");
+
+ // see if the target has changed significantly in window mode
+ targetview = window->target->view();
+ targetorient = window->target->orientation();
+ targetlayerconfig = window->target->layer_config();
+ if (targetview != window->targetview || targetorient != window->targetorient || targetlayerconfig != window->targetlayerconfig)
+ {
+ window->targetview = targetview;
+ window->targetorient = targetorient;
+ window->targetlayerconfig = targetlayerconfig;
+
+ // in window mode, reminimize/maximize
+ if (!window->fullscreen)
+ {
+ if (window->isminimized)
+ SendMessage(window->hwnd, WM_USER_SET_MINSIZE, 0, 0);
+ if (window->ismaximized)
+ SendMessage(window->hwnd, WM_USER_SET_MAXSIZE, 0, 0);
+ }
+ }
+
+ // if we're visible and running and not in the middle of a resize, draw
+ if (window->hwnd != NULL && window->target != NULL && window->drawdata != NULL)
+ {
+ int got_lock = TRUE;
+
+ mtlog_add("winwindow_video_window_update: try lock");
+
+ // only block if we're throttled
+ if (window->machine().video().throttled() || timeGetTime() - last_update_time > 250)
+ osd_lock_acquire(window->render_lock);
+ else
+ got_lock = osd_lock_try(window->render_lock);
+
+ // only render if we were able to get the lock
+ if (got_lock)
+ {
+ // render_primitive_list *primlist;
+
+ mtlog_add("winwindow_video_window_update: got lock");
+
+ // don't hold the lock; we just used it to see if rendering was still happening
+ osd_lock_release(window->render_lock);
+
+ // ensure the target bounds are up-to-date, and then get the primitives
+ // primlist = (*draw.window_get_primitives)(window);
+ (*draw.window_get_primitives)(window);
+ // post a redraw request with the primitive list as a parameter
+ last_update_time = timeGetTime();
+ mtlog_add("winwindow_video_window_update: PostMessage start");
+ // if (multithreading_enabled)
+ // PostMessage(window->hwnd, WM_USER_REDRAW, 0, (LPARAM)primlist);
+ // else
+ // SendMessage(window->hwnd, WM_USER_REDRAW, 0, (LPARAM)primlist);
+ mtlog_add("winwindow_video_window_update: PostMessage end");
+ }
+ }
+
+ mtlog_add("winwindow_video_window_update: end");
+ }
//============================================================
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/window.h C:\mingw\mingw64-w32\mame_original/src/osd/windows/window.h
*** C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/window.h Fri Jan 11 08:32:46 2013
--- C:\mingw\mingw64-w32\mame_original/src/osd/windows/window.h Sat Feb 16 11:29:02 2013
***************
*** 150,155 ****
--- 150,157 ----
BOOL winwindow_has_focus(void);
void winwindow_update_cursor_state(running_machine &machine);
void winwindow_video_window_update(win_window_info *window);
+ //MKCHAMP - DECLARING THE NEW SUB winwindow_video_window_update_hi
+ void winwindow_video_window_update_hi(win_window_info *window);
win_monitor_info *winwindow_video_window_monitor(win_window_info *window, const RECT *proposed);
LRESULT CALLBACK winwindow_video_window_proc(HWND wnd, UINT message, WPARAM wparam, LPARAM lparam);
diff -crB C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/winmain.h C:\mingw\mingw64-w32\mame_original/src/osd/windows/winmain.h
*** C:\mingw\mingw64-w32\mame_modificato/src/osd/windows/winmain.h Fri Jan 11 17:55:27 2013
--- C:\mingw\mingw64-w32\mame_original/src/osd/windows/winmain.h Sat Feb 16 11:29:02 2013
***************
*** 339,344 ****
--- 323,330 ----
private:
static void osd_exit(running_machine &machine);
+ //MKChamp - Declaring hi subroutine
+ virtual void update_hi(bool skip_redraw);
static const int DEFAULT_FONT_HEIGHT = 200;
};
Only in C:\mingw\mingw64-w32\mame_modificato/src/osd: winui
In caso andrebbe applicata al sorgente non del mame ma del mamefx 0.148. Altrimenti potrei provare e mettere il mio eseguibile da qualche parte ma non saprei come fare. Questa però disabilità del tutto i nag screen e non ti consente di rimetterli dal file .ini del mame perchè quel passaggio non l'ho capito!
Comunque non mi assumo responsabilità poichè come già detto è stato un mio esperimento personale ed in ste cose sono una pippa. Se volete provare prendetelo anche voi come un esperimento!