Regresar   Foro de marcianitos.org > Emuladores y programas de todo tipo > Emuladores > VPinball/Future Pinball

 
 
Old 03-nov-2008, 22:21   #1
davidmval
Usuario registrado
Para Peterpunk y compañía.

Quería saber al igual que otros compañeros que lo preguntaban en otro hilo si se podría quitar la ventana de renderizado de las mesas y la ejecución de vPinball.exe en minimizado para la versión 8,ya que en dicho hilo no se llegó a contestar.

Muchas gracias de antemano.
   
Old 15-nov-2008, 19:03   #2
PeterPunk
Editor Marciano
Qué bueno soy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Estoy contento, porque ayer me he tirado cuatro horitas para conseguir ocultarlo de todo pero me quedaba una ventana del vpinmame.dll 2.0.1, la que muestra una de las siguientes imágenes junto con el nombre de la mesa:


Pero ahora mismo me vino la inspiración y creo que está solucionado. Para los amantes de los detalles, les diré que los cambios están en:
Code:
0E36EA9C   |.  8B5C24 20            MOV EBX,[ESP+20]
0E36EAA0   |.  75 0A                JNZ SHORT 0E36EAAC
0E36EAA2   |.  F7C3 00000040        TEST EBX,40000000
0E36EAA8   |.  74 02                JE SHORT 0E36EAAC
0E36EAAA   |.  8BFE                 MOV EDI,ESI
0E36EAAC   |>  8B4424 18            MOV EAX,[ESP+18]
0E36EAB0   |.  85C0                 TEST EAX,EAX
0E36EAB2   |.  75 05                JNZ SHORT 0E36EAB9
0E36EAB4   |.  B8 6050660E          MOV EAX,0E665060
0E36EAB9   |>  8B7424 30            MOV ESI,[ESP+30]
0E36EABD   |.  8B48 04              MOV ECX,[EAX+4]
0E36EAC0   |.  8B10                 MOV EDX,[EAX]
0E36EAC2   |.  56                   PUSH ESI                             ; /lParam
0E36EAC3   |.  8B35 8475030F        MOV ESI,[F037584]                    ; |vpinmame.0E360000
0E36EAC9   |.  56                   PUSH ESI                             ; |hInst => 0E360000
0E36EACA   |.  8B7424 1C            MOV ESI,[ESP+1C]                     ; |
0E36EACE   |.  57                   PUSH EDI                             ; |hMenu
0E36EACF   |.  56                   PUSH ESI                             ; |hParent
0E36EAD0   |.  8B70 0C              MOV ESI,[EAX+C]                      ; |
0E36EAD3   |.  8B40 08              MOV EAX,[EAX+8]                      ; |
0E36EAD6   |.  2BF1                 SUB ESI,ECX                          ; |
0E36EAD8   |.  56                   PUSH ESI                             ; |Height
0E36EAD9   |.  2BC2                 SUB EAX,EDX                          ; |
0E36EADB   |.  50                   PUSH EAX                             ; |Width
0E36EADC   |.  8B4424 3C            MOV EAX,[ESP+3C]                     ; |
0E36EAE0   |.  51                   PUSH ECX                             ; |Y
0E36EAE1   |.  8B4C24 38            MOV ECX,[ESP+38]                     ; |
0E36EAE5   |.  52                   PUSH EDX                             ; |X
0E36EAE6   |.  53                   PUSH EBX                             ; |Style
0E36EAE7   |.  0FB7D5               MOVZX EDX,BP                         ; |
0E36EAEA   |.  51                   PUSH ECX                             ; |WindowName
0E36EAEB   |.  52                   PUSH EDX                             ; |Class
0E36EAEC   |.  50                   PUSH EAX                             ; |ExtStyle
0E36EAED   |.  FF15 70E34E0E        CALL [<&USER32.CreateWindowExA>]     ; \CreateWindowExA
donde he cambiado el "mov ebx, [esp+20]" por un "xor ebx, ebx" que al final es el estilo de la ventana que se va a crear con la API CreateWindowExA. Esto se traduce ha cambiar con un editor hexadecimal en dicha posición, los bytes "8B 5C 24 20" por "33 DB 90 90". Para encontrar los bytes a cambiar en el editor, lo mejor es buscar unos cuantos más bytes de los que queremos encontrar para asegurarnos que no haya otras coincidencias, por ejemplo en este caso podemos buscar "85 FF 8B 5C 24 20 75 0A"

y en:
Code:
0E36F06E   |.  6A 00                PUSH 0                               ; /Timerproc = NULL
0E36F070   |.  68 88130000          PUSH 1388                            ; |Timeout = 5000. ms
0E36F075   |.  6A 01                PUSH 1                               ; |TimerID = 1
0E36F077   |.  52                   PUSH EDX                             ; |hWnd
0E36F078   |.  FF15 E0E24E0E        CALL [<&USER32.SetTimer>]            ; \SetTimer
donde he cambiado el "push 1388" (que eran los 5 segundos que se mostraba la dichosa pantalla) por un "push 0". Por lo que en el ejecutable he cambiado los bytes "68 88 13 00 00" por "6A 00 90 90 90"

El resto de cambios era igual que en la versión que ya había subido y que está explicado aquí, bueno, más unos cambios que estaban realizados pero no explicados, como que el formulario del vpinball.exe que muestra una barra del progreso del renderizado de la mesa no se muestre.

No lo he probado mucho, pero espero que funcione todo correctamente. Espero que los disfrutéis.

Saludos.

Visual Pinbal 8.1 + VisualPinMAME (2.0.1)

rapidshare -> http://rapidshare.com/files/164060064/Pinball.zip.html
megaupload -> http://www.megaupload.com/?d=W00OJA00
   
Old 15-nov-2008, 20:38   #3
akiles
Marciano
Muchisimas gracias Peterpunk lo estaba buscando menuda currada que te has pegado eres
un crack saludos
   
Old 17-nov-2008, 13:00   #4
davidmval
Usuario registrado
Muchísimas gracias Peterpunk por la labor tan formidable y desinteresada a la vez.Nos a costado un poco pero al final lo conseguimos,ya tenemos el Vpinball 8.1 + Vpinmame 2.0.1 sin renderizado de mesas ni ventanitas chorras.

Muchas gracias de nuevo en nombre de todos los que necesitábamos estos ficheros para acabar nuestros proyectos.

Un saludo.