Merge remote-tracking branch 'upstream/master' into impl/legoomni-deleteobject

This commit is contained in:
Misha 2024-01-28 15:22:27 -05:00
commit ee840f09aa
No known key found for this signature in database
GPG Key ID: 8441D12AEF33FED8
274 changed files with 6229 additions and 1340 deletions

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install python libraries - name: Install python libraries
run: | run: |
@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install python libraries - name: Install python libraries
run: | run: |

View File

@ -41,7 +41,7 @@ jobs:
with: with:
arch: amd64_x86 # Use the 64-bit x64-native cross tools to build 32-bit x86 code arch: amd64_x86 # Use the 64-bit x64-native cross tools to build 32-bit x86 code
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Build - name: Build
run: | run: |
@ -53,9 +53,9 @@ jobs:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
repository: 'itsmattkc/msvc420' repository: 'itsmattkc/msvc420'
path: msvc420 path: msvc420
@ -145,6 +145,12 @@ jobs:
run: | run: |
python3 tools/verexp/verexp.py legobin/LEGO1.DLL build/LEGO1.DLL python3 tools/verexp/verexp.py legobin/LEGO1.DLL build/LEGO1.DLL
- name: Check Vtables
shell: bash
run: |
python3 tools/vtable/vtable.py legobin/ISLE.EXE build/ISLE.EXE build/ISLE.PDB .
python3 tools/vtable/vtable.py legobin/LEGO1.DLL build/LEGO1.DLL build/LEGO1.PDB .
- name: Upload Artifact - name: Upload Artifact
uses: actions/upload-artifact@master uses: actions/upload-artifact@master
with: with:
@ -159,7 +165,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'isledecomp/isle' }} if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'isledecomp/isle' }}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
repository: 'probonopd/uploadtool' repository: 'probonopd/uploadtool'

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Run clang-format - name: Run clang-format
run: | run: |
@ -24,12 +24,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install python libraries - name: Install python libraries
shell: bash shell: bash
run: | run: |
pip install black pylint pytest -r tools/requirements.txt pip install black==23.* pylint==3.* pytest==7.* -r tools/requirements.txt
- name: Run pylint and black - name: Run pylint and black
shell: bash shell: bash

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install LLVM and Clang - name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v1 uses: KyleMayes/install-llvm-action@v1

View File

@ -8,7 +8,7 @@ jobs:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install python libraries - name: Install python libraries
shell: bash shell: bash
@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install python libraries - name: Install python libraries
shell: bash shell: bash

View File

@ -4,6 +4,21 @@ option dotname
.model flat, c .model flat, c
assume fs:nothing assume fs:nothing
public FUN_100bd530
public FUN_100bd580
public FUN_100bd600
public FUN_100bd680
public FUN_100bd6e0
public FUN_100bd760
public FUN_100bd880
public FUN_100bd8a0
public FUN_100bd8f0
public FUN_100bd940
public FUN_100bd960
public FUN_100bda10
public FUN_100bdac0
public FUN_100bdc00
public FUN_100bdc90
public DecodeFLCFrame public DecodeFLCFrame
; This is so reccmp can detect the end of DecodeFLCFrame ; This is so reccmp can detect the end of DecodeFLCFrame
@ -11,7 +26,7 @@ public EndOfSection
.text SEGMENT BYTE PUBLIC 'CODE' .text SEGMENT BYTE PUBLIC 'CODE'
?_25162 LABEL NEAR FUN_100bd530 LABEL NEAR
mov ax, word ptr [esp+0CH] ; 100BD530 _ 66: 8B. 44 24, 0C mov ax, word ptr [esp+0CH] ; 100BD530 _ 66: 8B. 44 24, 0C
push esi ; 100BD535 _ 56 push esi ; 100BD535 _ 56
test ax, ax ; 100BD536 _ 66: 85. C0 test ax, ax ; 100BD536 _ 66: 85. C0
@ -43,7 +58,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25164 LABEL NEAR FUN_100bd580 LABEL NEAR
lea eax, [esp+18H] ; 100BD580 _ 8D. 44 24, 18 lea eax, [esp+18H] ; 100BD580 _ 8D. 44 24, 18
push esi ; 100BD584 _ 56 push esi ; 100BD584 _ 56
mov si, word ptr [esp+10H] ; 100BD585 _ 66: 8B. 74 24, 10 mov si, word ptr [esp+10H] ; 100BD585 _ 66: 8B. 74 24, 10
@ -55,7 +70,7 @@ public EndOfSection
mov edi, dword ptr [esp+14H] ; 100BD595 _ 8B. 7C 24, 14 mov edi, dword ptr [esp+14H] ; 100BD595 _ 8B. 7C 24, 14
push edx ; 100BD599 _ 52 push edx ; 100BD599 _ 52
push edi ; 100BD59A _ 57 push edi ; 100BD59A _ 57
call ?_25168 ; 100BD59B _ E8, 00000060 call FUN_100bd600 ; 100BD59B _ E8, 00000060
add esp, 16 ; 100BD5A0 _ 83. C4, 10 add esp, 16 ; 100BD5A0 _ 83. C4, 10
test eax, eax ; 100BD5A3 _ 85. C0 test eax, eax ; 100BD5A3 _ 85. C0
jz ?_25167 ; 100BD5A5 _ 74, 4A jz ?_25167 ; 100BD5A5 _ 74, 4A
@ -93,7 +108,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH
?_25168 LABEL NEAR FUN_100bd600 LABEL NEAR
mov ecx, dword ptr [esp+8H] ; 100BD600 _ 8B. 4C 24, 08 mov ecx, dword ptr [esp+8H] ; 100BD600 _ 8B. 4C 24, 08
push ebx ; 100BD604 _ 53 push ebx ; 100BD604 _ 53
mov bx, word ptr [ecx] ; 100BD605 _ 66: 8B. 19 mov bx, word ptr [ecx] ; 100BD605 _ 66: 8B. 19
@ -150,7 +165,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint ; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25173 LABEL NEAR FUN_100bd680 LABEL NEAR
lea eax, [esp+18H] ; 100BD680 _ 8D. 44 24, 18 lea eax, [esp+18H] ; 100BD680 _ 8D. 44 24, 18
push esi ; 100BD684 _ 56 push esi ; 100BD684 _ 56
lea ecx, [esp+14H] ; 100BD685 _ 8D. 4C 24, 14 lea ecx, [esp+14H] ; 100BD685 _ 8D. 4C 24, 14
@ -160,7 +175,7 @@ public EndOfSection
mov esi, dword ptr [esp+10H] ; 100BD68F _ 8B. 74 24, 10 mov esi, dword ptr [esp+10H] ; 100BD68F _ 8B. 74 24, 10
push edx ; 100BD693 _ 52 push edx ; 100BD693 _ 52
push esi ; 100BD694 _ 56 push esi ; 100BD694 _ 56
call ?_25168 ; 100BD695 _ E8, FFFFFF66 call FUN_100bd600 ; 100BD695 _ E8, FFFFFF66
add esp, 16 ; 100BD69A _ 83. C4, 10 add esp, 16 ; 100BD69A _ 83. C4, 10
test eax, eax ; 100BD69D _ 85. C0 test eax, eax ; 100BD69D _ 85. C0
jz ?_25175 ; 100BD69F _ 74, 33 jz ?_25175 ; 100BD69F _ 74, 33
@ -188,7 +203,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH db 0CCH, 0CCH
?_25176 LABEL NEAR FUN_100bd6e0 LABEL NEAR
lea eax, [esp+18H] ; 100BD6E0 _ 8D. 44 24, 18 lea eax, [esp+18H] ; 100BD6E0 _ 8D. 44 24, 18
push ebx ; 100BD6E4 _ 53 push ebx ; 100BD6E4 _ 53
lea ecx, [esp+14H] ; 100BD6E5 _ 8D. 4C 24, 14 lea ecx, [esp+14H] ; 100BD6E5 _ 8D. 4C 24, 14
@ -200,7 +215,7 @@ public EndOfSection
shl word ptr [esp+28H], 1 ; 100BD6F4 _ 66: C1. 64 24, 28, 01 shl word ptr [esp+28H], 1 ; 100BD6F4 _ 66: C1. 64 24, 28, 01
push edx ; 100BD6FA _ 52 push edx ; 100BD6FA _ 52
push esi ; 100BD6FB _ 56 push esi ; 100BD6FB _ 56
call ?_25168 ; 100BD6FC _ E8, FFFFFEFF call FUN_100bd600 ; 100BD6FC _ E8, FFFFFEFF
add esp, 16 ; 100BD701 _ 83. C4, 10 add esp, 16 ; 100BD701 _ 83. C4, 10
test eax, eax ; 100BD704 _ 85. C0 test eax, eax ; 100BD704 _ 85. C0
jz ?_25179 ; 100BD706 _ 74, 52 jz ?_25179 ; 100BD706 _ 74, 52
@ -235,7 +250,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint ; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH
?_25180 LABEL NEAR FUN_100bd760 LABEL NEAR
mov eax, dword ptr [esp+18H] ; 100BD760 _ 8B. 44 24, 18 mov eax, dword ptr [esp+18H] ; 100BD760 _ 8B. 44 24, 18
sub esp, 4 ; 100BD764 _ 83. EC, 04 sub esp, 4 ; 100BD764 _ 83. EC, 04
; Note: Length-changing prefix causes delay on Intel processors ; Note: Length-changing prefix causes delay on Intel processors
@ -267,7 +282,7 @@ public EndOfSection
add ecx, 6 ; 100BD7BA _ 83. C1, 06 add ecx, 6 ; 100BD7BA _ 83. C1, 06
push ecx ; 100BD7BD _ 51 push ecx ; 100BD7BD _ 51
push esi ; 100BD7BE _ 56 push esi ; 100BD7BE _ 56
call ?_25194 ; 100BD7BF _ E8, 000000BC call FUN_100bd880 ; 100BD7BF _ E8, 000000BC
mov eax, dword ptr [esp+34H] ; 100BD7C4 _ 8B. 44 24, 34 mov eax, dword ptr [esp+34H] ; 100BD7C4 _ 8B. 44 24, 34
add esp, 8 ; 100BD7C8 _ 83. C4, 08 add esp, 8 ; 100BD7C8 _ 83. C4, 08
mov byte ptr [eax], 1 ; 100BD7CB _ C6. 00, 01 mov byte ptr [eax], 1 ; 100BD7CB _ C6. 00, 01
@ -279,14 +294,14 @@ public EndOfSection
push ecx ; 100BD7D4 _ 51 push ecx ; 100BD7D4 _ 51
push edi ; 100BD7D5 _ 57 push edi ; 100BD7D5 _ 57
push esi ; 100BD7D6 _ 56 push esi ; 100BD7D6 _ 56
call ?_25220 ; 100BD7D7 _ E8, 000002E4 call FUN_100bdac0 ; 100BD7D7 _ E8, 000002E4
jmp ?_25189 ; 100BD7DC _ EB, 4C jmp ?_25189 ; 100BD7DC _ EB, 4C
?_25184 LABEL NEAR ?_25184 LABEL NEAR
add ecx, 6 ; 100BD7DE _ 83. C1, 06 add ecx, 6 ; 100BD7DE _ 83. C1, 06
push ecx ; 100BD7E1 _ 51 push ecx ; 100BD7E1 _ 51
push esi ; 100BD7E2 _ 56 push esi ; 100BD7E2 _ 56
call ?_25202 ; 100BD7E3 _ E8, 00000158 call FUN_100bd940 ; 100BD7E3 _ E8, 00000158
mov eax, dword ptr [esp+34H] ; 100BD7E8 _ 8B. 44 24, 34 mov eax, dword ptr [esp+34H] ; 100BD7E8 _ 8B. 44 24, 34
add esp, 8 ; 100BD7EC _ 83. C4, 08 add esp, 8 ; 100BD7EC _ 83. C4, 08
mov byte ptr [eax], 1 ; 100BD7EF _ C6. 00, 01 mov byte ptr [eax], 1 ; 100BD7EF _ C6. 00, 01
@ -298,7 +313,7 @@ public EndOfSection
push ecx ; 100BD7F8 _ 51 push ecx ; 100BD7F8 _ 51
push edi ; 100BD7F9 _ 57 push edi ; 100BD7F9 _ 57
push esi ; 100BD7FA _ 56 push esi ; 100BD7FA _ 56
call ?_25213 ; 100BD7FB _ E8, 00000210 call FUN_100bda10 ; 100BD7FB _ E8, 00000210
jmp ?_25189 ; 100BD800 _ EB, 28 jmp ?_25189 ; 100BD800 _ EB, 28
?_25186 LABEL NEAR ?_25186 LABEL NEAR
@ -307,7 +322,7 @@ public EndOfSection
push ecx ; 100BD806 _ 51 push ecx ; 100BD806 _ 51
push edi ; 100BD807 _ 57 push edi ; 100BD807 _ 57
push esi ; 100BD808 _ 56 push esi ; 100BD808 _ 56
call ?_25227 ; 100BD809 _ E8, 000003F2 call FUN_100bdc00 ; 100BD809 _ E8, 000003F2
jmp ?_25189 ; 100BD80E _ EB, 1A jmp ?_25189 ; 100BD80E _ EB, 1A
?_25187 LABEL NEAR ?_25187 LABEL NEAR
@ -316,7 +331,7 @@ public EndOfSection
push ecx ; 100BD814 _ 51 push ecx ; 100BD814 _ 51
push edi ; 100BD815 _ 57 push edi ; 100BD815 _ 57
push esi ; 100BD816 _ 56 push esi ; 100BD816 _ 56
call ?_25203 ; 100BD817 _ E8, 00000144 call FUN_100bd960 ; 100BD817 _ E8, 00000144
jmp ?_25189 ; 100BD81C _ EB, 0C jmp ?_25189 ; 100BD81C _ EB, 0C
?_25188 LABEL NEAR ?_25188 LABEL NEAR
@ -325,7 +340,7 @@ public EndOfSection
push ecx ; 100BD822 _ 51 push ecx ; 100BD822 _ 51
push edi ; 100BD823 _ 57 push edi ; 100BD823 _ 57
push esi ; 100BD824 _ 56 push esi ; 100BD824 _ 56
call ?_25231 ; 100BD825 _ E8, 00000466 call FUN_100bdc90 ; 100BD825 _ E8, 00000466
?_25189:add esp, 16 ; 100BD82A _ 83. C4, 10 ?_25189:add esp, 16 ; 100BD82A _ 83. C4, 10
?_25190 LABEL NEAR ?_25190 LABEL NEAR
@ -355,12 +370,12 @@ public EndOfSection
?_25193 db 00H, 07H, 07H, 01H, 07H, 07H, 07H, 02H ; 100BD870 _ ........ ?_25193 db 00H, 07H, 07H, 01H, 07H, 07H, 07H, 02H ; 100BD870 _ ........
db 03H, 04H, 07H, 05H, 06H, 0CCH, 0CCH, 0CCH ; 100BD878 _ ........ db 03H, 04H, 07H, 05H, 06H, 0CCH, 0CCH, 0CCH ; 100BD878 _ ........
?_25194 LABEL NEAR FUN_100bd880 LABEL NEAR
mov eax, dword ptr [esp+8H] ; 100BD880 _ 8B. 44 24, 08 mov eax, dword ptr [esp+8H] ; 100BD880 _ 8B. 44 24, 08
mov ecx, dword ptr [esp+4H] ; 100BD884 _ 8B. 4C 24, 04 mov ecx, dword ptr [esp+4H] ; 100BD884 _ 8B. 4C 24, 04
push eax ; 100BD888 _ 50 push eax ; 100BD888 _ 50
push ecx ; 100BD889 _ 51 push ecx ; 100BD889 _ 51
call ?_25195 ; 100BD88A _ E8, 00000011 call FUN_100bd8a0 ; 100BD88A _ E8, 00000011
add esp, 8 ; 100BD88F _ 83. C4, 08 add esp, 8 ; 100BD88F _ 83. C4, 08
ret ; 100BD892 _ C3 ret ; 100BD892 _ C3
@ -369,7 +384,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25195 LABEL NEAR FUN_100bd8a0 LABEL NEAR
mov eax, dword ptr [esp+8H] ; 100BD8A0 _ 8B. 44 24, 08 mov eax, dword ptr [esp+8H] ; 100BD8A0 _ 8B. 44 24, 08
push ebx ; 100BD8A4 _ 53 push ebx ; 100BD8A4 _ 53
mov bx, word ptr [eax] ; 100BD8A5 _ 66: 8B. 18 mov bx, word ptr [eax] ; 100BD8A5 _ 66: 8B. 18
@ -395,7 +410,7 @@ public EndOfSection
push edi ; 100BD8D2 _ 57 push edi ; 100BD8D2 _ 57
add si, bp ; 100BD8D3 _ 66: 03. F5 add si, bp ; 100BD8D3 _ 66: 03. F5
push eax ; 100BD8D6 _ 50 push eax ; 100BD8D6 _ 50
call ?_25199 ; 100BD8D7 _ E8, 00000014 call FUN_100bd8f0 ; 100BD8D7 _ E8, 00000014
movsx eax, bp ; 100BD8DC _ 0F BF. C5 movsx eax, bp ; 100BD8DC _ 0F BF. C5
add esp, 16 ; 100BD8DF _ 83. C4, 10 add esp, 16 ; 100BD8DF _ 83. C4, 10
lea ecx, [eax+eax*2] ; 100BD8E2 _ 8D. 0C 40 lea ecx, [eax+eax*2] ; 100BD8E2 _ 8D. 0C 40
@ -408,7 +423,7 @@ public EndOfSection
pop ebx ; 100BD8EE _ 5B pop ebx ; 100BD8EE _ 5B
ret ; 100BD8EF _ C3 ret ; 100BD8EF _ C3
?_25199 LABEL NEAR FUN_100bd8f0 LABEL NEAR
mov dx, word ptr [esp+10H] ; 100BD8F0 _ 66: 8B. 54 24, 10 mov dx, word ptr [esp+10H] ; 100BD8F0 _ 66: 8B. 54 24, 10
push esi ; 100BD8F5 _ 56 push esi ; 100BD8F5 _ 56
movsx ecx, word ptr [esp+10H] ; 100BD8F6 _ 0F BF. 4C 24, 10 movsx ecx, word ptr [esp+10H] ; 100BD8F6 _ 0F BF. 4C 24, 10
@ -440,12 +455,12 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint ; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25202 LABEL NEAR FUN_100bd940 LABEL NEAR
mov eax, dword ptr [esp+8H] ; 100BD940 _ 8B. 44 24, 08 mov eax, dword ptr [esp+8H] ; 100BD940 _ 8B. 44 24, 08
mov ecx, dword ptr [esp+4H] ; 100BD944 _ 8B. 4C 24, 04 mov ecx, dword ptr [esp+4H] ; 100BD944 _ 8B. 4C 24, 04
push eax ; 100BD948 _ 50 push eax ; 100BD948 _ 50
push ecx ; 100BD949 _ 51 push ecx ; 100BD949 _ 51
call ?_25195 ; 100BD94A _ E8, FFFFFF51 call FUN_100bd8a0 ; 100BD94A _ E8, FFFFFF51
add esp, 8 ; 100BD94F _ 83. C4, 08 add esp, 8 ; 100BD94F _ 83. C4, 08
ret ; 100BD952 _ C3 ret ; 100BD952 _ C3
@ -454,7 +469,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25203 LABEL NEAR FUN_100bd960 LABEL NEAR
mov eax, dword ptr [esp+10H] ; 100BD960 _ 8B. 44 24, 10 mov eax, dword ptr [esp+10H] ; 100BD960 _ 8B. 44 24, 10
sub esp, 8 ; 100BD964 _ 83. EC, 08 sub esp, 8 ; 100BD964 _ 83. EC, 08
mov dx, word ptr [eax+8H] ; 100BD967 _ 66: 8B. 50, 08 mov dx, word ptr [eax+8H] ; 100BD967 _ 66: 8B. 50, 08
@ -529,7 +544,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH
?_25213 LABEL NEAR FUN_100bda10 LABEL NEAR
mov ecx, dword ptr [esp+0CH] ; 100BDA10 _ 8B. 4C 24, 0C mov ecx, dword ptr [esp+0CH] ; 100BDA10 _ 8B. 4C 24, 0C
sub esp, 4 ; 100BDA14 _ 83. EC, 04 sub esp, 4 ; 100BDA14 _ 83. EC, 04
mov eax, dword ptr [esp+14H] ; 100BDA17 _ 8B. 44 24, 14 mov eax, dword ptr [esp+14H] ; 100BDA17 _ 8B. 44 24, 14
@ -572,7 +587,7 @@ public EndOfSection
push edi ; 100BDA70 _ 57 push edi ; 100BDA70 _ 57
push edx ; 100BDA71 _ 52 push edx ; 100BDA71 _ 52
push eax ; 100BDA72 _ 50 push eax ; 100BDA72 _ 50
call ?_25173 ; 100BDA73 _ E8, FFFFFC08 call FUN_100bd680 ; 100BDA73 _ E8, FFFFFC08
add esp, 24 ; 100BDA78 _ 83. C4, 18 add esp, 24 ; 100BDA78 _ 83. C4, 18
jmp ?_25217 ; 100BDA7B _ EB, 23 jmp ?_25217 ; 100BDA7B _ EB, 23
@ -586,7 +601,7 @@ public EndOfSection
push edi ; 100BDA90 _ 57 push edi ; 100BDA90 _ 57
push ecx ; 100BDA91 _ 51 push ecx ; 100BDA91 _ 51
push edx ; 100BDA92 _ 52 push edx ; 100BDA92 _ 52
call ?_25164 ; 100BDA93 _ E8, FFFFFAE8 call FUN_100bd580 ; 100BDA93 _ E8, FFFFFAE8
movsx ecx, bp ; 100BDA98 _ 0F BF. CD movsx ecx, bp ; 100BDA98 _ 0F BF. CD
add esp, 24 ; 100BDA9B _ 83. C4, 18 add esp, 24 ; 100BDA9B _ 83. C4, 18
add esi, ecx ; 100BDA9E _ 03. F1 add esi, ecx ; 100BDA9E _ 03. F1
@ -608,7 +623,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint ; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH
?_25220 LABEL NEAR FUN_100bdac0 LABEL NEAR
mov edx, dword ptr [esp+10H] ; 100BDAC0 _ 8B. 54 24, 10 mov edx, dword ptr [esp+10H] ; 100BDAC0 _ 8B. 54 24, 10
sub esp, 8 ; 100BDAC4 _ 83. EC, 08 sub esp, 8 ; 100BDAC4 _ 83. EC, 08
mov ax, word ptr [edx+8H] ; 100BDAC7 _ 66: 8B. 42, 08 mov ax, word ptr [edx+8H] ; 100BDAC7 _ 66: 8B. 42, 08
@ -643,7 +658,7 @@ public EndOfSection
push eax ; 100BDB18 _ 50 push eax ; 100BDB18 _ 50
push ecx ; 100BDB19 _ 51 push ecx ; 100BDB19 _ 51
push edx ; 100BDB1A _ 52 push edx ; 100BDB1A _ 52
call ?_25162 ; 100BDB1B _ E8, FFFFFA10 call FUN_100bd530 ; 100BDB1B _ E8, FFFFFA10
mov ecx, dword ptr [esp+28H] ; 100BDB20 _ 8B. 4C 24, 28 mov ecx, dword ptr [esp+28H] ; 100BDB20 _ 8B. 4C 24, 28
add esp, 20 ; 100BDB24 _ 83. C4, 14 add esp, 20 ; 100BDB24 _ 83. C4, 14
mov bx, word ptr [ecx] ; 100BDB27 _ 66: 8B. 19 mov bx, word ptr [ecx] ; 100BDB27 _ 66: 8B. 19
@ -677,7 +692,7 @@ public EndOfSection
push ecx ; 100BDB7F _ 51 push ecx ; 100BDB7F _ 51
add di, bp ; 100BDB80 _ 66: 03. FD add di, bp ; 100BDB80 _ 66: 03. FD
push edx ; 100BDB83 _ 52 push edx ; 100BDB83 _ 52
call ?_25164 ; 100BDB84 _ E8, FFFFF9F7 call FUN_100bd580 ; 100BDB84 _ E8, FFFFF9F7
movsx ecx, bp ; 100BDB89 _ 0F BF. CD movsx ecx, bp ; 100BDB89 _ 0F BF. CD
add dword ptr [esp+2CH], ecx ; 100BDB8C _ 01. 4C 24, 2C add dword ptr [esp+2CH], ecx ; 100BDB8C _ 01. 4C 24, 2C
add esp, 24 ; 100BDB90 _ 83. C4, 18 add esp, 24 ; 100BDB90 _ 83. C4, 18
@ -704,7 +719,7 @@ public EndOfSection
add di, bp ; 100BDBCD _ 66: 03. FD add di, bp ; 100BDBCD _ 66: 03. FD
push edx ; 100BDBD0 _ 52 push edx ; 100BDBD0 _ 52
push ecx ; 100BDBD1 _ 51 push ecx ; 100BDBD1 _ 51
call ?_25176 ; 100BDBD2 _ E8, FFFFFB09 call FUN_100bd6e0 ; 100BDBD2 _ E8, FFFFFB09
add esp, 24 ; 100BDBD7 _ 83. C4, 18 add esp, 24 ; 100BDBD7 _ 83. C4, 18
dec bx ; 100BDBDA _ 66: 4B dec bx ; 100BDBDA _ 66: 4B
jne ?_25224 ; 100BDBDC _ 0F 85, FFFFFF6A jne ?_25224 ; 100BDBDC _ 0F 85, FFFFFF6A
@ -723,7 +738,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint ; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH
?_25227 LABEL NEAR FUN_100bdc00 LABEL NEAR
mov eax, dword ptr [esp+10H] ; 100BDC00 _ 8B. 44 24, 10 mov eax, dword ptr [esp+10H] ; 100BDC00 _ 8B. 44 24, 10
sub esp, 8 ; 100BDC04 _ 83. EC, 08 sub esp, 8 ; 100BDC04 _ 83. EC, 08
mov cx, word ptr [eax+8H] ; 100BDC07 _ 66: 8B. 48, 08 mov cx, word ptr [eax+8H] ; 100BDC07 _ 66: 8B. 48, 08
@ -755,7 +770,7 @@ public EndOfSection
push 0 ; 100BDC52 _ 6A, 00 push 0 ; 100BDC52 _ 6A, 00
push ebx ; 100BDC54 _ 53 push ebx ; 100BDC54 _ 53
push edi ; 100BDC55 _ 57 push edi ; 100BDC55 _ 57
call ?_25176 ; 100BDC56 _ E8, FFFFFA85 call FUN_100bd6e0 ; 100BDC56 _ E8, FFFFFA85
add esp, 24 ; 100BDC5B _ 83. C4, 18 add esp, 24 ; 100BDC5B _ 83. C4, 18
test si, si ; 100BDC5E _ 66: 85. F6 test si, si ; 100BDC5E _ 66: 85. F6
jz ?_25229 ; 100BDC61 _ 74, 15 jz ?_25229 ; 100BDC61 _ 74, 15
@ -766,7 +781,7 @@ public EndOfSection
push eax ; 100BDC6D _ 50 push eax ; 100BDC6D _ 50
push ebx ; 100BDC6E _ 53 push ebx ; 100BDC6E _ 53
push edi ; 100BDC6F _ 57 push edi ; 100BDC6F _ 57
call ?_25162 ; 100BDC70 _ E8, FFFFF8BB call FUN_100bd530 ; 100BDC70 _ E8, FFFFF8BB
add esp, 20 ; 100BDC75 _ 83. C4, 14 add esp, 20 ; 100BDC75 _ 83. C4, 14
?_25229:dec bp ; 100BDC78 _ 66: 4D ?_25229:dec bp ; 100BDC78 _ 66: 4D
jns ?_25228 ; 100BDC7A _ 79, CB jns ?_25228 ; 100BDC7A _ 79, CB
@ -782,7 +797,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH db 0CCH, 0CCH, 0CCH, 0CCH
?_25231 LABEL NEAR FUN_100bdc90 LABEL NEAR
mov eax, dword ptr [esp+10H] ; 100BDC90 _ 8B. 44 24, 10 mov eax, dword ptr [esp+10H] ; 100BDC90 _ 8B. 44 24, 10
sub esp, 4 ; 100BDC94 _ 83. EC, 04 sub esp, 4 ; 100BDC94 _ 83. EC, 04
push ebx ; 100BDC97 _ 53 push ebx ; 100BDC97 _ 53
@ -804,7 +819,7 @@ public EndOfSection
push 0 ; 100BDCBD _ 6A, 00 push 0 ; 100BDCBD _ 6A, 00
push eax ; 100BDCBF _ 50 push eax ; 100BDCBF _ 50
push esi ; 100BDCC0 _ 56 push esi ; 100BDCC0 _ 56
call ?_25164 ; 100BDCC1 _ E8, FFFFF8BA call FUN_100bd580 ; 100BDCC1 _ E8, FFFFF8BA
add ebp, dword ptr [esp+28H] ; 100BDCC6 _ 03. 6C 24, 28 add ebp, dword ptr [esp+28H] ; 100BDCC6 _ 03. 6C 24, 28
add esp, 24 ; 100BDCCA _ 83. C4, 18 add esp, 24 ; 100BDCCA _ 83. C4, 18
dec bx ; 100BDCCD _ 66: 4B dec bx ; 100BDCCD _ 66: 4B
@ -836,7 +851,7 @@ DecodeFLCFrame LABEL NEAR
push ecx ; 100BDD02 _ 51 push ecx ; 100BDD02 _ 51
push eax ; 100BDD03 _ 50 push eax ; 100BDD03 _ 50
push edx ; 100BDD04 _ 52 push edx ; 100BDD04 _ 52
call ?_25180 ; 100BDD05 _ E8, FFFFFA56 call FUN_100bd760 ; 100BDD05 _ E8, FFFFFA56
add esp, 24 ; 100BDD0A _ 83. C4, 18 add esp, 24 ; 100BDD0A _ 83. C4, 18
?_25235:ret ; 100BDD0D _ C3 ?_25235:ret ; 100BDD0D _ C3

