mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 10:41:15 +00:00
Merge remote-tracking branch 'upstream/master' into impl/FUN_100bc070
This commit is contained in:
commit
dc87da71e7
2
.github/workflows/analyze.yml
vendored
2
.github/workflows/analyze.yml
vendored
@ -4,6 +4,7 @@ on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
decomplint-isle:
|
||||
name: 'ISLE annotations'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@ -18,6 +19,7 @@ jobs:
|
||||
python3 tools/decomplint/decomplint.py ISLE --module ISLE --warnfail
|
||||
|
||||
decomplint-lego1:
|
||||
name: 'LEGO1 annotations'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
54
.github/workflows/build.yml
vendored
54
.github/workflows/build.yml
vendored
@ -3,7 +3,53 @@ name: Build
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build-current-toolchain:
|
||||
name: 'Current ${{ matrix.toolchain.name }}'
|
||||
runs-on: windows-latest
|
||||
defaults:
|
||||
run:
|
||||
shell: ${{ matrix.toolchain.shell }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
toolchain:
|
||||
- { name: 'MSVC', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true }
|
||||
- { name: 'msys2 mingw32', shell: 'msys2 {0}', setup-msys2: true }
|
||||
|
||||
steps:
|
||||
- name: Set up MSYS2
|
||||
if: matrix.toolchain.setup-msys2
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: mingw32
|
||||
install: >-
|
||||
mingw-w64-i686-cc
|
||||
mingw-w64-i686-cmake
|
||||
mingw-w64-i686-ninja
|
||||
|
||||
- name: Setup cmake
|
||||
if: matrix.toolchain.setup-cmake
|
||||
uses: jwlawson/actions-setup-cmake@v1.13
|
||||
|
||||
- name: Setup ninja
|
||||
if: matrix.toolchain.setup-ninja
|
||||
uses: ashutoshvarma/setup-ninja@master
|
||||
|
||||
- name: Setup vcvars
|
||||
if: matrix.toolchain.setup-msvc
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: amd64_x86 # Use the 64-bit x64-native cross tools to build 32-bit x86 code
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -GNinja -Werror=dev
|
||||
cmake --build build
|
||||
|
||||
build:
|
||||
name: 'MSVC 4.20'
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
@ -28,10 +74,8 @@ jobs:
|
||||
shell: cmd
|
||||
run: |
|
||||
call .\msvc420\bin\VCVARS32.BAT x86
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -G "NMake Makefiles"
|
||||
cmake --build .
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -G "NMake Makefiles"
|
||||
cmake --build build
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
@ -44,6 +88,7 @@ jobs:
|
||||
build/LEGO1.PDB
|
||||
|
||||
compare:
|
||||
name: 'Compare with master'
|
||||
needs: build
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
@ -109,6 +154,7 @@ jobs:
|
||||
LEGO1PROGRESS.*
|
||||
|
||||
upload:
|
||||
name: 'Upload artifacts'
|
||||
needs: [build, compare]
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'isledecomp/isle' }}
|
||||
|
||||
2
.github/workflows/format.yml
vendored
2
.github/workflows/format.yml
vendored
@ -4,6 +4,7 @@ on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
clang-format:
|
||||
name: 'C++'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@ -19,6 +20,7 @@ jobs:
|
||||
-i
|
||||
|
||||
python-format:
|
||||
name: 'Python'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
1
.github/workflows/naming.yml
vendored
1
.github/workflows/naming.yml
vendored
@ -4,6 +4,7 @@ on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
ncc:
|
||||
name: 'C++'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
4
.github/workflows/unittest.yml
vendored
4
.github/workflows/unittest.yml
vendored
@ -1,9 +1,10 @@
|
||||
name: Unit Tests
|
||||
name: Test
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
pytest-win:
|
||||
name: 'Python Windows'
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
@ -20,6 +21,7 @@ jobs:
|
||||
pytest tools/isledecomp
|
||||
|
||||
pytest-ubuntu:
|
||||
name: 'Python Linux'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
851
3rdparty/flic/flic.asm
vendored
Normal file
851
3rdparty/flic/flic.asm
vendored
Normal file
@ -0,0 +1,851 @@
|
||||
.486
|
||||
.387
|
||||
option dotname
|
||||
.model flat, c
|
||||
assume fs:nothing
|
||||
|
||||
public DecodeFLCFrame
|
||||
|
||||
; This is so reccmp can detect the end of DecodeFLCFrame
|
||||
public EndOfSection
|
||||
|
||||
.text SEGMENT BYTE PUBLIC 'CODE'
|
||||
|
||||
?_25162 LABEL NEAR
|
||||
mov ax, word ptr [esp+0CH] ; 100BD530 _ 66: 8B. 44 24, 0C
|
||||
push esi ; 100BD535 _ 56
|
||||
test ax, ax ; 100BD536 _ 66: 85. C0
|
||||
push edi ; 100BD539 _ 57
|
||||
jl ?_25163 ; 100BD53A _ 7C, 34
|
||||
mov cx, word ptr [esp+18H] ; 100BD53C _ 66: 8B. 4C 24, 18
|
||||
test cx, cx ; 100BD541 _ 66: 85. C9
|
||||
jl ?_25163 ; 100BD544 _ 7C, 2A
|
||||
mov edx, dword ptr [esp+0CH] ; 100BD546 _ 8B. 54 24, 0C
|
||||
movsx edi, ax ; 100BD54A _ 0F BF. F8
|
||||
mov esi, dword ptr [edx+4H] ; 100BD54D _ 8B. 72, 04
|
||||
cmp esi, edi ; 100BD550 _ 3B. F7
|
||||
jle ?_25163 ; 100BD552 _ 7E, 1C
|
||||
movsx eax, cx ; 100BD554 _ 0F BF. C1
|
||||
cmp dword ptr [edx+8H], eax ; 100BD557 _ 39. 42, 08
|
||||
jle ?_25163 ; 100BD55A _ 7E, 14
|
||||
add esi, 3 ; 100BD55C _ 83. C6, 03
|
||||
mov cl, byte ptr [esp+1CH] ; 100BD55F _ 8A. 4C 24, 1C
|
||||
and esi, 0FFFFFFFCH ; 100BD563 _ 83. E6, FC
|
||||
imul esi, eax ; 100BD566 _ 0F AF. F0
|
||||
add esi, dword ptr [esp+10H] ; 100BD569 _ 03. 74 24, 10
|
||||
mov byte ptr [esi+edi], cl ; 100BD56D _ 88. 0C 3E
|
||||
?_25163:pop edi ; 100BD570 _ 5F
|
||||
pop esi ; 100BD571 _ 5E
|
||||
ret ; 100BD572 _ C3
|
||||
|
||||
; Filling space: 0DH
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25164 LABEL NEAR
|
||||
lea eax, [esp+18H] ; 100BD580 _ 8D. 44 24, 18
|
||||
push esi ; 100BD584 _ 56
|
||||
mov si, word ptr [esp+10H] ; 100BD585 _ 66: 8B. 74 24, 10
|
||||
push edi ; 100BD58A _ 57
|
||||
lea ecx, [esp+18H] ; 100BD58B _ 8D. 4C 24, 18
|
||||
push eax ; 100BD58F _ 50
|
||||
lea edx, [esp+18H] ; 100BD590 _ 8D. 54 24, 18
|
||||
push ecx ; 100BD594 _ 51
|
||||
mov edi, dword ptr [esp+14H] ; 100BD595 _ 8B. 7C 24, 14
|
||||
push edx ; 100BD599 _ 52
|
||||
push edi ; 100BD59A _ 57
|
||||
call ?_25168 ; 100BD59B _ E8, 00000060
|
||||
add esp, 16 ; 100BD5A0 _ 83. C4, 10
|
||||
test eax, eax ; 100BD5A3 _ 85. C0
|
||||
jz ?_25167 ; 100BD5A5 _ 74, 4A
|
||||
mov ax, word ptr [esp+14H] ; 100BD5A7 _ 66: 8B. 44 24, 14
|
||||
sub ax, si ; 100BD5AC _ 66: 2B. C6
|
||||
jz ?_25165 ; 100BD5AF _ 74, 0B
|
||||
movsx eax, ax ; 100BD5B1 _ 0F BF. C0
|
||||
mov esi, dword ptr [esp+1CH] ; 100BD5B4 _ 8B. 74 24, 1C
|
||||
add esi, eax ; 100BD5B8 _ 03. F0
|
||||
jmp ?_25166 ; 100BD5BA _ EB, 04
|
||||
|
||||
?_25165:mov esi, dword ptr [esp+1CH] ; 100BD5BC _ 8B. 74 24, 1C
|
||||
?_25166:movsx edx, word ptr [esp+20H] ; 100BD5C0 _ 0F BF. 54 24, 20
|
||||
mov ecx, dword ptr [edi+4H] ; 100BD5C5 _ 8B. 4F, 04
|
||||
movsx eax, word ptr [esp+18H] ; 100BD5C8 _ 0F BF. 44 24, 18
|
||||
add ecx, 3 ; 100BD5CD _ 83. C1, 03
|
||||
and ecx, 0FFFFFFFCH ; 100BD5D0 _ 83. E1, FC
|
||||
movsx edi, word ptr [esp+14H] ; 100BD5D3 _ 0F BF. 7C 24, 14
|
||||
imul ecx, eax ; 100BD5D8 _ 0F AF. C8
|
||||
add ecx, edi ; 100BD5DB _ 03. CF
|
||||
mov edi, dword ptr [esp+10H] ; 100BD5DD _ 8B. 7C 24, 10
|
||||
add edi, ecx ; 100BD5E1 _ 03. F9
|
||||
mov ecx, edx ; 100BD5E3 _ 8B. CA
|
||||
shr ecx, 2 ; 100BD5E5 _ C1. E9, 02
|
||||
rep movsd ; 100BD5E8 _ F3: A5
|
||||
mov ecx, edx ; 100BD5EA _ 8B. CA
|
||||
and ecx, 03H ; 100BD5EC _ 83. E1, 03
|
||||
rep movsb ; 100BD5EF _ F3: A4
|
||||
?_25167:pop edi ; 100BD5F1 _ 5F
|
||||
pop esi ; 100BD5F2 _ 5E
|
||||
ret ; 100BD5F3 _ C3
|
||||
|
||||
; Filling space: 0CH
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25168 LABEL NEAR
|
||||
mov ecx, dword ptr [esp+8H] ; 100BD600 _ 8B. 4C 24, 08
|
||||
push ebx ; 100BD604 _ 53
|
||||
mov bx, word ptr [ecx] ; 100BD605 _ 66: 8B. 19
|
||||
push esi ; 100BD608 _ 56
|
||||
mov eax, dword ptr [esp+14H] ; 100BD609 _ 8B. 44 24, 14
|
||||
push edi ; 100BD60D _ 57
|
||||
mov ax, word ptr [eax] ; 100BD60E _ 66: 8B. 00
|
||||
push ebp ; 100BD611 _ 55
|
||||
test ax, ax ; 100BD612 _ 66: 85. C0
|
||||
mov edx, dword ptr [esp+20H] ; 100BD615 _ 8B. 54 24, 20
|
||||
mov si, word ptr [edx] ; 100BD619 _ 66: 8B. 32
|
||||
lea edi, [ebx+esi] ; 100BD61C _ 8D. 3C 33
|
||||
jl ?_25171 ; 100BD61F _ 7C, 50
|
||||
movsx ebp, ax ; 100BD621 _ 0F BF. E8
|
||||
mov eax, dword ptr [esp+14H] ; 100BD624 _ 8B. 44 24, 14
|
||||
cmp dword ptr [eax+8H], ebp ; 100BD628 _ 39. 68, 08
|
||||
jle ?_25171 ; 100BD62B _ 7E, 44
|
||||
test di, di ; 100BD62D _ 66: 85. FF
|
||||
jl ?_25171 ; 100BD630 _ 7C, 3F
|
||||
movsx ebp, bx ; 100BD632 _ 0F BF. EB
|
||||
cmp ebp, dword ptr [eax+4H] ; 100BD635 _ 3B. 68, 04
|
||||
jge ?_25171 ; 100BD638 _ 7D, 37
|
||||
test bx, bx ; 100BD63A _ 66: 85. DB
|
||||
jge ?_25169 ; 100BD63D _ 7D, 0B
|
||||
mov si, di ; 100BD63F _ 66: 8B. F7
|
||||
mov word ptr [edx], di ; 100BD642 _ 66: 89. 3A
|
||||
; Note: Length-changing prefix causes delay on Intel processors
|
||||
mov word ptr [ecx], 0 ; 100BD645 _ 66: C7. 01, 0000
|
||||
?_25169:movsx ecx, di ; 100BD64A _ 0F BF. CF
|
||||
mov eax, dword ptr [eax+4H] ; 100BD64D _ 8B. 40, 04
|
||||
cmp ecx, eax ; 100BD650 _ 3B. C8
|
||||
jle ?_25170 ; 100BD652 _ 7E, 09
|
||||
sub si, di ; 100BD654 _ 66: 2B. F7
|
||||
add si, ax ; 100BD657 _ 66: 03. F0
|
||||
mov word ptr [edx], si ; 100BD65A _ 66: 89. 32
|
||||
?_25170:test si, si ; 100BD65D _ 66: 85. F6
|
||||
mov eax, 0 ; 100BD660 _ B8, 00000000
|
||||
jl ?_25172 ; 100BD665 _ 7C, 0C
|
||||
pop ebp ; 100BD667 _ 5D
|
||||
mov eax, 1 ; 100BD668 _ B8, 00000001
|
||||
pop edi ; 100BD66D _ 5F
|
||||
pop esi ; 100BD66E _ 5E
|
||||
pop ebx ; 100BD66F _ 5B
|
||||
ret ; 100BD670 _ C3
|
||||
|
||||
?_25171:xor eax, eax ; 100BD671 _ 33. C0
|
||||
?_25172:pop ebp ; 100BD673 _ 5D
|
||||
pop edi ; 100BD674 _ 5F
|
||||
pop esi ; 100BD675 _ 5E
|
||||
pop ebx ; 100BD676 _ 5B
|
||||
ret ; 100BD677 _ C3
|
||||
|
||||
; Filling space: 8H
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25173 LABEL NEAR
|
||||
lea eax, [esp+18H] ; 100BD680 _ 8D. 44 24, 18
|
||||
push esi ; 100BD684 _ 56
|
||||
lea ecx, [esp+14H] ; 100BD685 _ 8D. 4C 24, 14
|
||||
push eax ; 100BD689 _ 50
|
||||
lea edx, [esp+14H] ; 100BD68A _ 8D. 54 24, 14
|
||||
push ecx ; 100BD68E _ 51
|
||||
mov esi, dword ptr [esp+10H] ; 100BD68F _ 8B. 74 24, 10
|
||||
push edx ; 100BD693 _ 52
|
||||
push esi ; 100BD694 _ 56
|
||||
call ?_25168 ; 100BD695 _ E8, FFFFFF66
|
||||
add esp, 16 ; 100BD69A _ 83. C4, 10
|
||||
test eax, eax ; 100BD69D _ 85. C0
|
||||
jz ?_25175 ; 100BD69F _ 74, 33
|
||||
movsx eax, word ptr [esp+14H] ; 100BD6A1 _ 0F BF. 44 24, 14
|
||||
mov ecx, dword ptr [esi+4H] ; 100BD6A6 _ 8B. 4E, 04
|
||||
add ecx, 3 ; 100BD6A9 _ 83. C1, 03
|
||||
and ecx, 0FFFFFFFCH ; 100BD6AC _ 83. E1, FC
|
||||
movsx edx, word ptr [esp+10H] ; 100BD6AF _ 0F BF. 54 24, 10
|
||||
imul ecx, eax ; 100BD6B4 _ 0F AF. C8
|
||||
add ecx, edx ; 100BD6B7 _ 03. CA
|
||||
mov eax, dword ptr [esp+0CH] ; 100BD6B9 _ 8B. 44 24, 0C
|
||||
add eax, ecx ; 100BD6BD _ 03. C1
|
||||
dec word ptr [esp+1CH] ; 100BD6BF _ 66: FF. 4C 24, 1C
|
||||
js ?_25175 ; 100BD6C4 _ 78, 0E
|
||||
mov cl, byte ptr [esp+18H] ; 100BD6C6 _ 8A. 4C 24, 18
|
||||
?_25174:mov byte ptr [eax], cl ; 100BD6CA _ 88. 08
|
||||
inc eax ; 100BD6CC _ 40
|
||||
dec word ptr [esp+1CH] ; 100BD6CD _ 66: FF. 4C 24, 1C
|
||||
jns ?_25174 ; 100BD6D2 _ 79, F6
|
||||
?_25175:pop esi ; 100BD6D4 _ 5E
|
||||
ret ; 100BD6D5 _ C3
|
||||
|
||||
; Filling space: 0AH
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
db 0CCH, 0CCH
|
||||
|
||||
?_25176 LABEL NEAR
|
||||
lea eax, [esp+18H] ; 100BD6E0 _ 8D. 44 24, 18
|
||||
push ebx ; 100BD6E4 _ 53
|
||||
lea ecx, [esp+14H] ; 100BD6E5 _ 8D. 4C 24, 14
|
||||
push esi ; 100BD6E9 _ 56
|
||||
lea edx, [esp+14H] ; 100BD6EA _ 8D. 54 24, 14
|
||||
push eax ; 100BD6EE _ 50
|
||||
mov esi, dword ptr [esp+10H] ; 100BD6EF _ 8B. 74 24, 10
|
||||
push ecx ; 100BD6F3 _ 51
|
||||
shl word ptr [esp+28H], 1 ; 100BD6F4 _ 66: C1. 64 24, 28, 01
|
||||
push edx ; 100BD6FA _ 52
|
||||
push esi ; 100BD6FB _ 56
|
||||
call ?_25168 ; 100BD6FC _ E8, FFFFFEFF
|
||||
add esp, 16 ; 100BD701 _ 83. C4, 10
|
||||
test eax, eax ; 100BD704 _ 85. C0
|
||||
jz ?_25179 ; 100BD706 _ 74, 52
|
||||
mov dx, word ptr [esp+20H] ; 100BD708 _ 66: 8B. 54 24, 20
|
||||
mov ecx, dword ptr [esi+4H] ; 100BD70D _ 8B. 4E, 04
|
||||
and dx, 01H ; 100BD710 _ 66: 83. E2, 01
|
||||
add ecx, 3 ; 100BD714 _ 83. C1, 03
|
||||
movsx eax, word ptr [esp+18H] ; 100BD717 _ 0F BF. 44 24, 18
|
||||
movsx ebx, word ptr [esp+14H] ; 100BD71C _ 0F BF. 5C 24, 14
|
||||
and ecx, 0FFFFFFFCH ; 100BD721 _ 83. E1, FC
|
||||
sar word ptr [esp+20H], 1 ; 100BD724 _ 66: C1. 7C 24, 20, 01
|
||||
imul ecx, eax ; 100BD72A _ 0F AF. C8
|
||||
add ecx, ebx ; 100BD72D _ 03. CB
|
||||
mov eax, dword ptr [esp+10H] ; 100BD72F _ 8B. 44 24, 10
|
||||
add eax, ecx ; 100BD733 _ 03. C1
|
||||
mov bl, byte ptr [esp+1CH] ; 100BD735 _ 8A. 5C 24, 1C
|
||||
dec word ptr [esp+20H] ; 100BD739 _ 66: FF. 4C 24, 20
|
||||
js ?_25178 ; 100BD73E _ 78, 13
|
||||
?_25177:mov cx, word ptr [esp+1CH] ; 100BD740 _ 66: 8B. 4C 24, 1C
|
||||
add eax, 2 ; 100BD745 _ 83. C0, 02
|
||||
mov word ptr [eax-2H], cx ; 100BD748 _ 66: 89. 48, FE
|
||||
dec word ptr [esp+20H] ; 100BD74C _ 66: FF. 4C 24, 20
|
||||
jns ?_25177 ; 100BD751 _ 79, ED
|
||||
?_25178:test dx, dx ; 100BD753 _ 66: 85. D2
|
||||
jz ?_25179 ; 100BD756 _ 74, 02
|
||||
mov byte ptr [eax], bl ; 100BD758 _ 88. 18
|
||||
?_25179:pop esi ; 100BD75A _ 5E
|
||||
pop ebx ; 100BD75B _ 5B
|
||||
ret ; 100BD75C _ C3
|
||||
|
||||
; Filling space: 3H
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25180 LABEL NEAR
|
||||
mov eax, dword ptr [esp+18H] ; 100BD760 _ 8B. 44 24, 18
|
||||
sub esp, 4 ; 100BD764 _ 83. EC, 04
|
||||
; Note: Length-changing prefix causes delay on Intel processors
|
||||
mov word ptr [esp+2H], 0 ; 100BD767 _ 66: C7. 44 24, 02, 0000
|
||||
mov ecx, dword ptr [esp+14H] ; 100BD76E _ 8B. 4C 24, 14
|
||||
push ebx ; 100BD772 _ 53
|
||||
push esi ; 100BD773 _ 56
|
||||
mov byte ptr [eax], 0 ; 100BD774 _ C6. 00, 00
|
||||
cmp word ptr [ecx+6H], 0 ; 100BD777 _ 66: 83. 79, 06, 00
|
||||
push edi ; 100BD77C _ 57
|
||||
push ebp ; 100BD77D _ 55
|
||||
jle ?_25191 ; 100BD77E _ 0F 8E, 000000C1
|
||||
mov esi, dword ptr [esp+18H] ; 100BD784 _ 8B. 74 24, 18
|
||||
mov edi, dword ptr [esp+1CH] ; 100BD788 _ 8B. 7C 24, 1C
|
||||
mov ebx, dword ptr [esp+20H] ; 100BD78C _ 8B. 5C 24, 20
|
||||
mov ebp, dword ptr [esp+28H] ; 100BD790 _ 8B. 6C 24, 28
|
||||
?_25181:mov ecx, ebp ; 100BD794 _ 8B. CD
|
||||
xor edx, edx ; 100BD796 _ 33. D2
|
||||
mov dx, word ptr [ecx+4H] ; 100BD798 _ 66: 8B. 51, 04
|
||||
add ebp, dword ptr [ebp] ; 100BD79C _ 03. 6D, 00
|
||||
sub edx, 4 ; 100BD79F _ 83. EA, 04
|
||||
cmp edx, 12 ; 100BD7A2 _ 83. FA, 0C
|
||||
ja ?_25190 ; 100BD7A5 _ 0F 87, 00000082
|
||||
xor eax, eax ; 100BD7AB _ 33. C0
|
||||
mov al, byte ptr [?_25193+edx] ; 100BD7AD _ 8A. 82, 100BD870(d)
|
||||
jmp dword ptr [?_25192+eax*4] ; 100BD7B3 _ FF. 24 85, 100BD850(d)
|
||||
|
||||
?_25182 LABEL NEAR
|
||||
add ecx, 6 ; 100BD7BA _ 83. C1, 06
|
||||
push ecx ; 100BD7BD _ 51
|
||||
push esi ; 100BD7BE _ 56
|
||||
call ?_25194 ; 100BD7BF _ E8, 000000BC
|
||||
mov eax, dword ptr [esp+34H] ; 100BD7C4 _ 8B. 44 24, 34
|
||||
add esp, 8 ; 100BD7C8 _ 83. C4, 08
|
||||
mov byte ptr [eax], 1 ; 100BD7CB _ C6. 00, 01
|
||||
jmp ?_25190 ; 100BD7CE _ EB, 5D
|
||||
|
||||
?_25183 LABEL NEAR
|
||||
push ebx ; 100BD7D0 _ 53
|
||||
add ecx, 6 ; 100BD7D1 _ 83. C1, 06
|
||||
push ecx ; 100BD7D4 _ 51
|
||||
push edi ; 100BD7D5 _ 57
|
||||
push esi ; 100BD7D6 _ 56
|
||||
call ?_25220 ; 100BD7D7 _ E8, 000002E4
|
||||
jmp ?_25189 ; 100BD7DC _ EB, 4C
|
||||
|
||||
?_25184 LABEL NEAR
|
||||
add ecx, 6 ; 100BD7DE _ 83. C1, 06
|
||||
push ecx ; 100BD7E1 _ 51
|
||||
push esi ; 100BD7E2 _ 56
|
||||
call ?_25202 ; 100BD7E3 _ E8, 00000158
|
||||
mov eax, dword ptr [esp+34H] ; 100BD7E8 _ 8B. 44 24, 34
|
||||
add esp, 8 ; 100BD7EC _ 83. C4, 08
|
||||
mov byte ptr [eax], 1 ; 100BD7EF _ C6. 00, 01
|
||||
jmp ?_25190 ; 100BD7F2 _ EB, 39
|
||||
|
||||
?_25185 LABEL NEAR
|
||||
push ebx ; 100BD7F4 _ 53
|
||||
add ecx, 6 ; 100BD7F5 _ 83. C1, 06
|
||||
push ecx ; 100BD7F8 _ 51
|
||||
push edi ; 100BD7F9 _ 57
|
||||
push esi ; 100BD7FA _ 56
|
||||
call ?_25213 ; 100BD7FB _ E8, 00000210
|
||||
jmp ?_25189 ; 100BD800 _ EB, 28
|
||||
|
||||
?_25186 LABEL NEAR
|
||||
push ebx ; 100BD802 _ 53
|
||||
add ecx, 6 ; 100BD803 _ 83. C1, 06
|
||||
push ecx ; 100BD806 _ 51
|
||||
push edi ; 100BD807 _ 57
|
||||
push esi ; 100BD808 _ 56
|
||||
call ?_25227 ; 100BD809 _ E8, 000003F2
|
||||
jmp ?_25189 ; 100BD80E _ EB, 1A
|
||||
|
||||
?_25187 LABEL NEAR
|
||||
push ebx ; 100BD810 _ 53
|
||||
add ecx, 6 ; 100BD811 _ 83. C1, 06
|
||||
push ecx ; 100BD814 _ 51
|
||||
push edi ; 100BD815 _ 57
|
||||
push esi ; 100BD816 _ 56
|
||||
call ?_25203 ; 100BD817 _ E8, 00000144
|
||||
jmp ?_25189 ; 100BD81C _ EB, 0C
|
||||
|
||||
?_25188 LABEL NEAR
|
||||
push ebx ; 100BD81E _ 53
|
||||
add ecx, 6 ; 100BD81F _ 83. C1, 06
|
||||
push ecx ; 100BD822 _ 51
|
||||
push edi ; 100BD823 _ 57
|
||||
push esi ; 100BD824 _ 56
|
||||
call ?_25231 ; 100BD825 _ E8, 00000466
|
||||
?_25189:add esp, 16 ; 100BD82A _ 83. C4, 10
|
||||
|
||||
?_25190 LABEL NEAR
|
||||
inc word ptr [esp+12H] ; 100BD82D _ 66: FF. 44 24, 12
|
||||
mov eax, dword ptr [esp+24H] ; 100BD832 _ 8B. 44 24, 24
|
||||
mov cx, word ptr [esp+12H] ; 100BD836 _ 66: 8B. 4C 24, 12
|
||||
cmp word ptr [eax+6H], cx ; 100BD83B _ 66: 39. 48, 06
|
||||
jg ?_25181 ; 100BD83F _ 0F 8F, FFFFFF4F
|
||||
?_25191:xor ax, ax ; 100BD845 _ 66: 33. C0
|
||||
pop ebp ; 100BD848 _ 5D
|
||||
pop edi ; 100BD849 _ 5F
|
||||
pop esi ; 100BD84A _ 5E
|
||||
pop ebx ; 100BD84B _ 5B
|
||||
add esp, 4 ; 100BD84C _ 83. C4, 04
|
||||
ret ; 100BD84F _ C3
|
||||
|
||||
?_25192 label dword ; switch/case jump table
|
||||
dd ?_25182 ; 100BD850 _ 100BD7BA (d)
|
||||
dd ?_25183 ; 100BD854 _ 100BD7D0 (d)
|
||||
dd ?_25184 ; 100BD858 _ 100BD7DE (d)
|
||||
dd ?_25185 ; 100BD85C _ 100BD7F4 (d)
|
||||
dd ?_25186 ; 100BD860 _ 100BD802 (d)
|
||||
dd ?_25187 ; 100BD864 _ 100BD810 (d)
|
||||
dd ?_25188 ; 100BD868 _ 100BD81E (d)
|
||||
dd ?_25190 ; 100BD86C _ 100BD82D (d)
|
||||
|
||||
?_25193 db 00H, 07H, 07H, 01H, 07H, 07H, 07H, 02H ; 100BD870 _ ........
|
||||
db 03H, 04H, 07H, 05H, 06H, 0CCH, 0CCH, 0CCH ; 100BD878 _ ........
|
||||
|
||||
?_25194 LABEL NEAR
|
||||
mov eax, dword ptr [esp+8H] ; 100BD880 _ 8B. 44 24, 08
|
||||
mov ecx, dword ptr [esp+4H] ; 100BD884 _ 8B. 4C 24, 04
|
||||
push eax ; 100BD888 _ 50
|
||||
push ecx ; 100BD889 _ 51
|
||||
call ?_25195 ; 100BD88A _ E8, 00000011
|
||||
add esp, 8 ; 100BD88F _ 83. C4, 08
|
||||
ret ; 100BD892 _ C3
|
||||
|
||||
; Filling space: 0DH
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25195 LABEL NEAR
|
||||
mov eax, dword ptr [esp+8H] ; 100BD8A0 _ 8B. 44 24, 08
|
||||
push ebx ; 100BD8A4 _ 53
|
||||
mov bx, word ptr [eax] ; 100BD8A5 _ 66: 8B. 18
|
||||
push esi ; 100BD8A8 _ 56
|
||||
xor si, si ; 100BD8A9 _ 66: 33. F6
|
||||
push edi ; 100BD8AC _ 57
|
||||
dec bx ; 100BD8AD _ 66: 4B
|
||||
push ebp ; 100BD8AF _ 55
|
||||
lea edi, [eax+2H] ; 100BD8B0 _ 8D. 78, 02
|
||||
js ?_25198 ; 100BD8B3 _ 78, 36
|
||||
?_25196:movzx ax, byte ptr [edi] ; 100BD8B5 _ 66: 0F B6. 07
|
||||
movzx bp, byte ptr [edi+1H] ; 100BD8B9 _ 66: 0F B6. 6F, 01
|
||||
add si, ax ; 100BD8BE _ 66: 03. F0
|
||||
inc edi ; 100BD8C1 _ 47
|
||||
inc edi ; 100BD8C2 _ 47
|
||||
test bp, bp ; 100BD8C3 _ 66: 85. ED
|
||||
jnz ?_25197 ; 100BD8C6 _ 75, 04
|
||||
; Note: Length-changing prefix causes delay on Intel processors
|
||||
mov bp, 256 ; 100BD8C8 _ 66: BD, 0100
|
||||
?_25197:mov eax, dword ptr [esp+14H] ; 100BD8CC _ 8B. 44 24, 14
|
||||
push ebp ; 100BD8D0 _ 55
|
||||
push esi ; 100BD8D1 _ 56
|
||||
push edi ; 100BD8D2 _ 57
|
||||
add si, bp ; 100BD8D3 _ 66: 03. F5
|
||||
push eax ; 100BD8D6 _ 50
|
||||
call ?_25199 ; 100BD8D7 _ E8, 00000014
|
||||
movsx eax, bp ; 100BD8DC _ 0F BF. C5
|
||||
add esp, 16 ; 100BD8DF _ 83. C4, 10
|
||||
lea ecx, [eax+eax*2] ; 100BD8E2 _ 8D. 0C 40
|
||||
add edi, ecx ; 100BD8E5 _ 03. F9
|
||||
dec bx ; 100BD8E7 _ 66: 4B
|
||||
jns ?_25196 ; 100BD8E9 _ 79, CA
|
||||
?_25198:pop ebp ; 100BD8EB _ 5D
|
||||
pop edi ; 100BD8EC _ 5F
|
||||
pop esi ; 100BD8ED _ 5E
|
||||
pop ebx ; 100BD8EE _ 5B
|
||||
ret ; 100BD8EF _ C3
|
||||
|
||||
?_25199 LABEL NEAR
|
||||
mov dx, word ptr [esp+10H] ; 100BD8F0 _ 66: 8B. 54 24, 10
|
||||
push esi ; 100BD8F5 _ 56
|
||||
movsx ecx, word ptr [esp+10H] ; 100BD8F6 _ 0F BF. 4C 24, 10
|
||||
shl ecx, 2 ; 100BD8FB _ C1. E1, 02
|
||||
mov eax, dword ptr [esp+8H] ; 100BD8FE _ 8B. 44 24, 08
|
||||
add ecx, dword ptr [eax] ; 100BD902 _ 03. 08
|
||||
lea esi, [ecx+eax] ; 100BD904 _ 8D. 34 01
|
||||
mov ax, dx ; 100BD907 _ 66: 8B. C2
|
||||
dec dx ; 100BD90A _ 66: 4A
|
||||
test ax, ax ; 100BD90C _ 66: 85. C0
|
||||
jz ?_25201 ; 100BD90F _ 74, 25
|
||||
mov eax, dword ptr [esp+0CH] ; 100BD911 _ 8B. 44 24, 0C
|
||||
?_25200:mov cl, byte ptr [eax] ; 100BD915 _ 8A. 08
|
||||
add esi, 4 ; 100BD917 _ 83. C6, 04
|
||||
add eax, 3 ; 100BD91A _ 83. C0, 03
|
||||
mov byte ptr [esi-2H], cl ; 100BD91D _ 88. 4E, FE
|
||||
mov cl, byte ptr [eax-2H] ; 100BD920 _ 8A. 48, FE
|
||||
mov byte ptr [esi-3H], cl ; 100BD923 _ 88. 4E, FD
|
||||
mov cl, byte ptr [eax-1H] ; 100BD926 _ 8A. 48, FF
|
||||
mov byte ptr [esi-4H], cl ; 100BD929 _ 88. 4E, FC
|
||||
mov cx, dx ; 100BD92C _ 66: 8B. CA
|
||||
dec dx ; 100BD92F _ 66: 4A
|
||||
test cx, cx ; 100BD931 _ 66: 85. C9
|
||||
jnz ?_25200 ; 100BD934 _ 75, DF
|
||||
?_25201:pop esi ; 100BD936 _ 5E
|
||||
ret ; 100BD937 _ C3
|
||||
|
||||
; Filling space: 8H
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25202 LABEL NEAR
|
||||
mov eax, dword ptr [esp+8H] ; 100BD940 _ 8B. 44 24, 08
|
||||
mov ecx, dword ptr [esp+4H] ; 100BD944 _ 8B. 4C 24, 04
|
||||
push eax ; 100BD948 _ 50
|
||||
push ecx ; 100BD949 _ 51
|
||||
call ?_25195 ; 100BD94A _ E8, FFFFFF51
|
||||
add esp, 8 ; 100BD94F _ 83. C4, 08
|
||||
ret ; 100BD952 _ C3
|
||||
|
||||
; Filling space: 0DH
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25203 LABEL NEAR
|
||||
mov eax, dword ptr [esp+10H] ; 100BD960 _ 8B. 44 24, 10
|
||||
sub esp, 8 ; 100BD964 _ 83. EC, 08
|
||||
mov dx, word ptr [eax+8H] ; 100BD967 _ 66: 8B. 50, 08
|
||||
push ebx ; 100BD96B _ 53
|
||||
mov ecx, dword ptr [esp+18H] ; 100BD96C _ 8B. 4C 24, 18
|
||||
push esi ; 100BD970 _ 56
|
||||
push edi ; 100BD971 _ 57
|
||||
push ebp ; 100BD972 _ 55
|
||||
mov di, word ptr [eax+0AH] ; 100BD973 _ 66: 8B. 78, 0A
|
||||
mov eax, dword ptr [esp+1CH] ; 100BD977 _ 8B. 44 24, 1C
|
||||
mov esi, dword ptr [eax+4H] ; 100BD97B _ 8B. 70, 04
|
||||
movsx eax, di ; 100BD97E _ 0F BF. C7
|
||||
add esi, 3 ; 100BD981 _ 83. C6, 03
|
||||
dec eax ; 100BD984 _ 48
|
||||
and esi, 0FFFFFFFCH ; 100BD985 _ 83. E6, FC
|
||||
imul esi, eax ; 100BD988 _ 0F AF. F0
|
||||
add esi, dword ptr [esp+20H] ; 100BD98B _ 03. 74 24, 20
|
||||
dec di ; 100BD98F _ 66: 4F
|
||||
mov word ptr [esp+12H], di ; 100BD991 _ 66: 89. 7C 24, 12
|
||||
js ?_25212 ; 100BD996 _ 78, 64
|
||||
movsx eax, dx ; 100BD998 _ 0F BF. C2
|
||||
mov dword ptr [esp+14H], eax ; 100BD99B _ 89. 44 24, 14
|
||||
?_25204:xor di, di ; 100BD99F _ 66: 33. FF
|
||||
inc ecx ; 100BD9A2 _ 41
|
||||
test dx, dx ; 100BD9A3 _ 66: 85. D2
|
||||
jle ?_25211 ; 100BD9A6 _ 7E, 3A
|
||||
?_25205:mov al, byte ptr [ecx] ; 100BD9A8 _ 8A. 01
|
||||
inc ecx ; 100BD9AA _ 41
|
||||
test al, al ; 100BD9AB _ 84. C0
|
||||
jl ?_25208 ; 100BD9AD _ 7C, 13
|
||||
jle ?_25207 ; 100BD9AF _ 7E, 0E
|
||||
movsx bp, al ; 100BD9B1 _ 66: 0F BE. E8
|
||||
?_25206:mov bl, byte ptr [ecx] ; 100BD9B5 _ 8A. 19
|
||||
inc esi ; 100BD9B7 _ 46
|
||||
dec bp ; 100BD9B8 _ 66: 4D
|
||||
mov byte ptr [esi-1H], bl ; 100BD9BA _ 88. 5E, FF
|
||||
jnz ?_25206 ; 100BD9BD _ 75, F6
|
||||
?_25207:inc ecx ; 100BD9BF _ 41
|
||||
jmp ?_25210 ; 100BD9C0 _ EB, 14
|
||||
|
||||
?_25208:neg al ; 100BD9C2 _ F6. D8
|
||||
test al, al ; 100BD9C4 _ 84. C0
|
||||
jle ?_25210 ; 100BD9C6 _ 7E, 0E
|
||||
movsx bp, al ; 100BD9C8 _ 66: 0F BE. E8
|
||||
?_25209:mov bl, byte ptr [ecx] ; 100BD9CC _ 8A. 19
|
||||
inc ecx ; 100BD9CE _ 41
|
||||
mov byte ptr [esi], bl ; 100BD9CF _ 88. 1E
|
||||
inc esi ; 100BD9D1 _ 46
|
||||
dec bp ; 100BD9D2 _ 66: 4D
|
||||
jnz ?_25209 ; 100BD9D4 _ 75, F6
|
||||
?_25210:movsx ax, al ; 100BD9D6 _ 66: 0F BE. C0
|
||||
add di, ax ; 100BD9DA _ 66: 03. F8
|
||||
cmp dx, di ; 100BD9DD _ 66: 3B. D7
|
||||
jg ?_25205 ; 100BD9E0 _ 7F, C6
|
||||
?_25211:mov eax, dword ptr [esp+1CH] ; 100BD9E2 _ 8B. 44 24, 1C
|
||||
mov eax, dword ptr [eax+4H] ; 100BD9E6 _ 8B. 40, 04
|
||||
add eax, 3 ; 100BD9E9 _ 83. C0, 03
|
||||
and eax, 0FFFFFFFCH ; 100BD9EC _ 83. E0, FC
|
||||
add eax, dword ptr [esp+14H] ; 100BD9EF _ 03. 44 24, 14
|
||||
sub esi, eax ; 100BD9F3 _ 2B. F0
|
||||
dec word ptr [esp+12H] ; 100BD9F5 _ 66: FF. 4C 24, 12
|
||||
jns ?_25204 ; 100BD9FA _ 79, A3
|
||||
?_25212:pop ebp ; 100BD9FC _ 5D
|
||||
pop edi ; 100BD9FD _ 5F
|
||||
pop esi ; 100BD9FE _ 5E
|
||||
pop ebx ; 100BD9FF _ 5B
|
||||
add esp, 8 ; 100BDA00 _ 83. C4, 08
|
||||
ret ; 100BDA03 _ C3
|
||||
|
||||
; Filling space: 0CH
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25213 LABEL NEAR
|
||||
mov ecx, dword ptr [esp+0CH] ; 100BDA10 _ 8B. 4C 24, 0C
|
||||
sub esp, 4 ; 100BDA14 _ 83. EC, 04
|
||||
mov eax, dword ptr [esp+14H] ; 100BDA17 _ 8B. 44 24, 14
|
||||
push ebx ; 100BDA1B _ 53
|
||||
mov ax, word ptr [eax+0AH] ; 100BDA1C _ 66: 8B. 40, 0A
|
||||
push esi ; 100BDA20 _ 56
|
||||
sub ax, word ptr [ecx] ; 100BDA21 _ 66: 2B. 01
|
||||
push edi ; 100BDA24 _ 57
|
||||
dec ax ; 100BDA25 _ 66: 48
|
||||
push ebp ; 100BDA27 _ 55
|
||||
mov word ptr [esp+12H], ax ; 100BDA28 _ 66: 89. 44 24, 12
|
||||
lea esi, [ecx+4H] ; 100BDA2D _ 8D. 71, 04
|
||||
mov ax, word ptr [ecx+2H] ; 100BDA30 _ 66: 8B. 41, 02
|
||||
dec ax ; 100BDA34 _ 66: 48
|
||||
mov word ptr [esp+10H], ax ; 100BDA36 _ 66: 89. 44 24, 10
|
||||
js ?_25219 ; 100BDA3B _ 78, 78
|
||||
?_25214:xor di, di ; 100BDA3D _ 66: 33. FF
|
||||
mov bl, byte ptr [esi] ; 100BDA40 _ 8A. 1E
|
||||
inc esi ; 100BDA42 _ 46
|
||||
test bl, bl ; 100BDA43 _ 84. DB
|
||||
jz ?_25218 ; 100BDA45 _ 74, 62
|
||||
?_25215:movzx ax, byte ptr [esi] ; 100BDA47 _ 66: 0F B6. 06
|
||||
add di, ax ; 100BDA4B _ 66: 03. F8
|
||||
inc esi ; 100BDA4E _ 46
|
||||
mov al, byte ptr [esi] ; 100BDA4F _ 8A. 06
|
||||
inc esi ; 100BDA51 _ 46
|
||||
test al, al ; 100BDA52 _ 84. C0
|
||||
jge ?_25216 ; 100BDA54 _ 7D, 27
|
||||
mov ecx, esi ; 100BDA56 _ 8B. CE
|
||||
mov edx, dword ptr [esp+1CH] ; 100BDA58 _ 8B. 54 24, 1C
|
||||
neg al ; 100BDA5C _ F6. D8
|
||||
movsx bp, al ; 100BDA5E _ 66: 0F BE. E8
|
||||
inc esi ; 100BDA62 _ 46
|
||||
push ebp ; 100BDA63 _ 55
|
||||
mov al, byte ptr [ecx] ; 100BDA64 _ 8A. 01
|
||||
mov ecx, dword ptr [esp+16H] ; 100BDA66 _ 8B. 4C 24, 16
|
||||
push eax ; 100BDA6A _ 50
|
||||
push ecx ; 100BDA6B _ 51
|
||||
mov eax, dword ptr [esp+24H] ; 100BDA6C _ 8B. 44 24, 24
|
||||
push edi ; 100BDA70 _ 57
|
||||
push edx ; 100BDA71 _ 52
|
||||
push eax ; 100BDA72 _ 50
|
||||
call ?_25173 ; 100BDA73 _ E8, FFFFFC08
|
||||
add esp, 24 ; 100BDA78 _ 83. C4, 18
|
||||
jmp ?_25217 ; 100BDA7B _ EB, 23
|
||||
|
||||
?_25216:mov ecx, dword ptr [esp+1CH] ; 100BDA7D _ 8B. 4C 24, 1C
|
||||
mov edx, dword ptr [esp+18H] ; 100BDA81 _ 8B. 54 24, 18
|
||||
movsx bp, al ; 100BDA85 _ 66: 0F BE. E8
|
||||
mov eax, dword ptr [esp+12H] ; 100BDA89 _ 8B. 44 24, 12
|
||||
push ebp ; 100BDA8D _ 55
|
||||
push esi ; 100BDA8E _ 56
|
||||
push eax ; 100BDA8F _ 50
|
||||
push edi ; 100BDA90 _ 57
|
||||
push ecx ; 100BDA91 _ 51
|
||||
push edx ; 100BDA92 _ 52
|
||||
call ?_25164 ; 100BDA93 _ E8, FFFFFAE8
|
||||
movsx ecx, bp ; 100BDA98 _ 0F BF. CD
|
||||
add esp, 24 ; 100BDA9B _ 83. C4, 18
|
||||
add esi, ecx ; 100BDA9E _ 03. F1
|
||||
?_25217:add di, bp ; 100BDAA0 _ 66: 03. FD
|
||||
dec bl ; 100BDAA3 _ FE. CB
|
||||
test bl, bl ; 100BDAA5 _ 84. DB
|
||||
jnz ?_25215 ; 100BDAA7 _ 75, 9E
|
||||
?_25218:dec word ptr [esp+12H] ; 100BDAA9 _ 66: FF. 4C 24, 12
|
||||
dec word ptr [esp+10H] ; 100BDAAE _ 66: FF. 4C 24, 10
|
||||
jns ?_25214 ; 100BDAB3 _ 79, 88
|
||||
?_25219:pop ebp ; 100BDAB5 _ 5D
|
||||
pop edi ; 100BDAB6 _ 5F
|
||||
pop esi ; 100BDAB7 _ 5E
|
||||
pop ebx ; 100BDAB8 _ 5B
|
||||
add esp, 4 ; 100BDAB9 _ 83. C4, 04
|
||||
ret ; 100BDABC _ C3
|
||||
|
||||
; Filling space: 3H
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25220 LABEL NEAR
|
||||
mov edx, dword ptr [esp+10H] ; 100BDAC0 _ 8B. 54 24, 10
|
||||
sub esp, 8 ; 100BDAC4 _ 83. EC, 08
|
||||
mov ax, word ptr [edx+8H] ; 100BDAC7 _ 66: 8B. 42, 08
|
||||
push ebx ; 100BDACB _ 53
|
||||
dec ax ; 100BDACC _ 66: 48
|
||||
push esi ; 100BDACE _ 56
|
||||
mov word ptr [esp+8H], ax ; 100BDACF _ 66: 89. 44 24, 08
|
||||
push edi ; 100BDAD4 _ 57
|
||||
mov si, word ptr [edx+0AH] ; 100BDAD5 _ 66: 8B. 72, 0A
|
||||
push ebp ; 100BDAD9 _ 55
|
||||
dec si ; 100BDADA _ 66: 4E
|
||||
mov ecx, dword ptr [esp+24H] ; 100BDADC _ 8B. 4C 24, 24
|
||||
mov bx, word ptr [ecx] ; 100BDAE0 _ 66: 8B. 19
|
||||
add ecx, 2 ; 100BDAE3 _ 83. C1, 02
|
||||
mov word ptr [esp+12H], bx ; 100BDAE6 _ 66: 89. 5C 24, 12
|
||||
mov dword ptr [esp+14H], ecx ; 100BDAEB _ 89. 4C 24, 14
|
||||
?_25221:mov eax, dword ptr [esp+14H] ; 100BDAEF _ 8B. 44 24, 14
|
||||
mov bx, word ptr [eax] ; 100BDAF3 _ 66: 8B. 18
|
||||
add dword ptr [esp+14H], 2 ; 100BDAF6 _ 83. 44 24, 14, 02
|
||||
test bx, bx ; 100BDAFB _ 66: 85. DB
|
||||
jge ?_25223 ; 100BDAFE _ 7D, 49
|
||||
test bh, 40H ; 100BDB00 _ F6. C7, 40
|
||||
jz ?_25222 ; 100BDB03 _ 74, 05
|
||||
add si, bx ; 100BDB05 _ 66: 03. F3
|
||||
jmp ?_25221 ; 100BDB08 _ EB, E5
|
||||
|
||||
?_25222:mov eax, dword ptr [esp+10H] ; 100BDB0A _ 8B. 44 24, 10
|
||||
push ebx ; 100BDB0E _ 53
|
||||
mov ecx, dword ptr [esp+24H] ; 100BDB0F _ 8B. 4C 24, 24
|
||||
push esi ; 100BDB13 _ 56
|
||||
mov edx, dword ptr [esp+24H] ; 100BDB14 _ 8B. 54 24, 24
|
||||
push eax ; 100BDB18 _ 50
|
||||
push ecx ; 100BDB19 _ 51
|
||||
push edx ; 100BDB1A _ 52
|
||||
call ?_25162 ; 100BDB1B _ E8, FFFFFA10
|
||||
mov ecx, dword ptr [esp+28H] ; 100BDB20 _ 8B. 4C 24, 28
|
||||
add esp, 20 ; 100BDB24 _ 83. C4, 14
|
||||
mov bx, word ptr [ecx] ; 100BDB27 _ 66: 8B. 19
|
||||
add dword ptr [esp+14H], 2 ; 100BDB2A _ 83. 44 24, 14, 02
|
||||
test bx, bx ; 100BDB2F _ 66: 85. DB
|
||||
jnz ?_25223 ; 100BDB32 _ 75, 15
|
||||
dec si ; 100BDB34 _ 66: 4E
|
||||
dec word ptr [esp+12H] ; 100BDB36 _ 66: FF. 4C 24, 12
|
||||
cmp word ptr [esp+12H], 0 ; 100BDB3B _ 66: 83. 7C 24, 12, 00
|
||||
jle ?_25226 ; 100BDB41 _ 0F 8E, 000000AE
|
||||
jmp ?_25221 ; 100BDB47 _ EB, A6
|
||||
|
||||
?_25223:xor di, di ; 100BDB49 _ 66: 33. FF
|
||||
?_25224:mov ecx, dword ptr [esp+14H] ; 100BDB4C _ 8B. 4C 24, 14
|
||||
movzx ax, byte ptr [ecx] ; 100BDB50 _ 66: 0F B6. 01
|
||||
add di, ax ; 100BDB54 _ 66: 03. F8
|
||||
inc dword ptr [esp+14H] ; 100BDB57 _ FF. 44 24, 14
|
||||
mov ecx, dword ptr [esp+14H] ; 100BDB5B _ 8B. 4C 24, 14
|
||||
movsx bp, byte ptr [ecx] ; 100BDB5F _ 66: 0F BE. 29
|
||||
add bp, bp ; 100BDB63 _ 66: 03. ED
|
||||
inc dword ptr [esp+14H] ; 100BDB66 _ FF. 44 24, 14
|
||||
test bp, bp ; 100BDB6A _ 66: 85. ED
|
||||
jl ?_25225 ; 100BDB6D _ 7C, 3C
|
||||
mov eax, dword ptr [esp+14H] ; 100BDB6F _ 8B. 44 24, 14
|
||||
push ebp ; 100BDB73 _ 55
|
||||
mov ecx, dword ptr [esp+24H] ; 100BDB74 _ 8B. 4C 24, 24
|
||||
push eax ; 100BDB78 _ 50
|
||||
mov edx, dword ptr [esp+24H] ; 100BDB79 _ 8B. 54 24, 24
|
||||
push esi ; 100BDB7D _ 56
|
||||
push edi ; 100BDB7E _ 57
|
||||
push ecx ; 100BDB7F _ 51
|
||||
add di, bp ; 100BDB80 _ 66: 03. FD
|
||||
push edx ; 100BDB83 _ 52
|
||||
call ?_25164 ; 100BDB84 _ E8, FFFFF9F7
|
||||
movsx ecx, bp ; 100BDB89 _ 0F BF. CD
|
||||
add dword ptr [esp+2CH], ecx ; 100BDB8C _ 01. 4C 24, 2C
|
||||
add esp, 24 ; 100BDB90 _ 83. C4, 18
|
||||
dec bx ; 100BDB93 _ 66: 4B
|
||||
jnz ?_25224 ; 100BDB95 _ 75, B5
|
||||
dec si ; 100BDB97 _ 66: 4E
|
||||
dec word ptr [esp+12H] ; 100BDB99 _ 66: FF. 4C 24, 12
|
||||
cmp word ptr [esp+12H], 0 ; 100BDB9E _ 66: 83. 7C 24, 12, 00
|
||||
jle ?_25226 ; 100BDBA4 _ 7E, 4F
|
||||
jmp ?_25221 ; 100BDBA6 _ E9, FFFFFF44
|
||||
|
||||
?_25225:mov eax, dword ptr [esp+14H] ; 100BDBAB _ 8B. 44 24, 14
|
||||
mov edx, dword ptr [esp+20H] ; 100BDBAF _ 8B. 54 24, 20
|
||||
neg bp ; 100BDBB3 _ 66: F7. DD
|
||||
add dword ptr [esp+14H], 2 ; 100BDBB6 _ 83. 44 24, 14, 02
|
||||
mov cx, bp ; 100BDBBB _ 66: 8B. CD
|
||||
sar cx, 1 ; 100BDBBE _ 66: C1. F9, 01
|
||||
mov ax, word ptr [eax] ; 100BDBC2 _ 66: 8B. 00
|
||||
push ecx ; 100BDBC5 _ 51
|
||||
mov ecx, dword ptr [esp+20H] ; 100BDBC6 _ 8B. 4C 24, 20
|
||||
push eax ; 100BDBCA _ 50
|
||||
push esi ; 100BDBCB _ 56
|
||||
push edi ; 100BDBCC _ 57
|
||||
add di, bp ; 100BDBCD _ 66: 03. FD
|
||||
push edx ; 100BDBD0 _ 52
|
||||
push ecx ; 100BDBD1 _ 51
|
||||
call ?_25176 ; 100BDBD2 _ E8, FFFFFB09
|
||||
add esp, 24 ; 100BDBD7 _ 83. C4, 18
|
||||
dec bx ; 100BDBDA _ 66: 4B
|
||||
jne ?_25224 ; 100BDBDC _ 0F 85, FFFFFF6A
|
||||
dec si ; 100BDBE2 _ 66: 4E
|
||||
dec word ptr [esp+12H] ; 100BDBE4 _ 66: FF. 4C 24, 12
|
||||
cmp word ptr [esp+12H], 0 ; 100BDBE9 _ 66: 83. 7C 24, 12, 00
|
||||
jg ?_25221 ; 100BDBEF _ 0F 8F, FFFFFEFA
|
||||
?_25226:pop ebp ; 100BDBF5 _ 5D
|
||||
pop edi ; 100BDBF6 _ 5F
|
||||
pop esi ; 100BDBF7 _ 5E
|
||||
pop ebx ; 100BDBF8 _ 5B
|
||||
add esp, 8 ; 100BDBF9 _ 83. C4, 08
|
||||
ret ; 100BDBFC _ C3
|
||||
|
||||
; Filling space: 3H
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25227 LABEL NEAR
|
||||
mov eax, dword ptr [esp+10H] ; 100BDC00 _ 8B. 44 24, 10
|
||||
sub esp, 8 ; 100BDC04 _ 83. EC, 08
|
||||
mov cx, word ptr [eax+8H] ; 100BDC07 _ 66: 8B. 48, 08
|
||||
push ebx ; 100BDC0B _ 53
|
||||
mov word ptr [esp+6H], cx ; 100BDC0C _ 66: 89. 4C 24, 06
|
||||
push esi ; 100BDC11 _ 56
|
||||
push edi ; 100BDC12 _ 57
|
||||
xor ecx, ecx ; 100BDC13 _ 33. C9
|
||||
mov byte ptr [esp+0DH], cl ; 100BDC15 _ 88. 4C 24, 0D
|
||||
push ebp ; 100BDC19 _ 55
|
||||
mov bp, word ptr [eax+0AH] ; 100BDC1A _ 66: 8B. 68, 0A
|
||||
mov byte ptr [esp+10H], cl ; 100BDC1E _ 88. 4C 24, 10
|
||||
dec bp ; 100BDC22 _ 66: 4D
|
||||
js ?_25230 ; 100BDC24 _ 78, 56
|
||||
movsx eax, word ptr [esp+12H] ; 100BDC26 _ 0F BF. 44 24, 12
|
||||
mov si, word ptr [esp+12H] ; 100BDC2B _ 66: 8B. 74 24, 12
|
||||
mov edi, dword ptr [esp+1CH] ; 100BDC30 _ 8B. 7C 24, 1C
|
||||
cdq ; 100BDC34 _ 99
|
||||
and si, 01H ; 100BDC35 _ 66: 83. E6, 01
|
||||
sub eax, edx ; 100BDC39 _ 2B. C2
|
||||
sar eax, 1 ; 100BDC3B _ C1. F8, 01
|
||||
mov ebx, dword ptr [esp+20H] ; 100BDC3E _ 8B. 5C 24, 20
|
||||
mov word ptr [esp+14H], ax ; 100BDC42 _ 66: 89. 44 24, 14
|
||||
?_25228:mov eax, dword ptr [esp+14H] ; 100BDC47 _ 8B. 44 24, 14
|
||||
mov ecx, dword ptr [esp+10H] ; 100BDC4B _ 8B. 4C 24, 10
|
||||
push eax ; 100BDC4F _ 50
|
||||
push ecx ; 100BDC50 _ 51
|
||||
push ebp ; 100BDC51 _ 55
|
||||
push 0 ; 100BDC52 _ 6A, 00
|
||||
push ebx ; 100BDC54 _ 53
|
||||
push edi ; 100BDC55 _ 57
|
||||
call ?_25176 ; 100BDC56 _ E8, FFFFFA85
|
||||
add esp, 24 ; 100BDC5B _ 83. C4, 18
|
||||
test si, si ; 100BDC5E _ 66: 85. F6
|
||||
jz ?_25229 ; 100BDC61 _ 74, 15
|
||||
mov ax, word ptr [esp+12H] ; 100BDC63 _ 66: 8B. 44 24, 12
|
||||
push 0 ; 100BDC68 _ 6A, 00
|
||||
dec ax ; 100BDC6A _ 66: 48
|
||||
push ebp ; 100BDC6C _ 55
|
||||
push eax ; 100BDC6D _ 50
|
||||
push ebx ; 100BDC6E _ 53
|
||||
push edi ; 100BDC6F _ 57
|
||||
call ?_25162 ; 100BDC70 _ E8, FFFFF8BB
|
||||
add esp, 20 ; 100BDC75 _ 83. C4, 14
|
||||
?_25229:dec bp ; 100BDC78 _ 66: 4D
|
||||
jns ?_25228 ; 100BDC7A _ 79, CB
|
||||
?_25230:pop ebp ; 100BDC7C _ 5D
|
||||
pop edi ; 100BDC7D _ 5F
|
||||
pop esi ; 100BDC7E _ 5E
|
||||
pop ebx ; 100BDC7F _ 5B
|
||||
add esp, 8 ; 100BDC80 _ 83. C4, 08
|
||||
ret ; 100BDC83 _ C3
|
||||
|
||||
; Filling space: 0CH
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
?_25231 LABEL NEAR
|
||||
mov eax, dword ptr [esp+10H] ; 100BDC90 _ 8B. 44 24, 10
|
||||
sub esp, 4 ; 100BDC94 _ 83. EC, 04
|
||||
push ebx ; 100BDC97 _ 53
|
||||
push esi ; 100BDC98 _ 56
|
||||
mov bx, word ptr [eax+0AH] ; 100BDC99 _ 66: 8B. 58, 0A
|
||||
push edi ; 100BDC9D _ 57
|
||||
mov di, word ptr [eax+8H] ; 100BDC9E _ 66: 8B. 78, 08
|
||||
push ebp ; 100BDCA2 _ 55
|
||||
dec bx ; 100BDCA3 _ 66: 4B
|
||||
js ?_25233 ; 100BDCA5 _ 78, 2A
|
||||
mov esi, dword ptr [esp+18H] ; 100BDCA7 _ 8B. 74 24, 18
|
||||
mov ebp, dword ptr [esp+20H] ; 100BDCAB _ 8B. 6C 24, 20
|
||||
movsx eax, di ; 100BDCAF _ 0F BF. C7
|
||||
mov dword ptr [esp+10H], eax ; 100BDCB2 _ 89. 44 24, 10
|
||||
?_25232:mov eax, dword ptr [esp+1CH] ; 100BDCB6 _ 8B. 44 24, 1C
|
||||
push edi ; 100BDCBA _ 57
|
||||
push ebp ; 100BDCBB _ 55
|
||||
push ebx ; 100BDCBC _ 53
|
||||
push 0 ; 100BDCBD _ 6A, 00
|
||||
push eax ; 100BDCBF _ 50
|
||||
push esi ; 100BDCC0 _ 56
|
||||
call ?_25164 ; 100BDCC1 _ E8, FFFFF8BA
|
||||
add ebp, dword ptr [esp+28H] ; 100BDCC6 _ 03. 6C 24, 28
|
||||
add esp, 24 ; 100BDCCA _ 83. C4, 18
|
||||
dec bx ; 100BDCCD _ 66: 4B
|
||||
jns ?_25232 ; 100BDCCF _ 79, E5
|
||||
?_25233:pop ebp ; 100BDCD1 _ 5D
|
||||
pop edi ; 100BDCD2 _ 5F
|
||||
pop esi ; 100BDCD3 _ 5E
|
||||
pop ebx ; 100BDCD4 _ 5B
|
||||
add esp, 4 ; 100BDCD5 _ 83. C4, 04
|
||||
ret ; 100BDCD8 _ C3
|
||||
|
||||
; Filling space: 7H
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
|
||||
|
||||
DecodeFLCFrame LABEL NEAR
|
||||
mov ecx, dword ptr [esp+10H] ; 100BDCE0 _ 8B. 4C 24, 10
|
||||
; Note: Length-changing prefix causes delay on Intel processors
|
||||
cmp word ptr [ecx+4H], -3590 ; 100BDCE4 _ 66: 81. 79, 04, F1FA
|
||||
jnz ?_25235 ; 100BDCEA _ 75, 21
|
||||
mov eax, dword ptr [esp+14H] ; 100BDCEC _ 8B. 44 24, 14
|
||||
lea edx, [ecx+10H] ; 100BDCF0 _ 8D. 51, 10
|
||||
push eax ; 100BDCF3 _ 50
|
||||
push edx ; 100BDCF4 _ 52
|
||||
mov eax, dword ptr [esp+10H] ; 100BDCF5 _ 8B. 44 24, 10
|
||||
push ecx ; 100BDCF9 _ 51
|
||||
mov ecx, dword ptr [esp+18H] ; 100BDCFA _ 8B. 4C 24, 18
|
||||
mov edx, dword ptr [esp+10H] ; 100BDCFE _ 8B. 54 24, 10
|
||||
push ecx ; 100BDD02 _ 51
|
||||
push eax ; 100BDD03 _ 50
|
||||
push edx ; 100BDD04 _ 52
|
||||
call ?_25180 ; 100BDD05 _ E8, FFFFFA56
|
||||
add esp, 24 ; 100BDD0A _ 83. C4, 18
|
||||
?_25235:ret ; 100BDD0D _ C3
|
||||
|
||||
; Filling space: 2H
|
||||
; Filler type: INT 3 Debug breakpoint
|
||||
db 0CCH, 0CCH
|
||||
|
||||
EndOfSection LABEL NEAR
|
||||
|
||||
.text ENDS
|
||||
|
||||
END
|
||||
61
3rdparty/flic/flic.h
vendored
61
3rdparty/flic/flic.h
vendored
@ -6,31 +6,42 @@
|
||||
// A basic FLIC header structure from the "EGI" documentation. Source: https://www.compuphase.com/flic.htm#FLICHEADER
|
||||
// This also goes over the FLIC structures: https://github.com/thinkbeforecoding/nomemalloc.handson/blob/master/flic.txt
|
||||
typedef struct {
|
||||
DWORD size; /* Size of FLIC including this header */
|
||||
WORD type; /* File type 0xAF11, 0xAF12, 0xAF30, 0xAF44, ... */
|
||||
WORD frames; /* Number of frames in first segment */
|
||||
WORD width; /* FLIC width in pixels */
|
||||
WORD height; /* FLIC height in pixels */
|
||||
WORD depth; /* Bits per pixel (usually 8) */
|
||||
WORD flags; /* Set to zero or to three */
|
||||
DWORD speed; /* Delay between frames */
|
||||
WORD reserved1; /* Set to zero */
|
||||
DWORD created; /* Date of FLIC creation (FLC only) */
|
||||
DWORD creator; /* Serial number or compiler id (FLC only) */
|
||||
DWORD updated; /* Date of FLIC update (FLC only) */
|
||||
DWORD updater; /* Serial number (FLC only), see creator */
|
||||
WORD aspect_dx; /* Width of square rectangle (FLC only) */
|
||||
WORD aspect_dy; /* Height of square rectangle (FLC only) */
|
||||
WORD ext_flags; /* EGI: flags for specific EGI extensions */
|
||||
WORD keyframes; /* EGI: key-image frequency */
|
||||
WORD totalframes; /* EGI: total number of frames (segments) */
|
||||
DWORD req_memory; /* EGI: maximum chunk size (uncompressed) */
|
||||
WORD max_regions; /* EGI: max. number of regions in a CHK_REGION chunk */
|
||||
WORD transp_num; /* EGI: number of transparent levels */
|
||||
BYTE reserved2[24]; /* Set to zero */
|
||||
DWORD oframe1; /* Offset to frame 1 (FLC only) */
|
||||
DWORD oframe2; /* Offset to frame 2 (FLC only) */
|
||||
BYTE reserved3[40]; /* Set to zero */
|
||||
DWORD size; /* Size of FLIC including this header */
|
||||
WORD type; /* File type 0xAF11, 0xAF12, 0xAF30, 0xAF44, ... */
|
||||
WORD frames; /* Number of frames in first segment */
|
||||
WORD width; /* FLIC width in pixels */
|
||||
WORD height; /* FLIC height in pixels */
|
||||
WORD depth; /* Bits per pixel (usually 8) */
|
||||
WORD flags; /* Set to zero or to three */
|
||||
DWORD speed; /* Delay between frames */
|
||||
WORD reserved1; /* Set to zero */
|
||||
DWORD created; /* Date of FLIC creation (FLC only) */
|
||||
DWORD creator; /* Serial number or compiler id (FLC only) */
|
||||
DWORD updated; /* Date of FLIC update (FLC only) */
|
||||
DWORD updater; /* Serial number (FLC only), see creator */
|
||||
WORD aspect_dx; /* Width of square rectangle (FLC only) */
|
||||
WORD aspect_dy; /* Height of square rectangle (FLC only) */
|
||||
WORD ext_flags; /* EGI: flags for specific EGI extensions */
|
||||
WORD keyframes; /* EGI: key-image frequency */
|
||||
WORD totalframes; /* EGI: total number of frames (segments) */
|
||||
DWORD req_memory; /* EGI: maximum chunk size (uncompressed) */
|
||||
WORD max_regions; /* EGI: max. number of regions in a CHK_REGION chunk */
|
||||
WORD transp_num; /* EGI: number of transparent levels */
|
||||
BYTE reserved2[24]; /* Set to zero */
|
||||
DWORD oframe1; /* Offset to frame 1 (FLC only) */
|
||||
DWORD oframe2; /* Offset to frame 2 (FLC only) */
|
||||
BYTE reserved3[40]; /* Set to zero */
|
||||
} FLIC_HEADER;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
void DecodeFLCFrame(
|
||||
LPBITMAPINFOHEADER bitmapHeader,
|
||||
void* pixelData,
|
||||
FLIC_HEADER* flcHeader,
|
||||
void* flcFrame,
|
||||
unsigned char* decodedColorMap
|
||||
);
|
||||
}
|
||||
|
||||
#endif // FLIC_H
|
||||
|
||||
BIN
3rdparty/flic/flic.lib
vendored
Normal file
BIN
3rdparty/flic/flic.lib
vendored
Normal file
Binary file not shown.
@ -2,8 +2,24 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
|
||||
|
||||
project(isle CXX)
|
||||
|
||||
math(EXPR bits "8 * ${CMAKE_SIZEOF_VOID_P}")
|
||||
message(STATUS "Building ${bits}-bit LEGO Island")
|
||||
if (NOT bits EQUAL 32)
|
||||
message(WARNING "Only 32-bit executables are supported")
|
||||
endif()
|
||||
|
||||
set(MSVC_FOR_DECOMP FALSE)
|
||||
if (MSVC)
|
||||
# Visual C++ 4.2 -> cl version 10.2.0
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11.0")
|
||||
set(MSVC_FOR_DECOMP TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}")
|
||||
|
||||
option(ISLE_BUILD_APP "Build ISLE.EXE application" ON)
|
||||
option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC})
|
||||
option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP})
|
||||
option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON)
|
||||
|
||||
add_library(lego1 SHARED
|
||||
@ -42,7 +58,9 @@ add_library(lego1 SHARED
|
||||
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/legoentity.cpp
|
||||
@ -81,7 +99,7 @@ add_library(lego1 SHARED
|
||||
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/motorcycle.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
|
||||
@ -123,8 +141,11 @@ add_library(lego1 SHARED
|
||||
LEGO1/lego/sources/3dmanager/legoview1.cpp
|
||||
LEGO1/lego/sources/3dmanager/tglsurface.cpp
|
||||
LEGO1/lego/sources/roi/legoroi.cpp
|
||||
LEGO1/main.cpp
|
||||
LEGO1/mxdirectx/mxdirect3d.cpp
|
||||
LEGO1/mxdirectx/mxdirectdraw.cpp
|
||||
LEGO1/mxgeometry/mxgeometry3d.cpp
|
||||
LEGO1/mxgeometry/mxmatrix.cpp
|
||||
LEGO1/omni/src/action/mxdsaction.cpp
|
||||
LEGO1/omni/src/action/mxdsanim.cpp
|
||||
LEGO1/omni/src/action/mxdsevent.cpp
|
||||
@ -161,11 +182,9 @@ add_library(lego1 SHARED
|
||||
LEGO1/omni/src/common/mxutil.cpp
|
||||
LEGO1/omni/src/common/mxvariable.cpp
|
||||
LEGO1/omni/src/common/mxvariabletable.cpp
|
||||
LEGO1/omni/src/control/mxcontrolpresenter.cpp
|
||||
LEGO1/omni/src/entity/mxentity.cpp
|
||||
LEGO1/omni/src/event/mxeventmanager.cpp
|
||||
LEGO1/omni/src/event/mxeventpresenter.cpp
|
||||
LEGO1/omni/src/main/mxmain.cpp
|
||||
LEGO1/omni/src/main/mxomni.cpp
|
||||
LEGO1/omni/src/main/mxomnicreateflags.cpp
|
||||
LEGO1/omni/src/main/mxomnicreateparam.cpp
|
||||
@ -259,9 +278,10 @@ if (ISLE_USE_DX5)
|
||||
endif()
|
||||
|
||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
|
||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
|
||||
|
||||
# Link libraries
|
||||
target_link_libraries(lego1 PRIVATE ddraw dsound dinput dxguid winmm d3drm smack)
|
||||
target_link_libraries(lego1 PRIVATE ddraw dsound dinput dxguid winmm d3drm smack flic)
|
||||
|
||||
# Make sure filenames are ALL CAPS
|
||||
set_property(TARGET lego1 PROPERTY OUTPUT_NAME LEGO1)
|
||||
@ -275,6 +295,8 @@ if (ISLE_BUILD_APP)
|
||||
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")
|
||||
@ -300,6 +322,29 @@ if (ISLE_BUILD_APP)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15")
|
||||
target_compile_definitions(lego1 PRIVATE _CRT_SECURE_NO_WARNINGS)
|
||||
if (ISLE_BUILD_APP)
|
||||
target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS")
|
||||
endif()
|
||||
endif()
|
||||
# Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428")
|
||||
target_compile_options(lego1 PRIVATE "-Zc:__cplusplus")
|
||||
if (ISLE_BUILD_APP)
|
||||
target_compile_options(isle PRIVATE "-Zc:__cplusplus")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (MSVC_FOR_DECOMP)
|
||||
target_compile_definitions(lego1 PRIVATE "ENABLE_DECOMP_ASSERTS")
|
||||
if (ISLE_BUILD_APP)
|
||||
target_compile_definitions(isle PRIVATE "ENABLE_DECOMP_ASSERTS")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (MSVC_FOR_DECOMP)
|
||||
# These flags have been taken from the defaults for a Visual C++ 4.20 project (the compiler the
|
||||
# game was originally built with) and tweaked slightly to produce more debugging info for reccmp.
|
||||
# They ensure a recompilation that can be byte/instruction accurate to the original binaries.
|
||||
|
||||
@ -614,8 +614,8 @@ MxResult IsleApp::SetupWindow(HINSTANCE hInstance, LPSTR lpCmdLine)
|
||||
LegoAnimationManager::configureLegoAnimationManager(m_islandQuality);
|
||||
if (LegoOmni::GetInstance()) {
|
||||
if (LegoOmni::GetInstance()->GetInputManager()) {
|
||||
LegoOmni::GetInstance()->GetInputManager()->m_useJoystick = m_useJoystick;
|
||||
LegoOmni::GetInstance()->GetInputManager()->m_joystickIndex = m_joystickIndex;
|
||||
LegoOmni::GetInstance()->GetInputManager()->SetUseJoystick(m_useJoystick);
|
||||
LegoOmni::GetInstance()->GetInputManager()->SetJoystickIndex(m_joystickIndex);
|
||||
}
|
||||
}
|
||||
if (m_fullScreen) {
|
||||
@ -792,11 +792,11 @@ inline void IsleApp::Tick(BOOL sleepIfNotNextFrame)
|
||||
LegoOmni::GetInstance()->CreateBackgroundAudio();
|
||||
BackgroundAudioManager()->Enable(this->m_useMusic);
|
||||
|
||||
MxStreamController* stream = Streamer()->Open("\\lego\\scripts\\isle\\isle", MxStreamer::e_DiskStream);
|
||||
MxStreamController* stream = Streamer()->Open("\\lego\\scripts\\isle\\isle", MxStreamer::e_diskStream);
|
||||
MxDSAction ds;
|
||||
|
||||
if (!stream) {
|
||||
stream = Streamer()->Open("\\lego\\scripts\\nocd", MxStreamer::e_DiskStream);
|
||||
stream = Streamer()->Open("\\lego\\scripts\\nocd", MxStreamer::e_diskStream);
|
||||
if (!stream) {
|
||||
return;
|
||||
}
|
||||
|
||||
63
ISLE/library_msvc.h
Normal file
63
ISLE/library_msvc.h
Normal file
@ -0,0 +1,63 @@
|
||||
#ifdef 0
|
||||
// For ISLE symbols only
|
||||
|
||||
// aka `operator new`
|
||||
// LIBRARY: ISLE 0x402f80
|
||||
// ??2@YAPAXI@Z
|
||||
|
||||
// aka `operator delete`
|
||||
// LIBRARY: ISLE 0x402fa0
|
||||
// ??3@YAXPAX@Z
|
||||
|
||||
// LIBRARY: ISLE 0x406dd0
|
||||
// _malloc
|
||||
|
||||
// LIBRARY: ISLE 0x406f00
|
||||
// _free
|
||||
|
||||
// LIBRARY: ISLE 0x407ec0
|
||||
// ___CxxFrameHandler
|
||||
|
||||
// LIBRARY: ISLE 0x4081e0
|
||||
// _srand
|
||||
|
||||
// LIBRARY: ISLE 0x4081f0
|
||||
// _rand
|
||||
|
||||
// LIBRARY: ISLE 0x408220
|
||||
// _atol
|
||||
|
||||
// LIBRARY: ISLE 0x4082d0
|
||||
// _atoi
|
||||
|
||||
// LIBRARY: ISLE 0x4084c0
|
||||
// ?_query_new_handler@@YAP6AHI@ZXZ
|
||||
|
||||
// LIBRARY: ISLE 0x4084d0
|
||||
// ?_query_new_mode@@YAHXZ
|
||||
|
||||
// LIBRARY: ISLE 0x4085c0
|
||||
// _sprintf
|
||||
|
||||
// LIBRARY: ISLE 0x408630
|
||||
// _abort
|
||||
|
||||
// LIBRARY: ISLE 0x409110
|
||||
// __mtinit
|
||||
|
||||
// LIBRARY: ISLE 0x409190
|
||||
// __getptd
|
||||
|
||||
// GLOBAL: ISLE 0x4108e8
|
||||
// __osver
|
||||
|
||||
// GLOBAL: ISLE 0x4108f0
|
||||
// __winmajor
|
||||
|
||||
// GLOBAL: ISLE 0x4108f4
|
||||
// __winminor
|
||||
|
||||
// GLOBAL: ISLE 0x410d50
|
||||
// __newmode
|
||||
|
||||
#endif
|
||||
312
ISLE/library_smartheap.h
Normal file
312
ISLE/library_smartheap.h
Normal file
@ -0,0 +1,312 @@
|
||||
#ifdef 0
|
||||
|
||||
// LIBRARY: ISLE 0x402f10
|
||||
// ?shi_New@@YAPAXKIPAU_SHI_Pool@@@Z
|
||||
|
||||
// LIBRARY: ISLE 0x402fb0
|
||||
// _MemInitDefaultPool@0
|
||||
|
||||
// LIBRARY: ISLE 0x403020
|
||||
// _shi_call_new_handler_msc
|
||||
|
||||
// LIBRARY: ISLE 0x403050
|
||||
// _MemPoolShrink@4
|
||||
|
||||
// LIBRARY: ISLE 0x403180
|
||||
// _MemPoolPreAllocate@12
|
||||
|
||||
// LIBRARY: ISLE 0x403300
|
||||
// @_shi_initPageHeaders@4
|
||||
|
||||
// LIBRARY: ISLE 0x403570
|
||||
// @shi_allocPageHeader@4
|
||||
|
||||
// LIBRARY: ISLE 0x4035a0
|
||||
// @shi_freePageHeader@8
|
||||
|
||||
// LIBRARY: ISLE 0x403750
|
||||
// @_shi_deletePage@8
|
||||
|
||||
// LIBRARY: ISLE 0x403830
|
||||
// @_shi_allocExternal@12
|
||||
|
||||
// LIBRARY: ISLE 0x403a50
|
||||
// @_shi_initPageVariable@8
|
||||
|
||||
// LIBRARY: ISLE 0x403b00
|
||||
// _MemAllocPtr@12
|
||||
|
||||
// LIBRARY: ISLE 0x403d60
|
||||
// @_shi_allocVar@12
|
||||
|
||||
// LIBRARY: ISLE 0x403ef0
|
||||
// @_shi_allocBlock@12
|
||||
|
||||
// LIBRARY: ISLE 0x4040c0
|
||||
// _MemFreePtr@4
|
||||
|
||||
// LIBRARY: ISLE 0x404170
|
||||
// @_shi_freeVar@4
|
||||
|
||||
// LIBRARY: ISLE 0x404260
|
||||
// _MemReAllocPtr@12
|
||||
|
||||
// LIBRARY: ISLE 0x4043b0
|
||||
// @_shi_resizeAny@16
|
||||
|
||||
// LIBRARY: ISLE 0x404650
|
||||
// @_shi_resizeVar@8
|
||||
|
||||
// LIBRARY: ISLE 0x404820
|
||||
// _MemSizePtr@4
|
||||
|
||||
// LIBRARY: ISLE 0x4048d0
|
||||
// @shi_findAllocAddress@4
|
||||
|
||||
// LIBRARY: ISLE 0x404910
|
||||
// @_shi_sysAlloc@8
|
||||
|
||||
// LIBRARY: ISLE 0x4049a0
|
||||
// @_shi_sysFree@4
|
||||
|
||||
// LIBRARY: ISLE 0x404a00
|
||||
// @_shi_sysRealloc@12
|
||||
|
||||
// LIBRARY: ISLE 0x404ab0
|
||||
// @_shi_sysResize@12
|
||||
|
||||
// LIBRARY: ISLE 0x404b90
|
||||
// @_shi_sysSize@4
|
||||
|
||||
// LIBRARY: ISLE 0x404bd0
|
||||
// @_shi_sysAllocNear@4
|
||||
|
||||
// LIBRARY: ISLE 0x404bf0
|
||||
// @_shi_sysFreeNear@4
|
||||
|
||||
// LIBRARY: ISLE 0x404c10
|
||||
// @_shi_sysValidatePtr@12
|
||||
|
||||
// LIBRARY: ISLE 0x404d10
|
||||
// @_shi_sysValidateFunction@4
|
||||
|
||||
// LIBRARY: ISLE 0x405300
|
||||
// @_shi_sysAllocPool@12
|
||||
|
||||
// LIBRARY: ISLE 0x405520
|
||||
// @_shi_sysResizePool@16
|
||||
|
||||
// LIBRARY: ISLE 0x405690
|
||||
// @_shi_sysFreePage@4
|
||||
|
||||
// LIBRARY: ISLE 0x4057b0
|
||||
// @_shi_sysSizePage@4
|
||||
|
||||
// LIBRARY: ISLE 0x4057e0
|
||||
// @_shi_sysSizePool@8
|
||||
|
||||
// LIBRARY: ISLE 0x405800
|
||||
// @_shi_registerShared@16
|
||||
|
||||
// LIBRARY: ISLE 0x405a00
|
||||
// @_shi_unregisterShared@8
|
||||
|
||||
// LIBRARY: ISLE 0x405b20
|
||||
// @_shi_getNextPool@4
|
||||
|
||||
// LIBRARY: ISLE 0x405b30
|
||||
// @shi_delNextPool@4
|
||||
|
||||
// LIBRARY: ISLE 0x405d30
|
||||
// @shi_createAndEnterMutexShr@12
|
||||
|
||||
// LIBRARY: ISLE 0x405e20
|
||||
// @shi_termPoolMutexShr@4
|
||||
|
||||
// LIBRARY: ISLE 0x405e40
|
||||
// @shi_enterPoolMutexShr@4
|
||||
|
||||
// LIBRARY: ISLE 0x405e60
|
||||
// @shi_leavePoolMutexShr@4
|
||||
|
||||
// LIBRARY: ISLE 0x405e80
|
||||
// __shi_enterCriticalSection@0
|
||||
|
||||
// LIBRARY: ISLE 0x405ea0
|
||||
// __shi_leaveCriticalSection@0
|
||||
|
||||
// LIBRARY: ISLE 0x405ec0
|
||||
// __shi_createAndEnterMutex
|
||||
|
||||
// LIBRARY: ISLE 0x405ef0
|
||||
// _shi_enterPoolMutexSafely
|
||||
|
||||
// LIBRARY: ISLE 0x405fd0
|
||||
// _shi_enterPoolInitMutexReader
|
||||
|
||||
// LIBRARY: ISLE 0x406060
|
||||
// _shi_leavePoolInitMutexReader
|
||||
|
||||
// LIBRARY: ISLE 0x406090
|
||||
// _shi_enterPoolInitMutexWriter
|
||||
|
||||
// LIBRARY: ISLE 0x406160
|
||||
// _shi_leavePoolInitMutexWriter
|
||||
|
||||
// LIBRARY: ISLE 0x406180
|
||||
// _shi_isNT
|
||||
|
||||
// LIBRARY: ISLE 0x4061b0
|
||||
// _MemPoolInit@4
|
||||
|
||||
// LIBRARY: ISLE 0x406520
|
||||
// _MemPoolSetPageSize@8
|
||||
|
||||
// LIBRARY: ISLE 0x406630
|
||||
// _MemPoolSetBlockSizeFS@8
|
||||
|
||||
// LIBRARY: ISLE 0x406710
|
||||
// @_shi_poolFree@8
|
||||
|
||||
// LIBRARY: ISLE 0x4068c0
|
||||
// @_shi_invokeErrorHandler1@8
|
||||
|
||||
// LIBRARY: ISLE 0x406be0
|
||||
// _MemErrorUnwind@0
|
||||
|
||||
// LIBRARY: ISLE 0x406c30
|
||||
// _MemDefaultErrorHandler@4
|
||||
|
||||
// LIBRARY: ISLE 0x406cb0
|
||||
// @_shi_taskRemovePool@4
|
||||
|
||||
// LIBRARY: ISLE 0x406d50
|
||||
// @_shi_getCurrentThreadContext@8
|
||||
|
||||
// LIBRARY: ISLE 0x406db0
|
||||
// @_shi_deleteThreadContext@8
|
||||
|
||||
// LIBRARY: ISLE 0x406e40
|
||||
// _calloc
|
||||
|
||||
// LIBRARY: ISLE 0x406ea0
|
||||
// _realloc
|
||||
|
||||
// LIBRARY: ISLE 0x406f10
|
||||
// __expand
|
||||
|
||||
// LIBRARY: ISLE 0x406f50
|
||||
// __heapadd
|
||||
|
||||
// LIBRARY: ISLE 0x406f60
|
||||
// __heapwalk
|
||||
|
||||
// LIBRARY: ISLE 0x406ff0
|
||||
// __heapused
|
||||
|
||||
// LIBRARY: ISLE 0x407020
|
||||
// __heapmin
|
||||
|
||||
// LIBRARY: ISLE 0x407040
|
||||
// __msize
|
||||
|
||||
// LIBRARY: ISLE 0x407050
|
||||
// __heapchk
|
||||
|
||||
// LIBRARY: ISLE 0x407080
|
||||
// __heapset
|
||||
|
||||
// LIBRARY: ISLE 0x407090
|
||||
// @_shi_sysReportError@16
|
||||
|
||||
// LIBRARY: ISLE 0x407110
|
||||
// _MemPoolSize@4
|
||||
|
||||
// LIBRARY: ISLE 0x4071a0
|
||||
// _MemPoolWalk@8
|
||||
|
||||
// LIBRARY: ISLE 0x407240
|
||||
// @_shi_walkPool@16
|
||||
|
||||
// LIBRARY: ISLE 0x407540
|
||||
// @shi_isBlockInUseSmall@8
|
||||
|
||||
// LIBRARY: ISLE 0x407800
|
||||
// @_shi_isBlockInUseFS@12
|
||||
|
||||
// LIBRARY: ISLE 0x407880
|
||||
// _MemPoolCheck@4
|
||||
|
||||
// LIBRARY: ISLE 0x407b20
|
||||
// _MemCheckPtr@8
|
||||
|
||||
// LIBRARY: ISLE 0x4084e0
|
||||
// __except_handler3
|
||||
|
||||
// GLOBAL: ISLE 0x40f0a0
|
||||
// _szLibName
|
||||
|
||||
// GLOBAL: ISLE 0x4102f4
|
||||
// ?_new_handler@@3P6AXXZA
|
||||
|
||||
// GLOBAL: ISLE 0x4102fc
|
||||
// _MemDefaultPool
|
||||
|
||||
// GLOBAL: ISLE 0x41031c
|
||||
// __shi_compactPoolFn
|
||||
|
||||
// GLOBAL: ISLE 0x410320
|
||||
// __shi_compactPageFn
|
||||
|
||||
// GLOBAL: ISLE 0x410324
|
||||
// _MemDefaultPoolFlags
|
||||
|
||||
// GLOBAL: ISLE 0x41032c
|
||||
// __shi_mutexGlobalInit
|
||||
|
||||
// GLOBAL: ISLE 0x410330
|
||||
// __shi_mutexMovInit
|
||||
|
||||
// GLOBAL: ISLE 0x410334
|
||||
// __shi_mutexMovLockCount
|
||||
|
||||
// GLOBAL: ISLE 0x410338
|
||||
// _shi_initPoolReaders
|
||||
|
||||
// GLOBAL: ISLE 0x41033c
|
||||
// _shi_eventInitPool
|
||||
|
||||
// GLOBAL: ISLE 0x410340
|
||||
// _shi_mutexMovShr
|
||||
|
||||
// GLOBAL: ISLE 0x410368
|
||||
// _shi_deferFreePools
|
||||
|
||||
// GLOBAL: ISLE 0x410378
|
||||
// __shi_poolTerminating
|
||||
|
||||
// GLOBAL: ISLE 0x41037c
|
||||
// _MemDefaultPoolBlockSizeFS
|
||||
|
||||
// GLOBAL: ISLE 0x410380
|
||||
// _MemDefaultPoolPageSize
|
||||
|
||||
// GLOBAL: ISLE 0x410384
|
||||
// _SmartHeap_malloc
|
||||
|
||||
// GLOBAL: ISLE 0x4105b0
|
||||
// __shi_TaskRecord
|
||||
|
||||
// GLOBAL: ISLE 0x4125f8
|
||||
// ?_pnhHeap@@3P6AHI@ZA
|
||||
|
||||
// GLOBAL: ISLE 0x412830
|
||||
// __shi_mutexMov
|
||||
|
||||
// GLOBAL: ISLE 0x412850
|
||||
// _shi_mutexPoolSynch
|
||||
|
||||
// GLOBAL: ISLE 0x412870
|
||||
// __shi_mutexGlobal
|
||||
|
||||
#endif
|
||||
@ -10,20 +10,26 @@ MxS32 g_mxcoreCount[101] = {0, -6643, -5643, -5058, -4643, -4321, -4058, -38
|
||||
-358, -340, -321, -304, -286, -268, -251, -234, -217, -200, -184, -168, -152,
|
||||
-136, -120, -104, -89, -74, -58, -43, -29, -14, 0};
|
||||
|
||||
// GLOBAL: LEGO1 0x10101eac
|
||||
const char* g_parseExtraTokens = ":;";
|
||||
|
||||
// GLOBAL: LEGO1 0x10101edc
|
||||
const char* g_strWORLD = "WORLD";
|
||||
|
||||
// GLOBAL: LEGO1 0x10101f20
|
||||
const char* g_strSOUND = "SOUND";
|
||||
|
||||
// GLOBAL: LEGO1 0x10101f58
|
||||
const char* g_strOBJECT = "OBJECT";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102040
|
||||
// GLOBAL: LEGO1 0x10102048
|
||||
// STRING: LEGO1 0x10102040
|
||||
const char* g_strACTION = "ACTION";
|
||||
|
||||
// GLOBAL: LEGO1 0x1010209c
|
||||
// STRING: LEGO1 0x10101f58
|
||||
const char* g_strOBJECT = "OBJECT";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020b0
|
||||
// STRING: LEGO1 0x10101f20
|
||||
const char* g_strSOUND = "SOUND";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020cc
|
||||
// STRING: LEGO1 0x100f3808
|
||||
const char* g_strVISIBILITY = "VISIBILITY";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020d0
|
||||
// STRING: LEGO1 0x10101edc
|
||||
const char* g_strWORLD = "WORLD";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020e4
|
||||
// STRING: LEGO1 0x10101eac
|
||||
const char* g_parseExtraTokens = ":;";
|
||||
|
||||
@ -24,10 +24,24 @@ class Act1State : public LegoState {
|
||||
|
||||
inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x18 = p_unk0x18; }
|
||||
inline MxU32 GetUnknown18() { return m_unk0x18; }
|
||||
inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x21 = p_unk0x21; }
|
||||
inline MxS16 GetUnknown21() { return m_unk0x21; }
|
||||
|
||||
void FUN_10034d00();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10033960
|
||||
// Act1State::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined m_unk0x8[0x10]; // 0x8
|
||||
MxU32 m_unk0x18; // 0x18
|
||||
undefined2 m_unk0x1c; // 0x1c
|
||||
undefined m_unk0x1e; // 0x1e
|
||||
undefined m_unk0x1f; // 0x1f
|
||||
undefined m_unk0x20; // 0x20
|
||||
MxBool m_unk0x21; // 0x21
|
||||
undefined m_unk0x22; // 0x22
|
||||
// TODO
|
||||
};
|
||||
|
||||
#endif // ACT1STATE_H
|
||||
|
||||
@ -25,6 +25,9 @@ class Act2Brick : public LegoPathActor {
|
||||
{
|
||||
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1007a450
|
||||
// Act2Brick::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // ACT2BRICK_H
|
||||
|
||||
@ -21,6 +21,9 @@ class Act2PoliceStation : public LegoEntity {
|
||||
{
|
||||
return !strcmp(p_name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f610
|
||||
// Act2PoliceStation::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // ACT2POLICESTATION_H
|
||||
|
||||
@ -27,6 +27,9 @@ class Act3 : public LegoWorld {
|
||||
inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
|
||||
inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10072630
|
||||
// Act3::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined m_unk0xf8[0x4114]; // 0xf8
|
||||
MxEntity* m_unk0x420c; // 0x420c
|
||||
|
||||
@ -12,6 +12,9 @@ class Act3Shark : public LegoAnimActor {
|
||||
// STRING: LEGO1 0x100f03a0
|
||||
return "Act3Shark";
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10043020
|
||||
// Act3Shark::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // ACT3SHARK_H
|
||||
|
||||
@ -24,6 +24,9 @@ class Act3State : public LegoState {
|
||||
|
||||
virtual MxBool VTable0x14() override;
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000e3c0
|
||||
// Act3State::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
// FIXME: May be part of LegoState? Uncertain...
|
||||
MxU32 m_unk0x08;
|
||||
|
||||
@ -22,6 +22,9 @@ class Ambulance : public IslePathActor {
|
||||
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10036130
|
||||
// Ambulance::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
// TODO: Ambulance fields
|
||||
undefined m_unk0x160[4];
|
||||
|
||||
@ -40,6 +40,9 @@ class AmbulanceMissionState : public LegoState {
|
||||
}
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100376c0
|
||||
// AmbulanceMissionState::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined4 m_unk0x8; // 0x08
|
||||
undefined4 m_unk0xc; // 0x0c
|
||||
|
||||
@ -26,6 +26,9 @@ class AnimState : public LegoState {
|
||||
virtual MxBool SetFlag() override; // vtable+0x18
|
||||
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1C
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10065130
|
||||
// AnimState::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x8;
|
||||
undefined4 m_unk0xc;
|
||||
|
||||
@ -7,8 +7,6 @@
|
||||
// SIZE 0x68
|
||||
class BeachHouseEntity : public BuildingEntity {
|
||||
public:
|
||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+04
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ee80
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
@ -21,6 +19,9 @@ class BeachHouseEntity : public BuildingEntity {
|
||||
{
|
||||
return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f970
|
||||
// BeachHouseEntity::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // BEACHHOUSEENTITY_H
|
||||
|
||||
@ -23,6 +23,9 @@ class Bike : public IslePathActor {
|
||||
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10076880
|
||||
// Bike::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
// TODO: Bike fields
|
||||
undefined m_unk0x160[4];
|
||||
|
||||
@ -10,6 +10,8 @@ class BuildingEntity : public LegoEntity {
|
||||
BuildingEntity();
|
||||
virtual ~BuildingEntity() override; // vtable+0x0
|
||||
|
||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
||||
|
||||
// FUNCTION: LEGO1 0x10014f20
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
@ -22,6 +24,9 @@ class BuildingEntity : public LegoEntity {
|
||||
{
|
||||
return !strcmp(p_name, BuildingEntity::ClassName()) || LegoEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10015010
|
||||
// BuildingEntity::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // BUILDINGENTITY_H
|
||||
|
||||
@ -19,6 +19,9 @@ class BumpBouy : public LegoAnimActor {
|
||||
{
|
||||
return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10027490
|
||||
// BumpBouy::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // BUMPBOUY_H
|
||||
|
||||
@ -23,6 +23,9 @@ class CarRace : public LegoRace {
|
||||
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10016c70
|
||||
// CarRace::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined m_unk0x144[12]; // 0x144
|
||||
undefined4 m_unk0x150; // 0x150
|
||||
|
||||
@ -19,6 +19,9 @@ class CarRaceState : public RaceState {
|
||||
{
|
||||
return !strcmp(p_name, CarRaceState::ClassName()) || RaceState::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f740
|
||||
// CarRaceState::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // CARRACESTATE_H
|
||||
|
||||
@ -19,6 +19,9 @@ class Doors : public LegoPathActor {
|
||||
{
|
||||
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000e580
|
||||
// Doors::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // DOORS_H
|
||||
|
||||
@ -23,6 +23,9 @@ class DuneBuggy : public IslePathActor {
|
||||
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10067dc0
|
||||
// DuneBuggy::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
// TODO: Double check DuneBuggy field types
|
||||
undefined4 m_unk0x160;
|
||||
|
||||
@ -1,9 +1,11 @@
|
||||
#ifndef ELEVATORBOTTOM_H
|
||||
#define ELEVATORBOTTOM_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "legoworld.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d5f20
|
||||
// SIZE: 0xfc (from inlined ctor at 0x1000a8aa)
|
||||
class ElevatorBottom : public LegoWorld {
|
||||
public:
|
||||
ElevatorBottom();
|
||||
@ -23,6 +25,23 @@ class ElevatorBottom : public LegoWorld {
|
||||
{
|
||||
return !strcmp(p_name, ElevatorBottom::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
|
||||
// FUNCTION: LEGO1 0x10017f10
|
||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10018040
|
||||
// ElevatorBottom::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0xf8; // 0xf8
|
||||
|
||||
MxLong HandleNotification17(MxParam& p_param);
|
||||
};
|
||||
|
||||
#endif // ELEVATORBOTTOM_H
|
||||
|
||||
@ -3,19 +3,21 @@
|
||||
|
||||
// Items related to the Extra string of key-value pairs found in MxOb
|
||||
|
||||
enum ExtraActionType {
|
||||
ExtraActionType_none = 0,
|
||||
ExtraActionType_opendisk = 1,
|
||||
ExtraActionType_openram = 2,
|
||||
ExtraActionType_close = 3,
|
||||
ExtraActionType_start = 4,
|
||||
ExtraActionType_stop = 5,
|
||||
ExtraActionType_run = 6,
|
||||
ExtraActionType_exit = 7,
|
||||
ExtraActionType_enable = 8,
|
||||
ExtraActionType_disable = 9,
|
||||
ExtraActionType_notify = 10,
|
||||
ExtraActionType_unknown = 11,
|
||||
struct Extra {
|
||||
enum ActionType {
|
||||
e_none = 0,
|
||||
e_opendisk,
|
||||
e_openram,
|
||||
e_close,
|
||||
e_start,
|
||||
e_stop,
|
||||
e_run,
|
||||
e_exit,
|
||||
e_enable,
|
||||
e_disable,
|
||||
e_notify,
|
||||
e_unknown,
|
||||
};
|
||||
};
|
||||
|
||||
#endif // EXTRA_H
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
#ifndef GASSTATION_H
|
||||
#define GASSTATION_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "legoworld.h"
|
||||
#include "radio.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d4650
|
||||
// SIZE 0x128
|
||||
@ -26,6 +28,23 @@ class GasStation : public LegoWorld {
|
||||
{
|
||||
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100048a0
|
||||
// GasStation::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined2 m_unk0xf8; // 0xf8
|
||||
undefined2 m_unk0xfa; // 0xfa
|
||||
undefined4 m_unk0xfc; // 0xfc
|
||||
undefined4 m_unk0x100; // 0x100
|
||||
undefined2 m_unk0x104; // 0x104
|
||||
undefined2 m_unk0x106; // 0x106
|
||||
undefined4 m_unk0x108; // 0x108
|
||||
undefined4 m_unk0x10c; // 0x10c
|
||||
undefined4 m_unk0x110; // 0x110
|
||||
undefined m_unk0x114; // 0x114
|
||||
undefined m_unk0x115; // 0x115
|
||||
Radio m_radio; // 0x118
|
||||
};
|
||||
|
||||
#endif // GASSTATION_H
|
||||
|
||||
@ -19,6 +19,9 @@ class GasStationEntity : public BuildingEntity {
|
||||
{
|
||||
return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f890
|
||||
// GasStationEntity::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // GASSTATIONENTITY_H
|
||||
|
||||
@ -22,6 +22,9 @@ class GasStationState : public LegoState {
|
||||
return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10006290
|
||||
// GasStationState::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x08[3];
|
||||
undefined4 m_unk0x14;
|
||||
|
||||
@ -1,69 +1,141 @@
|
||||
#ifndef GIFMANAGER_H
|
||||
#define GIFMANAGER_H
|
||||
|
||||
#include "compat.h"
|
||||
#include "decomp.h"
|
||||
#include "mxstl/stlcompat.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
#include <d3drmobj.h>
|
||||
#include <ddraw.h>
|
||||
|
||||
#pragma warning(disable : 4237)
|
||||
|
||||
// SIZE 0x14
|
||||
struct GifData {
|
||||
public:
|
||||
const char* m_name;
|
||||
LPDIRECTDRAWSURFACE m_surface;
|
||||
LPDIRECTDRAWPALETTE m_palette;
|
||||
LPDIRECT3DRMTEXTURE2 m_texture;
|
||||
MxU8* m_data;
|
||||
char* m_name; // 0x00
|
||||
LPDIRECTDRAWSURFACE m_surface; // 0x04
|
||||
LPDIRECTDRAWPALETTE m_palette; // 0x08
|
||||
LPDIRECT3DRMTEXTURE2 m_texture; // 0x0c
|
||||
MxU8* m_data; // 0x10
|
||||
|
||||
~GifData();
|
||||
};
|
||||
|
||||
struct GifMapEntry {
|
||||
public:
|
||||
GifMapEntry* m_right;
|
||||
GifMapEntry* m_parent;
|
||||
GifMapEntry* m_left;
|
||||
const char* m_key;
|
||||
GifData* m_value;
|
||||
struct GifMapComparator {
|
||||
bool operator()(const char* const& p_key0, const char* const& p_key1) const { return strcmp(p_key0, p_key1) > 0; }
|
||||
};
|
||||
|
||||
class GifMap {
|
||||
public:
|
||||
GifMapEntry* FindNode(const char*& p_string);
|
||||
|
||||
inline GifData* Get(const char* p_string)
|
||||
{
|
||||
GifData* ret = NULL;
|
||||
GifMapEntry* entry = FindNode(p_string);
|
||||
if (((m_unk0x4 == entry || strcmp(p_string, entry->m_key) > 0) ? m_unk0x4 : entry) != entry)
|
||||
ret = entry->m_value;
|
||||
return ret;
|
||||
}
|
||||
|
||||
undefined4 m_unk0x0;
|
||||
GifMapEntry* m_unk0x4;
|
||||
// SIZE 0x10
|
||||
class GifMap : public map<const char*, GifData*, GifMapComparator> {
|
||||
// SYNTHETIC: LEGO1 0x1005a400
|
||||
// GifMap::~GifMap
|
||||
};
|
||||
|
||||
typedef list<GifData*> GifList;
|
||||
|
||||
// VTABLE: LEGO1 0x100d86d4
|
||||
// SIZE 0x18
|
||||
class GifManagerBase {
|
||||
public:
|
||||
// STUB: LEGO1 0x1005a310
|
||||
virtual ~GifManagerBase() {} // vtable+00
|
||||
// FUNCTION: LEGO1 0x1005b660
|
||||
virtual ~GifManagerBase()
|
||||
{
|
||||
GifMap::iterator it;
|
||||
for (it = m_map.begin(); it != m_map.end(); it++) {
|
||||
// DECOMP: Use of const_cast here matches ~ViewLODListManager from 96 source.
|
||||
const char* const& key = (*it).first;
|
||||
delete[] const_cast<char*>(key);
|
||||
|
||||
inline GifData* Get(const char* p_name) { return m_unk0x8.Get(p_name); }
|
||||
if (m_ownership) {
|
||||
delete (*it).second; // GifData*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline GifData* Get(const char* p_name)
|
||||
{
|
||||
GifMap::iterator it = m_map.find(p_name);
|
||||
if (it != m_map.end()) {
|
||||
return (*it).second;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005a310
|
||||
// GifManagerBase::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined4 m_unk0x0;
|
||||
undefined4 m_unk0x4;
|
||||
GifMap m_unk0x8;
|
||||
MxBool m_ownership; // 0x04
|
||||
GifMap m_map; // 0x08
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d86fc
|
||||
// SIZE 0x24
|
||||
class GifManager : public GifManagerBase {
|
||||
public:
|
||||
// STUB: LEGO1 0x1005a580
|
||||
virtual ~GifManager() {} // vtable+00
|
||||
GifManager() { m_ownership = TRUE; };
|
||||
virtual ~GifManager() override;
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005a580
|
||||
// GifManager::`scalar deleting destructor'
|
||||
|
||||
void FUN_10099cc0(GifData* p_data);
|
||||
|
||||
protected:
|
||||
undefined m_unk0x14[0x1c];
|
||||
GifList m_list; // 0x18
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059c50
|
||||
// allocator<GifData *>::_Charalloc
|
||||
|
||||
// clang-format off
|
||||
// TEMPLATE: LEGO1 0x10001cc0
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Lbound
|
||||
|
||||
// TEMPLATE: LEGO1 0x1004f9b0
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059c70
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Color
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059c80
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Left
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059c90
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Parent
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059ca0
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Right
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059cb0
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::~_Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059d80
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::iterator::_Inc
|
||||
|
||||
// TEMPLATE: LEGO1 0x10059dc0
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005a210
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005a250
|
||||
// list<GifData *,allocator<GifData *> >::~list<GifData *,allocator<GifData *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005a2c0
|
||||
// map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::~map<char const *,GifData *,GifMapComparator,allocator<GifData *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005a450
|
||||
// Map<char const *,GifData *,GifMapComparator>::~Map<char const *,GifData *,GifMapComparator>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005a5a0
|
||||
// List<GifData *>::~List<GifData *>
|
||||
|
||||
// GLOBAL: LEGO1 0x100f0100
|
||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Nil
|
||||
// clang-format on
|
||||
|
||||
#endif // GIFMANAGER_H
|
||||
|
||||
@ -9,12 +9,12 @@
|
||||
class HelicopterSubclass {
|
||||
public:
|
||||
inline HelicopterSubclass() : m_unk0x30(0) {}
|
||||
MxResult FUN_100040a0(Vector4Impl& p_v, float p_f);
|
||||
MxResult FUN_100040a0(Vector4& p_v, float p_f);
|
||||
|
||||
private:
|
||||
Vector4Data m_unk0x0; // 0x0
|
||||
Vector4Data m_unk0x18; // 0x18
|
||||
undefined4 m_unk0x30; // 0x30
|
||||
Mx4DPointFloat m_unk0x0; // 0x0
|
||||
Mx4DPointFloat m_unk0x18; // 0x18
|
||||
undefined4 m_unk0x30; // 0x30
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d40f8
|
||||
@ -37,9 +37,9 @@ class Helicopter : public IslePathActor {
|
||||
return !strcmp(p_name, Helicopter::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
void VTable0x74(Matrix4Impl& p_transform) override; // vtable+0x74
|
||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
||||
virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8
|
||||
@ -49,8 +49,8 @@ class Helicopter : public IslePathActor {
|
||||
// Helicopter::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
Matrix4Data m_unk0x160; // 0x160
|
||||
Matrix4Data m_unk0x1a8; // 0x1a8
|
||||
MxMatrix m_unk0x160; // 0x160
|
||||
MxMatrix m_unk0x1a8; // 0x1a8
|
||||
float m_unk0x1f0; // 0x1f0
|
||||
HelicopterSubclass m_unk0x1f4; // 0x1f4
|
||||
HelicopterState* m_state; // 0x228
|
||||
|
||||
@ -24,6 +24,9 @@ class HelicopterState : public LegoState {
|
||||
inline void SetUnknown8(MxU32 p_unk0x8) { m_unk0x8 = p_unk0x8; }
|
||||
inline MxU32 GetUnkown8() { return m_unk0x8; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000e190
|
||||
// HelicopterState::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
MxU32 m_unk0x8; // 0x8
|
||||
};
|
||||
|
||||
@ -24,6 +24,9 @@ class HistoryBook : public LegoWorld {
|
||||
{
|
||||
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100824b0
|
||||
// HistoryBook::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // HISTORYBOOK_H
|
||||
|
||||
@ -26,6 +26,9 @@ class Hospital : public LegoWorld {
|
||||
return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100747d0
|
||||
// Hospital::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined2 m_unk0xf8; // 0xf8
|
||||
undefined4 m_unk0xfc; // 0xfc
|
||||
|
||||
@ -19,6 +19,9 @@ class HospitalEntity : public BuildingEntity {
|
||||
{
|
||||
return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f820
|
||||
// HospitalEntity::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // HOSPITALENTITY_H
|
||||
|
||||
@ -23,6 +23,9 @@ class HospitalState : public LegoState {
|
||||
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100764c0
|
||||
// HospitalState::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined m_unk0x8[4]; // 0x8
|
||||
undefined2 m_unk0xc; // 0xc
|
||||
|
||||
@ -2,11 +2,111 @@
|
||||
#define INFOCENTER_H
|
||||
|
||||
#include "legoworld.h"
|
||||
#include "radio.h"
|
||||
|
||||
class InfocenterState;
|
||||
|
||||
// SIZE 0x18
|
||||
struct InfocenterUnkDataEntry {
|
||||
// FUNCTION: LEGO1 0x1006ec80
|
||||
InfocenterUnkDataEntry() {}
|
||||
|
||||
undefined m_pad[0x18];
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d9338
|
||||
// SIZE 0x1d8
|
||||
class Infocenter : public LegoWorld {
|
||||
public:
|
||||
enum Cutscene {
|
||||
e_noIntro = -1,
|
||||
e_legoMovie,
|
||||
e_mindscapeMovie,
|
||||
e_introMovie,
|
||||
e_outroMovie,
|
||||
e_badEndMovie,
|
||||
e_goodEndMovie
|
||||
};
|
||||
|
||||
enum InfomainScript {
|
||||
c_noInfomain = -1,
|
||||
|
||||
c_welcomeDialogue = 500,
|
||||
c_goodJobDialogue = 501,
|
||||
|
||||
c_clickOnInfomanDialogue = 502,
|
||||
c_tickleInfomanDialogue = 503,
|
||||
|
||||
c_letsGetStartedDialogue = 504,
|
||||
|
||||
c_clickOnObjectsGuidanceDialogue = 505,
|
||||
c_arrowNavigationGuidanceDialogue = 506,
|
||||
c_elevatorGuidanceDialogue = 507,
|
||||
c_radioGuidanceDialogue = 508,
|
||||
c_exitGuidanceDialogue1 = 509,
|
||||
c_exitGuidanceDialogue2 = 510,
|
||||
c_goOutsideGuidanceDialogue = 511,
|
||||
c_experimentGuidanceDialogue = 512,
|
||||
c_returnBackGuidanceDialogue1 = 513,
|
||||
c_returnBackGuidanceDialogue2 = 514,
|
||||
c_bricksterWarningDialogue = 515,
|
||||
c_newGameGuidanceDialogue = 516,
|
||||
c_returnBackGuidanceDialogue3 = 517,
|
||||
|
||||
c_reenterInfoCenterDialogue1 = 518,
|
||||
c_reenterInfoCenterDialogue2 = 519,
|
||||
c_reenterInfoCenterDialogue3 = 520,
|
||||
c_reenterInfoCenterDialogue4 = 521,
|
||||
|
||||
c_exitConfirmationDialogue = 522,
|
||||
c_saveGameOptionsDialogueUnused = 523,
|
||||
c_exitGameDialogue = 524,
|
||||
|
||||
c_bricksterEscapedDialogue1 = 525,
|
||||
c_bricksterEscapedDialogue2 = 526,
|
||||
c_bricksterEscapedDialogue3 = 527,
|
||||
c_bricksterEscapedDialogue4 = 528,
|
||||
c_bricksterEscapedDialogue5 = 529,
|
||||
c_bricksterEscapedDialogue6 = 530,
|
||||
c_bricksterEscapedDialogue7 = 531,
|
||||
|
||||
c_infomanHiccup = 532,
|
||||
c_infomanWalkOffScreenLeftUnused = 533,
|
||||
c_infomanSneeze = 534,
|
||||
c_infomanWalkOffScreenRightUnused = 535,
|
||||
c_infomanLaughs = 536,
|
||||
c_infomanLooksBehindAtScreenUnused = 537,
|
||||
c_infomanReturnsFromScreenUnused = 538,
|
||||
|
||||
c_goodEndingDialogue = 539,
|
||||
c_badEndingDialogue = 540,
|
||||
|
||||
c_pepperCharacterSelect = 541,
|
||||
c_mamaCharacterSelect = 542,
|
||||
c_papaCharacterSelect = 543,
|
||||
c_nickCharacterSelect = 544,
|
||||
c_lauraCharacterSelect = 545,
|
||||
|
||||
c_creditsDialogue = 551,
|
||||
|
||||
c_noCDDialogueUnused1 = 552,
|
||||
c_noCDDialogueUnused2 = 553,
|
||||
|
||||
c_leaveInfoCenterDialogue1 = 562,
|
||||
c_leaveInfoCenterDialogue2 = 563,
|
||||
c_leaveInfoCenterDialogue3 = 564,
|
||||
c_leaveInfoCenterDialogue4 = 565,
|
||||
|
||||
c_registerToContinueDialogue = 573,
|
||||
|
||||
c_bricksterDialogue = 574,
|
||||
c_bricksterLaughs = 575,
|
||||
};
|
||||
|
||||
enum SndAmimScript {
|
||||
c_bookWig = 400
|
||||
};
|
||||
|
||||
Infocenter();
|
||||
virtual ~Infocenter() override;
|
||||
|
||||
@ -26,11 +126,54 @@ class Infocenter : public LegoWorld {
|
||||
return !strcmp(p_name, Infocenter::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual void Stop() override; // vtable+0x50
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() 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 0x1006ec60
|
||||
// Infocenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void InitializeBitmaps();
|
||||
|
||||
MxLong HandleKeyPress(MxS8 p_key);
|
||||
MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y);
|
||||
MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y);
|
||||
MxU8 HandleNotification17(MxParam&);
|
||||
MxLong HandleEndAction(MxParam& p_param);
|
||||
MxLong HandleNotification0(MxParam&);
|
||||
|
||||
void FUN_10070dc0(MxBool);
|
||||
void FUN_10070e90();
|
||||
|
||||
void PlayCutscene(Cutscene p_entityId, MxBool p_scale);
|
||||
void StopCutscene();
|
||||
|
||||
void StartCredits();
|
||||
void StopCredits();
|
||||
|
||||
void PlayAction(InfomainScript p_objectId);
|
||||
void StopCurrentAction();
|
||||
|
||||
void PlayBookAnimation();
|
||||
void StopBookAnimation();
|
||||
|
||||
InfomainScript m_currentInfomainScript; // 0xf8
|
||||
MxS16 m_unk0xfc; // 0xfc
|
||||
InfocenterState* m_infocenterState; // 0x100
|
||||
undefined4 m_unk0x104; // 0x104
|
||||
Cutscene m_currentCutscene; // 0x108
|
||||
Radio m_radio; // 0x10c
|
||||
undefined4 m_unk0x11c; // 0x11c
|
||||
InfocenterUnkDataEntry m_entries[7]; // 0x120
|
||||
MxS16 m_unk0x1c8; // 0x1c8
|
||||
undefined4 m_unk0x1cc; // 0x1cc
|
||||
MxS16 m_infoManDialogueTimer; // 0x1d0
|
||||
MxS16 m_bookAnimationTimer; // 0x1d2
|
||||
MxU16 m_unk0x1d4; // 0x1d4
|
||||
MxS16 m_unk0x1d6; // 0x1d6
|
||||
};
|
||||
|
||||
#endif // INFOCENTER_H
|
||||
|
||||
@ -24,6 +24,21 @@ class InfocenterDoor : public LegoWorld {
|
||||
{
|
||||
return !strcmp(p_name, InfocenterDoor::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
|
||||
// FUNCTION: LEGO1 0x100377a0
|
||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100378d0
|
||||
// InfocenterDoor::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
MxS32 m_unk0xf8; // 0xf8
|
||||
};
|
||||
|
||||
#endif // INFOCENTERDOOR_H
|
||||
|
||||
@ -19,6 +19,9 @@ class InfoCenterEntity : public BuildingEntity {
|
||||
{
|
||||
return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f7b0
|
||||
// InfoCenterEntity::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // INFOCENTERENTITY_H
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
#include "decomp.h"
|
||||
#include "legostate.h"
|
||||
#include "mxstillpresenter.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d93a8
|
||||
// SIZE 0x94
|
||||
@ -24,7 +25,17 @@ class InfocenterState : public LegoState {
|
||||
return !strcmp(p_name, InfocenterState::ClassName()) || LegoState::IsA(p_name);
|
||||
}
|
||||
|
||||
inline MxU32 GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; }
|
||||
// FUNCTION: LEGO1 0x10071830
|
||||
virtual MxBool VTable0x14() override { return FALSE; } // vtable+0x14
|
||||
|
||||
inline MxS16 GetInfocenterBufferSize() { return sizeof(m_buffer) / sizeof(m_buffer[0]); }
|
||||
inline MxStillPresenter* GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; }
|
||||
inline MxU32 GetUnknown0x74() { return m_unk0x74; }
|
||||
|
||||
inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10071900
|
||||
// InfocenterState::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
// Members should be renamed with their offsets before use
|
||||
@ -55,8 +66,9 @@ class InfocenterState : public LegoState {
|
||||
undefined4 unk13;
|
||||
*/
|
||||
|
||||
undefined m_pad[0x70];
|
||||
MxU32 m_buffer[7]; // 0x78
|
||||
undefined m_pad[0x6c];
|
||||
MxU32 m_unk0x74; // 0x74
|
||||
MxStillPresenter* m_buffer[7]; // 0x78
|
||||
};
|
||||
|
||||
#endif // INFOCENTERSTATE_H
|
||||
|
||||
@ -12,7 +12,7 @@ class JukeBoxEntity;
|
||||
class Helicopter;
|
||||
class Bike;
|
||||
class DuneBuggy;
|
||||
class Motorcycle;
|
||||
class Motocycle;
|
||||
class SkateBoard;
|
||||
class RaceCar;
|
||||
class Jetski;
|
||||
@ -40,8 +40,8 @@ class Isle : public LegoWorld {
|
||||
return !strcmp(p_name, Isle::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual void Stop() override; // vtable+50
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+50
|
||||
virtual void VTable0x58(MxCore* p_object) override; // vtable+58
|
||||
// FUNCTION: LEGO1 0x10030900
|
||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+5c
|
||||
@ -57,6 +57,10 @@ class Isle : public LegoWorld {
|
||||
MxLong HandleType17Notification(MxParam& p_param);
|
||||
MxLong HandleType19Notification(MxParam& p_param);
|
||||
MxLong HandleTransitionEnd();
|
||||
void FUN_10032620();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10030a30
|
||||
// Isle::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
Act1State* m_act1state; // 0xf8
|
||||
@ -68,7 +72,7 @@ class Isle : public LegoWorld {
|
||||
Helicopter* m_helicopter; // 0x110
|
||||
Bike* m_bike; // 0x114
|
||||
DuneBuggy* m_dunebuggy; // 0x118
|
||||
Motorcycle* m_motorcycle; // 0x11c
|
||||
Motocycle* m_motocycle; // 0x11c
|
||||
SkateBoard* m_skateboard; // 0x120
|
||||
RaceCar* m_racecar; // 0x124
|
||||
Jetski* m_jetski; // 0x128
|
||||
|
||||
@ -20,4 +20,10 @@ class IsleActor : public LegoActor {
|
||||
}
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000e940
|
||||
// IsleActor::~IsleActor
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000e990
|
||||
// IsleActor::`scalar deleting destructor'
|
||||
|
||||
#endif // ISLEACTOR_H
|
||||
|
||||
@ -13,6 +13,8 @@
|
||||
class IslePathActor : public LegoPathActor {
|
||||
public:
|
||||
IslePathActor();
|
||||
|
||||
// FUNCTION: LEGO1 0x10002e10
|
||||
inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x0
|
||||
|
||||
// FUNCTION: LEGO1 0x10002ea0
|
||||
@ -28,7 +30,8 @@ class IslePathActor : public LegoPathActor {
|
||||
return !strcmp(p_name, IslePathActor::ClassName()) || LegoPathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
// FUNCTION: LEGO1 0x10002e70
|
||||
virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc
|
||||
// FUNCTION: LEGO1 0x10002df0
|
||||
|
||||
@ -23,6 +23,9 @@ class Jetski : public IslePathActor {
|
||||
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1007e5c0
|
||||
// Jetski::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
// TODO: Jetski fields
|
||||
undefined m_unk0x160[4];
|
||||
|
||||
@ -19,6 +19,9 @@ class JetskiRaceState : public RaceState {
|
||||
{
|
||||
return !strcmp(p_name, JetskiRaceState::ClassName()) || RaceState::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f680
|
||||
// JetskiRaceState::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // JETSKIRACESTATE_H
|
||||
|
||||
@ -23,6 +23,92 @@ class JukeBox : public LegoWorld {
|
||||
return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005d810
|
||||
// JukeBox::`scalar deleting destructor'
|
||||
enum JukeBoxScript {
|
||||
e_mamaPapaBrickolini,
|
||||
e_jailUnused,
|
||||
e_act2Cave,
|
||||
e_bricksterChase,
|
||||
e_brickHunt,
|
||||
e_residentialArea,
|
||||
e_beachBlvd,
|
||||
e_cave,
|
||||
e_centralRoads,
|
||||
e_jail,
|
||||
e_hospital,
|
||||
e_informationCenter,
|
||||
e_policeStation,
|
||||
e_park,
|
||||
e_centralNorthRoad,
|
||||
e_garageArea,
|
||||
e_raceTrack,
|
||||
e_beach,
|
||||
e_quietChirping,
|
||||
e_jetskiRace,
|
||||
e_act3Pursuit,
|
||||
|
||||
e_legoRadioReminder1,
|
||||
e_legoRadioJingle1,
|
||||
e_legoRadioJingle2,
|
||||
e_legoRadioJingle3,
|
||||
e_legoRadioJingle4,
|
||||
e_legoRadioReminder2,
|
||||
|
||||
e_legoRadioRacingAd,
|
||||
|
||||
e_legoRadioNews1,
|
||||
e_legoRadioNews2,
|
||||
|
||||
e_legoRadioPizzaAd1,
|
||||
|
||||
e_legoRadioBricksterPSA,
|
||||
|
||||
e_legoRadioSports1,
|
||||
|
||||
e_legoRadioIntermission1,
|
||||
e_legoRadioIntermission2,
|
||||
|
||||
e_legoRadioPizzaAd2,
|
||||
|
||||
e_legoRadioWeatherReport,
|
||||
|
||||
e_legoRadioSports2,
|
||||
|
||||
e_legoRadioPizzaAd3,
|
||||
|
||||
e_legoRadioIntermission3,
|
||||
|
||||
e_legoRadioSuperStoreAd,
|
||||
|
||||
e_legoRadioLuckyYou,
|
||||
e_legoRadioJazzInterlude,
|
||||
e_legoRadioPianoInterlude1,
|
||||
e_legoRadioPoliceStation,
|
||||
e_legoRadioPianoInterlude2,
|
||||
e_legoRadioCredits,
|
||||
|
||||
e_helicopterBuild,
|
||||
e_padding1,
|
||||
e_duneBuggyBuild,
|
||||
e_padding2,
|
||||
e_jetskiBuild,
|
||||
e_padding3,
|
||||
e_raceCarBuild,
|
||||
e_padding4,
|
||||
|
||||
e_jukeBoxMamaPapaBrickolini,
|
||||
e_jukeBoxBrickByBrick,
|
||||
e_jukeBoxTheBrickster,
|
||||
e_jukeBoxBuildMeABridgeToday,
|
||||
e_jukeBoxBaroqueInBrick,
|
||||
e_jukeBoxMantaRay,
|
||||
|
||||
e_observationDeck,
|
||||
e_elevator,
|
||||
e_pizzaMission,
|
||||
};
|
||||
|
||||
private:
|
||||
undefined m_unk0xf8[4]; // 0xf8
|
||||
undefined4 m_unk0xfc; // 0xfc
|
||||
|
||||
@ -22,6 +22,9 @@ class JukeBoxEntity : public LegoEntity {
|
||||
{
|
||||
return !strcmp(p_name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10085db0
|
||||
// JukeBoxEntity::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // JUKEBOXENTITY_H
|
||||
|
||||
@ -21,6 +21,9 @@ class JukeBoxState : public LegoState {
|
||||
}
|
||||
|
||||
virtual MxBool VTable0x14() override; // vtable+0x14
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f3d0
|
||||
// JukeBoxState::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // JUKEBOXSTATE_H
|
||||
|
||||
@ -19,6 +19,9 @@ class Lego3DWavePresenter : public MxWavePresenter {
|
||||
{
|
||||
return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f4b0
|
||||
// Lego3DWavePresenter::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGO3DWAVEPRESENTER_H
|
||||
|
||||
@ -6,6 +6,9 @@
|
||||
|
||||
// VTABLE: LEGO1 0x100d82e0
|
||||
// SIZE 0x1154
|
||||
class LegoAct2 : public LegoWorld {};
|
||||
class LegoAct2 : public LegoWorld {
|
||||
// SYNTHETIC: LEGO1 0x1004fe20
|
||||
// LegoAct2::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOACT2_H
|
||||
|
||||
@ -19,6 +19,9 @@ class LegoAct2State : public LegoState {
|
||||
{
|
||||
return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000e040
|
||||
// LegoAct2State::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOACT2STATE_H
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// SIZE 0x68
|
||||
class LegoActionControlPresenter : public MxMediaPresenter {
|
||||
public:
|
||||
inline LegoActionControlPresenter() { m_unk0x50 = ExtraActionType_none; }
|
||||
inline LegoActionControlPresenter() { m_unk0x50 = Extra::ActionType::e_none; }
|
||||
virtual ~LegoActionControlPresenter() override { Destroy(TRUE); }; // vtable+0x00
|
||||
|
||||
// FUNCTION: LEGO1 0x1000d0e0
|
||||
@ -32,9 +32,9 @@ class LegoActionControlPresenter : public MxMediaPresenter {
|
||||
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x5c
|
||||
|
||||
private:
|
||||
ExtraActionType m_unk0x50; // 0x50
|
||||
MxString m_unk0x54; // 0x54
|
||||
undefined4 m_unk0x64; // 0x64
|
||||
Extra::ActionType m_unk0x50; // 0x50
|
||||
MxString m_unk0x54; // 0x54
|
||||
undefined4 m_unk0x64; // 0x64
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000d1d0
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
class LegoActor : public LegoEntity {
|
||||
public:
|
||||
LegoActor();
|
||||
virtual ~LegoActor() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x1002d210
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
@ -43,4 +44,7 @@ class LegoActor : public LegoEntity {
|
||||
MxU8 m_unk0x74; // 0x74
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002d300
|
||||
// LegoActor::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOACTOR_H
|
||||
|
||||
@ -7,6 +7,8 @@
|
||||
// SIZE 0x50
|
||||
class LegoActorPresenter : public LegoEntityPresenter {
|
||||
public:
|
||||
virtual ~LegoActorPresenter() override{};
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cb10
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
@ -19,6 +21,13 @@ class LegoActorPresenter : public LegoEntityPresenter {
|
||||
{
|
||||
return !strcmp(p_name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void ReadyTickle() override; // vtable+0x18
|
||||
virtual void StartingTickle() override; // vtable+0x1c
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000cc30
|
||||
// LegoActorPresenter::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOACTORPRESENTER_H
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef LEGOANIMATIONMANAGER_H
|
||||
#define LEGOANIMATIONMANAGER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxcore.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d8c18
|
||||
@ -26,11 +27,16 @@ class LegoAnimationManager : public MxCore {
|
||||
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
void FUN_1005ef10();
|
||||
void FUN_1005f6d0(MxBool);
|
||||
void FUN_1005f720(undefined4);
|
||||
void FUN_10064670(MxBool);
|
||||
|
||||
__declspec(dllexport) static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005ed10
|
||||
// LegoAnimationManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
};
|
||||
|
||||
@ -21,6 +21,9 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
|
||||
{
|
||||
return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1004aa40
|
||||
// LegoAnimMMPresenter::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOANIMMMPRESENTER_H
|
||||
|
||||
@ -1,12 +1,19 @@
|
||||
#ifndef LEGOANIMPRESENTER_H
|
||||
#define LEGOANIMPRESENTER_H
|
||||
|
||||
#include "mxgeometry/mxgeometry3d.h"
|
||||
#include "mxvideopresenter.h"
|
||||
|
||||
class LegoWorld;
|
||||
class LegoMemoryStream;
|
||||
class LegoAnimClass;
|
||||
|
||||
// VTABLE: LEGO1 0x100d90c8
|
||||
// SIZE 0xc0
|
||||
class LegoAnimPresenter : public MxVideoPresenter {
|
||||
public:
|
||||
LegoAnimPresenter();
|
||||
virtual ~LegoAnimPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x10068530
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
@ -21,8 +28,84 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
return !strcmp(p_name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void ReadyTickle() override; // vtable+0x18
|
||||
virtual void StartingTickle() override; // vtable+0x1c
|
||||
virtual void StreamingTickle() override; // vtable+0x20
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||
virtual void EndAction() override; // vtable+0x40
|
||||
virtual void PutFrame() override; // vtable+0x6c
|
||||
virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
|
||||
|
||||
// 6 more virtual functions here
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
LegoAnimClass* m_unk0x64; // 0x64
|
||||
undefined4 m_unk0x68; // 0x68
|
||||
undefined4 m_unk0x6c; // 0x6c
|
||||
undefined4 m_unk0x70; // 0x70
|
||||
undefined4 m_unk0x74; // 0x74
|
||||
undefined4 m_unk0x78; // 0x78
|
||||
undefined4 m_unk0x7c; // 0x7c
|
||||
LegoWorld* m_currentWorld; // 0x80
|
||||
MxAtomId m_animAtom; // 0x84
|
||||
undefined4 m_unk0x88; // 0x88
|
||||
undefined4 m_unk0x8c; // 0x8c
|
||||
undefined4 m_unk0x90; // 0x90
|
||||
undefined m_unk0x94; // 0x94
|
||||
undefined m_unk0x95; // 0x95
|
||||
undefined m_unk0x96; // 0x96
|
||||
undefined m_unk0x97; // 0x97
|
||||
undefined4 m_unk0x98; // 0x98
|
||||
MxS16 m_unk0x9c; // 0x9c
|
||||
undefined4 m_unk0xa0; // 0xa0
|
||||
undefined4 m_unk0xa4; // 0xa4
|
||||
Mx3DPointFloat m_unk0xa8; // 0xa8
|
||||
undefined4 m_unk0xbc; // 0xbc
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10068650
|
||||
// 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
|
||||
// SIZE 0x18
|
||||
class LegoAnimClass : public LegoAnimClassBase {
|
||||
public:
|
||||
LegoAnimClass();
|
||||
virtual ~LegoAnimClass() override;
|
||||
|
||||
virtual void VTable0x8() override; // vtable+0x08
|
||||
virtual void VTable0xc() override; // vtable+0x0c
|
||||
virtual MxResult VTable0x10(LegoMemoryStream* p_stream, MxS32); // vtable+0x10
|
||||
|
||||
MxLong m_unk0x8; // 0x08
|
||||
undefined4 m_unk0xc; // 0x0c
|
||||
undefined4 m_unk0x10; // 0x10
|
||||
undefined4 m_unk0x14; // 0x14
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100a0ba0
|
||||
// LegoAnimClass::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOANIMPRESENTER_H
|
||||
|
||||
@ -19,6 +19,11 @@ class LegoBuildingManager : public MxCore {
|
||||
|
||||
__declspec(dllexport) static void configureLegoBuildingManager(MxS32);
|
||||
|
||||
void FUN_1002fa00();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002f940
|
||||
// LegoBuildingManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
};
|
||||
|
||||
@ -23,6 +23,9 @@ class LegoCacheSound : public MxCore {
|
||||
return !strcmp(p_name, LegoCacheSound::ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10006610
|
||||
// LegoCacheSound::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
};
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
|
||||
#include "legopointofviewcontroller.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxgeometry/mxgeometry3d.h"
|
||||
#include "mxgeometry/mxmatrix.h"
|
||||
#include "mxpoint32.h"
|
||||
#include "realtime/matrix.h"
|
||||
#include "realtime/vector.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d57b0
|
||||
// SIZE 0xc8
|
||||
@ -29,22 +29,22 @@ class LegoCameraController : public LegoPointOfViewController {
|
||||
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void OnLButtonDown(MxPoint32 p_point) override; // vtable+0x30
|
||||
virtual void OnLButtonUp(MxPoint32 p_point) override; // vtable+0x34
|
||||
virtual void OnRButtonDown(MxPoint32 p_point) override; // vtable+0x38
|
||||
virtual void OnRButtonUp(MxPoint32 p_point) override; // vtable+0x3c
|
||||
virtual void OnMouseMove(MxU8 p_modifier, MxPoint32 p_point) override; // vtable+0x40
|
||||
virtual MxResult Create(); // vtable+0x44
|
||||
virtual void OnLButtonDown(MxPoint32 p_point); // vtable+0x30
|
||||
virtual void OnLButtonUp(MxPoint32 p_point); // vtable+0x34
|
||||
virtual void OnRButtonDown(MxPoint32 p_point); // vtable+0x38
|
||||
virtual void OnRButtonUp(MxPoint32 p_point); // vtable+0x3c
|
||||
virtual void OnMouseMove(MxU8 p_modifier, MxPoint32 p_point); // vtable+0x40
|
||||
virtual MxResult Create(); // vtable+0x44
|
||||
|
||||
void SetWorldTransform(Vector3Impl& p_at, Vector3Impl& p_dir, Vector3Impl& p_up);
|
||||
void FUN_100123e0(Matrix4Data& p_transform, MxU32);
|
||||
Vector3Data& FUN_10012740();
|
||||
Vector3Data& FUN_100127f0();
|
||||
Vector3Data& FUN_100128a0();
|
||||
void SetWorldTransform(const Vector3& p_at, const Vector3& p_dir, const Vector3& p_up);
|
||||
void FUN_100123e0(const MxMatrix& p_transform, MxU32);
|
||||
Mx3DPointFloat GetWorldUp();
|
||||
Mx3DPointFloat GetWorldLocation();
|
||||
Mx3DPointFloat GetWorldDirection();
|
||||
|
||||
private:
|
||||
Matrix4Data m_matrix1; // 0x38
|
||||
Matrix4Data m_matrix2; // 0x80
|
||||
MxMatrix m_matrix1; // 0x38
|
||||
MxMatrix m_matrix2; // 0x80
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10011f50
|
||||
|
||||
@ -25,6 +25,9 @@ class LegoCarBuild : public LegoWorld {
|
||||
{
|
||||
return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10022a60
|
||||
// LegoCarBuild::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOCARBUILD_H
|
||||
|
||||
@ -22,6 +22,9 @@ class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
|
||||
{
|
||||
return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10078660
|
||||
// LegoCarBuildAnimPresenter::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOCARBUILDANIMPRESENTER_H
|
||||
|
||||
@ -18,6 +18,9 @@ class LegoCarRaceActor : public LegoRaceActor {
|
||||
{
|
||||
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10081610
|
||||
// LegoCarRaceActor::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOCARRACEACTOR_H
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#define LEGOCONTROLMANAGER_H
|
||||
|
||||
#include "mxcore.h"
|
||||
#include "mxpresenterlist.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a80
|
||||
class LegoControlManager : public MxCore {
|
||||
@ -24,8 +25,13 @@ class LegoControlManager : public MxCore {
|
||||
return !strcmp(p_name, LegoControlManager::ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
void FUN_10028df0(MxPresenterList* p_presenterList);
|
||||
void Register(MxCore* p_listener);
|
||||
void Unregister(MxCore* p_listener);
|
||||
void FUN_100293c0(undefined4, const char*, undefined2);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028d40
|
||||
// LegoControlManager::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOCONTROLMANAGER_H
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
#include "decomp.h"
|
||||
#include "extra.h"
|
||||
#include "mxdsobject.h"
|
||||
#include "mxdsaction.h"
|
||||
#include "mxentity.h"
|
||||
#include "realtime/vector.h"
|
||||
#include "roi/legoroi.h"
|
||||
@ -12,10 +12,19 @@
|
||||
// SIZE 0x68 (probably)
|
||||
class LegoEntity : public MxEntity {
|
||||
public:
|
||||
enum {
|
||||
c_bit1 = 0x01
|
||||
};
|
||||
|
||||
// Inlined at 0x100853f7
|
||||
inline LegoEntity() { Init(); }
|
||||
|
||||
__declspec(dllexport) virtual ~LegoEntity() override; // vtable+0x0
|
||||
#ifdef ISLE_APP
|
||||
__declspec(dllexport) virtual ~LegoEntity() override;
|
||||
#else
|
||||
// FUNCTION: LEGO1 0x1000c290
|
||||
__declspec(dllexport) virtual ~LegoEntity() override { Destroy(TRUE); }
|
||||
#endif
|
||||
|
||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
||||
|
||||
@ -32,12 +41,13 @@ class LegoEntity : public MxEntity {
|
||||
return !strcmp(p_name, LegoEntity::ClassName()) || MxEntity::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject); // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x1c
|
||||
virtual void ParseAction(char*); // vtable+0x20
|
||||
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2); // vtable+0x24
|
||||
virtual void SetWorldTransform(Vector3Impl& p_loc, Vector3Impl& p_dir, Vector3Impl& p_up); // vtable+0x28
|
||||
virtual void ResetWorldTransform(MxBool p_inVehicle); // vtable+0x2c
|
||||
virtual MxResult Create(MxDSAction& p_dsAction); // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x1c
|
||||
virtual void ParseAction(char*); // vtable+0x20
|
||||
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2); // vtable+0x24
|
||||
virtual void SetWorldTransform(const Vector3& p_loc, const Vector3& p_dir,
|
||||
const Vector3& p_up); // vtable+0x28
|
||||
virtual void ResetWorldTransform(MxBool p_inVehicle); // vtable+0x2c
|
||||
// FUNCTION: LEGO1 0x10001090
|
||||
virtual void SetWorldSpeed(MxFloat p_worldSpeed) { m_worldSpeed = p_worldSpeed; } // vtable+0x30
|
||||
virtual void VTable0x34(); // vtable+0x34
|
||||
@ -49,26 +59,31 @@ class LegoEntity : public MxEntity {
|
||||
virtual void VTable0x4c(); // vtable+0x4c
|
||||
|
||||
void FUN_10010c30();
|
||||
void SetLocation(Vector3Data& p_location, Vector3Data& p_direction, Vector3Data& p_up, MxBool);
|
||||
void SetLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up, MxBool);
|
||||
|
||||
inline LegoROI* GetROI() { return m_roi; }
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
void SetWorld();
|
||||
|
||||
undefined m_unk0x10;
|
||||
undefined m_unk0x11;
|
||||
Vector3Data m_worldLocation; // 0x14
|
||||
Vector3Data m_worldDirection; // 0x28
|
||||
Vector3Data m_worldUp; // 0x3c
|
||||
MxFloat m_worldSpeed; // 0x50
|
||||
LegoROI* m_roi; // 0x54
|
||||
MxBool m_cameraFlag; // 0x58
|
||||
undefined m_unk0x59;
|
||||
undefined m_unk0x10; // 0x10
|
||||
MxU8 m_flags; // 0x11
|
||||
Mx3DPointFloat m_worldLocation; // 0x14
|
||||
Mx3DPointFloat m_worldDirection; // 0x28
|
||||
Mx3DPointFloat m_worldUp; // 0x3c
|
||||
MxFloat m_worldSpeed; // 0x50
|
||||
LegoROI* m_roi; // 0x54
|
||||
MxBool m_cameraFlag; // 0x58
|
||||
undefined m_unk0x59; // 0x59
|
||||
// For tokens from the extra string that look like this:
|
||||
// "Action:openram;\lego\scripts\Race\CarRaceR;0"
|
||||
ExtraActionType m_actionType; // 0x5c
|
||||
char* m_actionArgString; // 0x60
|
||||
MxS32 m_actionArgNumber; // 0x64
|
||||
Extra::ActionType m_actionType; // 0x5c
|
||||
char* m_actionArgString; // 0x60
|
||||
MxS32 m_actionArgNumber; // 0x64
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000c3b0
|
||||
// LegoEntity::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOENTITY_H
|
||||
|
||||
92
LEGO1/lego/legoomni/include/legoentitylist.h
Normal file
92
LEGO1/lego/legoomni/include/legoentitylist.h
Normal file
@ -0,0 +1,92 @@
|
||||
#ifndef LEGOENTITYLIST_H
|
||||
#define LEGOENTITYLIST_H
|
||||
|
||||
#include "mxlist.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
class LegoEntity;
|
||||
|
||||
// VTABLE: LEGO1 0x100d6410
|
||||
// class MxCollection<LegoEntity *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6428
|
||||
// class MxList<LegoEntity *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6440
|
||||
// class MxPtrList<LegoEntity>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6458
|
||||
// SIZE 0x18
|
||||
class LegoEntityList : public MxPtrList<LegoEntity> {
|
||||
public:
|
||||
LegoEntityList(MxBool p_ownership = FALSE) : MxPtrList<LegoEntity>(p_ownership) {}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001e2d0
|
||||
virtual MxS8 Compare(LegoEntity* p_a, LegoEntity* p_b) override
|
||||
{
|
||||
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
|
||||
}; // vtable+0x14
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d64e8
|
||||
// class MxListCursor<LegoEntity *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d64b8
|
||||
// class MxPtrListCursor<LegoEntity>
|
||||
|
||||
// VTABLE: LEGO1 0x100d64d0
|
||||
// SIZE 0x10
|
||||
class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
|
||||
public:
|
||||
LegoEntityListCursor(LegoEntityList* p_list) : MxPtrListCursor<LegoEntity>(p_list){};
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e2f0
|
||||
// MxCollection<LegoEntity *>::Compare
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e300
|
||||
// MxCollection<LegoEntity *>::~MxCollection<LegoEntity *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e350
|
||||
// MxCollection<LegoEntity *>::Destroy
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e360
|
||||
// MxList<LegoEntity *>::~MxList<LegoEntity *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e3f0
|
||||
// MxPtrList<LegoEntity>::Destroy
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e400
|
||||
// LegoEntityList::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e470
|
||||
// MxPtrList<LegoEntity>::~MxPtrList<LegoEntity>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e4c0
|
||||
// MxCollection<LegoEntity *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e530
|
||||
// MxList<LegoEntity *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e5e0
|
||||
// MxPtrList<LegoEntity>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f110
|
||||
// LegoEntityListCursor::`scalar deleting destructor'
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f180
|
||||
// MxPtrListCursor<LegoEntity>::~MxPtrListCursor<LegoEntity>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f1d0
|
||||
// MxListCursor<LegoEntity *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f240
|
||||
// MxPtrListCursor<LegoEntity>::`scalar deleting destructor'
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f2b0
|
||||
// MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *>
|
||||
|
||||
// FUNCTION: LEGO1 0x1001edc6
|
||||
// LegoEntityListCursor::~LegoEntityListCursor
|
||||
|
||||
#endif // LEGOENTITYLIST_H
|
||||
@ -26,20 +26,23 @@ class LegoEntityPresenter : public MxCompositePresenter {
|
||||
}
|
||||
|
||||
virtual void ReadyTickle() override; // vtable+0x18
|
||||
virtual void RepeatingTickle(); // vtable+0x24
|
||||
virtual void ParseExtra(); // vtable+0x30
|
||||
virtual void RepeatingTickle() override; // vtable+0x24
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||
virtual void Init(); // vtable+0x68
|
||||
virtual undefined4 SetBackend(LegoEntity* p_unk0x4c); // vtable+0x6c
|
||||
virtual undefined4 SetEntity(LegoEntity* p_entity); // vtable+0x6c
|
||||
|
||||
void SetBackendLocation(Vector3Data& p_location, Vector3Data& p_direction, Vector3Data& p_up);
|
||||
void SetEntityLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100535a0
|
||||
// LegoEntityPresenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
protected:
|
||||
LegoEntity* m_objectBackend; // 0x4c
|
||||
LegoEntity* m_entity; // 0x4c
|
||||
};
|
||||
|
||||
#endif // LEGOENTITYPRESENTER_H
|
||||
|
||||
@ -7,9 +7,10 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6aa0
|
||||
// SIZE 0x20
|
||||
class LegoEventNotificationParam : public MxNotificationParam {
|
||||
public:
|
||||
inline LegoEventNotificationParam() : MxNotificationParam(PARAM_NONE, NULL) {}
|
||||
inline LegoEventNotificationParam() : MxNotificationParam(c_notificationType0, NULL) {}
|
||||
inline LegoEventNotificationParam(
|
||||
NotificationId p_type,
|
||||
MxCore* p_sender,
|
||||
@ -22,8 +23,9 @@ class LegoEventNotificationParam : public MxNotificationParam {
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~LegoEventNotificationParam() override {} // vtable+0x0 (scalar deleting destructor)
|
||||
inline MxU8 GetKey() const { return m_key; }
|
||||
inline MxS32 GetX() const { return m_x; }
|
||||
inline MxS32 GetY() const { return m_y; }
|
||||
|
||||
protected:
|
||||
MxU8 m_modifier; // 0x0c
|
||||
@ -33,4 +35,10 @@ class LegoEventNotificationParam : public MxNotificationParam {
|
||||
MxU32 m_unk0x1c; // 0x1c
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028770
|
||||
// LegoEventNotificationParam::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100287e0
|
||||
// LegoEventNotificationParam::~LegoEventNotificationParam
|
||||
|
||||
#endif // LEGOEVENTNOTIFICATIONPARAM_H
|
||||
|
||||
@ -17,6 +17,9 @@ class LegoFlcTexturePresenter : public MxFlcPresenter {
|
||||
return "LegoFlcTexturePresenter";
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005df00
|
||||
// LegoFlcTexturePresenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
|
||||
|
||||
@ -43,6 +43,7 @@ class LegoGameState {
|
||||
|
||||
void SetSomeEnumState(undefined4 p_state);
|
||||
void FUN_1003ceb0();
|
||||
void FUN_10039780(MxU8);
|
||||
|
||||
struct ScoreStruct {
|
||||
void WriteScoreHistory();
|
||||
@ -72,7 +73,7 @@ class LegoGameState {
|
||||
undefined m_unk0x41a[8]; // 0x41a - might be part of the structure at 0xa6
|
||||
MxBool m_isDirty; // 0x420
|
||||
undefined4 m_unk0x424; // 0x424
|
||||
undefined4 m_unk0x428; // 0x428
|
||||
undefined4 m_prevArea; // 0x428
|
||||
undefined4 m_unk0x42c; // 0x42c
|
||||
};
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef LEGOHIDEANIMPRESENTER_H
|
||||
#define LEGOHIDEANIMPRESENTER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "legoloopinganimpresenter.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d9278
|
||||
@ -8,6 +9,7 @@
|
||||
class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
public:
|
||||
LegoHideAnimPresenter();
|
||||
virtual ~LegoHideAnimPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x1006d880
|
||||
inline const char* ClassName() const override // vtable+0xc
|
||||
@ -22,8 +24,16 @@ class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
undefined4* m_unk0xc0; // 0xc0
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006d9d0
|
||||
// LegoHideAnimPresenter::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOHIDEANIMPRESENTER_H
|
||||
|
||||
@ -46,13 +46,23 @@ class LegoInputManager : public MxPresenter {
|
||||
MxResult GetJoystickState(MxU32* p_joystickX, MxU32* p_joystickY, DWORD* p_buttonsState, MxU32* p_povPosition);
|
||||
void SetTimer();
|
||||
void KillTimer();
|
||||
void EnableInputProcessing();
|
||||
void SetCamera(LegoCameraController* p_camera);
|
||||
void ClearCamera();
|
||||
void SetWorld(LegoWorld* p_world);
|
||||
void ClearWorld();
|
||||
|
||||
inline void SetUnknown88(MxBool p_unk0x88) { m_unk0x88 = p_unk0x88; }
|
||||
inline void SetUnknown335(MxBool p_unk0x335) { m_unk0x335 = p_unk0x335; }
|
||||
inline void SetUnknown336(MxBool p_unk0x336) { m_unk0x336 = p_unk0x336; }
|
||||
inline void SetUseJoystick(MxBool p_useJoystick) { m_useJoystick = p_useJoystick; }
|
||||
inline void SetJoystickIndex(MxS32 p_joystickIndex) { m_joystickIndex = p_joystickIndex; }
|
||||
|
||||
inline void DisableInputProcessing()
|
||||
{
|
||||
m_unk0x88 = TRUE;
|
||||
m_unk0x336 = FALSE;
|
||||
}
|
||||
|
||||
inline LegoControlManager* GetControlManager() { return m_controlManager; }
|
||||
inline LegoWorld* GetWorld() { return m_world; }
|
||||
@ -61,7 +71,10 @@ class LegoInputManager : public MxPresenter {
|
||||
void ProcessEvents();
|
||||
MxBool ProcessOneEvent(LegoEventNotificationParam& p_param);
|
||||
|
||||
// private:
|
||||
// SYNTHETIC: LEGO1 0x1005b8d0
|
||||
// LegoInputManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
MxCriticalSection m_criticalSection;
|
||||
MxList<undefined4>* m_unk0x5c; // list or hash table
|
||||
LegoCameraController* m_camera;
|
||||
@ -94,6 +107,9 @@ class LegoInputManager : public MxPresenter {
|
||||
// TEMPLATE: LEGO1 0x1005bb80
|
||||
// MxCollection<LegoEventNotificationParam>::Compare
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005bbe0
|
||||
// MxCollection<LegoEventNotificationParam>::~MxCollection<LegoEventNotificationParam>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005bc30
|
||||
// MxCollection<LegoEventNotificationParam>::Destroy
|
||||
|
||||
@ -109,6 +125,9 @@ class LegoInputManager : public MxPresenter {
|
||||
// SYNTHETIC: LEGO1 0x1005beb0
|
||||
// LegoEventQueue::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005bf20
|
||||
// MxQueue<LegoEventNotificationParam>::~MxQueue<LegoEventNotificationParam>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005bf70
|
||||
// MxQueue<LegoEventNotificationParam>::`scalar deleting destructor'
|
||||
|
||||
|
||||
@ -18,6 +18,9 @@ class LegoJetski : public LegoJetskiRaceActor {
|
||||
{
|
||||
return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10013e20
|
||||
// LegoJetski::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOJETSKI_H
|
||||
|
||||
@ -18,6 +18,9 @@ class LegoJetskiRaceActor : public LegoCarRaceActor {
|
||||
{
|
||||
return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10081d40
|
||||
// LegoJetskiRaceActor::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOJETSKIRACEACTOR_H
|
||||
|
||||
@ -21,6 +21,9 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
return !strcmp(p_name, ClassName()) || LegoLoopingAnimPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006cfe0
|
||||
// LegoLocomotionAnimPresenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
};
|
||||
|
||||
@ -21,4 +21,10 @@ class LegoLoopingAnimPresenter : public LegoAnimPresenter {
|
||||
}
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006d000
|
||||
// LegoLoopingAnimPresenter::~LegoLoopingAnimPresenter
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000f440
|
||||
// LegoLoopingAnimPresenter::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOLOOPINGANIMPRESENTER_H
|
||||
|
||||
@ -7,7 +7,30 @@
|
||||
// SIZE 0x94 (from 0x1000a163)
|
||||
class LegoMeterPresenter : public MxStillPresenter {
|
||||
public:
|
||||
LegoMeterPresenter();
|
||||
virtual ~LegoMeterPresenter() override;
|
||||
|
||||
// MxStillPresenter's `::ClassName` and `::IsA` are used.
|
||||
|
||||
virtual void StreamingTickle() override; // vtable+0x20
|
||||
virtual void RepeatingTickle() override; // vtable+0x24
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
|
||||
private:
|
||||
void FUN_10043a50();
|
||||
|
||||
MxU8* m_unk0x6c; // 0x6c
|
||||
MxU16 m_type; // 0x70
|
||||
MxString m_variable; // 0x74
|
||||
MxFloat m_unk0x84; // 0x84
|
||||
MxU16 m_unk0x88; // 0x88
|
||||
MxU16 m_unk0x8a; // 0x8a
|
||||
MxU16 m_unk0x8c; // 0x8c
|
||||
MxU16 m_unk0x8e; // 0x8e
|
||||
MxU16 m_layout; // 0x90
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10043760
|
||||
// LegoMeterPresenter::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOMETERPRESENTER_H
|
||||
|
||||
@ -26,8 +26,15 @@ class LegoModelPresenter : public MxVideoPresenter {
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000cdd0
|
||||
// LegoModelPresenter::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x64; // 0x64
|
||||
MxBool m_addedToView; // 0x68
|
||||
};
|
||||
|
||||
#endif // LEGOMODELPRESENTER_H
|
||||
|
||||
@ -61,6 +61,9 @@ class LegoNavController : public MxCore {
|
||||
|
||||
inline void SetTrackDefaultParams(MxBool p_trackDefault) { m_trackDefault = p_trackDefault; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10054c10
|
||||
// LegoNavController::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
int m_hMax;
|
||||
int m_vMax;
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
X(RaceCar) \
|
||||
X(Jetski) \
|
||||
X(Bike) \
|
||||
X(Motorcycle) \
|
||||
X(Motocycle) \
|
||||
X(Ambulance) \
|
||||
X(AmbulanceMissionState) \
|
||||
X(TowTrack) \
|
||||
@ -108,6 +108,9 @@ class LegoObjectFactory : public MxObjectFactory {
|
||||
virtual MxCore* Create(const char* p_name) override; // vtable 0x14
|
||||
virtual void Destroy(MxCore* p_object) override; // vtable 0x18
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10009000
|
||||
// LegoObjectFactory::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
#define X(V) MxAtomId m_id##V;
|
||||
FOR_LEGOOBJECTFACTORY_OBJECTS(X)
|
||||
|
||||
@ -62,6 +62,12 @@ extern MxAtomId* g_nocdSourceName;
|
||||
// SIZE 0x140
|
||||
class LegoOmni : public MxOmni {
|
||||
public:
|
||||
enum {
|
||||
c_disableInput = 0x01,
|
||||
c_disable3d = 0x02,
|
||||
c_clearScreen = 0x04
|
||||
};
|
||||
|
||||
__declspec(dllexport) void CreateBackgroundAudio();
|
||||
__declspec(dllexport) void RemoveWorld(const MxAtomId&, MxLong);
|
||||
__declspec(dllexport) static int GetCurrPathInfo(LegoPathBoundary**, MxS32&);
|
||||
@ -99,6 +105,7 @@ class LegoOmni : public MxOmni {
|
||||
|
||||
LegoEntity* FindByEntityIdOrAtomId(const MxAtomId& p_atom, MxS32 p_entityid);
|
||||
void AddWorld(LegoWorld* p_world);
|
||||
void FUN_1005b4f0(MxBool p_disable, MxU16 p_flags);
|
||||
|
||||
LegoVideoManager* GetVideoManager() { return (LegoVideoManager*) m_videoManager; }
|
||||
LegoSoundManager* GetSoundManager() { return (LegoSoundManager*) m_soundManager; }
|
||||
@ -114,11 +121,17 @@ class LegoOmni : public MxOmni {
|
||||
MxBackgroundAudioManager* GetBackgroundAudioManager() { return m_bkgAudioManager; }
|
||||
MxTransitionManager* GetTransitionManager() { return m_transitionManager; }
|
||||
MxDSAction& GetCurrentAction() { return m_action; }
|
||||
LegoUnkSaveDataWriter* GetUnkSaveDataWriter() { return m_saveDataWriter; }
|
||||
|
||||
inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; }
|
||||
|
||||
inline void SetWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; }
|
||||
inline void SetExit(MxBool p_exit) { m_exit = p_exit; };
|
||||
|
||||
inline void CloseMainWindow() { PostMessageA(m_windowHandle, WM_CLOSE, 0, 0); }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10058b30
|
||||
// LegoOmni::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4* m_unk0x68; // 0x68
|
||||
ViewLODListManager* m_viewLODListManager; // 0x6c
|
||||
@ -148,7 +161,6 @@ __declspec(dllexport) LegoOmni* Lego();
|
||||
__declspec(dllexport) LegoEntity* PickEntity(MxLong, MxLong);
|
||||
__declspec(dllexport) LegoROI* PickROI(MxLong, MxLong);
|
||||
__declspec(dllexport) LegoSoundManager* SoundManager();
|
||||
__declspec(dllexport) MxResult Start(MxDSAction*);
|
||||
__declspec(dllexport) MxTransitionManager* TransitionManager();
|
||||
__declspec(dllexport) LegoVideoManager* VideoManager();
|
||||
|
||||
@ -158,14 +170,18 @@ LegoControlManager* ControlManager();
|
||||
IslePathActor* GetCurrentVehicle();
|
||||
LegoPlantManager* PlantManager();
|
||||
LegoWorld* GetCurrentWorld();
|
||||
LegoUnkSaveDataWriter* GetUnkSaveDataWriter();
|
||||
GifManager* GetGifManager();
|
||||
void FUN_10015820(MxU32, MxU32);
|
||||
void FUN_10015820(MxBool p_disable, MxU16 p_flags);
|
||||
void FUN_10015860(const char*, MxU8);
|
||||
LegoEntity* FindEntityByAtomIdOrEntityId(const MxAtomId& p_atom, MxS32 p_entityid);
|
||||
MxDSAction& GetCurrentAction();
|
||||
|
||||
void PlayMusic(MxU32 p_index);
|
||||
void SetIsWorldActive(MxBool p_isWorldActive);
|
||||
void DeleteObjects(MxAtomId* p_id, MxS32 p_first, MxS32 p_last);
|
||||
void RegisterScripts();
|
||||
void UnregisterScripts();
|
||||
void SetCurrentWorld(LegoWorld* p_world);
|
||||
|
||||
#endif // LEGOOMNI_H
|
||||
|
||||
@ -30,6 +30,9 @@ class LegoPalettePresenter : public MxVideoPresenter {
|
||||
|
||||
MxResult ParsePalette(MxStreamChunk* p_chunk);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1007a050
|
||||
// LegoPalettePresenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
@ -21,6 +21,9 @@ class LegoPartPresenter : public MxMediaPresenter {
|
||||
}
|
||||
|
||||
__declspec(dllexport) static void configureLegoPartPresenter(MxS32, MxS32);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000d060
|
||||
// LegoPartPresenter::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOPARTPRESENTER_H
|
||||
|
||||
@ -25,10 +25,10 @@ class LegoPathActor : public LegoActor {
|
||||
return !strcmp(p_name, LegoPathActor::ClassName()) || LegoActor::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void VTable0x68(); // vtable+0x68
|
||||
virtual void VTable0x6c(); // vtable+0x6c
|
||||
virtual void VTable0x70(float p_float); // vtable+0x70
|
||||
virtual void VTable0x74(Matrix4Impl& p_transform); // vtable+0x74
|
||||
virtual void VTable0x68(); // vtable+0x68
|
||||
virtual void VTable0x6c(); // vtable+0x6c
|
||||
virtual void VTable0x70(float p_float); // vtable+0x70
|
||||
virtual void VTable0x74(Matrix4& p_transform); // vtable+0x74
|
||||
// FUNCTION: LEGO1 0x10002d20
|
||||
virtual void VTable0x78(MxU8 p_unk0xea) { m_unk0xea = p_unk0xea; } // vtable+0x78
|
||||
// FUNCTION: LEGO1 0x10002d30
|
||||
@ -66,6 +66,9 @@ class LegoPathActor : public LegoActor {
|
||||
|
||||
inline void SetUnknownDC(MxU32 p_unk0xdc) { m_unk0xdc = p_unk0xdc; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002d800
|
||||
// LegoPathActor::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined m_unk0x78[0x64]; // 0x78
|
||||
MxU32 m_unk0xdc; // 0xdc
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
class LegoPathController : public MxCore {
|
||||
public:
|
||||
LegoPathController();
|
||||
virtual ~LegoPathController() override;
|
||||
virtual ~LegoPathController() override { Destroy(); };
|
||||
|
||||
virtual MxResult Tickle() override; // vtable+08
|
||||
|
||||
@ -24,6 +24,12 @@ class LegoPathController : public MxCore {
|
||||
{
|
||||
return !strcmp(p_name, LegoPathController::ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10045740
|
||||
// LegoPathController::`scalar deleting destructor'
|
||||
|
||||
virtual void VTable0x14(); // vtable+0x14
|
||||
virtual void Destroy(); // vtable+0x18
|
||||
};
|
||||
|
||||
#endif // LEGOPATHCONTROLLER_H
|
||||
|
||||
@ -19,6 +19,9 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
|
||||
{
|
||||
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
|
||||
} // vtable+0x14
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001d3d0
|
||||
// LegoPathControllerList::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d6380
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
class LegoPathPresenter : public MxMediaPresenter {
|
||||
public:
|
||||
LegoPathPresenter();
|
||||
virtual ~LegoPathPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x100449a0
|
||||
inline const char* ClassName() const override // vtable+0xc
|
||||
@ -22,11 +23,16 @@ class LegoPathPresenter : public MxMediaPresenter {
|
||||
return !strcmp(p_name, LegoPathPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void ReadyTickle() override; // vtable+0x18
|
||||
virtual void StreamingTickle() override; // vtable+0x20
|
||||
virtual void RepeatingTickle() override; // vtable+0x24
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
virtual MxResult AddToManager() override; // vtable+0x34
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10044a90
|
||||
// LegoPathPresenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
|
||||
|
||||
@ -20,6 +20,9 @@ class LegoPhonemePresenter : public MxFlcPresenter {
|
||||
return "LegoPhonemePresenter";
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1004e320
|
||||
// LegoPhonemePresenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
int m_unk0x68;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef LEGOPLANTMANAGER_H
|
||||
#define LEGOPLANTMANAGER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxcore.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d6758
|
||||
@ -19,6 +20,11 @@ class LegoPlantManager : public MxCore {
|
||||
return "LegoPlantManager";
|
||||
}
|
||||
|
||||
void FUN_10026360(undefined4 p_world);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100262a0
|
||||
// LegoPlantManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
};
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxpoint32.h"
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
@ -82,6 +83,7 @@ class LegoPointOfViewController : public LegoMouseController {
|
||||
virtual void SetEntity(LegoEntity* p_entity); // vtable+0x2c
|
||||
|
||||
MxResult Create(Lego3DView* p_lego3DView);
|
||||
void OnViewSize(int p_width, int p_height);
|
||||
|
||||
inline LegoEntity* GetEntity() { return m_entity; }
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ class LegoRace : public LegoWorld {
|
||||
return !strcmp(p_name, LegoRace::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSObject& p_dsObject) override; // vtable+0x18
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
@ -38,6 +38,9 @@ class LegoRace : public LegoWorld {
|
||||
virtual undefined4 VTable0x78(undefined4); // vtable+0x78
|
||||
virtual void VTable0x7c(undefined4, undefined4); // vtable+0x7c
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10015cc0
|
||||
// LegoRace::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0xf8; // 0xf8
|
||||
undefined4 m_unk0xfc; // 0xfc
|
||||
|
||||
@ -18,6 +18,9 @@ class LegoRaceActor : public LegoAnimActor {
|
||||
{
|
||||
return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10014ab0
|
||||
// LegoRaceActor::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGORACEACTOR_H
|
||||
|
||||
@ -20,6 +20,9 @@ class LegoRaceCar : public LegoCarRaceActor {
|
||||
{
|
||||
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
|
||||
}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10014230
|
||||
// LegoRaceCar::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
#endif // LEGOCARRACE_H
|
||||
|
||||
@ -14,6 +14,9 @@ class LegoSoundManager : public MxSoundManager {
|
||||
virtual void Destroy() override; // vtable+18
|
||||
virtual MxResult Create(MxU32 p_frequencyMS, MxBool p_createThread) override; // vtable+0x30
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10029920
|
||||
// LegoSoundManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user