This is page 1 of 7. Use http://codebase.md/2Tie/mh1j?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .gitignore
├── config
│ ├── cryptlist1.txt
│ ├── cryptlist2.txt
│ ├── cryptlist3.txt
│ ├── cryptlist4.txt
│ ├── cryptlist5.txt
│ ├── dnas_ins_crypt_symbols.txt
│ ├── dnas_ins_funcs_auto.txt
│ ├── dnas_ins_ignores.txt
│ ├── dnas_ins_ignores.txt.save
│ ├── dnas_ins_noencrypt.bin
│ ├── dnas_ins_symbol_addrs.txt
│ ├── dnas_ins_syms_auto.txt
│ ├── dnas_ins.yaml
│ ├── dnas_net_crypt_symbols.txt
│ ├── dnas_net_funcs_auto.txt
│ ├── dnas_net_ignores.txt
│ ├── dnas_net_symbol_addrs.txt
│ ├── dnas_net_syms_auto.txt
│ ├── dnas_net.yaml
│ ├── dummy_symbol_addrs.txt
│ ├── dummy.yaml
│ ├── game_funcs_auto.txt
│ ├── game_symbol_addrs.txt
│ ├── game_syms_auto.txt
│ ├── game.yaml
│ ├── heap_symbol_addrs.txt
│ ├── heap.yaml
│ ├── lobby_funcs_auto.txt
│ ├── lobby_symbol_addrs.txt
│ ├── lobby_syms_auto.txt
│ ├── lobby.yaml
│ ├── main_shims_addrs.txt
│ ├── main_symbol_addrs.txt
│ ├── main.yaml
│ ├── select_funcs_auto.txt
│ ├── select_symbol_addrs.txt
│ ├── select_syms_auto.txt
│ ├── select.yaml
│ ├── undefined_funcs_auto.txt
│ ├── undefined_syms_auto.txt
│ ├── yn_funcs_auto.txt
│ ├── yn_symbol_addrs.txt
│ ├── yn_syms_auto.txt
│ └── yn.yaml
├── include
│ ├── common.h
│ ├── include_asm.h
│ ├── labels.inc
│ ├── macro.inc
│ ├── structs.h
│ └── types.h
├── Makefile
├── readme
├── src
│ └── main
│ └── stage.c
└── tools
├── AFS_files.txt
├── asmelf.py
├── funcrypt.py
├── lcf
│ ├── generate_lcf.py
│ ├── lcf_footer.txt
│ └── lcf_header.txt
├── packer.py
└── verify.py
```
# Files
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
```
1 | #original files
2 | SLPM_654.95
3 | AFS_DATA.AFS
4 | assets/*
5 | overlays/*
6 |
7 | #raw disasembly
8 | asm/*
9 | tools/*.bin
10 |
11 | #built objects
12 | build/*
13 | *.ld
14 | ctx.c
15 |
16 | bin/*
17 | tools/mwccgap/
18 | tools/m2ctx.py
19 | .splache
20 |
```
--------------------------------------------------------------------------------
/config/dummy.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
```
--------------------------------------------------------------------------------
/config/select_funcs_auto.txt:
--------------------------------------------------------------------------------
```
1 |
```
--------------------------------------------------------------------------------
/config/heap_symbol_addrs.txt:
--------------------------------------------------------------------------------
```
1 | _end = 0xE00000;
2 | end = 0xE00000;
3 |
```
--------------------------------------------------------------------------------
/config/cryptlist1.txt:
--------------------------------------------------------------------------------
```
1 | a06958
2 | a06ad8
3 | a06c70
4 | a06de0
5 | a06ef4
6 | a07004
7 | a0718c
8 | a073f4
9 | a074d8
10 | a075c4
11 | a078ec
12 | a07a0c
13 | a07b18
14 | a08114
15 | a0832c
16 | a08444
17 | a085f4
18 | a0889c
19 |
```
--------------------------------------------------------------------------------
/include/common.h:
--------------------------------------------------------------------------------
```
1 | #ifndef COMMON_H
2 | #define COMMON_H
3 |
4 |
5 | #include "types.h"
6 |
7 | #define INCLUDE_ASM(FOLDER, NAME)
8 | #define INCLUDE_RODATA(FOLDER, NAME)
9 |
10 |
11 | #endif
12 |
```
--------------------------------------------------------------------------------
/tools/lcf/lcf_footer.txt:
--------------------------------------------------------------------------------
```
1 |
2 | .dummy :
3 | {
4 | # to get addr
5 | end = .;
6 | _end = .;
7 | } > dummy.bin
8 |
9 | .heap :
10 | {
11 | # to get heap addr
12 | end = .;
13 | _end = .;
14 | } > heap
15 | }
16 |
```
--------------------------------------------------------------------------------
/config/cryptlist3.txt:
--------------------------------------------------------------------------------
```
1 | A27E54
2 | a27f64
3 | a28134
4 | a28308
5 | a285b4
6 | a287b0
7 | a288d0
8 | a28a88
9 | a29138
10 | a29264
11 | a293e4
12 | a29590
13 | a297e8
14 | a29914
15 | a29fd8
16 | a2a4d8
17 | a2da90
18 | a2dbf8
19 | a2dfc0
20 | a2e190
21 | a2e358
22 |
```
--------------------------------------------------------------------------------
/config/cryptlist2.txt:
--------------------------------------------------------------------------------
```
1 | A207D0
2 | A20960
3 | A20B10
4 | A20EBC
5 | A2113C
6 | A212F4
7 | A214B4
8 | A21688
9 | A219D0
10 | A21AE0
11 | A21F28
12 | A220A4
13 | A222A0
14 | A22494
15 | A2257C
16 | A226C0
17 | A227C0
18 | A23508
19 | A23778
20 | A23B4C
21 | A23C54
22 | A23E9C
23 | A23F8C
24 | A241C8
25 | A243A0
26 | A247D8
27 | A24978
28 | A24C3C
29 | A24D3C
30 | A24FF8
31 | A254DC
32 | A25930
33 | A26144
34 | A265E8
35 |
```
--------------------------------------------------------------------------------
/config/cryptlist5.txt:
--------------------------------------------------------------------------------
```
1 | a6cae8
2 | a6cc28
3 | a6cd60
4 | a6ce9c
5 | a6d570
6 | a6d7e8
7 | a6d900
8 | a6da10
9 | a6daf8
10 | a6dbe0
11 | a6dcc8
12 | a6ddb0
13 | a6dec4
14 | a6dff4
15 | a6e0f4
16 | a6e2c4
17 | a6e498
18 | a6e748
19 | a6e948
20 | a6ea78
21 | a6ec8c
22 | a6ee48
23 | a6efb8
24 | a6f1d0
25 | a6f500
26 | a6f748
27 | a6f874
28 | a6f9f4
29 | a6fba0
30 | a6fdf8
31 | a6ff24
32 | a705e8
33 | a70ae8
34 | a730ac
35 | a731d4
36 | a734c0
37 | a7399c
38 | a73b00
39 | a73da8
40 | a7402c
41 | a743f0
42 | a74534
43 | a74850
44 | a7496c
45 | a74a8c
46 | a74e20
47 | a75198
48 | a75474
49 | a75a58
50 | a75bc0
51 | a75f88
52 | a76158
53 | a76320
54 |
```
--------------------------------------------------------------------------------
/config/dummy_symbol_addrs.txt:
--------------------------------------------------------------------------------
```
1 | _dummy_text_size = 0xC0;
2 | _dummy_bss_size = 0x0;
3 | _dummy_text_end = 0xE00000;
4 | _dummy_segment_end = 0xE00000;
5 | _dummy_data_size = 0x0;
6 | _dummy_static_init = 0xE00000;
7 | _dummy_segment_start = 0xDFFF00;
8 | _dummy_text_start = 0xDFFF40;
9 | _dummy_data_start = 0xE00000;
10 | _dummy_data_end = 0xE00000;
11 | _dummy_bss_end = 0xE00000;
12 | _dummy_static_init_end = 0xE00000;
13 | _dummy_bss_start = 0xE00000;
14 |
```
--------------------------------------------------------------------------------
/config/select_syms_auto.txt:
--------------------------------------------------------------------------------
```
1 | D_3E5168 = 0x3E5168;
2 | D_3E516C = 0x3E516C;
3 | D_3E5170 = 0x3E5170;
4 | D_3E5BEC = 0x3E5BEC;
5 | D_3EBD04 = 0x3EBD04;
6 | D_3EBD08 = 0x3EBD08;
7 | D_3F32E2 = 0x3F32E2;
8 | D_3F32E3 = 0x3F32E3;
9 | D_3F32E5 = 0x3F32E5;
10 | D_3F32E6 = 0x3F32E6;
11 | D_3F32E7 = 0x3F32E7;
12 | D_3F32E8 = 0x3F32E8;
13 | D_3F3318 = 0x3F3318;
14 | D_3F331A = 0x3F331A;
15 | D_3F331E = 0x3F331E;
16 | D_3F3404 = 0x3F3404;
17 | D_3F3621 = 0x3F3621;
18 | D_3F3622 = 0x3F3622;
19 | D_3F362A = 0x3F362A;
20 | D_3F3712 = 0x3F3712;
21 |
```
--------------------------------------------------------------------------------
/config/cryptlist4.txt:
--------------------------------------------------------------------------------
```
1 | a07754
2 | a08c3c
3 | a08d3c
4 | a08e48
5 | a08f50
6 | a09054
7 | a09154
8 | a09254
9 | a09334
10 | a09434
11 | a09514
12 | a095f4
13 | a096d4
14 | a097d4
15 | a098c4
16 | a099cc
17 | a09ad8
18 | a09c3c
19 | a09d4c
20 | a09e3c
21 | a09f3c
22 | a0a01c
23 | a0a108
24 | a0a26c
25 | a0a384
26 | a0a564
27 | a0af50
28 | a0b060
29 | a0b4ac
30 | a0c24c
31 | a0c4b4
32 | a0c73c
33 | a0c870
34 | a0c9f0
35 | a0cc74
36 | a0cd78
37 | a0cec4
38 | a0d260
39 | a0d42c
40 | a0d5dc
41 | a0d780
42 | a0e438
43 | a0e5b8
44 | a0e750
45 | a0e8c0
46 | a0e9d4
47 | a0eae4
48 | a0ec6c
49 | a0eed4
50 | a0efb8
51 | a0f0a4
52 | a0f3cc
53 | a0f4ec
54 | a0f5f8
55 | a0fbf4
56 | a0fe0c
57 | a0ff24
58 | a100d4
59 | a1037c
60 | a10800
61 | a10f9c
62 | a11c30
63 | a12d04
64 | a12f80
65 |
```
--------------------------------------------------------------------------------
/config/yn_syms_auto.txt:
--------------------------------------------------------------------------------
```
1 | args0x389e50 = 0x389E50;
2 | BsProxyUrlstr_S0x3a0140 = 0x3A0140;
3 | BsProxyUrlstr0x3a0250 = 0x3A0250;
4 | Psw0x3f3710 = 0x3F3710;
5 | MyPassword0x4e4850 = 0x4E4850;
6 | MyUserName0x4e4950 = 0x4E4950;
7 | MyDomain0x4e4a50 = 0x4E4A50;
8 | MyDialOutline0x4e4b50 = 0x4E4B50;
9 | MyDialNumber0x4e4b60 = 0x4E4B60;
10 | SrvDomain0x4e4c50 = 0x4E4C50;
11 | DeviceWork0x4e4d50 = 0x4E4D50;
12 | proxy_work = 0x530394;
13 | netconf_dev = 0x5306B0;
14 | netconf_work = 0x5310D0;
15 | MemcardWork0x5317c0 = 0x5317C0;
16 | D_0053D451 = 0x53D451;
17 | D_0053D452 = 0x53D452;
18 | D_0053D453 = 0x53D453;
19 |
```
--------------------------------------------------------------------------------
/tools/asmelf.py:
--------------------------------------------------------------------------------
```python
1 | from pathlib import Path
2 |
3 | from mwccgap.mwccgap.assembler import Assembler
4 | from mwccgap.mwccgap.elf import Elf
5 |
6 | o_file=Path("build/asmbin.o")
7 |
8 | assembler = Assembler(
9 | as_path="bin/mips-ps2-decompals-as",
10 | as_flags=["-EL", "-I include/", "-G 128", "-march=r5900", "-mabi=eabi", "-no-pad-sections", "-mno-pdr"],
11 | as_march="r5900",
12 | as_mabi="eabi",
13 | macro_inc_path=Path("include/macro.inc"),
14 | )
15 |
16 | asm_bytes = assembler.assemble_file(Path("asm/main/nonmatchings/stage/stage_set_set0x15bbe0.s"))
17 | assembled_elf = Elf(asm_bytes)
18 |
19 | o_file.write_bytes(assembled_elf.pack())
20 |
```
--------------------------------------------------------------------------------
/tools/lcf/lcf_header.txt:
--------------------------------------------------------------------------------
```
1 | MEMORY
2 | {
3 | main (RWX) : ORIGIN = 0x100000, LENGTH = 0x0
4 | select.bin (RWXO) : ORIGIN = 0x533980, LENGTH = 0x0 > select.bin
5 | game.bin (RWXO) : ORIGIN = 0x533980, LENGTH = 0x0 > game.bin
6 | yn.bin (RWXO) : ORIGIN = 0x533980, LENGTH = 0x0 > yn.bin
7 | lobby.bin (RWXO) : ORIGIN = 0x533980, LENGTH = 0x0 > lobby.bin
8 | dnas_net.bin (RWXO) : ORIGIN = 0xA06200, LENGTH = 0x0 > dnas_net.bin
9 | dnas_ins.bin (RWXO) : ORIGIN = 0xA06200, LENGTH = 0x0 > dnas_ins.bin
10 | dummy.bin (RWX) : ORIGIN = 0xdfff00, LENGTH = 0x0
11 | heap (RW) : ORIGIN = 0xe00000, LENGTH = 0x0
12 | }
13 |
14 | KEEP_SECTION
15 | {
16 | .vutext,
17 | .vudata,
18 | .vubss,
19 | .data
20 | }
21 |
22 | SECTIONS
23 | {
24 | # define for crt0
25 | _heap_size = -1;
26 | _stack = -1;
27 | _stack_size = 0x00100000;
28 | # define for lcf
29 | _align_segment = 0x80;
30 |
```
--------------------------------------------------------------------------------
/include/types.h:
--------------------------------------------------------------------------------
```
1 | #ifndef TYPES_H
2 | #define TYPES_H
3 |
4 |
5 | typedef char int8_t;
6 | typedef short int16_t;
7 | typedef int int32_t;
8 | typedef long long int64_t;
9 | typedef unsigned char uint8_t;
10 | typedef unsigned short uint16_t;
11 | typedef unsigned int uint32_t;
12 | typedef unsigned long long uint64_t;
13 | typedef unsigned char u_char;
14 | typedef unsigned short u_short;
15 | typedef unsigned int u_int;
16 | typedef unsigned long u_long;
17 | typedef unsigned int size_t;
18 |
19 | typedef char s8;
20 | typedef short s16;
21 | typedef int s32;
22 | typedef long long s64;
23 | typedef unsigned char u8;
24 | typedef unsigned short u16;
25 | typedef unsigned int u32;
26 | typedef unsigned long long u64;
27 |
28 | typedef float f32;
29 | typedef double f64;
30 |
31 | typedef s32 intptr_t;
32 | typedef u32 uintptr_t;
33 | typedef s32 ptrdiff_t;
34 |
35 | // Old code insists on treating strlen's return type as a signed integer
36 | typedef s32 strlen_t;
37 |
38 | typedef s32 ssize_t;
39 |
40 |
41 | #endif
42 |
```
--------------------------------------------------------------------------------
/include/include_asm.h:
--------------------------------------------------------------------------------
```
1 | #ifndef INCLUDE_ASM_H
2 | #define INCLUDE_ASM_H
3 |
4 | #if !defined(M2CTX) && !defined(PERMUTER)
5 |
6 | #ifndef INCLUDE_ASM
7 | #define INCLUDE_ASM(FOLDER, NAME) \
8 | __asm__( \
9 | ".section .text\n" \
10 | " .set noat\n" \
11 | " .set noreorder\n" \
12 | " .include \"" FOLDER "/" #NAME ".s\"\n" \
13 | " .set reorder\n" \
14 | " .set at\n" \
15 | )
16 | #endif
17 | #ifndef INCLUDE_RODATA
18 | #define INCLUDE_RODATA(FOLDER, NAME) \
19 | __asm__( \
20 | ".section .rodata\n" \
21 | " .include \"" FOLDER "/" #NAME ".s\"\n" \
22 | ".section .text" \
23 | )
24 | #endif
25 | __asm__(".include \"include/labels.inc\"\n");
26 |
27 | #else
28 |
29 | #ifndef INCLUDE_ASM
30 | #define INCLUDE_ASM(FOLDER, NAME)
31 | #endif
32 | #ifndef INCLUDE_RODATA
33 | #define INCLUDE_RODATA(FOLDER, NAME)
34 | #endif
35 |
36 | #endif /* !defined(M2CTX) && !defined(PERMUTER) */
37 |
38 | #endif /* INCLUDE_ASM_H */
39 |
```
--------------------------------------------------------------------------------
/config/heap.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
2 |
3 | sha1: #TODO overlaydata
4 | options:
5 | basename: heap
6 | base_path: ..
7 |
8 | #compiler
9 | platform: ps2
10 | compiler: MWCCPS2
11 |
12 | asm_path: asm/heap
13 | src_path: src/heap
14 | build_path: build
15 |
16 | extensions_path: tools/splat_ext
17 | symbol_addrs_path: config/heap_symbol_addrs.txt
18 | undefined_funcs_auto_path: config/undefined_funcs_auto.txt
19 | undefined_syms_auto_path: config/undefined_syms_auto.txt
20 |
21 | find_file_boundaries: False #funcs are already aligned?
22 | string_encoding: SHIFT-JIS
23 | rodata_string_guesser_level: 2
24 | disasm_unknown: True
25 | gp_value: 0x0038EB70
26 |
27 |
28 | segments:
29 | - [0x0, databin, overlay/heap/header]
30 | - name: heap
31 | type: code
32 | start: 0x80
33 | vram: 0xE00000
34 | bss_size: 0x0 #TODO offset 0x14 in the overlay header
35 | subsections:
36 | - [0x80, asm, overlay/heap/code]
37 |
38 | #- [0x40 + offset, data, overlay/heap/data] #TODO offset 0x1C in overlay header
39 |
40 | -[0x0]#eof
```
--------------------------------------------------------------------------------
/config/dnas_ins_funcs_auto.txt:
--------------------------------------------------------------------------------
```
1 | memcmp0x19dad8 = 0x19DAD8;
2 | memcpy0x19db70 = 0x19DB70;
3 | memmove0x19dc20 = 0x19DC20;
4 | memset0x19dd28 = 0x19DD28;
5 | __muldi30x1a6a70 = 0x1A6A70;
6 | __udivdi30x1a7810 = 0x1A7810;
7 | __umoddi30x1a7d90 = 0x1A7D90;
8 | CreateSema0x254720 = 0x254720;
9 | DeleteSema0x254730 = 0x254730;
10 | SignalSema0x254740 = 0x254740;
11 | WaitSema0x254760 = 0x254760;
12 | FlushCache0x2549a0 = 0x2549A0;
13 | sceSifDmaStat0x254ac0 = 0x254AC0;
14 | sceSifSetDma0x254ae0 = 0x254AE0;
15 | DelayThread0x255780 = 0x255780;
16 | sceSifInitRpc0x257180 = 0x257180;
17 | sceSifBindRpc0x257918 = 0x257918;
18 | sceSifCallRpc0x257ae8 = 0x257AE8;
19 | sceOpen0x258b70 = 0x258B70;
20 | sceClose0x258df8 = 0x258DF8;
21 | sceLseek0x258f78 = 0x258F78;
22 | sceRead0x2591b0 = 0x2591B0;
23 | sceSifInitIopHeap0x25b928 = 0x25B928;
24 | sceSifAllocIopHeap0x25b9b0 = 0x25B9B0;
25 | sceSifFreeIopHeap0x25bb18 = 0x25BB18;
26 | sceSifStopModule0x25c248 = 0x25C248;
27 | sceSifUnloadModule0x25c450 = 0x25C450;
28 | sceSifSearchModuleByName0x25c4e0 = 0x25C4E0;
29 | sceSifLoadModuleBuffer0x25c610 = 0x25C610;
30 | sceSifRebootIop0x25cda8 = 0x25CDA8;
31 |
```
--------------------------------------------------------------------------------
/config/select.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
2 |
3 | sha1: a646083b86e08ff0e79b0ddbd96a940893d5b53c
4 | options:
5 | basename: select
6 | base_path: ..
7 | target_path: overlays/select.bin
8 |
9 | #compiler
10 | platform: ps2
11 | compiler: MWCCPS2
12 |
13 | asm_path: asm/overlay/select
14 | src_path: src/overlay/select
15 | build_path: build
16 |
17 | extensions_path: tools/splat_ext
18 | symbol_addrs_path: [config/select_symbol_addrs.txt, config/main_symbol_addrs.txt]
19 | undefined_funcs_auto_path: config/select_funcs_auto.txt
20 | undefined_syms_auto_path: config/select_syms_auto.txt
21 |
22 | find_file_boundaries: False #funcs are already aligned?
23 | string_encoding: SHIFT-JIS
24 | rodata_string_guesser_level: 2
25 | disasm_unknown: True
26 | gp_value: 0x0038EB70
27 |
28 | asm_function_macro: .fn
29 | asm_data_macro: .obj
30 | asm_nonmatching_label_macro: ""
31 | asm_inc_header: |
32 | .set noat /* allow manual use of $at */
33 | .set noreorder /* don't insert nops after branches */
34 |
35 | section_order: [".text", ".vutext", ".data", ".vudata", ".rodata", ".init", ".ctor", ".vtables", ".sbss", ".bss", ".common", ".vubss"]
36 |
37 |
38 | segments:
39 | - [0x0, databin, select_header]
40 | - name: select
41 | type: code
42 | start: 0x80
43 | vram: 0x533A00
44 | bss_size: 0x0
45 | subsegments:
46 | - [0x80, asm, select_code]
47 |
48 | - [0x4D80, data, select_data]
49 |
50 | - [0x8000] #eof
51 |
```
--------------------------------------------------------------------------------
/config/yn.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
2 |
3 | sha1: 7cc3cfcd716226249ae0e48076cf69fd638dd083
4 | options:
5 | basename: yn
6 | base_path: ..
7 | target_path: overlays/yn.bin
8 |
9 | #compiler
10 | platform: ps2
11 | compiler: MWCCPS2
12 |
13 | asm_path: asm/overlay/yn
14 | src_path: src/overlay/yn
15 | build_path: build
16 |
17 | extensions_path: tools/splat_ext
18 | symbol_addrs_path: [config/yn_symbol_addrs.txt, config/main_symbol_addrs.txt]
19 | undefined_funcs_auto_path: config/yn_funcs_auto.txt
20 | undefined_syms_auto_path: config/yn_syms_auto.txt
21 |
22 | find_file_boundaries: False #funcs are already aligned?
23 | string_encoding: SHIFT-JIS
24 | rodata_string_guesser_level: 2
25 | disasm_unknown: True
26 | gp_value: 0x0038EB70
27 |
28 | asm_function_macro: .fn
29 | asm_data_macro: .obj
30 | asm_nonmatching_label_macro: ""
31 | asm_inc_header: |
32 | .set noat /* allow manual use of $at */
33 | .set noreorder /* don't insert nops after branches */
34 |
35 | section_order: [".text", ".vutext", ".data", ".vudata", ".rodata", ".init", ".ctor", ".vtables", ".sbss", ".bss", ".common", ".vubss"]
36 |
37 |
38 | segments:
39 | - [0x0, databin, yn_header]
40 | - name: yn
41 | type: code
42 | start: 0x80
43 | vram: 0x533A00
44 | bss_size: 0x46680
45 | subsegments:
46 | - [0x80, asm, yn_code]
47 |
48 | - [0x8F80, data, yn_data]
49 |
50 |
51 | - { name: yn_bss, type: bss, vram: 0x541680 }
52 |
53 | - [0xDD00] #eof
54 |
```
--------------------------------------------------------------------------------
/config/game.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
2 |
3 | sha1: feeecbc08b5d12e5d8114efc7b6f05cd68b334e9
4 | options:
5 | basename: game
6 | base_path: ..
7 | target_path: overlays/game.bin
8 |
9 | #compiler
10 | platform: ps2
11 | compiler: MWCCPS2
12 |
13 | asm_path: asm/overlay/game
14 | src_path: src/overlay/game
15 | build_path: build
16 |
17 | extensions_path: tools/splat_ext
18 | symbol_addrs_path: [config/game_symbol_addrs.txt, config/main_symbol_addrs.txt]
19 | undefined_funcs_auto_path: config/game_funcs_auto.txt
20 | undefined_syms_auto_path: config/game_syms_auto.txt
21 |
22 | asm_function_macro: .fn
23 | asm_data_macro: .obj
24 | asm_nonmatching_label_macro: ""
25 | asm_inc_header: |
26 | .set noat /* allow manual use of $at */
27 | .set noreorder /* don't insert nops after branches */
28 |
29 | find_file_boundaries: False #funcs are already aligned?
30 | string_encoding: SHIFT-JIS
31 | rodata_string_guesser_level: 2
32 | disasm_unknown: True
33 | gp_value: 0x0038EB70
34 |
35 | section_order: [".text", ".vutext", ".data", ".vudata", ".rodata", ".init", ".ctor", ".vtables", ".sbss", ".bss", ".common", ".vubss"]
36 |
37 |
38 | segments:
39 | - [0x0, databin, game_header]
40 | - name: game
41 | type: code
42 | start: 0x80
43 | vram: 0x533A00
44 | bss_size: 0x200
45 | subsegments:
46 | - [0x80, asm, game_code]
47 |
48 | - [0x108200, data, game_data]
49 |
50 |
51 | - { name: game_bss, type: bss, vram: 0x68F100 }
52 |
53 | - [0x15B780] #eof
54 |
```
--------------------------------------------------------------------------------
/config/dnas_ins_syms_auto.txt:
--------------------------------------------------------------------------------
```
1 | dndst_len0x38aa4c = 0x38AA4C;
2 | D_00A208EC = 0xA208EC;
3 | D_00A20A9C = 0xA20A9C;
4 | D_00A20E44 = 0xA20E44;
5 | D_00A21008 = 0xA21008;
6 | D_00A21280 = 0xA21280;
7 | D_00A2131C = 0xA2131C;
8 | D_00A21440 = 0xA21440;
9 | D_00A214DC = 0xA214DC;
10 | D_00A21614 = 0xA21614;
11 | D_00A216B0 = 0xA216B0;
12 | D_00A2195C = 0xA2195C;
13 | D_00A21A6C = 0xA21A6C;
14 | D_00A21B08 = 0xA21B08;
15 | D_00A21EB4 = 0xA21EB4;
16 | D_00A21F50 = 0xA21F50;
17 | D_00A22030 = 0xA22030;
18 | D_00A220CC = 0xA220CC;
19 | D_00A2222C = 0xA2222C;
20 | D_00A222C8 = 0xA222C8;
21 | D_00A22420 = 0xA22420;
22 | D_00A224BC = 0xA224BC;
23 | D_00A22508 = 0xA22508;
24 | D_00A225A4 = 0xA225A4;
25 | D_00A2264C = 0xA2264C;
26 | D_00A226E8 = 0xA226E8;
27 | D_00A22730 = 0xA22730;
28 | D_00A227E8 = 0xA227E8;
29 | D_00A22F88 = 0xA22F88;
30 | D_00A23688 = 0xA23688;
31 | D_00A23A10 = 0xA23A10;
32 | D_00A23B74 = 0xA23B74;
33 | D_00A23BE4 = 0xA23BE4;
34 | D_00A23D8C = 0xA23D8C;
35 | D_00A23F0C = 0xA23F0C;
36 | D_00A24154 = 0xA24154;
37 | D_00A2432C = 0xA2432C;
38 | D_00A24764 = 0xA24764;
39 | D_00A24904 = 0xA24904;
40 | D_00A24BC8 = 0xA24BC8;
41 | D_00A24C64 = 0xA24C64;
42 | D_00A24CC8 = 0xA24CC8;
43 | D_00A24F84 = 0xA24F84;
44 | D_00A25350 = 0xA25350;
45 | D_00A261A4 = 0xA261A4;
46 | D_00A27EA8 = 0xA27EA8;
47 | D_00A2806C = 0xA2806C;
48 | D_00A2823C = 0xA2823C;
49 | D_00A284CC = 0xA284CC;
50 | D_00A29060 = 0xA29060;
51 | D_00A29864 = 0xA29864;
52 | D_00A29A54 = 0xA29A54;
53 | D_00A2A40C = 0xA2A40C;
54 | D_00A2E0BC = 0xA2E0BC;
55 | D_00A2E7D4 = 0xA2E7D4;
56 | _A_EndConstructedSet0xa30679 = 0xA30679;
57 |
```
--------------------------------------------------------------------------------
/config/dnas_ins_ignores.txt:
--------------------------------------------------------------------------------
```
1 | 784 C
2 | 7A4 12
3 | 7EC C
4 | 908 C
5 | 934 24
6 | 998 25
7 | A00 C
8 | A9C C
9 | ABC 19
10 | B0C C
11 | C0C C
12 | C2C 19
13 | C7C C
14 | D20 C
15 | D40 16
16 | D8C C
17 | E30 C
18 | E50 16
19 | E9C C
20 | FB8 C
21 | FE8 1F
22 | 108C 24
23 | 1110 25
24 | 1190 C
25 | 1220 C
26 | 1240 15
27 | 128C C
28 | 1304 C
29 | 1324 16
30 | 1374 C
31 | 13F0 C
32 | 1410 19
33 | 1464 C
34 | 1718 C
35 | 1738 16
36 | 1784 C
37 | 1838 C
38 | 1858 19
39 | 18AC C
40 | 1944 C
41 | 1964 15
42 | 19B4 C
43 | 1F40 C
44 | 1F80 17
45 | 1FD8 F
46 | 2028 23
47 | 2090 C
48 | 2158 C
49 | 2178 E
50 | 21BC C
51 | 2270 C
52 | 22B0 15
53 | 230C F
54 | 2374 C
55 | 2420 C
56 | 2460 18
57 | 24C0 F
58 | 2514 1F
59 | 2574 23
60 | 25D8 C
61 | 26C8 C
62 | 26E8 E
63 | 272C C
64 | 1A5FC C
65 | 1A70C C
66 | 1A78C C
67 | 1A8BC C
68 | 1A93C C
69 | 1AC64 C
70 | 1ACE8 C
71 | 1AE28 C
72 | 1AF68 C
73 | 1B0A0 C
74 | 1B120 C
75 | 1B260 C
76 | 1B2E0 C
77 | 1B434 C
78 | 1B4B4 C
79 | 1B77C C
80 | 1B7F8 10
81 | 1B888 10
82 | 1B90C C
83 | 1BCD4 C
84 | 1BD54 C
85 | 1BE50 C
86 | 1BED0 C
87 | 1C04C C
88 | 1C0CC C
89 | 1C240 C
90 | 1C2C0 C
91 | 1C328 C
92 | 1C3A8 C
93 | 1C46C C
94 | 1C4EC C
95 | 1C550 C
96 | 1C5EC C
97 | 1CDA8 C
98 | 1D334 C
99 | 1D4A8 C
100 | 1D5A4 C
101 | 1D830 C
102 | 1DA04 C
103 | 1DA80 C
104 | 1DBAC C
105 | 1DCC8 C
106 | 1DD2C C
107 | 1DDB8 C
108 | 1DF74 C
109 | 1DFF4 C
110 | 1E14C C
111 | 1E1CC C
112 | 1E584 C
113 | 1E604 C
114 | 1E724 C
115 | 1E7A4 C
116 | 1E9E8 C
117 | 1EAE8 C
118 | 1EB68 C
119 | 1EDA4 C
120 | 1EE24 C
121 | 1F170 C
122 | 1F308 C
123 | 1F528 C
124 | 1F75C C
125 | 1F888 C
126 | 1FF70 C
127 | 1FFC4 C
128 | 20414 C
129 | 20474 C
130 | 20770 3A8
131 | 21C80 C
132 | 21CC8 C
133 | 21D90 C
134 | 21E8C C
135 | 21F60 C
136 | 2205C C
137 | 22134 C
138 | 222EC C
139 | 223E0 C
140 | 22514 C
141 | 225DC C
142 | 22650 C
143 | 226FC C
144 | 22760 C
145 | 228B4 C
146 | 22E80 C
147 | 22F64 C
148 | 22FD8 C
149 | 23090 C
150 | 2314C C
151 | 23210 C
152 | 232F0 C
153 | 233BC C
154 | 2355C C
155 | 23614 C
156 | 23634 D
157 | 23684 C
158 | 23740 C
159 | 23874 C
160 | 23E04 C
161 | 2422C C
162 | 24304 C
163 | 24324 D
164 | 243AC C
165 | 278BC C
166 | 27948 C
167 | 27A24 C
168 | 27D04 C
169 | 27DEC C
170 | 27EDC C
171 | 27FBC C
172 | 28098 C
173 | 28184 C
174 | 285F4 C
175 | 28968 4B0
176 | 296A0 320
177 |
```
--------------------------------------------------------------------------------
/config/lobby.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
2 |
3 | sha1: 9e75d24e0cc60ae0cfb92b25ae59e64b59d7f038
4 | options:
5 | basename: lobby
6 | base_path: ..
7 | target_path: overlays/lobby.bin
8 |
9 | #compiler
10 | platform: ps2
11 | compiler: MWCCPS2
12 |
13 | asm_path: asm/overlay/lobby
14 | src_path: src/overlay/lobby
15 | build_path: build
16 |
17 | extensions_path: tools/splat_ext
18 | symbol_addrs_path: [config/lobby_symbol_addrs.txt, config/main_symbol_addrs.txt]
19 | undefined_funcs_auto_path: config/lobby_funcs_auto.txt
20 | undefined_syms_auto_path: config/lobby_syms_auto.txt
21 |
22 | find_file_boundaries: False #funcs are already aligned?
23 | string_encoding: SHIFT-JIS
24 | rodata_string_guesser_level: 2
25 | disasm_unknown: True
26 | gp_value: 0x0038EB70
27 | global_vram_start: 0x100000
28 | global_vram_end: 0xe00000
29 |
30 | asm_function_macro: .fn
31 | asm_data_macro: .obj
32 | asm_nonmatching_label_macro: ""
33 | asm_inc_header: |
34 | .set noat /* allow manual use of $at */
35 | .set noreorder /* don't insert nops after branches */
36 |
37 | section_order: [".text", ".vutext", ".data", ".vudata", ".rodata", ".init", ".ctor", ".vtables", ".sbss", ".bss", ".common", ".vubss"]
38 |
39 |
40 | segments:
41 | - [0x0, databin, lobby_header]
42 | - name: lobby
43 | type: code
44 | start: 0x80
45 | vram: 0x533A00
46 | bss_size: 0xEA680
47 | subsegments:
48 | - [0x80, asm, lobby_code]
49 |
50 | - [0xDC980, data, lobby_data]
51 |
52 |
53 | - { name: lobby_bss, type: bss, vram: 0x668780 }
54 |
55 | - [0x134E00] #eof
56 |
```
--------------------------------------------------------------------------------
/config/dnas_net.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
2 |
3 | sha1: 10b4a9deb6013e913fa4c456c96943d77df50c1d #original was 22304aee7e329143e22db8bc888bfae86f7e6b63
4 | options:
5 | basename: dnas_ins
6 | base_path: ..
7 | target_path: overlays/dnas_net_noencrypt.bin
8 |
9 | #compiler
10 | platform: ps2
11 | compiler: GCC
12 |
13 | asm_path: asm/overlay/dnas_net
14 | src_path: src/overlay/dnas_net
15 | build_path: build
16 |
17 | extensions_path: tools/splat_ext
18 | symbol_addrs_path: [config/dnas_net_symbol_addrs.txt, config/main_symbol_addrs.txt, config/dnas_net_crypt_symbols.txt]
19 | undefined_funcs_auto_path: config/dnas_net_funcs_auto.txt
20 | undefined_syms_auto_path: config/dnas_net_syms_auto.txt
21 |
22 | asm_function_macro: .fn
23 | asm_data_macro: .obj
24 | asm_nonmatching_label_macro: ""
25 | asm_inc_header: |
26 | .set noat /* allow manual use of $at */
27 | .set noreorder /* don't insert nops after branches */
28 |
29 | find_file_boundaries: False #funcs are already aligned?
30 | string_encoding: SHIFT-JIS
31 | rodata_string_guesser_level: 2
32 | disasm_unknown: True
33 | gp_value: 0x0038EB70
34 |
35 | section_order: [".text", ".vutext", ".data", ".vudata", ".rodata", ".init", ".ctor", ".vtables", ".sbss", ".bss", ".common", ".vubss"]
36 |
37 |
38 | segments:
39 | - [0x0, databin, dnas_net_header]
40 | - name: dnas_net
41 | type: code
42 | start: 0x80
43 | vram: 0xA06280
44 | bss_size: 0x81400
45 | subsegments:
46 | - [0x80, asm, dnas_net_code]
47 |
48 | - [0x70F80, data, dnas_net_data]
49 |
50 |
51 | - { name: dnas_net_bss, type: bss, vram: 0xAA7200 }
52 |
53 | - [0xA1000] #eof
54 |
```
--------------------------------------------------------------------------------
/config/dnas_ins.yaml:
--------------------------------------------------------------------------------
```yaml
1 |
2 |
3 | sha1: e34208b621caf07b02b31472b897502fe1d37a01 #obfuscated matches 5b78507e9078b5f3c19681e1d3dc41f8a17ecf73
4 | options:
5 | basename: dnas_ins
6 | base_path: ..
7 | target_path: overlays/dnas_ins_noencrypt.bin
8 |
9 | #compiler
10 | platform: ps2
11 | compiler: GCC
12 |
13 | asm_path: asm/overlay/dnas_ins
14 | src_path: src/overlay/dnas_ins
15 | build_path: build
16 |
17 | extensions_path: tools/splat_ext
18 | symbol_addrs_path: [config/dnas_ins_symbol_addrs.txt, config/main_symbol_addrs.txt, config/dnas_ins_crypt_symbols.txt]
19 | undefined_funcs_auto_path: config/dnas_ins_funcs_auto.txt
20 | undefined_syms_auto_path: config/dnas_ins_syms_auto.txt
21 |
22 | asm_function_macro: .fn
23 | asm_data_macro: .obj
24 | asm_nonmatching_label_macro: ""
25 | asm_inc_header: |
26 | .set noat /* allow manual use of $at */
27 | .set noreorder /* don't insert nops after branches */
28 |
29 | find_file_boundaries: False #funcs are already aligned?
30 | string_encoding: SHIFT-JIS
31 | rodata_string_guesser_level: 2
32 | disasm_unknown: True
33 | gp_value: 0x0038EB70
34 |
35 | section_order: [".text", ".vutext", ".data", ".vudata", ".rodata", ".init", ".ctor", ".vtables", ".sbss", ".bss", ".common", ".vubss"]
36 |
37 |
38 | segments:
39 | - [0x0, databin, dnas_ins_header]
40 | - name: dnas_ins
41 | type: code
42 | start: 0x80
43 | vram: 0xA06280
44 | bss_size: 0x6FB00
45 | subsegments:
46 | - [0x80, asm, dnas_ins_code]
47 |
48 | - [0x29D00, data, dnas_ins_data]
49 |
50 |
51 | - { name: dnas_ins_bss, type: bss, vram: 0xA37D00 }
52 |
53 | - [0x31B00] #eof
54 |
```
--------------------------------------------------------------------------------
/tools/verify.py:
--------------------------------------------------------------------------------
```python
1 | import sys
2 | from pathlib import Path
3 |
4 | bytes_a = []
5 | bytes_b = []
6 | ignores = []
7 |
8 | def main():
9 | if(len(sys.argv) < 4):
10 | print("missing args")
11 | return
12 | file_a = Path(sys.argv[1])
13 | file_b = Path(sys.argv[2])
14 | start = int(sys.argv[3], 16)
15 | length = int(sys.argv[4], 16)
16 | ignorefile = None
17 | ignorepos = 0
18 | ignores = []
19 | if(len(sys.argv) > 5):
20 | ignorefile = Path(sys.argv[5])
21 |
22 | with open(file_a, 'rb') as f:
23 | bytes_a = f.read()
24 | with open(file_b, 'rb') as f:
25 | bytes_b = f.read()
26 | if(ignorefile != None):
27 | with open(ignorefile, 'r') as f:
28 | ignores = f.readlines()
29 | mismatch = -1
30 | ctr = 0
31 | mislen = 0
32 | for b in range(length):
33 | pos = start+b
34 | if(ignores and ignorepos < len(ignores)):
35 | igdat = ignores[ignorepos].split()
36 | igstart = int(igdat[0], 16)
37 | igend = igstart + int(igdat[1], 16)
38 | #print(f"test ignore: {igstart:X} {igend:X} {pos:X}")
39 | if(pos >= igstart and pos < igend):
40 | #print(f"ignored {pos:X}")
41 | continue
42 | if(pos == igend):
43 | ignorepos += 1
44 | continue
45 | if(bytes_a[pos:pos+1] != bytes_b[pos:pos+1]):
46 | if(mislen == 0):
47 | mismatch = pos
48 | mislen += 1
49 | else:
50 | if(mislen != 0):
51 | print(f"{mismatch:X} {mislen:X}")
52 | mislen = 0
53 | ctr += 1
54 | if(ctr == 100):
55 | print("reporting limit reached")
56 | break
57 | if(mislen != 0):
58 | print(f"{mismatch:X} {mislen:X}")
59 | if(mismatch != -1):
60 | print("not funny, didn't match")
61 | return
62 | print("all bytes verified!")
63 |
64 | if __name__ == '__main__':
65 | main()
66 |
```
--------------------------------------------------------------------------------
/config/dnas_net_syms_auto.txt:
--------------------------------------------------------------------------------
```
1 | D_35C7B1 = 0x35C7B1;
2 | pass_phrase0x38a028 = 0x38A028;
3 | dnprox_str_main_s = 0x3A0148;
4 | dnprox_str_main = 0x3A0257;
5 | MyDomain0x4e4a50 = 0x4E4A50;
6 | D_00A08CA4 = 0xA08CA4;
7 | D_00A08DA4 = 0xA08DA4;
8 | D_00A08EA4 = 0xA08EA4;
9 | D_00A08FB4 = 0xA08FB4;
10 | D_00A090BC = 0xA090BC;
11 | D_00A091BC = 0xA091BC;
12 | D_00A0929C = 0xA0929C;
13 | D_00A0939C = 0xA0939C;
14 | D_00A0947C = 0xA0947C;
15 | D_00A0955C = 0xA0955C;
16 | D_00A0963C = 0xA0963C;
17 | D_00A0973C = 0xA0973C;
18 | D_00A09824 = 0xA09824;
19 | D_00A09924 = 0xA09924;
20 | D_00A09A2C = 0xA09A2C;
21 | D_00A09D9C = 0xA09D9C;
22 | D_00A09E9C = 0xA09E9C;
23 | D_00A09F84 = 0xA09F84;
24 | D_00A0A064 = 0xA0A064;
25 | D_00A0AFD0 = 0xA0AFD0;
26 | D_00A0B25C = 0xA0B25C;
27 | D_00A0B518 = 0xA0B518;
28 | D_00A0C3DC = 0xA0C3DC;
29 | D_00A0C664 = 0xA0C664;
30 | D_00A0C7C4 = 0xA0C7C4;
31 | D_00A0C8F8 = 0xA0C8F8;
32 | D_00A0CA3C = 0xA0CA3C;
33 | D_00A0CA84 = 0xA0CA84;
34 | D_00A0CCCC = 0xA0CCCC;
35 | D_00A0CF1C = 0xA0CF1C;
36 | D_00A0D810 = 0xA0D810;
37 | D_00A10BE0 = 0xA10BE0;
38 | D_00A11068 = 0xA11068;
39 | D_00A1109C = 0xA1109C;
40 | D_00A11C7C = 0xA11C7C;
41 | D_00A11CA0 = 0xA11CA0;
42 | D_00A12120 = 0xA12120;
43 | D_00A12130 = 0xA12130;
44 | D_00A126B0 = 0xA126B0;
45 | D_00A12D8C = 0xA12D8C;
46 | D_00A12F20 = 0xA12F20;
47 | D_00A13690 = 0xA13690;
48 | D_00A21A48 = 0xA21A48;
49 | D_00A21AB0 = 0xA21AB0;
50 | D_00A21AE0 = 0xA21AE0;
51 | D_00A21BB8 = 0xA21BB8;
52 | D_00A21C20 = 0xA21C20;
53 | D_00A21C88 = 0xA21C88;
54 | D_00A21D08 = 0xA21D08;
55 | D_00A21D70 = 0xA21D70;
56 | D_00A21D80 = 0xA21D80;
57 | D_00A6D47C = 0xA6D47C;
58 | D_00A6D724 = 0xA6D724;
59 | D_00A6DA64 = 0xA6DA64;
60 | D_00A6DB48 = 0xA6DB48;
61 | D_00A6DC30 = 0xA6DC30;
62 | D_00A6DD1C = 0xA6DD1C;
63 | D_00A6DE04 = 0xA6DE04;
64 | D_00A6DF18 = 0xA6DF18;
65 | D_00A6E044 = 0xA6E044;
66 | D_00A6E1FC = 0xA6E1FC;
67 | D_00A6E3CC = 0xA6E3CC;
68 | D_00A6E674 = 0xA6E674;
69 | D_00A6E894 = 0xA6E894;
70 | D_00A6EBC4 = 0xA6EBC4;
71 | D_00A6ED94 = 0xA6ED94;
72 | D_00A6EEFC = 0xA6EEFC;
73 | D_00A6F104 = 0xA6F104;
74 | D_00A6F434 = 0xA6F434;
75 | D_00A6F64C = 0xA6F64C;
76 | D_00A6FE74 = 0xA6FE74;
77 | D_00A70064 = 0xA70064;
78 | D_00A70A1C = 0xA70A1C;
79 | D_00A73108 = 0xA73108;
80 | D_00A733C4 = 0xA733C4;
81 | D_00A738CC = 0xA738CC;
82 | D_00A73CE4 = 0xA73CE4;
83 | D_00A73F4C = 0xA73F4C;
84 | D_00A742DC = 0xA742DC;
85 | D_00A74794 = 0xA74794;
86 | D_00A749C4 = 0xA749C4;
87 | D_00A74D44 = 0xA74D44;
88 | D_00A75064 = 0xA75064;
89 | D_00A7530C = 0xA7530C;
90 | D_00A75914 = 0xA75914;
91 | D_00A76084 = 0xA76084;
92 | D_00A7679C = 0xA7679C;
93 | D_00A87835 = 0xA87835;
94 | D_00A87836 = 0xA87836;
95 | D_00A87849 = 0xA87849;
96 | D_00A8784A = 0xA8784A;
97 | _A_EndConstructedSet0xa8c919 = 0xA8C919;
98 |
```
--------------------------------------------------------------------------------
/src/main/stage.c:
--------------------------------------------------------------------------------
```cpp
1 | #include "common.h"
2 | #include "structs.h"
3 | #pragma cats off
4 | extern void * memset0x19dd28(void *__s,int __c,size_t __n);
5 | extern u8 * Stage_data_get0x226900(u8 area);
6 | s16 flash_timer0x38a118;
7 | s16 flash_flag0x38a114;
8 |
9 | STAGE_WORK stage_work0x3d8230;
10 | extern GAME_WORK game_w0x3f33f0;
11 | extern STAGE_FOG *stage_fog_tbl0x2f3000[];
12 | extern u16 Stg_env_type0x2f6370[];
13 |
14 |
15 | void stage_w_init0x15bab0(void) {
16 | stage_work0x3d8230.unk_07 = 0;
17 | stage_work0x3d8230.unk_06 = 0;
18 | stage_work0x3d8230.unk_00 = 1;
19 | stage_work0x3d8230.unk_05 = 0;
20 | stage_work0x3d8230.unk_04 = 0;
21 | stage_work0x3d8230.origin.z = 0;
22 | stage_work0x3d8230.origin.y = 0;
23 | stage_work0x3d8230.origin.x = 0;
24 | stage_work0x3d8230.offset.z = 0;
25 | stage_work0x3d8230.offset.y = 0;
26 | stage_work0x3d8230.offset.x = 0;
27 | stage_work0x3d8230.unk_1C.z = 0;
28 | stage_work0x3d8230.unk_1C.y = 0;
29 | stage_work0x3d8230.unk_1C.x = 0;
30 | stage_work0x3d8230.current_area_id = game_w0x3f33f0.current_area_id;
31 | stage_work0x3d8230.area_origins = Stage_data_get0x226900(stage_work0x3d8230.current_area_id);
32 | }
33 |
34 | void stage_fog_set0x15bb60(u8 arg0) {
35 | STAGE_FOG * temp_s0 = stage_fog_tbl0x2f3000[arg0];
36 | flSetRenderState0x177720(0xF, (temp_s0->b4 << 0x18) | (temp_s0-> b1 << 0x10) | (temp_s0->b2 << 8) | temp_s0->b3);
37 | flSetRenderState0x177720(0x10, temp_s0->x);
38 | flSetRenderState0x177720(0x11, temp_s0->y);
39 | }
40 |
41 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @550x35b810);
42 |
43 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @560x35b818);
44 |
45 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @570x35b820);
46 |
47 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @580x35b828);
48 |
49 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @590x35b838);
50 |
51 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @600x35b840);
52 |
53 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @610x35b848);
54 |
55 | INCLUDE_RODATA("asm/main/nonmatchings/stage", @620x35b858);
56 |
57 | INCLUDE_ASM("asm/main/nonmatchings/stage", stage_set_set0x15bbe0);
58 |
59 | INCLUDE_ASM("asm/main/nonmatchings/stage", stage_mv_ck0x15c210);
60 |
61 | void * clr_stg_work0x15c490(void) {
62 | return memset0x19dd28(&stage_work0x3d8230, 0, 100);
63 | }
64 |
65 | void clr_flash0x15c4b0(void) {
66 | flash_flag0x38a114 = 0;
67 | flash_timer0x38a118 = 0;
68 | }
69 |
70 | s16 Stage_env_ck0x15c4c0(u8 stage) {
71 | return Stg_env_type0x2f6370[stage];
72 | }
73 |
74 | INCLUDE_ASM("asm/main/nonmatchings/stage", Pile_on0x15c4e0);
75 |
76 | INCLUDE_ASM("asm/main/nonmatchings/stage", stage_i0x15c520);
77 |
78 | INCLUDE_ASM("asm/main/nonmatchings/stage", stage_se_move0x15c6b0);
79 |
80 | INCLUDE_ASM("asm/main/nonmatchings/stage", stage_m0x15c940);
81 |
82 | INCLUDE_ASM("asm/main/nonmatchings/stage", move_stage0x15cce0);
83 |
84 | INCLUDE_ASM("asm/main/nonmatchings/stage", trans_stage_sub0x15cd40);
85 |
86 | INCLUDE_ASM("asm/main/nonmatchings/stage", trans_stage0x15cd90);
87 |
88 | INCLUDE_ASM("asm/main/nonmatchings/stage", spr_disp_sub0x1608c0);
89 |
90 | INCLUDE_ASM("asm/main/nonmatchings/stage", stage_spr_disp0x160ab0);
91 |
```
--------------------------------------------------------------------------------
/config/dnas_net_ignores.txt:
--------------------------------------------------------------------------------
```
1 | 1580 C
2 | 15A0 1D
3 | 15DC 1C
4 | 165C C
5 | 2A68 C
6 | 2AC4 C
7 | 2B68 C
8 | 2BC4 C
9 | 2C74 C
10 | 2CC4 C
11 | 2D7C C
12 | 2DD4 C
13 | 2E80 C
14 | 2EDC C
15 | 2F80 C
16 | 2FDC C
17 | 3080 C
18 | 30BC C
19 | 3160 C
20 | 31BC C
21 | 3260 C
22 | 329C C
23 | 3340 C
24 | 337C C
25 | 3420 C
26 | 345C C
27 | 3500 C
28 | 355C C
29 | 3600 C
30 | 3644 C
31 | 36F0 C
32 | 3744 C
33 | 37F8 C
34 | 384C C
35 | 3904 C
36 | 39B4 C
37 | 3A68 C
38 | 3ACC C
39 | 3B78 C
40 | 3BBC C
41 | 3C68 C
42 | 3CBC C
43 | 3D68 C
44 | 3DA4 C
45 | 3E48 C
46 | 3E84 C
47 | 3F34 C
48 | 3FE4 C
49 | 4098 C
50 | 40FC C
51 | 41B0 C
52 | 42C8 C
53 | 4390 C
54 | 4480 14 - string
55 | 44C0 23 - string
56 | 4510 22 - string
57 | 4560 25 - string
58 | 45B0 17 - string
59 | 45F0 1E - string
60 | 4638 1D - string
61 | 4680 16 - string
62 | 46C0 14 - string
63 | 4750 22 - string
64 | 47A0 27 - string
65 | 47F0 29 - string
66 | 4848 25 - string
67 | 48F0 25 - string
68 | 4940 27 - string
69 | 4990 30 - string
70 | 4A14 1B - string
71 | 4A84 15 - string
72 | 4AC8 15 - string
73 | 4B08 12 - string
74 | 4B98 C
75 | 4D7C C
76 | 4D9C 6 - string
77 | 4DF0 C
78 | 4E8C C
79 | 4EAC B - string
80 | 4EF0 21 - string
81 | 4F50 19 - string
82 | 4FA8 10 - string
83 | 4FF8 2 - string
84 | 507C C
85 | 52D8 C
86 | 5338 C
87 | 6078 C
88 | 61FC C
89 | 62E0 C
90 | 6484 C
91 | 6568 C
92 | 6588 11 - string
93 | 65E4 C
94 | 669C C
95 | 66BC 10 - string
96 | 6718 C
97 | 681C C
98 | 68A4 C
99 | 6AA0 C
100 | 6AEC C
101 | 6BA4 C
102 | 6C3C C
103 | 6CF0 C
104 | 6D3C C
105 | 708C C
106 | 7110 C
107 | 7258 C
108 | 72CC C
109 | 7408 C
110 | 7438 C
111 | 75AC C
112 | 7630 C
113 | 8264 C
114 | 8284 12 - string
115 | 82CC C
116 | 83E8 C
117 | 8414 24 - string
118 | 8478 25 - string
119 | 84E0 C
120 | 857C C
121 | 859C 19 - string
122 | 85EC C
123 | 86EC C
124 | 870C 19 - string
125 | 875C C
126 | 8800 C
127 | 8820 16 - string
128 | 886C C
129 | 8910 C
130 | 8930 16 - string
131 | 897C C
132 | 8A98 C
133 | 8AC8 1F - string
134 | 8B6C 24 - string
135 | 8BF0 25 - string
136 | 8C70 C
137 | 8D00 C
138 | 8D20 15 - string
139 | 8D6C C
140 | 8DE4 C
141 | 8E04 16 - string
142 | 8E54 C
143 | 8ED0 C
144 | 8EF0 19 - string
145 | 8F44 C
146 | 91F8 C
147 | 9218 16 - string
148 | 9264 C
149 | 9318 C
150 | 9338 19 - string
151 | 938C C
152 | 9424 C
153 | 9444 15 - string
154 | 9494 C
155 | 9A20 C
156 | 9A60 17 - string
157 | 9AB8 F - string
158 | 9B08 23 - string
159 | 9B70 C
160 | 9C38 C
161 | 9C58 E - string
162 | 9C9C C
163 | 9D50 C
164 | 9D90 15 - string
165 | 9DEC F - string
166 | 9E54 C
167 | 9F00 C
168 | 9F40 18 - string
169 | 9FA0 F - string
170 | 9FF4 1F - string
171 | A054 23 - string
172 | A0B8 C
173 | A1A8 C
174 | A1C8 E - string
175 | A20C C
176 | A62C C
177 | A64C AC - table
178 | A720 4E - table
179 | A790 61 - table
180 | A818 61 - table
181 | A8A0 61 - table
182 | A928 61 - table
183 | AA00 C
184 | ADC8 C
185 | ADE8 8 - string
186 | AE24 D - string
187 | AEBC C
188 | BA5C C
189 | BAC0 C
190 | CB30 C
191 | CB50 1D - string
192 | CBAC C
193 | CDAC C
194 | CDCC 128 - table
195 | CF20 60 - table
196 | CFA0 A4 - table
197 | D068 A4 - table
198 | D130 A4 - table
199 | D1F8 A0 - table
200 | D42C C
201 | 2CB48 8A4 - table
202 | 64F28 8a8 - table
203 | 66914 C
204 | 6699C C
205 | 66A54 C
206 | 66ADC C
207 | 66B8C C
208 | 66BF0 C
209 | 66CC8 C
210 | 6729C C
211 | 6739C C
212 | 67544 C
213 | 67614 C
214 | 67680 C
215 | 6772C C
216 | 67798 C
217 | 6783C C
218 | 67884 C
219 | 67924 C
220 | 67968 C
221 | 67A0C C
222 | 67A50 C
223 | 67AF4 C
224 | 67B3C C
225 | 67BDC C
226 | 67C24 C
227 | 67CF0 C
228 | 67D38 C
229 | 67E20 C
230 | 67E64 C
231 | 67F20 C
232 | 6801C C
233 | 680F0 C
234 | 681EC C
235 | 682C4 C
236 | 68494 C
237 | 68574 C
238 | 686B4 C
239 | 68774 C
240 | 687E0 C
241 | 688A4 C
242 | 689E4 C
243 | 68AB8 C
244 | 68BB4 C
245 | 68C74 C
246 | 68D1C C
247 | 68DE4 C
248 | 68F24 C
249 | 68FFC C
250 | 69254 C
251 | 6932C C
252 | 6946C C
253 | 69574 C
254 | 695E8 C
255 | 696A0 C
256 | 6975C C
257 | 69820 C
258 | 69900 C
259 | 699CC C
260 | 69B6C C
261 | 69C24 C
262 | 69C44 D - string
263 | 69C94 C
264 | 69D50 C
265 | 69E84 C
266 | 6A414 C
267 | 6A83C C
268 | 6A914 C
269 | 6A934 D - string
270 | 6A9BC C
271 | 6CED8 C
272 | 6CF28 C
273 | 6D000 C
274 | 6D1E4 C
275 | 6D2EC C
276 | 6D6EC C
277 | 6D7C8 C
278 | 6D864 C
279 | 6D92C C
280 | 6DB04 C
281 | 6DBD4 C
282 | 6DD6C C
283 | 6DE58 C
284 | 6E0FC C
285 | 6E21C C
286 | 6E290 C
287 | 6E360 C
288 | 6E5B4 C
289 | 6E67C C
290 | 6E6DC C
291 | 6E798 C
292 | 6E7E4 C
293 | 6E8B8 C
294 | 6EB64 C
295 | 6EC4C C
296 | 6EE84 C
297 | 6EFC4 C
298 | 6F12C C
299 | 6F2A0 C
300 | 6F734 C
301 | 6F884 C
302 | 6F910 C
303 | 6F9EC C
304 | 6FCCC C
305 | 6FDB4 C
306 | 6FEA4 C
307 | 6FF84 C
308 | 70060 C
309 | 7014C C
310 | 705BC C
311 |
```
--------------------------------------------------------------------------------
/config/yn_funcs_auto.txt:
--------------------------------------------------------------------------------
```
1 | str_stop_all0x100b10 = 0x100B10;
2 | se_req0x159450 = 0x159450;
3 | se_stop_all0x159f90 = 0x159F90;
4 | SetFilterMode0x161500 = 0x161500;
5 | flPS2DmaWait0x16efd0 = 0x16EFD0;
6 | flCreateTextureFromTim2_mem0x16fe00 = 0x16FE00;
7 | flSin0x173600 = 0x173600;
8 | flSetRenderState0x177720 = 0x177720;
9 | flReleaseTextureHandle0x188840 = 0x188840;
10 | flReleasePaletteHandle0x1889c0 = 0x1889C0;
11 | flPADDestroy0x18e5e0 = 0x18E5E0;
12 | sceCdInit0x197208 = 0x197208;
13 | bzero0x199900 = 0x199900;
14 | memalign0x19cd70 = 0x19CD70;
15 | free0x19cff8 = 0x19CFF8;
16 | memset0x19dd28 = 0x19DD28;
17 | printf0x19ef90 = 0x19EF90;
18 | sprintf0x1a0a90 = 0x1A0A90;
19 | strchr0x1a0f48 = 0x1A0F48;
20 | strcmp0x1a10d8 = 0x1A10D8;
21 | strcpy0x1a1220 = 0x1A1220;
22 | strlen0x1a13b8 = 0x1A13B8;
23 | strncmp0x1a16a0 = 0x1A16A0;
24 | sceGsSyncPath0x1a97d8 = 0x1A97D8;
25 | sceGsSyncVCallback0x1a9e58 = 0x1A9E58;
26 | ADXT_Finish0x1fb378 = 0x1FB378;
27 | ADXM_ShutdownThrd0x1fc830 = 0x1FC830;
28 | ADXPS2_LoadFcacheDvd0x202220 = 0x202220;
29 | flfntInit0x216610 = 0x216610;
30 | flfntSetSize0x216890 = 0x216890;
31 | flfntLocate0x2168b0 = 0x2168B0;
32 | flfntSetZ0x2168d0 = 0x2168D0;
33 | flfntSetPalette0x2168e0 = 0x2168E0;
34 | flfntSetHalftype0x216910 = 0x216910;
35 | flfntPrintf0x216920 = 0x216920;
36 | flfntDraw0x216ac0 = 0x216AC0;
37 | DeviceSelectInitialize0x233280 = 0x233280;
38 | DeviceRollbackDriver0x2332c0 = 0x2332C0;
39 | DeviceLoadDriver20x233420 = 0x233420;
40 | DeviceLoadDriver0x233540 = 0x233540;
41 | DeviceUpdateStatus0x2337f0 = 0x2337F0;
42 | InetIPAddrFromString0x237950 = 0x237950;
43 | RemoveIntcHandler0x254420 = 0x254420;
44 | RemoveDmacHandler0x254450 = 0x254450;
45 | CreateThread0x254520 = 0x254520;
46 | DeleteThread0x254530 = 0x254530;
47 | StartThread0x254540 = 0x254540;
48 | TerminateThread0x254570 = 0x254570;
49 | ChangeThreadPriority0x2545b0 = 0x2545B0;
50 | GetThreadId0x254610 = 0x254610;
51 | CreateSema0x254720 = 0x254720;
52 | DeleteSema0x254730 = 0x254730;
53 | iSignalSema0x254750 = 0x254750;
54 | WaitSema0x254760 = 0x254760;
55 | PollSema0x254770 = 0x254770;
56 | FlushCache0x2549a0 = 0x2549A0;
57 | DisableIntc0x255200 = 0x255200;
58 | DisableDmac0x2552d0 = 0x2552D0;
59 | scePrintf0x256948 = 0x256948;
60 | sceSifExitCmd0x256ca0 = 0x256CA0;
61 | sceSifInitRpc0x257180 = 0x257180;
62 | sceSifBindRpc0x257918 = 0x257918;
63 | sceSifCallRpc0x257ae8 = 0x257AE8;
64 | sceSifCheckStatRpc0x257ce0 = 0x257CE0;
65 | sceSifSetRpcQueue0x257d20 = 0x257D20;
66 | sceSifRegisterRpc0x257db8 = 0x257DB8;
67 | sceSifRemoveRpc0x257e88 = 0x257E88;
68 | sceSifRemoveRpcQueue0x257f20 = 0x257F20;
69 | sceSifRpcLoop0x2581d0 = 0x2581D0;
70 | sceSifStopModule0x25c248 = 0x25C248;
71 | sceSifUnloadModule0x25c450 = 0x25C450;
72 | sceSifSearchModuleByName0x25c4e0 = 0x25C4E0;
73 | sceSifLoadModule0x25c878 = 0x25C878;
74 | sceSifLoadStartModule0x25c898 = 0x25C898;
75 | DIntr0x25d760 = 0x25D760;
76 | EIntr0x25d7b8 = 0x25D7B8;
77 | LoadExecPS20x25ddc0 = 0x25DDC0;
78 | Net_kb_input_sub0x26cb80 = 0x26CB80;
79 | Net_kb_input_init20x26cbe0 = 0x26CBE0;
80 | SoftKey_Getstr0x26cc90 = 0x26CC90;
81 | SoftKey_onoff0x26cca0 = 0x26CCA0;
82 | SoftKey_trans0x26cce0 = 0x26CCE0;
83 | YnFile_Data_load0x26cd50 = 0x26CD50;
84 | McActInit0x27fdf0 = 0x27FDF0;
85 | McActMain0x27fe20 = 0x27FE20;
86 | McActCheckSet0x27ff00 = 0x27FF00;
87 | McActFormatSet0x280890 = 0x280890;
88 | McActListSet0x280b70 = 0x280B70;
89 | McActResult0x280cf0 = 0x280CF0;
90 | net_flps00080x28bec0 = 0x28BEC0;
91 |
```
--------------------------------------------------------------------------------
/config/dnas_net_funcs_auto.txt:
--------------------------------------------------------------------------------
```
1 | sceCdSync0x196ed8 = 0x196ED8;
2 | sceCdDiskReady0x1976e0 = 0x1976E0;
3 | sceCdStandby0x197b98 = 0x197B98;
4 | sceCdReadClock0x197f20 = 0x197F20;
5 | atoi0x1997e8 = 0x1997E8;
6 | bsearch0x199830 = 0x199830;
7 | __errno0x19af58 = 0x19AF58;
8 | fclose0x19b018 = 0x19B018;
9 | fflush0x19b118 = 0x19B118;
10 | fgets0x19b230 = 0x19B230;
11 | fopen0x19b7f8 = 0x19B7F8;
12 | fprintf0x19b820 = 0x19B820;
13 | fread0x19b878 = 0x19B878;
14 | fseek0x19be00 = 0x19BE00;
15 | ftell0x19c310 = 0x19C310;
16 | fwrite0x19c890 = 0x19C890;
17 | getenv0x19c940 = 0x19C940;
18 | memcmp0x19dad8 = 0x19DAD8;
19 | memcpy0x19db70 = 0x19DB70;
20 | memset0x19dd28 = 0x19DD28;
21 | qsort0x19f000 = 0x19F000;
22 | sprintf0x1a0a90 = 0x1A0A90;
23 | strcat0x1a0e18 = 0x1A0E18;
24 | strcmp0x1a10d8 = 0x1A10D8;
25 | strcpy0x1a1220 = 0x1A1220;
26 | strcspn0x1a1338 = 0x1A1338;
27 | strlen0x1a13b8 = 0x1A13B8;
28 | strncat0x1a14f0 = 0x1A14F0;
29 | strncmp0x1a16a0 = 0x1A16A0;
30 | strncpy0x1a1858 = 0x1A1858;
31 | strtol0x1a2d78 = 0x1A2D78;
32 | vsprintf0x1a6850 = 0x1A6850;
33 | __muldi30x1a6a70 = 0x1A6A70;
34 | __divdi30x1a6ae8 = 0x1A6AE8;
35 | __moddi30x1a7180 = 0x1A7180;
36 | __udivdi30x1a7810 = 0x1A7810;
37 | __umoddi30x1a7d90 = 0x1A7D90;
38 | CpInetInterfaceProblemEnable0x235350 = 0x235350;
39 | CpInetDnsInitialize0x235a10 = 0x235A10;
40 | CpInetDnsDispose0x235a70 = 0x235A70;
41 | sceNetGlueHtons0x236b00 = 0x236B00;
42 | sceNetGlueInetAton0x236b20 = 0x236B20;
43 | __sceNetGlueErrnoLoc0x236b50 = 0x236B50;
44 | __sceNetGlueHErrnoLoc0x236b60 = 0x236B60;
45 | sceNetGlueAbort0x236b70 = 0x236B70;
46 | sceNetGlueAbortResolver0x236c50 = 0x236C50;
47 | sceNetGlueSocket0x236c60 = 0x236C60;
48 | sceNetGlueConnect0x236d10 = 0x236D10;
49 | sceNetGlueGethostbyname0x236f10 = 0x236F10;
50 | sceNetGlueRecv0x237220 = 0x237220;
51 | sceNetGlueSend0x237500 = 0x237500;
52 | sceNetGlueShutdown0x237680 = 0x237680;
53 | sceNetGlueThreadInit0x237790 = 0x237790;
54 | sceNetGlueThreadTerminate0x2377a0 = 0x2377A0;
55 | CpInetHttpResolvCacheInitialize0x2377b0 = 0x2377B0;
56 | CpInetHttpInitialize0x2377f0 = 0x2377F0;
57 | InetDnsSetAll0x237dc0 = 0x237DC0;
58 | CreateThread0x254520 = 0x254520;
59 | DeleteThread0x254530 = 0x254530;
60 | StartThread0x254540 = 0x254540;
61 | TerminateThread0x254570 = 0x254570;
62 | GetThreadId0x254610 = 0x254610;
63 | ReferThreadStatus0x254620 = 0x254620;
64 | CreateSema0x254720 = 0x254720;
65 | DeleteSema0x254730 = 0x254730;
66 | SignalSema0x254740 = 0x254740;
67 | iSignalSema0x254750 = 0x254750;
68 | WaitSema0x254760 = 0x254760;
69 | PollSema0x254770 = 0x254770;
70 | FlushCache0x2549a0 = 0x2549A0;
71 | sceSifDmaStat0x254ac0 = 0x254AC0;
72 | sceSifSetDma0x254ae0 = 0x254AE0;
73 | getpid0x254ef0 = 0x254EF0;
74 | stat0x254f20 = 0x254F20;
75 | DelayThread0x255780 = 0x255780;
76 | sceSifInitRpc0x257180 = 0x257180;
77 | sceSifBindRpc0x257918 = 0x257918;
78 | sceSifCallRpc0x257ae8 = 0x257AE8;
79 | sceOpen0x258b70 = 0x258B70;
80 | sceClose0x258df8 = 0x258DF8;
81 | sceLseek0x258f78 = 0x258F78;
82 | sceRead0x2591b0 = 0x2591B0;
83 | sceWrite0x259410 = 0x259410;
84 | sceSifInitIopHeap0x25b928 = 0x25B928;
85 | sceSifAllocIopHeap0x25b9b0 = 0x25B9B0;
86 | sceSifFreeIopHeap0x25bb18 = 0x25BB18;
87 | sceSifStopModule0x25c248 = 0x25C248;
88 | sceSifUnloadModule0x25c450 = 0x25C450;
89 | sceSifSearchModuleByName0x25c4e0 = 0x25C4E0;
90 | sceSifLoadModuleBuffer0x25c610 = 0x25C610;
91 | sceSifRebootIop0x25cda8 = 0x25CDA8;
92 | TimerUSec2BusClock0x25f228 = 0x25F228;
93 | SetTimerAlarm0x25f3d8 = 0x25F3D8;
94 | ReleaseTimerAlarm0x25f5f8 = 0x25F5F8;
95 |
```
--------------------------------------------------------------------------------
/config/undefined_syms_auto.txt:
--------------------------------------------------------------------------------
```
1 | D_0025D73C = 0x25D73C;
2 | Eft_blood_rgb__Green = 0x2E6041;
3 | Eft_blood_rbg__Blue = 0x2E6042;
4 | Eft_kemuri_rgb__Green = 0x2E6061;
5 | Eft_kemuri_rgb__Blue = 0x2E6062;
6 | Eft_kemuri_rgb__Alpha = 0x2E6063;
7 | D_002E7E71 = 0x2E7E71;
8 | D_002E7E72 = 0x2E7E72;
9 | D_002E8522 = 0x2E8522;
10 | D_002EF302 = 0x2EF302;
11 | D_002EF306 = 0x2EF306;
12 | D_002F0A9A = 0x2F0A9A;
13 | D_002F0AC2 = 0x2F0AC2;
14 | D_002F0ACA = 0x2F0ACA;
15 | D_002F0AD2 = 0x2F0AD2;
16 | D_002F0ADA = 0x2F0ADA;
17 | D_002F0CC2 = 0x2F0CC2;
18 | D_002F0CDA = 0x2F0CDA;
19 | D_002F16A2 = 0x2F16A2;
20 | D_002F16A6 = 0x2F16A6;
21 | D_002F16E2 = 0x2F16E2;
22 | D_002F16E6 = 0x2F16E6;
23 | D_002F1722 = 0x2F1722;
24 | D_002F1726 = 0x2F1726;
25 | D_002F1762 = 0x2F1762;
26 | D_002F1766 = 0x2F1766;
27 | D_002F17A2 = 0x2F17A2;
28 | D_002F17C2 = 0x2F17C2;
29 | adxb_def_km0x30e346 = 0x30E346;
30 | adxps2_rt_ver20x31e2d5 = 0x31E2D5;
31 | adxps2_rt_ver30x31e2d6 = 0x31E2D6;
32 | adxps2_rt_ver40x31e2d7 = 0x31E2D7;
33 | D_0031E731 = 0x31E731;
34 | D_0031E732 = 0x31E732;
35 | Snd_bgm_tbl__1_0x32D471 = 0x32D471;
36 | D_0032D9CA = 0x32D9CA;
37 | Shell_data__1 = 0x334F41;
38 | D_00334F42 = 0x334F42;
39 | D_003351C1 = 0x3351C1;
40 | D_003351C2 = 0x3351C2;
41 | D_003351C3 = 0x3351C3;
42 | D_003351CA = 0x3351CA;
43 | D_003351CB = 0x3351CB;
44 | D_003351CD = 0x3351CD;
45 | D_003351CE = 0x3351CE;
46 | D_003351CF = 0x3351CF;
47 | D_003351D1 = 0x3351D1;
48 | D_003367B1 = 0x3367B1;
49 | Gun_data__2 = 0x3367B2;
50 | D_003367B3 = 0x3367B3;
51 | D_003367BA = 0x3367BA;
52 | D_00336BF2 = 0x336BF2;
53 | D_00336BF3 = 0x336BF3;
54 | D_00336BF9 = 0x336BF9;
55 | D_00336BFA = 0x336BFA;
56 | D_00336BFB = 0x336BFB;
57 | D_003371D2 = 0x3371D2;
58 | D_003371D3 = 0x3371D3;
59 | D_003371D9 = 0x3371D9;
60 | D_003371DA = 0x3371DA;
61 | D_003371DB = 0x3371DB;
62 | D_003377F2 = 0x3377F2;
63 | D_003377F3 = 0x3377F3;
64 | D_003377F9 = 0x3377F9;
65 | D_003377FA = 0x3377FA;
66 | D_003377FB = 0x3377FB;
67 | D_00337E02 = 0x337E02;
68 | D_00337E03 = 0x337E03;
69 | D_00337E09 = 0x337E09;
70 | D_00337E0A = 0x337E0A;
71 | D_00337E0B = 0x337E0B;
72 | D_00338352 = 0x338352;
73 | D_00338353 = 0x338353;
74 | D_00338359 = 0x338359;
75 | D_0033835A = 0x33835A;
76 | D_0033835B = 0x33835B;
77 | D_003396D1 = 0x3396D1;
78 | Item_data__Rarity = 0x3396D2;
79 | Item_data__MaxStack = 0x3396D3;
80 | Item_data__IconIDX = 0x3396D5;
81 | Item_data__ColorIDX = 0x3396D6;
82 | D_003396DA = 0x3396DA;
83 | D_003494B2 = 0x3494B2;
84 | D_0034A752 = 0x34A752;
85 | D_0034A82D = 0x34A82D;
86 | D_0034A941 = 0x34A941;
87 | D_0034E301 = 0x34E301;
88 | D_0034E30B = 0x34E30B;
89 | D_0034F5E2 = 0x34F5E2;
90 | D_0034F5E6 = 0x34F5E6;
91 | D_0034F6BA = 0x34F6BA;
92 | D_0034F6BE = 0x34F6BE;
93 | D_0034F87A = 0x34F87A;
94 | D_00350C02 = 0x350C02;
95 | D_00350C06 = 0x350C06;
96 | D_00350C0A = 0x350C0A;
97 | D_00351592 = 0x351592;
98 | D_00351596 = 0x351596;
99 | D_0035159A = 0x35159A;
100 | D_00351722 = 0x351722;
101 | D_00351726 = 0x351726;
102 | D_0035172A = 0x35172A;
103 | D_003545C2 = 0x3545C2;
104 | D_00354DBA = 0x354DBA;
105 | D_00354DBB = 0x354DBB;
106 | D_00354DBD = 0x354DBD;
107 | D_00354DBE = 0x354DBE;
108 | D_00354DBF = 0x354DBF;
109 | D_00356892 = 0x356892;
110 | D_00356896 = 0x356896;
111 | D_35C7B1 = 0x35C7B1;
112 | D_0038776E = 0x38776E;
113 | D_00387A9A = 0x387A9A;
114 | D_00387AB9 = 0x387AB9;
115 | D_00387ABD = 0x387ABD;
116 | D_00387C2A = 0x387C2A;
117 | D_00387C42 = 0x387C42;
118 | Demo_task0x533be0 = 0x533BE0;
119 | Edit_task0x5367f0 = 0x5367F0;
120 | Cont_task0x5375f0 = 0x5375F0;
121 | enemy_shadow_size_lb0x610300 = 0x610300;
122 | em_body_tbl_lb0x610370 = 0x610370;
123 | em_hit_push_tbl_lb0x6103a0 = 0x6103A0;
124 | enemy_size0x63bb80 = 0x63BB80;
125 | enemy_scale0x63bbb0 = 0x63BBB0;
126 | enemy_shadow_size0x63bc40 = 0x63BC40;
127 | enemy_mahi_size0x63bd60 = 0x63BD60;
128 | em_body_tbl0x63fa10 = 0x63FA10;
129 | em_hit_push_tbl0x63fc50 = 0x63FC50;
130 | em_pos_tbl0x640540 = 0x640540;
131 | em_hungry_tbl0x641240 = 0x641240;
132 | em_thirst_tbl0x641310 = 0x641310;
133 | em_suimin_tbl0x6413b0 = 0x6413B0;
134 | em_ikari_data_tbl0x642040 = 0x642040;
135 | em_atk_mode_timer_tbl0x642160 = 0x642160;
136 | CnetSys_w0x676380 = 0x676380;
137 | D_6763AE = 0x6763AE;
138 | D_677324 = 0x677324;
139 | D_6AFF80 = 0x6AFF80;
140 | D_6AFF84 = 0x6AFF84;
141 | network_work0x6b2a20 = 0x6B2A20;
142 | client_work0x6dd7e0 = 0x6DD7E0;
143 | D_6E9704 = 0x6E9704;
144 | D_6E9714 = 0x6E9714;
145 | recv_work0x6ea130 = 0x6EA130;
146 | send_work0x6ea740 = 0x6EA740;
147 | lb_player0x6eac80 = 0x6EAC80;
148 |
```
--------------------------------------------------------------------------------
/config/select_symbol_addrs.txt:
--------------------------------------------------------------------------------
```
1 | violence_logo0x533f00 = 0x533F00;
2 | @1060x53b330 = 0x53B330; // segment:select
3 | @1640x53b3d0 = 0x53B3D0; // segment:select
4 | @1650x53b3f0 = 0x53B3F0; // segment:select
5 | @1050x53b300 = 0x53B300; // segment:select
6 | @1630x53b3a0 = 0x53B3A0; // segment:select
7 | c_disp0x534160 = 0x534160;
8 | capcom_logo0x533fc0 = 0x533FC0;
9 | opening_demo0x534340 = 0x534340;
10 | demo_task_sub0x533c60 = 0x533C60;
11 | @1120x53b350 = 0x53B350; // segment:select
12 | @1130x53b370 = 0x53B370; // segment:select
13 | middle_logo0x5340d0 = 0x5340D0;
14 | @5020x53b840 = 0x53B840; // segment:select
15 | @4630x53b6a0 = 0x53B6A0; // segment:select
16 | char_make_init0x534530 = 0x534530;
17 | @5030x53b870 = 0x53B870; // segment:select
18 | waku_disp0x5351c0 = 0x5351C0;
19 | @3250x53b660 = 0x53B660; // segment:select
20 | roll_move0x536470 = 0x536470;
21 | voice_idx0x538800 = 0x538800;
22 | @5010x53b820 = 0x53B820; // segment:select
23 | @4870x53b7e0 = 0x53B7E0; // segment:select
24 | @4670x53b720 = 0x53B720; // segment:select
25 | @3200x53b630 = 0x53B630; // segment:select
26 | @4860x53b7d0 = 0x53B7D0; // segment:select
27 | @4660x53b6f0 = 0x53B6F0; // segment:select
28 | @3210x53b640 = 0x53B640; // segment:select
29 | edit_pl_init0x534a80 = 0x534A80;
30 | @8490x53b8e0 = 0x53B8E0; // segment:select
31 | @5040x53b8a0 = 0x53B8A0; // segment:select
32 | @4850x53b7b0 = 0x53B7B0; // segment:select
33 | @4650x53b6d8 = 0x53B6D8; // segment:select
34 | @3220x53b658 = 0x53B658; // segment:select
35 | @4640x53b6c0 = 0x53B6C0; // segment:select
36 | disp_cont_spr0x537460 = 0x537460;
37 | @4690x53b770 = 0x53B770; // segment:select
38 | @4880x53b800 = 0x53B800; // segment:select
39 | @4680x53b740 = 0x53B740; // segment:select
40 | ed_view_set0x535f30 = 0x535F30;
41 | cmn_mongon_look_sub0x5384a0 = 0x5384A0;
42 | @610x53b4c0 = 0x53B4C0;
43 | disp_check0x535620 = 0x535620;
44 | @600x53b4a0 = 0x53B4A0;
45 | @630x53b510 = 0x53B510;
46 | @620x53b4e0 = 0x53B4E0;
47 | edit_pl_init_new0x534820 = 0x534820;
48 | @650x53b560 = 0x53B560;
49 | @640x53b540 = 0x53B540;
50 | @670x53b5b0 = 0x53B5B0;
51 | @660x53b580 = 0x53B580;
52 | @690x53b5e8 = 0x53B5E8;
53 | @680x53b5d0 = 0x53B5D0;
54 | disp_edit_spr0x534e30 = 0x534E30;
55 | check_mongon0x538840 = 0x538840;
56 | arrow_disp0x534c20 = 0x534C20;
57 | cmn_mongon_look0x538430 = 0x538430;
58 | ed_cancel_se0x5351b0 = 0x5351B0;
59 | sample_col0x538770 = 0x538770;
60 | name_str_check0x5355a0 = 0x5355A0;
61 | ed_decide_se0x535190 = 0x535190;
62 | decide_chr_tbl0x5387d0 = 0x5387D0;
63 | edit_menu_msg0x538740 = 0x538740;
64 | edit_trans0x536670 = 0x536670;
65 | user_load0x5363d0 = 0x5363D0;
66 | disp_color0x535a90 = 0x535A90;
67 | decide_chr_set0x5349d0 = 0x5349D0;
68 | @13510x53b940 = 0x53B940;
69 | @4710x53b7a8 = 0x53B7A8;
70 | @4700x53b7a0 = 0x53B7A0;
71 | disp_save_info0x5358c0 = 0x5358C0;
72 | @6570x53b8d0 = 0x53B8D0;
73 | @11160x53b910 = 0x53B910;
74 | @6560x53b8c8 = 0x53B8C8;
75 | disp_edinfo0x535310 = 0x535310;
76 | view_type0x538760 = 0x538760;
77 | help_mess0x5387b0 = 0x5387B0;
78 | @6580x53b8d8 = 0x53B8D8;
79 | cont_trans0x5374a0 = 0x5374A0;
80 | param_change0x536280 = 0x536280;
81 | @3980x53b680 = 0x53B680;
82 | arr_id_tbl0x538828 = 0x538828;
83 | edit_msg0x538700 = 0x538700;
84 | param_change_sub20x5361a0 = 0x5361A0;
85 | @3190x53b628 = 0x53B628;
86 | cmn_mongon_check_sub0x538040 = 0x538040;
87 | disp_mc0x5359b0 = 0x5359B0;
88 | @710x53b5f8 = 0x53B5F8;
89 | @700x53b5f0 = 0x53B5F0;
90 | @730x53b608 = 0x53B608;
91 | color_mess0x5387c0 = 0x5387C0;
92 | @720x53b600 = 0x53B600;
93 | @750x53b620 = 0x53B620;
94 | cmn_mongon_set0x538540 = 0x538540;
95 | ed_decide_se20x5351a0 = 0x5351A0;
96 | @740x53b618 = 0x53B618;
97 | @570x53b420 = 0x53B420;
98 | cmn_mongon_check_filter0x5382b0 = 0x5382B0;
99 | @590x53b470 = 0x53B470;
100 | @580x53b450 = 0x53B450;
101 | ed_color_sel0x5364c0 = 0x5364C0;
102 | param_change_sub0x5360d0 = 0x5360D0;
103 | // _select_static_init_end0x53b980 = 0x53B980;
104 | // _select_bss_start0x53b980 = 0x53B980;
105 | // _select_bss_end0x53b980 = 0x53B980;
106 | // _select_segment_start0x533980 = 0x533980;
107 | Edit_task0x5367f0 = 0x5367F0;
108 | title_disp0x5341e0 = 0x5341E0;
109 | Demo_task0x533be0 = 0x533BE0;
110 | NG_name_chk0x538030 = 0x538030;
111 | Init_task0x533a00 = 0x533A00;
112 | // _select_bss_size0x0 = 0x0;
113 | // _select_text_start0x5339c0 = 0x5339C0;
114 | // _select_data_start0x538700 = 0x538700;
115 | user_data_copy0x534650 = 0x534650;
116 | // _select_text_end0x538700 = 0x538700;
117 | _select_data_size0x3280 = 0x3280;
118 | // _select_segment_end0x53b980 = 0x53B980;
119 | Cont_task0x5375f0 = 0x5375F0;
120 | _select_text_size0x4d40 = 0x4D40;
121 | // Vu1Code_000a_0004_PROG0x0 = 0x0;
122 | // _select_data_end0x53b980 = 0x53B980;
123 | // _select_static_init0x53b980 = 0x53B980;
124 |
```
--------------------------------------------------------------------------------
/tools/packer.py:
--------------------------------------------------------------------------------
```python
1 | import sys
2 | from datetime import datetime
3 | from pathlib import Path
4 |
5 | filepos = 0;
6 | bin = b''
7 | manifest = []
8 |
9 | def readUint():
10 | global bin, filepos
11 | value = int.from_bytes(bin[filepos:filepos+4], byteorder='little', signed=False)
12 | filepos += 4
13 | return value
14 |
15 | def readUshort():
16 | global bin, filepos
17 | value = int.from_bytes(bin[filepos:filepos+2], byteorder='little', signed=False)
18 | filepos += 2
19 | return value
20 |
21 | def melt(filebin):
22 | bitcounter = 0
23 | newbuf = []
24 | binpos = 0
25 | run = 0
26 | while(True):
27 | if bitcounter == 0 :
28 | bitcounter = 0x8000
29 | run = int.from_bytes(filebin[binpos:binpos+2], byteorder='little', signed=False)
30 | binpos += 2
31 | if run & bitcounter == 0:
32 | newbuf.append(filebin[binpos])
33 | newbuf.append(filebin[binpos+1])
34 | binpos += 2
35 | else:
36 | offset = int.from_bytes(filebin[binpos:binpos+2], byteorder='little', signed=False)
37 | binpos += 2
38 | count = offset >> 11
39 | if count == 0 :
40 | count = int.from_bytes(filebin[binpos:binpos+2], byteorder='little', signed=False)
41 | binpos += 2
42 | else:
43 | offset = (offset & 0x7FF)*2
44 | if offset == 0:
45 | if count == 0:
46 | break
47 | for c in range(count):
48 | newbuf.append(0)
49 | newbuf.append(0)
50 | else:
51 | for c in range(count):
52 | newbuf.append(newbuf[len(newbuf)-offset])
53 | newbuf.append(newbuf[len(newbuf)-offset])
54 | bitcounter >>= 1
55 | return newbuf
56 |
57 | def unpack(file, dir):
58 | global bin, filepos
59 | filelist = []
60 | print(f"unpacking {file}")
61 | with open(file, 'rb') as binfile:
62 | bin = binfile.read()
63 | #do the shit
64 | #read the magic to verify it's a regular AFS1 archive
65 | magic = bin[0:4].decode('utf-8')
66 | filepos += 4
67 | print(magic)
68 | if magic != "AFS\x00":
69 | print(f"incorrect magic: {bin[0:4]}")
70 | return
71 | filecount = readUint()
72 | print(f"file count: {filecount}")
73 | #then for the filecount, read pointer and size!
74 | for f in range(filecount):
75 | fileoff = readUint()
76 | filesize = readUint()
77 | #print(f"{f}: off {fileoff:X}, size {filesize:X}, readpos {filepos:X}")
78 | filelist.append([fileoff, filesize])
79 | #now fetch the attributes table
80 | filepos = filelist[0][0]-8
81 | attpos = readUint()
82 | attsize = readUint()
83 | print(f"attributes info: pos {attpos:X} size {attsize:X}")
84 | if attpos == len(bin):
85 | print("no attributes table!") #MHDOS does this for the top-level asset AFS (DATA.BIN)
86 | else:
87 | filepos = attpos
88 | for f in range(filecount):
89 | filename = bin[filepos:filepos+0x20].decode('utf-8').rstrip('\x00')
90 | filepos += 0x20
91 | filemod = datetime(readUshort(), readUshort(), readUshort(), readUshort(), readUshort(), readUshort())
92 | filesize = readUint()
93 | #print(f"{f:X}: {filename} {filelist[f][1]:X}")
94 | if filesize != filelist[f][1]:
95 | print(f"file {filename} has size mismatch: {filelist[f][1]:X} in header vs {filesize:X} in attrs!")
96 | filelist[f].append(filename)
97 | filelist[f].append(filemod)
98 | for f in range(filecount):
99 | filename = f"{f}.bin"
100 | if len(filelist[f]) > 2:
101 | filename = filelist[f][2]
102 | #filepath = dir + filename
103 | #check the list to grab final filepath, also check if we need to decompress
104 | newfile = bin[filelist[f][0]:filelist[f][0]+filelist[f][1]]
105 | compressed = True
106 | #some heuristics to start off with
107 | #compressed will always have 4 trailing 00 bytes
108 | if newfile[len(newfile)-4:len(newfile)] != b'\x00\x00\x00\x00':
109 | candidate = False
110 | asci = True
111 | #compressed will never have a valid magic(?)
112 | for c in range(3):
113 | if (newfile[c] < 0x20) or (newfile[c] > 0x7E):
114 | asci = False
115 | break
116 | if asci:
117 | compressed = False
118 | #print(f"{f}: {filename} {compressed}")
119 | folder = ""
120 | if len(manifest) != 0:
121 | mrow = manifest[f].split(" ")
122 | if mrow[0] != filename:
123 | print(f"error: name mismatch at file {f}: manifest \"{mrow[0]}\" vs AFS \"{filename}\"")
124 | #print(filename.encode())
125 | #print(mrow[0].encode())
126 | return
127 | elif (mrow[1] == "Y") != compressed:
128 | #heuristics failed, log this for investigation
129 | print(f"warning: file {filename} manifest ({mrow[1]}) mismatches compress heuristic ({compressed})")
130 | #and flip to match manifest, we trust manifest
131 | compressed = not compressed
132 | folder = mrow[2]
133 | filepath = dir + folder + filename
134 | #print(filepath)
135 | pp = Path(dir + folder)
136 | if not pp.exists():
137 | pp.mkdir(parents=True)
138 | if compressed:
139 | newfile = bytes(melt(newfile))
140 | #print(f"writing {filepath}")
141 | with open(filepath, 'wb') as outfile:
142 | outfile.write(newfile)
143 |
144 | if __name__ == "__main__":
145 | if len(sys.argv) == 5: #packer -u AFS_DATA.AFS assets/AFS/ tools/AFS_files.txt
146 | with open(sys.argv[4]) as m:
147 | manifest = [line.rstrip() for line in m]
148 | if len(sys.argv) >= 4: #packer -u AFS_DATA.AFS assets/AFS/
149 | if(sys.argv[1] == "-u"):
150 | print(f"unpacking {sys.argv[2]} to {sys.argv[3]}")
151 | unpack(sys.argv[2], sys.argv[3])
152 | #go through the table, unpacking and then decompressing as needed. generate a txt file of the files in order with a y or n based on if it was compressed, for repacking purposes? also maybe original filesize, to see if compression is a simple pattern?
153 | elif(sys.argv[1] == "-p"):
154 | print(f"packing {sys.argv[3]} to {sys.argv[2]}")
155 | #if the list exists, use that. else, just grab all the files and stuff!
156 | else:
157 | print("insufficient args. -flag archive folder")
158 |
159 |
```
--------------------------------------------------------------------------------
/config/game_syms_auto.txt:
--------------------------------------------------------------------------------
```
1 | Eft_blood_rgb0x2e6040 = 0x2E6040;
2 | Eft_blood_rgb__Green = 0x2E6041;
3 | Eft_blood_rbg__Blue = 0x2E6042;
4 | Eft_kemuri_rgb0x2e6060 = 0x2E6060;
5 | Eft_kemuri_rgb__Green = 0x2E6061;
6 | Eft_kemuri_rgb__Blue = 0x2E6062;
7 | Eft_kemuri_rgb__Alpha = 0x2E6063;
8 | Eft_fish_rgb0x2e6090 = 0x2E6090;
9 | Eft_hire_rgb0x2e60b0 = 0x2E60B0;
10 | stage_start_pos0x2f2620 = 0x2F2620;
11 | stage_start_pos__Y = 0x2F2624;
12 | stage_start_pos__Z = 0x2F2628;
13 | stage_hate_add_tbl0x2f6160 = 0x2F6160;
14 | Eft_stg_type0x2f62c0 = 0x2F62C0;
15 | stg_eft_mdl_no0x2f6c00 = 0x2F6C00;
16 | Snd_em_id_conv_tbl0x32d9c0 = 0x32D9C0;
17 | em_cmd0_tbl0x32da00 = 0x32DA00;
18 | em_cmd1_tbl0x32da90 = 0x32DA90;
19 | em_cmd2_tbl0x32db20 = 0x32DB20;
20 | em_cmd3_tbl0x32dbb0 = 0x32DBB0;
21 | em_cmd4_tbl0x32dc40 = 0x32DC40;
22 | em_cmd5_tbl0x32dcd0 = 0x32DCD0;
23 | em_cmd6_tbl0x32dd60 = 0x32DD60;
24 | Shell_data__1 = 0x334F41;
25 | Gun_data__2 = 0x3367B2;
26 | Gun_Grow_Up_DATA0x336bc0 = 0x336BC0;
27 | Item_data0x3396d0 = 0x3396D0;
28 | eft17_type11_lag_tbl0x387d50 = 0x387D50;
29 | eft17_type15_lag_tbl0x387d60 = 0x387D60;
30 | eft04_type5_fade_data0x387d78 = 0x387D78;
31 | eft10_num0x387d94 = 0x387D94;
32 | eft10_all_time0x387d98 = 0x387D98;
33 | eft10_param0x387d9c = 0x387D9C;
34 | eft10_time0x387da0 = 0x387DA0;
35 | meat_dmg_tbl0x387da8 = 0x387DA8;
36 | rotz770x387db0 = 0x387DB0;
37 | eft15_type0_lag0x387dc8 = 0x387DC8;
38 | eft16_time_tbl30x387de8 = 0x387DE8;
39 | eft19_model_no0x387df8 = 0x387DF8;
40 | kuituki_time_tbl0x387e00 = 0x387E00;
41 | em01_rail_add0x388250 = 0x388250;
42 | em01_rail_half_add0x388258 = 0x388258;
43 | fly_adjy_hosei_tbl0x388500 = 0x388500;
44 | hagi_tbl0x388508 = 0x388508;
45 | hagi_tbl0x3886b0 = 0x3886B0;
46 | hire_start_timer_tbl00x3887c8 = 0x3887C8;
47 | hire_start_timer_tbl10x3887d0 = 0x3887D0;
48 | hire_remove_timer_tbl00x3887d8 = 0x3887D8;
49 | hire_remove_timer_tbl10x3887e0 = 0x3887E0;
50 | hire_down_angx0x3887e8 = 0x3887E8;
51 | st51_ang_tbl0x388c70 = 0x388C70;
52 | st53_ang_tbl0x388c78 = 0x388C78;
53 | st58_dir0x388ce8 = 0x388CE8;
54 | st64_dir0x388cf0 = 0x388CF0;
55 | st75_dir0x388cf8 = 0x388CF8;
56 | em17_rail_add0x388e10 = 0x388E10;
57 | em17_rail_half_add0x388e18 = 0x388E18;
58 | em18_act_tbl0x388e20 = 0x388E20;
59 | em19_scale_tbl0x388e80 = 0x388E80;
60 | em20_rail_add0x388ee0 = 0x388EE0;
61 | em20_rail_half_add0x388ee8 = 0x388EE8;
62 | hire_start_timer_tbl00x3893d0 = 0x3893D0;
63 | hire_start_timer_tbl10x3893d8 = 0x3893D8;
64 | hire_remove_timer_tbl00x3893e0 = 0x3893E0;
65 | hire_remove_timer_tbl10x3893e8 = 0x3893E8;
66 | hire_down_angx0x3893f0 = 0x3893F0;
67 | em27_act_tbl0x3895b0 = 0x3895B0;
68 | st11_id_tbl0x389a48 = 0x389A48;
69 | st11_mdl_no0x389a50 = 0x389A50;
70 | st12_id_tbl0x389a58 = 0x389A58;
71 | st12_mdl_no0x389a60 = 0x389A60;
72 | st25_id_tbl0x389a68 = 0x389A68;
73 | st25_mdl_no0x389a70 = 0x389A70;
74 | st25_rot_tbl0x389a78 = 0x389A78;
75 | st28_id_tbl0x389a80 = 0x389A80;
76 | st28_mdl_no0x389a88 = 0x389A88;
77 | st30_id_tbl0x389a90 = 0x389A90;
78 | st30_mdl_no0x389a98 = 0x389A98;
79 | set00_st04_dir_tbl0x389aa0 = 0x389AA0;
80 | set00_st26_dir_tbl0x389aa4 = 0x389AA4;
81 | set00_st26_scale_tbl0x389aa8 = 0x389AA8;
82 | set00_st41_dir_tbl0x389ab0 = 0x389AB0;
83 | set00_st41_dir_tbl__2 = 0x389AB2;
84 | set00_st42_dir_tbl0x389ab4 = 0x389AB4;
85 | set00_st42_scale_tbl0x389ab8 = 0x389AB8;
86 | set00_st43_dir_tbl0x389ac0 = 0x389AC0;
87 | st00_mdl_tbl0x389ac8 = 0x389AC8;
88 | st01_mdl_tbl0x389ad0 = 0x389AD0;
89 | st04_mdl_tbl0x389ad8 = 0x389AD8;
90 | set14_st00_mask_tbl0x389ae0 = 0x389AE0;
91 | set14_st01_mask_tbl0x389ae8 = 0x389AE8;
92 | set14_st03_mask_tbl0x389af0 = 0x389AF0;
93 | set14_st04_mask_tbl0x389af8 = 0x389AF8;
94 | set14_st42_mask_tbl0x389b00 = 0x389B00;
95 | set14_st51_mask_tbl0x389b08 = 0x389B08;
96 | set14_st52_mask_tbl0x389b10 = 0x389B10;
97 | set14_st53_mask_tbl0x389b18 = 0x389B18;
98 | st01_parts_id_tbl0x389b20 = 0x389B20;
99 | set19_s11_mask_tbl0x389b28 = 0x389B28;
100 | set19_s12_mask_tbl0x389b30 = 0x389B30;
101 | set19_s21_mask_tbl0x389b38 = 0x389B38;
102 | set19_s28_mask_tbl0x389b40 = 0x389B40;
103 | set19_s30_mask_tbl0x389b48 = 0x389B48;
104 | set19_s34_mask_tbl0x389b50 = 0x389B50;
105 | set19_s52_mask_tbl0x389b58 = 0x389B58;
106 | set19_s54_mask_tbl0x389b60 = 0x389B60;
107 | set19_s57_mask_tbl0x389b68 = 0x389B68;
108 | set19_s61_mask_tbl0x389b70 = 0x389B70;
109 | set19_s67_mask_tbl0x389b78 = 0x389B78;
110 | set19_s73_s75_mask_tbl0x389b80 = 0x389B80;
111 | set20_model_no0x389b88 = 0x389B88;
112 | shell16_tbl0x389b8c = 0x389B8C;
113 | shell01_tbl0x389b90 = 0x389B90;
114 | shell02_tbl0x389b94 = 0x389B94;
115 | shell03_tbl0x389ba0 = 0x389BA0;
116 | shell04_tbl0x389ba4 = 0x389BA4;
117 | shell05_tbl0x389ba8 = 0x389BA8;
118 | shell06_tbl0x389bac = 0x389BAC;
119 | sleeve_param_tbl00x389bd0 = 0x389BD0;
120 | shell08_tbl0x389bd8 = 0x389BD8;
121 | rotx_em010x389be0 = 0x389BE0;
122 | roty_em010x389be8 = 0x389BE8;
123 | shell09_tbl0x389bf8 = 0x389BF8;
124 | shell10_body_tbl0x389bfc = 0x389BFC;
125 | shell11_tbl0x389c00 = 0x389C00;
126 | shell12_tbl0x389c08 = 0x389C08;
127 | shell13_tbl0x389c0c = 0x389C0C;
128 | item_chr_tbl0x389c10 = 0x389C10;
129 | shell15_tbl0x389c14 = 0x389C14;
130 | shell00_tbl0x389c18 = 0x389C18;
131 | shell17_tbl0x389c1c = 0x389C1C;
132 | shell18_tbl0x389c20 = 0x389C20;
133 | shell19_tbl0x389c24 = 0x389C24;
134 | shell20_tbl0x389c28 = 0x389C28;
135 | shell21_tbl0x389c2c = 0x389C2C;
136 | shell22_tbl0x389c30 = 0x389C30;
137 | shell22_st25_taihou_ang0x389c34 = 0x389C34;
138 | st11_dir_tbl0x389c38 = 0x389C38;
139 | st28_dir_tbl0x389c40 = 0x389C40;
140 | st30_dir_tbl0x389c48 = 0x389C48;
141 | shell23_tbl0x389c50 = 0x389C50;
142 | eft10_index0x38a720 = 0x38A720;
143 | eft10_time_tbl0x38a724 = 0x38A724;
144 | eft15_type2_lag0x38a728 = 0x38A728;
145 | set19_s48_mask_tbl0x38a7d8 = 0x38A7D8;
146 | shell22_st12_taihou_ang0x38a7e0 = 0x38A7E0;
147 | eft_work0x390b10 = 0x390B10;
148 | User_data0x3c6fc0 = 0x3C6FC0;
149 | em_yobi_stack0x3c7800 = 0x3C7800;
150 | senko_stack0x3c7900 = 0x3C7900;
151 | smoke_stack0x3c7980 = 0x3C7980;
152 | smell_stack0x3c7a00 = 0x3C7A00;
153 | stage_work0x3d8230 = 0x3D8230;
154 | em_work0x3d82a0 = 0x3D82A0;
155 | player_work0x3e4bf0 = 0x3E4BF0;
156 | D_3E4C9C = 0x3E4C9C;
157 | D_3E5326 = 0x3E5326;
158 | D_3E547C = 0x3E547C;
159 | mat_list0x3e9bf0 = 0x3E9BF0;
160 | mat_palett0x3eac70 = 0x3EAC70;
161 | ot30x3f1df0 = 0x3F1DF0;
162 | ot10x3f1e50 = 0x3F1E50;
163 | ot00x3f1ed0 = 0x3F1ED0;
164 | fov0x3f1fd0 = 0x3F1FD0;
165 | rview_matY0x3f2020 = 0x3F2020;
166 | rview_mat0x3f2060 = 0x3F2060;
167 | D_3F2080 = 0x3F2080;
168 | D_3F2090 = 0x3F2090;
169 | view_mat0x3f20a0 = 0x3F20A0;
170 | game_w0x3f33f0 = 0x3F33F0;
171 | D_3F3470 = 0x3F3470;
172 | D_3F3498 = 0x3F3498;
173 | D_3F35F8 = 0x3F35F8;
174 | D_3F3608 = 0x3F3608;
175 | D_006422B1 = 0x6422B1;
176 | D_006422B2 = 0x6422B2;
177 | D_006422B3 = 0x6422B3;
178 | D_00645FC1 = 0x645FC1;
179 | D_00645FC2 = 0x645FC2;
180 | D_00645FD1 = 0x645FD1;
181 | D_00645FD2 = 0x645FD2;
182 | D_00645FE1 = 0x645FE1;
183 | D_00645FE2 = 0x645FE2;
184 | D_00645FF1 = 0x645FF1;
185 | D_00645FF2 = 0x645FF2;
186 | D_00646001 = 0x646001;
187 | D_00646002 = 0x646002;
188 | D_0065B0DE = 0x65B0DE;
189 | D_0065B0DF = 0x65B0DF;
190 | D_00668442 = 0x668442;
191 | D_006849E7 = 0x6849E7;
192 | D_00684A2A = 0x684A2A;
193 | D_00684A31 = 0x684A31;
194 |
```
--------------------------------------------------------------------------------
/config/undefined_funcs_auto.txt:
--------------------------------------------------------------------------------
```
1 | func_00171308 = 0x171308;
2 | func_00171448 = 0x171448;
3 | func_00171568 = 0x171568;
4 | em_eye_search_set0x533a00 = 0x533A00;
5 | em_search_data_set0x5341d0 = 0x5341D0;
6 | user_data_copy0x534650 = 0x534650;
7 | em_neck_move0x534680 = 0x534680;
8 | disp_edinfo0x535310 = 0x535310;
9 | yn_set_main0x535340 = 0x535340;
10 | smell_ck0x5355a0 = 0x5355A0;
11 | em_type_act_set0x535a10 = 0x535A10;
12 | em_act_set0x535d20 = 0x535D20;
13 | em_ikari_add0x536110 = 0x536110;
14 | ikari_flag_set0x536320 = 0x536320;
15 | Em_Damage_Hate_Set0x5363c0 = 0x5363C0;
16 | Em_Hate_Ck0x536530 = 0x536530;
17 | em_range_set0x536bc0 = 0x536BC0;
18 | target_kind_set0x537620 = 0x537620;
19 | pl_ninshiki_ck0x537f10 = 0x537F10;
20 | kehai_set0x537fe0 = 0x537FE0;
21 | kehai_ck0x5383c0 = 0x5383C0;
22 | em_cancel_act_ck0x5384f0 = 0x5384F0;
23 | em_area_move_init0x538580 = 0x538580;
24 | Stage_Hate_Add0x538850 = 0x538850;
25 | em_pl_pos_set0x538960 = 0x538960;
26 | em_escape_action_ck0x538a70 = 0x538A70;
27 | Em_Unko_Smoke_Ck0x539270 = 0x539270;
28 | Em_Senko_Ck0x539340 = 0x539340;
29 | Em_Master_Change0x5395f0 = 0x5395F0;
30 | Ikari_Data_Set0x539c40 = 0x539C40;
31 | Em_Taisei_Set0x539c90 = 0x539C90;
32 | em_wall_bit_set0x53a190 = 0x53A190;
33 | em_tsuushin_set0x53a2b0 = 0x53A2B0;
34 | em_hungry_add0x53a630 = 0x53A630;
35 | em_def_attack_set0x53b080 = 0x53B080;
36 | em_def_defence_set0x53b310 = 0x53B310;
37 | Bdora_hp_ck0x53b5c0 = 0x53B5C0;
38 | em_hagitori_lv_up0x53b6d0 = 0x53B6D0;
39 | em_tail_off_sub0x53b8a0 = 0x53B8A0;
40 | em_niku_eat_set0x53b9c0 = 0x53B9C0;
41 | Eft17_set_ex0x53fdf0 = 0x53FDF0;
42 | Eft05_set0x543690 = 0x543690;
43 | Eft08_set0x544c90 = 0x544C90;
44 | Eft08_set20x544d20 = 0x544D20;
45 | eft11_set0x546860 = 0x546860;
46 | eft12_set0x549200 = 0x549200;
47 | Eft12_set40x5496e0 = 0x5496E0;
48 | eft14_set0x54b7e0 = 0x54B7E0;
49 | Eft14_set20x54b8c0 = 0x54B8C0;
50 | Eft14_set40x54ba40 = 0x54BA40;
51 | Eft15_set0x54d480 = 0x54D480;
52 | Eft16_set0x5508f0 = 0x5508F0;
53 | Eft16_set_impact0x550dd0 = 0x550DD0;
54 | eft00_set0x551790 = 0x551790;
55 | Eft18_set20x5547b0 = 0x5547B0;
56 | Eft21_set0x555020 = 0x555020;
57 | Eft22_set0x555a90 = 0x555A90;
58 | Fish_set0x5589f0 = 0x5589F0;
59 | Eft24_set0x558a80 = 0x558A80;
60 | em_eye_dmg_act_set0x559320 = 0x559320;
61 | em_eye_dmg_reset_act_set0x559d30 = 0x559D30;
62 | Em_Taisei_Ck0x559dc0 = 0x559DC0;
63 | poison_stock_set0x55a440 = 0x55A440;
64 | em_cmd_init0x55b060 = 0x55B060;
65 | em_cmd_reset0x5655d0 = 0x5655D0;
66 | Em_Mode_Chg0x566500 = 0x566500;
67 | em01_init0x566670 = 0x566670;
68 | em01_main0x574080 = 0x574080;
69 | em02_init0x57efa0 = 0x57EFA0;
70 | em02_main0x57f4f0 = 0x57F4F0;
71 | em03_init0x5873d0 = 0x5873D0;
72 | em03_main0x587780 = 0x587780;
73 | em04_init0x58b850 = 0x58B850;
74 | em04_main0x58e070 = 0x58E070;
75 | em07_init0x58f8b0 = 0x58F8B0;
76 | SetDialogData0x591be0 = 0x591BE0;
77 | em07_main0x592fe0 = 0x592FE0;
78 | LBDisp_NowLoading20x593cb0 = 0x593CB0;
79 | em08_init0x59a2c0 = 0x59A2C0;
80 | Lbs_load0x59db00 = 0x59DB00;
81 | em08_main0x5a2de0 = 0x5A2DE0;
82 | em09_init0x5a7f70 = 0x5A7F70;
83 | Em09_item_sub0x5a8170 = 0x5A8170;
84 | em09_main0x5ab1f0 = 0x5AB1F0;
85 | em09_material_sub0x5aca60 = 0x5ACA60;
86 | _cnet_Return_CallBack0x5ad1b0 = 0x5AD1B0;
87 | __cnetSub_Set_BgProcess0x5ad280 = 0x5AD280;
88 | __cnetSub_Get_RestBgWork0x5ad500 = 0x5AD500;
89 | em10_init0x5ad5a0 = 0x5AD5A0;
90 | cnLBS_RecvData0x5ad620 = 0x5AD620;
91 | GetRecvData80x5adb60 = 0x5ADB60;
92 | GetRecvData320x5adb90 = 0x5ADB90;
93 | GetRecvDataOption30x5adc70 = 0x5ADC70;
94 | SetSendCommand0x5adee0 = 0x5ADEE0;
95 | SetSendCommandLen0x5ae090 = 0x5AE090;
96 | SetSendData80x5ae0b0 = 0x5AE0B0;
97 | SetSendData320x5ae120 = 0x5AE120;
98 | Write_Socket0x5ae300 = 0x5AE300;
99 | em10_main0x5aeab0 = 0x5AEAB0;
100 | em12_init0x5af530 = 0x5AF530;
101 | cnWrap_InitWork0x5b2330 = 0x5B2330;
102 | cpn_GetCNData0x5b25b0 = 0x5B25B0;
103 | cnWrap_BgmStop0x5b2620 = 0x5B2620;
104 | em12_main0x5b3a50 = 0x5B3A50;
105 | Lb_Menu_Init0x5b3d70 = 0x5B3D70;
106 | Lb_menu_exit0x5b3e60 = 0x5B3E60;
107 | Lb_menu_move_Core0x5b3ed0 = 0x5B3ED0;
108 | DispLobbyMenu0x5b4980 = 0x5B4980;
109 | Disp_lb_menu0x5b4b20 = 0x5B4B20;
110 | Lb_get_player_id0x5b4d30 = 0x5B4D30;
111 | internet_connect_000x5b52a0 = 0x5B52A0;
112 | em14_init0x5b52d0 = 0x5B52D0;
113 | disconnect0x5b5380 = 0x5B5380;
114 | internet_browser0x5b5980 = 0x5B5980;
115 | internet_connect_100x5b5c50 = 0x5B5C50;
116 | internet_server_select0x5b5d10 = 0x5B5D10;
117 | internet_to_modem0x5b69e0 = 0x5B69E0;
118 | internet_disconnect0x5b6f20 = 0x5B6F20;
119 | internet_connect_minimum_cleanup0x5b7020 = 0x5B7020;
120 | internet_lobby_act0x5b70d0 = 0x5B70D0;
121 | Lbc_set_prim0x5b7460 = 0x5B7460;
122 | lbc_text_lobby_trans0x5b78f0 = 0x5B78F0;
123 | em14_main0x5bbc70 = 0x5BBC70;
124 | Lbs_InRoomCheck0x5bd520 = 0x5BD520;
125 | net_ToNetworkLobby0x5c0680 = 0x5C0680;
126 | em15_init0x5c2ac0 = 0x5C2AC0;
127 | Lobby_main0x5c4d40 = 0x5C4D40;
128 | Lb_get_quest_str20x5c5e20 = 0x5C5E20;
129 | em15_main0x5caea0 = 0x5CAEA0;
130 | Lb_send_chat_plus0x5cb100 = 0x5CB100;
131 | Lobby_quest_print0x5cb310 = 0x5CB310;
132 | em16_init0x5d0610 = 0x5D0610;
133 | Clear_lobby_ram0x5d58c0 = 0x5D58C0;
134 | em16_main0x5d6c30 = 0x5D6C30;
135 | Lb_get_pl_stat20x5d8370 = 0x5D8370;
136 | Local_main0x5d8680 = 0x5D8680;
137 | em17_init0x5d9f20 = 0x5D9F20;
138 | em17_main0x5e1530 = 0x5E1530;
139 | BS_DispDialog0x5e5d20 = 0x5E5D20;
140 | BS_EraseDialog0x5e5d30 = 0x5E5D30;
141 | em18_init0x5e6c80 = 0x5E6C80;
142 | em18_main0x5e74e0 = 0x5E74E0;
143 | em19_init0x5e7920 = 0x5E7920;
144 | em19_main0x5eaa40 = 0x5EAA40;
145 | em20_init0x5eba50 = 0x5EBA50;
146 | em20_main0x5f6920 = 0x5F6920;
147 | em20_material_sub0x5fcbb0 = 0x5FCBB0;
148 | em21_init0x600010 = 0x600010;
149 | em21_main0x607ce0 = 0x607CE0;
150 | Lb_ItemBox_init0x609750 = 0x609750;
151 | Disp_lb_item_box0x60ce50 = 0x60CE50;
152 | em27_init0x60d450 = 0x60D450;
153 | Eft25_set0x60e2b0 = 0x60E2B0;
154 | Eft25_set_pos0x60e330 = 0x60E330;
155 | em27_main0x612430 = 0x612430;
156 | em29_init0x6140b0 = 0x6140B0;
157 | em29_main0x6145d0 = 0x6145D0;
158 | em33_init0x6147d0 = 0x6147D0;
159 | em33_main0x614b20 = 0x614B20;
160 | set09_set0x618ca0 = 0x618CA0;
161 | Set09_set_ex0x618f00 = 0x618F00;
162 | Set03_set0x61ed10 = 0x61ED10;
163 | Set04_set0x61f2c0 = 0x61F2C0;
164 | Set05_set0x61f7e0 = 0x61F7E0;
165 | set07_set0x6206d0 = 0x6206D0;
166 | set08_set0x620b70 = 0x620B70;
167 | set00_set0x6213f0 = 0x6213F0;
168 | Set10_set0x621c70 = 0x621C70;
169 | set11_set0x622180 = 0x622180;
170 | set14_set0x6229b0 = 0x6229B0;
171 | set15_set0x624050 = 0x624050;
172 | set16_set0x625120 = 0x625120;
173 | set17_set0x625630 = 0x625630;
174 | Set18_set0x625bb0 = 0x625BB0;
175 | Set19_set0x6263b0 = 0x6263B0;
176 | Set20_set0x626e70 = 0x626E70;
177 | Set22_set0x627840 = 0x627840;
178 | shell01_set20x628690 = 0x628690;
179 | shell01_set30x628750 = 0x628750;
180 | shell03_set0x628fb0 = 0x628FB0;
181 | shell04_set20x629c20 = 0x629C20;
182 | shell05_set30x62a2c0 = 0x62A2C0;
183 | shell06_set0x62a6c0 = 0x62A6C0;
184 | Shell10_set0x633b50 = 0x633B50;
185 | Shell12_set0x634460 = 0x634460;
186 | shell00_set0x6362b0 = 0x6362B0;
187 | Shell22_set0x637f60 = 0x637F60;
188 | Pl_piyo_ck0x639dd0 = 0x639DD0;
189 | Pl_poison_add0x639df0 = 0x639DF0;
190 | Pl_die_set0x639f20 = 0x639F20;
191 | Guard_dir_ck0x639fc0 = 0x639FC0;
192 | Pl_damage_sub0x63a260 = 0x63A260;
193 | Tutorial_prog0x63aca0 = 0x63ACA0;
194 | Tutorial_quest_ck0x63af40 = 0x63AF40;
195 | Tutorial_flag_set0x63afa0 = 0x63AFA0;
196 | SonchoInit0x63b020 = 0x63B020;
197 | SonchoMove0x63b0c0 = 0x63B0C0;
198 | DispTutorial0x63b470 = 0x63B470;
199 | InetDNAS2PersonalGetError0xa2fbc0 = 0xA2FBC0;
200 | InetDNAS2PersonalEncode0xa2fbd0 = 0xA2FBD0;
201 | InetDNAS2PersonalDecode0xa2fd30 = 0xA2FD30;
202 | InetDNAS2ConnectGetError0xa769b0 = 0xA769B0;
203 | InetDNAS2ConnectNetStart0xa769c0 = 0xA769C0;
204 | InetDNAS2ConnectInstall0xa769d0 = 0xA769D0;
205 |
```
--------------------------------------------------------------------------------
/config/main_shims_addrs.txt:
--------------------------------------------------------------------------------
```
1 | //overlay shims
2 | //game
3 | em_eye_search_set0x533a00 = 0x533A00;
4 | em_search_data_set0x5341d0 = 0x5341D0;
5 | em_neck_move0x534680 = 0x534680;
6 | smell_ck0x5355a0 = 0x5355A0;
7 | em_type_act_set0x535a10 = 0x535A10;
8 | em_act_set0x535d20 = 0x535D20;
9 | em_ikari_add0x536110 = 0x536110;
10 | ikari_flag_set0x536320 = 0x536320;
11 | Em_Damage_Hate_Set0x5363c0 = 0x5363C0;
12 | Em_Hate_Ck0x536530 = 0x536530;
13 | em_range_set0x536bc0 = 0x536BC0;
14 | target_kind_set0x537620 = 0x537620;
15 | pl_ninshiki_ck0x537f10 = 0x537F10;
16 | kehai_set0x537fe0 = 0x537FE0;
17 | kehai_ck0x5383c0 = 0x5383C0;
18 | em_cancel_act_ck0x5384f0 = 0x5384F0;
19 | em_area_move_init0x538580 = 0x538580;
20 | Stage_Hate_Add0x538850 = 0x538850;
21 | em_pl_pos_set0x538960 = 0x538960;
22 | em_escape_action_ck0x538a70 = 0x538A70;
23 | Em_Unko_Smoke_Ck0x539270 = 0x539270;
24 | Em_Senko_Ck0x539340 = 0x539340;
25 | Em_Master_Change0x5395f0 = 0x5395F0;
26 | Ikari_Data_Set0x539c40 = 0x539C40;
27 | Em_Taisei_Set0x539c90 = 0x539c90;
28 | em_wall_bit_set0x53a190 = 0x53a190;
29 | em_tsuushin_set0x53a2b0 = 0x53A2B0;
30 | em_hungry_add0x53a630 = 0x53A630;
31 | em_def_attack_set0x53b080 = 0x53B080;
32 | em_def_defence_set0x53b310 = 0x53B310;
33 | Bdora_hp_ck0x53b5c0 = 0x53B5C0;
34 | em_hagitori_lv_up0x53b6d0 = 0x53B6D0;
35 | em_tail_off_sub0x53b8a0 = 0x53B8A0;
36 | em_niku_eat_set0x53b9c0 = 0x53B9C0;
37 | Eft17_set_ex0x53fdf0 = 0x53FDF0;
38 | Eft05_set0x543690 = 0x543690;
39 | Eft08_set0x544c90 = 0x544C90;
40 | Eft08_set20x544d20 = 0x544D20;
41 | eft11_set0x546860 = 0x546860;
42 | eft12_set0x549200 = 0x549200;
43 | Eft12_set40x5496e0 = 0x5496E0;
44 | eft14_set0x54b7e0 = 0x54B7E0;
45 | Eft14_set20x54b8c0 = 0x54B8C0;
46 | Eft14_set40x54ba40 = 0x54BA40;
47 | Eft15_set0x54d480 = 0x54D480;
48 | Eft16_set0x5508f0 = 0x5508F0;
49 | Eft16_set_impact0x550dd0 = 0x550DD0;
50 | eft00_set0x551790 = 0x551790;
51 | Eft18_set20x5547b0 = 0x5547B0;
52 | Eft21_set0x555020 = 0x555020;
53 | Eft22_set0x555a90 = 0x555a90;
54 | Fish_set0x5589f0 = 0x5589F0;
55 | Eft24_set0x558a80 = 0x558A80;
56 | em_eye_dmg_act_set0x559320 = 0x559320;
57 | em_eye_dmg_reset_act_set0x559d30 = 0x559D30;
58 | Em_Taisei_Ck0x559dc0 = 0x559DC0;
59 | poison_stock_set0x55a440 = 0x55A440;
60 | em_cmd_init0x55b060 = 0x55b060;
61 | em_cmd_reset0x5655d0 = 0x5655D0;
62 | Em_Mode_Chg0x566500 = 0x566500;
63 | em01_init0x566670 = 0x566670;
64 | em01_main0x574080 = 0x574080;
65 | em02_init0x57efa0 = 0x57efa0;
66 | em02_main0x57f4f0 = 0x57F4F0;
67 | em03_init0x5873d0 = 0x5873d0;
68 | em03_main0x587780 = 0x587780;
69 | em04_init0x58b850 = 0x58b850;
70 | em04_main0x58e070 = 0x58E070;
71 | em07_init0x58f8b0 = 0x58f8b0;
72 | em07_main0x592fe0 = 0x592FE0;
73 | em08_init0x59a2c0 = 0x59a2c0;
74 | em08_main0x5a2de0 = 0x5A2DE0;
75 | em09_init0x5a7f70 = 0x5a7f70;
76 | Em09_item_sub0x5a8170 = 0x5A8170;
77 | em09_main0x5ab1f0 = 0x5AB1F0;
78 | em09_material_sub0x5aca60 = 0x5aca60;
79 | em10_init0x5ad5a0 = 0x5ad5a0;
80 | em10_main0x5aeab0 = 0x5AEAB0;
81 | em12_init0x5af530 = 0x5af530;
82 | em12_main0x5b3a50 = 0x5B3A50;
83 | em14_init0x5b52d0 = 0x5b52d0;
84 | em14_main0x5bbc70 = 0x5BBC70;
85 | em15_init0x5c2ac0 = 0x5c2ac0;
86 | em15_main0x5caea0 = 0x5CAEA0;
87 | em16_init0x5d0610 = 0x5d0610;
88 | em16_main0x5d6c30 = 0x5D6C30;
89 | em17_init0x5d9f20 = 0x5d9f20;
90 | em17_main0x5e1530 = 0x5E1530;
91 | em18_init0x5e6c80 = 0x5e6c80;
92 | em18_main0x5e74e0 = 0x5E74E0;
93 | em19_init0x5e7920 = 0x5e7920;
94 | em19_main0x5eaa40 = 0x5EAA40;
95 | em20_init0x5eba50 = 0x5eba50;
96 | em20_main0x5f6920 = 0x5F6920;
97 | em20_material_sub0x5fcbb0 = 0x5fcbb0;
98 | em21_init0x600010 = 0x600010;
99 | em21_main0x607ce0 = 0x607CE0;
100 | em27_init0x60d450 = 0x60D450;
101 | em27_main0x612430 = 0x612430;
102 | em29_init0x6140b0 = 0x6140B0;
103 | em29_main0x6145d0 = 0x6145D0;
104 | em33_init0x6147d0 = 0x6147D0;
105 | em33_main0x614b20 = 0x614B20;
106 | set09_set0x618ca0 = 0x618CA0;
107 | Set09_set_ex0x618f00 = 0x618F00;
108 | Set03_set0x61ed10 = 0x61ED10;
109 | Set04_set0x61f2c0 = 0x61F2C0;
110 | Set05_set0x61f7e0 = 0x61F7E0;
111 | set07_set0x6206d0 = 0x6206D0;
112 | set08_set0x620b70 = 0x620b70;
113 | set00_set0x6213f0 = 0x6213f0;
114 | Set10_set0x621c70 = 0x621C70;
115 | set11_set0x622180 = 0x622180;
116 | set14_set0x6229b0 = 0x6229b0;
117 | set15_set0x624050 = 0x624050;
118 | set16_set0x625120 = 0x625120;
119 | set17_set0x625630 = 0x625630;
120 | Set18_set0x625bb0 = 0x625BB0;
121 | Set19_set0x6263b0 = 0x6263B0;
122 | Set20_set0x626e70 = 0x626E70;
123 | Set22_set0x627840 = 0x627840;
124 | shell01_set20x628690 = 0x628690;
125 | shell01_set30x628750 = 0x628750;
126 | shell03_set0x628fb0 = 0x628fb0;
127 | shell04_set20x629c20 = 0x629c20;
128 | shell05_set30x62a2c0 = 0x62A2C0;
129 | shell06_set0x62a6c0 = 0x62A6C0;
130 | Shell10_set0x633b50 = 0x633B50;
131 | Shell12_set0x634460 = 0x634460;
132 | shell00_set0x6362b0 = 0x6362b0;
133 | Shell22_set0x637f60 = 0x637f60;
134 | Pl_piyo_ck0x639dd0 = 0x639dd0;
135 | Pl_poison_add0x639df0 = 0x639DF0;
136 | Pl_die_set0x639f20 = 0x639f20;
137 | Guard_dir_ck0x639fc0 = 0x639FC0;
138 | Pl_damage_sub0x63a260 = 0x63A260;
139 | Tutorial_prog0x63aca0 = 0x63ACA0;
140 | Tutorial_quest_ck0x63af40 = 0x63AF40;
141 | Tutorial_flag_set0x63afa0 = 0x63AFA0;
142 | SonchoInit0x63b020 = 0x63B020;
143 | SonchoMove0x63b0c0 = 0x63b0c0;
144 | DispTutorial0x63b470 = 0x63b470;
145 | //data
146 | enemy_size0x63bb80 = 0x63BB80;
147 | enemy_scale0x63bbb0 = 0x63BBB0;
148 | enemy_shadow_size0x63bc40 = 0x63bc40;
149 | enemy_mahi_size0x63bd60 = 0x63bd60;
150 | em_body_tbl0x63fa10 = 0x63fa10;
151 | em_hit_push_tbl0x63fc50 = 0x63FC50;
152 | em_pos_tbl0x640540 = 0x640540;
153 | em_hungry_tbl0x641240 = 0x641240;
154 | em_thirst_tbl0x641310 = 0x641310;
155 | em_suimin_tbl0x6413b0 = 0x6413B0;
156 | em_ikari_data_tbl0x642040 = 0x642040;
157 | em_atk_mode_timer_tbl0x642160 = 0x642160;
158 |
159 |
160 | //select
161 | Demo_task0x533be0 = 0x533be0;
162 | user_data_copy0x534650 = 0x534650;
163 | disp_edinfo0x535310 = 0x535310; // allow_duplicated:true
164 | Edit_task0x5367f0 = 0x5367f0;
165 | Cont_task0x5375f0 = 0x5375f0;
166 |
167 | //yn
168 | yn_set_init0x535310 = 0x535310; // allow_duplicated:true
169 | yn_set_main0x535340 = 0x535340;
170 |
171 | //lobby
172 | SetDialogData0x591be0 = 0x591BE0;
173 | LBDisp_NowLoading20x593cb0 = 0x593CB0;
174 | Lbs_load0x59db00 = 0x59DB00;
175 | _cnet_Return_CallBack0x5ad1b0 = 0x5ad1b0;
176 | __cnetSub_Set_BgProcess0x5ad280 = 0x5ad280;
177 | __cnetSub_Get_RestBgWork0x5ad500 = 0x5ad500;
178 | cnLBS_RecvData0x5ad620 = 0x5AD620;
179 | GetRecvData80x5adb60 = 0x5adb60;
180 | GetRecvData320x5adb90 = 0x5adb90;
181 | GetRecvDataOption30x5adc70 = 0x5adc70;
182 | SetSendCommand0x5adee0 = 0x5adee0;
183 | SetSendCommandLen0x5ae090 = 0x5ae090;
184 | SetSendData80x5ae0b0 = 0x5ae0b0;
185 | SetSendData320x5ae120 = 0x5ae120;
186 | Write_Socket0x5ae300 = 0x5ae300;
187 | cnWrap_InitWork0x5b2330 = 0x5B2330;
188 | cpn_GetCNData0x5b25b0 = 0x5B25B0;
189 | cnWrap_BgmStop0x5b2620 = 0x5b2620;
190 | Lb_Menu_Init0x5b3d70 = 0x5b3d70;
191 | Lb_menu_exit0x5b3e60 = 0x5b3e60;
192 | Lb_menu_move_Core0x5b3ed0 = 0x5b3ed0;
193 | DispLobbyMenu0x5b4980 = 0x5b4980;
194 | Disp_lb_menu0x5b4b20 = 0x5b4b20;
195 | Lb_get_player_id0x5b4d30 = 0x5b4d30;
196 | internet_connect_000x5b52a0 = 0x5B52A0;
197 | disconnect0x5b5380 = 0x5B5380;
198 | internet_browser0x5b5980 = 0x5B5980;
199 | internet_connect_100x5b5c50 = 0x5B5C50;
200 | internet_server_select0x5b5d10 = 0x5B5D10;
201 | internet_to_modem0x5b69e0 = 0x5B69E0;
202 | internet_disconnect0x5b6f20 = 0x5B6F20;
203 | internet_connect_minimum_cleanup0x5b7020 = 0x5B7020;
204 | internet_lobby_act0x5b70d0 = 0x5B70D0;
205 | Lbc_set_prim0x5b7460 = 0x5b7460;
206 | lbc_text_lobby_trans0x5b78f0 = 0x5b78f0;
207 | Lbs_InRoomCheck0x5bd520 = 0x5bd520;
208 | net_ToNetworkLobby0x5c0680 = 0x5C0680;
209 | Lobby_main0x5c4d40 = 0x5C4D40;
210 | Lb_get_quest_str20x5c5e20 = 0x5C5E20;
211 | Lb_send_chat_plus0x5cb100 = 0x5cb100;
212 | Lobby_quest_print0x5cb310 = 0x5cb310;
213 | Clear_lobby_ram0x5d58c0 = 0x5D58C0;
214 | Lb_get_pl_stat20x5d8370 = 0x5d8370;
215 | Local_main0x5d8680 = 0x5D8680;
216 | BS_DispDialog0x5e5d20 = 0x5E5D20;
217 | BS_EraseDialog0x5e5d30 = 0x5E5D30;
218 | Lb_ItemBox_init0x609750 = 0x609750;
219 | Disp_lb_item_box0x60ce50 = 0x60ce50;
220 | Eft25_set0x60e2b0 = 0x60e2b0;
221 | Eft25_set_pos0x60e330 = 0x60E330;
222 | //data
223 | enemy_shadow_size_lb0x610300 = 0x610300;
224 | em_body_tbl_lb0x610370 = 0x610370;
225 | em_hit_push_tbl_lb0x6103a0 = 0x6103A0;
226 | CnetSys_w0x676380 = 0x676380;
227 | D_6763AE = 0x6763ae;
228 | D_677324 = 0x677324;
229 | network_work0x6b2a20 = 0x6b2a20;
230 | client_work0x6dd7e0 = 0x6dd7e0;
231 | D_6E9704 = 0x6e9704;
232 | D_6E9714 = 0x6e9714;
233 | recv_work0x6ea130 = 0x6ea130;
234 | send_work0x6ea740 = 0x6ea740;
235 | lb_player0x6eac80 = 0x6eac80;
236 |
237 | //dunno
238 | //dial_jmp_tbl$5400x389f20 = 0x389F20;
239 | //lobby_client_top_menu_jmp$11310x389f28 = 0x389F28;
240 | //bs_init_jmp$5030x389fe8 = 0x389FE8;
241 |
242 | //ins
243 | InetDNAS2PersonalGetError0xa2fbc0 = 0xA2FBC0;
244 | InetDNAS2PersonalEncode0xa2fbd0 = 0xA2FBD0;
245 | InetDNAS2PersonalDecode0xa2fd30 = 0xA2FD30;
246 |
247 | //net
248 | InetDNAS2ConnectGetError0xa769b0 = 0xA769B0;
249 | InetDNAS2ConnectNetStart0xa769c0 = 0xA769C0;
250 | InetDNAS2ConnectInstall0xa769d0 = 0xA769D0;
251 |
```
--------------------------------------------------------------------------------
/config/game_funcs_auto.txt:
--------------------------------------------------------------------------------
```
1 | pull_eft_work0x100ff0 = 0x100FF0;
2 | pull_eft_work20x1010c0 = 0x1010C0;
3 | push_eft_work0x1011c0 = 0x1011C0;
4 | eft_vec_linear0x1013b0 = 0x1013B0;
5 | eft_alpha_linear0x101480 = 0x101480;
6 | eft_rgba_linear0x101510 = 0x101510;
7 | make_mat_srt0x1018c0 = 0x1018C0;
8 | eft_trans_sub0x1019e0 = 0x1019E0;
9 | eft_trans_sub_col0x101b90 = 0x101B90;
10 | eft_trans_sub_opa0x101c60 = 0x101C60;
11 | Eft_rendope_set0x101d10 = 0x101D10;
12 | Kaeru_ck0x101dc0 = 0x101DC0;
13 | eft01_set0x102b00 = 0x102B00;
14 | Eft06_set0x1058a0 = 0x1058A0;
15 | Eft06_set20x105990 = 0x105990;
16 | Eft13_set_em0x1097d0 = 0x1097D0;
17 | Eft13_set_em_scl0x1098a0 = 0x1098A0;
18 | Eft13_set_pos0x109970 = 0x109970;
19 | Eft13_set_pos20x1099f0 = 0x1099F0;
20 | em_search_set0x109e30 = 0x109E30;
21 | em_dur_init0x10a070 = 0x10A070;
22 | em_dur_set0x10a0f0 = 0x10A0F0;
23 | get_joint_pos0x10a150 = 0x10A150;
24 | get_joint_pos_em0x10a180 = 0x10A180;
25 | get_joint_wmat0x10a190 = 0x10A190;
26 | get_joint_wmat_em0x10a1c0 = 0x10A1C0;
27 | enemy_mk0x10aeb0 = 0x10AEB0;
28 | Em_area_ck0x10b790 = 0x10B790;
29 | em_status_init0x10bad0 = 0x10BAD0;
30 | em_material_sub0x10cea0 = 0x10CEA0;
31 | AreaFieldInCheck0x1168a0 = 0x1168A0;
32 | GetGroundHit0x119210 = 0x119210;
33 | GetGroundShellHit0x119540 = 0x119540;
34 | GetGroundHitArea0x1198b0 = 0x1198B0;
35 | GetTenjoHit0x11aec0 = 0x11AEC0;
36 | GetYouganHit0x11b070 = 0x11B070;
37 | GetWallHitLine0x11b2a0 = 0x11B2A0;
38 | GetEyeHitLine0x11bad0 = 0x11BAD0;
39 | pl_light_change0x11e280 = 0x11E280;
40 | Pl_light_set0x11e540 = 0x11E540;
41 | reload_tex0x11f170 = 0x11F170;
42 | cpRotMatrix0x1202c0 = 0x1202C0;
43 | cpRotMatrixYXZ20x120310 = 0x120310;
44 | calc_vec_ang0x1203a0 = 0x1203A0;
45 | calc_vec_ang20x120430 = 0x120430;
46 | calc_mat_angY0x1204d0 = 0x1204D0;
47 | SetVector0x1207d0 = 0x1207D0;
48 | PointToPoint0x1207e0 = 0x1207E0;
49 | AddVector0x120820 = 0x120820;
50 | ScaleVector0x1208a0 = 0x1208A0;
51 | RotateX0x120d40 = 0x120D40;
52 | RotateY0x120d90 = 0x120D90;
53 | RotateZ0x120de0 = 0x120DE0;
54 | CalcDistanceXZ0x120f20 = 0x120F20;
55 | clay_attr_set0x121e20 = 0x121E20;
56 | clay_attr_reset0x121ee0 = 0x121EE0;
57 | calc_ofs_velocity0x1257e0 = 0x1257E0;
58 | calc_velocity0x125820 = 0x125820;
59 | frame_init0x125920 = 0x125920;
60 | frame_move0x125f10 = 0x125F10;
61 | frame_check0x1263f0 = 0x1263F0;
62 | em_frame_check0x1264c0 = 0x1264C0;
63 | frame_check20x126500 = 0x126500;
64 | em_frame_check20x126550 = 0x126550;
65 | em_frame_check30x1265d0 = 0x1265D0;
66 | WyvernAreaMove0x1324b0 = 0x1324B0;
67 | act_set0x14eb00 = 0x14EB00;
68 | Pl_act_set0x14ecb0 = 0x14ECB0;
69 | act_ck0x14ef20 = 0x14EF20;
70 | pl_flag_ck0x14ef60 = 0x14EF60;
71 | pl_flag_set0x14efa0 = 0x14EFA0;
72 | pl_flag_clr0x14efe0 = 0x14EFE0;
73 | shell_flag_set0x14f050 = 0x14F050;
74 | Pl_master_ck0x14fc20 = 0x14FC20;
75 | Pl_Skill_ck0x150150 = 0x150150;
76 | rate_g_calc0x1513b0 = 0x1513B0;
77 | rate_add0x151430 = 0x151430;
78 | rate_add_g0x151470 = 0x151470;
79 | em_rate_add_g0x1514e0 = 0x1514E0;
80 | rate_add_g20x151550 = 0x151550;
81 | em_rate_clear0x151620 = 0x151620;
82 | rate_clear_g0x151640 = 0x151640;
83 | em_rate_clear_g0x151650 = 0x151650;
84 | shell_rate_add0x151660 = 0x151660;
85 | shell_rate_add_g0x1516a0 = 0x1516A0;
86 | action_timer_calc0x151710 = 0x151710;
87 | em_action_timer_calc0x1517a0 = 0x1517A0;
88 | pl_atck_data_set_shl0x151960 = 0x151960;
89 | atck_data_set_shl0x151a50 = 0x151A50;
90 | Pl_stg_ck0x151ff0 = 0x151FF0;
91 | Em_stg_ck0x152010 = 0x152010;
92 | Pl_stg_ck_tw0x152030 = 0x152030;
93 | World_calc20x1520c0 = 0x1520C0;
94 | Pl_item_stack0x152760 = 0x152760;
95 | Pl_item_num_ck0x152b60 = 0x152B60;
96 | Pl_item_num_ck30x152c70 = 0x152C70;
97 | Pl_item_search_space0x152de0 = 0x152DE0;
98 | Pl_vital_calc0x153420 = 0x153420;
99 | Pl_slash_calc0x1536d0 = 0x1536D0;
100 | Pl_stamina_calc0x153ae0 = 0x153AE0;
101 | Get_tuto_id0x154330 = 0x154330;
102 | Pl_silencer_ck0x154d30 = 0x154D30;
103 | Pl_view_reset0x154e90 = 0x154E90;
104 | pull_set_work0x1552a0 = 0x1552A0;
105 | push_set_work0x155380 = 0x155380;
106 | set01_set0x155740 = 0x155740;
107 | set01_set20x155870 = 0x155870;
108 | set12_set0x1567c0 = 0x1567C0;
109 | Set13_set20x156a30 = 0x156A30;
110 | pull_shell_work0x159090 = 0x159090;
111 | push_shell_work0x159160 = 0x159160;
112 | softdip_ck0x1593d0 = 0x1593D0;
113 | se_req0x159450 = 0x159450;
114 | se_req20x159530 = 0x159530;
115 | Code_Make0x1598a0 = 0x1598A0;
116 | Em_se_req2_com0x1599d0 = 0x1599D0;
117 | Pl_se_req20x159d30 = 0x159D30;
118 | Em_se_req20x159de0 = 0x159DE0;
119 | ran_suu0x161230 = 0x161230;
120 | SetTrnslMode0x161480 = 0x161480;
121 | SetFilterMode0x161500 = 0x161500;
122 | SetTextureStage0x161550 = 0x161550;
123 | font_print0x161970 = 0x161970;
124 | font_print_sp0x162020 = 0x162020;
125 | font_print_uf0x162570 = 0x162570;
126 | font_set_palette0x1626a0 = 0x1626A0;
127 | Online_ck0x162d60 = 0x162D60;
128 | Material_set_sub0x169120 = 0x169120;
129 | get_prim_ptr0x169300 = 0x169300;
130 | get_prim_ptr20x169320 = 0x169320;
131 | get_prim0x169340 = 0x169340;
132 | get_prim20x1693d0 = 0x1693D0;
133 | release_prim0x169460 = 0x169460;
134 | release_prim20x1694b0 = 0x1694B0;
135 | add_prim0x169530 = 0x169530;
136 | vib_set0x1698d0 = 0x1698D0;
137 | vib_set_pl0x169920 = 0x169920;
138 | Create_FOV0x169cf0 = 0x169CF0;
139 | push_smell0x16a2b0 = 0x16A2B0;
140 | pull_smell0x16a330 = 0x16A330;
141 | push_smoke0x16a3d0 = 0x16A3D0;
142 | pull_smoke0x16a450 = 0x16A450;
143 | push_senko0x16a570 = 0x16A570;
144 | pull_senko0x16a620 = 0x16A620;
145 | push_em_yobi0x16a790 = 0x16A790;
146 | pull_em_yobi0x16a810 = 0x16A810;
147 | GetWaterData0x16ab80 = 0x16AB80;
148 | flExecuteClay0x16d5c0 = 0x16D5C0;
149 | flmatInit0x171ce0 = 0x171CE0;
150 | flmatMakeScale0x171d50 = 0x171D50;
151 | flmatMakeTrans0x171e00 = 0x171E00;
152 | flmatScaleFactor330x171e50 = 0x171E50;
153 | flmatSetTrans0x171e90 = 0x171E90;
154 | flmatGetTrans0x171ee0 = 0x171EE0;
155 | flmatRotX330x171f70 = 0x171F70;
156 | flmatRotY330x172010 = 0x172010;
157 | flmatRotZ330x1720b0 = 0x1720B0;
158 | flmatSetXYZ330x172140 = 0x172140;
159 | flmatRotXYZ330x1724e0 = 0x1724E0;
160 | flmatRotZXY330x172670 = 0x172670;
161 | flmatMul33_20x172b90 = 0x172B90;
162 | flmatInvert0x172be0 = 0x172BE0;
163 | flmatCopy0x172cb0 = 0x172CB0;
164 | flmatCopy330x172ce0 = 0x172CE0;
165 | flmatBlend0x172d30 = 0x172D30;
166 | flvecApplyMat330x172e00 = 0x172E00;
167 | flvecApplyMat33_20x172e70 = 0x172E70;
168 | flvecRotX0x172ff0 = 0x172FF0;
169 | flvecRotY0x173070 = 0x173070;
170 | flvecCalcLength0x1730f0 = 0x1730F0;
171 | flvecCalcDistance0x173140 = 0x173140;
172 | flvecNormalize0x1731b0 = 0x1731B0;
173 | flvecInnerProduct0x173220 = 0x173220;
174 | flvecOuterProduct0x173280 = 0x173280;
175 | flvecCopy0x173300 = 0x173300;
176 | flAbs0x173540 = 0x173540;
177 | flArcTan20x1735e0 = 0x1735E0;
178 | flSin0x173600 = 0x173600;
179 | flCos0x173610 = 0x173610;
180 | flFloor0x173660 = 0x173660;
181 | flSqrt0x173680 = 0x173680;
182 | flCheckMeshFOV0x1738c0 = 0x1738C0;
183 | flSetSkinTrans0x173f00 = 0x173F00;
184 | flSetSkinTransMatrixList0x173fb0 = 0x173FB0;
185 | flSetMatrixList0x174060 = 0x174060;
186 | flCalcTransSI0x1746a0 = 0x1746A0;
187 | flps00080x175b80 = 0x175B80;
188 | flSetRenderState0x177720 = 0x177720;
189 | plFCVFcurveInterpolateHermite0x192e40 = 0x192E40;
190 | net_send_em0x1ba8e0 = 0x1BA8E0;
191 | flfntSetSize0x216890 = 0x216890;
192 | flfntLocate0x2168b0 = 0x2168B0;
193 | Eft20_set0x21cd40 = 0x21CD40;
194 | Eft20_set20x21ce20 = 0x21CE20;
195 | adx_se_stop0x21db10 = 0x21DB10;
196 | PachingerCamChk0x222930 = 0x222930;
197 | set_quake_sub0x222980 = 0x222980;
198 | set_quake_sub20x2229d0 = 0x2229D0;
199 | Em_set_quake_sub0x222aa0 = 0x222AA0;
200 | RedDragonEscapeCamera0x225e90 = 0x225E90;
201 | F_DragonEscapeCamera0x225ea0 = 0x225EA0;
202 | FishWyvernCameraRequest0x225f50 = 0x225F50;
203 | Quest_failed_set0x226830 = 0x226830;
204 | Stage_data_get0x226900 = 0x226900;
205 | Quest_clear_ck0x2272d0 = 0x2272D0;
206 | Quest_enemy_revival_ck0x2273d0 = 0x2273D0;
207 | Quest_enemy_revival_set0x227450 = 0x227450;
208 | Quest_enemy_die0x2274e0 = 0x2274E0;
209 | Quest_enemy_escape0x2275a0 = 0x2275A0;
210 | Quest_enemy_capture0x2275f0 = 0x2275F0;
211 | Quest_enemy_hagi_set0x2276c0 = 0x2276C0;
212 | Item_stolen0x228670 = 0x228670;
213 | Ext_pick_point_set0x229130 = 0x229130;
214 | Ext_pick_point_cnt_ck0x229240 = 0x229240;
215 | Ext_pick_point_clr0x229260 = 0x229260;
216 | Ext_pick_point_pos0x2292b0 = 0x2292B0;
217 | Ext_pick_point_st0x229300 = 0x229300;
218 | Em_hagi_point_set0x2297c0 = 0x2297C0;
219 | Em_tail_hagi_point_set0x2298e0 = 0x2298E0;
220 | Em_hagi_point_cnt_ck0x229980 = 0x229980;
221 | Em_hagi_point_clr0x229a50 = 0x229A50;
222 | Event_flag_set0x272ec0 = 0x272EC0;
223 | Event_flag_clear0x272f00 = 0x272F00;
224 | Event_flag_ck0x272f50 = 0x272F50;
225 | Get_atk_value0x2731b0 = 0x2731B0;
226 | wyvern_kill_cnt_up0x274c00 = 0x274C00;
227 | ListSelect0x274ec0 = 0x274EC0;
228 | PageSelect0x274f70 = 0x274F70;
229 | PutButtonICON0x275740 = 0x275740;
230 | DispFrameList0x275920 = 0x275920;
231 | DispFrameMessage0x276160 = 0x276160;
232 | NPC_Message0x277700 = 0x277700;
233 | Eft02_set20x27e9f0 = 0x27E9F0;
234 | Eft02_set30x27eab0 = 0x27EAB0;
235 | Eft02_set40x27ebb0 = 0x27EBB0;
236 | Eft02_set_pos20x27eeb0 = 0x27EEB0;
237 | hit_line2_pk0x28cc40 = 0x28CC40;
238 | hit_line_sphr20x290280 = 0x290280;
239 | hit_point_cyl0x290560 = 0x290560;
240 |
```