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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user