Difference between revisions of "02A3"

From GTAMods Wiki
Jump to navigation Jump to search
m
 
Line 21: Line 21:
 
These are disassembled code for this opcode both from PC v1.0 US.
 
These are disassembled code for this opcode both from PC v1.0 US.
 
=== GTA III ===
 
=== GTA III ===
<syntaxhighlight lang="nasm" style="overflow-x: auto;">
+
<syntaxhighlight lang="nasm">
 
loc_44524F:
 
loc_44524F:
 
     lea    eax, [ebp+10h]                    ; get address of script's current instruction pointer
 
     lea    eax, [ebp+10h]                    ; get address of script's current instruction pointer
     mov    ecx, ebp                          ; get address of CRunningScript for thiscall
+
     mov    ecx, ebp                          ; get address of script for thiscall
 
     push    1                                ; push 1 for one parameter to collect
 
     push    1                                ; push 1 for one parameter to collect
 
     push    eax                              ; push address of script's current instruction pointer
 
     push    eax                              ; push address of script's current instruction pointer
     call    CRunningScript::CollectParameters ; call CRunningScript::CollectParameters
+
     call    CRunningScript::CollectParameters ; call CRunningScript::CollectParameters(uint *,short)
 
     cmp    ds:ScriptParams[0], 0            ; check whether or not value of first parameter is 0
 
     cmp    ds:ScriptParams[0], 0            ; check whether or not value of first parameter is 0
 
     jz      short loc_445271
 
     jz      short loc_445271
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
     call    CCamera::SetWideScreenOn          ; call CCamera::SetWideScreenOn
+
     call    CCamera::SetWideScreenOn          ; call CCamera::SetWideScreenOn(void)
 
     jmp    short loc_44527B
 
     jmp    short loc_44527B
 
loc_445271:
 
loc_445271:
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
     call    CCamera::SetWideScreenOff        ; call CCamera::SetWideScreenOff
+
     call    CCamera::SetWideScreenOff        ; call CCamera::SetWideScreenOff(void)
 
loc_44527B:
 
loc_44527B:
 
     xor    al, al                            ; return 0
 
     xor    al, al                            ; return 0
Line 41: Line 41:
  
 
=== Vice City ===
 
=== Vice City ===
<syntaxhighlight lang="nasm" style="overflow-x: auto;">
+
<syntaxhighlight lang="nasm">
 
loc_457163:
 
loc_457163:
 
     lea    eax, [ebp+10h]                    ; get address of script's current instruction pointer
 
     lea    eax, [ebp+10h]                    ; get address of script's current instruction pointer
     mov    ecx, ebp                          ; get address of CRunningScript for thiscall
+
     mov    ecx, ebp                          ; get address of script for thiscall
 
     push    1                                ; push 1 for one parameter to collect
 
     push    1                                ; push 1 for one parameter to collect
 
     push    eax                              ; push address of script's current instruction pointer
 
     push    eax                              ; push address of script's current instruction pointer
     call    CRunningScript::CollectParameters ; call CRunningScript::CollectParameters
+
     call    CRunningScript::CollectParameters ; call CRunningScript::CollectParameters(uint *,short)
 
     cmp    ds:ScriptParams[0], 0            ; check whether or not value of first parameter is 0
 
     cmp    ds:ScriptParams[0], 0            ; check whether or not value of first parameter is 0
 
     jz      short loc_457185
 
     jz      short loc_457185
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
     call    CCamera::SetWideScreenOn          ; call CCamera::SetWideScreenOn
+
     call    CCamera::SetWideScreenOn          ; call CCamera::SetWideScreenOn(void)
 
     jmp    short loc_45718F
 
     jmp    short loc_45718F
 
loc_457185:
 
loc_457185:
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
 
     mov    ecx, offset TheCamera            ; get address of TheCamera for thiscall
     call    CCamera::SetWideScreenOff        ; call CCamera::SetWideScreenOff
+
     call    CCamera::SetWideScreenOff        ; call CCamera::SetWideScreenOff(void)
 
loc_45718F:
 
loc_45718F:
 
     xor    al, al                            ; return 0
 
     xor    al, al                            ; return 0

Latest revision as of 04:29, 24 May 2017

GTA III Vice City San Andreas SWITCH_WIDESCREEN


Description
Enables widescreen
Syntax
02A3: enable_widescreen [int]
Parameter
[int]
0 = off, 1 = on

This opcode enables widescreen by placing two black bars on the top and bottom of the screen. It is used mainly for cutscenes to make it look cinematic. When widescreen is enabled, the HUD, radar, crosshairs, scopes are disabled. In Vice City and San Andreas, the game cannot be paused (even minimizing the game won't pause the game when it usually does), text in the middle bottom of the screen is repositioned, text boxes do not appear visually but can be heard appearing, and the screen is squished.

Widescreen effect in Vice City:

0 1
VCWidescreenOff.jpg VCWidescreenOn.jpg

Disassembled code

These are disassembled code for this opcode both from PC v1.0 US.

GTA III

loc_44524F:
    lea     eax, [ebp+10h]                    ; get address of script's current instruction pointer
    mov     ecx, ebp                          ; get address of script for thiscall
    push    1                                 ; push 1 for one parameter to collect
    push    eax                               ; push address of script's current instruction pointer
    call    CRunningScript::CollectParameters ; call CRunningScript::CollectParameters(uint *,short)
    cmp     ds:ScriptParams[0], 0             ; check whether or not value of first parameter is 0
    jz      short loc_445271
    mov     ecx, offset TheCamera             ; get address of TheCamera for thiscall
    call    CCamera::SetWideScreenOn          ; call CCamera::SetWideScreenOn(void)
    jmp     short loc_44527B
loc_445271:
    mov     ecx, offset TheCamera             ; get address of TheCamera for thiscall
    call    CCamera::SetWideScreenOff         ; call CCamera::SetWideScreenOff(void)
loc_44527B:
    xor     al, al                            ; return 0

Vice City

loc_457163:
    lea     eax, [ebp+10h]                    ; get address of script's current instruction pointer
    mov     ecx, ebp                          ; get address of script for thiscall
    push    1                                 ; push 1 for one parameter to collect
    push    eax                               ; push address of script's current instruction pointer
    call    CRunningScript::CollectParameters ; call CRunningScript::CollectParameters(uint *,short)
    cmp     ds:ScriptParams[0], 0             ; check whether or not value of first parameter is 0
    jz      short loc_457185
    mov     ecx, offset TheCamera             ; get address of TheCamera for thiscall
    call    CCamera::SetWideScreenOn          ; call CCamera::SetWideScreenOn(void)
    jmp     short loc_45718F
loc_457185:
    mov     ecx, offset TheCamera             ; get address of TheCamera for thiscall
    call    CCamera::SetWideScreenOff         ; call CCamera::SetWideScreenOff(void)
loc_45718F:
    xor     al, al                            ; return 0

Keywords

set, toggle, widescreen, black bars, border