1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-02-03 04:05:49 +01:00

Now uses viewport functions.

This commit is contained in:
Duncan
2014-07-15 14:59:43 +01:00
parent c5c4127194
commit 3506899261

View File

@@ -27,60 +27,60 @@ rct_widget window_main_widgets[] = {
{ WIDGETS_END },
};
void window_main_empty(){}
void window_main_paint();
void* window_main_events[] = {
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_paint,
window_main_empty
}
/**
* Creates the main window and the toolbars or title screen buttons.
* Creates the main window that holds the main viewport.
* rct2: 0x0066B3E8
*/
void window_main_open()
{
rct_window* window;
rct_widget* main_widgets = (rct_widget*)0x009A9414;
main_widgets[0].right = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, sint16);
main_widgets[0].bottom = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, sint16);
window_main_widgets[0].right = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, sint16);
window_main_widgets[0].bottom = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, sint16);
window = window_create(
0, 0,
window_main_widgets[0].right, window_main_widgets[0].bottom,
(uint32*)0x0097C0BC,
window_main_events,
WC_MAIN_WINDOW,
WF_STICK_TO_BACK
);
window->widgets = main_widgets;
window->widgets = window_main_widgets;
// RCT2_CALLPROC_X(0x006EB009, window->x, window->y, 0x4000000, 0x0FFF0FFF, window, 0, 0);
#ifdef _MSC_VER
__asm {
mov esi, window
mov edx, 0FFF0FFFh
mov eax, [esi+2Ch]
mov ebx, [esi+30h]
mov ecx, 4000000h
push ebp
mov ebp, 6EB009h
call ebp
}
__asm {
pop ebp
or word ptr [edi+12h], 400h
}
#else
__asm__ ( "\
\n\
push ebx \n\
mov esi, %[window] \n\
mov edx, 0x0FFF0FFF \n\
mov eax, [esi+0x2C] \n\
mov ebx, [esi+0x30] \n\
mov ecx, 0x4000000 \n\
push ebp \n\
mov ebp, 0x6EB009 \n\
call ebp \n\
\n\
pop ebp \n\
or word ptr [edi+0x12], 0x400 \n\
pop ebx \n\
" : [window] "+m" (window) : : "esi","edx","eax","ecx" );
#endif
viewport_create(window, window->x, window->y, window->width, window->height, 0x40000000, 0x0FFF0FFF);
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, sint32) = 0;
RCT2_GLOBAL(0x009E32B0, uint8) = 0;
@@ -88,3 +88,25 @@ void window_main_open()
RCT2_GLOBAL(0x009E32B3, uint8) = 0;
RCT2_GLOBAL(0x00F3EFA2, uint8) = 0;
}
/**
*
* rct2: 0x66CCAE
* This function immediately jumps to 0x00685BE1 this is the second function
* decompiled.
*/
void window_main_paint(){
rct_window* w;
rct_draw_pixel_info * dpi;
#ifdef _MSC_VER
__asm mov w, esi
__asm mov dpi, edi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
__asm__ ( "mov %[dpi], edi " : [dpi] "+m" (dpi) );
#endif
viewport_render(dpi, w->viewport, dpi->left, dpi->top, dpi->right, dpi->bottom);
}