BIN
3rdparty/flic/flic.lib vendored

Binary file not shown.

View File

@ -16,136 +16,115 @@ if (MSVC)
endif() endif()
endif() endif()
set(lego1_targets)
macro(register_lego1_target __target)
list(APPEND lego1_targets ${__target})
endmacro()
message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}") message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}")
option(ISLE_BUILD_APP "Build ISLE.EXE application" ON) option(ISLE_BUILD_APP "Build ISLE.EXE application" ON)
option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP}) option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP})
option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON) option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON)
add_library(lego1 SHARED add_library(DirectX5::DirectX5 INTERFACE IMPORTED)
LEGO1/define.cpp target_include_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
LEGO1/lego/legoomni/src/act1/act1state.cpp target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
LEGO1/lego/legoomni/src/act2/act2brick.cpp
LEGO1/lego/legoomni/src/act2/act2policestation.cpp add_library(Smacker::Smacker STATIC IMPORTED)
LEGO1/lego/legoomni/src/act2/legoact2state.cpp set_property(TARGET Smacker::Smacker PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/smacker/smack.lib")
LEGO1/lego/legoomni/src/act3/act3.cpp set_property(TARGET Smacker::Smacker PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
LEGO1/lego/legoomni/src/act3/act3shark.cpp
LEGO1/lego/legoomni/src/act3/act3state.cpp add_library(FLIC::FLIC STATIC IMPORTED)
LEGO1/lego/legoomni/src/audio/legocachesound.cpp set_property(TARGET FLIC::FLIC PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/flic/flic.lib")
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp set_property(TARGET FLIC::FLIC PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/flic")
LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp
LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp add_library(Vec::Vec INTERFACE IMPORTED)
LEGO1/lego/legoomni/src/build/buildingentity.cpp target_include_directories(Vec::Vec INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/vec")
LEGO1/lego/legoomni/src/build/dunebuggy.cpp
LEGO1/lego/legoomni/src/build/helicopter.cpp add_library(SmartHeap::SmartHeap STATIC IMPORTED)
LEGO1/lego/legoomni/src/build/helicopterstate.cpp set_property(TARGET SmartHeap::SmartHeap PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SHLW32MT.LIB")
LEGO1/lego/legoomni/src/build/jetski.cpp set_property(TARGET SmartHeap::SmartHeap PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/smartheap")
LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp set_property(TARGET SmartHeap::SmartHeap PROPERTY INTERFACE_COMPILE_OPTIONS "/FI${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SMRTHEAP.HPP")
LEGO1/lego/legoomni/src/build/legocarbuild.cpp
LEGO1/lego/legoomni/src/build/legovehiclebuildstate.cpp add_library(tglrl STATIC
LEGO1/lego/legoomni/src/build/racecar.cpp LEGO1/tgl/d3drm/camera.cpp
LEGO1/lego/legoomni/src/common/animstate.cpp LEGO1/tgl/d3drm/device.cpp
LEGO1/lego/legoomni/src/common/gifmanager.cpp LEGO1/tgl/d3drm/group.cpp
LEGO1/lego/legoomni/src/common/legoactioncontrolpresenter.cpp LEGO1/tgl/d3drm/light.cpp
LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp LEGO1/tgl/d3drm/mesh.cpp
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp LEGO1/tgl/d3drm/renderer.cpp
LEGO1/lego/legoomni/src/common/legogamestate.cpp LEGO1/tgl/d3drm/texture.cpp
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp LEGO1/tgl/d3drm/unk.cpp
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp LEGO1/tgl/d3drm/view.cpp
LEGO1/lego/legoomni/src/common/legostate.cpp )
LEGO1/lego/legoomni/src/common/legostream.cpp register_lego1_target(tglrl)
LEGO1/lego/legoomni/src/common/legounksavedatawriter.cpp set_property(TARGET tglrl PROPERTY ARCHIVE_OUTPUT_NAME "tglrl40$<$<CONFIG:Debug>:d>")
LEGO1/lego/legoomni/src/common/legoutil.cpp target_include_directories(tglrl PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp target_link_libraries(tglrl PRIVATE d3drm)
LEGO1/lego/legoomni/src/control/legocontrolmanager.cpp
LEGO1/lego/legoomni/src/control/mxcontrolpresenter.cpp add_library(realtime STATIC
LEGO1/lego/legoomni/src/entity/legoactor.cpp LEGO1/realtime/matrix.cpp
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp LEGO1/realtime/orientableroi.cpp
LEGO1/lego/legoomni/src/entity/legoanimactor.cpp LEGO1/realtime/realtime.cpp
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp LEGO1/realtime/realtimeview.cpp
LEGO1/lego/legoomni/src/entity/legoentity.cpp LEGO1/realtime/vector.cpp
LEGO1/lego/legoomni/src/entity/legoentitypresenter.cpp )
LEGO1/lego/legoomni/src/entity/legojetski.cpp register_lego1_target(realtime)
LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp set_property(TARGET realtime PROPERTY ARCHIVE_OUTPUT_NAME "realtime$<$<CONFIG:Debug>:d>")
LEGO1/lego/legoomni/src/entity/legopathactor.cpp target_include_directories(realtime PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp target_link_libraries(realtime PRIVATE Vec::Vec)
LEGO1/lego/legoomni/src/entity/legorace.cpp
LEGO1/lego/legoomni/src/entity/legoworld.cpp add_library(viewmanager STATIC
LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp LEGO1/viewmanager/viewlodlist.cpp
LEGO1/lego/legoomni/src/gasstation/gasstation.cpp LEGO1/viewmanager/viewmanager.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationentity.cpp LEGO1/viewmanager/viewroi.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationstate.cpp )
LEGO1/lego/legoomni/src/hospital/ambulance.cpp register_lego1_target(viewmanager)
LEGO1/lego/legoomni/src/hospital/ambulancemissionstate.cpp set_property(TARGET viewmanager PROPERTY ARCHIVE_OUTPUT_NAME "viewmanager$<$<CONFIG:Debug>:d>")
LEGO1/lego/legoomni/src/hospital/hospital.cpp target_include_directories(viewmanager PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
LEGO1/lego/legoomni/src/hospital/hospitalentity.cpp target_link_libraries(viewmanager PRIVATE Vec::Vec)
LEGO1/lego/legoomni/src/hospital/hospitalstate.cpp
LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp add_library(mxdirectx STATIC
LEGO1/lego/legoomni/src/infocenter/infocenter.cpp LEGO1/mxdirectx/mxdirect3d.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp LEGO1/mxdirectx/mxdirectdraw.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterentity.cpp )
LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp register_lego1_target(mxdirectx)
LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp set_property(TARGET mxdirectx PROPERTY ARCHIVE_OUTPUT_NAME "MxDirectX$<$<CONFIG:Debug>:d>")
LEGO1/lego/legoomni/src/infocenter/score.cpp target_include_directories(mxdirectx PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
LEGO1/lego/legoomni/src/infocenter/scorestate.cpp target_link_libraries(mxdirectx PRIVATE ddraw)
LEGO1/lego/legoomni/src/input/legoinputmanager.cpp
LEGO1/lego/legoomni/src/isle/beachhouseentity.cpp add_library(roi STATIC
LEGO1/lego/legoomni/src/isle/bike.cpp LEGO1/lego/sources/roi/legoroi.cpp
LEGO1/lego/legoomni/src/isle/bumpbouy.cpp )
LEGO1/lego/legoomni/src/isle/historybook.cpp register_lego1_target(roi)
LEGO1/lego/legoomni/src/isle/isleactor.cpp set_property(TARGET roi PROPERTY ARCHIVE_OUTPUT_NAME "roi$<$<CONFIG:Debug>:d>")
LEGO1/lego/legoomni/src/isle/isle.cpp target_include_directories(roi PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
LEGO1/lego/legoomni/src/isle/islepathactor.cpp target_link_libraries(roi PRIVATE)
LEGO1/lego/legoomni/src/isle/jukebox.cpp
LEGO1/lego/legoomni/src/isle/jukeboxentity.cpp add_library(misc STATIC
LEGO1/lego/legoomni/src/isle/jukeboxstate.cpp LEGO1/lego/sources/misc/legoimage.cpp
LEGO1/lego/legoomni/src/isle/motocycle.cpp LEGO1/lego/sources/misc/legostorage.cpp
LEGO1/lego/legoomni/src/isle/radio.cpp LEGO1/lego/sources/misc/legotexture.cpp
LEGO1/lego/legoomni/src/isle/radiostate.cpp LEGO1/lego/sources/misc/legotree.cpp
LEGO1/lego/legoomni/src/isle/skateboard.cpp )
LEGO1/lego/legoomni/src/main/legoomni.cpp register_lego1_target(misc)
LEGO1/lego/legoomni/src/notify/legoeventnotificationparam.cpp set_property(TARGET misc PROPERTY ARCHIVE_OUTPUT_NAME "misc$<$<CONFIG:Debug>:d>")
LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp target_include_directories(misc PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/util")
LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp target_link_libraries(misc PRIVATE)
LEGO1/lego/legoomni/src/pizzeria/pizza.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzamissionstate.cpp add_library(3dmanager STATIC
LEGO1/lego/legoomni/src/pizzeria/pizzeria.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzeriastate.cpp
LEGO1/lego/legoomni/src/police/police.cpp
LEGO1/lego/legoomni/src/police/policeentity.cpp
LEGO1/lego/legoomni/src/police/policestate.cpp
LEGO1/lego/legoomni/src/race/carrace.cpp
LEGO1/lego/legoomni/src/race/jetskirace.cpp
LEGO1/lego/legoomni/src/race/racestandsentity.cpp
LEGO1/lego/legoomni/src/race/racestate.cpp
LEGO1/lego/legoomni/src/towtrack/towtrack.cpp
LEGO1/lego/legoomni/src/towtrack/towtrackmissionstate.cpp
LEGO1/lego/legoomni/src/unknown/legounknown100d7c88.cpp
LEGO1/lego/legoomni/src/video/legoanimationmanager.cpp
LEGO1/lego/legoomni/src/video/legoanimmmpresenter.cpp
LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legocarbuildanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legoflctexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legolocomotionanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legometerpresenter.cpp
LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp
LEGO1/lego/legoomni/src/video/legopalettepresenter.cpp
LEGO1/lego/legoomni/src/video/legopartpresenter.cpp
LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp
LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legovideomanager.cpp
LEGO1/lego/legoomni/src/video/mxtransitionmanager.cpp
LEGO1/lego/sources/3dmanager/lego3dmanager.cpp LEGO1/lego/sources/3dmanager/lego3dmanager.cpp
LEGO1/lego/sources/3dmanager/lego3dview.cpp LEGO1/lego/sources/3dmanager/lego3dview.cpp
LEGO1/lego/sources/3dmanager/legoview1.cpp LEGO1/lego/sources/3dmanager/legoview1.cpp
LEGO1/lego/sources/3dmanager/tglsurface.cpp LEGO1/lego/sources/3dmanager/tglsurface.cpp
LEGO1/lego/sources/roi/legoroi.cpp )
LEGO1/main.cpp register_lego1_target(3dmanager)
LEGO1/mxdirectx/mxdirect3d.cpp set_property(TARGET 3dmanager PROPERTY ARCHIVE_OUTPUT_NAME "3dmanager$<$<CONFIG:Debug>:d>")
LEGO1/mxdirectx/mxdirectdraw.cpp target_include_directories(3dmanager PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
LEGO1/mxgeometry/mxgeometry3d.cpp target_link_libraries(3dmanager PRIVATE Vec::Vec)
LEGO1/mxgeometry/mxmatrix.cpp
add_library(omni STATIC
LEGO1/omni/src/action/mxdsaction.cpp LEGO1/omni/src/action/mxdsaction.cpp
LEGO1/omni/src/action/mxdsanim.cpp LEGO1/omni/src/action/mxdsanim.cpp
LEGO1/omni/src/action/mxdsevent.cpp LEGO1/omni/src/action/mxdsevent.cpp
@ -227,61 +206,165 @@ add_library(lego1 SHARED
LEGO1/omni/src/video/mxvideoparam.cpp LEGO1/omni/src/video/mxvideoparam.cpp
LEGO1/omni/src/video/mxvideoparamflags.cpp LEGO1/omni/src/video/mxvideoparamflags.cpp
LEGO1/omni/src/video/mxvideopresenter.cpp LEGO1/omni/src/video/mxvideopresenter.cpp
LEGO1/realtime/matrix.cpp
LEGO1/realtime/orientableroi.cpp
LEGO1/realtime/realtime.cpp
LEGO1/realtime/realtimeview.cpp
LEGO1/realtime/vector.cpp
LEGO1/tgl/d3drm/camera.cpp
LEGO1/tgl/d3drm/device.cpp
LEGO1/tgl/d3drm/group.cpp
LEGO1/tgl/d3drm/light.cpp
LEGO1/tgl/d3drm/mesh.cpp
LEGO1/tgl/d3drm/renderer.cpp
LEGO1/tgl/d3drm/texture.cpp
LEGO1/tgl/d3drm/unk.cpp
LEGO1/tgl/d3drm/view.cpp
LEGO1/viewmanager/viewlodlist.cpp
LEGO1/viewmanager/viewmanager.cpp
LEGO1/viewmanager/viewroi.cpp
) )
register_lego1_target(omni)
set_property(TARGET omni PROPERTY ARCHIVE_OUTPUT_NAME "omni$<$<CONFIG:Debug>:d>")
target_include_directories(omni PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
target_link_libraries(omni PRIVATE dsound winmm FLIC::FLIC Smacker::Smacker)
add_library(lego1 SHARED
LEGO1/define.cpp
LEGO1/lego/legoomni/src/act1/act1state.cpp
LEGO1/lego/legoomni/src/act2/act2brick.cpp
LEGO1/lego/legoomni/src/act2/act2policestation.cpp
LEGO1/lego/legoomni/src/act2/legoact2.cpp
LEGO1/lego/legoomni/src/act2/legoact2state.cpp
LEGO1/lego/legoomni/src/act3/act3.cpp
LEGO1/lego/legoomni/src/act3/act3shark.cpp
LEGO1/lego/legoomni/src/act3/act3state.cpp
LEGO1/lego/legoomni/src/audio/lego3dwavepresenter.cpp
LEGO1/lego/legoomni/src/audio/legocachesound.cpp
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp
LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp
LEGO1/lego/legoomni/src/audio/legounknown100d6b4c.cpp
LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp
LEGO1/lego/legoomni/src/build/buildingentity.cpp
LEGO1/lego/legoomni/src/build/dunebuggy.cpp
LEGO1/lego/legoomni/src/build/helicopter.cpp
LEGO1/lego/legoomni/src/build/helicopterstate.cpp
LEGO1/lego/legoomni/src/build/jetski.cpp
LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp
LEGO1/lego/legoomni/src/build/legocarbuild.cpp
LEGO1/lego/legoomni/src/build/legovehiclebuildstate.cpp
LEGO1/lego/legoomni/src/build/racecar.cpp
LEGO1/lego/legoomni/src/common/animstate.cpp
LEGO1/lego/legoomni/src/common/gifmanager.cpp
LEGO1/lego/legoomni/src/common/legoactioncontrolpresenter.cpp
LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp
LEGO1/lego/legoomni/src/common/legogamestate.cpp
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp
LEGO1/lego/legoomni/src/common/legostate.cpp
LEGO1/lego/legoomni/src/common/legounksavedatawriter.cpp
LEGO1/lego/legoomni/src/common/legoutil.cpp
LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp
LEGO1/lego/legoomni/src/control/legocontrolmanager.cpp
LEGO1/lego/legoomni/src/control/mxcontrolpresenter.cpp
LEGO1/lego/legoomni/src/entity/legoactor.cpp
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
LEGO1/lego/legoomni/src/entity/legoanimactor.cpp
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
LEGO1/lego/legoomni/src/entity/legocarraceactor.cpp
LEGO1/lego/legoomni/src/entity/legoentity.cpp
LEGO1/lego/legoomni/src/entity/legoentitypresenter.cpp
LEGO1/lego/legoomni/src/entity/legojetski.cpp
LEGO1/lego/legoomni/src/entity/legojetskiraceactor.cpp
LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp
LEGO1/lego/legoomni/src/entity/legopathactor.cpp
LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp
LEGO1/lego/legoomni/src/entity/legorace.cpp
LEGO1/lego/legoomni/src/entity/legoraceactor.cpp
LEGO1/lego/legoomni/src/entity/legoracecar.cpp
LEGO1/lego/legoomni/src/entity/legoworld.cpp
LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp
LEGO1/lego/legoomni/src/gasstation/gasstation.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationentity.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationstate.cpp
LEGO1/lego/legoomni/src/hospital/ambulance.cpp
LEGO1/lego/legoomni/src/hospital/ambulancemissionstate.cpp
LEGO1/lego/legoomni/src/hospital/hospital.cpp
LEGO1/lego/legoomni/src/hospital/hospitalentity.cpp
LEGO1/lego/legoomni/src/hospital/hospitalstate.cpp
LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp
LEGO1/lego/legoomni/src/infocenter/infocenter.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterentity.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp
LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp
LEGO1/lego/legoomni/src/infocenter/score.cpp
LEGO1/lego/legoomni/src/infocenter/scorestate.cpp
LEGO1/lego/legoomni/src/input/legoinputmanager.cpp
LEGO1/lego/legoomni/src/isle/beachhouseentity.cpp
LEGO1/lego/legoomni/src/isle/bike.cpp
LEGO1/lego/legoomni/src/isle/bumpbouy.cpp
LEGO1/lego/legoomni/src/isle/doors.cpp
LEGO1/lego/legoomni/src/isle/historybook.cpp
LEGO1/lego/legoomni/src/isle/isleactor.cpp
LEGO1/lego/legoomni/src/isle/isle.cpp
LEGO1/lego/legoomni/src/isle/islepathactor.cpp
LEGO1/lego/legoomni/src/isle/jukebox.cpp
LEGO1/lego/legoomni/src/isle/jukeboxentity.cpp
LEGO1/lego/legoomni/src/isle/jukeboxstate.cpp
LEGO1/lego/legoomni/src/isle/motocycle.cpp
LEGO1/lego/legoomni/src/isle/radio.cpp
LEGO1/lego/legoomni/src/isle/radiostate.cpp
LEGO1/lego/legoomni/src/isle/skateboard.cpp
LEGO1/lego/legoomni/src/main/legoomni.cpp
LEGO1/lego/legoomni/src/notify/legoeventnotificationparam.cpp
LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp
LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp
LEGO1/lego/legoomni/src/pizzeria/pizza.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzamissionstate.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzeria.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzeriastate.cpp
LEGO1/lego/legoomni/src/police/police.cpp
LEGO1/lego/legoomni/src/police/policeentity.cpp
LEGO1/lego/legoomni/src/police/policestate.cpp
LEGO1/lego/legoomni/src/race/carrace.cpp
LEGO1/lego/legoomni/src/race/jetskirace.cpp
LEGO1/lego/legoomni/src/race/racestandsentity.cpp
LEGO1/lego/legoomni/src/race/racestate.cpp
LEGO1/lego/legoomni/src/towtrack/towtrack.cpp
LEGO1/lego/legoomni/src/towtrack/towtrackmissionstate.cpp
LEGO1/lego/legoomni/src/unknown/legounknown100d7c88.cpp
LEGO1/lego/legoomni/src/video/legoanimationmanager.cpp
LEGO1/lego/legoomni/src/video/legoanimmmpresenter.cpp
LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legocarbuildanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legoflctexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legolocomotionanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legoloopinganimpresenter.cpp
LEGO1/lego/legoomni/src/video/legometerpresenter.cpp
LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp
LEGO1/lego/legoomni/src/video/legopalettepresenter.cpp
LEGO1/lego/legoomni/src/video/legopartpresenter.cpp
LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp
LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legovideomanager.cpp
LEGO1/lego/legoomni/src/video/mxtransitionmanager.cpp
LEGO1/main.cpp
)
register_lego1_target(lego1)
if (MINGW) if (MINGW)
target_compile_definitions(lego1 PRIVATE DIRECTINPUT_VERSION=0x0500) target_compile_definitions(lego1 PRIVATE DIRECTINPUT_VERSION=0x0500)
endif() endif()
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/util") if (MSVC)
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1") target_sources(lego1 PRIVATE LEGO1/LegoOmni.def)
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include") else()
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources") target_sources(lego1 PRIVATE LEGO1/LegoOmni.mingw.def)
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include")
# Additional include directories
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/3rdparty/vec")
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
if (ISLE_USE_SMARTHEAP)
add_library(SmartHeap::SmartHeap STATIC IMPORTED)
set_target_properties(SmartHeap::SmartHeap PROPERTIES
IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SHLW32MT.LIB"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/smartheap"
INTERFACE_COMPILE_OPTIONS "/FI${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SMRTHEAP.HPP")
target_link_libraries(lego1 PRIVATE SmartHeap::SmartHeap)
endif() endif()
# Use internal DirectX 5 if required target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/util")
if (ISLE_USE_DX5) target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1")
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc") target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/omni/include")
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib") target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources")
endif() target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include")
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
# Link libraries # Link libraries
target_link_libraries(lego1 PRIVATE ddraw dsound dinput dxguid winmm d3drm smack flic) target_link_libraries(lego1 PRIVATE tglrl viewmanager realtime mxdirectx roi FLIC::FLIC Vec::Vec dinput dxguid misc 3dmanager omni)
if (ISLE_USE_SMARTHEAP)
foreach(tgt IN LISTS lego1_targets)
target_link_libraries(${tgt} PRIVATE SmartHeap::SmartHeap)
endforeach()
endif()
foreach(tgt IN LISTS lego1_targets)
target_link_libraries(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
endforeach()
# Make sure filenames are ALL CAPS # Make sure filenames are ALL CAPS
set_property(TARGET lego1 PROPERTY OUTPUT_NAME LEGO1) set_property(TARGET lego1 PROPERTY OUTPUT_NAME LEGO1)
@ -295,19 +378,8 @@ if (ISLE_BUILD_APP)
ISLE/define.cpp ISLE/define.cpp
) )
target_compile_definitions(isle PRIVATE ISLE_APP)
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/util")
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1")
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include")
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources")
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include")
# Use internal DirectX 5 if required # Use internal DirectX 5 if required
if (ISLE_USE_DX5) target_link_libraries(isle PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
target_link_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
endif()
if (ISLE_USE_SMARTHEAP) if (ISLE_USE_SMARTHEAP)
target_link_libraries(isle PRIVATE SmartHeap::SmartHeap) target_link_libraries(isle PRIVATE SmartHeap::SmartHeap)
@ -323,15 +395,19 @@ endif()
if (MSVC) if (MSVC)
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15")
target_compile_definitions(lego1 PRIVATE _CRT_SECURE_NO_WARNINGS) foreach(tgt IN LISTS lego1_targets)
if (ISLE_BUILD_APP) target_compile_definitions(${tgt} PRIVATE _CRT_SECURE_NO_WARNINGS)
endforeach()
if (TARGET isle)
target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS") target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS")
endif() endif()
endif() endif()
# Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus # Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428")
target_compile_options(lego1 PRIVATE "-Zc:__cplusplus") foreach(tgt IN LISTS lego1_targets)
if (ISLE_BUILD_APP) target_compile_options(${tgt} PRIVATE "-Zc:__cplusplus")
endforeach()
if (TARGET isle)
target_compile_options(isle PRIVATE "-Zc:__cplusplus") target_compile_options(isle PRIVATE "-Zc:__cplusplus")
endif() endif()
endif() endif()
@ -350,8 +426,13 @@ if (MSVC_FOR_DECOMP)
# They ensure a recompilation that can be byte/instruction accurate to the original binaries. # They ensure a recompilation that can be byte/instruction accurate to the original binaries.
if (ISLE_BUILD_APP) if (ISLE_BUILD_APP)
target_compile_options(isle PRIVATE "/MT$<$<CONFIG:Debug>:d>") target_compile_options(isle PRIVATE "/MT$<$<CONFIG:Debug>:d>")
target_link_options(isle PRIVATE "/OPT:REF")
endif() endif()
target_compile_options(lego1 PRIVATE "/MT$<$<CONFIG:Debug>:d>") target_compile_options(lego1 PRIVATE "/MT$<$<CONFIG:Debug>:d>")
foreach(tgt IN LISTS lego1_targets)
target_compile_options(${tgt} PRIVATE "/MT$<$<CONFIG:Debug>:d>")
endforeach()
set(CMAKE_CXX_FLAGS "/W3 /GX /D \"WIN32\" /D \"_WINDOWS\"") set(CMAKE_CXX_FLAGS "/W3 /GX /D \"WIN32\" /D \"_WINDOWS\"")
set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Zi /Od /D \"_DEBUG\"") set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Zi /Od /D \"_DEBUG\"")
@ -365,6 +446,8 @@ if (MSVC_FOR_DECOMP)
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug") set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug")
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/incremental:no") set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/incremental:no")
set(CMAKE_STATIC_LINKER_FLAGS "/machine:I386")
set(CMAKE_SHARED_LINKER_FLAGS "/machine:I386") set(CMAKE_SHARED_LINKER_FLAGS "/machine:I386")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/incremental:yes /debug") set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/incremental:yes /debug")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no") set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no")
@ -373,12 +456,17 @@ if (MSVC_FOR_DECOMP)
# Older MSVC versions don't support building in parallel. # Older MSVC versions don't support building in parallel.
# Force non-parallel builds of isle and lego1 by putting them in a pool with 1 available job. # Force non-parallel builds of isle and lego1 by putting them in a pool with 1 available job.
if(CMAKE_CXX_COMPILER_ID VERSION_LESS 12) if (CMAKE_CXX_COMPILER_ID VERSION_LESS 12)
set_property(GLOBAL PROPERTY JOB_POOLS "msvc_lego=1;msvc_lego1=1") foreach(tgt IN LISTS lego1_taregets)
set_property(TARGET isle PROPERTY JOB_POOL_COMPILE msvc_lego) set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_${tgt}=1;msvc_lego1=1")
set_property(TARGET isle PROPERTY JOB_POOL_LINK msvc_lego) set_property(TARGET ${tgt} PROPERTY JOB_POOL_COMPILE msvc_${tgt})
set_property(TARGET lego1 PROPERTY JOB_POOL_COMPILE msvc_lego1) set_property(TARGET ${tgt} PROPERTY JOB_POOL_LINK msvc_${tgt})
set_property(TARGET lego1 PROPERTY JOB_POOL_LINK msvc_lego1) endforeach()
if (TARGET isle)
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_isle=1")
set_property(TARGET isle PROPERTY JOB_POOL_COMPILE msvc_isle)
set_property(TARGET isle PROPERTY JOB_POOL_LINK msvc_isle)
endif()
endif() endif()
endif() endif()

View File

@ -52,7 +52,15 @@ IsleApp::IsleApp()
m_frameDelta = 10; m_frameDelta = 10;
m_windowActive = 1; m_windowActive = 1;
#ifdef COMPAT_MODE
{
MxRect32 r(0, 0, 639, 479);
MxVideoParamFlags flags;
m_videoParam = MxVideoParam(r, NULL, 1, flags);
}
#else
m_videoParam = MxVideoParam(MxRect32(0, 0, 639, 479), NULL, 1, MxVideoParamFlags()); m_videoParam = MxVideoParam(MxRect32(0, 0, 639, 479), NULL, 1, MxVideoParamFlags());
#endif
m_videoParam.Flags().Set16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16); m_videoParam.Flags().Set16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16);
m_windowHandle = NULL; m_windowHandle = NULL;

138
LEGO1/LegoOmni.def Normal file
View File

@ -0,0 +1,138 @@
; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL.
DESCRIPTION "Lego OMNI Windows Dynamic Link Library"
EXPORTS
; EXPORTs really required only.
??0LegoBackgroundColor@@QAE@PBD0@Z
??0LegoGameState@@QAE@XZ
??0LegoWorld@@QAE@XZ
??0MxAtomId@@QAE@PBDW4LookupMode@@@Z
??0MxBitmap@@QAE@XZ
??0MxCore@@QAE@XZ
??0MxCriticalSection@@QAE@XZ
??0MxDSAction@@QAE@XZ
??0MxDSFile@@QAE@PBDK@Z
??0MxOmniCreateFlags@@QAE@XZ
??0MxOmniCreateParam@@QAE@PBDPAUHWND__@@AAVMxVideoParam@@VMxOmniCreateFlags@@@Z
??0MxString@@QAE@ABV0@@Z
??0MxVideoParam@@QAE@AAV0@@Z
??0MxVideoParam@@QAE@AAVMxRect32@@PAVMxPalette@@KAAVMxVideoParamFlags@@@Z
??0MxVideoParam@@QAE@XZ
??0MxVideoParamFlags@@QAE@XZ
??1LegoEntity@@UAE@XZ
??1LegoGameState@@QAE@XZ
??1LegoWorld@@UAE@XZ
??1MXIOINFO@@QAE@XZ
??1MxAtomId@@QAE@XZ
??1MxBitmap@@UAE@XZ
??1MxCore@@UAE@XZ
??1MxCriticalSection@@QAE@XZ
??1MxDSAction@@UAE@XZ
??1MxDSFile@@UAE@XZ
??1MxPresenter@@UAE@XZ
??1MxString@@UAE@XZ
??1MxVideoParam@@QAE@XZ
??4MxAtomId@@QAEAAV0@ABV0@@Z
??4MxString@@QAEABV0@PBD@Z
??4MxVideoParam@@QAEAAV0@ABV0@@Z
??8MxPalette@@QAEEAAV0@@Z
?BackgroundAudioManager@@YAPAVMxBackgroundAudioManager@@XZ
?Close@MxDSFile@@UAEJXZ
?Close@MxStreamer@@QAEJPBD@Z
?CreateBackgroundAudio@LegoOmni@@QAEXXZ
?CreateInstance@LegoOmni@@SAXXZ
?CreatePalette@MxBitmap@@UAEPAVMxPalette@@XZ
?CreateStreamObject@@YAPAVMxDSObject@@PAVMxDSFile@@F@Z
?DestroyInstance@MxOmni@@SAXXZ
?Detach@MxPalette@@QAEXXZ
?DisableRMDevice@LegoVideoManager@@QAEHXZ
?DoneTickle@MxPresenter@@MAEXXZ
?Enable@MxBackgroundAudioManager@@QAEXE@Z
?Enable@MxPresenter@@UAEXE@Z
?EnableFullScreenMovie@LegoVideoManager@@QAEXEE@Z
?EnableRMDevice@LegoVideoManager@@QAEHXZ
?EndAction@MxPresenter@@UAEXXZ
?EventManager@@YAPAVMxEventManager@@XZ
?FlipToGDISurface@MxDirectDraw@@QAEHXZ
?GameState@@YAPAVLegoGameState@@XZ
?GetBufferSize@MxDSFile@@UAEKXZ
?GetCD@MxOmni@@SAPBDXZ
?GetCurrPathInfo@LegoOmni@@SAHPAPAVLegoPathBoundary@@AAH@Z
?GetDefaults@LegoNavController@@SAXPAHPAM11111111PAE@Z
?GetHD@MxOmni@@SAPBDXZ
?GetInstance@LegoOmni@@SAPAV1@XZ
?GetInstance@MxOmni@@SAPAV1@XZ
?GetInstance@MxScheduler@@SAPAV1@XZ
?GetNoCD_SourceName@@YAPBDXZ
?GetPartsThreshold@RealtimeView@@SAMXZ
?GetPrimaryBitDepth@MxDirectDraw@@SAHXZ
?GetRealTime@MxTimer@@QAEJXZ
?GetStreamBuffersNum@MxDSFile@@UAEKXZ
?GetUserMaxLOD@RealtimeView@@SAMXZ
?GetVariable@MxVariableTable@@QAEPBDPBD@Z
?Init@MxPresenter@@IAEXXZ
?InputManager@@YAPAVLegoInputManager@@XZ
?InvalidateRect@MxVideoManager@@QAEXAAVMxRect32@@@Z
?IsSound3D@MxOmni@@SAEXZ
?Lego@@YAPAVLegoOmni@@XZ
?Load@LegoGameState@@QAEJK@Z
?MSoundManager@@YAPAVMxSoundManager@@XZ
?MakeSourceName@@YAXPADPBD@Z
?MoveCursor@LegoVideoManager@@QAEXHH@Z
?MusicManager@@YAPAVMxMusicManager@@XZ
?NotificationManager@@YAPAVMxNotificationManager@@XZ
?Notify@MxCore@@UAEJAAVMxParam@@@Z
?Open@MxDSFile@@UAEJK@Z
?Open@MxStreamer@@QAEPAVMxStreamController@@PBDG@Z
?ParseExtra@MxPresenter@@MAEXXZ
?Pause@MxDirectDraw@@QAEHH@Z
?PickEntity@@YAPAVLegoEntity@@JJ@Z
?PickROI@@YAPAVLegoROI@@JJ@Z
?QueueEvent@LegoInputManager@@QAEXW4NotificationId@@EJJE@Z
?Read@MxBitmap@@UAEJPBD@Z
?Read@MxDSFile@@UAEJPAEK@Z
?RealizePalette@MxVideoManager@@UAEJPAVMxPalette@@@Z
?Register@LegoInputManager@@QAEXPAVMxCore@@@Z
?RemoveAll@ViewManager@@QAEXPAVViewROI@@@Z
?RemoveWorld@LegoOmni@@QAEXABVMxAtomId@@J@Z
?Save@LegoGameState@@QAEJK@Z
?Seek@MxDSFile@@UAEJJH@Z
?SerializePlayersInfo@LegoGameState@@QAEXF@Z
?SerializeScoreHistory@LegoGameState@@QAEXF@Z
?SetCD@MxOmni@@SAXPBD@Z
?SetDefaults@LegoNavController@@SAXHMMMMMMMMME@Z
?SetDeviceName@MxVideoParam@@QAEXPAD@Z
?SetDisplayBB@LegoROI@@QAEXH@Z
?SetDoMutex@MxCriticalSection@@SAXXZ
?SetHD@MxOmni@@SAXPBD@Z
?SetObjectName@MxDSObject@@QAEXPBD@Z
?SetOmniUserMessage@@YAXP6AXPBDH@Z@Z
?SetPartsThreshold@RealtimeView@@SAXM@Z
?SetSavePath@LegoGameState@@QAEXPAD@Z
?SetSound3D@MxOmni@@SAXE@Z
?SetUserMaxLOD@RealtimeView@@SAXM@Z
?SetVariable@MxVariableTable@@QAEXPAVMxVariable@@@Z
?SetVariable@MxVariableTable@@QAEXPBD0@Z
?SetWaitIndicator@MxTransitionManager@@QAEXPAVMxVideoPresenter@@@Z
?SoundManager@@YAPAVLegoSoundManager@@XZ
?Start@@YAJPAVMxDSAction@@@Z
?StartAction@MxPresenter@@UAEJPAVMxStreamController@@PAVMxDSAction@@@Z
?StartMultiTasking@MxScheduler@@QAEXK@Z
?Streamer@@YAPAVMxStreamer@@XZ
?Tickle@MxPresenter@@UAEJXZ
?TickleManager@@YAPAVMxTickleManager@@XZ
?Timer@@YAPAVMxTimer@@XZ
?TransitionManager@@YAPAVMxTransitionManager@@XZ
?UnRegister@LegoInputManager@@QAEXPAVMxCore@@@Z
?VariableTable@@YAPAVMxVariableTable@@XZ
?VideoManager@@YAPAVLegoVideoManager@@XZ
?configureLegoAnimationManager@LegoAnimationManager@@SAXH@Z
?configureLegoBuildingManager@LegoBuildingManager@@SAXH@Z
?configureLegoModelPresenter@LegoModelPresenter@@SAXH@Z
?configureLegoPartPresenter@LegoPartPresenter@@SAXHH@Z
?configureLegoROI@LegoROI@@SAXH@Z
?configureLegoWorldPresenter@LegoWorldPresenter@@SAXH@Z
_DllMain@12

170
LEGO1/LegoOmni.mingw.def Normal file
View File

@ -0,0 +1,170 @@
; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL.
DESCRIPTION " Lego OMNI Windows Dynamic Link Library"
EXPORTS
; EXPORTs really required only.
_ZN13LegoGameState11SetSavePathEPc
_ZN13LegoGameState20SerializePlayersInfoEs
_ZN13LegoGameState21SerializeScoreHistoryEs
_ZN13LegoGameState4SaveEj
_ZN13LegoGameStateC1Ev
_ZN13LegoGameStateC2Ev
_ZN13LegoGameStateD1Ev
_ZN13LegoGameStateD2Ev
_ZN9LegoWorldC1Ev
_ZN9LegoWorldC2Ev
_ZN9LegoWorldD0Ev
_ZN9LegoWorldD1Ev
_ZN9LegoWorldD2Ev
DllMain@12
_Z10PickEntityii
_Z12EventManagerv
_Z12InputManagerv
_Z12MusicManagerv
_Z12SoundManagerv
_Z12VideoManagerv
_Z13MSoundManagerv
_Z13TickleManagerv
_Z13VariableTablev
_Z14MakeSourceNamePcPKc
_Z17TransitionManagerv
_Z18CreateStreamObjectP8MxDSFiles
_Z18GetNoCD_SourceNamev
_Z18SetOmniUserMessagePFvPKciE
_Z19NotificationManagerv
_Z22BackgroundAudioManagerv
_Z4Legov
_Z5StartP10MxDSAction
_Z5Timerv
_Z7PickROIii
_Z8Streamerv
_Z9GameStatev
_ZN10LegoEntityD0Ev
_ZN10LegoEntityD1Ev
_ZN10LegoEntityD2Ev
_ZN10MxDSActionC1Ev
_ZN10MxDSActionC2Ev
_ZN10MxDSActionD0Ev
_ZN10MxDSActionD1Ev
_ZN10MxDSActionD2Ev
_ZN10MxDSObject13SetObjectNameEPKc
_ZN10MxStreamer4OpenEPKct
_ZN10MxStreamer5CloseEPKc
_ZN11MxPresenter10DoneTickleEv
_ZN11MxPresenter10ParseExtraEv
_ZN11MxPresenter11StartActionEP18MxStreamControllerP10MxDSAction
_ZN11MxPresenter4InitEv
_ZN11MxPresenter6EnableEh
_ZN11MxPresenter6TickleEv
_ZN11MxPresenter9EndActionEv
_ZN11MxPresenterD0Ev
_ZN11MxPresenterD1Ev
_ZN11MxPresenterD2Ev
_ZN11MxScheduler11GetInstanceEv
_ZN11MxScheduler17StartMultiTaskingEj
_ZN11ViewManager9RemoveAllEP7ViewROI
_ZN12MxDirectDraw16FlipToGDISurfaceEv
_ZN12MxDirectDraw18GetPrimaryBitDepthEv
_ZN12MxDirectDraw5PauseEi
_ZN12MxVideoParam13SetDeviceNameEPc
_ZN12MxVideoParamC1ERS_
_ZN12MxVideoParamC1Ev
_ZN12MxVideoParamC2ERS_
_ZN12MxVideoParamC2Ev
_ZN12MxVideoParamD1Ev
_ZN12MxVideoParamD2Ev
_ZN12MxVideoParamaSERKS_
_ZN12RealtimeView13GetUserMaxLODEv
_ZN12RealtimeView13SetUserMaxLODEf
_ZN12RealtimeView17GetPartsThresholdEv
_ZN12RealtimeView17SetPartsThresholdEf
_ZN14MxVideoManager14InvalidateRectER8MxRect32
_ZN14MxVideoManager14RealizePaletteEP9MxPalette
_ZN15MxVariableTable11GetVariableEPKc
_ZN15MxVariableTable11SetVariableEP10MxVariable
_ZN15MxVariableTable11SetVariableEPKcS1_ = _ZN15MxVariableTable11SetVariableEPKcS1_
;_ZN16LegoInputManager10QueueEventE14NotificationIdhiih
_ZN16LegoInputManager10QueueEventE14NotificationIdhiih
_ZN16LegoInputManager10UnRegisterEP6MxCore
_ZN16LegoInputManager8RegisterEP6MxCore
_ZN16LegoVideoManager10MoveCursorEii
_ZN16LegoVideoManager14EnableRMDeviceEv
_ZN16LegoVideoManager15DisableRMDeviceEv
_ZN16LegoVideoManager21EnableFullScreenMovieEhh
_ZN17LegoNavController11GetDefaultsEPiPfS1_S1_S1_S1_S1_S1_S1_S1_Ph
_ZN17LegoNavController11SetDefaultsEifffffffffh
_ZN17LegoPartPresenter26configureLegoPartPresenterEii
_ZN17MxCriticalSection10SetDoMutexEv
_ZN17MxCriticalSectionC1Ev
_ZN17MxCriticalSectionC2Ev
_ZN17MxCriticalSectionD1Ev
_ZN17MxCriticalSectionD2Ev
_ZN17MxOmniCreateFlagsC1Ev
_ZN17MxOmniCreateFlagsC2Ev
_ZN17MxOmniCreateParamC1EPKcP6HWND__R12MxVideoParam17MxOmniCreateFlags
_ZN17MxVideoParamFlagsC1Ev
_ZN17MxVideoParamFlagsC2Ev
_ZN18LegoModelPresenter27configureLegoModelPresenterEi
_ZN18LegoWorldPresenter27configureLegoWorldPresenterEi
_ZN19LegoBuildingManager28configureLegoBuildingManagerEi
_ZN19MxTransitionManager16SetWaitIndicatorEP16MxVideoPresenter
_ZN20LegoAnimationManager29configureLegoAnimationManagerEi
_ZN24MxBackgroundAudioManager6EnableEh
_ZN6MxCore6NotifyER7MxParam
_ZN6MxCoreC1Ev
_ZN6MxCoreC2Ev
_ZN6MxCoreD0Ev
_ZN6MxCoreD1Ev
_ZN6MxCoreD2Ev
_ZN6MxOmni10SetSound3DEh
_ZN6MxOmni11GetInstanceEv
_ZN6MxOmni15DestroyInstanceEv
_ZN6MxOmni5GetCDEv
_ZN6MxOmni5GetHDEv
_ZN6MxOmni5SetCDEPKc
_ZN6MxOmni5SetHDEPKc
_ZN6MxOmni9IsSound3DEv
_ZN7LegoROI12SetDisplayBBEi
_ZN7LegoROI16configureLegoROIEi
_ZN7MxTimer11GetRealTimeEv
_ZN8LegoOmni11GetInstanceEv
_ZN8LegoOmni11RemoveWorldERK8MxAtomIdi
_ZN8LegoOmni14CreateInstanceEv
_ZN8LegoOmni15GetCurrPathInfoEPP16LegoPathBoundaryRi
_ZN8LegoOmni21CreateBackgroundAudioEv
_ZN8MXIOINFOD1Ev
_ZN8MXIOINFOD2Ev
_ZN8MxAtomIdC1EPKc10LookupMode
_ZN8MxAtomIdC2EPKc10LookupMode
_ZN8MxAtomIdD1Ev
_ZN8MxAtomIdD2Ev
_ZN8MxAtomIdaSERKS_
_ZN8MxBitmap13CreatePaletteEv
_ZN8MxBitmap4ReadEPKc
_ZN8MxBitmapC1Ev
_ZN8MxBitmapC2Ev
_ZN8MxBitmapD0Ev
_ZN8MxBitmapD1Ev
_ZN8MxBitmapD2Ev
_ZN8MxDSFile13GetBufferSizeEv
_ZN8MxDSFile19GetStreamBuffersNumEv
_ZN8MxDSFile4OpenEj
_ZN8MxDSFile4ReadEPhj
_ZN8MxDSFile4SeekEii
_ZN8MxDSFile5CloseEv
_ZN8MxDSFileC1EPKcj
_ZN8MxDSFileC2EPKcj
_ZN8MxDSFileD0Ev
_ZN8MxDSFileD1Ev
_ZN8MxDSFileD2Ev
_ZN8MxStringC1ERKS_
_ZN8MxStringC2ERKS_
_ZN8MxStringD0Ev
_ZN8MxStringD1Ev
_ZN8MxStringD2Ev
_ZN8MxStringaSEPKc
_ZN9MxPalette6DetachEv
_ZN9MxPaletteeqERS_

View File

@ -22,6 +22,9 @@ class Act1State : public LegoState {
return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name);
}; };
virtual MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x18 = p_unk0x18; } inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x18 = p_unk0x18; }
inline MxU32 GetUnknown18() { return m_unk0x18; } inline MxU32 GetUnknown18() { return m_unk0x18; }
inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x21 = p_unk0x21; } inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x21 = p_unk0x21; }

