; A nonblocking native modal never starts a console game or changes a stake. .code BeginUnavailable3D PROC uses esi edi lea esi, screenBuffer lea edi, unavailableBackground3D mov ecx, SCREEN_SIZE rep movsd mov engineMode, MODE_UNAVAILABLE mov paused3D, 0 call ClearKeys3D mov mouseClick3D, 0 ret BeginUnavailable3D ENDP HandleUnavailable3D PROC invoke Pressed3D, 45h test eax, eax jnz unavailable_close invoke Pressed3D, 20h test eax, eax jnz unavailable_close invoke Pressed3D, 0Dh test eax, eax jnz unavailable_close cmp mouseClick3D, 0 je unavailable_input_done cmp mouseX3D, 128 jb unavailable_input_done cmp mouseX3D, 192 ja unavailable_input_done cmp mouseY3D, 135 jb unavailable_input_done cmp mouseY3D, 155 ja unavailable_input_done unavailable_close: mov engineMode, MODE_WALK call ClearKeys3D unavailable_input_done: mov mouseClick3D, 0 ret HandleUnavailable3D ENDP RenderUnavailable3D PROC uses esi edi lea esi, unavailableBackground3D lea edi, screenBuffer mov ecx, SCREEN_SIZE rep movsd cmp engineMode, MODE_UNAVAILABLE jne unavailable_render_done lea edi, screenBuffer mov ecx, SCREEN_SIZE unavailable_dim: mov eax, [edi] and eax, 00FEFEFEh shr eax, 1 stosd loop unavailable_dim invoke DrawBoxBorder, 52, 88, 216, 80, 00171D20h, 00B49D63h, 1 invoke DrawString8x8, 84, 108, OFFSET unavailableText3D, 00ECD9A8h invoke DrawBoxBorder, 128, 135, 64, 20, 00303C3Ch, 006C7E7Eh, 1 invoke DrawString8x8, 132, 142, OFFSET unavailableClose3D, 00FFFFFFh unavailable_render_done: ret RenderUnavailable3D ENDP