View File

@ -26,6 +26,8 @@ class Act2Brick : public LegoPathActor {
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name); return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
} }
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1007a450 // SYNTHETIC: LEGO1 0x1007a450
// Act2Brick::`scalar deleting destructor' // Act2Brick::`scalar deleting destructor'
}; };

View File

@ -11,6 +11,9 @@ class Act3 : public LegoWorld {
virtual ~Act3() override; // vtable+00 virtual ~Act3() override; // vtable+00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x10072510 // FUNCTION: LEGO1 0x10072510
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -24,12 +27,25 @@ class Act3 : public LegoWorld {
return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual void VTable0x60() override; // vtable+0x60
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; } inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; } inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; }
// SYNTHETIC: LEGO1 0x10072630 // SYNTHETIC: LEGO1 0x10072630
// Act3::`scalar deleting destructor' // Act3::`scalar deleting destructor'
MxBool FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
MxBool FUN_10072980(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
void FUN_10073400();
void FUN_10073430();
protected: protected:
undefined m_unk0xf8[0x4114]; // 0xf8 undefined m_unk0xf8[0x4114]; // 0xf8
MxEntity* m_unk0x420c; // 0x420c MxEntity* m_unk0x420c; // 0x420c

View File

@ -7,12 +7,23 @@
class Act3Shark : public LegoAnimActor { class Act3Shark : public LegoAnimActor {
public: public:
// FUNCTION: LEGO1 0x100430c0 // FUNCTION: LEGO1 0x100430c0
inline virtual const char* ClassName() const override inline virtual const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03a0 // STRING: LEGO1 0x100f03a0
return "Act3Shark"; return "Act3Shark";
} }
// FUNCTION: LEGO1 0x1001a130
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, Act3Shark::ClassName()) || LegoAnimActor::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
// SYNTHETIC: LEGO1 0x10043020 // SYNTHETIC: LEGO1 0x10043020
// Act3Shark::`scalar deleting destructor' // Act3Shark::`scalar deleting destructor'
}; };

View File

@ -9,6 +9,9 @@ class Ambulance : public IslePathActor {
public: public:
Ambulance(); Ambulance();
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x10035fa0 // FUNCTION: LEGO1 0x10035fa0
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -22,6 +25,14 @@ class Ambulance : public IslePathActor {
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10036130 // SYNTHETIC: LEGO1 0x10036130
// Ambulance::`scalar deleting destructor' // Ambulance::`scalar deleting destructor'

View File

@ -22,6 +22,8 @@ class AmbulanceMissionState : public LegoState {
return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id) inline MxU16 GetColor(MxU8 p_id)
{ {
switch (p_id) { switch (p_id) {

View File

@ -23,8 +23,8 @@ class AnimState : public LegoState {
return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxBool SetFlag() override; // vtable+0x18 virtual MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1C virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1C
// SYNTHETIC: LEGO1 0x10065130 // SYNTHETIC: LEGO1 0x10065130
// AnimState::`scalar deleting destructor' // AnimState::`scalar deleting destructor'

View File

@ -23,6 +23,11 @@ class Bike : public IslePathActor {
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10076880 // SYNTHETIC: LEGO1 0x10076880
// Bike::`scalar deleting destructor' // Bike::`scalar deleting destructor'

View File

@ -7,6 +7,8 @@
// VTABLE: LEGO1 0x100d6790 // VTABLE: LEGO1 0x100d6790
class BumpBouy : public LegoAnimActor { class BumpBouy : public LegoAnimActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x100274e0 // FUNCTION: LEGO1 0x100274e0
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -20,6 +22,11 @@ class BumpBouy : public LegoAnimActor {
return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name); return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
// SYNTHETIC: LEGO1 0x10027490 // SYNTHETIC: LEGO1 0x10027490
// BumpBouy::`scalar deleting destructor' // BumpBouy::`scalar deleting destructor'
}; };

View File

@ -23,6 +23,14 @@ class CarRace : public LegoRace {
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name); return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x64() override; // vtable+0x64
virtual undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
virtual undefined4 VTable0x70(undefined4) override; // vtable+0x70
virtual undefined4 VTable0x74(undefined4) override; // vtable+0x74
virtual undefined4 VTable0x78(undefined4) override; // vtable+0x78
// SYNTHETIC: LEGO1 0x10016c70 // SYNTHETIC: LEGO1 0x10016c70
// CarRace::`scalar deleting destructor' // CarRace::`scalar deleting destructor'

View File

@ -20,6 +20,10 @@ class Doors : public LegoPathActor {
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name); return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1000e580 // SYNTHETIC: LEGO1 0x1000e580
// Doors::`scalar deleting destructor' // Doors::`scalar deleting destructor'
}; };

View File

@ -23,6 +23,13 @@ class DuneBuggy : public IslePathActor {
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10067dc0 // SYNTHETIC: LEGO1 0x10067dc0
// DuneBuggy::`scalar deleting destructor' // DuneBuggy::`scalar deleting destructor'

View File

@ -27,7 +27,7 @@ class ElevatorBottom : public LegoWorld {
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x50() override; // vtable+0x50 virtual void ReadyWorld() override; // vtable+0x50
// FUNCTION: LEGO1 0x10017f10 // FUNCTION: LEGO1 0x10017f10
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c

View File

@ -29,6 +29,12 @@ class GasStation : public LegoWorld {
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x100048a0 // SYNTHETIC: LEGO1 0x100048a0
// GasStation::`scalar deleting destructor' // GasStation::`scalar deleting destructor'

View File

@ -22,6 +22,8 @@ class GasStationState : public LegoState {
return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x10006290 // SYNTHETIC: LEGO1 0x10006290
// GasStationState::`scalar deleting destructor' // GasStationState::`scalar deleting destructor'

View File

@ -38,8 +38,8 @@ class Helicopter : public IslePathActor {
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70 virtual void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74 virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxU32 VTable0xcc() override; // vtable+0xcc virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4 virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8 virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8

View File

@ -21,6 +21,16 @@ class HelicopterState : public LegoState {
return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name);
} }
// FUNCTION: LEGO1 0x1000e0b0
virtual MxBool VTable0x14() override { return FALSE; }; // vtable+0x14
// FUNCTION: LEGO1 0x1000e0c0
virtual MxBool SetFlag() override
{
m_unk0x8 = 0;
return TRUE;
}; // vtable+0x18
inline void SetUnknown8(MxU32 p_unk0x8) { m_unk0x8 = p_unk0x8; } inline void SetUnknown8(MxU32 p_unk0x8) { m_unk0x8 = p_unk0x8; }
inline MxU32 GetUnkown8() { return m_unk0x8; } inline MxU32 GetUnkown8() { return m_unk0x8; }

View File

@ -25,6 +25,10 @@ class HistoryBook : public LegoWorld {
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x64() override; // vtable+0x64
// SYNTHETIC: LEGO1 0x100824b0 // SYNTHETIC: LEGO1 0x100824b0
// HistoryBook::`scalar deleting destructor' // HistoryBook::`scalar deleting destructor'
}; };

View File

@ -12,6 +12,7 @@ class Hospital : public LegoWorld {
virtual ~Hospital() override; // vtable+0x0 virtual ~Hospital() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x100746b0 // FUNCTION: LEGO1 0x100746b0
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
@ -26,6 +27,12 @@ class Hospital : public LegoWorld {
return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x100747d0 // SYNTHETIC: LEGO1 0x100747d0
// Hospital::`scalar deleting destructor' // Hospital::`scalar deleting destructor'

View File

@ -23,6 +23,8 @@ class HospitalState : public LegoState {
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x100764c0 // SYNTHETIC: LEGO1 0x100764c0
// HospitalState::`scalar deleting destructor' // HospitalState::`scalar deleting destructor'

View File

@ -5,13 +5,19 @@
#include "radio.h" #include "radio.h"
class InfocenterState; class InfocenterState;
class MxStillPresenter;
// SIZE 0x18 // SIZE 0x18
struct InfocenterUnkDataEntry { struct InfocenterMapEntry {
// FUNCTION: LEGO1 0x1006ec80 // FUNCTION: LEGO1 0x1006ec80
InfocenterUnkDataEntry() {} InfocenterMapEntry() {}
undefined m_pad[0x18]; MxStillPresenter* m_presenter; // 0x00
undefined4 m_unk0x04; // 0x04
undefined4 m_unk0x08; // 0x08
undefined4 m_unk0x0c; // 0x0c
undefined4 m_unk0x10; // 0x10
undefined4 m_unk0x14; // 0x14
}; };
// VTABLE: LEGO1 0x100d9338 // VTABLE: LEGO1 0x100d9338
@ -31,6 +37,22 @@ class Infocenter : public LegoWorld {
enum InfomainScript { enum InfomainScript {
c_noInfomain = -1, c_noInfomain = -1,
c_leftArrowCtl = 1,
c_rightArrowCtl = 2,
c_infoCtl = 3,
c_boatCtl = 10,
c_raceCtl = 11,
c_pizzaCtl = 12,
c_gasCtl = 13,
c_medCtl = 14,
c_copCtl = 15,
c_radioCtl = 18,
c_mamaCtl = 21,
c_papaCtl = 22,
c_pepperCtl = 23,
c_nickCtl = 24,
c_lauraCtl = 25,
c_welcomeDialogue = 500, c_welcomeDialogue = 500,
c_goodJobDialogue = 501, c_goodJobDialogue = 501,
@ -127,7 +149,7 @@ class Infocenter : public LegoWorld {
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x50() override; // vtable+0x50 virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
@ -167,9 +189,9 @@ class Infocenter : public LegoWorld {
Cutscene m_currentCutscene; // 0x108 Cutscene m_currentCutscene; // 0x108
Radio m_radio; // 0x10c Radio m_radio; // 0x10c
undefined4 m_unk0x11c; // 0x11c undefined4 m_unk0x11c; // 0x11c
InfocenterUnkDataEntry m_entries[7]; // 0x120 InfocenterMapEntry m_mapAreas[7]; // 0x120
MxS16 m_unk0x1c8; // 0x1c8 MxS16 m_unk0x1c8; // 0x1c8
undefined4 m_unk0x1cc; // 0x1cc MxStillPresenter* m_frameHotBitmap; // 0x1cc
MxS16 m_infoManDialogueTimer; // 0x1d0 MxS16 m_infoManDialogueTimer; // 0x1d0
MxS16 m_bookAnimationTimer; // 0x1d2 MxS16 m_bookAnimationTimer; // 0x1d2
MxU16 m_unk0x1d4; // 0x1d4 MxU16 m_unk0x1d4; // 0x1d4

View File

@ -26,7 +26,7 @@ class InfocenterDoor : public LegoWorld {
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x50() override; // vtable+0x50 virtual void ReadyWorld() override; // vtable+0x50
// FUNCTION: LEGO1 0x100377a0 // FUNCTION: LEGO1 0x100377a0
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c

View File

@ -20,7 +20,6 @@ class Act1State;
// VTABLE: LEGO1 0x100d6fb8 // VTABLE: LEGO1 0x100d6fb8
// SIZE 0x140 // SIZE 0x140
// Radio at 0x12c
class Isle : public LegoWorld { class Isle : public LegoWorld {
public: public:
Isle(); Isle();
@ -41,8 +40,8 @@ class Isle : public LegoWorld {
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x50() override; // vtable+50 virtual void ReadyWorld() override; // vtable+50
virtual void VTable0x58(MxCore* p_object) override; // vtable+58 virtual void Add(MxCore* p_object) override; // vtable+58
// FUNCTION: LEGO1 0x10030900 // FUNCTION: LEGO1 0x10030900
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+5c virtual MxBool VTable0x5c() override { return TRUE; } // vtable+5c
// FUNCTION: LEGO1 0x10033170 // FUNCTION: LEGO1 0x10033170

View File

@ -6,6 +6,8 @@
// VTABLE: LEGO1 0x100d5178 // VTABLE: LEGO1 0x100d5178
class IsleActor : public LegoActor { class IsleActor : public LegoActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x1000e660 // FUNCTION: LEGO1 0x1000e660
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -18,6 +20,8 @@ class IsleActor : public LegoActor {
{ {
return !strcmp(p_name, IsleActor::ClassName()) || LegoActor::IsA(p_name); return !strcmp(p_name, IsleActor::ClassName()) || LegoActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
}; };
// SYNTHETIC: LEGO1 0x1000e940 // SYNTHETIC: LEGO1 0x1000e940

View File

@ -17,6 +17,8 @@ class IslePathActor : public LegoPathActor {
// FUNCTION: LEGO1 0x10002e10 // FUNCTION: LEGO1 0x10002e10
inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x0 inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10002ea0 // FUNCTION: LEGO1 0x10002ea0
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {

View File

@ -3,6 +3,7 @@
#include "decomp.h" #include "decomp.h"
#include "islepathactor.h" #include "islepathactor.h"
#include "mxtype17notificationparam.h"
// VTABLE: LEGO1 0x100d9ec8 // VTABLE: LEGO1 0x100d9ec8
// SIZE 0x164 // SIZE 0x164
@ -23,6 +24,12 @@ class Jetski : public IslePathActor {
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam&) override; // vtable+0xd4
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x1007e5c0 // SYNTHETIC: LEGO1 0x1007e5c0
// Jetski::`scalar deleting destructor' // Jetski::`scalar deleting destructor'

View File

@ -10,6 +10,9 @@ class JukeBox : public LegoWorld {
public: public:
JukeBox(); JukeBox();
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x1005d6f0 // FUNCTION: LEGO1 0x1005d6f0
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -23,6 +26,12 @@ class JukeBox : public LegoWorld {
return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1005d810 // SYNTHETIC: LEGO1 0x1005d810
// JukeBox::`scalar deleting destructor' // JukeBox::`scalar deleting destructor'
enum JukeBoxScript { enum JukeBoxScript {

View File

@ -10,6 +10,8 @@ class JukeBoxEntity : public LegoEntity {
JukeBoxEntity(); JukeBoxEntity();
virtual ~JukeBoxEntity() override; // vtable+0x0 virtual ~JukeBoxEntity() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10085cc0 // FUNCTION: LEGO1 0x10085cc0
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {

View File

@ -20,6 +20,11 @@ class Lego3DWavePresenter : public MxWavePresenter {
return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name); return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name);
} }
virtual void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x1000f4b0 // SYNTHETIC: LEGO1 0x1000f4b0
// Lego3DWavePresenter::`scalar deleting destructor' // Lego3DWavePresenter::`scalar deleting destructor'
}; };

View File

@ -3,10 +3,21 @@
#include "legocarraceactor.h" #include "legocarraceactor.h"
#include "legopathactor.h" #include "legopathactor.h"
#include "legoworld.h"
// VTABLE: LEGO1 0x100d82e0 // VTABLE: LEGO1 0x100d82e0
// SIZE 0x1154 // SIZE 0x1154
class LegoAct2 : public LegoWorld { class LegoAct2 : public LegoWorld {
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual void VTable0x60() override; // vtable+0x60
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1004fe20 // SYNTHETIC: LEGO1 0x1004fe20
// LegoAct2::`scalar deleting destructor' // LegoAct2::`scalar deleting destructor'
}; };

View File

@ -20,6 +20,8 @@ class LegoAct2State : public LegoState {
return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxBool VTable0x14() override; // vtable+0x14
// SYNTHETIC: LEGO1 0x1000e040 // SYNTHETIC: LEGO1 0x1000e040
// LegoAct2State::`scalar deleting destructor' // LegoAct2State::`scalar deleting destructor'
}; };

View File

@ -24,6 +24,9 @@ class LegoActor : public LegoEntity {
return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name); return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
// FUNCTION: LEGO1 0x10002cc0 // FUNCTION: LEGO1 0x10002cc0
virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50 virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50
// FUNCTION: LEGO1 0x10002cd0 // FUNCTION: LEGO1 0x10002cd0

View File

@ -32,7 +32,7 @@ class LegoAnimationManager : public MxCore {
void FUN_1005f720(undefined4); void FUN_1005f720(undefined4);
void FUN_10064670(MxBool); void FUN_10064670(MxBool);
__declspec(dllexport) static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig); static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
// SYNTHETIC: LEGO1 0x1005ed10 // SYNTHETIC: LEGO1 0x1005ed10
// LegoAnimationManager::`scalar deleting destructor' // LegoAnimationManager::`scalar deleting destructor'

View File

@ -9,6 +9,8 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
public: public:
LegoAnimMMPresenter(); LegoAnimMMPresenter();
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x1004a950 // FUNCTION: LEGO1 0x1004a950
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -22,6 +24,16 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name); return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20
virtual void RepeatingTickle() override; // vtable+0x24
virtual void DoneTickle() override; // vtable+0x2c
virtual void ParseExtra() override; // vtable+0x30
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
virtual void EndAction() override; // vtable+0x40
virtual void VTable0x60(MxPresenter* p_presenter) override; // vtable+0x60
// SYNTHETIC: LEGO1 0x1004aa40 // SYNTHETIC: LEGO1 0x1004aa40
// LegoAnimMMPresenter::`scalar deleting destructor' // LegoAnimMMPresenter::`scalar deleting destructor'
}; };

View File

@ -1,11 +1,12 @@
#ifndef LEGOANIMPRESENTER_H #ifndef LEGOANIMPRESENTER_H
#define LEGOANIMPRESENTER_H #define LEGOANIMPRESENTER_H
#include "lego/sources/misc/legostorage.h"
#include "lego/sources/misc/legotree.h"
#include "mxgeometry/mxgeometry3d.h" #include "mxgeometry/mxgeometry3d.h"
#include "mxvideopresenter.h" #include "mxvideopresenter.h"
class LegoWorld; class LegoWorld;
class LegoMemoryStream;
class LegoAnimClass; class LegoAnimClass;
// VTABLE: LEGO1 0x100d90c8 // VTABLE: LEGO1 0x100d90c8
@ -31,16 +32,20 @@ class LegoAnimPresenter : public MxVideoPresenter {
virtual void ReadyTickle() override; // vtable+0x18 virtual void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c virtual void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20 virtual void StreamingTickle() override; // vtable+0x20
virtual void DoneTickle() override; // vtable+0x2c
virtual void ParseExtra() override; // vtable+0x30 virtual void ParseExtra() override; // vtable+0x30
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38 virtual void Destroy() override; // vtable+0x38
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
virtual void EndAction() override; // vtable+0x40 virtual void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c virtual void PutFrame() override; // vtable+0x6c
virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88 virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
// 6 more virtual functions here inline LegoAnimClass* GetUnknown0x64() { return m_unk0x64; }
private: const char* GetActionObjectName();
protected:
void Init(); void Init();
void Destroy(MxBool p_fromDestructor); void Destroy(MxBool p_fromDestructor);
@ -71,34 +76,20 @@ class LegoAnimPresenter : public MxVideoPresenter {
// SYNTHETIC: LEGO1 0x10068650 // SYNTHETIC: LEGO1 0x10068650
// LegoAnimPresenter::`scalar deleting destructor' // LegoAnimPresenter::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db768
// SIZE 0x08
class LegoAnimClassBase {
public:
LegoAnimClassBase();
virtual ~LegoAnimClassBase();
virtual void VTable0x4(); // vtable+0x04
virtual void VTable0x8(); // vtable+0x08
virtual void VTable0xc(); // vtable+0x0c
undefined4 m_unk0x4; // 0x04
};
// SYNTHETIC: LEGO1 0x10099de0
// LegoAnimClassBase::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db8d8 // VTABLE: LEGO1 0x100db8d8
// SIZE 0x18 // SIZE 0x18
class LegoAnimClass : public LegoAnimClassBase { class LegoAnimClass : public LegoTree {
public: public:
LegoAnimClass(); LegoAnimClass();
virtual ~LegoAnimClass() override; virtual ~LegoAnimClass() override;
virtual void VTable0x8() override; // vtable+0x08 virtual LegoResult Write(LegoStorage* p_storage) override; // vtable+0x08
virtual void VTable0xc() override; // vtable+0x0c virtual LegoTreeNodeData* CreateData() override; // vtable+0x0c
virtual MxResult VTable0x10(LegoMemoryStream* p_stream, MxS32); // vtable+0x10 virtual MxResult VTable0x10(LegoMemory* p_stream, MxS32); // vtable+0x10
inline MxLong GetUnknown0x8() { return m_unk0x8; }
private:
MxLong m_unk0x8; // 0x08 MxLong m_unk0x8; // 0x08
undefined4 m_unk0xc; // 0x0c undefined4 m_unk0xc; // 0x0c
undefined4 m_unk0x10; // 0x10 undefined4 m_unk0x10; // 0x10

View File

@ -7,7 +7,7 @@
// SIZE 0x30 // SIZE 0x30
class LegoBackgroundColor : public MxVariable { class LegoBackgroundColor : public MxVariable {
public: public:
__declspec(dllexport) LegoBackgroundColor(const char* p_key, const char* p_value); LegoBackgroundColor(const char* p_key, const char* p_value);
virtual void SetValue(const char* p_colorString) override; virtual void SetValue(const char* p_colorString) override;
private: private:

View File

@ -10,6 +10,8 @@ class LegoBuildingManager : public MxCore {
LegoBuildingManager(); LegoBuildingManager();
virtual ~LegoBuildingManager() override; virtual ~LegoBuildingManager() override;
virtual MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1002f930 // FUNCTION: LEGO1 0x1002f930
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -17,9 +19,10 @@ class LegoBuildingManager : public MxCore {
return "LegoBuildingManager"; return "LegoBuildingManager";
} }
__declspec(dllexport) static void configureLegoBuildingManager(MxS32); static void configureLegoBuildingManager(MxS32);
void FUN_1002fa00(); void FUN_1002fa00();
void FUN_1002fb30();
// SYNTHETIC: LEGO1 0x1002f940 // SYNTHETIC: LEGO1 0x1002f940
// LegoBuildingManager::`scalar deleting destructor' // LegoBuildingManager::`scalar deleting destructor'

View File

@ -1,6 +1,7 @@
#ifndef LEGOCACHESOUND_H #ifndef LEGOCACHESOUND_H
#define LEGOCACHESOUND_H #define LEGOCACHESOUND_H
#include "decomp.h"
#include "mxcore.h" #include "mxcore.h"
// VTABLE: LEGO1 0x100d4718 // VTABLE: LEGO1 0x100d4718
@ -28,6 +29,8 @@ class LegoCacheSound : public MxCore {
private: private:
void Init(); void Init();
undefined m_padding0x08[0x80]; // 0x08
}; };
#endif // LEGOCACHESOUND_H #endif // LEGOCACHESOUND_H

View File

@ -0,0 +1,104 @@
#ifndef LEGOCACHESOUNDLIST_H
#define LEGOCACHESOUNDLIST_H
#include "mxlist.h"
#include "mxtypes.h"
class LegoCacheSound;
// VTABLE: LEGO1 0x100d63b0
// class MxCollection<LegoCacheSound *>
// VTABLE: LEGO1 0x100d63c8
// class MxList<LegoCacheSound *>
// VTABLE: LEGO1 0x100d63e0
// class MxPtrList<LegoCacheSound>
// VTABLE: LEGO1 0x100d63f8
// SIZE 0x18
class LegoCacheSoundList : public MxPtrList<LegoCacheSound> {
public:
LegoCacheSoundList(MxBool p_ownership = FALSE) : MxPtrList<LegoCacheSound>(p_ownership) {}
// FUNCTION: LEGO1 0x1001e650
virtual MxS8 Compare(LegoCacheSound* p_a, LegoCacheSound* p_b) override
{
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
}; // vtable+0x14
};
// VTABLE: LEGO1 0x100d64a0
// class MxListCursor<LegoCacheSound *>
// VTABLE: LEGO1 0x100d6500
// class MxPtrListCursor<LegoCacheSound>
// VTABLE: LEGO1 0x100d6518
// SIZE 0x10
class LegoCacheSoundListCursor : public MxPtrListCursor<LegoCacheSound> {
public:
LegoCacheSoundListCursor(LegoCacheSoundList* p_list) : MxPtrListCursor<LegoCacheSound>(p_list){};
};
// TEMPLATE: LEGO1 0x1001e670
// MxCollection<LegoCacheSound *>::Compare
// TEMPLATE: LEGO1 0x1001e680
// MxCollection<LegoCacheSound *>::~MxCollection<LegoCacheSound *>
// TEMPLATE: LEGO1 0x1001e6d0
// MxCollection<LegoCacheSound *>::Destroy
// TEMPLATE: LEGO1 0x1001e6e0
// MxList<LegoCacheSound *>::~MxList<LegoCacheSound *>
// TEMPLATE: LEGO1 0x1001e770
// MxPtrList<LegoCacheSound>::Destroy
// SYNTHETIC: LEGO1 0x1001e780
// LegoCacheSoundList::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001e7f0
// MxPtrList<LegoCacheSound>::~MxPtrList<LegoCacheSound>
// SYNTHETIC: LEGO1 0x1001e840
// MxCollection<LegoCacheSound *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001e8b0
// MxList<LegoCacheSound *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001e960
// MxPtrList<LegoCacheSound>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001f350
// LegoCacheSoundListCursor::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001f3c0
// MxPtrListCursor<LegoCacheSound>::~MxPtrListCursor<LegoCacheSound>
// SYNTHETIC: LEGO1 0x1001f410
// MxListCursor<LegoCacheSound *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001f480
// MxPtrListCursor<LegoCacheSound>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001f4f0
// MxListCursor<LegoCacheSound *>::~MxListCursor<LegoCacheSound *>
// FUNCTION: LEGO1 0x1001f540
// LegoCacheSoundListCursor::~LegoCacheSoundListCursor
// TEMPLATE: LEGO1 0x10020840
// MxListCursor<LegoCacheSound *>::MxListCursor<LegoCacheSound *>
// TEMPLATE: LEGO1 0x100224e0
// MxList<LegoCacheSound *>::InsertEntry
// TEMPLATE: LEGO1 0x10022590
// MxListCursor<LegoCacheSound *>::Find
// TEMPLATE: LEGO1 0x10022680
// MxList<LegoCacheSound *>::DeleteEntry
#endif // LEGOCACHESOUNDLIST_H

View File

@ -26,6 +26,12 @@ class LegoCarBuild : public LegoWorld {
return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x10022a60 // SYNTHETIC: LEGO1 0x10022a60
// LegoCarBuild::`scalar deleting destructor' // LegoCarBuild::`scalar deleting destructor'
}; };

View File

@ -23,6 +23,12 @@ class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name); return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18
virtual void StreamingTickle() override; // vtable+0x20
virtual void RepeatingTickle() override; // vtable+0x24
virtual void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x10078660 // SYNTHETIC: LEGO1 0x10078660
// LegoCarBuildAnimPresenter::`scalar deleting destructor' // LegoCarBuildAnimPresenter::`scalar deleting destructor'
}; };

View File

@ -19,6 +19,14 @@ class LegoCarRaceActor : public LegoRaceActor {
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name); return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
} }
virtual void VTable0x68() override; // vtable+0x68
virtual void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10081610 // SYNTHETIC: LEGO1 0x10081610
// LegoCarRaceActor::`scalar deleting destructor' // LegoCarRaceActor::`scalar deleting destructor'
}; };

View File

@ -1,6 +1,7 @@
#ifndef LEGOCONTROLMANAGER_H #ifndef LEGOCONTROLMANAGER_H
#define LEGOCONTROLMANAGER_H #define LEGOCONTROLMANAGER_H
#include "legoeventnotificationparam.h"
#include "mxcore.h" #include "mxcore.h"
#include "mxpresenterlist.h" #include "mxpresenterlist.h"
@ -28,10 +29,20 @@ class LegoControlManager : public MxCore {
void FUN_10028df0(MxPresenterList* p_presenterList); void FUN_10028df0(MxPresenterList* p_presenterList);
void Register(MxCore* p_listener); void Register(MxCore* p_listener);
void Unregister(MxCore* p_listener); void Unregister(MxCore* p_listener);
MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
void FUN_100293c0(undefined4, const char*, undefined2); void FUN_100293c0(undefined4, const char*, undefined2);
inline undefined4 GetUnknown0x0c() { return m_unk0x0c; }
inline undefined GetUnknown0x10() { return m_unk0x10; }
// SYNTHETIC: LEGO1 0x10028d40 // SYNTHETIC: LEGO1 0x10028d40
// LegoControlManager::`scalar deleting destructor' // LegoControlManager::`scalar deleting destructor'
private:
undefined4 m_unk0x08; // 0x08
undefined4 m_unk0x0c; // 0x0c
undefined m_unk0x10; // 0x10
undefined m_padding0x14[0x4c]; // 0x14
}; };
#endif // LEGOCONTROLMANAGER_H #endif // LEGOCONTROLMANAGER_H

View File

@ -13,18 +13,15 @@
class LegoEntity : public MxEntity { class LegoEntity : public MxEntity {
public: public:
enum { enum {
c_bit1 = 0x01 c_bit1 = 0x01,
c_bit2 = 0x02
}; };
// Inlined at 0x100853f7 // Inlined at 0x100853f7
inline LegoEntity() { Init(); } inline LegoEntity() { Init(); }
#ifdef ISLE_APP
__declspec(dllexport) virtual ~LegoEntity() override;
#else
// FUNCTION: LEGO1 0x1000c290 // FUNCTION: LEGO1 0x1000c290
__declspec(dllexport) virtual ~LegoEntity() override { Destroy(TRUE); } virtual ~LegoEntity() override { Destroy(TRUE); }
#endif
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4 virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
@ -62,6 +59,7 @@ class LegoEntity : public MxEntity {
void SetLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up, MxBool); void SetLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up, MxBool);
inline LegoROI* GetROI() { return m_roi; } inline LegoROI* GetROI() { return m_roi; }
inline MxU8 GetFlags() { return m_flags; }
protected: protected:
void Init(); void Init();

View File

@ -86,7 +86,16 @@ class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
// FUNCTION: LEGO1 0x1001f2b0 // FUNCTION: LEGO1 0x1001f2b0
// MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *> // MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *>
// FUNCTION: LEGO1 0x1001edc6 // FUNCTION: LEGO1 0x1001f300
// LegoEntityListCursor::~LegoEntityListCursor // LegoEntityListCursor::~LegoEntityListCursor
// TEMPLATE: LEGO1 0x100207d0
// MxListCursor<LegoEntity *>::MxListCursor<LegoEntity *>
// TEMPLATE: LEGO1 0x10022430
// MxList<LegoEntity *>::InsertEntry
// TEMPLATE: LEGO1 0x10022630
// MxList<LegoEntity *>::DeleteEntry
#endif // LEGOENTITYLIST_H #endif // LEGOENTITYLIST_H

View File

@ -3,6 +3,7 @@
#include "mxnotificationparam.h" #include "mxnotificationparam.h"
#include "mxtypes.h" #include "mxtypes.h"
#include "roi/legoroi.h"
#include <stdlib.h> #include <stdlib.h>
@ -10,6 +11,15 @@
// SIZE 0x20 // SIZE 0x20
class LegoEventNotificationParam : public MxNotificationParam { class LegoEventNotificationParam : public MxNotificationParam {
public: public:
// FUNCTION: LEGO1 0x10028690
virtual MxNotificationParam* Clone() override
{
LegoEventNotificationParam* clone =
new LegoEventNotificationParam(m_type, m_sender, m_modifier, m_x, m_y, m_key);
clone->m_roi = m_roi;
return clone;
}; // vtable+0x4
inline LegoEventNotificationParam() : MxNotificationParam(c_notificationType0, NULL) {} inline LegoEventNotificationParam() : MxNotificationParam(c_notificationType0, NULL) {}
inline LegoEventNotificationParam( inline LegoEventNotificationParam(
NotificationId p_type, NotificationId p_type,
@ -19,20 +29,23 @@ class LegoEventNotificationParam : public MxNotificationParam {
MxS32 p_y, MxS32 p_y,
MxU8 p_key MxU8 p_key
) )
: MxNotificationParam(p_type, p_sender), m_modifier(p_modifier), m_x(p_x), m_y(p_y), m_key(p_key), m_unk0x1c(0) : MxNotificationParam(p_type, p_sender), m_modifier(p_modifier), m_x(p_x), m_y(p_y), m_key(p_key), m_roi(NULL)
{ {
} }
inline MxU8 GetModifier() { return m_modifier; }
inline MxU8 GetKey() const { return m_key; } inline MxU8 GetKey() const { return m_key; }
inline MxS32 GetX() const { return m_x; } inline MxS32 GetX() const { return m_x; }
inline MxS32 GetY() const { return m_y; } inline MxS32 GetY() const { return m_y; }
inline void SetROI(LegoROI* p_roi) { m_roi = p_roi; }
protected: protected:
MxU8 m_modifier; // 0x0c MxU8 m_modifier; // 0x0c
MxS32 m_x; // 0x10 MxS32 m_x; // 0x10
MxS32 m_y; // 0x14 MxS32 m_y; // 0x14
MxU8 m_key; // 0x18 MxU8 m_key; // 0x18
MxU32 m_unk0x1c; // 0x1c LegoROI* m_roi; // 0x1c
}; };
// SYNTHETIC: LEGO1 0x10028770 // SYNTHETIC: LEGO1 0x10028770

View File

@ -17,6 +17,10 @@ class LegoFlcTexturePresenter : public MxFlcPresenter {
return "LegoFlcTexturePresenter"; return "LegoFlcTexturePresenter";
} }
virtual void StartingTickle() override; // vtable+0x1c
virtual void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
virtual void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x1005df00 // SYNTHETIC: LEGO1 0x1005df00
// LegoFlcTexturePresenter::`scalar deleting destructor' // LegoFlcTexturePresenter::`scalar deleting destructor'

View File

@ -2,10 +2,11 @@
#define LEGOGAMESTATE_H #define LEGOGAMESTATE_H
#include "decomp.h" #include "decomp.h"
#include "lego/sources/misc/legostorage.h"
#include "legobackgroundcolor.h" #include "legobackgroundcolor.h"
#include "legofullscreenmovie.h" #include "legofullscreenmovie.h"
#include "legostream.h"
#include "mxtypes.h" #include "mxtypes.h"
#include "mxvariabletable.h"
class LegoState; class LegoState;
class MxVariable; class MxVariable;
@ -19,13 +20,13 @@ struct ColorStringStruct {
// SIZE 0x430 // SIZE 0x430
class LegoGameState { class LegoGameState {
public: public:
__declspec(dllexport) LegoGameState(); LegoGameState();
__declspec(dllexport) ~LegoGameState(); ~LegoGameState();
__declspec(dllexport) MxResult Load(MxULong); MxResult Load(MxULong);
__declspec(dllexport) MxResult Save(MxULong); MxResult Save(MxULong);
__declspec(dllexport) void SerializePlayersInfo(MxS16); void SerializePlayersInfo(MxS16);
__declspec(dllexport) void SerializeScoreHistory(MxS16 p_flags); void SerializeScoreHistory(MxS16 p_flags);
__declspec(dllexport) void SetSavePath(char*); void SetSavePath(char*);
LegoState* GetState(const char* p_stateName); LegoState* GetState(const char* p_stateName);
LegoState* CreateState(const char* p_stateName); LegoState* CreateState(const char* p_stateName);
@ -47,7 +48,7 @@ class LegoGameState {
struct ScoreStruct { struct ScoreStruct {
void WriteScoreHistory(); void WriteScoreHistory();
void FUN_1003ccf0(LegoFileStream&); void FUN_1003ccf0(LegoFile&);
MxU16 m_unk0x00; MxU16 m_unk0x00;
undefined m_unk0x02[0x2c][20]; undefined m_unk0x02[0x2c][20];
@ -55,7 +56,9 @@ class LegoGameState {
private: private:
void RegisterState(LegoState* p_state); void RegisterState(LegoState* p_state);
MxResult WriteEndOfVariables(LegoStream* p_stream); MxResult WriteVariable(LegoStorage* p_stream, MxVariableTable* p_from, const char* p_variableName);
MxResult WriteEndOfVariables(LegoStorage* p_stream);
MxS32 ReadVariable(LegoStorage* p_stream, MxVariableTable* p_to);
void SetROIHandlerFunction(); void SetROIHandlerFunction();
char* m_savePath; // 0x0 char* m_savePath; // 0x0

View File

@ -24,7 +24,12 @@ class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name);
} }
virtual void Destroy() override; // vtable+0x38 virtual void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x18
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
virtual void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c
private: private:
void Init(); void Init();

View File

@ -25,6 +25,42 @@ class LegoControlManager;
// SIZE 0x18 // SIZE 0x18
class LegoEventQueue : public MxQueue<LegoEventNotificationParam> {}; class LegoEventQueue : public MxQueue<LegoEventNotificationParam> {};
// VTABLE: LEGO1 0x100d6a20
// class MxCollection<MxCore*>
// VTABLE: LEGO1 0x100d6a38
// class MxList<MxCore*>
// VTABLE: LEGO1 0x100d6a50
// class MxPtrList<MxCore>
// VTABLE: LEGO1 0x100d6a68
// SIZE 0x18
class LegoNotifyList : public MxPtrList<MxCore> {
protected:
// FUNCTION: LEGO1 0x10028830
virtual MxS8 Compare(MxCore* p_element1, MxCore* p_element2) override
{
return p_element1 == p_element2 ? 0 : p_element1 < p_element2 ? -1 : 1;
} // vtable+0x14
public:
LegoNotifyList(MxBool p_ownership = FALSE) : MxPtrList<MxCore>(p_ownership) {}
};
// VTABLE: LEGO1 0x100d6ac0
// class MxListCursor<MxCore *>
// VTABLE: LEGO1 0x100d6ad8
// class MxPtrListCursor<MxCore>
// VTABLE: LEGO1 0x100d6aa8
// SIZE 0x10
class LegoNotifyListCursor : public MxPtrListCursor<MxCore> {
public:
LegoNotifyListCursor(LegoNotifyList* p_list) : MxPtrListCursor<MxCore>(p_list) {}
};
// VTABLE: LEGO1 0x100d8760 // VTABLE: LEGO1 0x100d8760
// SIZE 0x338 // SIZE 0x338
class LegoInputManager : public MxPresenter { class LegoInputManager : public MxPresenter {
@ -32,20 +68,23 @@ class LegoInputManager : public MxPresenter {
LegoInputManager(); LegoInputManager();
virtual ~LegoInputManager() override; virtual ~LegoInputManager() override;
__declspec(dllexport) void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MxU8 p_key); void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MxU8 p_key);
__declspec(dllexport) void Register(MxCore*); void Register(MxCore*);
__declspec(dllexport) void UnRegister(MxCore*); void UnRegister(MxCore*);
virtual MxResult Tickle() override; // vtable+0x8 virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x1005b8c0
virtual MxResult PutData() override { return SUCCESS; }; // vtable+0x4c
MxResult Create(HWND p_hwnd); MxResult Create(HWND p_hwnd);
void Destroy(); void Destroy();
void CreateAndAcquireKeyboard(HWND p_hwnd); void CreateAndAcquireKeyboard(HWND p_hwnd);
void ReleaseDX(); void ReleaseDX();
MxResult GetJoystickId(); MxResult GetJoystickId();
MxResult GetJoystickState(MxU32* p_joystickX, MxU32* p_joystickY, DWORD* p_buttonsState, MxU32* p_povPosition); MxResult GetJoystickState(MxU32* p_joystickX, MxU32* p_joystickY, DWORD* p_buttonsState, MxU32* p_povPosition);
void SetTimer(); void StartAutoDragTimer();
void KillTimer(); void StopAutoDragTimer();
void EnableInputProcessing(); void EnableInputProcessing();
void SetCamera(LegoCameraController* p_camera); void SetCamera(LegoCameraController* p_camera);
void ClearCamera(); void ClearCamera();
@ -70,40 +109,86 @@ class LegoInputManager : public MxPresenter {
void ProcessEvents(); void ProcessEvents();
MxBool ProcessOneEvent(LegoEventNotificationParam& p_param); MxBool ProcessOneEvent(LegoEventNotificationParam& p_param);
MxBool FUN_1005cdf0(LegoEventNotificationParam& p_param);
// SYNTHETIC: LEGO1 0x1005b8d0 // SYNTHETIC: LEGO1 0x1005b8d0
// LegoInputManager::`scalar deleting destructor' // LegoInputManager::`scalar deleting destructor'
private: private:
MxCriticalSection m_criticalSection; MxCriticalSection m_criticalSection; // 0x58
MxList<undefined4>* m_unk0x5c; // list or hash table LegoNotifyList* m_keyboardNotifyList; // 0x5c
LegoCameraController* m_camera; LegoCameraController* m_camera; // 0x60
LegoWorld* m_world; LegoWorld* m_world; // 0x64
LegoEventQueue* m_eventQueue; // +0x68 LegoEventQueue* m_eventQueue; // 0x68
undefined4 m_unk0x6c; undefined4 m_unk0x6c; // 0x6c
undefined4 m_unk0x70; undefined4 m_unk0x70; // 0x70
undefined4 m_unk0x74; undefined4 m_unk0x74; // 0x74
UINT m_timer; UINT m_autoDragTimerID; // 0x78
UINT m_timeout; UINT m_autoDragTime; // 0x7c
undefined m_unk0x80; undefined m_unk0x80; // 0x80
undefined m_unk0x81; undefined m_unk0x81; // 0x81
LegoControlManager* m_controlManager; LegoControlManager* m_controlManager; // 0x84
MxBool m_unk0x88; MxBool m_unk0x88; // 0x88
IDirectInput* m_directInput; IDirectInput* m_directInput; // 0x8c
IDirectInputDevice* m_directInputDevice; IDirectInputDevice* m_directInputDevice; // 0x90
undefined m_unk0x94; undefined m_unk0x94; // 0x94
undefined4 m_unk0x98; undefined4 m_unk0x98; // 0x98
undefined m_unk0x9c[0xF8]; undefined m_unk0x9c[0xf8]; // 0x9c
undefined m_unk0x194; undefined m_unk0x194; // 0x194
MxBool m_unk0x195; MxBool m_unk0x195; // 0x195
MxS32 m_joyid; MxS32 m_joyid; // 0x198
MxS32 m_joystickIndex; MxS32 m_joystickIndex; // 0x19c
JOYCAPS m_joyCaps; JOYCAPS m_joyCaps; // 0x200
MxBool m_useJoystick; MxBool m_useJoystick; // 0x334
MxBool m_unk0x335; MxBool m_unk0x335; // 0x335
MxBool m_unk0x336; MxBool m_unk0x336; // 0x336
}; };
// TEMPLATE: LEGO1 0x10028850
// MxCollection<MxCore *>::Compare
// TEMPLATE: LEGO1 0x10028860
// MxCollection<MxCore *>::~MxCollection<MxCore *>
// TEMPLATE: LEGO1 0x100288b0
// MxCollection<MxCore *>::Destroy
// TEMPLATE: LEGO1 0x100288c0
// MxList<MxCore *>::~MxList<MxCore *>
// SYNTHETIC: LEGO1 0x10028950
// LegoNotifyList::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x100289c0
// MxPtrList<MxCore>::~MxPtrList<MxCore>
// SYNTHETIC: LEGO1 0x10028a10
// MxCollection<MxCore *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10028a80
// MxList<MxCore *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10028b30
// MxPtrList<MxCore>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10028fd0
// LegoNotifyListCursor::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x10029040
// MxPtrListCursor<MxCore>::~MxPtrListCursor<MxCore>
// SYNTHETIC: LEGO1 0x10029090
// MxListCursor<MxCore *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10029100
// MxPtrListCursor<MxCore>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x10029170
// MxListCursor<MxCore *>::~MxListCursor<MxCore *>
// TEMPLATE: LEGO1 0x100291c0
// LegoNotifyListCursor::~LegoNotifyListCursor
// TEMPLATE: LEGO1 0x1005bb80 // TEMPLATE: LEGO1 0x1005bb80
// MxCollection<LegoEventNotificationParam>::Compare // MxCollection<LegoEventNotificationParam>::Compare

View File

@ -6,6 +6,8 @@
// VTABLE: LEGO1 0x100d5a40 // VTABLE: LEGO1 0x100d5a40
class LegoJetski : public LegoJetskiRaceActor { class LegoJetski : public LegoJetskiRaceActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10013e80 // FUNCTION: LEGO1 0x10013e80
inline const char* ClassName() const override // vtable+0xc inline const char* ClassName() const override // vtable+0xc
{ {
@ -19,6 +21,14 @@ class LegoJetski : public LegoJetskiRaceActor {
return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name); return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10013e20 // SYNTHETIC: LEGO1 0x10013e20
// LegoJetski::`scalar deleting destructor' // LegoJetski::`scalar deleting destructor'
}; };

View File

@ -19,6 +19,11 @@ class LegoJetskiRaceActor : public LegoCarRaceActor {
return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name); return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
} }
virtual void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10081d40 // SYNTHETIC: LEGO1 0x10081d40
// LegoJetskiRaceActor::`scalar deleting destructor' // LegoJetskiRaceActor::`scalar deleting destructor'
}; };

View File

@ -4,6 +4,8 @@
#include "decomp.h" #include "decomp.h"
#include "mxwavepresenter.h" #include "mxwavepresenter.h"
class LegoCacheSound;
// VTABLE: LEGO1 0x100d5fa8 // VTABLE: LEGO1 0x100d5fa8
// SIZE 0x90 // SIZE 0x90
class LegoLoadCacheSoundPresenter : public MxWavePresenter { class LegoLoadCacheSoundPresenter : public MxWavePresenter {
@ -18,16 +20,21 @@ class LegoLoadCacheSoundPresenter : public MxWavePresenter {
return "LegoLoadCacheSoundPresenter"; return "LegoLoadCacheSoundPresenter";
} }
virtual void ReadyTickle() override; // vtable+0x18
virtual void StreamingTickle() override; // vtable+0x20
virtual void DoneTickle() override; // vtable+0x2c
virtual MxResult PutData() override; // vtable+0x4c
private: private:
void Init(); void Init();
void Destroy(MxBool p_fromDestructor); void Destroy(MxBool p_fromDestructor);
undefined4* m_unk0x6c; // 0x6c LegoCacheSound* m_cacheSound; // 0x6c
undefined4* m_unk0x70; // 0x70 undefined* m_unk0x70; // 0x70
undefined4 m_unk0x74; // 0x74 undefined* m_unk0x74; // 0x74
undefined4 m_unk0x78; // 0x78 undefined4 m_unk0x78; // 0x78
undefined m_unk0x7c; // 0x7c undefined m_unk0x7c; // 0x7c
undefined4 m_unk0x80[4]; // 0x80 PCMWAVEFORMAT m_pcmWaveFormat; // 0x7d
}; };
// SYNTHETIC: LEGO1 0x10018460 // SYNTHETIC: LEGO1 0x10018460

View File

@ -4,9 +4,11 @@
#include "legoloopinganimpresenter.h" #include "legoloopinganimpresenter.h"
// VTABLE: LEGO1 0x100d9170 // VTABLE: LEGO1 0x100d9170
// SIZE 0xd8
class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter { class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
public: public:
LegoLocomotionAnimPresenter(); LegoLocomotionAnimPresenter();
virtual ~LegoLocomotionAnimPresenter() override;
// FUNCTION: LEGO1 0x1006ce50 // FUNCTION: LEGO1 0x1006ce50
inline const char* ClassName() const override // vtable+0xc inline const char* ClassName() const override // vtable+0xc
@ -21,11 +23,36 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
return !strcmp(p_name, ClassName()) || LegoLoopingAnimPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || LegoLoopingAnimPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
virtual void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c
virtual MxResult VTable0x88(MxStreamChunk* p_chunk) override; // vtable+0x88
// SYNTHETIC: LEGO1 0x1006cfe0 // SYNTHETIC: LEGO1 0x1006cfe0
// LegoLocomotionAnimPresenter::`scalar deleting destructor' // LegoLocomotionAnimPresenter::`scalar deleting destructor'
inline void DecrementUnknown0xd4()
{
if (m_unk0xd4)
--m_unk0xd4;
}
inline undefined2 GetUnknown0xd4() { return m_unk0xd4; }
private: private:
void Init(); void Init();
void Destroy(MxBool p_fromDestructor);
undefined4 m_unk0xc0; // 0xc0
undefined4* m_unk0xc4; // 0xc4
MxCore* m_unk0xc8; // 0xc8
MxS32 m_unk0xcc; // 0xcc
MxS32 m_unk0xd0; // 0xd0
undefined2 m_unk0xd4; // 0xd4
}; };
#endif // LEGOLOCOMOTIONANIMPRESENTER_H #endif // LEGOLOCOMOTIONANIMPRESENTER_H

View File

@ -19,6 +19,9 @@ class LegoLoopingAnimPresenter : public LegoAnimPresenter {
{ {
return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name);
} }
virtual void StreamingTickle() override; // vtable+0x20
virtual void PutFrame() override; // vtable+0x6c
}; };
// SYNTHETIC: LEGO1 0x1006d000 // SYNTHETIC: LEGO1 0x1006d000

View File

@ -3,11 +3,13 @@
#include "mxvideopresenter.h" #include "mxvideopresenter.h"
class AutoROI;
// VTABLE: LEGO1 0x100d4e50 // VTABLE: LEGO1 0x100d4e50
// SIZE 0x6c (discovered through inline constructor at 0x10009ae6) // SIZE 0x6c (discovered through inline constructor at 0x10009ae6)
class LegoModelPresenter : public MxVideoPresenter { class LegoModelPresenter : public MxVideoPresenter {
public: public:
__declspec(dllexport) static void configureLegoModelPresenter(MxS32 p_modelPresenterConfig); static void configureLegoModelPresenter(MxS32 p_modelPresenterConfig);
// FUNCTION: LEGO1 0x1000ccb0 // FUNCTION: LEGO1 0x1000ccb0
inline const char* ClassName() const override // vtable+0xc inline const char* ClassName() const override // vtable+0xc
@ -33,7 +35,7 @@ class LegoModelPresenter : public MxVideoPresenter {
void Destroy(MxBool p_fromDestructor); void Destroy(MxBool p_fromDestructor);
private: private:
undefined4 m_unk0x64; // 0x64 AutoROI* m_unk0x64; // 0x64
MxBool m_addedToView; // 0x68 MxBool m_addedToView; // 0x68
}; };

View File

@ -9,7 +9,7 @@
// SIZE 0x70 // SIZE 0x70
class LegoNavController : public MxCore { class LegoNavController : public MxCore {
public: public:
__declspec(dllexport) static void GetDefaults( static void GetDefaults(
int* p_mouseDeadzone, int* p_mouseDeadzone,
float* p_movementMaxSpeed, float* p_movementMaxSpeed,
float* p_turnMaxSpeed, float* p_turnMaxSpeed,
@ -22,7 +22,7 @@ class LegoNavController : public MxCore {
float* p_rotationSensitivity, float* p_rotationSensitivity,
MxBool* p_turnUseVelocity MxBool* p_turnUseVelocity
); );
__declspec(dllexport) static void SetDefaults( static void SetDefaults(
int p_mouseDeadzone, int p_mouseDeadzone,
float p_movementMaxSpeed, float p_movementMaxSpeed,
float p_turnMaxSpeed, float p_turnMaxSpeed,
@ -37,7 +37,8 @@ class LegoNavController : public MxCore {
); );
LegoNavController(); LegoNavController();
virtual ~LegoNavController() override; // vtable+0x0 virtual ~LegoNavController() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10054b80 // FUNCTION: LEGO1 0x10054b80
inline const char* ClassName() const override // vtable+0xc inline const char* ClassName() const override // vtable+0xc

View File

@ -68,11 +68,11 @@ class LegoOmni : public MxOmni {
c_clearScreen = 0x04 c_clearScreen = 0x04
}; };
__declspec(dllexport) void CreateBackgroundAudio(); void CreateBackgroundAudio();
__declspec(dllexport) void RemoveWorld(const MxAtomId&, MxLong); void RemoveWorld(const MxAtomId&, MxLong);
__declspec(dllexport) static int GetCurrPathInfo(LegoPathBoundary**, MxS32&); static int GetCurrPathInfo(LegoPathBoundary**, MxS32&);
__declspec(dllexport) static void CreateInstance(); static void CreateInstance();
__declspec(dllexport) static LegoOmni* GetInstance(); static LegoOmni* GetInstance();
LegoOmni(); LegoOmni();
virtual ~LegoOmni(); // vtable+00 virtual ~LegoOmni(); // vtable+00
@ -92,18 +92,18 @@ class LegoOmni : public MxOmni {
return !strcmp(p_name, LegoOmni::ClassName()) || MxOmni::IsA(p_name); return !strcmp(p_name, LegoOmni::ClassName()) || MxOmni::IsA(p_name);
} }
virtual void Init() override; // vtable+14 virtual void Init() override; // vtable+14
virtual MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18 virtual MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18
virtual void Destroy() override; // vtable+1c virtual void Destroy() override; // vtable+1c
virtual MxResult Start(MxDSAction* p_dsAction) override; // vtable+20 virtual MxResult Start(MxDSAction* p_dsAction) override; // vtable+20
virtual void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24 virtual void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24
virtual MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28 virtual MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28
virtual MxEntity* FindWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30 virtual MxEntity* AddToWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30
virtual void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34 virtual void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34
virtual void StartTimer() override; // vtable+38 virtual void StartTimer() override; // vtable+38
virtual void StopTimer() override; // vtable+3c virtual void StopTimer() override; // vtable+3c
LegoEntity* FindByEntityIdOrAtomId(const MxAtomId& p_atom, MxS32 p_entityid); LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
void AddWorld(LegoWorld* p_world); void AddWorld(LegoWorld* p_world);
void DeleteEntity(LegoEntity* p_entity); void DeleteEntity(LegoEntity* p_entity);
void FUN_1005b4f0(MxBool p_disable, MxU16 p_flags); void FUN_1005b4f0(MxBool p_disable, MxU16 p_flags);
@ -112,7 +112,7 @@ class LegoOmni : public MxOmni {
LegoSoundManager* GetSoundManager() { return (LegoSoundManager*) m_soundManager; } LegoSoundManager* GetSoundManager() { return (LegoSoundManager*) m_soundManager; }
LegoInputManager* GetInputManager() { return m_inputMgr; } LegoInputManager* GetInputManager() { return m_inputMgr; }
GifManager* GetGifManager() { return m_gifManager; } GifManager* GetGifManager() { return m_gifManager; }
LegoWorld* GetCurrentOmniWorld() { return m_currentWorld; } LegoWorld* GetCurrentWorld() { return m_currentWorld; }
LegoNavController* GetNavController() { return m_navController; } LegoNavController* GetNavController() { return m_navController; }
IslePathActor* GetCurrentVehicle() { return m_currentVehicle; } IslePathActor* GetCurrentVehicle() { return m_currentVehicle; }
LegoPlantManager* GetLegoPlantManager() { return m_plantManager; } LegoPlantManager* GetLegoPlantManager() { return m_plantManager; }
@ -154,16 +154,16 @@ class LegoOmni : public MxOmni {
MxBool m_unk0x13c; // 0x13c MxBool m_unk0x13c; // 0x13c
}; };
__declspec(dllexport) MxBackgroundAudioManager* BackgroundAudioManager(); MxBackgroundAudioManager* BackgroundAudioManager();
__declspec(dllexport) LegoGameState* GameState(); LegoGameState* GameState();
__declspec(dllexport) const char* GetNoCD_SourceName(); const char* GetNoCD_SourceName();
__declspec(dllexport) LegoInputManager* InputManager(); LegoInputManager* InputManager();
__declspec(dllexport) LegoOmni* Lego(); LegoOmni* Lego();
__declspec(dllexport) LegoEntity* PickEntity(MxLong, MxLong); LegoEntity* PickEntity(MxLong, MxLong);
__declspec(dllexport) LegoROI* PickROI(MxLong, MxLong); LegoROI* PickROI(MxLong, MxLong);
__declspec(dllexport) LegoSoundManager* SoundManager(); LegoSoundManager* SoundManager();
__declspec(dllexport) MxTransitionManager* TransitionManager(); MxTransitionManager* TransitionManager();
__declspec(dllexport) LegoVideoManager* VideoManager(); LegoVideoManager* VideoManager();
LegoAnimationManager* AnimationManager(); LegoAnimationManager* AnimationManager();
LegoBuildingManager* BuildingManager(); LegoBuildingManager* BuildingManager();
@ -175,7 +175,7 @@ LegoUnkSaveDataWriter* GetUnkSaveDataWriter();
GifManager* GetGifManager(); GifManager* GetGifManager();
void FUN_10015820(MxBool p_disable, MxU16 p_flags); void FUN_10015820(MxBool p_disable, MxU16 p_flags);
void FUN_10015860(const char*, MxU8); void FUN_10015860(const char*, MxU8);
LegoEntity* FindEntityByAtomIdOrEntityId(const MxAtomId& p_atom, MxS32 p_entityid); LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
MxDSAction& GetCurrentAction(); MxDSAction& GetCurrentAction();
void PlayMusic(MxU32 p_index); void PlayMusic(MxU32 p_index);

View File

@ -20,7 +20,11 @@ class LegoPartPresenter : public MxMediaPresenter {
return !strcmp(p_name, LegoPartPresenter::ClassName()) || MxMediaPresenter::IsA(p_name); return !strcmp(p_name, LegoPartPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
} }
__declspec(dllexport) static void configureLegoPartPresenter(MxS32, MxS32); virtual void ReadyTickle() override; // vtable+0x18
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
static void configureLegoPartPresenter(MxS32, MxS32);
// SYNTHETIC: LEGO1 0x1000d060 // SYNTHETIC: LEGO1 0x1000d060
// LegoPartPresenter::`scalar deleting destructor' // LegoPartPresenter::`scalar deleting destructor'

View File

@ -25,6 +25,7 @@ class LegoPathActor : public LegoActor {
return !strcmp(p_name, LegoPathActor::ClassName()) || LegoActor::IsA(p_name); return !strcmp(p_name, LegoPathActor::ClassName()) || LegoActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20
virtual void VTable0x68(); // vtable+0x68 virtual void VTable0x68(); // vtable+0x68
virtual void VTable0x6c(); // vtable+0x6c virtual void VTable0x6c(); // vtable+0x6c
virtual void VTable0x70(float p_float); // vtable+0x70 virtual void VTable0x70(float p_float); // vtable+0x70

View File

@ -48,6 +48,9 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
// TEMPLATE: LEGO1 0x1001d3c0 // TEMPLATE: LEGO1 0x1001d3c0
// MxPtrList<LegoPathController>::Destroy // MxPtrList<LegoPathController>::Destroy
// TEMPLATE: LEGO1 0x1001d440
// MxPtrList<LegoPathController>::~MxPtrList<LegoPathController>
// SYNTHETIC: LEGO1 0x1001d490 // SYNTHETIC: LEGO1 0x1001d490
// MxCollection<LegoPathController *>::`scalar deleting destructor' // MxCollection<LegoPathController *>::`scalar deleting destructor'
@ -57,4 +60,7 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
// SYNTHETIC: LEGO1 0x1001d5b0 // SYNTHETIC: LEGO1 0x1001d5b0
// MxPtrList<LegoPathController>::`scalar deleting destructor' // MxPtrList<LegoPathController>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001d620
// LegoPathControllerList::~LegoPathControllerList
#endif // LEGOPATHCONTROLLERLIST_H #endif // LEGOPATHCONTROLLERLIST_H

View File

@ -20,6 +20,11 @@ class LegoPhonemePresenter : public MxFlcPresenter {
return "LegoPhonemePresenter"; return "LegoPhonemePresenter";
} }
virtual void StartingTickle() override; // vtable+0x1c
virtual void EndAction() override; // vtable+0x40
virtual void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
virtual void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x1004e320 // SYNTHETIC: LEGO1 0x1004e320
// LegoPhonemePresenter::`scalar deleting destructor' // LegoPhonemePresenter::`scalar deleting destructor'

View File

@ -21,6 +21,7 @@ class LegoPlantManager : public MxCore {
} }
void FUN_10026360(undefined4 p_world); void FUN_10026360(undefined4 p_world);
void FUN_100263a0(undefined4 p_und);
// SYNTHETIC: LEGO1 0x100262a0 // SYNTHETIC: LEGO1 0x100262a0
// LegoPlantManager::`scalar deleting destructor' // LegoPlantManager::`scalar deleting destructor'

View File

@ -2,6 +2,7 @@
#define LEGORACEACTOR_H #define LEGORACEACTOR_H
#include "legoanimactor.h" #include "legoanimactor.h"
#include "realtime/matrix.h"
// VTABLE: LEGO1 0x100d5b88 // VTABLE: LEGO1 0x100d5b88
class LegoRaceActor : public LegoAnimActor { class LegoRaceActor : public LegoAnimActor {
@ -19,6 +20,14 @@ class LegoRaceActor : public LegoAnimActor {
return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name); return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x68() override; // vtable+0x68
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x10014ab0 // SYNTHETIC: LEGO1 0x10014ab0
// LegoRaceActor::`scalar deleting destructor' // LegoRaceActor::`scalar deleting destructor'
}; };

View File

@ -8,6 +8,8 @@
// SIZE 0x200 // SIZE 0x200
class LegoRaceCar : public LegoCarRaceActor { class LegoRaceCar : public LegoCarRaceActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10014290 // FUNCTION: LEGO1 0x10014290
inline const char* ClassName() const override // vtable+0xc inline const char* ClassName() const override // vtable+0xc
{ {
@ -21,6 +23,14 @@ class LegoRaceCar : public LegoCarRaceActor {
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name); return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10014230 // SYNTHETIC: LEGO1 0x10014230
// LegoRaceCar::`scalar deleting destructor' // LegoRaceCar::`scalar deleting destructor'
}; };

View File

@ -1,6 +1,7 @@
#ifndef LEGOSOUNDMANAGER_H #ifndef LEGOSOUNDMANAGER_H
#define LEGOSOUNDMANAGER_H #define LEGOSOUNDMANAGER_H
#include "legounknown100d6b4c.h"
#include "mxsoundmanager.h" #include "mxsoundmanager.h"
// VTABLE: LEGO1 0x100d6b10 // VTABLE: LEGO1 0x100d6b10
@ -17,12 +18,14 @@ class LegoSoundManager : public MxSoundManager {
// SYNTHETIC: LEGO1 0x10029920 // SYNTHETIC: LEGO1 0x10029920
// LegoSoundManager::`scalar deleting destructor' // LegoSoundManager::`scalar deleting destructor'
inline LegoUnknown100d6b4c* GetUnknown0x40() { return m_unk0x40; }
private: private:
void Init(); void Init();
void Destroy(MxBool p_fromDestructor); void Destroy(MxBool p_fromDestructor);
undefined4 m_unk0x3c; undefined4 m_unk0x3c; // 0x3c
undefined4 m_unk0x40; LegoUnknown100d6b4c* m_unk0x40; // 0x40
}; };
#endif // LEGOSOUNDMANAGER_H #endif // LEGOSOUNDMANAGER_H

View File

@ -2,7 +2,7 @@
#define LEGOSTATE_H #define LEGOSTATE_H
#include "decomp.h" #include "decomp.h"
#include "legostream.h" #include "lego/sources/misc/legostorage.h"
#include "mxcore.h" #include "mxcore.h"
#include "mxstring.h" #include "mxstring.h"
@ -24,9 +24,9 @@ class LegoState : public MxCore {
return !strcmp(p_name, LegoState::ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, LegoState::ClassName()) || MxCore::IsA(p_name);
} }
virtual MxBool VTable0x14(); // vtable+0x14 virtual MxBool VTable0x14(); // vtable+0x14
virtual MxBool SetFlag(); // vtable+0x18 virtual MxBool SetFlag(); // vtable+0x18
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream); // vtable+0x1C virtual MxResult VTable0x1c(LegoFile* p_legoFile); // vtable+0x1C
// SYNTHETIC: LEGO1 0x10006160 // SYNTHETIC: LEGO1 0x10006160
// LegoState::`scalar deleting destructor' // LegoState::`scalar deleting destructor'

View File

@ -1,91 +0,0 @@
#ifndef LEGOSTREAM_H
#define LEGOSTREAM_H
#include "compat.h"
#include "decomp.h"
#include "mxstring.h"
#include "mxtypes.h"
#pragma warning(disable : 4237)
#include <iosfwd>
#define LEGOSTREAM_MODE_READ 1
#define LEGOSTREAM_MODE_WRITE 2
class MxVariableTable;
// VTABLE: LEGO1 0x100d7d80
class LegoStream {
public:
LegoStream() : m_mode(0) {}
// FUNCTION: LEGO1 0x10045ad0
inline virtual ~LegoStream() {}
virtual MxResult Read(void* p_buffer, MxU32 p_size) = 0;
virtual MxResult Write(const void* p_buffer, MxU32 p_size) = 0;
virtual MxResult Tell(MxU32* p_offset) = 0;
virtual MxResult Seek(MxU32 p_offset) = 0;
virtual MxBool IsWriteMode();
virtual MxBool IsReadMode();
enum OpenFlags {
c_readBit = 1,
c_writeBit = 2,
c_binaryBit = 4,
};
static MxResult __stdcall WriteVariable(LegoStream* p_stream, MxVariableTable* p_from, const char* p_variableName);
static MxS32 __stdcall ReadVariable(LegoStream* p_stream, MxVariableTable* p_to);
protected:
MxU8 m_mode;
};
// SYNTHETIC: LEGO1 0x10045b00
// LegoStream::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db730
class LegoFileStream : public LegoStream {
public:
LegoFileStream();
virtual ~LegoFileStream() override;
MxResult Read(void* p_buffer, MxU32 p_size) override;
MxResult Write(const void* p_buffer, MxU32 p_size) override;
MxResult Tell(MxU32* p_offset) override;
MxResult Seek(MxU32 p_offset) override;
MxResult Open(const char* p_filename, OpenFlags p_mode);
LegoFileStream* FUN_10006030(MxString p_str);
private:
FILE* m_hFile;
};
// SYNTHETIC: LEGO1 0x10099230
// LegoFileStream::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db710
class LegoMemoryStream : public LegoStream {
public:
LegoMemoryStream(char* p_buffer);
MxResult Read(void* p_buffer, MxU32 p_size) override;
MxResult Write(const void* p_buffer, MxU32 p_size) override;
MxResult Tell(MxU32* p_offset) override;
MxResult Seek(MxU32 p_offset) override;
private:
char* m_buffer;
MxU32 m_offset;
};
// SYNTHETIC: LEGO1 0x10045a80
// LegoMemoryStream::~LegoMemoryStream
// SYNTHETIC: LEGO1 0x100990f0
// LegoMemoryStream::`scalar deleting destructor'
#endif // LEGOSTREAM_H

View File

@ -0,0 +1,15 @@
#ifndef LEGOUNKNOWN100D6B4C_H
#define LEGOUNKNOWN100D6B4C_H
#include "decomp.h"
class LegoCacheSound;
// VTABLE: LEGO1 0x100d6b4c
// SIZE 0x20
class LegoUnknown100d6b4c {
public:
void FUN_1003dc40(LegoCacheSound** p_und);
};
#endif // LEGOUNKNOWN100D6B4C_H

View File

@ -2,10 +2,11 @@
#define LEGOUNKSAVEDATAWRITER_H #define LEGOUNKSAVEDATAWRITER_H
#include "decomp.h" #include "decomp.h"
#include "lego/sources/misc/legostorage.h"
#include "mxtypes.h" #include "mxtypes.h"
class AutoROI;
class LegoROI; class LegoROI;
class LegoStream;
struct LegoSaveDataEntry3 { struct LegoSaveDataEntry3 {
char* m_name; char* m_name;
@ -34,7 +35,8 @@ struct LegoSaveDataEntry3 {
class LegoUnkSaveDataWriter { class LegoUnkSaveDataWriter {
public: public:
MxResult WriteSaveData3(LegoStream* p_stream); MxResult WriteSaveData3(LegoStorage* p_stream);
AutoROI* FUN_10083500(undefined4, undefined4);
void FUN_10083db0(LegoROI* p_roi); void FUN_10083db0(LegoROI* p_roi);
}; };

View File

@ -9,7 +9,9 @@
class MxAtomId; class MxAtomId;
class LegoEntity; class LegoEntity;
class LegoAnimPresenter;
void FUN_1003e050(LegoAnimPresenter* p_presenter);
Extra::ActionType MatchActionString(const char*); Extra::ActionType MatchActionString(const char*);
void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, int p_targetEntityId, LegoEntity* p_sender); void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, int p_targetEntityId, LegoEntity* p_sender);
void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut); void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut);

View File

@ -23,6 +23,8 @@ class LegoVehicleBuildState : public LegoState {
return !strcmp(p_name, this->m_className.GetData()) || LegoState::IsA(p_name); return !strcmp(p_name, this->m_className.GetData()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x100260a0 // SYNTHETIC: LEGO1 0x100260a0
// LegoVehicleBuildState::`scalar deleting destructor' // LegoVehicleBuildState::`scalar deleting destructor'

View File

@ -19,11 +19,11 @@ class LegoVideoManager : public MxVideoManager {
LegoVideoManager(); LegoVideoManager();
virtual ~LegoVideoManager() override; virtual ~LegoVideoManager() override;
__declspec(dllexport) int EnableRMDevice(); int EnableRMDevice();
__declspec(dllexport) int DisableRMDevice(); int DisableRMDevice();
void EnableFullScreenMovie(MxBool p_enable); void EnableFullScreenMovie(MxBool p_enable);
__declspec(dllexport) void EnableFullScreenMovie(MxBool p_enable, MxBool p_scale); void EnableFullScreenMovie(MxBool p_enable, MxBool p_scale);
__declspec(dllexport) void MoveCursor(MxS32 p_cursorX, MxS32 p_cursorY); void MoveCursor(MxS32 p_cursorX, MxS32 p_cursorY);
virtual MxResult Tickle() override; // vtable+0x8 virtual MxResult Tickle() override; // vtable+0x8
virtual void Destroy() override; // vtable+0x18 virtual void Destroy() override; // vtable+0x18
@ -31,8 +31,9 @@ class LegoVideoManager : public MxVideoManager {
override; // vtable+0x2c override; // vtable+0x2c
virtual MxResult RealizePalette(MxPalette*) override; // vtable+0x30 virtual MxResult RealizePalette(MxPalette*) override; // vtable+0x30
virtual void UpdateView(MxU32 p_x, MxU32 p_y, MxU32 p_width, MxU32 p_height) override; // vtable+0x34 virtual void UpdateView(MxU32 p_x, MxU32 p_y, MxU32 p_width, MxU32 p_height) override; // vtable+0x34
virtual void VTable0x38(undefined4, undefined4); // vtable+0x38 virtual MxPresenter* GetPresenterAt(MxS32 p_x, MxS32 p_y); // vtable+0x38
// FUNCTION: LGEO1 0x1007ab10
// FUNCTION: LEGO1 0x1007ab10
virtual LegoUnknown100d9d00* VTable0x3c() { return m_unk0x100d9d00; } // vtable+0x3c virtual LegoUnknown100d9d00* VTable0x3c() { return m_unk0x100d9d00; } // vtable+0x3c
void SetSkyColor(float p_red, float p_green, float p_blue); void SetSkyColor(float p_red, float p_green, float p_blue);
@ -72,8 +73,8 @@ class LegoVideoManager : public MxVideoManager {
MxS32 m_cursorYCopy; // 0x508 MxS32 m_cursorYCopy; // 0x508
MxS32 m_cursorX; // 0x50c MxS32 m_cursorX; // 0x50c
MxS32 m_cursorY; // 0x510 MxS32 m_cursorY; // 0x510
LPDIRECTDRAWSURFACE m_unk0x514; // 0x514 LPDIRECTDRAWSURFACE m_cursorSurface; // 0x514
RECT m_unk0x518; // 0x518 RECT m_cursorRect; // 0x518
undefined4 m_unk0x528; // 0x528 undefined4 m_unk0x528; // 0x528
MxBool m_drawFPS; // 0x52c MxBool m_drawFPS; // 0x52c
RECT m_fpsRect; // 0x530 RECT m_fpsRect; // 0x530

View File

@ -1,23 +1,39 @@
#ifndef LEGOWORLD_H #ifndef LEGOWORLD_H
#define LEGOWORLD_H #define LEGOWORLD_H
#include "legocachesound.h"
#include "legocachesoundlist.h"
#include "legocameracontroller.h" #include "legocameracontroller.h"
#include "legoentity.h" #include "legoentity.h"
#include "legoentitylist.h" #include "legoentitylist.h"
#include "legopathcontrollerlist.h" #include "legopathcontrollerlist.h"
#include "mxcorelist.h"
#include "mxpresenter.h" #include "mxpresenter.h"
#include "mxpresenterlist.h" #include "mxpresenterlist.h"
class IslePathActor; class IslePathActor;
class LegoPathBoundary; class LegoPathBoundary;
class LegoHideAnimPresenter;
struct CoreSetCompare {
MxS32 operator()(MxCore* const& p_a, MxCore* const& p_b) const { return (MxS32) p_a < (MxS32) p_b; }
};
typedef set<MxCore*, CoreSetCompare> MxCoreSet;
// VTABLE: LEGO1 0x100d6280 // VTABLE: LEGO1 0x100d6280
// SIZE 0xf8 // SIZE 0xf8
class LegoWorld : public LegoEntity { class LegoWorld : public LegoEntity {
public: public:
__declspec(dllexport) LegoWorld(); enum StartupTicks {
__declspec(dllexport) virtual ~LegoWorld(); // vtable+0x0 e_start = 0,
e_one,
e_two,
e_three,
e_four
};
LegoWorld();
virtual ~LegoWorld() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4 virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
virtual MxResult Tickle() override; // vtable+0x8 virtual MxResult Tickle() override; // vtable+0x8
@ -37,9 +53,9 @@ class LegoWorld : public LegoEntity {
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
virtual void VTable0x50(); // vtable+0x50 virtual void ReadyWorld(); // vtable+0x50
virtual LegoCameraController* VTable0x54(); // vtable+0x54 virtual LegoCameraController* VTable0x54(); // vtable+0x54
virtual void VTable0x58(MxCore* p_object); // vtable+0x58 virtual void Add(MxCore* p_object); // vtable+0x58
virtual MxBool VTable0x5c(); // vtable+0x5c virtual MxBool VTable0x5c(); // vtable+0x5c
// FUNCTION: LEGO1 0x100010a0 // FUNCTION: LEGO1 0x100010a0
@ -51,55 +67,96 @@ class LegoWorld : public LegoEntity {
inline LegoCameraController* GetCamera() { return m_cameraController; } inline LegoCameraController* GetCamera() { return m_cameraController; }
inline undefined4 GetUnknown0xec() { return m_unk0xec; } inline undefined4 GetUnknown0xec() { return m_unk0xec; }
undefined FUN_100220e0(); MxBool PresentersPending();
void EndAction(MxCore* p_object); void Remove(MxCore* p_object);
void FUN_1001fc80(IslePathActor* p_actor); void FUN_1001fc80(IslePathActor* p_actor);
MxBool FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
MxBool FUN_10072980(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
void FUN_10073400();
void FUN_10073430();
MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value); MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
MxPresenter* FindPresenter(const char* p_presenter, const char* p_name); MxCore* Find(const char* p_class, const char* p_name);
MxCore* FUN_10021790(const MxAtomId& p_atom, MxS32 p_objectId); MxCore* Find(const MxAtomId& p_atom, MxS32 p_entityId);
// SYNTHETIC: LEGO1 0x1001dee0 // SYNTHETIC: LEGO1 0x1001dee0
// LegoWorld::`scalar deleting destructor' // LegoWorld::`scalar deleting destructor'
protected: protected:
LegoPathControllerList m_list0x68; // 0x68 LegoPathControllerList m_list0x68; // 0x68
MxPresenterList m_list0x80; // 0x80 MxPresenterList m_animPresenters; // 0x80
LegoCameraController* m_cameraController; // 0x98 LegoCameraController* m_cameraController; // 0x98
LegoEntityList* m_entityList; // 0x9c LegoEntityList* m_entityList; // 0x9c
MxCoreList* m_coreList; // 0xa0 LegoCacheSoundList* m_cacheSoundList; // 0xa0
undefined m_unk0xa4[0x14]; // 0xa4 MxBool m_destroyed; // 0xa4
MxPresenterList m_list0xb8; // 0xb8 MxCoreSet m_set0xa8; // 0xa8
undefined m_unk0xd0[0x1c]; // 0xd0 MxPresenterList m_controlPresenters; // 0xb8
undefined4 m_unk0xec; // 0xec MxCoreSet m_set0xd0; // 0xd0
undefined4 m_unk0xf0; // 0xf0 list<AutoROI*> m_list0xe0; // 0xe0
MxS16 m_unk0xf4; // 0xf4 undefined4 m_unk0xec; // 0xec
MxBool m_worldStarted; // 0xf6 LegoHideAnimPresenter* m_hideAnimPresenter; // 0xf0
undefined m_unk0xf7; // 0xf7 MxS16 m_startupTicks; // 0xf4
MxBool m_worldStarted; // 0xf6
undefined m_unk0xf7; // 0xf7
}; };
// SYNTHETIC: LEGO1 0x1001eed0 // clang-format off
// MxPresenterListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x1001d780
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::~_Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >
// TEMPLATE: LEGO1 0x1001ef40 // TEMPLATE: LEGO1 0x1001d850
// MxPtrListCursor<MxPresenter>::~MxPtrListCursor<MxPresenter> // _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Inc
// SYNTHETIC: LEGO1 0x1001ef90 // TEMPLATE: LEGO1 0x1001d890
// MxListCursor<MxPresenter *>::`scalar deleting destructor' // _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::erase
// SYNTHETIC: LEGO1 0x1001f000 // TEMPLATE: LEGO1 0x1001dcf0
// MxPtrListCursor<MxPresenter>::`scalar deleting destructor' // _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Erase
// TEMPLATE: LEGO1 0x1001f070 // TEMPLATE: LEGO1 0x1001dd30
// MxListCursor<MxPresenter *>::~MxListCursor<MxPresenter *> // _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Init
// FUNCTION: LEGO1 0x1001f0c0 // TEMPLATE: LEGO1 0x1001ddf0
// MxPresenterListCursor::~MxPresenterListCursor // list<AutoROI *,allocator<AutoROI *> >::~list<AutoROI *,allocator<AutoROI *> >
// TEMPLATE: LEGO1 0x10020760 // TEMPLATE: LEGO1 0x1001df50
// MxListCursor<MxPresenter *>::MxListCursor<MxPresenter *> // List<AutoROI *>::~List<AutoROI *>
// TEMPLATE: LEGO1 0x1001de60
// list<AutoROI *,allocator<AutoROI *> >::_Buynode
// TEMPLATE: LEGO1 0x1001de90
// set<MxCore *,CoreSetCompare,allocator<MxCore *> >::~set<MxCore *,CoreSetCompare,allocator<MxCore *> >
// TEMPLATE: LEGO1 0x1001df00
// Set<MxCore *,CoreSetCompare>::~Set<MxCore *,CoreSetCompare>
// TEMPLATE: LEGO1 0x1001f590
// list<AutoROI *,allocator<AutoROI *> >::erase
// TEMPLATE: LEGO1 0x100208b0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::insert
// TEMPLATE: LEGO1 0x10020b20
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Dec
// XTEMPLATE LEGO1 0x10020b70
// TEMPLATE: LEGO1 0x10020bb0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Buynode
// TEMPLATE: LEGO1 0x10020bd0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Insert
// TEMPLATE: LEGO1 0x10020e50
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Lrotate
// TEMPLATE: LEGO1 0x10020eb0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Rrotate
// TEMPLATE: LEGO1 0x10021340
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::find
// TEMPLATE: LEGO1 0x10022360
// _Construct
// GLOBAL: LEGO1 0x100f11a0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Nil
// clang-format on
#endif // LEGOWORLD_H #endif // LEGOWORLD_H

View File

@ -10,7 +10,7 @@ class LegoWorldPresenter : public LegoEntityPresenter {
LegoWorldPresenter(); LegoWorldPresenter();
virtual ~LegoWorldPresenter() override; // vtable+0x0 virtual ~LegoWorldPresenter() override; // vtable+0x0
__declspec(dllexport) static void configureLegoWorldPresenter(MxS32 p_legoWorldPresenterQuality); static void configureLegoWorldPresenter(MxS32 p_legoWorldPresenterQuality);
// FUNCTION: LEGO1 0x10066630 // FUNCTION: LEGO1 0x10066630
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c

View File

@ -23,6 +23,13 @@ class Motocycle : public IslePathActor {
return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x100359d0 // SYNTHETIC: LEGO1 0x100359d0
// Motocycle::`scalar deleting destructor' // Motocycle::`scalar deleting destructor'

View File

@ -39,7 +39,7 @@ class MxBackgroundAudioManager : public MxCore {
void FUN_1007ef40(); void FUN_1007ef40();
void FadeInOrFadeOut(); void FadeInOrFadeOut();
__declspec(dllexport) void Enable(MxBool p_enable); void Enable(MxBool p_enable);
virtual MxResult Create(MxAtomId& p_script, MxU32 p_frequencyMS); virtual MxResult Create(MxAtomId& p_script, MxU32 p_frequencyMS);
void Stop(); void Stop();

View File

@ -41,12 +41,12 @@ class MxControlPresenter : public MxCompositePresenter {
MxBool FUN_10044480(undefined4, undefined4*); MxBool FUN_10044480(undefined4, undefined4*);
void FUN_10044540(undefined2); void FUN_10044540(undefined2);
undefined2 m_unk0x4c; // 0x4c undefined2 m_unk0x4c; // 0x4c
MxS16 m_unk0x4e; // 0x4e MxS16 m_unk0x4e; // 0x4e
MxBool m_unk0x50; // 0x50 MxBool m_unk0x50; // 0x50
undefined2 m_unk0x52; // 0x52 undefined2 m_unk0x52; // 0x52
undefined2 m_unk0x54; // 0x54 undefined2 m_unk0x54; // 0x54
undefined4* m_unk0x58; // 0x58 MxS16* m_unk0x58; // 0x58
}; };
// SYNTHETIC: LEGO1 0x100440f0 // SYNTHETIC: LEGO1 0x100440f0

View File

@ -13,7 +13,7 @@ class MxTransitionManager : public MxCore {
MxTransitionManager(); MxTransitionManager();
virtual ~MxTransitionManager() override; // vtable+0x0 virtual ~MxTransitionManager() override; // vtable+0x0
__declspec(dllexport) void SetWaitIndicator(MxVideoPresenter* p_waitIndicator); void SetWaitIndicator(MxVideoPresenter* p_waitIndicator);
virtual MxResult Tickle(); // vtable+0x8 virtual MxResult Tickle(); // vtable+0x8

View File

@ -15,21 +15,23 @@ class Pizza : public IsleActor {
Pizza(); Pizza();
virtual ~Pizza() override; virtual ~Pizza() override;
virtual MxResult Tickle() override; // vtable+08 virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x10037f90 // FUNCTION: LEGO1 0x10037f90
inline const char* ClassName() const // vtable+0c inline const char* ClassName() const // vtable+0xc
{ {
// STRING: LEGO1 0x100f038c // STRING: LEGO1 0x100f038c
return "Pizza"; return "Pizza";
} }
// FUNCTION: LEGO1 0x10037fa0 // FUNCTION: LEGO1 0x10037fa0
inline MxBool IsA(const char* p_name) const override // vtable+10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Pizza::ClassName()) || IsleActor::IsA(p_name); return !strcmp(p_name, Pizza::ClassName()) || IsleActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
// SYNTHETIC: LEGO1 0x100380e0 // SYNTHETIC: LEGO1 0x100380e0
// Pizza::`scalar deleting destructor' // Pizza::`scalar deleting destructor'

View File

@ -28,6 +28,8 @@ class PizzaMissionState : public LegoState {
return !strcmp(p_name, PizzaMissionState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, PizzaMissionState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; } inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; }
// SYNTHETIC: LEGO1 0x10039350 // SYNTHETIC: LEGO1 0x10039350

View File

@ -20,6 +20,8 @@ class Pizzeria : public IsleActor {
return !strcmp(p_name, Pizzeria::ClassName()) || IsleActor::IsA(p_name); return !strcmp(p_name, Pizzeria::ClassName()) || IsleActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
// SYNTHETIC: LEGO1 0x1000e8d0 // SYNTHETIC: LEGO1 0x1000e8d0
// Pizzeria::`scalar deleting destructor' // Pizzeria::`scalar deleting destructor'
}; };

View File

@ -22,6 +22,8 @@ class PizzeriaState : public LegoState {
return !strcmp(p_name, PizzeriaState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, PizzeriaState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x10017ce0 // SYNTHETIC: LEGO1 0x10017ce0
// PizzeriaState::`scalar deleting destructor' // PizzeriaState::`scalar deleting destructor'
}; };

View File

@ -1,7 +1,11 @@
#ifndef POLICE_H #ifndef POLICE_H
#define POLICE_H #define POLICE_H
#include "decomp.h"
#include "legoworld.h" #include "legoworld.h"
#include "mxdsaction.h"
#include "policestate.h"
#include "radio.h"
// VTABLE: LEGO1 0x100d8a80 // VTABLE: LEGO1 0x100d8a80
// SIZE 0x110 // SIZE 0x110
@ -26,8 +30,19 @@ class Police : public LegoWorld {
return !strcmp(p_name, Police::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, Police::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1005e300 // SYNTHETIC: LEGO1 0x1005e300
// Police::`scalar deleting destructor' // Police::`scalar deleting destructor'
private:
Radio m_radio; // 0xf8
PoliceState* m_policeState; // 0x108
undefined4 m_unk0x10c; // 0x10c
}; };
#endif // POLICE_H #endif // POLICE_H

View File

@ -23,6 +23,8 @@ class PoliceState : public LegoState {
return !strcmp(p_name, PoliceState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, PoliceState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x1005e920 // SYNTHETIC: LEGO1 0x1005e920
// PoliceState::`scalar deleting destructor' // PoliceState::`scalar deleting destructor'

View File

@ -24,6 +24,9 @@ class RaceCar : public IslePathActor {
return !strcmp(p_name, RaceCar::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, RaceCar::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual MxU32 VTable0xcc() override; // vtable+0xcc
// SYNTHETIC: LEGO1 0x10028400 // SYNTHETIC: LEGO1 0x10028400
// RaceCar::`scalar deleting destructor' // RaceCar::`scalar deleting destructor'

View File

@ -6,6 +6,19 @@
// VTABLE: LEGO1 0x100d48a8 // VTABLE: LEGO1 0x100d48a8
// SIZE 0x68 // SIZE 0x68
class RaceStandsEntity : public BuildingEntity { class RaceStandsEntity : public BuildingEntity {
// FUNCTION: LEGO1 0x1000efa0
inline virtual const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f0300
return "RaceStandsEntity";
}
// FUNCTION: LEGO1 0x1000efb0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, RaceStandsEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f9e0 // SYNTHETIC: LEGO1 0x1000f9e0
// RaceStandsEntity::`scalar deleting destructor' // RaceStandsEntity::`scalar deleting destructor'
}; };

View File

@ -30,6 +30,8 @@ class RaceState : public LegoState {
return !strcmp(p_name, RaceState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, RaceState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; } inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; }
// SYNTHETIC: LEGO1 0x100160d0 // SYNTHETIC: LEGO1 0x100160d0

View File

@ -10,6 +10,8 @@ class Radio : public MxCore {
Radio(); Radio();
virtual ~Radio() override; virtual ~Radio() override;
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x1002c8e0 // FUNCTION: LEGO1 0x1002c8e0
inline virtual const char* ClassName() const override // vtable+0x0c inline virtual const char* ClassName() const override // vtable+0x0c
{ {
@ -23,6 +25,8 @@ class Radio : public MxCore {
return !strcmp(p_name, Radio::ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, Radio::ClassName()) || MxCore::IsA(p_name);
} }
void Initialize(MxBool p_und);
// SYNTHETIC: LEGO1 0x1002c970 // SYNTHETIC: LEGO1 0x1002c970
// Radio::`scalar deleting destructor' // Radio::`scalar deleting destructor'

Some files were not shown because too many files have changed in this diff Show More